@@ -14,8 +14,9 @@ define([
14
14
'vp_base/js/com/component/SuggestInput' ,
15
15
'vp_base/js/com/component/VarSelector2' ,
16
16
'vp_base/js/com/component/DataSelector' ,
17
+ 'vp_base/js/com/component/MultiSelector' ,
17
18
'vp_base/js/com/component/FileNavigation'
18
- ] , function ( com_util , com_makeDom , SuggestInput , VarSelector2 , DataSelector , FileNavigation ) {
19
+ ] , function ( com_util , com_makeDom , SuggestInput , VarSelector2 , DataSelector , MultiSelector , FileNavigation ) {
19
20
/**
20
21
* show result after code executed
21
22
*/
@@ -39,6 +40,7 @@ define([
39
40
'var_select' : 'Select Variable' ,
40
41
'var_multi' : 'Select N-Variables' ,
41
42
'col_select' : 'Select Column' ,
43
+ 'col_multi' : 'Select Columns' ,
42
44
'textarea' : 'Input textarea' ,
43
45
'input_number' : 'Input number' ,
44
46
'input_text' : 'Input text' ,
@@ -149,6 +151,7 @@ define([
149
151
150
152
}
151
153
154
+ bindMultiSelector ( pageThis ) ;
152
155
bindAutoComponentEvent ( pageThis ) ;
153
156
}
154
157
@@ -174,7 +177,7 @@ define([
174
177
} else if ( output === true ) {
175
178
requiredFontStyle = 'vp-bold' ;
176
179
}
177
- var lblTag = $ ( `<label class="vp-bold">${ label } </label>` ) . attr ( {
180
+ var lblTag = $ ( `<label class="vp-bold">${ label || com_util . optionToLabel ( name ) } </label>` ) . attr ( {
178
181
'for' : name ,
179
182
'class' : requiredFontStyle ,
180
183
'title' : '(' + name + ')'
@@ -315,7 +318,8 @@ define([
315
318
case 'option_select' :
316
319
var optSlct = $ ( '<select></select>' ) . attr ( {
317
320
'class' :'vp-select option-select vp-state' ,
318
- 'id' :obj . name
321
+ 'id' :obj . name ,
322
+ 'title' : ( obj . help == undefined ?'' :obj . help ) ,
319
323
} ) ;
320
324
obj . options . forEach ( ( opt , idx , arr ) => {
321
325
var label = ( obj . options_label != undefined ? obj . options_label [ idx ] :opt ) ;
@@ -368,6 +372,7 @@ define([
368
372
let dataSelector = new DataSelector ( {
369
373
pageThis : pageThis ,
370
374
id : obj . name ,
375
+ type : obj . comp_type || 'data' ,
371
376
allowDataType : obj . var_type ,
372
377
placeholder : obj . placeholder || 'Select data' ,
373
378
value : value ,
@@ -382,7 +387,8 @@ define([
382
387
id : obj . name ,
383
388
class : 'vp-input vp-state' ,
384
389
placeholder : obj . placeholder || 'Select data' ,
385
- required : obj . required === true
390
+ required : obj . required === true ,
391
+ title : ( obj . help == undefined ?'' :obj . help ) ,
386
392
} ) ;
387
393
vp_generateVarSuggestInput ( pageThis . wrapSelector ( ) , obj ) ;
388
394
content = tag ;
@@ -393,7 +399,8 @@ define([
393
399
'id' : obj . name ,
394
400
'class' : 'vp-select var-multi vp-state' ,
395
401
// multiple selection true
396
- 'multiple' : true
402
+ 'multiple' : true ,
403
+ 'title' : ( obj . help == undefined ?'' :obj . help ) ,
397
404
} ) ;
398
405
vp_generateVarSelect ( tag , obj . var_type , obj . value ) ;
399
406
content = tag ;
@@ -402,10 +409,28 @@ define([
402
409
var tag = $ ( '<input/>' ) . attr ( {
403
410
'type' : 'text' ,
404
411
'id' : obj . name ,
405
- 'class' : 'vp-input vp-state'
412
+ 'class' : 'vp-input vp-state' ,
413
+ 'title' : ( obj . help == undefined ?'' :obj . help ) ,
406
414
} ) ;
407
415
content = tag ;
408
416
break ;
417
+ case 'col_multi' :
418
+ var tag1 = $ ( '<div></div>' ) . attr ( {
419
+ 'id' : obj . name + '_auto_comp' ,
420
+ 'class' : 'vp-auto-multi-column' ,
421
+ 'data-id' : obj . name ,
422
+ 'data-target' : obj . comp_target || 'i0' ,
423
+ 'style' : 'height: 150px;' ,
424
+ 'title' : ( obj . help == undefined ?'' :obj . help ) ,
425
+ } ) ;
426
+ var tag2 = $ ( '<input/>' ) . attr ( {
427
+ type : 'hidden' ,
428
+ id : obj . name ,
429
+ class : 'vp-input vp-state' ,
430
+ } )
431
+ var tag = $ ( '<div></div>' ) . append ( tag1 ) . append ( tag2 ) ;
432
+ content = tag ;
433
+ break ;
409
434
case 'textarea' :
410
435
var textarea = $ ( `<textarea id="${ obj . name } " class="vp-textarea vp-state">${ ( obj . default == undefined ?'' :obj . default ) } </textarea>` ) ;
411
436
// cell metadata test
@@ -710,6 +735,12 @@ define([
710
735
case 'dtype' :
711
736
value = $ ( pageThis . wrapSelector ( parent + ' #' + obj . name ) ) . val ( ) ;
712
737
break ;
738
+ case 'col_multi' :
739
+ let colList = pageThis . autoGen [ obj . name ] . getDataList ( ) ;
740
+ pageThis . state [ obj . name ] = colList . map ( data => { return data . code } ) ;
741
+ value = colList . map ( data => { return data . code } ) . join ( ',' ) ;
742
+ $ ( pageThis . wrapSelector ( '#' + obj . name ) ) . val ( value ) ;
743
+ break ;
713
744
case 'file-open' :
714
745
case 'file-save' :
715
746
case 'table' :
@@ -1236,6 +1267,50 @@ define([
1236
1267
return $ ( '<input value="tabblock"/>' ) ;
1237
1268
}
1238
1269
1270
+ var bindMultiSelector = function ( pageThis ) {
1271
+ //====================================================================
1272
+ // for column multi selector
1273
+ //====================================================================
1274
+ $ ( pageThis . wrapSelector ( '.vp-auto-multi-column' ) ) . each ( ( idx , tag ) => {
1275
+ let compId = tag . id ;
1276
+ let id = $ ( tag ) . data ( 'id' ) ;
1277
+ let targetId = $ ( tag ) . data ( 'target' ) ;
1278
+ let colSelector = new MultiSelector (
1279
+ pageThis . wrapSelector ( '#' + compId ) ,
1280
+ { mode : 'columns' , parent : ( pageThis . state [ targetId ] || '' ) , selectedList : pageThis . state [ compId ] }
1281
+ ) ;
1282
+ pageThis . autoGen = {
1283
+ [ id ] : colSelector ,
1284
+ ...pageThis . autoGen
1285
+ } ;
1286
+ $ ( pageThis . wrapSelector ( '#' + targetId ) ) . on ( 'change' , function ( ) {
1287
+ let targetVariable = $ ( this ) . val ( ) ;
1288
+ let colSelector = new MultiSelector (
1289
+ pageThis . wrapSelector ( '#' + compId ) ,
1290
+ {
1291
+ mode : 'columns' , parent : targetVariable , selectedList : pageThis . state [ compId ] ,
1292
+ change : function ( type , list ) {
1293
+ let value = list . map ( data => { return data . code } ) . join ( ',' ) ;
1294
+ if ( list . length == 0 ) {
1295
+ value = '' ;
1296
+ } else if ( list . length > 1 ) {
1297
+ value = '[' + value + ']' ;
1298
+ }
1299
+ pageThis . state [ compId ] = list . map ( data => { return data . code } ) ;
1300
+ pageThis . state [ id ] = value ;
1301
+ $ ( pageThis . wrapSelector ( '#' + id ) ) . val ( value ) ;
1302
+ }
1303
+ } ,
1304
+ ) ;
1305
+ pageThis . autoGen = {
1306
+ [ id ] : colSelector ,
1307
+ ...pageThis . autoGen
1308
+ } ;
1309
+ } ) ;
1310
+
1311
+ } ) ;
1312
+ }
1313
+
1239
1314
var bindAutoComponentEvent = function ( pageThis ) {
1240
1315
let selector = pageThis . wrapSelector ( ) ;
1241
1316
// Auto-component selector
@@ -1499,7 +1574,6 @@ define([
1499
1574
$ ( pageThis . wrapSelector ( '#' + id ) ) . val ( code ) ;
1500
1575
} ) ;
1501
1576
1502
-
1503
1577
//====================================================================
1504
1578
// Event for tabBlock
1505
1579
//====================================================================
0 commit comments