@@ -17,10 +17,11 @@ define([
17
17
'vp_base/js/com/com_util' ,
18
18
'vp_base/js/com/com_Const' ,
19
19
'vp_base/js/com/com_String' ,
20
+ 'vp_base/js/com/component/SuggestInput' ,
20
21
'vp_base/js/com/component/PopupComponent' ,
21
22
'vp_base/js/com/component/FileNavigation' ,
22
23
'vp_base/js/com/component/LoadingSpinner'
23
- ] , function ( ifHtml , ifCss , com_util , com_Const , com_String , PopupComponent , FileNavigation , LoadingSpinner ) {
24
+ ] , function ( ifHtml , ifCss , com_util , com_Const , com_String , SuggestInput , PopupComponent , FileNavigation , LoadingSpinner ) {
24
25
25
26
/**
26
27
* PackageManager
@@ -89,18 +90,24 @@ define([
89
90
}
90
91
}
91
92
93
+ _unbindEvent ( ) {
94
+ super . _unbindEvent ( ) ;
95
+ $ ( document ) . off ( 'change' , this . wrapSelector ( '.vp-pm-search' ) ) ;
96
+ }
97
+
92
98
_bindEvent ( ) {
93
99
super . _bindEvent ( ) ;
94
100
/** Implement binding events */
95
101
let that = this ;
96
102
97
103
// search item
98
- $ ( this . wrapSelector ( '.vp-pm-search' ) ) . on ( 'change' , function ( evt ) {
104
+ $ ( document ) . on ( 'change' , this . wrapSelector ( '.vp-pm-search' ) , function ( evt ) {
99
105
var value = $ ( this ) . val ( ) ;
100
106
if ( value != '' ) {
101
107
$ ( that . wrapSelector ( '.vp-pm-item' ) ) . hide ( ) ;
102
108
$ ( that . wrapSelector ( '.vp-pm-item' ) ) . filter ( function ( ) {
103
- return $ ( this ) . data ( 'key' ) . search ( value ) >= 0 ;
109
+ let key = $ ( this ) . data ( 'key' ) ;
110
+ return key . search ( value . toLowerCase ( ) ) >= 0 ;
104
111
} ) . show ( ) ;
105
112
} else {
106
113
$ ( that . wrapSelector ( '.vp-pm-item' ) ) . show ( ) ;
@@ -116,7 +123,14 @@ define([
116
123
// sort item
117
124
$ ( this . wrapSelector ( '.vp-pm-sort-menu-item' ) ) . on ( 'click' , function ( ) {
118
125
var menu = $ ( this ) . data ( 'menu' ) ;
119
- if ( menu === 'name' ) {
126
+ if ( menu === 'registered' ) {
127
+ // sort by name
128
+ $ ( that . wrapSelector ( '.vp-pm-item' ) ) . sort ( function ( a , b ) {
129
+ var keyA = parseInt ( $ ( a ) . data ( 'seq' ) ) ;
130
+ var keyB = parseInt ( $ ( b ) . data ( 'seq' ) ) ;
131
+ return keyA > keyB ? 1 : - 1
132
+ } ) . appendTo ( $ ( that . wrapSelector ( '.vp-pm-table' ) ) )
133
+ } else if ( menu === 'name' ) {
120
134
// sort by name
121
135
$ ( that . wrapSelector ( '.vp-pm-item' ) ) . sort ( function ( a , b ) {
122
136
var keyA = $ ( a ) . data ( 'key' ) ;
@@ -147,6 +161,16 @@ define([
147
161
return insA > insB ? 1 : - 1
148
162
} ) . appendTo ( $ ( that . wrapSelector ( '.vp-pm-table' ) ) )
149
163
}
164
+ $ ( that . wrapSelector ( '.vp-pm-sort-menu-box' ) ) . hide ( ) ;
165
+ } ) ;
166
+
167
+ // reload package list
168
+ $ ( this . wrapSelector ( '.vp-pm-func-reload' ) ) . on ( 'click' , function ( ) {
169
+ // reset search keyword
170
+ $ ( that . wrapSelector ( '.vp-pm-search' ) ) . val ( '' ) ;
171
+
172
+ // load package list
173
+ that . loadPackageList ( ) ;
150
174
} ) ;
151
175
152
176
// add package
@@ -355,11 +379,12 @@ define([
355
379
*
356
380
* @param {String } key
357
381
* @param {Object } info installed, version, path
382
+ * @param {number } index sequence of initial package list
358
383
* @returns
359
384
*/
360
- renderPackageItem ( key , info ) {
385
+ renderPackageItem ( key , info , index ) {
361
386
var item = new com_String ( ) ;
362
- item . appendFormatLine ( '<div class="{0}" data-key="{1}" data-installed="{2}">' , 'vp-pm-item' , key , info . installed === true ?'1' :'0' ) ;
387
+ item . appendFormatLine ( '<div class="{0}" data-key="{1}" data-installed="{2}" data-seq="{3}" >' , 'vp-pm-item' , key , info . installed === true ?'1' :'0' , index ) ;
363
388
item . appendFormatLine ( '<div class="{0}" title="{1}">' , 'vp-pm-item-header' , ( info . path ?info . path :'' ) ) ;
364
389
item . appendFormatLine ( '<label>{0}</label>' , key ) ;
365
390
if ( info . installed === true ) {
@@ -401,17 +426,25 @@ define([
401
426
$ ( this . wrapSelector ( '.vp-pm-table' ) ) . html ( '' ) ;
402
427
403
428
let packageList = Object . keys ( this . packageLib ) ;
429
+
430
+ // set auto search
431
+ let searchInput = new SuggestInput ( ) ;
432
+ searchInput . addClass ( 'vp-pm-search vp-input' ) ;
433
+ searchInput . setPlaceholder ( "Search" ) ;
434
+ searchInput . setSuggestList ( function ( ) { return packageList ; } ) ;
435
+ $ ( this . wrapSelector ( '.vp-pm-search' ) ) . replaceWith ( searchInput . toTagString ( ) ) ;
436
+
404
437
let loadingSpinner = new LoadingSpinner ( $ ( this . wrapSelector ( '.vp-popup-body' ) ) ) ;
405
438
vpKernel . getPackageList ( packageList ) . then ( function ( resultObj ) {
406
439
let { result } = resultObj ;
407
440
let packageInfo = JSON . parse ( result ) ;
408
441
409
442
// load code list
410
443
var innerFuncCode = new com_String ( ) ;
411
- Object . keys ( packageInfo ) . forEach ( key => {
444
+ Object . keys ( packageInfo ) . forEach ( ( key , idx ) => {
412
445
let info = packageInfo [ key ] ; // installed, version, path
413
446
if ( info ) {
414
- var item = that . renderPackageItem ( key , info ) ;
447
+ var item = that . renderPackageItem ( key , info , idx ) ;
415
448
innerFuncCode . append ( item ) ;
416
449
}
417
450
} ) ;
0 commit comments