@@ -13,8 +13,9 @@ define([
13
13
'vp_base/js/com/com_makeDom' ,
14
14
'vp_base/js/com/component/SuggestInput' ,
15
15
'vp_base/js/com/component/VarSelector2' ,
16
- 'vp_base/js/com/component/DataSelector'
17
- ] , function ( com_util , com_makeDom , SuggestInput , VarSelector2 , DataSelector ) {
16
+ 'vp_base/js/com/component/DataSelector' ,
17
+ 'vp_base/js/com/component/FileNavigation'
18
+ ] , function ( com_util , com_makeDom , SuggestInput , VarSelector2 , DataSelector , FileNavigation ) {
18
19
/**
19
20
* show result after code executed
20
21
*/
@@ -41,7 +42,9 @@ define([
41
42
'textarea' : 'Input textarea' ,
42
43
'input_number' : 'Input number' ,
43
44
'input_text' : 'Input text' ,
44
- 'input' : 'Input value'
45
+ 'input' : 'Input value' ,
46
+ 'file_save' : 'Select file' ,
47
+ 'file_load' : 'Select file'
45
48
}
46
49
47
50
const _VP_BOOL_OPTIONS = [
@@ -434,10 +437,84 @@ define([
434
437
}
435
438
content = input ;
436
439
break ;
440
+ case 'file-save' :
441
+ var input = $ ( '<input/>' ) . attr ( {
442
+ type : 'text' ,
443
+ class : 'vp-input input-single vp-state' ,
444
+ id : obj . name ,
445
+ placeholder : ( obj . placeholder == undefined ?'Input Data' :obj . placeholder ) ,
446
+ value : ( obj . default == undefined ?'' :obj . default ) ,
447
+ title : ( obj . help == undefined ?'' :obj . help ) ,
448
+ required : obj . required == true
449
+ } ) ;
450
+ // cell metadata test
451
+ if ( value != undefined ) {
452
+ // set as saved value
453
+ $ ( input ) . attr ( {
454
+ 'value' : value
455
+ } ) ;
456
+ }
457
+ var fileBrowerButton = $ ( `<div class="vp-file-browser-button" data-parent="${ obj . name } "></div>` ) ;
458
+ var div = $ ( '<div></div>' ) ;
459
+ div . append ( input ) ;
460
+ div . append ( fileBrowerButton ) ;
461
+
462
+ $ ( document ) . on ( 'click' , pageThis . wrapSelector ( `.vp-file-browser-button[data-parent="${ obj . name } "]` ) , function ( ) {
463
+ let fileNavi = new FileNavigation ( {
464
+ type : 'save' ,
465
+ extensions : ( obj . fileExtension == undefined ?[ ] :[ obj . fileExtension ] ) ,
466
+ finish : function ( filesPath , status , error ) {
467
+ let { file, path} = filesPath [ 0 ] ;
468
+
469
+ // set text
470
+ $ ( pageThis . wrapSelector ( '#' + obj . name ) ) . data ( 'file' , file ) ;
471
+ $ ( pageThis . wrapSelector ( '#' + obj . name ) ) . val ( path ) ;
472
+ }
473
+ } ) ;
474
+ fileNavi . open ( ) ;
475
+ } ) ;
476
+ content = div ;
477
+ break ;
478
+ case 'file-open' :
479
+ var input = $ ( '<input/>' ) . attr ( {
480
+ type : 'text' ,
481
+ class : 'vp-input input-single vp-state' ,
482
+ id : obj . name ,
483
+ placeholder : ( obj . placeholder == undefined ?'Input Data' :obj . placeholder ) ,
484
+ value : ( obj . default == undefined ?'' :obj . default ) ,
485
+ title : ( obj . help == undefined ?'' :obj . help ) ,
486
+ required : obj . required == true
487
+ } ) ;
488
+ // cell metadata test
489
+ if ( value != undefined ) {
490
+ // set as saved value
491
+ $ ( input ) . attr ( {
492
+ 'value' : value
493
+ } ) ;
494
+ }
495
+ var fileBrowerButton = $ ( `<div class="vp-file-browser-button" data-parent="${ obj . name } "></div>` ) ;
496
+ var div = $ ( '<div></div>' ) ;
497
+ div . append ( input ) ;
498
+ div . append ( fileBrowerButton ) ;
499
+
500
+ $ ( document ) . on ( 'click' , pageThis . wrapSelector ( `.vp-file-browser-button[data-parent="${ obj . name } "]` ) , function ( ) {
501
+ let fileNavi = new FileNavigation ( {
502
+ type : 'open' ,
503
+ extensions : ( obj . fileExtension == undefined ?[ ] :[ obj . fileExtension ] ) ,
504
+ finish : function ( filesPath , status , error ) {
505
+ let { file, path} = filesPath [ 0 ] ;
506
+
507
+ // set text
508
+ $ ( pageThis . wrapSelector ( '#' + obj . name ) ) . data ( 'file' , file ) ;
509
+ $ ( pageThis . wrapSelector ( '#' + obj . name ) ) . val ( path ) ;
510
+ }
511
+ } ) ;
512
+ fileNavi . open ( ) ;
513
+ } ) ;
514
+ content = div ;
515
+ break ;
437
516
case 'table' :
438
517
// break;
439
- case 'file' :
440
- // break;
441
518
// default : input_single
442
519
default :
443
520
var input = $ ( '<input/>' ) . attr ( {
@@ -618,8 +695,9 @@ define([
618
695
case 'dtype' :
619
696
value = $ ( pageThis . wrapSelector ( parent + ' #' + obj . name ) ) . val ( ) ;
620
697
break ;
698
+ case 'file-open' :
699
+ case 'file-save' :
621
700
case 'table' :
622
- case 'file' :
623
701
case 'option_select' :
624
702
case 'option_suggest' :
625
703
case 'input_number' :
@@ -659,7 +737,8 @@ define([
659
737
code = code . split ( id ) . join ( '' ) ;
660
738
} else {
661
739
// text quotation
662
- if ( v . type == 'text' ) {
740
+ if ( v . type == 'text'
741
+ || ( v . component != undefined && ( v . component . includes ( 'file-open' ) || v . component . includes ( 'file-save' ) ) ) ) {
663
742
val = "'" + val + "'" ;
664
743
}
665
744
// code completion
0 commit comments