@@ -8,13 +8,13 @@ export function form(pen: Pen, ctx?: CanvasRenderingContext2D): Path2D {
88 const path = ! ctx ? new Path2D ( ) : ctx ;
99 if ( ! pen . onDestroy ) {
1010 pen . onDestroy = destory ;
11- pen . onMove = move ;
12- pen . onRotate = move ;
13- pen . onMouseEnter = mouseEnter ;
11+ // pen.onMove = move;
12+ // pen.onRotate = move;
13+ // pen.onMouseEnter = mouseEnter;
1414 pen . onMouseLeave = mouseLeave ;
15- pen . onMouseMove = mouseMove ;
15+ // pen.onMouseMove = mouseMove;
1616 pen . onMouseUp = mouseUp ;
17- pen . onInput = input ;
17+ // pen.onInput = input;
1818 }
1919 pen . formId = pen . id ;
2020 let wr = pen . calculative . borderRadius || 0 ,
@@ -70,7 +70,15 @@ function input(pen: Pen, text: string) {
7070 // this.store.emitter.emit('valueUpdate', pen);
7171}
7272
73- function destory ( pen : Pen ) { }
73+ function destory ( pen : Pen ) {
74+ pen . followers . forEach ( ( id : string ) => {
75+ let fpen = pen . calculative . canvas . store . pens [ id ] ;
76+ fpen . formKey = undefined ;
77+ fpen . formValue = undefined ;
78+ fpen . formType = undefined ;
79+ fpen . formId = undefined ;
80+ } )
81+ }
7482
7583function move ( pen : Pen ) { }
7684
@@ -115,6 +123,9 @@ function mouseLeave(pen: Pen) {
115123 ) ;
116124 if ( ! isIn ) {
117125 pen . followers . splice ( idx , 1 ) ;
126+ delete activePen . formKey ;
127+ delete activePen . formValue ;
128+ delete activePen . formType ;
118129 delete activePen . formId ;
119130 }
120131 }
@@ -128,8 +139,11 @@ function mouseUp(pen: Pen) {
128139 const activePens = pen . calculative . canvas . store . active ;
129140 if ( activePens && activePens . length ) {
130141 activePens . forEach ( ( activePen : Pen ) => {
131- const movingPen =
142+ let movingPen =
132143 pen . calculative . canvas . store . pens [ activePen . id + movingSuffix ] ;
144+ if ( ! movingPen ) {
145+ movingPen = pen . calculative . canvas . store . pens [ activePen . id ] ;
146+ }
133147 if ( movingPen && movingPen . calculative ) {
134148 let inRect = deepClone ( pen . calculative . worldRect ) ;
135149 inRect . x -= 1 ;
@@ -144,6 +158,7 @@ function mouseUp(pen: Pen) {
144158 pen . followers . push ( activePen . id ) ;
145159 }
146160 activePen . formId = pen . id ;
161+ predictFormValue ( activePen ) ;
147162 }
148163 }
149164 } ) ;
@@ -155,12 +170,12 @@ function mouseMove(pen: Pen, e: Point) {
155170}
156171
157172//更新表单数据
158- export function updateFormData ( pen , key ?:string ) {
159- if ( pen . formId && pen . formKey && pen . formValue ) {
173+ export function updateFormData ( pen , key ?: string ) {
174+ if ( pen . formId && pen . formKey && pen . formValue ) {
160175 //表单图元更新值
161176 const leaderPen = pen . calculative . canvas . store . pens [ pen . formId ] ;
162- if ( leaderPen ) {
163- if ( ! leaderPen . formData ) {
177+ if ( leaderPen ) {
178+ if ( ! leaderPen . formData ) {
164179 leaderPen . formData = { } ;
165180 }
166181 leaderPen . formData [ pen . formKey ] = pen [ pen . formValue ] ;
@@ -169,25 +184,60 @@ export function updateFormData(pen, key?:string){
169184}
170185
171186//提交表单
172- export function submit ( pen :Pen ) {
173- }
187+ export function submit ( pen : Pen ) { }
174188
175189//重置表单
176- export function reset ( pen :Pen ) {
190+ export function reset ( pen : Pen ) {
177191 const formPen = pen . calculative . canvas . store . pens [ pen . formId ] ;
178- formPen . followers . forEach ( ( id :string ) => {
192+ // formPen.followers.forEach((id:string,index:number)=>{
193+ for ( let i = formPen . followers . length - 1 ; i >= 0 ; i -- ) {
194+ let id = formPen . followers [ i ] ;
179195 const follower = pen . calculative . canvas . store . pens [ id ] ;
180- if ( follower . formId && follower . formKey && formPen . formData [ follower . formKey ] ) {
196+ if (
197+ follower &&
198+ follower . formId &&
199+ follower . formKey &&
200+ formPen . formData [ follower . formKey ]
201+ ) {
181202 const value = follower [ follower . formValue ] ;
182- let data :any = '' ;
183- if ( Array . isArray ( value ) ) {
203+ let data : any = '' ;
204+ if ( Array . isArray ( value ) ) {
184205 data = [ ] ;
185206 }
186207 // follower[follower.formValue] = data;
187208 // follower.calculative[follower.formValue] = data;
188- pen . calculative . canvas . parent . setValue ( { id :follower . id , [ follower . formValue ] :data } , { render :false , doEvent :false , history :false } ) ;
209+ pen . calculative . canvas . parent . setValue (
210+ { id : follower . id , [ follower . formValue ] : data } ,
211+ { render : false , doEvent : false , history : false }
212+ ) ;
189213 }
190- } ) ;
214+ if ( ! follower ) {
215+ formPen . followers . splice ( i , 1 ) ;
216+ }
217+ }
191218 formPen . formData = { } ;
192219 pen . calculative . canvas . parent . render ( ) ;
193- }
220+ }
221+
222+ const formValueMap = {
223+ progress : 'progress' ,
224+ cascadeFilterDom : 'checked' ,
225+ treeFilterDom : 'checked' ,
226+ dateRangePickerDom : 'pickerTimes' ,
227+ datePickerDom : 'pickerTimes' ,
228+ slider : 'value' ,
229+ switch : 'checked' ,
230+ inputDom : 'text' ,
231+ checkbox : 'selectedKeys' ,
232+ radio : 'selectKey' ,
233+ rectangle : 'text' ,
234+ } ;
235+
236+ function predictFormValue ( pen : Pen ) {
237+ if ( pen . name === 'rectangle' ) {
238+ if ( ! pen . input && ! pen . dropdownList ) {
239+ return ;
240+ }
241+ }
242+ pen . formValue = formValueMap [ pen . name ] ;
243+ }
0 commit comments