@@ -234,46 +234,34 @@ class ComponentCascadeDot {
234
234
let data = this . dimensional_data [ stack ] ;
235
235
let stackDom = document . createElement ( 'div' ) ;
236
236
stackDom . className = 'dot-cascade-stack dlp-scroll' ;
237
- data . forEach ( ( v ) => {
237
+ data . forEach ( ( v , k ) => {
238
+ if ( Array . isArray ( v . nodes ) && v . nodes . length !== 0 ) {
239
+ v . nodes = v . nodes . map ( ( N ) => N . key ) ;
240
+ } else {
241
+ v . nodes = null ;
242
+ v . checked = false ;
243
+ }
238
244
let div = document . createElement ( 'div' ) ;
239
245
div . className = 'dlp dlp-text dlp-label' ;
240
246
div . textContent = v . val ;
241
247
div . setAttribute ( 'data-id' , v . key ) ;
242
- div . setAttribute ( 'data-parent-nodes-id' , JSON . stringify ( v . parentNodes ) ) ;
243
- let allow_select = false ;
244
- if ( v . hasOwnProperty ( 'nodes' ) && v . nodes . length > 0 ) {
245
- let nodes = v . nodes . map ( ( n ) => n . key ) ;
246
- div . setAttribute ( 'data-nodes-id' , JSON . stringify ( nodes ) ) ;
247
- } else {
248
- div . setAttribute ( 'checked' , 'false' ) ;
249
- allow_select = true ;
250
- }
248
+ div . setAttribute ( 'data-k' , k ) ;
251
249
div . addEventListener ( 'click' , this . select . bind ( this , div , stack ) ) ;
252
250
stackDom . append ( div ) ;
253
251
/*selected append*/
254
252
let index = this . selected_data . indexOf ( parseInt ( v . key ) ) ;
255
- if ( allow_select == false && index !== - 1 ) {
253
+ if ( v . checked ! == false && index !== - 1 ) {
256
254
this . selected_data . splice ( index , 1 ) ;
257
255
this . select_data = this . selected_data . slice ( 0 ) ;
258
256
return ;
259
257
}
260
258
if ( index !== - 1 ) {
261
- div . setAttribute ( 'checked' , 'true' ) ;
262
- this . selectToSelected ( div , stack ) ;
263
- div . insertAdjacentHTML ( 'beforeend' , `<i>${ _componentSvg . check } </i>` ) ;
264
- /*parent nodes*/
265
- setTimeout ( ( ) => {
266
- let parent_nodes = v . parentNodes ;
267
- if ( Array . isArray ( parent_nodes ) ) {
268
- parent_nodes . forEach ( ( node , stack ) => {
269
- this . selectToParent ( node , stack , parent_nodes [ stack - 1 ] , 'false' ) ;
270
- } ) ;
271
- }
272
- } ) ;
259
+ v . checked = true ;
273
260
}
274
261
} ) ;
275
262
this . CONTENT_DOM . append ( stackDom ) ;
276
263
}
264
+ console . log ( this . dimensional_data )
277
265
this . STACKS = this . CONTENT_DOM . childNodes ;
278
266
return this ;
279
267
}
@@ -295,97 +283,79 @@ class ComponentCascadeDot {
295
283
} else {
296
284
this . dimensional_data [ dimension ] . push ( data ) ;
297
285
}
298
- if ( ! data . hasOwnProperty ( 'nodes' ) || ! Array . isArray ( data . nodes ) || data . nodes . length == 0 ) {
286
+ if ( ! data . hasOwnProperty ( 'nodes' ) || ! Array . isArray ( data . nodes ) || data . nodes . length === 0 ) {
299
287
return ;
300
288
}
301
289
dimension ++ ;
302
290
this . makeDimensional ( data . nodes , dimension , parentNodes ) ;
303
291
}
304
292
305
293
select ( element , stack ) {
306
- let checked = element . getAttribute ( 'checked' ) ;
307
- let end_node = false ;
308
- let nodes = JSON . parse ( element . getAttribute ( 'data-nodes-id' ) ) ;
309
- if ( ! Array . isArray ( nodes ) || ( nodes . length == 0 ) ) {
310
- end_node = true ;
311
- }
312
- let parent_nodes = JSON . parse ( element . getAttribute ( 'data-parent-nodes-id' ) ) ;
313
- if ( checked == 'false' || checked == null ) {
314
- this . selectActive ( stack , element , end_node , checked ) ;
315
- } else {
316
- this . selectInactive ( stack , element , end_node , checked ) ;
317
- }
318
- /*nodes*/
319
- this . selectToChildren ( stack + 1 , nodes , end_node ) ;
320
- /*parent nodes*/
321
- if ( Array . isArray ( parent_nodes ) ) {
322
- for ( let stack in parent_nodes ) {
323
- this . selectToParent ( parent_nodes [ stack ] , parseInt ( stack ) , parent_nodes [ stack - 1 ] , checked ) ;
324
- }
325
- }
326
- }
327
-
328
- selectActive ( stack , element , end_node , checked ) {
329
- checked != null && element . setAttribute ( 'checked' , 'true' ) ;
294
+ let id = parseInt ( element . getAttribute ( 'data-id' ) ) ;
295
+ let k = parseInt ( element . getAttribute ( 'data-k' ) ) ;
296
+ let data = this . dimensional_data [ stack ] [ k ] ;
330
297
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
331
- let parentNode = JSON . parse ( element . getAttribute ( 'data-parent-nodes-id' ) ) . pop ( ) ;
332
- currentStackDocuments . forEach ( ( D , index ) => {
333
- currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
334
- let parents = JSON . parse ( D . getAttribute ( 'data-parent-nodes-id' ) ) ;
335
- if ( parents [ stack - 1 ] != parentNode ) {
336
- currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
337
- }
338
- } ) ;
339
- element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
340
- if ( end_node ) {
341
- this . selectToSelected ( element , stack ) ;
342
- this . tagCal ( parseInt ( element . getAttribute ( 'data-id' ) ) , this . MODE . insert ) ;
298
+ let parentNode = data . parentNodes [ data . parentNodes . length - 1 ] ;
299
+
300
+ if ( data . checked === false ) {
301
+ data . checked = true ;
302
+ currentStackDocuments . forEach ( ( D , index ) => {
303
+ if ( this . dimensional_data [ stack ] [ index ] . parentNodes . indexOf ( parentNode ) !== - 1 ) {
304
+ currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
305
+ } else {
306
+ currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
307
+ }
308
+ } ) ;
309
+ this . tagCal ( id , this . MODE . insert ) ;
310
+ element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
343
311
element . insertAdjacentHTML ( 'beforeend' , `<i>${ _componentSvg . check } </i>` ) ;
344
- }
345
- }
346
-
347
- selectInactive ( stack , element , end_node , checked ) {
348
- checked != null && element . setAttribute ( 'checked' , 'false' ) ;
349
- let id = element . getAttribute ( 'data-id' ) ;
350
- this . tagCal ( parseInt ( id ) , this . MODE . delete ) ;
351
- element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
352
- for ( let index in this . SELECTED_DOM . childNodes ) {
353
- let D = this . SELECTED_DOM . childNodes [ index ] ;
354
- if ( ( D instanceof HTMLElement ) && ( D . getAttribute ( 'data-id' ) == id ) ) {
355
- this . tagCal ( parseInt ( id ) , this . MODE . delete ) ;
356
- D . remove ( ) ;
357
- break ;
312
+ this . selectToChildren ( stack + 1 , data . nodes ) ;
313
+ this . selectToSelected ( element , stack ) ;
314
+ } else if ( data . checked === true ) {
315
+ data . checked = false ;
316
+ this . tagCal ( id , this . MODE . delete ) ;
317
+ element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
318
+ for ( let index in this . SELECTED_DOM . childNodes ) {
319
+ let D = this . SELECTED_DOM . childNodes [ index ] ;
320
+ if ( ( D instanceof HTMLElement ) && ( D . getAttribute ( 'data-id' ) == id ) ) {
321
+ D . remove ( ) ;
322
+ break ;
323
+ }
358
324
}
325
+ } else {
326
+ currentStackDocuments . forEach ( ( D , index ) => {
327
+ if ( this . dimensional_data [ stack ] [ index ] . parentNodes . indexOf ( parentNode ) !== - 1 ) {
328
+ currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
329
+ } else {
330
+ currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
331
+ }
332
+ } ) ;
333
+ this . selectToChildren ( stack + 1 , data . nodes ) ;
359
334
}
360
- let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
361
- let parentNode = JSON . parse ( element . getAttribute ( 'data-parent-nodes-id' ) ) . pop ( ) ;
362
- currentStackDocuments . forEach ( ( D , index ) => {
363
- currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
364
- let parents = JSON . parse ( D . getAttribute ( 'data-parent-nodes-id' ) ) ;
365
- if ( parents [ stack - 1 ] != parentNode ) {
366
- currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
335
+ if ( Array . isArray ( data . parentNodes ) ) {
336
+ for ( let stack in data . parentNodes ) {
337
+ this . selectToParent ( data . parentNodes [ stack ] , parseInt ( stack ) , data . parentNodes [ stack - 1 ] ) ;
367
338
}
368
- } ) ;
339
+ }
369
340
}
370
341
371
342
selectToSelected ( element , stack ) {
372
343
let div = document . createElement ( 'div' ) ;
373
344
div . className = 'dlp dlp-text dlp-label' ;
374
- let id = element . getAttribute ( 'data-id' ) ;
375
- div . setAttribute ( 'data-id' , id ) ;
345
+ div . setAttribute ( 'data-id' , element . getAttribute ( 'data-id' ) ) ;
376
346
div . setAttribute ( 'stack' , stack ) ;
377
347
div . textContent = element . textContent ;
378
348
var object = this ;
379
349
div . addEventListener ( 'click' , function ( ) {
380
- object . selectInactive ( stack , element , 'true' , 'true' ) ;
350
+ object . select ( element , stack ) ;
381
351
} ) ;
382
352
this . SELECTED_DOM . append ( div ) ;
383
353
}
384
354
385
355
selectToParent ( node , stack , parent_node , checked ) {
386
356
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
387
357
currentStackDocuments . forEach ( ( D , index ) => {
388
- if ( checked == 'true' ) {
358
+ /* if (checked == 'true') {
389
359
if (node == parseInt(D.getAttribute('data-id'))) {
390
360
let check = false;
391
361
this.STACKS[stack + 1].childNodes.forEach((D) => {
@@ -396,7 +366,7 @@ class ComponentCascadeDot {
396
366
!check && D.querySelector('i') != null && D.querySelector('i').remove();
397
367
}
398
368
return;
399
- }
369
+ }*/
400
370
let parents = JSON . parse ( D . getAttribute ( 'data-parent-nodes-id' ) ) ;
401
371
currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
402
372
if ( parents . length > 0 && ( parents [ stack - 1 ] != parent_node ) ) {
@@ -410,23 +380,21 @@ class ComponentCascadeDot {
410
380
} ) ;
411
381
}
412
382
413
- selectToChildren ( stack , nodes , end_node ) {
383
+ selectToChildren ( stack , nodes ) {
414
384
if ( stack > ( this . dimensional_data . length - 1 ) ) return ;
415
385
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
416
386
let children = [ ] ;
417
- currentStackDocuments . forEach ( ( D ) => {
418
- if ( end_node ) {
387
+ currentStackDocuments . forEach ( ( D , index ) => {
388
+ if ( nodes === null ) {
419
389
D . classList . add ( 'dlp-label-silence' ) ;
420
390
return ;
421
391
}
422
- if ( nodes . indexOf ( parseInt ( D . getAttribute ( 'data-id' ) ) ) != - 1 ) {
392
+ if ( nodes . indexOf ( parseInt ( D . getAttribute ( 'data-id' ) ) ) !== - 1 ) {
423
393
D . classList . remove ( 'dlp-label-silence' ) ;
424
- let child = JSON . parse ( D . getAttribute ( 'data- nodes-id' ) ) ;
394
+ let child = this . dimensional_data [ stack ] [ index ] . nodes ;
425
395
if ( Array . isArray ( child ) ) {
426
396
child . forEach ( ( c ) => {
427
- if ( children . indexOf ( child ) == - 1 ) {
428
- children . push ( c ) ;
429
- }
397
+ if ( children . indexOf ( child ) === - 1 ) children . push ( c ) ;
430
398
} ) ;
431
399
}
432
400
} else {
0 commit comments