@@ -5,6 +5,7 @@ import { get } from "svelte/store";
55
66import { addImageOcclusionNotes } from "./lib" ;
77import { noteFieldsData , tagsWritable } from "./store" ;
8+ import { getQuestionMaskColor } from "./tools/lib" ;
89
910const divData = [
1011 "angle" ,
@@ -36,10 +37,8 @@ export function generate(): string {
3637
3738 let occlusionNotes = "" ;
3839 let clozeData = "" ;
39- let count = 0 ;
4040
4141 canvasObjects . forEach ( ( object , index ) => {
42- count ++ ;
4342 const obJson = object . toJSON ( ) ;
4443 if ( obJson . type === "group" ) {
4544 clozeData += getGroupCloze ( object , index ) ;
@@ -53,30 +52,39 @@ export function generate(): string {
5352 return occlusionNotes ;
5453}
5554
56- const getCloze = ( object , index , relativePos ) => {
55+ const getCloze = ( object , index , relativePos ) : string => {
5756 const obJson = object . toJSON ( ) ;
5857 let clozeData = "" ;
5958
60- Object . keys ( obJson ) . forEach ( function ( key ) {
59+ Object . keys ( obJson ) . forEach ( function ( key ) {
6160 if ( divData . includes ( key ) ) {
62- if ( key === "points" ) {
63- const points = JSON . stringify ( obJson [ key ] ) ;
64- clozeData += `:${ key } ='${ points } '` ;
61+ if ( key === "type" ) {
62+ clozeData += `:${ obJson [ key ] } ` ;
63+ } else if ( key === "points" ) {
64+ const points = obJson [ key ] ;
65+ let pnts = "" ;
66+ points . forEach ( ( point : { x : number ; y : number } ) => {
67+ pnts += point . x . toFixed ( 2 ) + "," + point . y . toFixed ( 2 ) + " " ;
68+ } ) ;
69+ clozeData += `:${ key } =${ pnts . trim ( ) } ` ;
6570 } else if ( relativePos && key === "top" ) {
66- clozeData += `:top=" ${ relativePos . top } " ` ;
71+ clozeData += `:top=${ relativePos . top } ` ;
6772 } else if ( relativePos && key === "left" ) {
68- clozeData += `:left=" ${ relativePos . left } " ` ;
73+ clozeData += `:left=${ relativePos . left } ` ;
6974 } else {
70- clozeData += `:${ key } =" ${ obJson [ key ] } " ` ;
75+ clozeData += `:${ key } =${ obJson [ key ] } ` ;
7176 }
7277 }
7378 } ) ;
7479
75- clozeData = `{{c${ index + 1 } ::image-occlusion:${ clozeData } }}\n` ;
80+ // question mask color, on front side asking for cloze
81+ clozeData += `:quesmaskcolor=${ getQuestionMaskColor ( ) } ` ;
82+
83+ clozeData = `{{c${ index + 1 } ::image-occlusion${ clozeData } }}\n` ;
7684 return clozeData ;
7785} ;
7886
79- const getGroupCloze = ( group , index ) => {
87+ const getGroupCloze = ( group , index ) : string => {
8088 let clozeData = "" ;
8189 const objects = group . _objects ;
8290
@@ -88,35 +96,33 @@ const getGroupCloze = (group, index) => {
8896 return clozeData ;
8997} ;
9098
91- const getObjectPositionInGroup = ( group , object ) => {
99+ const getObjectPositionInGroup = ( group , object ) : { top : number ; left : number } => {
92100 let left = object . left + group . left + group . width / 2 ;
93101 let top = object . top + group . top + group . height / 2 ;
94102 left = left . toFixed ( 2 ) ;
95103 top = top . toFixed ( 2 ) ;
96104 return { top, left } ;
97105} ;
98106
99- const saveImageNotes = async function (
107+ export const saveImageNotes = async function (
100108 imagePath : string ,
101- occlusions : string ,
102109 deckId : number ,
103- count : number ,
104- ) {
110+ ) : Promise < void > {
111+ const occlusions = generate ( ) ;
105112 const fieldsData = get ( noteFieldsData ) ;
106113 const tags = get ( tagsWritable ) ;
107114 let header = fieldsData [ "header" ] ;
108- let notes = fieldsData [ "notes " ] ;
115+ let notes = fieldsData [ "back-extra " ] ;
109116
110117 if ( header === undefined ) {
111118 const textArea = document . getElementById ( "img-occ-html-header" ) ! as HTMLTextAreaElement ;
112119 header = textArea . value ;
113120 }
114121
115122 if ( notes === undefined ) {
116- const textArea = document . getElementById ( "img-occ-html-notes " ) ! as HTMLTextAreaElement ;
123+ const textArea = document . getElementById ( "img-occ-html-back-extra " ) ! as HTMLTextAreaElement ;
117124 notes = textArea . value ;
118125 }
119126
120127 await addImageOcclusionNotes ( imagePath , deckId , occlusions , header , notes , tags ) ;
121128} ;
122-
0 commit comments