@@ -91,10 +91,10 @@ define([
91
91
return vpCommon . formatString ( '.{0}.{1} {2}' , APP_PREFIX , this . uuid , query ) ;
92
92
}
93
93
94
- _setPreview ( ) {
95
-
96
- }
97
-
94
+ /**
95
+ * Load state and set values on components
96
+ * @param { object } state
97
+ */
98
98
_loadState ( state ) {
99
99
var {
100
100
variable, groupby, display, method, advanced, allocateTo, resetIndex,
@@ -125,6 +125,9 @@ define([
125
125
} ) ;
126
126
}
127
127
128
+ /**
129
+ * Save now state of components
130
+ */
128
131
_saveState ( ) {
129
132
// save input state
130
133
$ ( this . _wrapSelector ( '.vp-gb-adv-box input' ) ) . each ( function ( ) {
@@ -152,6 +155,10 @@ define([
152
155
//====================================================================
153
156
// External call function
154
157
//====================================================================
158
+ /**
159
+ * Open this page with initializing
160
+ * @param {object } config
161
+ */
155
162
open ( config = { } ) {
156
163
this . config = {
157
164
...this . config ,
@@ -167,11 +174,18 @@ define([
167
174
}
168
175
}
169
176
177
+ /**
178
+ * Close this page
179
+ */
170
180
close ( ) {
171
181
this . unbindEvent ( ) ;
172
182
$ ( this . _wrapSelector ( ) ) . remove ( ) ;
173
183
}
174
184
185
+ /**
186
+ * Initialize state, Render and Bind events
187
+ * @param {object } state
188
+ */
175
189
init ( state = undefined ) {
176
190
177
191
this . state = {
@@ -210,6 +224,9 @@ define([
210
224
this . loadVariableList ( ) ;
211
225
}
212
226
227
+ /**
228
+ * Render main page & frame
229
+ */
213
230
render ( ) {
214
231
var page = new sb . StringBuilder ( ) ;
215
232
page . appendFormatLine ( '<div class="{0} {1}">' , APP_PREFIX , this . uuid ) ;
@@ -315,6 +332,11 @@ define([
315
332
$ ( this . _wrapSelector ( ) ) . hide ( ) ;
316
333
}
317
334
335
+ /**
336
+ * Render variable list (for dataframe)
337
+ * @param {Array<object> } varList
338
+ * @param {string } defaultValue previous value
339
+ */
318
340
renderVariableList ( varList , defaultValue = '' ) {
319
341
var tag = new sb . StringBuilder ( ) ;
320
342
tag . appendFormatLine ( '<select id="{0}">' , 'vp_gbVariable' ) ;
@@ -330,6 +352,10 @@ define([
330
352
return tag . toString ( ) ;
331
353
}
332
354
355
+ /**
356
+ * Render advanced item and return it
357
+ * @returns Advanced box's item
358
+ */
333
359
renderAdvancedItem ( ) {
334
360
var page = new sb . StringBuilder ( ) ;
335
361
page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-adv-item' ) ;
@@ -358,6 +384,10 @@ define([
358
384
return page . toString ( ) ;
359
385
}
360
386
387
+ /**
388
+ * Render inner popup for selecting columns
389
+ * @returns Inner popup page dom
390
+ */
361
391
renderInnerPopup ( ) {
362
392
var page = new sb . StringBuilder ( ) ;
363
393
page . appendFormatLine ( '<div class="{0}" style="display: none; width: 400px; height: 300px;">' , APP_POPUP_BOX ) ;
@@ -380,10 +410,22 @@ define([
380
410
return page . toString ( ) ;
381
411
}
382
412
413
+ /**
414
+ * Render column selector using ColumnSelector module
415
+ * @param {Array<string> } previousList previous selected columns
416
+ * @param {Array<string> } includeList columns to include
417
+ */
383
418
renderColumnSelector ( previousList , includeList ) {
384
419
this . popup . ColSelector = new vpColumnSelector ( this . _wrapSelector ( '.' + APP_POPUP_BODY ) , this . state . variable , previousList , includeList ) ;
385
420
}
386
421
422
+ /**
423
+ * Render naming box
424
+ * @param {Array<string> } columns
425
+ * @param {string } method
426
+ * @param {Object } previousDict
427
+ * @returns
428
+ */
387
429
renderNamingBox ( columns , method , previousDict ) {
388
430
var page = new sb . StringBuilder ( ) ;
389
431
page . appendFormatLine ( '<div class="{0}">' , 'vp-gb-naming-box' ) ;
@@ -415,8 +457,12 @@ define([
415
457
return page . toString ( ) ;
416
458
}
417
459
418
-
419
-
460
+ /**
461
+ * Open Inner popup page for column selection
462
+ * @param {Object } targetSelector
463
+ * @param {string } title
464
+ * @param {Array<string> } includeList
465
+ */
420
466
openInnerPopup ( targetSelector , title = 'Select columns' , includeList = [ ] ) {
421
467
this . popup . type = 'column' ;
422
468
this . popup . targetSelector = targetSelector ;
@@ -429,10 +475,19 @@ define([
429
475
$ ( this . _wrapSelector ( '.' + APP_POPUP_BOX ) ) . show ( ) ;
430
476
}
431
477
478
+ /**
479
+ * Close Inner popup page
480
+ */
432
481
closeInnerPopup ( ) {
433
482
$ ( this . _wrapSelector ( '.' + APP_POPUP_BOX ) ) . hide ( ) ;
434
483
}
435
484
485
+ /**
486
+ * Open Naming popup page
487
+ * @param {Object } targetSelector
488
+ * @param {Array<string> } columns
489
+ * @param {string } method
490
+ */
436
491
openNamingPopup ( targetSelector , columns , method ) {
437
492
this . popup . type = 'naming' ;
438
493
this . popup . targetSelector = targetSelector ;
@@ -445,6 +500,9 @@ define([
445
500
$ ( this . _wrapSelector ( '.' + APP_POPUP_BOX ) ) . show ( ) ;
446
501
}
447
502
503
+ /**
504
+ * Load variable list (dataframe)
505
+ */
448
506
loadVariableList ( ) {
449
507
var that = this ;
450
508
// load using kernel
@@ -466,18 +524,33 @@ define([
466
524
} ) ;
467
525
}
468
526
527
+ /**
528
+ * Unbind events
529
+ */
469
530
unbindEvent ( ) {
470
531
$ ( document ) . unbind ( vpCommon . formatString ( ".{0} .{1}" , this . uuid , APP_BODY ) ) ;
471
532
472
533
// user operation event
473
534
$ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbVariable' ) ) ;
535
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '.vp-gb-df-refresh' ) ) ;
536
+ $ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbBy' ) ) ;
474
537
$ ( document ) . off ( 'click' , this . _wrapSelector ( '#vp_gbBySelect' ) ) ;
538
+ $ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbDisplay' ) ) ;
475
539
$ ( document ) . off ( 'click' , this . _wrapSelector ( '#vp_gbDisplaySelect' ) ) ;
476
540
$ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbMethodSelect' ) ) ;
477
541
$ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbAdvanced' ) ) ;
478
542
$ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbAllocateTo' ) ) ;
479
543
$ ( document ) . off ( 'change' , this . _wrapSelector ( '#vp_gbResetIndex' ) ) ;
480
544
545
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '#vp_gbAdvAdd' ) ) ;
546
+ $ ( document ) . off ( 'change' , this . _wrapSelector ( '.vp-gb-adv-col' ) ) ;
547
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '.vp-gb-adv-col-selector' ) ) ;
548
+ $ ( document ) . off ( 'change' , this . _wrapSelector ( '.vp-gb-adv-method-selector' ) ) ;
549
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '.vp-gb-adv-method-return' ) ) ;
550
+ $ ( document ) . off ( 'change' , this . _wrapSelector ( '.vp-gb-adv-naming' ) ) ;
551
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '.vp-gb-adv-naming-selector' ) ) ;
552
+ $ ( document ) . off ( 'click' , this . _wrapSelector ( '.vp-gb-adv-item-delete' ) ) ;
553
+
481
554
$ ( document ) . off ( 'click' , this . _wrapSelector ( '.' + APP_CLOSE ) ) ;
482
555
$ ( document ) . off ( 'click' , this . _wrapSelector ( '.' + APP_BUTTON_PREVIEW ) ) ;
483
556
$ ( document ) . off ( 'click' , this . _wrapSelector ( '.' + APP_BUTTON_CANCEL ) ) ;
@@ -495,6 +568,9 @@ define([
495
568
$ ( document ) . off ( 'click' , this . _wrapSelector ( '.' + APP_POPUP_CLOSE ) ) ;
496
569
}
497
570
571
+ /**
572
+ * Bind events
573
+ */
498
574
bindEvent ( ) {
499
575
var that = this ;
500
576
//====================================================================
@@ -758,6 +834,11 @@ define([
758
834
} ) ;
759
835
}
760
836
837
+ /**
838
+ * Apply code to jupyter cell or as a block
839
+ * @param {boolean } addCell
840
+ * @param {boolean } runCell
841
+ */
761
842
apply ( addCell = false , runCell = false ) {
762
843
var code = this . generateCode ( ) ;
763
844
@@ -796,9 +877,17 @@ define([
796
877
var {
797
878
variable, groupby, display, method, advanced, allocateTo, resetIndex
798
879
} = this . state ;
880
+
881
+ //====================================================================
882
+ // Allocation
883
+ //====================================================================
799
884
if ( allocateTo && allocateTo != '' ) {
800
885
code . appendFormat ( '{0} = ' , allocateTo ) ;
801
886
}
887
+
888
+ //====================================================================
889
+ // Dataframe variable & Groupby columns
890
+ //====================================================================
802
891
var byStr = '' ;
803
892
if ( groupby . length <= 1 ) {
804
893
byStr = groupby . join ( '' ) ;
@@ -813,6 +902,9 @@ define([
813
902
// variable & groupby columns & option
814
903
code . appendFormat ( '{0}.groupby({1}{2})' , variable , byStr , optStr ) ;
815
904
905
+ //====================================================================
906
+ // Display columns
907
+ //====================================================================
816
908
var colStr = '' ;
817
909
if ( display ) {
818
910
if ( display . length == 1 ) {
@@ -824,9 +916,14 @@ define([
824
916
}
825
917
}
826
918
919
+ //====================================================================
920
+ // Aggregation/Method code generation
921
+ //====================================================================
827
922
var methodStr = new sb . StringBuilder ( ) ;
828
923
if ( advanced ) {
829
- // aggregation
924
+ //================================================================
925
+ // Aggregation code generation
926
+ //================================================================
830
927
methodStr . append ( 'agg(' ) ;
831
928
// prepare variables for aggregation
832
929
var advItemTags = $ ( this . _wrapSelector ( '.vp-gb-adv-item' ) ) ;
@@ -853,10 +950,9 @@ define([
853
950
}
854
951
}
855
952
856
- console . log ( 'advColumnDict' , advColumnDict ) ;
857
-
858
953
// if target columns not selected
859
954
if ( Object . keys ( advColumnDict ) . length == 1 ) {
955
+ // EX) .agg([('average', 'mean'), ('maximum value', max')])
860
956
var noColList = advColumnDict [ 'nothing' ] ;
861
957
if ( noColList . length == 1 ) {
862
958
// 1 method
@@ -878,6 +974,7 @@ define([
878
974
methodStr . appendFormat ( "[{0}]" , tmpList . join ( ', ' ) ) ;
879
975
}
880
976
} else {
977
+ // EX) .agg({'col1':[('average', 'mean')], 'col2': 'max')})
881
978
// apply method with empty column to all columns(display)
882
979
var noColList = advColumnDict [ 'nothing' ] ;
883
980
delete advColumnDict [ 'nothing' ] ;
@@ -918,6 +1015,9 @@ define([
918
1015
}
919
1016
methodStr . append ( ')' ) ;
920
1017
} else {
1018
+ //================================================================
1019
+ // Method code generation
1020
+ //================================================================
921
1021
methodStr . appendFormat ( '{0}()' , method ) ;
922
1022
}
923
1023
// display columns
0 commit comments