@omegagrid/tree 0.10.2 → 0.10.5
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/dist/adapters/dateAdapter.d.ts +35 -0
- package/dist/adapters/dateAdapter.d.ts.map +1 -0
- package/dist/adapters/dateAdapter.js +222 -0
- package/dist/adapters/dateAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/constants.d.ts +53 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/model/filterModel.d.ts +17 -0
- package/dist/model/filterModel.d.ts.map +1 -0
- package/dist/model/filterModel.js +60 -0
- package/dist/model/filterModel.js.map +1 -0
- package/dist/model/index.d.ts +5 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +5 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/nodeModel.d.ts +100 -0
- package/dist/model/nodeModel.d.ts.map +1 -0
- package/dist/model/nodeModel.js +59 -0
- package/dist/model/nodeModel.js.map +1 -0
- package/dist/model/selectionModel.d.ts +39 -0
- package/dist/model/selectionModel.d.ts.map +1 -0
- package/dist/model/selectionModel.js +199 -0
- package/dist/model/selectionModel.js.map +1 -0
- package/dist/model/treeAdapter.d.ts +10 -0
- package/dist/model/treeAdapter.d.ts.map +1 -0
- package/dist/model/treeAdapter.js +10 -0
- package/dist/model/treeAdapter.js.map +1 -0
- package/dist/model/treeModel.d.ts +27 -0
- package/dist/model/treeModel.d.ts.map +1 -0
- package/dist/model/treeModel.js +97 -0
- package/dist/model/treeModel.js.map +1 -0
- package/dist/options.d.ts +35 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +30 -0
- package/dist/options.js.map +1 -0
- package/dist/types.d.ts +42 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/dropdown.d.ts +68 -0
- package/dist/ui/dropdown.d.ts.map +1 -0
- package/dist/ui/dropdown.js +383 -0
- package/dist/ui/dropdown.js.map +1 -0
- package/dist/ui/dropdown.style.d.ts +2 -0
- package/dist/ui/dropdown.style.d.ts.map +1 -0
- package/dist/ui/dropdown.style.js +68 -0
- package/dist/ui/dropdown.style.js.map +1 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/levels.d.ts +13 -0
- package/dist/ui/levels.d.ts.map +1 -0
- package/dist/ui/levels.js +64 -0
- package/dist/ui/levels.js.map +1 -0
- package/dist/ui/menu.d.ts +14 -0
- package/dist/ui/menu.d.ts.map +1 -0
- package/dist/ui/menu.js +89 -0
- package/dist/ui/menu.js.map +1 -0
- package/dist/ui/search.d.ts +18 -0
- package/dist/ui/search.d.ts.map +1 -0
- package/dist/ui/search.js +92 -0
- package/dist/ui/search.js.map +1 -0
- package/dist/ui/tree.d.ts +86 -0
- package/dist/ui/tree.d.ts.map +1 -0
- package/dist/ui/tree.js +482 -0
- package/dist/ui/tree.js.map +1 -0
- package/dist/ui/tree.renderer.d.ts +7 -0
- package/dist/ui/tree.renderer.d.ts.map +1 -0
- package/dist/ui/tree.renderer.js +114 -0
- package/dist/ui/tree.renderer.js.map +1 -0
- package/dist/ui/tree.style.d.ts +3 -0
- package/dist/ui/tree.style.d.ts.map +1 -0
- package/dist/ui/tree.style.js +147 -0
- package/dist/ui/tree.style.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable no-prototype-builtins */
|
|
2
|
+
import { tree } from '@omegagrid/core';
|
|
3
|
+
export class NodeModel extends tree.TreeNodeMixin() {
|
|
4
|
+
get type() { return this._type; }
|
|
5
|
+
set type(v) { this._type = v; }
|
|
6
|
+
get checkbox() { return this._checkbox; }
|
|
7
|
+
set checkbox(v) { this._checkbox = v; }
|
|
8
|
+
get key() { return this._key; }
|
|
9
|
+
set key(v) { this._key = v; }
|
|
10
|
+
get value() { return this._value; }
|
|
11
|
+
set value(v) { this._value = v; }
|
|
12
|
+
get htmlValue() { return this._htmlValue; }
|
|
13
|
+
set htmlValue(v) { this._htmlValue = v; }
|
|
14
|
+
get icon() { return this._icon; }
|
|
15
|
+
set icon(v) { this._icon = v; }
|
|
16
|
+
get folder() { return this._folder; }
|
|
17
|
+
set folder(v) { this._folder = v; }
|
|
18
|
+
get renderer() { return this._renderer || this.model.options.nodeRenderer; }
|
|
19
|
+
set renderer(v) { this._renderer = v; }
|
|
20
|
+
get properties() { return this._properties; }
|
|
21
|
+
set properties(v) { this._properties = v; }
|
|
22
|
+
constructor(model, source) {
|
|
23
|
+
super();
|
|
24
|
+
this.model = model;
|
|
25
|
+
this.subLevels = null;
|
|
26
|
+
this._checkbox = null;
|
|
27
|
+
this.populate(source);
|
|
28
|
+
}
|
|
29
|
+
populate(source) {
|
|
30
|
+
super.populate(source);
|
|
31
|
+
this.key = source.hasOwnProperty('key') ? source.key : source.k;
|
|
32
|
+
this.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();
|
|
33
|
+
this.type = source.t;
|
|
34
|
+
this.icon = source.icon;
|
|
35
|
+
this.folder = source.folder;
|
|
36
|
+
this.checkbox = source.ch ?? null;
|
|
37
|
+
this.renderer = source.renderer;
|
|
38
|
+
this._properties = source.props;
|
|
39
|
+
}
|
|
40
|
+
getSourceData() {
|
|
41
|
+
const data = super.getSourceData();
|
|
42
|
+
if (this.key)
|
|
43
|
+
data.k = this.key;
|
|
44
|
+
if (this.value)
|
|
45
|
+
data.v = this.value;
|
|
46
|
+
if (this.type)
|
|
47
|
+
data.t = this.type;
|
|
48
|
+
if (this.icon)
|
|
49
|
+
data.icon = this.icon;
|
|
50
|
+
if (this.folder)
|
|
51
|
+
data.folder = this.folder;
|
|
52
|
+
if (this.checkbox != null)
|
|
53
|
+
data.ch = this.checkbox;
|
|
54
|
+
if (this.properties)
|
|
55
|
+
data.props = this.properties;
|
|
56
|
+
return data;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=nodeModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeModel.js","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-prototype-builtins */\n\nimport { CustomProperties, IconSpec, tree } from '@omegagrid/core';\nimport { FolderOptions, TreeNodeRenderer } from '../types';\nimport { TreeModel } from './treeModel';\n\nexport type NodeSource = {\n\tk?: string,\n\tv?: string,\n\tkey?: string,\n\tvalue?: string,\n\tt?: string,\n\ts?: boolean,\n\tch?: boolean,\n\ticon?: IconSpec|string,\n\tfolder?: FolderOptions,\n\tprops?: CustomProperties,\n\trenderer?: TreeNodeRenderer\n} & tree.TreeNodeSource;\n\nexport class NodeModel extends tree.TreeNodeMixin() {\n\tpublic subLevels: number = null;\n\t\n\tprivate _type: string;\n\tget type(): string { return this._type }\n\tset type(v: string) { this._type = v }\n\t\n\tprivate _checkbox: boolean = null;\n\tget checkbox(): boolean { return this._checkbox }\n\tset checkbox(v: boolean) { this._checkbox = v }\n\t\n\tprivate _key: string;\n\tget key(): string { return this._key }\n\tprivate set key(v: string) { this._key = v }\n\t\n\tprivate _value: string;\n\tget value(): string { return this._value }\n\tset value(v: string) { this._value = v}\n\t\n\tprivate _htmlValue: string;\n\tget htmlValue() { return this._htmlValue }\n\tset htmlValue(v: string) { this._htmlValue = v }\n\n\tprivate _icon: IconSpec|string;\n\tget icon(): IconSpec|string { return this._icon }\n\tset icon(v: IconSpec|string) { this._icon = v }\n\n\tprivate _folder: FolderOptions;\n\tget folder(): FolderOptions { return this._folder }\n\tset folder(v: FolderOptions) { this._folder = v }\n\n\tprivate _renderer: TreeNodeRenderer;\n\tget renderer(): TreeNodeRenderer { return this._renderer || this.model.options.nodeRenderer }\n\tset renderer(v: TreeNodeRenderer) { this._renderer = v }\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tconstructor(public model: TreeModel, source: NodeSource) {\n\t\tsuper();\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: NodeSource) {\n\t\tsuper.populate(source);\n\t\tthis.key = source.hasOwnProperty('key') ? source.key : source.k;\n\t\tthis.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();\n\t\tthis.type = source.t;\n\t\tthis.icon = source.icon;\n\t\tthis.folder = source.folder;\n\t\tthis.checkbox = source.ch ?? null;\n\t\tthis.renderer = source.renderer;\n\t\tthis._properties = source.props;\n\t}\n\n\tgetSourceData() {\n\t\tconst data = super.getSourceData() as NodeSource;\n\t\tif (this.key) data.k = this.key;\n\t\tif (this.value) data.v = this.value;\n\t\tif (this.type) data.t = this.type;\n\t\tif (this.icon) data.icon = this.icon;\n\t\tif (this.folder) data.folder = this.folder;\n\t\tif (this.checkbox != null) data.ch = this.checkbox;\n\t\tif (this.properties) data.props = this.properties;\n\t\treturn data;\n\t}\n\n}"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NodeModel, NodeSource } from "./nodeModel";
|
|
2
|
+
import { Options } from "../options";
|
|
3
|
+
import { TreeModel } from ".";
|
|
4
|
+
export declare enum NodeSelectionStatus {
|
|
5
|
+
None = 0,
|
|
6
|
+
Checked = 1,
|
|
7
|
+
CheckedByParent = 2,
|
|
8
|
+
Unchecked = 3
|
|
9
|
+
}
|
|
10
|
+
export type SerializedValue = [string, number?, (0 | 1)?, Partial<NodeSource>?];
|
|
11
|
+
export declare function normalizeSerializedValues(data: (string | number | SerializedValue)[]): SerializedValue[];
|
|
12
|
+
export type SelectedItemParams = {
|
|
13
|
+
levels: Map<number, boolean>;
|
|
14
|
+
value?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare class TreeSelectionModel {
|
|
17
|
+
options: Options;
|
|
18
|
+
items: Map<string, SelectedItemParams>;
|
|
19
|
+
model: TreeModel;
|
|
20
|
+
get count(): number;
|
|
21
|
+
constructor(options: Options, sourceData?: SerializedValue[]);
|
|
22
|
+
ensureItem(key: string, value?: string): SelectedItemParams;
|
|
23
|
+
setItems(items: SerializedValue[]): void;
|
|
24
|
+
populate(sourceData: SerializedValue[]): void;
|
|
25
|
+
getPropertySerializer(serializedProps?: (keyof NodeSource)[]): (nodeKey: string, params: SelectedItemParams) => Record<string, unknown>;
|
|
26
|
+
serialize(serializedProps?: (keyof NodeSource)[]): SerializedValue[];
|
|
27
|
+
clear(): void;
|
|
28
|
+
validateChange(node: NodeModel, level: number, value: boolean): boolean;
|
|
29
|
+
toggle(node: NodeModel, level: number): this;
|
|
30
|
+
select(node: NodeModel, level: number, value?: boolean | null): this;
|
|
31
|
+
deselect(node: NodeModel, level: number): this;
|
|
32
|
+
clearItemSelection(node: NodeModel): void;
|
|
33
|
+
getLevelSelection(node: NodeModel): Map<number, boolean>;
|
|
34
|
+
getValue(node: NodeModel, level: number, defaultValue?: boolean): boolean;
|
|
35
|
+
isSelectedByParent(node: NodeModel): boolean;
|
|
36
|
+
getSelectionStatus(node: NodeModel): NodeSelectionStatus;
|
|
37
|
+
toggleChildNodes(node: NodeModel, level: number): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=selectionModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionModel.d.ts","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAK9B,oBAAY,mBAAmB;IAC9B,IAAI,IAAI;IACR,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,SAAS,IAAI;CACb;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,eAAe,CAAC,EAAE,qBAKhF;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAEF,qBAAa,kBAAkB;IASX,OAAO,EAAE,OAAO;IAPnC,KAAK,kCAAyC;IAC9C,KAAK,EAAE,SAAS,CAAC;IAEjB,IAAI,KAAK,WAER;gBAEkB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE;IAMnE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAOtC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE;IAWtC,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE,IACnD,SAAS,MAAM,EAAE,QAAQ,kBAAkB;IAUpD,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE;IAahD,KAAK;IAIL,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAS7D,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAmCrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAC,IAAW;IAgBjE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAIlC,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAMjC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc;IAOrE,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAYlC,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB;IAaxD,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;CAgB/C"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { SelectMode } from "../types";
|
|
2
|
+
const getMapValue = (map, key, defaultValue = null) => map.has(key) ? map.get(key) : defaultValue;
|
|
3
|
+
export var NodeSelectionStatus;
|
|
4
|
+
(function (NodeSelectionStatus) {
|
|
5
|
+
NodeSelectionStatus[NodeSelectionStatus["None"] = 0] = "None";
|
|
6
|
+
NodeSelectionStatus[NodeSelectionStatus["Checked"] = 1] = "Checked";
|
|
7
|
+
NodeSelectionStatus[NodeSelectionStatus["CheckedByParent"] = 2] = "CheckedByParent";
|
|
8
|
+
NodeSelectionStatus[NodeSelectionStatus["Unchecked"] = 3] = "Unchecked";
|
|
9
|
+
})(NodeSelectionStatus || (NodeSelectionStatus = {}));
|
|
10
|
+
export function normalizeSerializedValues(data) {
|
|
11
|
+
return data.map(item => {
|
|
12
|
+
if (Array.isArray(item))
|
|
13
|
+
return item;
|
|
14
|
+
return [item.toString(), 0, 1];
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export class TreeSelectionModel {
|
|
18
|
+
get count() {
|
|
19
|
+
return this.items.size;
|
|
20
|
+
}
|
|
21
|
+
constructor(options, sourceData) {
|
|
22
|
+
this.options = options;
|
|
23
|
+
this.items = new Map();
|
|
24
|
+
if (sourceData) {
|
|
25
|
+
this.populate(sourceData);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ensureItem(key, value) {
|
|
29
|
+
if (!this.items.has(key))
|
|
30
|
+
this.items.set(key, { levels: new Map() });
|
|
31
|
+
const item = this.items.get(key);
|
|
32
|
+
if (value != null)
|
|
33
|
+
item.value = value;
|
|
34
|
+
return item;
|
|
35
|
+
}
|
|
36
|
+
setItems(items) {
|
|
37
|
+
this.populate(items ?? []);
|
|
38
|
+
}
|
|
39
|
+
populate(sourceData) {
|
|
40
|
+
const oldItems = this.items;
|
|
41
|
+
this.items = new Map();
|
|
42
|
+
sourceData.forEach(sourceItem => {
|
|
43
|
+
const value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;
|
|
44
|
+
const item = this.ensureItem(sourceItem[0], value);
|
|
45
|
+
item.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);
|
|
46
|
+
if (sourceItem[3])
|
|
47
|
+
Object.assign(item, sourceItem[3]);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
getPropertySerializer(serializedProps) {
|
|
51
|
+
return (nodeKey, params) => serializedProps.reduce((acc, key) => {
|
|
52
|
+
if (key == 'v' || key == 'value') {
|
|
53
|
+
acc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
acc[key] = this.model?.nodeMap.get(nodeKey)?.value;
|
|
57
|
+
}
|
|
58
|
+
return acc;
|
|
59
|
+
}, {});
|
|
60
|
+
}
|
|
61
|
+
serialize(serializedProps) {
|
|
62
|
+
const items = [];
|
|
63
|
+
const propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;
|
|
64
|
+
this.items.forEach((item, key) => {
|
|
65
|
+
const props = propertySerializer ? propertySerializer(key, item) : null;
|
|
66
|
+
item.levels.forEach((value, level) => items.push(props
|
|
67
|
+
? [key, level, value ? 1 : 0, props]
|
|
68
|
+
: [key, level, value ? 1 : 0]));
|
|
69
|
+
});
|
|
70
|
+
return items;
|
|
71
|
+
}
|
|
72
|
+
clear() {
|
|
73
|
+
this.items.clear();
|
|
74
|
+
}
|
|
75
|
+
validateChange(node, level, value) {
|
|
76
|
+
if (this.options.selectMode == SelectMode.Single) {
|
|
77
|
+
if (value === false && this.items.size == 1) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
toggle(node, level) {
|
|
84
|
+
let item = this.ensureItem(node.key, node.value);
|
|
85
|
+
const currentValue = item.levels.has(level) ? item.levels.get(level) : null;
|
|
86
|
+
if (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true))
|
|
87
|
+
return this;
|
|
88
|
+
if (currentValue) {
|
|
89
|
+
item.levels.delete(level);
|
|
90
|
+
}
|
|
91
|
+
else if (this.options.selectMode == SelectMode.MultipleLevels) {
|
|
92
|
+
if (level == 0 && this.isSelectedByParent(node)) {
|
|
93
|
+
if (currentValue === false) {
|
|
94
|
+
item.levels.delete(0);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
item.levels.set(0, false);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
item.levels.set(level, true);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
if (this.options.selectMode == SelectMode.Single) {
|
|
106
|
+
this.clear();
|
|
107
|
+
item = this.ensureItem(node.key, node.value);
|
|
108
|
+
}
|
|
109
|
+
if (level == 0) {
|
|
110
|
+
item.levels.set(0, true);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.toggleChildNodes(node, level);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (item.levels.size == 0)
|
|
117
|
+
this.clearItemSelection(node);
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
select(node, level, value = true) {
|
|
121
|
+
const item = this.ensureItem(node.key, node.value);
|
|
122
|
+
if (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value))
|
|
123
|
+
return this;
|
|
124
|
+
if (value === true) {
|
|
125
|
+
item.levels.set(level, true);
|
|
126
|
+
}
|
|
127
|
+
else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {
|
|
128
|
+
item.levels.set(level, false);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
item.levels.delete(level);
|
|
132
|
+
}
|
|
133
|
+
if (item.levels.size == 0)
|
|
134
|
+
this.clearItemSelection(node);
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
deselect(node, level) {
|
|
138
|
+
if (!this.validateChange(node, level, false))
|
|
139
|
+
return this;
|
|
140
|
+
if (this.items.has(node.key)) {
|
|
141
|
+
this.items.get(node.key).levels.delete(level);
|
|
142
|
+
if (this.items.get(node.key).levels.size == 0)
|
|
143
|
+
this.clearItemSelection(node);
|
|
144
|
+
}
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
clearItemSelection(node) {
|
|
148
|
+
this.items.delete(node.key);
|
|
149
|
+
}
|
|
150
|
+
getLevelSelection(node) {
|
|
151
|
+
return this.items.has(node.key)
|
|
152
|
+
? this.items.get(node.key).levels
|
|
153
|
+
: new Map();
|
|
154
|
+
}
|
|
155
|
+
getValue(node, level, defaultValue = null) {
|
|
156
|
+
if (this.items.has(node.key)) {
|
|
157
|
+
return getMapValue(this.items.get(node.key).levels, level, defaultValue);
|
|
158
|
+
}
|
|
159
|
+
return defaultValue;
|
|
160
|
+
}
|
|
161
|
+
isSelectedByParent(node) {
|
|
162
|
+
let parent = node.parent;
|
|
163
|
+
let levelSpan = 0;
|
|
164
|
+
while (parent) {
|
|
165
|
+
if (this.getValue(parent, ++levelSpan, false)) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
parent = parent.parent;
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
getSelectionStatus(node) {
|
|
173
|
+
const value = this.getValue(node, 0, null);
|
|
174
|
+
if (value === true) {
|
|
175
|
+
return NodeSelectionStatus.Checked;
|
|
176
|
+
}
|
|
177
|
+
else if (value === false) {
|
|
178
|
+
return NodeSelectionStatus.Unchecked;
|
|
179
|
+
}
|
|
180
|
+
else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {
|
|
181
|
+
return NodeSelectionStatus.CheckedByParent;
|
|
182
|
+
}
|
|
183
|
+
return NodeSelectionStatus.None;
|
|
184
|
+
}
|
|
185
|
+
toggleChildNodes(node, level) {
|
|
186
|
+
const parentLevel = node.level;
|
|
187
|
+
let value = null;
|
|
188
|
+
node.walk((n) => {
|
|
189
|
+
if (n.level - parentLevel == level) {
|
|
190
|
+
if (value === null) {
|
|
191
|
+
value = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;
|
|
192
|
+
}
|
|
193
|
+
this.select(n, 0, value ? true : null);
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=selectionModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionModel.js","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { SelectMode } from \"../types\";\nimport { TreeModel } from \".\";\n\nconst getMapValue = <TKey, TValue>(map: Map<TKey, TValue>, key: TKey, defaultValue: TValue = null) =>\n\tmap.has(key) ? map.get(key) : defaultValue;\n\nexport enum NodeSelectionStatus {\n\tNone = 0,\n\tChecked = 1,\n\tCheckedByParent = 2,\n\tUnchecked = 3\n}\n\nexport type SerializedValue = [string, number?, (0|1)?, Partial<NodeSource>?];\n\nexport function normalizeSerializedValues(data: (string|number|SerializedValue)[]) {\n\treturn data.map<SerializedValue>(item => {\n\t\tif (Array.isArray(item)) return item;\n\t\treturn [item.toString(), 0, 1];\n\t});\n}\n\nexport type SelectedItemParams = {\n\tlevels: Map<number, boolean>,\n\tvalue?: string\n};\n\nexport class TreeSelectionModel {\n\n\titems = new Map<string, SelectedItemParams>();\n\tmodel: TreeModel;\n\n\tget count() {\n\t\treturn this.items.size;\n\t}\n\n\tconstructor(public options: Options, sourceData?: SerializedValue[]) {\n\t\tif (sourceData) {\n\t\t\tthis.populate(sourceData);\n\t\t}\n\t}\n\n\tensureItem(key: string, value?: string) {\n\t\tif (!this.items.has(key)) this.items.set(key, {levels: new Map<number, boolean>()});\n\t\tconst item = this.items.get(key);\n\t\tif (value != null) item.value = value;\n\t\treturn item;\t\n\t}\n\n\tsetItems(items: SerializedValue[]) {\n\t\tthis.populate(items ?? []);\n\t}\n\n\tpopulate(sourceData: SerializedValue[]) {\n\t\tconst oldItems = this.items;\n\t\tthis.items = new Map();\n\t\tsourceData.forEach(sourceItem => {\n\t\t\tconst value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;\n\t\t\tconst item = this.ensureItem(sourceItem[0], value);\n\t\t\titem.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);\n\t\t\tif (sourceItem[3]) Object.assign(item, sourceItem[3]);\n\t\t});\n\t}\n\n\tgetPropertySerializer(serializedProps?: (keyof NodeSource)[]) {\n\t\treturn (nodeKey: string, params: SelectedItemParams) => serializedProps.reduce((acc, key) => {\n\t\t\tif (key == 'v' || key == 'value') {\n\t\t\t\tacc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t} else {\n\t\t\t\tacc[key] = this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} as Record<string, unknown>);\n\t}\n\n\tserialize(serializedProps?: (keyof NodeSource)[]) {\n\t\tconst items: SerializedValue[] = [];\n\t\tconst propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;\n\t\tthis.items.forEach((item, key) => {\n\t\t\tconst props = propertySerializer ? propertySerializer(key, item) : null;\n\t\t\titem.levels.forEach((value, level) => items.push(props \n\t\t\t\t? [key, level, value ? 1 : 0, props] \n\t\t\t\t: [key, level, value ? 1 : 0]\n\t\t\t));\n\t\t});\n\t\treturn items;\n\t}\n\n\tclear() {\n\t\tthis.items.clear();\n\t}\n\n\tvalidateChange(node: NodeModel, level: number, value: boolean) {\n\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\tif (value === false && this.items.size == 1) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\ttoggle(node: NodeModel, level: number) {\n\t\tlet item = this.ensureItem(node.key, node.value);\n\t\tconst currentValue = item.levels.has(level) ? item.levels.get(level) : null;\n\t\t\n\t\tif (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true)) return this;\n\n\t\tif (currentValue) {\n\t\t\titem.levels.delete(level);\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\tif (level == 0 && this.isSelectedByParent(node)) {\n\t\t\t\tif (currentValue === false) {\n\t\t\t\t\titem.levels.delete(0);\n\t\t\t\t} else {\n\t\t\t\t\titem.levels.set(0, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem.levels.set(level, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\t\tthis.clear();\n\t\t\t\titem = this.ensureItem(node.key, node.value);\n\t\t\t}\n\n\t\t\tif (level == 0) {\n\t\t\t\titem.levels.set(0, true);\n\t\t\t} else {\n\t\t\t\tthis.toggleChildNodes(node, level);\n\t\t\t}\n\t\t}\n\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\t\n\tselect(node: NodeModel, level: number, value: boolean|null = true) {\n\t\tconst item = this.ensureItem(node.key, node.value);\n\n\t\tif (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value)) return this;\n\n\t\tif (value === true) {\n\t\t\titem.levels.set(level, true);\n\t\t} else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\titem.levels.set(level, false);\n\t\t} else {\n\t\t\titem.levels.delete(level);\n\t\t}\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\n\tdeselect(node: NodeModel, level: number) {\n\t\tif (!this.validateChange(node, level, false)) return this;\n\n\t\tif (this.items.has(node.key)) {\n\t\t\tthis.items.get(node.key).levels.delete(level);\n\t\t\tif (this.items.get(node.key).levels.size == 0) this.clearItemSelection(node);\n\t\t}\n\t\treturn this;\n\t}\n\t\n\tclearItemSelection(node: NodeModel) {\n\t\tthis.items.delete(node.key);\n\t}\n\n\tgetLevelSelection(node: NodeModel) {\n\t\treturn this.items.has(node.key)\n\t\t\t? this.items.get(node.key).levels\n\t\t\t: new Map<number, boolean>()\n\t}\n\n\tgetValue(node: NodeModel, level: number, defaultValue: boolean = null) {\n\t\tif (this.items.has(node.key)) {\n\t\t\treturn getMapValue(this.items.get(node.key).levels, level, defaultValue);\n\t\t}\n\t\treturn defaultValue;\n\t}\n\n\tisSelectedByParent(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\tlet levelSpan = 0;\n\t\twhile (parent) {\n\t\t\tif (this.getValue(parent, ++levelSpan, false)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetSelectionStatus(node: NodeModel): NodeSelectionStatus {\n\t\tconst value = this.getValue(node, 0, null);\n\n\t\tif (value === true) {\n\t\t\treturn NodeSelectionStatus.Checked;\n\t\t} else if (value === false) {\n\t\t\treturn NodeSelectionStatus.Unchecked;\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {\n\t\t\treturn NodeSelectionStatus.CheckedByParent;\n\t\t}\n\t\treturn NodeSelectionStatus.None;\n\t}\n\n\ttoggleChildNodes(node: NodeModel, level: number) {\n\t\tconst parentLevel = node.level;\n\t\tlet value: boolean = null;\n\n\t\tnode.walk((n: NodeModel) => {\n\t\t\tif (n.level - parentLevel == level) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tvalue = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.select(n, 0, value ? true : null)\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n}"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Options } from '../options';
|
|
2
|
+
import { TreeSource } from './treeModel';
|
|
3
|
+
import { ComponentAdapter } from '@omegagrid/core';
|
|
4
|
+
import { Tree } from '../ui';
|
|
5
|
+
import { TreeAdapterParams } from '../types';
|
|
6
|
+
export declare abstract class TreeAdapter extends ComponentAdapter<Tree> {
|
|
7
|
+
abstract getTree(params?: TreeAdapterParams): TreeSource | Promise<TreeSource>;
|
|
8
|
+
getOptions(): Partial<Options> | Promise<Partial<Options>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=treeAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeAdapter.d.ts","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,8BAAsB,WAAY,SAAQ,gBAAgB,CAAC,IAAI,CAAC;IAE/D,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC;IAM5E,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAIxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentAdapter } from '@omegagrid/core';
|
|
2
|
+
export class TreeAdapter extends ComponentAdapter {
|
|
3
|
+
// getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {
|
|
4
|
+
// return [];
|
|
5
|
+
// }
|
|
6
|
+
getOptions() {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=treeAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeAdapter.js","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,OAAgB,WAAY,SAAQ,gBAAsB;IAI/D,kEAAkE;IAClE,cAAc;IACd,IAAI;IAEJ,UAAU;QACT,OAAO,IAAI,CAAC;IACb,CAAC;CAED","sourcesContent":["import { Options } from '../options';\nimport { TreeSource } from './treeModel';\nimport { ComponentAdapter } from '@omegagrid/core';\nimport { Tree } from '../ui';\nimport { TreeAdapterParams } from '../types';\n\nexport abstract class TreeAdapter extends ComponentAdapter<Tree> {\n\n\tabstract getTree(params?: TreeAdapterParams): TreeSource|Promise<TreeSource>;\n\n\t// getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {\n\t// \treturn [];\n\t// }\n\n\tgetOptions(): Partial<Options>|Promise<Partial<Options>> {\n\t\treturn null;\n\t}\n\n}"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NodeModel, NodeSource } from "./nodeModel";
|
|
2
|
+
import { Options } from "../options";
|
|
3
|
+
import { NodePlaceholder } from "../types";
|
|
4
|
+
export type TreeSource = NodeSource[];
|
|
5
|
+
export declare class TreeModel {
|
|
6
|
+
options: Options;
|
|
7
|
+
readonly nodeMap: Map<string, NodeModel>;
|
|
8
|
+
private _root;
|
|
9
|
+
private _nodes;
|
|
10
|
+
private _visibleNodes;
|
|
11
|
+
private _maxLevel;
|
|
12
|
+
get maxLevel(): number;
|
|
13
|
+
get root(): NodeModel;
|
|
14
|
+
get nodes(): NodeModel[];
|
|
15
|
+
get visibleNodes(): (NodeModel | NodePlaceholder)[];
|
|
16
|
+
getNodeByViewIndex(index: number): NodeModel | NodePlaceholder;
|
|
17
|
+
constructor(source: TreeSource, options: Options);
|
|
18
|
+
populate(source: TreeSource): void;
|
|
19
|
+
insertNodes(index: number, nodes: number | NodeModel[]): NodeModel[];
|
|
20
|
+
deleteNodes(index: number, count: number): NodeModel[];
|
|
21
|
+
calculateNodeLevels(node: NodeModel): void;
|
|
22
|
+
indexNodes(calculateSubLevels?: boolean): void;
|
|
23
|
+
indexNodesByTree(calculateSubLevels?: boolean): void;
|
|
24
|
+
indexVisibleNodes(): void;
|
|
25
|
+
getSourceData(): NodeSource[];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=treeModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeModel.d.ts","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;AAEtC,qBAAa,SAAS;IAgBkB,OAAO,EAAE,OAAO;IAdvD,SAAgB,OAAO,yBAAgC;IAEvD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,SAAS,CAAM;IAEvB,IAAI,QAAQ,WAA4B;IACxC,IAAI,IAAI,cAAwB;IAChC,IAAI,KAAK,gBAAyB;IAClC,IAAI,YAAY,oCAAgC;IAEhD,kBAAkB,CAAC,KAAK,EAAE,MAAM;gBAEpB,MAAM,EAAE,UAAU,EAAS,OAAO,EAAE,OAAO;IAIvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAS3B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAC,SAAS,EAAE;IAWpD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IASxC,mBAAmB,CAAC,IAAI,EAAE,SAAS;IAQnC,UAAU,CAAC,kBAAkB,UAAQ;IASrC,gBAAgB,CAAC,kBAAkB,UAAQ;IAe3C,iBAAiB;IAoBjB,aAAa;CAIb"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { NodeModel } from "./nodeModel";
|
|
2
|
+
import { tree } from '@omegagrid/core';
|
|
3
|
+
export class TreeModel {
|
|
4
|
+
get maxLevel() { return this._maxLevel; }
|
|
5
|
+
get root() { return this._root; }
|
|
6
|
+
get nodes() { return this._nodes; }
|
|
7
|
+
get visibleNodes() { return this._visibleNodes; }
|
|
8
|
+
getNodeByViewIndex(index) { return this.visibleNodes[index]; }
|
|
9
|
+
constructor(source, options) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
this.nodeMap = new Map();
|
|
12
|
+
this._maxLevel = -1;
|
|
13
|
+
this.populate(source);
|
|
14
|
+
}
|
|
15
|
+
populate(source) {
|
|
16
|
+
this._root = new NodeModel(this, { k: null, v: null, i: -1 });
|
|
17
|
+
this._root.level = -1;
|
|
18
|
+
this._nodes = source.map((nodeSource, i) => new NodeModel(this, { ...nodeSource, i: i }));
|
|
19
|
+
this._maxLevel = tree.buildTree(this._nodes, this._root);
|
|
20
|
+
this.indexNodes(true);
|
|
21
|
+
this.indexVisibleNodes();
|
|
22
|
+
}
|
|
23
|
+
insertNodes(index, nodes) {
|
|
24
|
+
const parent = this.nodes[index].parent;
|
|
25
|
+
const count = isNaN(nodes) ? nodes.length : nodes;
|
|
26
|
+
const newNodes = isNaN(nodes) ? nodes : (new Array(count)).fill(null).map(() => new NodeModel(this, {}));
|
|
27
|
+
this.nodes.splice(index, 0, ...newNodes);
|
|
28
|
+
if (this.maxLevel > 0)
|
|
29
|
+
parent.insertChildren(newNodes, index - (parent.index || -1) - 1);
|
|
30
|
+
this.indexNodes();
|
|
31
|
+
this.indexVisibleNodes();
|
|
32
|
+
return newNodes;
|
|
33
|
+
}
|
|
34
|
+
deleteNodes(index, count) {
|
|
35
|
+
const parent = this.nodes[index].parent;
|
|
36
|
+
const deletedNodes = this.nodes.splice(index, count);
|
|
37
|
+
parent?.deleteChildren(deletedNodes);
|
|
38
|
+
this.indexNodes(true);
|
|
39
|
+
this.indexVisibleNodes();
|
|
40
|
+
return deletedNodes;
|
|
41
|
+
}
|
|
42
|
+
calculateNodeLevels(node) {
|
|
43
|
+
let parent = node.parent;
|
|
44
|
+
while (parent) {
|
|
45
|
+
parent.subLevels = Math.max(parent.subLevels, node.level - parent.level + (node.hasChildren ? 1 : 0));
|
|
46
|
+
parent = parent.parent;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
indexNodes(calculateSubLevels = false) {
|
|
50
|
+
this.nodeMap.clear();
|
|
51
|
+
this._nodes.forEach((node, i) => {
|
|
52
|
+
node.index = i;
|
|
53
|
+
this.nodeMap.set(node.key, node);
|
|
54
|
+
if (calculateSubLevels)
|
|
55
|
+
this.calculateNodeLevels(node);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
indexNodesByTree(calculateSubLevels = false) {
|
|
59
|
+
this.nodeMap.clear();
|
|
60
|
+
this._nodes = [];
|
|
61
|
+
let n = 0;
|
|
62
|
+
this.root.walk((node) => {
|
|
63
|
+
node.index = n++;
|
|
64
|
+
node.visibleIndex = null;
|
|
65
|
+
this._nodes.push(node);
|
|
66
|
+
this.nodeMap.set(node.key, node);
|
|
67
|
+
if (calculateSubLevels)
|
|
68
|
+
this.calculateNodeLevels(node);
|
|
69
|
+
});
|
|
70
|
+
this._maxLevel = this.root.subLevels - 1;
|
|
71
|
+
this.indexVisibleNodes();
|
|
72
|
+
}
|
|
73
|
+
indexVisibleNodes() {
|
|
74
|
+
this._visibleNodes = [];
|
|
75
|
+
// perf optimization by distinguishing between paged and non-paged trees
|
|
76
|
+
const pageSize = this.options?.pageSize;
|
|
77
|
+
if (pageSize > 0) {
|
|
78
|
+
this.root.walkVisible((node) => {
|
|
79
|
+
node.visibleIndex = this._visibleNodes.length;
|
|
80
|
+
this._visibleNodes.push(node);
|
|
81
|
+
if (node.parent && node.parent.lastChild === node && node.parent.isPartialyLoaded) {
|
|
82
|
+
this._visibleNodes.push({ placeholder: true, parent: node.parent });
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.root.walkVisible((node) => {
|
|
88
|
+
node.visibleIndex = this._visibleNodes.length;
|
|
89
|
+
this._visibleNodes.push(node);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
getSourceData() {
|
|
94
|
+
return this.nodes.map(node => node.getSourceData());
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=treeModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeModel.js","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { tree } from '@omegagrid/core';\nimport { NodePlaceholder } from \"../types\";\n\nexport type TreeSource = NodeSource[];\n\nexport class TreeModel {\n\n\tpublic readonly nodeMap = new Map<string, NodeModel>();\n\n\tprivate _root: NodeModel;\n\tprivate _nodes: NodeModel[];\n\tprivate _visibleNodes: (NodeModel|NodePlaceholder)[];\n\tprivate _maxLevel = -1;\n\t\n\tget maxLevel() { return this._maxLevel }\n\tget root() { return this._root }\n\tget nodes() { return this._nodes }\n\tget visibleNodes() { return this._visibleNodes }\n\n\tgetNodeByViewIndex(index: number) { return this.visibleNodes[index] }\n\n\tconstructor(source: TreeSource, public options: Options) {\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: TreeSource) {\n\t\tthis._root = new NodeModel(this, {k: null, v: null, i: -1});\n\t\tthis._root.level = -1;\n\t\tthis._nodes = source.map((nodeSource, i) => new NodeModel(this, {...nodeSource, i: i}));\n\t\tthis._maxLevel = tree.buildTree(this._nodes, this._root);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tinsertNodes(index: number, nodes: number|NodeModel[]) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst count = isNaN(nodes as number) ? (nodes as NodeModel[]).length : nodes as number;\n\t\tconst newNodes = isNaN(nodes as number) ? (nodes as NodeModel[]) : (new Array(count)).fill(null).map(() => new NodeModel(this, {}));\n\t\tthis.nodes.splice(index, 0, ...newNodes);\n\t\tif (this.maxLevel > 0) parent.insertChildren(newNodes, index - (parent.index || -1) - 1);\n\t\tthis.indexNodes();\n\t\tthis.indexVisibleNodes();\n\t\treturn newNodes;\n\t}\n\n\tdeleteNodes(index: number, count: number) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst deletedNodes = this.nodes.splice(index, count);\n\t\tparent?.deleteChildren(deletedNodes);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t\treturn deletedNodes;\n\t}\n\n\tcalculateNodeLevels(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\twhile (parent) {\n\t\t\tparent.subLevels = Math.max(parent.subLevels, node.level - parent.level + (node.hasChildren ? 1 : 0));\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t}\n\n\tindexNodes(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes.forEach((node, i) => {\n\t\t\tnode.index = i;\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t}\n\n\tindexNodesByTree(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes = [];\n\t\tlet n = 0;\n\t\tthis.root.walk((node: NodeModel) => {\n\t\t\tnode.index = n++;\n\t\t\tnode.visibleIndex = null;\n\t\t\tthis._nodes.push(node);\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t\tthis._maxLevel = this.root.subLevels - 1;\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tindexVisibleNodes() {\n\t\tthis._visibleNodes = [];\n\t\t// perf optimization by distinguishing between paged and non-paged trees\n\t\tconst pageSize = this.options?.pageSize;\n\t\tif (pageSize > 0) {\n\t\t\tthis.root.walkVisible((node: NodeModel) => {\n\t\t\t\tnode.visibleIndex = this._visibleNodes.length;\n\t\t\t\tthis._visibleNodes.push(node);\n\t\t\t\tif (node.parent && node.parent.lastChild === node && node.parent.isPartialyLoaded) {\n\t\t\t\t\tthis._visibleNodes.push({placeholder: true, parent: node.parent} as NodePlaceholder);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.root.walkVisible((node: NodeModel) => {\n\t\t\t\tnode.visibleIndex = this._visibleNodes.length;\n\t\t\t\tthis._visibleNodes.push(node);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetSourceData() {\n\t\treturn this.nodes.map(node => node.getSourceData());\n\t}\n\n}"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CommonOptions } from "@omegagrid/core";
|
|
2
|
+
import { NodeModel } from "./model/nodeModel";
|
|
3
|
+
import { FolderOptions, ItemProperty, ItemTypeOptions, SelectMode } from "./types";
|
|
4
|
+
import { TemplateResult } from "lit-html";
|
|
5
|
+
import { CSSResultOrNative } from "lit";
|
|
6
|
+
import { SelectedItemParams } from "./model";
|
|
7
|
+
export type Options = {
|
|
8
|
+
alwaysRefresh?: boolean;
|
|
9
|
+
nodeHeight?: number;
|
|
10
|
+
renderingNodeTreshold?: number;
|
|
11
|
+
selectMode?: SelectMode | string;
|
|
12
|
+
levelIndent?: number;
|
|
13
|
+
maxLevel?: number;
|
|
14
|
+
globalLevels?: boolean;
|
|
15
|
+
levelsAlwaysVisible?: boolean;
|
|
16
|
+
checkboxes?: boolean;
|
|
17
|
+
expanders?: boolean;
|
|
18
|
+
allowEmpty?: boolean;
|
|
19
|
+
autoClose?: boolean;
|
|
20
|
+
search?: boolean;
|
|
21
|
+
fileDrop?: boolean;
|
|
22
|
+
pageSize?: number;
|
|
23
|
+
customSearch?: boolean;
|
|
24
|
+
folderOptions?: FolderOptions;
|
|
25
|
+
itemProperties?: ItemProperty[];
|
|
26
|
+
itemTypeOptions?: Record<string, ItemTypeOptions>;
|
|
27
|
+
customStyle?: CSSResultOrNative | string | (CSSResultOrNative | string)[];
|
|
28
|
+
nodeRenderer?: (div: HTMLDivElement, node: NodeModel) => string | TemplateResult<1> | void;
|
|
29
|
+
afterRenderer?: (div: HTMLDivElement, node: NodeModel) => void;
|
|
30
|
+
} & CommonOptions;
|
|
31
|
+
export type TreeDropdownOptions = Options & {
|
|
32
|
+
textRenderer?: (selectedItems: Map<string, SelectedItemParams>) => string | TemplateResult<1>;
|
|
33
|
+
};
|
|
34
|
+
export declare function initOptions(options?: Partial<Options>, origOptions?: Options): Options;
|
|
35
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,GAAC,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,iBAAiB,GAAC,MAAM,GAAC,CAAC,iBAAiB,GAAC,MAAM,CAAC,EAAE,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;IACvF,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CAC9D,GAAG,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG;IAC3C,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3F,CAAA;AAqBD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAO5F"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import constants from "./constants";
|
|
2
|
+
import { initCommonOptions } from "@omegagrid/core";
|
|
3
|
+
import { SelectMode } from "./types";
|
|
4
|
+
const DEFAULT_OPTIONS = {
|
|
5
|
+
nodeHeight: constants.DEFAULT_NODE_HEIGHT,
|
|
6
|
+
renderingNodeTreshold: constants.RENDERING_NODE_TRESHOLD,
|
|
7
|
+
selectMode: SelectMode.MultipleLevels,
|
|
8
|
+
levelIndent: 10,
|
|
9
|
+
maxLevel: null,
|
|
10
|
+
globalLevels: true,
|
|
11
|
+
levelsAlwaysVisible: true,
|
|
12
|
+
allowEmpty: true,
|
|
13
|
+
itemProperties: [],
|
|
14
|
+
itemTypeOptions: {},
|
|
15
|
+
expanders: true,
|
|
16
|
+
search: false,
|
|
17
|
+
checkboxes: true,
|
|
18
|
+
autoClose: false,
|
|
19
|
+
folderOptions: null,
|
|
20
|
+
alwaysRefresh: false
|
|
21
|
+
};
|
|
22
|
+
export function initOptions(options, origOptions = null) {
|
|
23
|
+
return {
|
|
24
|
+
...initCommonOptions(options, origOptions),
|
|
25
|
+
...DEFAULT_OPTIONS,
|
|
26
|
+
...origOptions,
|
|
27
|
+
...options,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAgD,UAAU,EAAE,MAAM,SAAS,CAAC;AAkCnF,MAAM,eAAe,GAAqB;IACzC,UAAU,EAAE,SAAS,CAAC,mBAAmB;IACzC,qBAAqB,EAAE,SAAS,CAAC,uBAAuB;IACxD,UAAU,EAAE,UAAU,CAAC,cAAc;IACrC,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,IAAI;IACzB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,EAAE;IAClB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,KAAK;CACpB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAA0B,EAAE,cAAuB,IAAI;IAClF,OAAO;QACN,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,GAAG,eAAe;QAClB,GAAG,WAAW;QACd,GAAG,OAAO;KACV,CAAC;AACH,CAAC","sourcesContent":["import constants from \"./constants\";\nimport { initCommonOptions, CommonOptions } from \"@omegagrid/core\";\nimport { NodeModel } from \"./model/nodeModel\";\nimport { FolderOptions, ItemProperty, ItemTypeOptions, SelectMode } from \"./types\";\nimport { TemplateResult } from \"lit-html\";\nimport { CSSResultOrNative } from \"lit\";\nimport { SelectedItemParams } from \"./model\";\n\nexport type Options = {\n\talwaysRefresh?: boolean,\n\tnodeHeight?: number,\n\trenderingNodeTreshold?: number,\n\tselectMode?: SelectMode|string,\n\tlevelIndent?: number,\n\tmaxLevel?: number,\n\tglobalLevels?: boolean,\n\tlevelsAlwaysVisible?: boolean,\n\tcheckboxes?: boolean,\n\texpanders?: boolean,\n\tallowEmpty?: boolean,\n\tautoClose?: boolean,\n\tsearch?: boolean,\n\tfileDrop?: boolean,\n\tpageSize?: number,\n\tcustomSearch?: boolean,\n\tfolderOptions?: FolderOptions,\n\titemProperties?: ItemProperty[],\n\titemTypeOptions?: Record<string, ItemTypeOptions>,\n\tcustomStyle?: CSSResultOrNative|string|(CSSResultOrNative|string)[],\n\tnodeRenderer?: (div: HTMLDivElement, node: NodeModel) => string|TemplateResult<1>|void,\n\tafterRenderer?: (div: HTMLDivElement, node: NodeModel) => void\n} & CommonOptions;\n\nexport type TreeDropdownOptions = Options & {\n\ttextRenderer?: (selectedItems: Map<string, SelectedItemParams>) => string|TemplateResult<1>\n}\n\nconst DEFAULT_OPTIONS: Partial<Options> = {\n\tnodeHeight: constants.DEFAULT_NODE_HEIGHT,\n\trenderingNodeTreshold: constants.RENDERING_NODE_TRESHOLD,\n\tselectMode: SelectMode.MultipleLevels,\n\tlevelIndent: 10,\n\tmaxLevel: null,\n\tglobalLevels: true,\n\tlevelsAlwaysVisible: true,\n\tallowEmpty: true,\n\titemProperties: [],\n\titemTypeOptions: {},\n\texpanders: true,\n\tsearch: false,\n\tcheckboxes: true,\n\tautoClose: false,\n\tfolderOptions: null,\n\talwaysRefresh: false\n};\n\nexport function initOptions(options?: Partial<Options>, origOptions: Options = null): Options {\n\treturn {\n\t\t...initCommonOptions(options, origOptions),\n\t\t...DEFAULT_OPTIONS,\n\t\t...origOptions,\n\t\t...options,\n\t};\n}"]}
|