Skip to content

Commit 95d3df5

Browse files
committed
1.8
1 parent 597daf7 commit 95d3df5

File tree

1 file changed

+63
-95
lines changed

1 file changed

+63
-95
lines changed

resources/assets/component.js

Lines changed: 63 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -234,46 +234,34 @@ class ComponentCascadeDot {
234234
let data = this.dimensional_data[stack];
235235
let stackDom = document.createElement('div');
236236
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+
}
238244
let div = document.createElement('div');
239245
div.className = 'dlp dlp-text dlp-label';
240246
div.textContent = v.val;
241247
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);
251249
div.addEventListener('click', this.select.bind(this, div, stack));
252250
stackDom.append(div);
253251
/*selected append*/
254252
let index = this.selected_data.indexOf(parseInt(v.key));
255-
if (allow_select == false && index !== -1) {
253+
if (v.checked !== false && index !== -1) {
256254
this.selected_data.splice(index, 1);
257255
this.select_data = this.selected_data.slice(0);
258256
return;
259257
}
260258
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;
273260
}
274261
});
275262
this.CONTENT_DOM.append(stackDom);
276263
}
264+
console.log(this.dimensional_data)
277265
this.STACKS = this.CONTENT_DOM.childNodes;
278266
return this;
279267
}
@@ -295,97 +283,79 @@ class ComponentCascadeDot {
295283
} else {
296284
this.dimensional_data[dimension].push(data);
297285
}
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) {
299287
return;
300288
}
301289
dimension++;
302290
this.makeDimensional(data.nodes, dimension, parentNodes);
303291
}
304292

305293
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];
330297
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'));
343311
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+
}
358324
}
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);
359334
}
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]);
367338
}
368-
});
339+
}
369340
}
370341

371342
selectToSelected(element, stack) {
372343
let div = document.createElement('div');
373344
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'));
376346
div.setAttribute('stack', stack);
377347
div.textContent = element.textContent;
378348
var object = this;
379349
div.addEventListener('click', function () {
380-
object.selectInactive(stack, element, 'true', 'true');
350+
object.select(element,stack);
381351
});
382352
this.SELECTED_DOM.append(div);
383353
}
384354

385355
selectToParent(node, stack, parent_node, checked) {
386356
let currentStackDocuments = this.STACKS[stack].childNodes;
387357
currentStackDocuments.forEach((D, index) => {
388-
if (checked == 'true') {
358+
/*if (checked == 'true') {
389359
if (node == parseInt(D.getAttribute('data-id'))) {
390360
let check = false;
391361
this.STACKS[stack + 1].childNodes.forEach((D) => {
@@ -396,7 +366,7 @@ class ComponentCascadeDot {
396366
!check && D.querySelector('i') != null && D.querySelector('i').remove();
397367
}
398368
return;
399-
}
369+
}*/
400370
let parents = JSON.parse(D.getAttribute('data-parent-nodes-id'));
401371
currentStackDocuments[index].classList.remove('dlp-label-silence');
402372
if (parents.length > 0 && (parents[stack - 1] != parent_node)) {
@@ -410,23 +380,21 @@ class ComponentCascadeDot {
410380
});
411381
}
412382

413-
selectToChildren(stack, nodes, end_node) {
383+
selectToChildren(stack, nodes) {
414384
if (stack > (this.dimensional_data.length - 1)) return;
415385
let currentStackDocuments = this.STACKS[stack].childNodes;
416386
let children = [];
417-
currentStackDocuments.forEach((D) => {
418-
if (end_node) {
387+
currentStackDocuments.forEach((D,index) => {
388+
if(nodes===null){
419389
D.classList.add('dlp-label-silence');
420390
return;
421391
}
422-
if (nodes.indexOf(parseInt(D.getAttribute('data-id'))) != -1) {
392+
if (nodes.indexOf(parseInt(D.getAttribute('data-id'))) !== -1) {
423393
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;
425395
if (Array.isArray(child)) {
426396
child.forEach((c) => {
427-
if (children.indexOf(child) == -1) {
428-
children.push(c);
429-
}
397+
if (children.indexOf(child) === -1) children.push(c);
430398
});
431399
}
432400
} else {

0 commit comments

Comments
 (0)