|
73 | 73 | dataSource.push(row);
|
74 | 74 | });
|
75 | 75 |
|
76 |
| - let container = $element.jquery ? $element[0] : $element; |
77 |
| - while (container.firstChild) |
78 |
| - container.removeChild(container.firstChild); |
79 |
| - |
80 |
| - let div = document.createElement('div'); |
81 |
| - let treeView = new dxTreeView(div, { |
| 76 | + let treeViewOptions = { |
82 | 77 | items: dataSource,
|
83 | 78 | dataStructure: "plain",
|
84 | 79 | parentIdExpr: "ParentID",
|
85 | 80 | keyExpr: "ID",
|
86 | 81 | displayExpr: "DisplayField",
|
87 | 82 | selectionMode: "multiple",
|
88 |
| - selectNodesRecursive: true, |
89 |
| - showCheckBoxesMode: "normal", |
90 |
| - onSelectionChanged: (e) => { |
91 |
| - let selectedNodeKeys = e.component.getSelectedNodeKeys(); |
92 |
| - let selectedRows = dataSource |
93 |
| - .filter(function (row) { return selectedNodeKeys.indexOf(row.ID) !== -1 }) |
94 |
| - .map(function (row) { |
95 |
| - return [row._customData.getUniqueValue('dimensionsBinding')[0]] |
96 |
| - }); |
97 |
| - let viewerApiExtension = this.dashboardControl.findExtension("viewer-api"); |
98 |
| - if (this.getMasterFilterMode() === 'Multiple') { |
99 |
| - if (selectedRows.length) |
100 |
| - viewerApiExtension.setMasterFilter(this.model.componentName(), selectedRows); |
101 |
| - else |
102 |
| - viewerApiExtension.clearMasterFilter(this.model.componentName()); |
| 83 | + selectNodesRecursive: false, |
| 84 | + onItemClick: e => { |
| 85 | + if (this.getMasterFilterMode() === 'Multiple' && this.allowMultiselection) { |
| 86 | + this.setMasterFilterRecursive(e.node); |
| 87 | + } |
| 88 | + else { |
| 89 | + this.setMasterFilter(e.itemData._customData); |
103 | 90 | }
|
| 91 | + }, |
| 92 | + onContentReady: e => { |
| 93 | + this.updateTreeViewSelection(); |
104 | 94 | }
|
105 |
| - }); |
106 |
| - treeView.selectAll(); |
107 |
| - container.appendChild(div); |
| 95 | + }; |
| 96 | + |
| 97 | + if (!changeExisting) { |
| 98 | + let container = $element.jquery ? $element[0] : $element; |
| 99 | + while (container.firstChild) |
| 100 | + container.removeChild(element.firstChild); |
| 101 | + let div = document.createElement('div'); |
| 102 | + container.appendChild(div); |
| 103 | + this.dxTreeViewWidget = new dxTreeView(div, treeViewOptions); |
| 104 | + } |
| 105 | + else { |
| 106 | + this.dxTreeViewWidget.option(treeViewOptions); |
| 107 | + } |
108 | 108 | };
|
109 |
| - |
| 109 | + |
| 110 | + TreeViewViewer.prototype.setSelection = function (values) { |
| 111 | + Object.getPrototypeOf(TreeViewViewer.prototype).setSelection.call(this, values); |
| 112 | + this.updateTreeViewSelection(); |
| 113 | + }; |
| 114 | + |
| 115 | + TreeViewViewer.prototype.clearSelection = function () { |
| 116 | + Object.getPrototypeOf(TreeViewViewer.prototype).clearSelection.call(this); |
| 117 | + this.updateTreeViewSelection(); |
| 118 | + }; |
| 119 | + |
| 120 | + TreeViewViewer.prototype.updateTreeViewSelection = function() { |
| 121 | + if (this.dxTreeViewWidget) { |
| 122 | + this.dxTreeViewWidget.unselectAll(); |
| 123 | + let nodes = this.dxTreeViewWidget.option('items'); |
| 124 | + |
| 125 | + nodes.forEach(item => { |
| 126 | + if (this.isSelected(item._customData)) |
| 127 | + this.dxTreeViewWidget.selectItem(item.ID); |
| 128 | + }); |
| 129 | + } |
| 130 | + } |
| 131 | + |
| 132 | + TreeViewViewer.prototype.setMasterFilterRecursive = function(node) { |
| 133 | + this.setMasterFilter(node.itemData._customData); |
| 134 | + node.children.forEach(x => this.setMasterFilterRecursive(x)); |
| 135 | + } |
| 136 | + |
110 | 137 | function TreeViewItem(dashboardControl) {
|
111 | 138 | dashboardControl.registerIcon(svgIcon);
|
112 | 139 | this.name = HIERARCIAL_TREE_VIEW_EXTENSION_NAME;
|
|
0 commit comments