@@ -337,6 +337,7 @@ class ComponentCascadeDot {
337
337
data . forEach ( ( v , k ) => {
338
338
if ( Array . isArray ( v . nodes ) && v . nodes . length !== 0 ) {
339
339
v . nodes = v . nodes . map ( ( N ) => N . key ) ;
340
+ v . expand = false ;
340
341
} else {
341
342
v . nodes = null ;
342
343
v . checked = false ;
@@ -418,8 +419,7 @@ class ComponentCascadeDot {
418
419
} else {
419
420
currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
420
421
}
421
- data . expand = false ;
422
- this . expand ( currentStackDocuments [ index ] , data . expand ) ;
422
+ this . expand ( data , currentStackDocuments [ index ] , false ) ;
423
423
} ) ;
424
424
if ( data . checked === false ) {
425
425
data . checked = true ;
@@ -431,8 +431,7 @@ class ComponentCascadeDot {
431
431
this . SELECTED_DOM . scrollTop = this . SELECTED_DOM . scrollHeight ;
432
432
} else {
433
433
element . classList . remove ( 'dlp-label-silence' ) ;
434
- data . expand = true ;
435
- this . expand ( element , data . expand ) ;
434
+ this . expand ( data , element , true ) ;
436
435
this . selectToChildren ( stack + 1 , data . nodes ) ;
437
436
}
438
437
}
@@ -467,21 +466,17 @@ class ComponentCascadeDot {
467
466
if ( checked === true || checked === undefined ) {
468
467
if ( parents . length > 0 && ( parents [ stack - 1 ] !== parentNode ) ) {
469
468
D . classList . add ( 'dlp-label-silence' ) ;
470
- data . expand = false ;
471
- this . expand ( D , data . expand ) ;
469
+ this . expand ( data , D , false ) ;
472
470
} else if ( parents . length === 0 && parseInt ( D . getAttribute ( 'data-id' ) ) !== node ) {
473
471
D . classList . add ( 'dlp-label-silence' ) ;
474
- data . expand = false ;
475
- this . expand ( D , data . expand ) ;
472
+ this . expand ( data , D , false ) ;
476
473
} else {
477
474
D . classList . remove ( 'dlp-label-silence' ) ;
478
475
if ( parseInt ( D . getAttribute ( 'data-id' ) ) === node ) {
479
476
if ( to_first_index === null ) to_first_index = index ;
480
- data . expand = true ;
481
- this . expand ( D , data . expand ) ;
482
- } else if ( data . expand === true ) {
483
- data . expand = false ;
484
- this . expand ( D , data . expand ) ;
477
+ this . expand ( data , D , true ) ;
478
+ } else {
479
+ this . expand ( data , D , false ) ;
485
480
}
486
481
}
487
482
}
@@ -530,23 +525,19 @@ class ComponentCascadeDot {
530
525
} ) ;
531
526
}
532
527
if ( to_first_index === null ) to_first_index = index ;
533
- if ( data . expand !== true ) {
534
- data . expand = true ;
535
- this . expand ( D , data . expand ) ;
536
- }
528
+ this . expand ( data , D , true ) ;
537
529
} else {
538
530
D . classList . add ( 'dlp-label-silence' ) ;
539
- if ( data . expand === true ) {
540
- data . expand = false ;
541
- this . expand ( D , data . expand ) ;
542
- }
531
+ this . expand ( data , D , false ) ;
543
532
}
544
533
} ) ;
545
534
if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 27 ;
546
535
this . selectToChildren ( stack + 1 , children ) ;
547
536
}
548
537
549
- expand ( dom , open = true ) {
538
+ expand ( data , dom , open = true ) {
539
+ if ( data . expand === open ) return ;
540
+ data . expand = open ;
550
541
if ( open ) {
551
542
let left_mark = dom . querySelector ( 'i.left' ) ;
552
543
if ( left_mark ) left_mark . innerHTML = _component . caret_right_circle ;
@@ -1146,6 +1137,7 @@ class ComponentCascadeLine {
1146
1137
data . forEach ( ( v , k ) => {
1147
1138
if ( Array . isArray ( v . nodes ) && v . nodes . length !== 0 ) {
1148
1139
v . nodes = v . nodes . map ( ( N ) => N . key ) ;
1140
+ v . expand = false ;
1149
1141
} else {
1150
1142
v . nodes = null ;
1151
1143
}
@@ -1176,7 +1168,6 @@ class ComponentCascadeLine {
1176
1168
}
1177
1169
1178
1170
select ( element , stack ) {
1179
- let id = parseInt ( element . getAttribute ( 'data-id' ) ) ;
1180
1171
let k = parseInt ( element . getAttribute ( 'data-k' ) ) ;
1181
1172
let data = this . dimensional_data [ stack ] [ k ] ;
1182
1173
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
@@ -1189,22 +1180,18 @@ class ComponentCascadeLine {
1189
1180
} else {
1190
1181
D . classList . add ( 'dlp-label-silence' ) ;
1191
1182
}
1183
+ this . expand ( data , currentStackDocuments [ index ] , false ) ;
1192
1184
} ) ;
1193
- if ( data . checked === false ) {
1194
- data . checked = true ;
1195
- element . classList . remove ( 'dlp-label-silence' ) ;
1196
- this . selectToChildren ( stack + 1 , data . nodes ) ;
1197
- } else {
1198
- element . classList . remove ( 'dlp-label-silence' ) ;
1199
- this . selectToChildren ( stack + 1 , data . nodes ) ;
1200
- }
1185
+ this . expand ( data , element , true ) ;
1186
+ element . classList . remove ( 'dlp-label-silence' ) ;
1187
+ this . selectToChildren ( stack + 1 , data . nodes ) ;
1201
1188
if ( Array . isArray ( data . parentNodes ) && data . parentNodes . length > 0 ) {
1202
1189
let parentNodes = data . parentNodes . slice ( 0 ) ;
1203
- this . selectToParent ( parentNodes , data . checked ) ;
1190
+ this . selectToParent ( parentNodes ) ;
1204
1191
}
1205
1192
}
1206
1193
1207
- selectToParent ( nodes , checked ) {
1194
+ selectToParent ( nodes ) {
1208
1195
let stack = nodes . length - 1 ;
1209
1196
let node = nodes . pop ( ) ;
1210
1197
let parentNode = nodes [ stack - 1 ] ;
@@ -1215,16 +1202,23 @@ class ComponentCascadeLine {
1215
1202
let parents = data . parentNodes ;
1216
1203
if ( parents . length > 0 && ( parents [ stack - 1 ] !== parentNode ) ) {
1217
1204
D . classList . add ( 'dlp-label-silence' ) ;
1205
+ this . expand ( data , D , false ) ;
1218
1206
} else if ( parents . length === 0 && parseInt ( D . getAttribute ( 'data-id' ) ) !== node ) {
1219
1207
D . classList . add ( 'dlp-label-silence' ) ;
1208
+ this . expand ( data , D , false ) ;
1220
1209
} else {
1221
1210
D . classList . remove ( 'dlp-label-silence' ) ;
1222
- if ( to_first_index === null && parseInt ( D . getAttribute ( 'data-id' ) ) === node ) to_first_index = index ;
1211
+ if ( parseInt ( D . getAttribute ( 'data-id' ) ) === node ) {
1212
+ if ( to_first_index === null ) to_first_index = index ;
1213
+ this . expand ( data , D , true ) ;
1214
+ } else {
1215
+ this . expand ( data , D , false ) ;
1216
+ }
1223
1217
}
1224
1218
} ) ;
1225
1219
if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 27 ;
1226
1220
if ( nodes . length > 0 ) {
1227
- this . selectToParent ( nodes , checked ) ;
1221
+ this . selectToParent ( nodes ) ;
1228
1222
}
1229
1223
}
1230
1224
@@ -1248,19 +1242,19 @@ class ComponentCascadeLine {
1248
1242
} ) ;
1249
1243
}
1250
1244
if ( to_first_index === null ) to_first_index = index ;
1245
+ this . expand ( data , D , true ) ;
1251
1246
} else {
1252
1247
D . classList . add ( 'dlp-label-silence' ) ;
1253
- if ( data . expand === true ) {
1254
- data . expand = false ;
1255
- this . expand ( D , data . expand ) ;
1256
- }
1248
+ this . expand ( data , D , false ) ;
1257
1249
}
1258
1250
} ) ;
1259
1251
if ( to_first_index !== null ) this . STACKS [ stack ] . scrollTop = to_first_index * 27 ;
1260
1252
this . selectToChildren ( stack + 1 , children ) ;
1261
1253
}
1262
1254
1263
- expand ( dom , open = true ) {
1255
+ expand ( data , dom , open = true ) {
1256
+ if ( data . expand === open ) return ;
1257
+ data . expand = open ;
1264
1258
if ( open ) {
1265
1259
let left_mark = dom . querySelector ( 'i.left' ) ;
1266
1260
if ( left_mark ) left_mark . innerHTML = _component . caret_right_circle ;
0 commit comments