|
@@ -66,7 +66,8 @@ export default class Tree {
|
|
|
const key = this.key;
|
|
|
if (!key || !node || !node.data) return;
|
|
|
|
|
|
- this.nodesMap[node.key] = node;
|
|
|
+ const nodeKey = node.key;
|
|
|
+ if (nodeKey) this.nodesMap[node.key] = node;
|
|
|
}
|
|
|
|
|
|
deregisterNode(node) {
|
|
@@ -95,13 +96,21 @@ export default class Tree {
|
|
|
return checkedNodes;
|
|
|
}
|
|
|
|
|
|
- setCheckedNodes(array) {
|
|
|
+ getCheckedKeys(leafOnly) {
|
|
|
const key = this.key;
|
|
|
- const checkedKeys = {};
|
|
|
- array.forEach((item) => {
|
|
|
- checkedKeys[(item || {})[key]] = true;
|
|
|
+ const allNodes = this._getAllNodes();
|
|
|
+ const keys = [];
|
|
|
+ allNodes.forEach((node) => {
|
|
|
+ if (!leafOnly || (leafOnly && node.isLeaf)) {
|
|
|
+ if (node.checked) {
|
|
|
+ keys.push((node.data || {})[key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
+ return keys;
|
|
|
+ }
|
|
|
|
|
|
+ _getAllNodes() {
|
|
|
const allNodes = [];
|
|
|
const nodesMap = this.nodesMap;
|
|
|
for (let nodeKey in nodesMap) {
|
|
@@ -110,9 +119,37 @@ export default class Tree {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ return allNodes;
|
|
|
+ }
|
|
|
+
|
|
|
+ _setCheckedKeys(key, leafOnly, checkedKeys) {
|
|
|
+ const allNodes = this._getAllNodes();
|
|
|
+
|
|
|
allNodes.sort((a, b) => a.level > b.level ? -1 : 1);
|
|
|
allNodes.forEach((node) => {
|
|
|
- node.setChecked(!!checkedKeys[(node.data || {})[key]], !this.checkStrictly);
|
|
|
+ if (!leafOnly || (leafOnly && node.isLeaf)) {
|
|
|
+ node.setChecked(!!checkedKeys[(node.data || {})[key]], !this.checkStrictly);
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ setCheckedNodes(array, leafOnly = true) {
|
|
|
+ const key = this.key;
|
|
|
+ const checkedKeys = {};
|
|
|
+ array.forEach((item) => {
|
|
|
+ checkedKeys[(item || {})[key]] = true;
|
|
|
+ });
|
|
|
+
|
|
|
+ this._setCheckedKeys(key, leafOnly, checkedKeys);
|
|
|
+ }
|
|
|
+
|
|
|
+ setCheckedKeys(keys, leafOnly = true) {
|
|
|
+ const key = this.key;
|
|
|
+ const checkedKeys = {};
|
|
|
+ keys.forEach((key) => {
|
|
|
+ checkedKeys[key] = true;
|
|
|
+ });
|
|
|
+
|
|
|
+ this._setCheckedKeys(key, leafOnly, checkedKeys);
|
|
|
+ }
|
|
|
};
|