@kcuf/helper-data 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -9,17 +9,14 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
9
9
|
/**
|
|
10
10
|
* 将平铺的数据转成树节点列表
|
|
11
11
|
*/
|
|
12
|
-
function normalizeTreeList(list) {
|
|
12
|
+
function normalizeTreeList(list, filter) {
|
|
13
13
|
var nodeMap = new Map();
|
|
14
|
-
var
|
|
14
|
+
var listClone = list.map(function (v) {
|
|
15
15
|
var treeItem = (0, _objectSpread2.default)({}, v);
|
|
16
16
|
nodeMap.set(treeItem.id, treeItem);
|
|
17
17
|
return treeItem;
|
|
18
18
|
});
|
|
19
19
|
function putToParent(o) {
|
|
20
|
-
if (!o.parentId) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
20
|
var parentNode = nodeMap.get(o.parentId);
|
|
24
21
|
if (parentNode) {
|
|
25
22
|
var _parentNode$children;
|
|
@@ -29,10 +26,21 @@ function normalizeTreeList(list) {
|
|
|
29
26
|
o.parentId = ''; // wrong parent
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
listClone.forEach(function (v) {
|
|
30
|
+
if (v.parentId && (!filter || filter(v))) {
|
|
31
|
+
putToParent(v);
|
|
32
|
+
}
|
|
34
33
|
});
|
|
35
|
-
|
|
34
|
+
var treeItems = listClone.filter(function (v) {
|
|
36
35
|
return !v.parentId;
|
|
37
36
|
}); // all top-level nodes
|
|
37
|
+
|
|
38
|
+
return filter ? treeItems.filter(function (v) {
|
|
39
|
+
var _v$children;
|
|
40
|
+
// filter top-level nodes again
|
|
41
|
+
if ((_v$children = v.children) !== null && _v$children !== void 0 && _v$children.length) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return filter(v);
|
|
45
|
+
}) : treeItems;
|
|
38
46
|
}
|
|
@@ -2,17 +2,14 @@ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
|
2
2
|
/**
|
|
3
3
|
* 将平铺的数据转成树节点列表
|
|
4
4
|
*/
|
|
5
|
-
export default function normalizeTreeList(list) {
|
|
5
|
+
export default function normalizeTreeList(list, filter) {
|
|
6
6
|
var nodeMap = new Map();
|
|
7
|
-
var
|
|
7
|
+
var listClone = list.map(function (v) {
|
|
8
8
|
var treeItem = _objectSpread({}, v);
|
|
9
9
|
nodeMap.set(treeItem.id, treeItem);
|
|
10
10
|
return treeItem;
|
|
11
11
|
});
|
|
12
12
|
function putToParent(o) {
|
|
13
|
-
if (!o.parentId) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
13
|
var parentNode = nodeMap.get(o.parentId);
|
|
17
14
|
if (parentNode) {
|
|
18
15
|
var _parentNode$children;
|
|
@@ -22,11 +19,22 @@ export default function normalizeTreeList(list) {
|
|
|
22
19
|
o.parentId = ''; // wrong parent
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
listClone.forEach(function (v) {
|
|
23
|
+
if (v.parentId && (!filter || filter(v))) {
|
|
24
|
+
putToParent(v);
|
|
25
|
+
}
|
|
27
26
|
});
|
|
28
|
-
|
|
27
|
+
var treeItems = listClone.filter(function (v) {
|
|
29
28
|
return !v.parentId;
|
|
30
29
|
}); // all top-level nodes
|
|
30
|
+
|
|
31
|
+
return filter ? treeItems.filter(function (v) {
|
|
32
|
+
var _v$children;
|
|
33
|
+
// filter top-level nodes again
|
|
34
|
+
if ((_v$children = v.children) !== null && _v$children !== void 0 && _v$children.length) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return filter(v);
|
|
38
|
+
}) : treeItems;
|
|
31
39
|
}
|
|
32
40
|
//# sourceMappingURL=normalize-tree-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-tree-list.js","names":["normalizeTreeList","list","nodeMap","Map","
|
|
1
|
+
{"version":3,"file":"normalize-tree-list.js","names":["normalizeTreeList","list","filter","nodeMap","Map","listClone","map","v","treeItem","_objectSpread","set","id","putToParent","o","parentNode","get","parentId","_parentNode$children","children","push","forEach","treeItems","_v$children","length"],"sources":["../../../src/helper/normalize-tree-list.ts"],"sourcesContent":["import {\n IBaseDataId,\n IBaseDataParentId\n} from '../types';\n\ninterface IBaseItem extends IBaseDataId, IBaseDataParentId {}\n\ntype TTreeItem<T extends IBaseItem> = T & {\n children?: TTreeItem<T>[];\n};\n\n/**\n * 将平铺的数据转成树节点列表\n */\nexport default function normalizeTreeList<T extends IBaseItem>(list: T[], filter?: (o: T) => boolean): TTreeItem<T>[] {\n const nodeMap = new Map<string, TTreeItem<T>>();\n const listClone: TTreeItem<T>[] = list.map((v: T) => {\n const treeItem: TTreeItem<T> = { // shallow clone\n ...v\n };\n \n nodeMap.set(treeItem.id, treeItem);\n \n return treeItem;\n });\n \n function putToParent(o: TTreeItem<T>): void {\n const parentNode = nodeMap.get(o.parentId);\n \n if (parentNode) {\n parentNode.children ??= [];\n \n parentNode.children.push(o);\n } else {\n o.parentId = ''; // wrong parent\n }\n }\n \n listClone.forEach(v => {\n if (v.parentId && (!filter || filter(v))) {\n putToParent(v);\n }\n });\n \n const treeItems: TTreeItem<T>[] = listClone.filter(v => !v.parentId); // all top-level nodes\n \n return filter ? treeItems.filter(v => { // filter top-level nodes again\n if (v.children?.length) {\n return true;\n }\n \n return filter(v);\n }) : treeItems;\n}\n"],"mappings":";AAWA;AACA;AACA;AACA,eAAe,SAASA,iBAAiBA,CAAsBC,IAAS,EAAEC,MAA0B,EAAkB;EACpH,IAAMC,OAAO,GAAG,IAAIC,GAAG,CAAuB,CAAC;EAC/C,IAAMC,SAAyB,GAAGJ,IAAI,CAACK,GAAG,CAAC,UAACC,CAAI,EAAK;IACnD,IAAMC,QAAsB,GAAAC,aAAA,KACvBF,CAAC,CACL;IAEDJ,OAAO,CAACO,GAAG,CAACF,QAAQ,CAACG,EAAE,EAAEH,QAAQ,CAAC;IAElC,OAAOA,QAAQ;EACjB,CAAC,CAAC;EAEF,SAASI,WAAWA,CAACC,CAAe,EAAQ;IAC1C,IAAMC,UAAU,GAAGX,OAAO,CAACY,GAAG,CAACF,CAAC,CAACG,QAAQ,CAAC;IAE1C,IAAIF,UAAU,EAAE;MAAA,IAAAG,oBAAA;MACd,CAAAA,oBAAA,GAAAH,UAAU,CAACI,QAAQ,cAAAD,oBAAA,cAAAA,oBAAA,GAAnBH,UAAU,CAACI,QAAQ,GAAK,EAAE;MAE1BJ,UAAU,CAACI,QAAQ,CAACC,IAAI,CAACN,CAAC,CAAC;IAC7B,CAAC,MAAM;MACLA,CAAC,CAACG,QAAQ,GAAG,EAAE,CAAC,CAAC;IACnB;EACF;EAEAX,SAAS,CAACe,OAAO,CAAC,UAAAb,CAAC,EAAI;IACrB,IAAIA,CAAC,CAACS,QAAQ,KAAK,CAACd,MAAM,IAAIA,MAAM,CAACK,CAAC,CAAC,CAAC,EAAE;MACxCK,WAAW,CAACL,CAAC,CAAC;IAChB;EACF,CAAC,CAAC;EAEF,IAAMc,SAAyB,GAAGhB,SAAS,CAACH,MAAM,CAAC,UAAAK,CAAC;IAAA,OAAI,CAACA,CAAC,CAACS,QAAQ;EAAA,EAAC,CAAC,CAAC;;EAEtE,OAAOd,MAAM,GAAGmB,SAAS,CAACnB,MAAM,CAAC,UAAAK,CAAC,EAAI;IAAA,IAAAe,WAAA;IAAE;IACtC,KAAAA,WAAA,GAAIf,CAAC,CAACW,QAAQ,cAAAI,WAAA,eAAVA,WAAA,CAAYC,MAAM,EAAE;MACtB,OAAO,IAAI;IACb;IAEA,OAAOrB,MAAM,CAACK,CAAC,CAAC;EAClB,CAAC,CAAC,GAAGc,SAAS;AAChB","ignoreList":[]}
|
|
@@ -7,5 +7,5 @@ type TTreeItem<T extends IBaseItem> = T & {
|
|
|
7
7
|
/**
|
|
8
8
|
* 将平铺的数据转成树节点列表
|
|
9
9
|
*/
|
|
10
|
-
export default function normalizeTreeList<T extends IBaseItem>(list: T[]): TTreeItem<T>[];
|
|
10
|
+
export default function normalizeTreeList<T extends IBaseItem>(list: T[], filter?: (o: T) => boolean): TTreeItem<T>[];
|
|
11
11
|
export {};
|