Repository navigation
Expand file tree
/
Copy pathdrag-and-drop.js
More file actions
64 lines (64 loc) · 2.94 KB
/
Copy pathdrag-and-drop.js
File metadata and controls
64 lines (64 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
this.default = function () {
// Render the first TreeView by mapping its fields property with data source properties
var tree1Obj = new ej.navigations.TreeView({
fields: { dataSource: window.productTeam1, id: 'id', text: 'name', child: 'child' },
allowDragAndDrop: true,
nodeDragStop: onDragStop
});
// Render the second TreeView by mapping its fields property with data source properties
tree1Obj.appendTo('#tree1');
var tree2Obj = new ej.navigations.TreeView({
fields: { dataSource: window.productTeam2, id: 'id', text: 'name', child: 'child' },
allowDragAndDrop: true,
nodeDragStop: onDragStop
});
tree2Obj.appendTo('#tree2');
// Render the ListView with custom template
var listData = [];
var listObj = new ej.lists.ListView({
dataSource: [],
cssClass: 'custom-list',
template: '<div><span>${text}</span><span id=${iconId} class=${class}></span></div>',
});
listObj.appendTo('#list');
// Drop the dragged TreeView node into ListView
var id = 1;
function onDragStop(event) {
var targetEle = ej.base.closest(event.target, '.e-droppable');
targetEle = targetEle ? targetEle : event.target;
// Check the target as ListView or not
if (targetEle && targetEle.classList.contains('custom-list')) {
event.cancel = true;
var newData = [];
if (event.draggedNode.classList.contains('e-active')) {
var selNodes = this.selectedNodes;
for (var i = 0, len = selNodes.length; i < len; i++) {
var nodeEle = document.querySelector('[data-uid="' + selNodes[i] + '"]').querySelector('.e-list-text');
var nodeText = nodeEle.textContent;
var newNode = { id: 'l' + id, text: nodeText, class: 'custom-delete', iconId: 'i' + id };
id++;
newData.push(newNode);
}
}
else {
var text = 'text';
var nodeText1 = event.draggedNodeData[text];
var newNode1 = { id: 'l' + id, text: nodeText1, class: 'custom-delete', iconId: 'i' + id };
id++;
newData.push(newNode1);
}
// Add collection of node to ListView
listObj.addItem(newData, undefined);
}
}
// Add the custom action for delete icon in ListView
document.getElementById('list').addEventListener('mousedown', function (event) {
if (event.target.classList.contains('custom-delete')) {
var node = ej.base.closest(event.target, 'li');
listObj.removeItem(node);
}
});
document.getElementById('overlay').addEventListener('mousedown', function (event) {
document.getElementById('overlay').style.display = 'none';
});
};