@j2inn/resolvable-ui-elements 1.1.3 → 1.2.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +12 -1
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagBatcher.d.ts +25 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagBatcher.js +68 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagBatcher.js.map +1 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +3 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +10 -2
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +12 -1
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagBatcher.d.ts +25 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagBatcher.js +64 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagBatcher.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +3 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +10 -2
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,8 @@ exports.isChildUnresolvedSection = exports.ResolvableSectionElement = void 0;
|
|
|
7
7
|
const makeElement_1 = require("../makeElement");
|
|
8
8
|
const ResolvableElement_1 = require("../ResolvableElement");
|
|
9
9
|
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
10
|
+
const ResolvableTagBatcher_1 = require("../tag/ResolvableTagBatcher");
|
|
11
|
+
const ResolvableTagElement_1 = require("../tag/ResolvableTagElement");
|
|
10
12
|
const SectionElementMeta_1 = require("./SectionElementMeta");
|
|
11
13
|
/**
|
|
12
14
|
* A container of elements that can be resolve them by propagation of the lifecycle functions.
|
|
@@ -86,14 +88,23 @@ class ResolvableSectionElement extends ResolvableElement_1.ResolvableElement {
|
|
|
86
88
|
}
|
|
87
89
|
doInitialize = async (parameters) => {
|
|
88
90
|
const promises = [];
|
|
91
|
+
const batcher = new ResolvableTagBatcher_1.ResolvableTagBatcher();
|
|
89
92
|
for (const child of this.children) {
|
|
90
93
|
if ((0, exports.isChildUnresolvedSection)(child) && child[0]) {
|
|
91
94
|
this._value[child[0]] = child[1];
|
|
92
95
|
}
|
|
93
96
|
else if (child instanceof ResolvableElement_1.ResolvableElement) {
|
|
94
|
-
|
|
97
|
+
if (child instanceof ResolvableTagElement_1.ResolvableTagElement) {
|
|
98
|
+
batcher.addElement(child);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
promises.push(child.initialize(parameters));
|
|
102
|
+
}
|
|
95
103
|
}
|
|
96
104
|
}
|
|
105
|
+
if (!batcher.isEmpty()) {
|
|
106
|
+
promises.push(batcher.initialize(parameters));
|
|
107
|
+
}
|
|
97
108
|
this.onUpdate(this.value);
|
|
98
109
|
await Promise.all(promises);
|
|
99
110
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { UiElementData } from '../UiElement';
|
|
3
|
+
import { ResolvableTagElement } from './ResolvableTagElement';
|
|
4
|
+
/**
|
|
5
|
+
* Utility class to group ResolvableTagElement queries.
|
|
6
|
+
* If two or more elements have the same filter (reading different tags of the same record),
|
|
7
|
+
* only one query will be executed over the network.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ResolvableTagBatcher<T extends UiElementData> {
|
|
10
|
+
elements: ResolvableTagElement<T>[];
|
|
11
|
+
constructor();
|
|
12
|
+
addElement(tagElement: ResolvableTagElement<T>): void;
|
|
13
|
+
isEmpty(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize all the ResolvableTagElements, optimizing the number of queries sent
|
|
16
|
+
* over the network.
|
|
17
|
+
* @param parameters the HDict with the query parameters.
|
|
18
|
+
*/
|
|
19
|
+
initialize(parameters: HDict): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a map with the filter as key, and the list of elements with that
|
|
22
|
+
* filter as values.
|
|
23
|
+
*/
|
|
24
|
+
private groupElementsByFilter;
|
|
25
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolvableTagBatcher = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Utility class to group ResolvableTagElement queries.
|
|
6
|
+
* If two or more elements have the same filter (reading different tags of the same record),
|
|
7
|
+
* only one query will be executed over the network.
|
|
8
|
+
*/
|
|
9
|
+
class ResolvableTagBatcher {
|
|
10
|
+
elements;
|
|
11
|
+
constructor() {
|
|
12
|
+
this.elements = [];
|
|
13
|
+
}
|
|
14
|
+
addElement(tagElement) {
|
|
15
|
+
this.elements.push(tagElement);
|
|
16
|
+
}
|
|
17
|
+
isEmpty() {
|
|
18
|
+
return this.elements.length === 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize all the ResolvableTagElements, optimizing the number of queries sent
|
|
22
|
+
* over the network.
|
|
23
|
+
* @param parameters the HDict with the query parameters.
|
|
24
|
+
*/
|
|
25
|
+
async initialize(parameters) {
|
|
26
|
+
if (!this.isEmpty()) {
|
|
27
|
+
// Take the resolver of the first element
|
|
28
|
+
const resolver = this.elements[0]?.resolver;
|
|
29
|
+
if (!resolver) {
|
|
30
|
+
throw Error('Resolver is null, cannot initialize batch');
|
|
31
|
+
}
|
|
32
|
+
const groupByFilterMap = this.groupElementsByFilter(parameters);
|
|
33
|
+
// Execute each unique filter once.
|
|
34
|
+
const queryResultsMap = new Map();
|
|
35
|
+
for (const filter of groupByFilterMap.keys()) {
|
|
36
|
+
queryResultsMap.set(filter, resolver.read(filter));
|
|
37
|
+
}
|
|
38
|
+
// Reuse the result for all the elements with the same filter.
|
|
39
|
+
const promises = [];
|
|
40
|
+
for (const entry of queryResultsMap.entries()) {
|
|
41
|
+
const [filter, readOp] = entry;
|
|
42
|
+
const grid = await readOp;
|
|
43
|
+
const elements = groupByFilterMap.get(filter);
|
|
44
|
+
if (elements) {
|
|
45
|
+
promises.push(...elements.map((element) => element.onReadResult(grid)));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
await Promise.allSettled(promises);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates a map with the filter as key, and the list of elements with that
|
|
53
|
+
* filter as values.
|
|
54
|
+
*/
|
|
55
|
+
groupElementsByFilter(parameters) {
|
|
56
|
+
const groupByFilterMap = new Map();
|
|
57
|
+
this.elements.forEach((element) => {
|
|
58
|
+
const filter = element.buildFilter(parameters);
|
|
59
|
+
if (!groupByFilterMap.has(filter)) {
|
|
60
|
+
groupByFilterMap.set(filter, []);
|
|
61
|
+
}
|
|
62
|
+
groupByFilterMap.get(filter)?.push(element);
|
|
63
|
+
});
|
|
64
|
+
return groupByFilterMap;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.ResolvableTagBatcher = ResolvableTagBatcher;
|
|
68
|
+
//# sourceMappingURL=ResolvableTagBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResolvableTagBatcher.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagBatcher.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,MAAa,oBAAoB;IAChC,QAAQ,CAA2B;IAEnC;QACC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,UAAU,CAAC,UAAmC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,UAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpB,yCAAyC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA;YAC3C,IAAI,CAAC,QAAQ,EAAE;gBACd,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAA;aACxD;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;YAE/D,mCAAmC;YACnC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAiC,CAAA;YAChE,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE;gBAC7C,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;aAClD;YAED,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;gBAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAA;gBAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;gBAEzB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7C,IAAI,QAAQ,EAAE;oBACb,QAAQ,CAAC,IAAI,CACZ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACxD,CAAA;iBACD;aACD;YAED,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;SAClC;IACF,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAC5B,UAAiB;QAEjB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAqC,CAAA;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAClC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;aAChC;YAED,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,OAAO,gBAAgB,CAAA;IACxB,CAAC;CACD;AAxED,oDAwEC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
1
|
+
import { HDict, HGrid } from 'haystack-core';
|
|
2
2
|
import { Watch } from 'haystack-nclient';
|
|
3
3
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
4
|
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
@@ -10,7 +10,9 @@ export declare class ResolvableTagElement<T extends UiElementData> extends Resol
|
|
|
10
10
|
constructor(data: UiElementConstructorData<T>);
|
|
11
11
|
filter?: string;
|
|
12
12
|
watch?: Watch;
|
|
13
|
+
buildFilter: (parameters: HDict) => string;
|
|
13
14
|
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
15
|
+
onReadResult: (grid: HGrid<HDict>) => Promise<void>;
|
|
14
16
|
protected doClose: () => Promise<void>;
|
|
15
17
|
getParameterList: () => string[];
|
|
16
18
|
}
|
|
@@ -18,19 +18,27 @@ class ResolvableTagElement extends ResolvableValueElement_1.ResolvableValueEleme
|
|
|
18
18
|
}
|
|
19
19
|
filter;
|
|
20
20
|
watch;
|
|
21
|
-
|
|
22
|
-
const {
|
|
21
|
+
buildFilter = (parameters) => {
|
|
22
|
+
const { entityBinding, parentBinding } = this
|
|
23
23
|
._meta;
|
|
24
24
|
const filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(UiElement_1.UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
25
25
|
if (!this.#isValidFilter(filter)) {
|
|
26
26
|
throw Error('Invalid filter');
|
|
27
27
|
}
|
|
28
28
|
this.filter = filter;
|
|
29
|
+
return filter;
|
|
30
|
+
};
|
|
31
|
+
doInitialize = async (parameters) => {
|
|
32
|
+
this.filter = this.buildFilter(parameters);
|
|
29
33
|
const grid = await this.resolver.read(this.filter);
|
|
34
|
+
await this.onReadResult(grid);
|
|
35
|
+
};
|
|
36
|
+
onReadResult = async (grid) => {
|
|
30
37
|
if (!this.#isValidReadGrid(grid)) {
|
|
31
38
|
return;
|
|
32
39
|
}
|
|
33
40
|
this.#updateValue(grid);
|
|
41
|
+
const { subscribe } = this._meta;
|
|
34
42
|
if (subscribe) {
|
|
35
43
|
await this.#setupWatch(grid);
|
|
36
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableTagElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAqD;AACrD,uDAAgE;AAChE,iFAGyC;AAEzC,sEAAkE;AAClE,4CAIqB;AAIrB;;GAEG;AACH,MAAa,oBAEX,SAAQ,+CAAyB;IAClC,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,MAAM,CAAS;IACf,KAAK,CAAQ;
|
|
1
|
+
{"version":3,"file":"ResolvableTagElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
import { makeElement } from '../makeElement';
|
|
5
5
|
import { ResolvableElement } from '../ResolvableElement';
|
|
6
6
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
7
|
+
import { ResolvableTagBatcher } from '../tag/ResolvableTagBatcher';
|
|
8
|
+
import { ResolvableTagElement } from '../tag/ResolvableTagElement';
|
|
7
9
|
import { isSectionData, } from './SectionElementMeta';
|
|
8
10
|
/**
|
|
9
11
|
* A container of elements that can be resolve them by propagation of the lifecycle functions.
|
|
@@ -83,14 +85,23 @@ export class ResolvableSectionElement extends ResolvableElement {
|
|
|
83
85
|
}
|
|
84
86
|
doInitialize = async (parameters) => {
|
|
85
87
|
const promises = [];
|
|
88
|
+
const batcher = new ResolvableTagBatcher();
|
|
86
89
|
for (const child of this.children) {
|
|
87
90
|
if (isChildUnresolvedSection(child) && child[0]) {
|
|
88
91
|
this._value[child[0]] = child[1];
|
|
89
92
|
}
|
|
90
93
|
else if (child instanceof ResolvableElement) {
|
|
91
|
-
|
|
94
|
+
if (child instanceof ResolvableTagElement) {
|
|
95
|
+
batcher.addElement(child);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
promises.push(child.initialize(parameters));
|
|
99
|
+
}
|
|
92
100
|
}
|
|
93
101
|
}
|
|
102
|
+
if (!batcher.isEmpty()) {
|
|
103
|
+
promises.push(batcher.initialize(parameters));
|
|
104
|
+
}
|
|
94
105
|
this.onUpdate(this.value);
|
|
95
106
|
await Promise.all(promises);
|
|
96
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { UiElementData } from '../UiElement';
|
|
3
|
+
import { ResolvableTagElement } from './ResolvableTagElement';
|
|
4
|
+
/**
|
|
5
|
+
* Utility class to group ResolvableTagElement queries.
|
|
6
|
+
* If two or more elements have the same filter (reading different tags of the same record),
|
|
7
|
+
* only one query will be executed over the network.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ResolvableTagBatcher<T extends UiElementData> {
|
|
10
|
+
elements: ResolvableTagElement<T>[];
|
|
11
|
+
constructor();
|
|
12
|
+
addElement(tagElement: ResolvableTagElement<T>): void;
|
|
13
|
+
isEmpty(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize all the ResolvableTagElements, optimizing the number of queries sent
|
|
16
|
+
* over the network.
|
|
17
|
+
* @param parameters the HDict with the query parameters.
|
|
18
|
+
*/
|
|
19
|
+
initialize(parameters: HDict): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a map with the filter as key, and the list of elements with that
|
|
22
|
+
* filter as values.
|
|
23
|
+
*/
|
|
24
|
+
private groupElementsByFilter;
|
|
25
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class to group ResolvableTagElement queries.
|
|
3
|
+
* If two or more elements have the same filter (reading different tags of the same record),
|
|
4
|
+
* only one query will be executed over the network.
|
|
5
|
+
*/
|
|
6
|
+
export class ResolvableTagBatcher {
|
|
7
|
+
elements;
|
|
8
|
+
constructor() {
|
|
9
|
+
this.elements = [];
|
|
10
|
+
}
|
|
11
|
+
addElement(tagElement) {
|
|
12
|
+
this.elements.push(tagElement);
|
|
13
|
+
}
|
|
14
|
+
isEmpty() {
|
|
15
|
+
return this.elements.length === 0;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Initialize all the ResolvableTagElements, optimizing the number of queries sent
|
|
19
|
+
* over the network.
|
|
20
|
+
* @param parameters the HDict with the query parameters.
|
|
21
|
+
*/
|
|
22
|
+
async initialize(parameters) {
|
|
23
|
+
if (!this.isEmpty()) {
|
|
24
|
+
// Take the resolver of the first element
|
|
25
|
+
const resolver = this.elements[0]?.resolver;
|
|
26
|
+
if (!resolver) {
|
|
27
|
+
throw Error('Resolver is null, cannot initialize batch');
|
|
28
|
+
}
|
|
29
|
+
const groupByFilterMap = this.groupElementsByFilter(parameters);
|
|
30
|
+
// Execute each unique filter once.
|
|
31
|
+
const queryResultsMap = new Map();
|
|
32
|
+
for (const filter of groupByFilterMap.keys()) {
|
|
33
|
+
queryResultsMap.set(filter, resolver.read(filter));
|
|
34
|
+
}
|
|
35
|
+
// Reuse the result for all the elements with the same filter.
|
|
36
|
+
const promises = [];
|
|
37
|
+
for (const entry of queryResultsMap.entries()) {
|
|
38
|
+
const [filter, readOp] = entry;
|
|
39
|
+
const grid = await readOp;
|
|
40
|
+
const elements = groupByFilterMap.get(filter);
|
|
41
|
+
if (elements) {
|
|
42
|
+
promises.push(...elements.map((element) => element.onReadResult(grid)));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
await Promise.allSettled(promises);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a map with the filter as key, and the list of elements with that
|
|
50
|
+
* filter as values.
|
|
51
|
+
*/
|
|
52
|
+
groupElementsByFilter(parameters) {
|
|
53
|
+
const groupByFilterMap = new Map();
|
|
54
|
+
this.elements.forEach((element) => {
|
|
55
|
+
const filter = element.buildFilter(parameters);
|
|
56
|
+
if (!groupByFilterMap.has(filter)) {
|
|
57
|
+
groupByFilterMap.set(filter, []);
|
|
58
|
+
}
|
|
59
|
+
groupByFilterMap.get(filter)?.push(element);
|
|
60
|
+
});
|
|
61
|
+
return groupByFilterMap;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ResolvableTagBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResolvableTagBatcher.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagBatcher.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAChC,QAAQ,CAA2B;IAEnC;QACC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,UAAU,CAAC,UAAmC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,UAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpB,yCAAyC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA;YAC3C,IAAI,CAAC,QAAQ,EAAE;gBACd,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAA;aACxD;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;YAE/D,mCAAmC;YACnC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAiC,CAAA;YAChE,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE;gBAC7C,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;aAClD;YAED,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;gBAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAA;gBAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;gBAEzB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7C,IAAI,QAAQ,EAAE;oBACb,QAAQ,CAAC,IAAI,CACZ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACxD,CAAA;iBACD;aACD;YAED,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;SAClC;IACF,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAC5B,UAAiB;QAEjB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAqC,CAAA;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAClC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;aAChC;YAED,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,OAAO,gBAAgB,CAAA;IACxB,CAAC;CACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
1
|
+
import { HDict, HGrid } from 'haystack-core';
|
|
2
2
|
import { Watch } from 'haystack-nclient';
|
|
3
3
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
4
|
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
@@ -10,7 +10,9 @@ export declare class ResolvableTagElement<T extends UiElementData> extends Resol
|
|
|
10
10
|
constructor(data: UiElementConstructorData<T>);
|
|
11
11
|
filter?: string;
|
|
12
12
|
watch?: Watch;
|
|
13
|
+
buildFilter: (parameters: HDict) => string;
|
|
13
14
|
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
15
|
+
onReadResult: (grid: HGrid<HDict>) => Promise<void>;
|
|
14
16
|
protected doClose: () => Promise<void>;
|
|
15
17
|
getParameterList: () => string[];
|
|
16
18
|
}
|
|
@@ -15,19 +15,27 @@ export class ResolvableTagElement extends ResolvableValueElement {
|
|
|
15
15
|
}
|
|
16
16
|
filter;
|
|
17
17
|
watch;
|
|
18
|
-
|
|
19
|
-
const {
|
|
18
|
+
buildFilter = (parameters) => {
|
|
19
|
+
const { entityBinding, parentBinding } = this
|
|
20
20
|
._meta;
|
|
21
21
|
const filter = resolveTemplateExpression(UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
22
22
|
if (!this.#isValidFilter(filter)) {
|
|
23
23
|
throw Error('Invalid filter');
|
|
24
24
|
}
|
|
25
25
|
this.filter = filter;
|
|
26
|
+
return filter;
|
|
27
|
+
};
|
|
28
|
+
doInitialize = async (parameters) => {
|
|
29
|
+
this.filter = this.buildFilter(parameters);
|
|
26
30
|
const grid = await this.resolver.read(this.filter);
|
|
31
|
+
await this.onReadResult(grid);
|
|
32
|
+
};
|
|
33
|
+
onReadResult = async (grid) => {
|
|
27
34
|
if (!this.#isValidReadGrid(grid)) {
|
|
28
35
|
return;
|
|
29
36
|
}
|
|
30
37
|
this.#updateValue(grid);
|
|
38
|
+
const { subscribe } = this._meta;
|
|
31
39
|
if (subscribe) {
|
|
32
40
|
await this.#setupWatch(grid);
|
|
33
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableTagElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,OAAO,EAAS,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAS,MAAM,kBAAkB,CAAA;AAChE,OAAO,EACN,wBAAwB,EACxB,yBAAyB,GACzB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EACN,SAAS,GAGT,MAAM,cAAc,CAAA;AAIrB;;GAEG;AACH,MAAM,OAAO,oBAEX,SAAQ,sBAAyB;IAClC,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,MAAM,CAAS;IACf,KAAK,CAAQ;
|
|
1
|
+
{"version":3,"file":"ResolvableTagElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagElement.ts"],"names":[],"mappings":"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"}
|