@coolon/angular-ui-powerups 3.8.0 → 3.10.0
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 +14 -0
- package/assets/activities.scss +9 -0
- package/assets/styles.scss +2 -0
- package/assets/table.scss +18 -0
- package/assets/typography.scss +5 -0
- package/bundles/coolon-angular-ui-powerups.umd.js +1219 -502
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
- package/esm2015/lib/components/card-container/card-container.component.js +1 -1
- package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
- package/esm2015/lib/components/components.module.js +13 -5
- package/esm2015/lib/components/components.module.js.map +1 -1
- package/esm2015/lib/components/components.module.metadata.json +1 -1
- package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
- package/esm2015/lib/components/exports.js +11 -0
- package/esm2015/lib/components/exports.js.map +1 -1
- package/esm2015/lib/components/exports.metadata.json +1 -1
- package/esm2015/lib/components/table/abstract-table-model.js +173 -0
- package/esm2015/lib/components/table/abstract-table-model.js.map +1 -0
- package/esm2015/lib/components/table/abstract-table-model.metadata.json +1 -0
- package/esm2015/lib/components/table/column-model.js +6 -3
- package/esm2015/lib/components/table/column-model.js.map +1 -1
- package/esm2015/lib/components/table/column-model.metadata.json +1 -1
- package/esm2015/lib/components/table/table-model.js +7 -171
- package/esm2015/lib/components/table/table-model.js.map +1 -1
- package/esm2015/lib/components/table/table-model.metadata.json +1 -1
- package/esm2015/lib/components/table/table.component.js +3 -3
- package/esm2015/lib/components/table/table.component.js.map +1 -1
- package/esm2015/lib/components/table/table.component.metadata.json +1 -1
- package/esm2015/lib/components/tree-table/decorated-tree-node.js +169 -0
- package/esm2015/lib/components/tree-table/decorated-tree-node.js.map +1 -0
- package/esm2015/lib/components/tree-table/decorated-tree-node.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-expansion-model.js +48 -0
- package/esm2015/lib/components/tree-table/tree-expansion-model.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-expansion-model.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +68 -0
- package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ngfactory.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.scss.shim.ngstyle.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +71 -0
- package/esm2015/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ngfactory.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.scss.shim.ngstyle.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-label-column-model.js +33 -0
- package/esm2015/lib/components/tree-table/tree-label-column-model.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-label-column-model.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-node.js +2 -0
- package/esm2015/lib/components/tree-table/tree-node.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-node.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-table-component.js +63 -0
- package/esm2015/lib/components/tree-table/tree-table-component.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-table-component.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-table-component.ngfactory.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-table-model.js +90 -0
- package/esm2015/lib/components/tree-table/tree-table-model.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-table-model.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/tree-table.component.scss.ngstyle.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-to-list-model.js +25 -0
- package/esm2015/lib/components/tree-table/tree-to-list-model.js.map +1 -0
- package/esm2015/lib/components/tree-table/tree-to-list-model.metadata.json +1 -0
- package/esm2015/lib/components/tree-table/visitable.class.js +26 -0
- package/esm2015/lib/components/tree-table/visitable.class.js.map +1 -0
- package/esm2015/lib/components/tree-table/visitable.class.metadata.json +1 -0
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +26 -0
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js.map +1 -0
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -0
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.ngfactory.js.map +1 -0
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.scss.shim.ngstyle.js.map +1 -0
- package/esm2015/lib/interaction/exports.js +1 -0
- package/esm2015/lib/interaction/exports.js.map +1 -1
- package/esm2015/lib/interaction/exports.metadata.json +1 -1
- package/esm2015/lib/interaction/interaction.module.js +4 -1
- package/esm2015/lib/interaction/interaction.module.js.map +1 -1
- package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
- package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
- package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +981 -380
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/exports.d.ts +11 -0
- package/lib/components/table/abstract-table-model.d.ts +61 -0
- package/lib/components/table/column-model.d.ts +11 -12
- package/lib/components/table/table-model.d.ts +4 -59
- package/lib/components/table/table.component.d.ts +2 -2
- package/lib/components/tree-table/decorated-tree-node.d.ts +43 -0
- package/lib/components/tree-table/tree-expansion-model.d.ts +18 -0
- package/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.d.ts +28 -0
- package/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +25 -0
- package/lib/components/tree-table/tree-label-column-model.d.ts +20 -0
- package/lib/components/tree-table/tree-node.d.ts +3 -0
- package/lib/components/tree-table/tree-table-component.d.ts +7 -0
- package/lib/components/tree-table/tree-table-model.d.ts +32 -0
- package/lib/components/tree-table/tree-to-list-model.d.ts +12 -0
- package/lib/components/tree-table/visitable.class.d.ts +22 -0
- package/lib/interaction/components/activity-title/activity-title.component.d.ts +5 -0
- package/lib/interaction/exports.d.ts +1 -0
- package/package.json +1 -1
- package/schematics/place-routes/place-builder.js +1 -1
- package/schematics/place-routes/place-builder.js.map +1 -1
- package/schematics/utils/build-context.js +0 -2
- package/schematics/utils/build-context.js.map +1 -1
- package/schematics/utils/schematic-tree-file-system.js +6 -2
- package/schematics/utils/schematic-tree-file-system.js.map +1 -1
package/esm2015/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { Enum } from 'typescript-string-enums';
|
|
3
|
+
const SVG_HEIGHT = 60;
|
|
4
|
+
export class TreeInheritanceIconComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.pixelWidth = 24;
|
|
7
|
+
this.pixelHeight = 48;
|
|
8
|
+
}
|
|
9
|
+
get heightOffset() {
|
|
10
|
+
return SVG_HEIGHT - this.pixelHeight;
|
|
11
|
+
}
|
|
12
|
+
get viewBox() {
|
|
13
|
+
return `${0} ${this.heightOffset} ${this.pixelWidth} ${this.pixelHeight - this.heightOffset}`;
|
|
14
|
+
}
|
|
15
|
+
hasHead() {
|
|
16
|
+
return TreeInheritanceIconComponent.HAS_HEAD.includes(this.type);
|
|
17
|
+
}
|
|
18
|
+
hasTerminal() {
|
|
19
|
+
return TreeInheritanceIconComponent.HAS_TERMINAL.includes(this.type);
|
|
20
|
+
}
|
|
21
|
+
hasLeadIn() {
|
|
22
|
+
return TreeInheritanceIconComponent.HAS_LEAD_IN.includes(this.type);
|
|
23
|
+
}
|
|
24
|
+
hasTail() {
|
|
25
|
+
return TreeInheritanceIconComponent.HAS_TAIL.includes(this.type);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
TreeInheritanceIconComponent.decorators = [
|
|
29
|
+
{ type: Component, args: [{
|
|
30
|
+
selector: 'aup-tree-inheritance-icon',
|
|
31
|
+
template: "<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n",
|
|
32
|
+
styles: [":host{color:inherit;position:relative}svg{color:var(--line-color);display:block}"]
|
|
33
|
+
},] }
|
|
34
|
+
];
|
|
35
|
+
TreeInheritanceIconComponent.ctorParameters = () => [];
|
|
36
|
+
TreeInheritanceIconComponent.propDecorators = {
|
|
37
|
+
type: [{ type: Input }, { type: HostBinding, args: ["class",] }],
|
|
38
|
+
pixelWidth: [{ type: Input }],
|
|
39
|
+
pixelHeight: [{ type: Input }]
|
|
40
|
+
};
|
|
41
|
+
(function (TreeInheritanceIconComponent) {
|
|
42
|
+
TreeInheritanceIconComponent.Type = Enum({
|
|
43
|
+
ICON_BLANK: 'blank',
|
|
44
|
+
ICON_PARENT: 'parent',
|
|
45
|
+
ICON_INHERITED_TERMINAL: 'inherited_terminal',
|
|
46
|
+
ICON_INHERITED_THROUGH_TERMINAL: 'inherited_through_terminal',
|
|
47
|
+
ICON_THROUGH: 'through' // |
|
|
48
|
+
});
|
|
49
|
+
TreeInheritanceIconComponent.HAS_LEAD_IN = [
|
|
50
|
+
TreeInheritanceIconComponent.Type.ICON_PARENT
|
|
51
|
+
];
|
|
52
|
+
TreeInheritanceIconComponent.HAS_TERMINAL = [
|
|
53
|
+
TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,
|
|
54
|
+
TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL,
|
|
55
|
+
TreeInheritanceIconComponent.Type.ICON_PARENT
|
|
56
|
+
];
|
|
57
|
+
TreeInheritanceIconComponent.HAS_HEAD = [
|
|
58
|
+
TreeInheritanceIconComponent.Type.ICON_THROUGH,
|
|
59
|
+
TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,
|
|
60
|
+
TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL
|
|
61
|
+
];
|
|
62
|
+
TreeInheritanceIconComponent.HAS_TAIL = [
|
|
63
|
+
TreeInheritanceIconComponent.Type.ICON_PARENT,
|
|
64
|
+
TreeInheritanceIconComponent.Type.ICON_THROUGH,
|
|
65
|
+
TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL
|
|
66
|
+
];
|
|
67
|
+
})(TreeInheritanceIconComponent || (TreeInheritanceIconComponent = {}));
|
|
68
|
+
//# sourceMappingURL=tree-inheritance-icon.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-inheritance-icon.component.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,MAAM,UAAU,GAAG,EAAE,CAAC;AAOtB,MAAM,OAAO,4BAA4B;IAYvC;QALA,eAAU,GAAG,EAAE,CAAC;QAGhB,gBAAW,GAAG,EAAE,CAAC;IAGjB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAC/F,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAED,WAAW;QACT,OAAO,4BAA4B,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,SAAS;QACP,OAAO,4BAA4B,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrE,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;;;YA1CF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,ylBAAoD;;aAErD;;;;mBAGE,KAAK,YACL,WAAW,SAAC,OAAO;yBAGnB,KAAK;0BAGL,KAAK;;AAgCR,WAAiB,4BAA4B;IAC9B,iCAAI,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,QAAQ;QACrB,uBAAuB,EAAE,oBAAoB;QAC7C,+BAA+B,EAAE,4BAA4B;QAC7D,YAAY,EAAE,SAAS,CAAC,IAAI;KAC7B,CAAC,CAAC;IAGU,wCAAW,GAAG;QACzB,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,yCAAY,GAAG;QAC1B,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;QACjE,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,WAAW;QAC7C,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;AAGJ,CAAC,EAjCgB,4BAA4B,KAA5B,4BAA4B,QAiC5C","sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\nimport { Enum } from 'typescript-string-enums';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\n\nconst SVG_HEIGHT = 60;\n\n@Component({\n selector: 'aup-tree-inheritance-icon',\n templateUrl: './tree-inheritance-icon.component.svg',\n styleUrls: ['./tree-inheritance-icon.component.scss']\n})\nexport class TreeInheritanceIconComponent<T extends DecoratedTreeNode<any>> {\n\n @Input()\n @HostBinding(\"class\")\n type: TreeInheritanceIconComponent.Type;\n\n @Input()\n pixelWidth = 24;\n\n @Input()\n pixelHeight = 48;\n\n constructor() {\n }\n\n get heightOffset() {\n return SVG_HEIGHT - this.pixelHeight;\n }\n\n get viewBox() {\n return `${0} ${this.heightOffset} ${this.pixelWidth} ${this.pixelHeight - this.heightOffset}`\n }\n\n hasHead() {\n return TreeInheritanceIconComponent.HAS_HEAD.includes(this.type)\n }\n\n hasTerminal() {\n return TreeInheritanceIconComponent.HAS_TERMINAL.includes(this.type)\n }\n\n hasLeadIn() {\n return TreeInheritanceIconComponent.HAS_LEAD_IN.includes(this.type)\n }\n\n hasTail() {\n return TreeInheritanceIconComponent.HAS_TAIL.includes(this.type)\n }\n\n}\n\nexport namespace TreeInheritanceIconComponent {\n export const Type = Enum({\n ICON_BLANK: 'blank',\n ICON_PARENT: 'parent', // ┬\n ICON_INHERITED_TERMINAL: 'inherited_terminal', // ˪\n ICON_INHERITED_THROUGH_TERMINAL: 'inherited_through_terminal', // ˫\n ICON_THROUGH: 'through' // |\n });\n export type Type = Enum<typeof Type>;\n\n export const HAS_LEAD_IN = [\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_TERMINAL = [\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_HEAD = [\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeInheritanceIconComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"aup-tree-inheritance-icon","template":"<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n","styles":[":host{color:inherit;position:relative}svg{color:var(--line-color);display:block}"]}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":14,"character":3},"arguments":["class"]}]}],"pixelWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"pixelHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"hasHead":[{"__symbolic":"method"}],"hasTerminal":[{"__symbolic":"method"}],"hasLeadIn":[{"__symbolic":"method"}],"hasTail":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-inheritance-icon.component.ngfactory.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ngfactory.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-inheritance-icon.component.scss.shim.ngstyle.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.scss.shim.ngstyle.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
3
|
+
import { Dsl, MutableValueModel, StoreInValueModel } from '@coolon/pectin';
|
|
4
|
+
import { DisposableComponent } from '../../disposable-component';
|
|
5
|
+
import { DecoratedTreeNode } from '../decorated-tree-node';
|
|
6
|
+
import { TreeExpansionModel } from '../tree-expansion-model';
|
|
7
|
+
import { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';
|
|
8
|
+
import { TreeLabelColumnModel } from '../tree-label-column-model';
|
|
9
|
+
export class TreeLabelCellRendererComponent extends DisposableComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.iconTypes = [];
|
|
13
|
+
this.nodeModel = new MutableValueModel();
|
|
14
|
+
const { chain } = Dsl.disposeWith(this);
|
|
15
|
+
this.iconList = chain(this.nodeModel).mapToList(node => {
|
|
16
|
+
const icons = node.ancestors().slice(1).map(ancestor => {
|
|
17
|
+
return ancestor.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;
|
|
18
|
+
});
|
|
19
|
+
if (!node.isRoot()) {
|
|
20
|
+
icons.push(node.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);
|
|
21
|
+
}
|
|
22
|
+
return icons;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
const { chain } = Dsl.disposeWith(this);
|
|
27
|
+
this.canExpand = chain(this.nodeModel).map(node => {
|
|
28
|
+
return node.hasChildren() && this.expansionModel.isCollapsed(node);
|
|
29
|
+
}, { dependsOn: this.expansionModel.isExpandedPredicate });
|
|
30
|
+
this.canCollapse = chain(this.nodeModel).map(node => {
|
|
31
|
+
return node.hasChildren() && !this.expansionModel.isCollapsed(node);
|
|
32
|
+
}, { dependsOn: this.expansionModel.isExpandedPredicate });
|
|
33
|
+
this.iconModel = chain(this.nodeModel).map(node => {
|
|
34
|
+
return this.node.isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node));
|
|
35
|
+
}, { dependsOn: this.expansionModel.isExpandedPredicate });
|
|
36
|
+
}
|
|
37
|
+
get isRoot() {
|
|
38
|
+
return this.node.isRoot();
|
|
39
|
+
}
|
|
40
|
+
get isLeaf() {
|
|
41
|
+
return this.node.isLeaf();
|
|
42
|
+
}
|
|
43
|
+
get node() {
|
|
44
|
+
return this.nodeModel.value;
|
|
45
|
+
}
|
|
46
|
+
// @Trace()
|
|
47
|
+
expandOrCollapse(node) {
|
|
48
|
+
this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
TreeLabelCellRendererComponent.decorators = [
|
|
52
|
+
{ type: Component, args: [{
|
|
53
|
+
selector: 'aup-tree-label-cell-renderer',
|
|
54
|
+
template: "<div class=\"tree-icons\">\n <aup-tree-inheritance-icon *ngFor=\"let iconClass of iconList.value\" [type]=\"iconClass\"></aup-tree-inheritance-icon>\n <aup-icon *ngIf=\"iconModel.value\"\n [icon]=\"iconModel.value\"\n [class.clickable]=\"canExpand.value || canCollapse.value\"\n (click)=\"expandOrCollapse(node)\" ></aup-icon>\n</div>\n<div class=\"label\">{{label}}</div>\n",
|
|
55
|
+
styles: [":host{--line-color:#ddd;--node-color:#999;align-items:stretch;display:inline-flex;flex-direction:row}:host div.label{align-items:center;display:flex;flex-direction:row;padding-left:6px;white-space:nowrap}:host div.tree-icons{-ms-grid-rows:1fr;align-items:stretch;display:-ms-grid;display:grid;grid-auto-columns:auto;grid-auto-flow:column;grid-template-rows:1fr;justify-content:stretch}:host div.tree-icons aup-icon{-ms-grid-row-align:center;align-self:center;color:var(--node-color)}:host div.tree-icons aup-icon.clickable{cursor:pointer}:host div.tree-icons aup-icon,:host div.tree-icons aup-tree-inheritance-icon{margin-left:4px}"]
|
|
56
|
+
},] }
|
|
57
|
+
];
|
|
58
|
+
TreeLabelCellRendererComponent.ctorParameters = () => [];
|
|
59
|
+
TreeLabelCellRendererComponent.propDecorators = {
|
|
60
|
+
value: [{ type: Input }],
|
|
61
|
+
label: [{ type: Input }],
|
|
62
|
+
iconFactory: [{ type: Input }],
|
|
63
|
+
expansionModel: [{ type: Input }],
|
|
64
|
+
isRoot: [{ type: HostBinding, args: ['class.root',] }],
|
|
65
|
+
isLeaf: [{ type: HostBinding, args: ['class.leaf',] }]
|
|
66
|
+
};
|
|
67
|
+
__decorate([
|
|
68
|
+
StoreInValueModel('nodeModel'),
|
|
69
|
+
__metadata("design:type", Object)
|
|
70
|
+
], TreeLabelCellRendererComponent.prototype, "value", void 0);
|
|
71
|
+
//# sourceMappingURL=tree-label-cell-renderer.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-label-cell-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,GAAG,EAAkB,iBAAiB,EAAE,iBAAiB,EAAmB,MAAM,gBAAgB,CAAC;AAC5G,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAQlE,MAAM,OAAO,8BAAwD,SAAQ,mBAAmB;IA0B9F;QACE,KAAK,EAAE,CAAC;QAzBV,cAAS,GAAa,EAAE,CAAC;QAEjB,cAAS,GAAG,IAAI,iBAAiB,EAAwB,CAAC;QAwBhE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACrD,MAAM,KAAK,GAAa,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC/D,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC;YAChI,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;aAChK;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3G,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IACI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,IACI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,WAAW;IACX,gBAAgB,CAAC,IAA0B;QACzC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChH,CAAC;;;YA7EF,SAAS,SAAC;gBACT,QAAQ,EAAE,8BAA8B;gBACxC,qaAAwD;;aAEzD;;;;oBAOE,KAAK;oBAIL,KAAK;0BAGL,KAAK;6BAIL,KAAK;qBAsCL,WAAW,SAAC,YAAY;qBAKxB,WAAW,SAAC,YAAY;;AApDzB;IADC,iBAAiB,CAAC,WAAW,CAAC;;6DACH","sourcesContent":["import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain } from '@coolon/pectin';\nimport { DisposableComponent } from '../../disposable-component';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\nimport { TreeExpansionModel } from '../tree-expansion-model';\nimport { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';\nimport { TreeLabelColumnModel } from '../tree-label-column-model';\nimport { TreeNode } from '../tree-node';\n\n@Component({\n selector: 'aup-tree-label-cell-renderer',\n templateUrl: './tree-label-cell-renderer.component.html',\n styleUrls: ['./tree-label-cell-renderer.component.scss']\n})\nexport class TreeLabelCellRendererComponent<T extends TreeNode<any>> extends DisposableComponent implements OnInit {\n\n iconTypes: string[] = [];\n\n private nodeModel = new MutableValueModel<DecoratedTreeNode<T>>();\n\n @Input()\n @StoreInValueModel('nodeModel')\n value: DecoratedTreeNode<T>;\n\n @Input()\n label: string;\n\n @Input()\n iconFactory: TreeLabelColumnModel.LabelFactory<T>;\n\n // TODO: Make this have a proper delegate so I can safely use it here..\n @Input()\n expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>;\n\n readonly iconList: ListModelChain<string>;\n\n canExpand: ValueModelChain<boolean>;\n canCollapse: ValueModelChain<boolean>;\n iconModel: ValueModelChain<string>;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.iconList = chain(this.nodeModel).mapToList(node => {\n const icons: string[] = node.ancestors().slice(1).map(ancestor => {\n return ancestor.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;\n });\n if (!node.isRoot()) {\n icons.push(node.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);\n }\n return icons;\n });\n }\n\n ngOnInit(): void {\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.nodeModel).map(node => {\n return node.hasChildren() && this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.canCollapse = chain(this.nodeModel).map(node => {\n return node.hasChildren() && !this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.iconModel = chain(this.nodeModel).map(node => {\n return this.node.isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node))\n }, {dependsOn: this.expansionModel.isExpandedPredicate});\n }\n\n @HostBinding('class.root')\n get isRoot() {\n return this.node.isRoot();\n }\n\n @HostBinding('class.leaf')\n get isLeaf() {\n return this.node.isLeaf();\n }\n\n get node() {\n return this.nodeModel.value;\n }\n\n // @Trace()\n expandOrCollapse(node: DecoratedTreeNode<T>) {\n this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeLabelCellRendererComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../disposable-component","name":"DisposableComponent","line":14,"character":77},"arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"aup-tree-label-cell-renderer","template":"<div class=\"tree-icons\">\n <aup-tree-inheritance-icon *ngFor=\"let iconClass of iconList.value\" [type]=\"iconClass\"></aup-tree-inheritance-icon>\n <aup-icon *ngIf=\"iconModel.value\"\n [icon]=\"iconModel.value\"\n [class.clickable]=\"canExpand.value || canCollapse.value\"\n (click)=\"expandOrCollapse(node)\" ></aup-icon>\n</div>\n<div class=\"label\">{{label}}</div>\n","styles":[":host{--line-color:#ddd;--node-color:#999;align-items:stretch;display:inline-flex;flex-direction:row}:host div.label{align-items:center;display:flex;flex-direction:row;padding-left:6px;white-space:nowrap}:host div.tree-icons{-ms-grid-rows:1fr;align-items:stretch;display:-ms-grid;display:grid;grid-auto-columns:auto;grid-auto-flow:column;grid-template-rows:1fr;justify-content:stretch}:host div.tree-icons aup-icon{-ms-grid-row-align:center;align-self:center;color:var(--node-color)}:host div.tree-icons aup-icon.clickable{cursor:pointer}:host div.tree-icons aup-icon,:host div.tree-icons aup-tree-inheritance-icon{margin-left:4px}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInValueModel","line":21,"character":3},"arguments":["nodeModel"]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"iconFactory":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"expansionModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"isRoot":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":69,"character":3},"arguments":["class.root"]}]}],"isLeaf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":74,"character":3},"arguments":["class.leaf"]}]}],"expandOrCollapse":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-label-cell-renderer.component.ngfactory.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ngfactory.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-label-cell-renderer.component.scss.shim.ngstyle.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.scss.shim.ngstyle.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';
|
|
3
|
+
import { ColumnModel } from '../table/column-model';
|
|
4
|
+
import { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';
|
|
5
|
+
export class TreeLabelColumnModel extends ColumnModel {
|
|
6
|
+
constructor(columnId, textPropertiesProvider, expansionModel) {
|
|
7
|
+
super(columnId, textPropertiesProvider);
|
|
8
|
+
this.expansionModel = expansionModel;
|
|
9
|
+
this.iconFactory = (node, expanded) => expanded ? 'mat:folder_open' : 'mat:folder';
|
|
10
|
+
this.cellRenderer(TreeLabelCellRendererComponent);
|
|
11
|
+
}
|
|
12
|
+
pluck(property) {
|
|
13
|
+
this.labelProperty = property;
|
|
14
|
+
}
|
|
15
|
+
addIcon(factory) {
|
|
16
|
+
this.iconFactory = factory;
|
|
17
|
+
}
|
|
18
|
+
cellRenderer(componentType) {
|
|
19
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
20
|
+
if (firstTime) {
|
|
21
|
+
component.expansionModel = this.expansionModel;
|
|
22
|
+
}
|
|
23
|
+
component.value = rowData.row;
|
|
24
|
+
component.label = _.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];
|
|
25
|
+
component.iconFactory = this.iconFactory;
|
|
26
|
+
}));
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
selectRowOnClick(selectOnRowClick) {
|
|
30
|
+
return super.selectRowOnClick(selectOnRowClick);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=tree-label-column-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-label-column-model.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-label-column-model.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+DAA+D,CAAC;AAG/G,MAAM,OAAO,oBAAgD,SAAQ,WAAmC;IAKtG,YAAY,QAAgB,EAChB,sBAA0D,EACjD,cAA0D;QAC7E,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QADrB,mBAAc,GAAd,cAAc,CAA4C;QAJvE,gBAAW,GAA2C,CAAC,IAA4B,EAAE,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC;QAM7J,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAyC,QAAW;QACvD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,OAAO,CAAyC,OAA+C;QAC7F,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAES,YAAY,CAAgD,aAA+B;QACnG,IAAI,CAAC,qBAAqB,CAAC,IAAI,8BAA8B,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YAC7G,IAAI,SAAS,EAAE;gBACb,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;aAChD;YACD,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;YAC9B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5F,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAgB,CAAC,gBAAyB;QAC/C,OAAO,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;CAEF","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { Types } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';\nimport { ColumnModel } from '../table/column-model';\nimport { DecoratedTreeNode } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport { TreeNode } from './tree-node';\n\nexport class TreeLabelColumnModel<Row extends TreeNode<Row>> extends ColumnModel<DecoratedTreeNode<Row>> {\n\n private labelProperty: string | number | symbol;\n private iconFactory: TreeLabelColumnModel.LabelFactory<Row> = (node: DecoratedTreeNode<Row>, expanded: boolean) => expanded ? 'mat:folder_open' : 'mat:folder';\n\n constructor(columnId: string,\n textPropertiesProvider: ColumnModel.TextPropertiesProvider,\n readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>) {\n super(columnId, textPropertiesProvider);\n this.cellRenderer(TreeLabelCellRendererComponent);\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P) {\n this.labelProperty = property;\n }\n\n addIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeLabelColumnModel.LabelFactory<Row>) {\n this.iconFactory = factory;\n }\n\n protected cellRenderer<C extends TreeLabelCellRendererComponent<Row>>(componentType: ComponentType<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n component.expansionModel = this.expansionModel;\n }\n component.value = rowData.row;\n component.label = _.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport namespace TreeLabelColumnModel {\n export type LabelFactory<Row extends TreeNode<Row>> = (node: DecoratedTreeNode<Row>, expanded: boolean) => string;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeLabelColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":10,"character":69},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":16,"character":38},"member":"TextPropertiesProvider"},{"__symbolic":"reference","module":"./tree-expansion-model","name":"TreeExpansionModel","line":17,"character":39,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":17,"character":58,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":17,"character":76,"context":{"typeName":"Row"}}]}]}]}],"pluck":[{"__symbolic":"method"}],"addIcon":[{"__symbolic":"method"}],"cellRenderer":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-node.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-node.ts"],"names":[],"mappings":"","sourcesContent":["export interface TreeNode<T extends TreeNode<T>> {\n children: T[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeNode":{"__symbolic":"interface"}}}]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { TrackExternal } from '@coolon/pectin';
|
|
4
|
+
import { DisposableComponent } from '../disposable-component';
|
|
5
|
+
import { TreeTableModel } from './tree-table-model';
|
|
6
|
+
//
|
|
7
|
+
// const template = `
|
|
8
|
+
// <table-component list-model="zoneTreeController.visibleAreas"
|
|
9
|
+
// selection-model="zoneTreeController.selectionModel"
|
|
10
|
+
// selection-command="zoneTreeController.selectionCommand"
|
|
11
|
+
// hover-model="zoneTreeController.decoratedHoverModel"
|
|
12
|
+
// no-hover="zoneTreeController.noHover"
|
|
13
|
+
// no-lines="true" no-scroll>
|
|
14
|
+
//
|
|
15
|
+
// <row-attr name="parent-id" value="{{item.parent.id}}"></row-attr>
|
|
16
|
+
// <row-attr name="area-id" value="{{item.id}}"></row-attr>
|
|
17
|
+
// <row-attr name="area-name" value="{{item.name}}"></row-attr>
|
|
18
|
+
// <row-attr name="area-depth" value="{{item.depthFromZone()}}"></row-attr>
|
|
19
|
+
// <row-attr name="collapsed" value="{{zoneTreeController.isCollapsed(item)}}"></row-attr>
|
|
20
|
+
//
|
|
21
|
+
// <column class="area" ng-class="{root: item.isZone(), parent: item.isGroup()}" class="allow-squish">
|
|
22
|
+
// <!--<label>Rooms in {{zoneTreeController.zoneModel.value.name}}</label>-->
|
|
23
|
+
// <label>Rooms</label>
|
|
24
|
+
// <div layout="row" layout-align="start center">
|
|
25
|
+
// <tree-icons tree-item="item"></tree-icons>
|
|
26
|
+
// <area-icon area="item"></area-icon>
|
|
27
|
+
// <span ng-if="item.isZone()">Zone ({{item.name}})</span>
|
|
28
|
+
// <span ng-if="!item.isZone()">{{item.name}}</span>
|
|
29
|
+
// </div>
|
|
30
|
+
// </column>
|
|
31
|
+
// <column class="expand-collapse" ng-class="{collapsed: zoneTreeController.isCollapsed(item)}">
|
|
32
|
+
// <md-button class="md-icon-button"
|
|
33
|
+
// ng-if="zoneTreeController.canCollapse(item)"
|
|
34
|
+
// ng-click="zoneTreeController.toggleCollapse(item)">
|
|
35
|
+
// <md-icon>keyboard_arrow_up</md-icon>
|
|
36
|
+
// </md-button>
|
|
37
|
+
// </column>
|
|
38
|
+
//
|
|
39
|
+
// </table-component>
|
|
40
|
+
// `;
|
|
41
|
+
export class TreeTableComponent extends DisposableComponent {
|
|
42
|
+
constructor() {
|
|
43
|
+
super();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
TreeTableComponent.decorators = [
|
|
47
|
+
{ type: Component, args: [{
|
|
48
|
+
selector: "aup-tree-table",
|
|
49
|
+
template: "<aup-table [tableModel]=\"treeTableModel\"></aup-table>\n",
|
|
50
|
+
encapsulation: ViewEncapsulation.None // allow us to target nested table styles
|
|
51
|
+
,
|
|
52
|
+
styles: ["td.mat-cell{border-bottom-width:0!important;border-top-width:0!important}td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}"]
|
|
53
|
+
},] }
|
|
54
|
+
];
|
|
55
|
+
TreeTableComponent.ctorParameters = () => [];
|
|
56
|
+
TreeTableComponent.propDecorators = {
|
|
57
|
+
treeTableModel: [{ type: Input }]
|
|
58
|
+
};
|
|
59
|
+
__decorate([
|
|
60
|
+
TrackExternal(),
|
|
61
|
+
__metadata("design:type", TreeTableModel)
|
|
62
|
+
], TreeTableComponent.prototype, "treeTableModel", void 0);
|
|
63
|
+
//# sourceMappingURL=tree-table-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-table-component.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-table-component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,EAAE;AACF,qBAAqB;AACrB,gEAAgE;AAChE,uEAAuE;AACvE,2EAA2E;AAC3E,wEAAwE;AACxE,yDAAyD;AACzD,8CAA8C;AAC9C,EAAE;AACF,wEAAwE;AACxE,+DAA+D;AAC/D,mEAAmE;AACnE,+EAA+E;AAC/E,8FAA8F;AAC9F,EAAE;AACF,0GAA0G;AAC1G,qFAAqF;AACrF,+BAA+B;AAC/B,yDAAyD;AACzD,yDAAyD;AACzD,kDAAkD;AAClD,sEAAsE;AACtE,gEAAgE;AAChE,iBAAiB;AACjB,gBAAgB;AAChB,oGAAoG;AACpG,4CAA4C;AAC5C,2DAA2D;AAC3D,kEAAkE;AAClE,mDAAmD;AACnD,uBAAuB;AACvB,gBAAgB;AAChB,EAAE;AACF,qBAAqB;AACrB,KAAK;AASL,MAAM,OAAO,kBAA0C,SAAQ,mBAAmB;IAMhF;QACE,KAAK,EAAE,CAAC;IACV,CAAC;;;YAdF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,qEAA0C;gBAE1C,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,yCAAyC;;;aAChF;;;;6BAGE,KAAK;;AAEN;IADC,aAAa,EAAE;8BACA,cAAc;0DAAI","sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TrackExternal } from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\nimport { TreeNode } from './tree-node';\nimport { TreeTableModel } from './tree-table-model';\n//\n// const template = `\n// <table-component list-model=\"zoneTreeController.visibleAreas\"\n// selection-model=\"zoneTreeController.selectionModel\"\n// selection-command=\"zoneTreeController.selectionCommand\"\n// hover-model=\"zoneTreeController.decoratedHoverModel\"\n// no-hover=\"zoneTreeController.noHover\"\n// no-lines=\"true\" no-scroll>\n//\n// <row-attr name=\"parent-id\" value=\"{{item.parent.id}}\"></row-attr>\n// <row-attr name=\"area-id\" value=\"{{item.id}}\"></row-attr>\n// <row-attr name=\"area-name\" value=\"{{item.name}}\"></row-attr>\n// <row-attr name=\"area-depth\" value=\"{{item.depthFromZone()}}\"></row-attr>\n// <row-attr name=\"collapsed\" value=\"{{zoneTreeController.isCollapsed(item)}}\"></row-attr>\n//\n// <column class=\"area\" ng-class=\"{root: item.isZone(), parent: item.isGroup()}\" class=\"allow-squish\">\n// <!--<label>Rooms in {{zoneTreeController.zoneModel.value.name}}</label>-->\n// <label>Rooms</label>\n// <div layout=\"row\" layout-align=\"start center\">\n// <tree-icons tree-item=\"item\"></tree-icons>\n// <area-icon area=\"item\"></area-icon>\n// <span ng-if=\"item.isZone()\">Zone ({{item.name}})</span>\n// <span ng-if=\"!item.isZone()\">{{item.name}}</span>\n// </div>\n// </column>\n// <column class=\"expand-collapse\" ng-class=\"{collapsed: zoneTreeController.isCollapsed(item)}\">\n// <md-button class=\"md-icon-button\"\n// ng-if=\"zoneTreeController.canCollapse(item)\"\n// ng-click=\"zoneTreeController.toggleCollapse(item)\">\n// <md-icon>keyboard_arrow_up</md-icon>\n// </md-button>\n// </column>\n//\n// </table-component>\n// `;\n\n\n@Component({\n selector: \"aup-tree-table\",\n templateUrl: './tree-table.component.html',\n styleUrls: ['./tree-table.component.scss'],\n encapsulation: ViewEncapsulation.None // allow us to target nested table styles\n})\nexport class TreeTableComponent<T extends TreeNode<T>> extends DisposableComponent {\n\n @Input()\n @TrackExternal()\n treeTableModel: TreeTableModel<T>;\n\n constructor() {\n super();\n }\n\n // zoneTreeModel: TreeModel<T>;\n // noHover: boolean;\n //\n // static compile(tElement, tAttrs, $compile) {\n // const newContent = angular.element(template);\n //\n // // // find methods don't work here... sigh. and this is sensetive to whitespace in the template BEWARE!!\n // // let table = angular.element(newContent[2]);\n //\n // tElement.find('column').each((index, el) => newContent.append(el));\n // tElement.contents().remove();\n //\n // const transclude = $compile(newContent);\n // return (scope, element, attrs, ctrl) => {\n // transclude(scope, function(clone) {\n // element.append(clone);\n // });\n // };\n // }\n //\n // constructor() {\n // super();\n // }\n //\n // get zoneModel() {\n // return this.zoneTreeModel.rootNodeModel;\n // }\n //\n // get visibleAreas() {\n // return this.zoneTreeModel.decoratedVisibleAreas;\n // }\n //\n // get selectionModel() {\n // return this.zoneTreeModel.decoratedSelectionModel;\n // }\n //\n // selectArea(decoratedArea: TreeModel.DecoratedArea) {\n // this.zoneTreeModel.select(decoratedArea);\n // }\n //\n // get decoratedHoverModel() {\n // return this.zoneTreeModel.decoratedHoverModel;\n // }\n //\n // canCollapse(area: TreeModel.DecoratedArea) {\n // // @ts-ignore\n // return area && !area.isZone() && (area.isGroup() && area.hasChildren());\n // }\n //\n // isCollapsed(area: TreeModel.DecoratedArea): boolean {\n // return area && this.zoneTreeModel.isCollapsed(area);\n // }\n //\n // toggleCollapse(area: TreeModel.DecoratedArea) {\n // if (this.isCollapsed(area)) {\n // this.zoneTreeModel.expand(area);\n // } else {\n // this.zoneTreeModel.collapse(area);\n // }\n // }\n\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeTableComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../disposable-component","name":"DisposableComponent","line":48,"character":63},"arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":42,"character":1},"arguments":[{"selector":"aup-tree-table","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":46,"character":17},"member":"None"},"template":"<aup-table [tableModel]=\"treeTableModel\"></aup-table>\n","styles":["td.mat-cell{border-bottom-width:0!important;border-top-width:0!important}td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}"]}]}],"members":{"treeTableModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"TrackExternal","line":51,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-table-component.ngfactory.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-table-component.ngfactory.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// import {T } from '@client/api/light-architect/model/area/area.class';
|
|
2
|
+
// import { SelfAndDescendantsVisitor } from '@client/api/light-architect/model/area/visitable.class';
|
|
3
|
+
// import { Zone } from '@client/api/light-architect/model/area/zone.class';
|
|
4
|
+
import { Dsl, GarbageCollector } from '@coolon/pectin';
|
|
5
|
+
import { AbstractTableModel } from '../table/abstract-table-model';
|
|
6
|
+
import { TreeExpansionModel } from './tree-expansion-model';
|
|
7
|
+
import { TreeLabelColumnModel } from './tree-label-column-model';
|
|
8
|
+
import { TreeToListModel } from './tree-to-list-model';
|
|
9
|
+
import { SelfAndDescendantsVisitor } from './visitable.class';
|
|
10
|
+
export class TreeTableModel extends AbstractTableModel {
|
|
11
|
+
constructor(source, treeExpansionModel) {
|
|
12
|
+
super(source);
|
|
13
|
+
this.treeExpansionModel = treeExpansionModel;
|
|
14
|
+
}
|
|
15
|
+
static fromChildrenOf(sourceOfTruth, builder) {
|
|
16
|
+
const garbage = new GarbageCollector();
|
|
17
|
+
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(garbage);
|
|
18
|
+
const children = chain(sourceOfTruth).mapToList(root => root.children); // for some reason pluck list can't see 'children'
|
|
19
|
+
const model = this.fromList(children, builder);
|
|
20
|
+
model.registerDisposable(garbage);
|
|
21
|
+
return model;
|
|
22
|
+
}
|
|
23
|
+
static fromList(sourceOfTruth, builder) {
|
|
24
|
+
const treeExpansionModel = new TreeExpansionModel(sourceOfTruth.identityOf);
|
|
25
|
+
const nodes = new TreeToListModel(sourceOfTruth, treeExpansionModel);
|
|
26
|
+
const model = new TreeTableModel(nodes, treeExpansionModel);
|
|
27
|
+
model.registerDisposable(nodes);
|
|
28
|
+
if (builder)
|
|
29
|
+
builder(model);
|
|
30
|
+
return model;
|
|
31
|
+
}
|
|
32
|
+
treeControlColumn(builder) {
|
|
33
|
+
const columnId = 'tree-label';
|
|
34
|
+
const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.treeExpansionModel);
|
|
35
|
+
builder(column);
|
|
36
|
+
this.addColumn(column);
|
|
37
|
+
}
|
|
38
|
+
expand(node) {
|
|
39
|
+
this.treeExpansionModel.expand(node);
|
|
40
|
+
}
|
|
41
|
+
collapse(node) {
|
|
42
|
+
this.treeExpansionModel.expand(node);
|
|
43
|
+
}
|
|
44
|
+
isCollapsed(node) {
|
|
45
|
+
return this.treeExpansionModel.isCollapsed(node);
|
|
46
|
+
}
|
|
47
|
+
ensureAncestorsAndSelfVisible(node) {
|
|
48
|
+
this.treeExpansionModel.ensureAncestorsAndSelfVisible(node);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export class FlattenStrategy extends SelfAndDescendantsVisitor {
|
|
52
|
+
constructor(collapsedIds) {
|
|
53
|
+
super();
|
|
54
|
+
this.collapsedIds = collapsedIds;
|
|
55
|
+
this._areas = [];
|
|
56
|
+
this._collapsed = new Set(collapsedIds);
|
|
57
|
+
}
|
|
58
|
+
onVisit(it) {
|
|
59
|
+
this._areas.push(it);
|
|
60
|
+
}
|
|
61
|
+
shouldVisitChildrenOf(it) {
|
|
62
|
+
return !this._collapsed.has(it);
|
|
63
|
+
}
|
|
64
|
+
get flattenedAreas() {
|
|
65
|
+
return this._areas;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// class DecoratorCache {
|
|
69
|
+
//
|
|
70
|
+
// private map = new Map<number, T>();
|
|
71
|
+
//
|
|
72
|
+
// get(area:T): T {
|
|
73
|
+
//
|
|
74
|
+
// if (!area) return null;
|
|
75
|
+
//
|
|
76
|
+
// let decoratedArea = this.map.get(area.id);
|
|
77
|
+
// if (!decoratedArea) {
|
|
78
|
+
// decoratedArea = TreeModel.AreaDecorator.decorate(area);
|
|
79
|
+
// this.map.set(area.id, decoratedArea);
|
|
80
|
+
// }
|
|
81
|
+
// return decoratedArea;
|
|
82
|
+
// }
|
|
83
|
+
//
|
|
84
|
+
// clear() {
|
|
85
|
+
// this.map.clear();
|
|
86
|
+
// }
|
|
87
|
+
//
|
|
88
|
+
//
|
|
89
|
+
// }
|
|
90
|
+
//# sourceMappingURL=tree-table-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-table-model.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-table-model.ts"],"names":[],"mappings":"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","sourcesContent":["// import {T } from '@client/api/light-architect/model/area/area.class';\n// import { SelfAndDescendantsVisitor } from '@client/api/light-architect/model/area/visitable.class';\n// import { Zone } from '@client/api/light-architect/model/area/zone.class';\nimport { Dsl, GarbageCollector, ListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { AbstractTableModel } from '../table/abstract-table-model';\nimport { DecoratedTreeNode } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeLabelColumnModel } from './tree-label-column-model';\nimport { TreeNode } from './tree-node';\nimport { TreeToListModel } from './tree-to-list-model';\nimport { SelfAndDescendantsVisitor, VisitableTree } from './visitable.class';\n\n\nexport class TreeTableModel<Row extends TreeNode<Row>> extends AbstractTableModel<DecoratedTreeNode<Row>> {\n constructor(source: ListModel<DecoratedTreeNode<Row>>, readonly treeExpansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>) {\n super(source);\n }\n\n static fromChildrenOf<Row extends TreeNode<Row>>(sourceOfTruth: ValueModel<Row>, builder?: (tableModel: TreeTableModel<Row>) => void): TreeTableModel<Row> {\n const garbage = new GarbageCollector();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(garbage);\n const children = chain(sourceOfTruth).mapToList(root => root.children); // for some reason pluck list can't see 'children'\n const model = this.fromList(children, builder);\n model.registerDisposable(garbage);\n return model;\n }\n\n static fromList<Row extends TreeNode<Row>>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TreeTableModel<Row>) => void): TreeTableModel<Row> {\n const treeExpansionModel = new TreeExpansionModel<DecoratedTreeNode<Row>>(sourceOfTruth.identityOf);\n const nodes = new TreeToListModel(sourceOfTruth, treeExpansionModel);\n const model = new TreeTableModel<Row>(nodes, treeExpansionModel);\n model.registerDisposable(nodes);\n if (builder) builder(model);\n return model;\n }\n\n treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void) {\n const columnId = 'tree-label';\n const column = new TreeLabelColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId), this.treeExpansionModel);\n builder(column);\n this.addColumn(column);\n }\n\n expand(node: DecoratedTreeNode<Row>) {\n this.treeExpansionModel.expand(node);\n }\n\n collapse(node: DecoratedTreeNode<Row>) {\n this.treeExpansionModel.expand(node);\n }\n\n isCollapsed(node: DecoratedTreeNode<Row>): boolean {\n return this.treeExpansionModel.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: DecoratedTreeNode<Row>) {\n this.treeExpansionModel.ensureAncestorsAndSelfVisible(node);\n }\n\n\n // saveSelection() {\n // let ids: number[] = [];\n // const selectedArea = this._decoratedSelectionModel.leadSelection.value;\n // if (selectedArea) {\n // ids.push(selectedArea.id);\n // ids = ids.concat(selectedArea.siblingsAfter().map(a => a.id));\n // ids = ids.concat(selectedArea.siblingsBefore().reverse().map(a => a.id));\n // ids = ids.concat(selectedArea.ancestorsToZone().reverse().map(a => a.id));\n // }\n // this._storedSelection = ids;\n // }\n //\n //\n // restoreSelection() {\n // const all = this.rootNodeModel.value.selfAndDescendants();\n // for (let i = 0; i < this._storedSelection.length; i++) {\n // const id = this._storedSelection[i];\n // const found = all.find(area => area.id === id);\n // if (found) {\n // this.selectedAreaId.value = found.id;\n // break;\n // }\n // }\n // }\n //\n // collapseAll(areas: T[]) {\n // this.collapsedAreaIds.value = [].concat(this.collapsedAreaIds.value, areas.map(a => a.id));\n // }\n\n // disableSelection(disable: boolean = true) {\n // this._disableSelection.value = disable;\n // }\n\n\n}\n\n\n// /**\n// * 1. Make this a TreeModel<T extends AbstractTree>\n// * 2. Move the decorated items to the view (along with viewToModel and modelToView)\n// */\n// export class TreeTableModel<T, K extends keyof T> {\n//\n// // public readonly decoratedVisibleAreas: ListModel<T>;\n// //\n// // private decoratorCache = undefined; //new DecoratorCache();\n// // private collapsedAreaIds: MutableListModel<number> = new MutableListModel<number>();\n// //\n// // private _rawSelectionModel: SingleSelectionModel<T, T[K]>;\n// // private _decoratedSelectionModel: SingleSelectionModel<T, T[K]>;\n// //\n// // private readonly _disableSelection = new MutableValueModel<boolean>(false);\n// // private _hoveredAreaModel: MutableValueModel<T> = new MutableValueModel<T>();\n// //\n// // private _decoratedHoverModel: ValueModel<T> = new MutableValueModel<T>();\n// // private _storedSelection: number[] = [];\n// //\n// // readonly visibleNodes: ListModelChain<T>;\n// //\n// // protected constructor(readonly rootNodeModel: ValueModel<T>, identifiedBy: K, readonly selectedAreaId: MutableValueModel<K>) {\n// // super();\n// // const {chain, valueOf, before, when, after, observe, switchOn} = Dsl.disposeWith(this);\n// //\n// // this.visibleNodes = chain(this.rootNodeModel).mapToList(root => {\n// // return root.visit(new FlattenStrategy(this.collapsedAreaIds.value)).flattenedAreas;\n// // }, {dependsOn: this.collapsedAreaIds});\n// //\n// // this.decoratedVisibleAreas = this.visibleNodes.map(area => {\n// // return this.decoratorCache.get(area);\n// // });\n// //\n// // this._rawSelectionModel = this.registerDisposable(SingleSelectionModel.fromList(this.visibleNodes, identifiedBy, {\n// // storeIdIn: this.selectedAreaId,\n// // // toggleSelection: false\n// // }));\n// // this._rawSelectionModel.selectBehaviour.disableWhen(this._disableSelection);\n// // this._decoratedSelectionModel = this.registerDisposable(SingleSelectionModel.fromList(this.decoratedVisibleAreas, identifiedBy, {\n// // storeIdIn: this.selectedAreaId,\n// // toggleSelection: false\n// // }));\n// // this._decoratedSelectionModel.selectBehaviour.disableWhen(this._disableSelection);\n// //\n// // // our areas will be different objects so we have to save, restore the\n// // // selection and rebuild our decorators\n// // before(rootNodeModel).changes(() => this.saveSelection());\n// // before(rootNodeModel).changes(() => this.decoratorCache.clear());\n// // when(rootNodeModel).changes(() => this.restoreSelection(), {asLongAs: () => !!rootNodeModel.value});\n// //\n// //\n// // this.registerDisposable(new Binding(this._decoratedHoverModel, this._hoveredAreaModel, {\n// // toLeft: (area) => area ? this.modelToView(area) : null,\n// // toRight: (decoratedArea) => decoratedArea ? this.viewToModel(decoratedArea) : null\n// // }));\n// //\n// // when(this.decoratedSelectionModel.leadSelection)\n// // .changes(selection => this.ensureAncestorsAndSelfVisible(selection), {\n// // asLongAs: selection => !!selection\n// // });\n// // }\n// //\n// // static fromRoot<T, K extends keyof T>(rootNodeModel: ValueModel<T>, identifiedBy: K, options?: TreeModel.Options<T, K>) {\n// //\n// // }\n// //\n// // public viewToModel(decoratedArea: T): T {\n// // assert.notNil(decoratedArea);\n// // return TreeModel.AreaDecorator.undecorate(decoratedArea);\n// // }\n// //\n// // public modelToView(area: T): T {\n// // assert.notNil(area);\n// // return this.decoratorCache.get(area);\n// // }\n// //\n// // get hoveredAreaModel(): ValueModel<T> {\n// // return this._hoveredAreaModel;\n// // }\n// //\n// // clearHover() {\n// // this._hoveredAreaModel.value = null;\n// // }\n// //\n// // get selectionModel(): SelectionModel<T> {\n// // return this._rawSelectionModel;\n// // }\n// //\n// // get decoratedSelectionModel(): SelectionModel<T> {\n// // return this._decoratedSelectionModel;\n// // }\n// //\n// // get decoratedHoverModel(): ValueModel<T> {\n// // return this._decoratedHoverModel;\n// // }\n// //\n// // decoratedArea(area: T): T {\n// // return this.decoratorCache.get(area);\n// // }\n// //\n// // select(area: T) {\n// // this.selectedAreaId.value = area ? area.id : null;\n// // }\n// }\n\n\nexport namespace TreeTableModel {\n\n export interface Options<T, K extends keyof T> {\n storeIdIn: MutableValueModel<K>\n }\n\n // export interface DecoratedArea extendsTDecorator,T {\n // }\n //\n // export classTDecorator extends Decorator<T> {\n //\n // static decorate(area:T): DecoratedArea {\n // return Decorator.create(area, newTDecorator(area)) as DecoratedArea;\n // }\n //\n // pathToRoot() {\n // return this.object.ancestorsToZone().slice(1);\n // }\n //\n // isLastChild() {\n // return this.object.isLastChild();\n // }\n //\n // isRoot() {\n // return this.object.isZone();\n // }\n // }\n\n}\n\n\nexport class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {\n\n private _areas: T[] = [];\n private _collapsed: Set<T>;\n\n constructor(private collapsedIds: T[]) {\n super();\n this._collapsed = new Set<T>(collapsedIds);\n }\n\n protected onVisit(it: T) {\n this._areas.push(it);\n }\n\n protected shouldVisitChildrenOf(it: T): boolean {\n return !this._collapsed.has(it);\n }\n\n get flattenedAreas(): T[] {\n return this._areas;\n }\n\n}\n\n// class DecoratorCache {\n//\n// private map = new Map<number, T>();\n//\n// get(area:T): T {\n//\n// if (!area) return null;\n//\n// let decoratedArea = this.map.get(area.id);\n// if (!decoratedArea) {\n// decoratedArea = TreeModel.AreaDecorator.decorate(area);\n// this.map.set(area.id, decoratedArea);\n// }\n// return decoratedArea;\n// }\n//\n// clear() {\n// this.map.clear();\n// }\n//\n//\n// }\n\n\n\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeTableModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../table/abstract-table-model","name":"AbstractTableModel","line":13,"character":63},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":14,"character":22,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":14,"character":32,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":123,"context":{"typeName":"Row"}}]}]},{"__symbolic":"reference","module":"./tree-expansion-model","name":"TreeExpansionModel","line":14,"character":86,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":14,"character":32,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":123,"context":{"typeName":"Row"}}]}]}]}],"treeControlColumn":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"collapse":[{"__symbolic":"method"}],"isCollapsed":[{"__symbolic":"method"}],"ensureAncestorsAndSelfVisible":[{"__symbolic":"method"}]}},"FlattenStrategy":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./visitable.class","name":"SelfAndDescendantsVisitor","line":235,"character":67},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":240,"character":36,"context":{"typeName":"T"}}]}]}],"onVisit":[{"__symbolic":"method"}],"shouldVisitChildrenOf":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-table.component.scss.ngstyle.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-table.component.scss.ngstyle.ts"],"names":[],"mappings":"","sourcesContent":["import * as i0 from '@angular/core';\ni0.ComponentFactory;\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComputedListModel } from '@coolon/pectin';
|
|
2
|
+
import { DecoratedTreeNode } from './decorated-tree-node';
|
|
3
|
+
export class TreeToListModel extends ComputedListModel {
|
|
4
|
+
constructor(source, expansionModel) {
|
|
5
|
+
super(source);
|
|
6
|
+
this.source = source;
|
|
7
|
+
this.expansionModel = expansionModel;
|
|
8
|
+
this.trackSource(this.expansionModel.isExpandedPredicate);
|
|
9
|
+
}
|
|
10
|
+
getIdentityOf(item) {
|
|
11
|
+
return this.source.identityOf(item.node);
|
|
12
|
+
}
|
|
13
|
+
compute(values) {
|
|
14
|
+
const result = [];
|
|
15
|
+
values.forEach(value => this.addNodeAndVisibleChildren(DecoratedTreeNode.createRoot(value), result));
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
addNodeAndVisibleChildren(node, result) {
|
|
19
|
+
result.push(node);
|
|
20
|
+
if (node.hasChildren() && !this.expansionModel.isCollapsed(node)) {
|
|
21
|
+
node.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=tree-to-list-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-to-list-model.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/tree-to-list-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,OAAO,eAAuC,SAAQ,iBAA4C;IAEtG,YAA6B,MAAoB,EAAmB,cAAwD;QAC1H,KAAK,CAAC,MAAM,CAAC,CAAC;QADa,WAAM,GAAN,MAAM,CAAc;QAAmB,mBAAc,GAAd,cAAc,CAA0C;QAE1H,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAA0B;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,MAAW;QACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,yBAAyB,CAAC,IAA0B,EAAE,MAA8B;QAC1F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SAC/E;IACH,CAAC;CAEF","sourcesContent":["import { ComputedListModel, Dsl, GarbageCollector, ListModel, MutableListModel, Trace } from '@coolon/pectin';\nimport { DecoratedTreeNode } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeNode } from './tree-node';\n\nexport class TreeToListModel<T extends TreeNode<T>> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {\n\n constructor(private readonly source: ListModel<T>, private readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>) {\n super(source);\n this.trackSource(this.expansionModel.isExpandedPredicate);\n }\n\n getIdentityOf(item: DecoratedTreeNode<T>): any {\n return this.source.identityOf(item.node);\n }\n\n compute(values: T[]): DecoratedTreeNode<T>[] {\n const result: DecoratedTreeNode<T>[] = [];\n values.forEach(value => this.addNodeAndVisibleChildren(DecoratedTreeNode.createRoot(value), result));\n return result;\n }\n\n\n private addNodeAndVisibleChildren(node: DecoratedTreeNode<T>, result: DecoratedTreeNode<T>[], ) {\n result.push(node);\n if (node.hasChildren() && !this.expansionModel.isCollapsed(node)) {\n node.children.forEach(child => this.addNodeAndVisibleChildren(child, result));\n }\n }\n\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TreeToListModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"ComputedListModel","line":5,"character":60},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":7,"character":39,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":7,"character":49,"context":{"typeName":"T"}}]},{"__symbolic":"reference","module":"./tree-expansion-model","name":"TreeExpansionModel","line":7,"character":86,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":7,"character":105,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":7,"character":123,"context":{"typeName":"T"}}]}]}]}],"getIdentityOf":[{"__symbolic":"method"}],"compute":[{"__symbolic":"method"}],"addNodeAndVisibleChildren":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class SelfAndDescendantsVisitor {
|
|
2
|
+
constructor() {
|
|
3
|
+
}
|
|
4
|
+
visit(it) {
|
|
5
|
+
this.onVisit(it);
|
|
6
|
+
if (this.shouldVisitChildrenOf(it)) {
|
|
7
|
+
it.visitChildren(this);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
shouldVisitChildrenOf(it) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
(function (SelfAndDescendantsVisitor) {
|
|
15
|
+
class Each extends SelfAndDescendantsVisitor {
|
|
16
|
+
constructor(callback) {
|
|
17
|
+
super();
|
|
18
|
+
this.callback = callback;
|
|
19
|
+
}
|
|
20
|
+
onVisit(it) {
|
|
21
|
+
this.callback(it);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
SelfAndDescendantsVisitor.Each = Each;
|
|
25
|
+
})(SelfAndDescendantsVisitor || (SelfAndDescendantsVisitor = {}));
|
|
26
|
+
//# sourceMappingURL=visitable.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitable.class.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/tree-table/visitable.class.ts"],"names":[],"mappings":"AAaA,MAAM,OAAgB,yBAAyB;IAE3C;IACA,CAAC;IAED,KAAK,CAAC,EAAK;QACP,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE;YAChC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1B;IACL,CAAC;IAIS,qBAAqB,CAAC,EAAK;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,WAAiB,yBAAyB;IAEtC,MAAa,IAAmC,SAAQ,yBAA4B;QAChF,YAAoB,QAAyB;YACzC,KAAK,EAAE,CAAC;YADQ,aAAQ,GAAR,QAAQ,CAAiB;QAE7C,CAAC;QACS,OAAO,CAAC,EAAK;YACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;KACJ;IAPY,8BAAI,OAOhB,CAAA;AACL,CAAC,EAVgB,yBAAyB,KAAzB,yBAAyB,QAUzC","sourcesContent":["export interface Visitor<T> {\n visit(it: T);\n}\n\nexport interface Visitable<T> {\n visit<V extends Visitor<T>>(it: V):V;\n}\n\nexport interface VisitableTree<T> extends Visitable<T> {\n visitChildren<V extends Visitor<T>>(it: V):V;\n}\n\n\nexport abstract class SelfAndDescendantsVisitor<T extends VisitableTree<T>> implements Visitor<T> {\n\n constructor() {\n }\n\n visit(it: T) {\n this.onVisit(it);\n if (this.shouldVisitChildrenOf(it)) {\n it.visitChildren(this);\n }\n }\n\n protected abstract onVisit(it: T);\n\n protected shouldVisitChildrenOf(it: T): boolean {\n return true;\n }\n}\n\nexport namespace SelfAndDescendantsVisitor {\n\n export class Each<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {\n constructor(private callback: (it: T) => void) {\n super();\n }\n protected onVisit(it: T) {\n this.callback(it);\n }\n }\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"Visitor":{"__symbolic":"interface"},"Visitable":{"__symbolic":"interface"},"VisitableTree":{"__symbolic":"interface"},"SelfAndDescendantsVisitor":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor"}],"visit":[{"__symbolic":"method"}],"onVisit":[{"__symbolic":"method"}],"shouldVisitChildrenOf":[{"__symbolic":"method"}]}}}}]
|