@@ -30,7 +30,7 @@ type="rotate"from="0 20 20"to="360 20 20"dur="0.5s"repeatCount="indefinite"/></p
30
30
31
31
function _componentRequest ( url , method = "GET" , data = { } , callback = function ( ) {
32
32
} ) {
33
- var xhr = new XMLHttpRequest ( ) ;
33
+ let xhr = new XMLHttpRequest ( ) ;
34
34
xhr . open ( method , url , true ) ;
35
35
xhr . timeout = 30000 ;
36
36
let token = '' ;
@@ -49,7 +49,7 @@ function _componentRequest(url, method = "GET", data = {}, callback = function (
49
49
}
50
50
xhr . onreadystatechange = function ( ) {
51
51
if ( xhr . readyState === xhr . DONE && xhr . status === 200 ) {
52
- var response = xhr . response ;
52
+ let response = xhr . response ;
53
53
callback ( response ) ;
54
54
}
55
55
} ;
@@ -192,6 +192,12 @@ class ComponentDot {
192
192
this . SELECT_COVER_DOM = document . createElement ( 'div' ) ;
193
193
this . SELECT_COVER_DOM . className = 'dot-select dlp-scroll dot-select-cover' ;
194
194
this . CONTENT_DOM . appendChild ( this . SELECT_COVER_DOM ) ;
195
+ } else {
196
+ let elements = [ ] ;
197
+ this . SELECT_COVER_DOM . childNodes . forEach ( ( D ) => {
198
+ elements . push ( D ) ;
199
+ } ) ;
200
+ this . CONTENT_DOM . append ( ...elements ) ;
195
201
}
196
202
let elements = [ ] ;
197
203
for ( let element of this . CONTENT_DOM . childNodes ) {
@@ -225,6 +231,8 @@ class ComponentCascadeDot {
225
231
this . delete_data = [ ] ;
226
232
this . make ( ) . makeSelect ( select ) ;
227
233
this . selectInputDOM . value = JSON . stringify ( this . select_data ) ;
234
+ let search = document . querySelector ( `#${ this . name } .dot-search` ) ;
235
+ search . addEventListener ( 'input' , ( ) => this . search ( search ) ) ;
228
236
}
229
237
230
238
make ( ) {
@@ -271,7 +279,7 @@ class ComponentCascadeDot {
271
279
if ( index !== - 1 ) {
272
280
v . checked = true ;
273
281
let E = new Event ( 'click' ) ;
274
- setTimeout ( ( ) => {
282
+ setTimeout ( ( ) => {
275
283
div . click ( ) ;
276
284
div . dispatchEvent ( E ) ;
277
285
} ) ;
@@ -354,6 +362,7 @@ class ComponentCascadeDot {
354
362
let parentNodes = data . parentNodes . slice ( 0 ) ;
355
363
this . selectToParent ( parentNodes , data . checked ) ;
356
364
}
365
+ this . SELECTED_DOM . scrollTop = this . SELECTED_DOM . scrollHeight ;
357
366
}
358
367
359
368
selectToSelected ( element , stack ) {
@@ -386,7 +395,7 @@ class ComponentCascadeDot {
386
395
D . classList . add ( 'dlp-label-silence' ) ;
387
396
} else {
388
397
D . classList . remove ( 'dlp-label-silence' ) ;
389
- if ( to_first_index === null ) to_first_index = index ;
398
+ if ( to_first_index === null ) to_first_index = index ;
390
399
}
391
400
}
392
401
if ( checked === true && node === data . key && data . mark !== true ) {
@@ -408,7 +417,7 @@ class ComponentCascadeDot {
408
417
}
409
418
}
410
419
} ) ;
411
- if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 28 ;
420
+ if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 28 ;
412
421
if ( nodes . length > 0 ) {
413
422
this . selectToParent ( nodes , checked ) ;
414
423
}
@@ -432,12 +441,12 @@ class ComponentCascadeDot {
432
441
if ( children . indexOf ( child ) === - 1 ) children . push ( c ) ;
433
442
} ) ;
434
443
}
435
- if ( to_first_index === null ) to_first_index = index ;
444
+ if ( to_first_index === null ) to_first_index = index ;
436
445
} else {
437
446
D . classList . add ( 'dlp-label-silence' ) ;
438
447
}
439
448
} ) ;
440
- if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 28 ;
449
+ if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 28 ;
441
450
this . selectToChildren ( stack + 1 , children ) ;
442
451
}
443
452
@@ -475,6 +484,68 @@ class ComponentCascadeDot {
475
484
}
476
485
}
477
486
}
487
+
488
+ search ( search ) {
489
+ if ( search . value === '' ) {
490
+ if ( this . SELECT_COVER_DOM instanceof HTMLElement ) {
491
+ this . SELECT_COVER_DOM . remove ( ) ;
492
+ this . SELECT_COVER_DOM = null ;
493
+ this . COVER_STACK_HASH_DOM = [ ] ;
494
+ }
495
+ return ;
496
+ }
497
+ if ( ! ( this . SELECT_COVER_DOM instanceof HTMLElement ) ) {
498
+ this . COVER_STACK_HASH_DOM = [ ] ;
499
+ this . SELECT_COVER_DOM = document . createElement ( 'div' ) ;
500
+ this . SELECT_COVER_DOM . className = 'dot-select dlp-scroll dot-select-cover' ;
501
+ for ( let stack = 1 ; stack <= this . dimensional_data . length ; stack ++ ) {
502
+ let div = document . createElement ( 'div' ) ;
503
+ div . className = 'dot-cascade-stack dlp-scroll' ;
504
+ this . SELECT_COVER_DOM . append ( div ) ;
505
+ }
506
+ this . CONTENT_DOM . appendChild ( this . SELECT_COVER_DOM ) ;
507
+ }
508
+ this . dimensional_data . forEach ( ( data , stack ) => {
509
+ data . forEach ( ( d , k ) => {
510
+ if ( d . val . indexOf ( search . value ) !== - 1 &&
511
+ ( ! Array . isArray ( this . COVER_STACK_HASH_DOM [ stack ] ) || this . COVER_STACK_HASH_DOM [ stack ] . indexOf ( d . key ) === - 1 ) ) {
512
+ let div = document . createElement ( 'div' ) ;
513
+ div . className = 'dlp dlp-text dlp-label' ;
514
+ div . textContent = d . val ;
515
+ div . addEventListener ( 'click' , ( ) => this . searchCoverClick ( stack , d , this . STACKS [ stack ] . childNodes [ k ] ) ) ;
516
+ this . SELECT_COVER_DOM . childNodes [ stack ] . appendChild ( div ) ;
517
+ if ( ! Array . isArray ( this . COVER_STACK_HASH_DOM [ stack ] ) ) {
518
+ this . COVER_STACK_HASH_DOM [ stack ] = [ d . key ] ;
519
+ return ;
520
+ }
521
+ this . COVER_STACK_HASH_DOM [ stack ] . push ( d . key ) ;
522
+ }
523
+ } ) ;
524
+ } ) ;
525
+ }
526
+
527
+ searchCoverClick ( stack , data , dom ) {
528
+ if ( data . nodes !== null ) {
529
+ let nextStack = stack + 1 ;
530
+ this . dimensional_data [ nextStack ] . forEach ( ( d , k ) => {
531
+ if ( data . nodes . indexOf ( d . key ) !== - 1 &&
532
+ ( ! Array . isArray ( this . COVER_STACK_HASH_DOM [ nextStack ] ) || this . COVER_STACK_HASH_DOM [ nextStack ] . indexOf ( d . key ) === - 1 ) ) {
533
+ let div = document . createElement ( 'div' ) ;
534
+ div . className = 'dlp dlp-text dlp-label' ;
535
+ div . textContent = d . val ;
536
+ div . addEventListener ( 'click' , ( ) => this . searchCoverClick ( nextStack , d , this . STACKS [ nextStack ] . childNodes [ k ] ) ) ;
537
+ this . SELECT_COVER_DOM . childNodes [ nextStack ] . appendChild ( div ) ;
538
+ if ( ! Array . isArray ( this . COVER_STACK_HASH_DOM [ nextStack ] ) ) {
539
+ this . COVER_STACK_HASH_DOM [ nextStack ] = [ d . key ] ;
540
+ return ;
541
+ }
542
+ this . COVER_STACK_HASH_DOM [ nextStack ] . push ( d . key ) ;
543
+ }
544
+ } ) ;
545
+ return ;
546
+ }
547
+ ( dom instanceof HTMLElement ) && dom . click ( ) ;
548
+ }
478
549
}
479
550
480
551
class ComponentLine {
0 commit comments