Skip to content

Commit 76634c0

Browse files
author
hikki
committed
1.8
1 parent 0fb143e commit 76634c0

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

resources/assets/component.js

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,20 @@ function _componentAlert(message, time = 1, callback = function () {
7272
}
7373

7474
class ComponentDot {
75+
MODE={
76+
insert:'insert',
77+
delete:'delete'
78+
};
7579
constructor(name, selected, select) {
7680
this.name = name;
7781
this.DOM = document.getElementById(name);
82+
if(!Array.isArray(selected)){
83+
console.error('Dot param selected is not array!');
84+
return;
85+
}
7886
this.make(selected, select);
7987
this.selected_data = selected;
80-
this.select_data = this.selected_data.map((x) => x);
88+
this.select_data = selected.slice(0);
8189
this.insert_data = [];
8290
this.delete_data = [];
8391

@@ -102,7 +110,7 @@ class ComponentDot {
102110
}
103111

104112
let html = `<div class="dlp-dot" ><div class="dot-top"><input type="text" class="dlp dot-search" placeholder="搜索名称"><div id="${this.name}-select" class="dot-selected dlp-scroll">${selected_dom}</div></div><div class="dot-select dlp-scroll">${select_dom}</div></div>
105-
<input name="${this.name}[select]" value='${JSON.stringify(this.select_data)}' type="hidden"><input name="${this.name}[insert]" value="[]" type="hidden"><input name="${this.name}[delete]" value="[]" type="hidden">`;
113+
<input name="${this.name}[select]" value='${JSON.stringify(selected)}' type="hidden"><input name="${this.name}[insert]" value="[]" type="hidden"><input name="${this.name}[delete]" value="[]" type="hidden">`;
106114
this.DOM.insertAdjacentHTML('afterbegin', html);
107115
this.SELECTED_DOM = document.querySelector(`#${this.name} .dot-selected`);
108116
this.CONTENT_DOM = document.querySelector(`#${this.name} .dot-select`);
@@ -116,7 +124,7 @@ class ComponentDot {
116124
cdom.addEventListener('click', this.tagCancel.bind(this, cdom), false);
117125
this.SELECTED_DOM.appendChild(cdom);
118126
element.remove();
119-
this.tagCal(cdom, 'insert');
127+
this.tagCal(cdom, this.MODE.insert);
120128
this.SELECTED_DOM.scrollTop = this.SELECTED_DOM.scrollHeight;
121129
}
122130

@@ -125,12 +133,12 @@ class ComponentDot {
125133
cdom.addEventListener('click', this.tagSelect.bind(this, cdom), false);
126134
this.CONTENT_DOM.appendChild(cdom);
127135
element.remove();
128-
this.tagCal(cdom, 'delete');
136+
this.tagCal(cdom, this.MODE.delete);
129137
}
130138

131139
tagCal(cdom, operate) {
132-
let id = cdom.getAttribute('data-id');
133-
if (operate == 'insert') {
140+
let id = parseInt(cdom.getAttribute('data-id'));
141+
if (operate == this.MODE.insert) {
134142
if (this.select_data.indexOf(id) == -1) {
135143
this.select_data.push(id);
136144
this.selectInputDOM.value = JSON.stringify(this.select_data);
@@ -146,7 +154,7 @@ class ComponentDot {
146154
}
147155
return;
148156
}
149-
if (operate == 'delete') {
157+
if (operate == this.MODE.delete) {
150158
let index = this.select_data.indexOf(id);
151159
if (index != -1) {
152160
this.select_data.splice(index, 1);
@@ -181,14 +189,22 @@ class ComponentDot {
181189
}
182190

183191
class ComponentCascadeDot {
192+
MODE={
193+
insert:'insert',
194+
delete:'delete'
195+
};
184196
constructor(name, selected, select, options) {
185197
this.name = name;
186198
this.DOM = document.getElementById(name);
187199
this.OPTIONS = Object.assign({
188200
select_dimensional: []
189201
}, options);
190-
this.selected_data = Object.keys(selected);
191-
this.select_data = this.selected_data.map((x) => x);
202+
if(!Array.isArray(selected)){
203+
console.error('CascadeDot param selected is not array!');
204+
return;
205+
}
206+
this.selected_data = selected;
207+
this.select_data = selected.slice(0);
192208
this.insert_data = [];
193209
this.delete_data = [];
194210
this.make().makeSelect(select);
@@ -279,6 +295,7 @@ class ComponentCascadeDot {
279295
}
280296

281297
selectActive(stack,element){
298+
this.tagCal(parseInt(element.getAttribute('data-id')),this.MODE.insert);
282299
let currentStackDocuments = this.STACKS[stack].childNodes;
283300
let parentNode = JSON.parse(element.getAttribute('data-parent-nodes-id')).pop();
284301
currentStackDocuments.forEach((D, index) => {
@@ -361,7 +378,7 @@ class ComponentCascadeDot {
361378
}
362379

363380
tagCal(id, operate) {
364-
if (operate == 'insert') {
381+
if (operate == this.MODE.insert) {
365382
if (this.select_data.indexOf(id) == -1) {
366383
this.select_data.push(id);
367384
this.selectInputDOM.value = JSON.stringify(this.select_data);
@@ -377,7 +394,7 @@ class ComponentCascadeDot {
377394
}
378395
return;
379396
}
380-
if (operate == 'delete') {
397+
if (operate == this.MODE.delete) {
381398
let index = this.select_data.indexOf(id);
382399
if (index != -1) {
383400
this.select_data.splice(index, 1);

test/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
new ComponentPlane();
2525
});*/
2626

27-
new ComponentCascadeDot('test4',{1:'a',2:'b',3:'c'},
27+
new ComponentCascadeDot('test4',[1,2,3],
2828
[{'key':1,'val':'a'},
2929
{'key':2,'val':'b','nodes':[{'key':21,'val':'b1'},{'key':22,'val':'b2'},{'key':23,'val':'b3'},{'key':24,'val':'b4'}]},
3030
{'key':3,'val':'c','nodes':[{'key':31,'val':'c1'},{'key':32,'val':'c2','nodes':[]}]},

0 commit comments

Comments
 (0)