@@ -98,7 +98,7 @@ define([
98
98
_loadState ( state ) {
99
99
var {
100
100
variable, groupby, display, method, advanced, allocateTo, resetIndex,
101
- advPageDom, advColList, advNamingDict
101
+ advPageDom, advColList, advNamingList
102
102
} = state ;
103
103
104
104
$ ( this . _wrapSelector ( '#vp_gbVariable' ) ) . val ( variable ) ;
@@ -120,8 +120,8 @@ define([
120
120
advColList . forEach ( ( arr , idx ) => {
121
121
$ ( $ ( this . _wrapSelector ( '.vp-gb-adv-col' ) ) [ idx ] ) . data ( 'list' , arr ) ;
122
122
} ) ;
123
- advNamingDict . forEach ( ( dict , idx ) => {
124
- $ ( $ ( this . _wrapSelector ( '.vp-gb-adv-naming' ) ) [ idx ] ) . data ( 'dict' , dict ) ;
123
+ advNamingList . forEach ( ( obj , idx ) => {
124
+ $ ( $ ( this . _wrapSelector ( '.vp-gb-adv-naming' ) ) [ idx ] ) . data ( 'dict' , obj ) ;
125
125
} ) ;
126
126
}
127
127
@@ -185,7 +185,7 @@ define([
185
185
186
186
advPageDom : '' ,
187
187
advColList : [ ] ,
188
- advNamingDict : [ ]
188
+ advNamingList : [ ]
189
189
} ;
190
190
this . popup = {
191
191
type : '' ,
@@ -265,7 +265,7 @@ define([
265
265
page . appendLine ( '</div>' ) ;
266
266
267
267
// Advanced box
268
- page . appendFormatLine ( '<div class="{0}" style="display: none;">' , 'vp-gb-adv-box' ) ;
268
+ page . appendFormatLine ( '<div class="{0} {1} " style="display: none;">' , 'vp-gb-adv-box' , 'vp-apiblock-scrollbar ') ;
269
269
page . appendLine ( this . renderAdvancedItem ( ) ) ;
270
270
page . appendFormatLine ( '<button id="{0}" class="{1}">{2}</button>' , 'vp_gbAdvAdd' , 'vp-button' , '+ Add' ) ;
271
271
page . appendLine ( '</div>' ) ; // end of adv-box
@@ -315,6 +315,21 @@ define([
315
315
$ ( this . _wrapSelector ( ) ) . hide ( ) ;
316
316
}
317
317
318
+ renderVariableList ( varList , defaultValue = '' ) {
319
+ var tag = new sb . StringBuilder ( ) ;
320
+ tag . appendFormatLine ( '<select id="{0}">' , 'vp_gbVariable' ) ;
321
+ varList . forEach ( vObj => {
322
+ // varName, varType
323
+ var label = vObj . varName ;
324
+ tag . appendFormatLine ( '<option value="{0}" data-type="{1}" {2}>{3}</option>'
325
+ , vObj . varName , vObj . varType
326
+ , defaultValue == vObj . varName ?'selected' :''
327
+ , label ) ;
328
+ } ) ;
329
+ tag . appendLine ( '</select>' ) ; // VP_VS_VARIABLES
330
+ return tag . toString ( ) ;
331
+ }
332
+
318
333
renderAdvancedItem ( ) {
319
334
var page = new sb . StringBuilder ( ) ;
320
335
page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-adv-item' ) ;
@@ -368,23 +383,42 @@ define([
368
383
renderColumnSelector ( previousList , includeList ) {
369
384
this . popup . ColSelector = new vpColumnSelector ( this . _wrapSelector ( '.' + APP_POPUP_BODY ) , this . state . variable , previousList , includeList ) ;
370
385
}
371
-
372
- renderVariableList ( varList , defaultValue = '' ) {
373
- var tag = new sb . StringBuilder ( ) ;
374
- tag . appendFormatLine ( '<select id="{0}">' , 'vp_gbVariable' ) ;
375
- varList . forEach ( vObj => {
376
- // varName, varType
377
- var label = vObj . varName ;
378
- tag . appendFormatLine ( '<option value="{0}" data-type="{1}" {2}>{3}</option>'
379
- , vObj . varName , vObj . varType
380
- , defaultValue == vObj . varName ?'selected' :''
381
- , label ) ;
382
- } ) ;
383
- tag . appendLine ( '</select>' ) ; // VP_VS_VARIABLES
384
- return tag . toString ( ) ;
386
+
387
+ renderNamingBox ( columns , method , previousDict ) {
388
+ var page = new sb . StringBuilder ( ) ;
389
+ page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-naming-box' ) ;
390
+ if ( columns && columns . length > 0 ) {
391
+ page . appendFormatLine ( '<label>Replace {0} as ...</label>' , method ) ;
392
+ columns . forEach ( col => {
393
+ page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-naming-item' ) ;
394
+ page . appendFormatLine ( '<label>{0}</label>' , col ) ;
395
+ var previousValue = '' ;
396
+ if ( previousDict [ col ] ) {
397
+ previousValue = previousDict [ col ] ;
398
+ }
399
+ page . appendFormatLine ( '<input type="text" class="{0}" placeholder="{1}" value="{2}" data-code="{3}"/>'
400
+ , 'vp-gb-naming-text' , 'Name to replace ' + method , previousValue , col ) ;
401
+ page . appendLine ( '</div>' ) ;
402
+ } ) ;
403
+ } else {
404
+ var previousValue = '' ;
405
+ if ( previousDict [ method ] ) {
406
+ previousValue = previousDict [ method ] ;
407
+ }
408
+ page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-naming-item' ) ;
409
+ page . appendFormatLine ( '<label>{0}</label>' , method ) ;
410
+ page . appendFormatLine ( '<input type="text" class="{0}" placeholder="{1}" value="{2}" data-code="{3}"/>'
411
+ , 'vp-gb-naming-text' , 'Name to replace ' + method , previousValue , method ) ;
412
+ page . appendLine ( '</div>' ) ;
413
+ }
414
+ page . appendLine ( '</div>' ) ;
415
+ return page . toString ( ) ;
385
416
}
417
+
418
+
386
419
387
420
openInnerPopup ( targetSelector , title = 'Select columns' , includeList = [ ] ) {
421
+ this . popup . type = 'column' ;
388
422
this . popup . targetSelector = targetSelector ;
389
423
this . renderColumnSelector ( this . popup . targetSelector . data ( 'list' ) , includeList ) ;
390
424
@@ -399,6 +433,18 @@ define([
399
433
$ ( this . _wrapSelector ( '.' + APP_POPUP_BOX ) ) . hide ( ) ;
400
434
}
401
435
436
+ openNamingPopup ( targetSelector , columns , method ) {
437
+ this . popup . type = 'naming' ;
438
+ this . popup . targetSelector = targetSelector ;
439
+ $ ( this . _wrapSelector ( '.' + APP_POPUP_BODY ) ) . html ( this . renderNamingBox ( columns , method , $ ( this . popup . targetSelector ) . data ( 'dict' ) ) ) ;
440
+
441
+ // set title
442
+ $ ( this . _wrapSelector ( '.' + APP_POPUP_BOX + ' .' + APP_TITLE ) ) . text ( 'Replace naming' ) ;
443
+
444
+ // show popup box
445
+ $ ( this . _wrapSelector ( '.' + APP_POPUP_BOX ) ) . show ( ) ;
446
+ }
447
+
402
448
loadVariableList ( ) {
403
449
var that = this ;
404
450
// load using kernel
@@ -536,23 +582,26 @@ define([
536
582
//====================================================================
537
583
// Advanced box Events
538
584
//====================================================================
585
+ // add advanced item
586
+ $ ( document ) . on ( 'click' , this . _wrapSelector ( '#vp_gbAdvAdd' ) , function ( ) {
587
+ $ ( that . renderAdvancedItem ( ) ) . insertBefore ( $ ( that . _wrapSelector ( '#vp_gbAdvAdd' ) ) ) ;
588
+ } ) ;
589
+
539
590
// advanced item - column change event
540
591
$ ( document ) . on ( 'change' , this . _wrapSelector ( '.vp-gb-adv-col' ) , function ( event ) {
541
592
var colList = event . colList ;
542
593
var idx = $ ( that . _wrapSelector ( '.vp-gb-adv-col' ) ) . index ( this ) ;
543
- that . state . advColList [ idx ] = colList ;
544
- } ) ;
545
-
546
- // advanced item - naming change event
547
- $ ( document ) . on ( 'change' , this . _wrapSelector ( '.vp-gb-adv-naming' ) , function ( event ) {
548
- var result = event . result ;
549
- var idx = $ ( that . _wrapSelector ( '.vp-gb-adv-naming' ) ) . index ( this ) ;
550
- that . state . advNamingDict [ idx ] = result ;
551
- } ) ;
594
+
595
+ // if there's change, reset display namings
596
+ var previousList = that . state . advColList [ idx ] ;
597
+ if ( ! previousList || colList . length !== previousList . length
598
+ || ! colList . slice ( ) . sort ( ) . every ( ( val , idx ) => { return val === previousList . slice ( ) . sort ( ) [ idx ] } ) ) {
599
+ that . state . advNamingList = [ ]
600
+ $ ( that . _wrapSelector ( '.vp-gb-adv-naming' ) ) . val ( '' ) ;
601
+ $ ( that . _wrapSelector ( '.vp-gb-adv-naming' ) ) . data ( 'dict' , { } ) ;
602
+ }
552
603
553
- // add advanced item
554
- $ ( document ) . on ( 'click' , this . _wrapSelector ( '#vp_gbAdvAdd' ) , function ( ) {
555
- $ ( that . renderAdvancedItem ( ) ) . insertBefore ( $ ( that . _wrapSelector ( '#vp_gbAdvAdd' ) ) ) ;
604
+ that . state . advColList [ idx ] = colList ;
556
605
} ) ;
557
606
558
607
// edit target columns
@@ -584,7 +633,19 @@ define([
584
633
$ ( parentDiv ) . find ( '.vp-gb-adv-method-box' ) . hide ( ) ;
585
634
} ) ;
586
635
587
- // edit columns naming // TODO:
636
+ // advanced item - naming change event
637
+ $ ( document ) . on ( 'change' , this . _wrapSelector ( '.vp-gb-adv-naming' ) , function ( event ) {
638
+ var namingDict = event . namingDict ;
639
+ var idx = $ ( that . _wrapSelector ( '.vp-gb-adv-naming' ) ) . index ( this ) ;
640
+ that . state . advNamingList [ idx ] = namingDict ;
641
+ } ) ;
642
+
643
+ // edit columns naming
644
+ $ ( document ) . on ( 'click' , this . _wrapSelector ( '.vp-gb-adv-naming-selector' ) , function ( ) {
645
+ var columns = $ ( this ) . parent ( ) . find ( '.vp-gb-adv-col' ) . data ( 'list' ) ;
646
+ var method = $ ( this ) . parent ( ) . find ( '.vp-gb-adv-method' ) . val ( ) ;
647
+ that . openNamingPopup ( $ ( this ) . parent ( ) . find ( '.vp-gb-adv-naming' ) , columns , method ) ;
648
+ } ) ;
588
649
589
650
// delete advanced item
590
651
$ ( document ) . on ( 'click' , this . _wrapSelector ( '.vp-gb-adv-item-delete' ) , function ( ) {
@@ -658,12 +719,32 @@ define([
658
719
// ok input popup
659
720
$ ( document ) . on ( 'click' , this . _wrapSelector ( '.' + APP_POPUP_OK ) , function ( ) {
660
721
// ok input popup
661
- var colList = that . popup . ColSelector . getColumnList ( ) ;
722
+ if ( that . popup . type == 'column' ) {
723
+ var colList = that . popup . ColSelector . getColumnList ( ) ;
724
+
725
+ $ ( that . popup . targetSelector ) . val ( colList . join ( ',' ) ) ;
726
+ $ ( that . popup . targetSelector ) . data ( 'list' , colList ) ;
727
+ $ ( that . popup . targetSelector ) . trigger ( { type : 'change' , colList : colList } ) ;
728
+ that . closeInnerPopup ( ) ;
729
+ } else {
730
+ var dict = { } ;
731
+ // get dict
732
+ var tags = $ ( that . _wrapSelector ( '.vp-gb-naming-text' ) ) ;
733
+ for ( var i = 0 ; i < tags . length ; i ++ ) {
734
+ var key = $ ( tags [ i ] ) . data ( 'code' ) ;
735
+ var val = $ ( tags [ i ] ) . val ( ) ;
736
+ if ( val && val != '' ) {
737
+ dict [ key ] = "'" + val + "'" ;
738
+ }
739
+ }
662
740
663
- $ ( that . popup . targetSelector ) . val ( colList . join ( ',' ) ) ;
664
- $ ( that . popup . targetSelector ) . data ( 'list' , colList ) ;
665
- $ ( that . popup . targetSelector ) . trigger ( { type : 'change' , colList : colList } ) ;
666
- that . closeInnerPopup ( ) ;
741
+ console . log ( dict ) ;
742
+
743
+ $ ( that . popup . targetSelector ) . val ( Object . values ( dict ) . join ( ',' ) ) ;
744
+ $ ( that . popup . targetSelector ) . data ( 'dict' , dict ) ;
745
+ $ ( that . popup . targetSelector ) . trigger ( { type : 'change' , namingDict : dict } ) ;
746
+ that . closeInnerPopup ( ) ;
747
+ }
667
748
} ) ;
668
749
669
750
// cancel input popup
@@ -772,6 +853,8 @@ define([
772
853
}
773
854
}
774
855
856
+ console . log ( 'advColumnDict' , advColumnDict ) ;
857
+
775
858
// if target columns not selected
776
859
if ( Object . keys ( advColumnDict ) . length == 1 ) {
777
860
var noColList = advColumnDict [ 'nothing' ] ;
@@ -815,15 +898,17 @@ define([
815
898
Object . keys ( advColumnDict ) . forEach ( key => {
816
899
var colList = advColumnDict [ key ] ;
817
900
var tmpList2 = [ ] ;
901
+ var useTuple = false ;
818
902
colList . forEach ( obj => {
819
903
if ( obj . naming && obj . naming != undefined ) {
820
904
tmpList2 . push ( vpCommon . formatString ( "({0}, {1})" , obj . naming , obj . method ) ) ;
905
+ useTuple = true ;
821
906
} else {
822
907
tmpList2 . push ( obj . method ) ;
823
908
}
824
909
} ) ;
825
910
var tmpStr = tmpList2 . join ( ',' ) ;
826
- if ( tmpList2 . length > 1 ) {
911
+ if ( tmpList2 . length > 1 || useTuple ) {
827
912
tmpStr = '[' + tmpStr + ']' ;
828
913
}
829
914
tmpList1 . push ( vpCommon . formatString ( "{0}: {1}" , key , tmpStr ) ) ;
0 commit comments