@@ -84,6 +84,10 @@ define([
84
84
this . pathStackPointer = - 1 ;
85
85
this . pathStack = [ ] ;
86
86
this . currentFileList = [ ] ;
87
+ this . selectedExt = '' ;
88
+ if ( this . state . extensions . length > 0 ) {
89
+ this . selectedExt = this . state . extensions [ 0 ] ;
90
+ }
87
91
88
92
this . pathState = {
89
93
parentPath : '' ,
@@ -280,6 +284,32 @@ define([
280
284
// clear body
281
285
$ ( this . wrapSelector ( '.fileNavigationPage-body' ) ) . html ( '' ) ;
282
286
287
+ /**
288
+ * Filter file/dir which included in this.state.extensions
289
+ */
290
+ if ( Array . isArray ( this . state . extensions ) && this . state . extensions . length > 0 && this . state . extensions . toString ( ) !== '' ) {
291
+ fileList = fileList . filter ( ( data , index ) => {
292
+ if ( index == 0 ) {
293
+ return true ;
294
+ }
295
+
296
+ if ( data . type && data . type == 'dir' ) {
297
+ // if directory, just show
298
+ return true ;
299
+ } else if ( data . name ) {
300
+ var extension = data . name . substring ( data . name . lastIndexOf ( '.' ) + 1 ) ;
301
+ // if (that.state.extensions.includes(extension)) {
302
+ if ( that . selectedExt === '' || extension === that . selectedExt ) {
303
+ return true ;
304
+ } else {
305
+ return false ;
306
+ }
307
+ } else {
308
+ return false ;
309
+ }
310
+ } ) ;
311
+ }
312
+
283
313
// render file items
284
314
let dirArr = [ ] ;
285
315
let fileArr = [ ] ;
@@ -411,12 +441,12 @@ define([
411
441
page . appendFormatLine ( '<input id="{0}" type="text" class="vp-input" placeholder="{1}" value="{2}"/>'
412
442
, 'vp_fileNavigationInput' , 'New File Name' , this . state . fileName ) ;
413
443
page . appendFormatLine ( '<select id="{0}" class="vp-select">' , 'vp_fileNavigationExt' ) ;
444
+ page . appendLine ( '<option value="">All files(*.*)</option>' ) ;
414
445
if ( this . state . extensions && this . state . extensions . length > 0 ) {
446
+ let selectedExt = this . selectedExt ;
415
447
this . state . extensions . forEach ( ext => {
416
- page . appendFormatLine ( '<option value="{0}">*.{1 }</option>' , ext , ext ) ;
448
+ page . appendFormatLine ( '<option value="{0}" {1} >*.{2 }</option>' , ext , ( selectedExt === ext ? 'selected' : '' ) , ext ) ;
417
449
} ) ;
418
- } else {
419
- page . appendLine ( '<option value="">All files(*.*)</option>' ) ;
420
450
}
421
451
page . appendLine ( '</select>' ) ;
422
452
page . appendFormatLine ( '<button class="{0} vp-button" data-menu="{1}">{2}</button>' , 'vp-filenavi-btn' , 'select' , 'Select' ) ;
@@ -430,6 +460,13 @@ define([
430
460
431
461
that . handleSelectFile ( filePath , fileName ) ;
432
462
} ) ;
463
+ // bind file extension change event
464
+ $ ( this . wrapSelector ( '#vp_fileNavigationExt' ) ) . on ( 'change' , function ( ) {
465
+ let ext = $ ( this ) . val ( ) ;
466
+ that . selectedExt = ext ;
467
+
468
+ that . renderFileList ( ) ;
469
+ } ) ;
433
470
// bind save cancel event
434
471
$ ( this . wrapSelector ( '.vp-filenavi-btn' ) ) . on ( 'click' , function ( ) {
435
472
let menu = $ ( this ) . data ( 'menu' ) ;
@@ -477,10 +514,10 @@ define([
477
514
let that = this ;
478
515
/** Implement after rendering */
479
516
// if save mode
480
- if ( this . state . type == 'save' ) {
481
- // render saving box
482
- this . renderSaveBox ( ) ;
483
- }
517
+ // if (this.state.type == 'save') {
518
+ // render saving box
519
+ this . renderSaveBox ( ) ;
520
+ // }
484
521
485
522
// get current path
486
523
this . getCurrentDirectory ( ) . then ( function ( currentPath ) {
@@ -527,20 +564,21 @@ define([
527
564
//============================================================================
528
565
// Set selection result
529
566
//============================================================================
530
- if ( this . state . type == 'save' ) {
531
- // add as saving file
532
- this . setSelectedFile ( fileInput , pathInput ) ;
533
- } else {
534
- // Manage result using finish function
535
- let filesPath = [ { file : fileInput , path : pathInput } ] ; //FIXME: fix it if multiple selection implemented
536
- let status = true ;
537
- let error = null ;
538
- vpLog . display ( VP_LOG_TYPE . DEVELOP , 'fileNavigation finished' , filesPath , status , error ) ;
539
- this . state . finish ( filesPath , status , error ) ;
567
+ this . setSelectedFile ( fileInput , pathInput ) ;
568
+ // if (this.state.type == 'save') {
569
+ // // add as saving file
570
+ // this.setSelectedFile(fileInput, pathInput);
571
+ // } else {
572
+ // // Manage result using finish function
573
+ // let filesPath = [{ file: fileInput, path: pathInput }]; //FIXME: fix it if multiple selection implemented
574
+ // let status = true;
575
+ // let error = null;
576
+ // vpLog.display(VP_LOG_TYPE.DEVELOP, 'fileNavigation finished', filesPath, status, error);
577
+ // this.state.finish(filesPath, status, error);
540
578
541
- // remove and close file navigation
542
- this . close ( ) ;
543
- }
579
+ // // remove and close file navigation
580
+ // this.close();
581
+ // }
544
582
}
545
583
getCurrentDirectory ( ) {
546
584
return vpKernel . getCurrentDirectory ( ) ;
@@ -588,31 +626,6 @@ define([
588
626
return a - b ;
589
627
} ) ;
590
628
591
- /**
592
- * Filter file/dir which included in this.state.extensions
593
- */
594
- if ( Array . isArray ( that . state . extensions ) && that . state . extensions . length > 0 && that . state . extensions . toString ( ) !== '' ) {
595
- filtered_varList = filtered_varList . filter ( ( data , index ) => {
596
- if ( index == 0 ) {
597
- return true ;
598
- }
599
-
600
- if ( data . type && data . type == 'dir' ) {
601
- // if file, just show
602
- return true ;
603
- } else if ( data . name ) {
604
- var extension = data . name . substring ( data . name . lastIndexOf ( '.' ) + 1 ) ;
605
- if ( that . state . extensions . includes ( extension ) ) {
606
- return true ;
607
- } else {
608
- return false ;
609
- }
610
- } else {
611
- return false ;
612
- }
613
- } ) ;
614
- }
615
-
616
629
vpLog . display ( VP_LOG_TYPE . DEVELOP , 'FileNavigation - getFileList: ' , filtered_varList ) ;
617
630
618
631
var { currentDirStr, currentRelativePathStr } = that . splitPathStrAndSetStack ( dirObj , filtered_varList ) ;
0 commit comments