@j2inn/resolvable-ui-elements 1.0.2-alpha.0 → 1.0.2-beta.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/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +0 -3
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +10 -54
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -1
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +0 -2
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -1
- package/dist_es/index.d.ts +1 -0
- package/dist_es/index.js +1 -0
- package/dist_es/index.js.map +1 -1
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +0 -3
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +11 -55
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +0 -2
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { type FunctionResult } from './resolvableElements/elements/function/Func
|
|
|
2
2
|
export { type ResolvableValueElementMeta } from './resolvableElements/elements/ResolvableValueElement';
|
|
3
3
|
export { isSectionData, type ParametersOfSection, type ResolvedSection, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
4
4
|
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
5
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
5
6
|
export * from './resolvableElements/react/SectionChecker';
|
|
6
7
|
export * from './resolvableElements/react/useResolverContext';
|
|
7
8
|
export * from './resolvableElements/react/useResolveSection';
|
package/dist/index.js
CHANGED
|
@@ -17,9 +17,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
17
17
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.isSectionData = void 0;
|
|
20
|
+
exports.resolveTemplateExpression = exports.isSectionData = void 0;
|
|
21
21
|
var SectionElementMeta_1 = require("./resolvableElements/elements/section/SectionElementMeta");
|
|
22
22
|
Object.defineProperty(exports, "isSectionData", { enumerable: true, get: function () { return SectionElementMeta_1.isSectionData; } });
|
|
23
|
+
var resolveTemplatedExpression_1 = require("./resolvableElements/resolveTemplatedExpression");
|
|
24
|
+
Object.defineProperty(exports, "resolveTemplateExpression", { enumerable: true, get: function () { return resolveTemplatedExpression_1.resolveTemplateExpression; } });
|
|
23
25
|
//////////////////////////////////////////////////////////////////////////
|
|
24
26
|
// React
|
|
25
27
|
//////////////////////////////////////////////////////////////////////////
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAOH,+FAIiE;AAHhE,mHAAA,aAAa,OAAA;AAKd,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,4EAAyD;AACzD,gFAA6D;AAC7D,+EAA4D;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,mDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAOH,+FAIiE;AAHhE,mHAAA,aAAa,OAAA;AAKd,8FAA2F;AAAlF,uIAAA,yBAAyB,OAAA;AAClC,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,4EAAyD;AACzD,gFAA6D;AAC7D,+EAA4D;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,mDAAgC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { HDict } from 'haystack-core';
|
|
2
|
-
import { Watch } from 'haystack-nclient';
|
|
3
2
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
3
|
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
5
4
|
/**
|
|
@@ -10,8 +9,6 @@ export declare class ResolvableExprElement<T extends UiElementData> extends Reso
|
|
|
10
9
|
static collectionTypes: Set<string>;
|
|
11
10
|
constructor(data: UiElementConstructorData<T>);
|
|
12
11
|
refreshes: number;
|
|
13
|
-
watch?: Watch;
|
|
14
|
-
resolvedExpression?: string;
|
|
15
12
|
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
16
13
|
/**
|
|
17
14
|
* Checks whether the declared resolvedType of this element is a collection.
|
|
@@ -7,7 +7,6 @@ exports.ResolvableExprElement = void 0;
|
|
|
7
7
|
const haystack_core_1 = require("haystack-core");
|
|
8
8
|
const haystack_units_1 = require("haystack-units");
|
|
9
9
|
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
-
const haystack_nclient_1 = require("haystack-nclient");
|
|
11
10
|
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
12
11
|
/**
|
|
13
12
|
* Resolves to the result of an expression.
|
|
@@ -19,41 +18,17 @@ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElem
|
|
|
19
18
|
}
|
|
20
19
|
refreshes = 0;
|
|
21
20
|
#timeout;
|
|
22
|
-
watch;
|
|
23
|
-
resolvedExpression;
|
|
24
21
|
doInitialize = async (parameters) => {
|
|
25
22
|
await this.#updateValue(parameters);
|
|
26
|
-
// Setup watch if we're expecting a grid or dict result containing a record id.
|
|
27
|
-
if (this.isExpectedResultACollection()) {
|
|
28
|
-
let grid;
|
|
29
|
-
if ((0, haystack_core_1.valueIsKind)(this.value, haystack_core_1.Kind.Grid)) {
|
|
30
|
-
grid = this.value;
|
|
31
|
-
}
|
|
32
|
-
else if ((0, haystack_core_1.valueIsKind)(this.value, haystack_core_1.Kind.Dict)) {
|
|
33
|
-
grid = haystack_core_1.HGrid.make(this.value);
|
|
34
|
-
}
|
|
35
|
-
if (grid && grid.hasColumn('id')) {
|
|
36
|
-
await this.#setupWatch(grid);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
23
|
};
|
|
40
24
|
#updateValue = async (parameters) => {
|
|
41
25
|
const { expr, refreshAfter } = this._meta;
|
|
42
|
-
|
|
43
|
-
const grid = await this.resolver.eval(
|
|
26
|
+
const resolvedExpression = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, parameters);
|
|
27
|
+
const grid = await this.resolver.eval(resolvedExpression);
|
|
44
28
|
if (grid.isError()) {
|
|
45
|
-
console.error('Empty grid result for expression: \n',
|
|
29
|
+
console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
|
|
46
30
|
return;
|
|
47
31
|
}
|
|
48
|
-
this.#setValue(grid);
|
|
49
|
-
if (refreshAfter) {
|
|
50
|
-
this.#timeout = setTimeout(() => {
|
|
51
|
-
this.refreshes++;
|
|
52
|
-
this.#updateValue(parameters);
|
|
53
|
-
}, haystack_core_1.HNum.make(refreshAfter, haystack_units_1.second).convertTo(haystack_units_1.millisecond).value);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
#setValue(grid) {
|
|
57
32
|
const val = grid[0]?.get('val');
|
|
58
33
|
// Identify when it's necessary to unpack the result `val` or not
|
|
59
34
|
// since the eval wraps the result value in a grid's first dict `val` tag for non-collections.
|
|
@@ -64,7 +39,13 @@ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElem
|
|
|
64
39
|
else {
|
|
65
40
|
this.value = grid;
|
|
66
41
|
}
|
|
67
|
-
|
|
42
|
+
if (refreshAfter) {
|
|
43
|
+
this.#timeout = setTimeout(() => {
|
|
44
|
+
this.refreshes++;
|
|
45
|
+
this.#updateValue(parameters);
|
|
46
|
+
}, haystack_core_1.HNum.make(refreshAfter, haystack_units_1.second).convertTo(haystack_units_1.millisecond).value);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
68
49
|
/**
|
|
69
50
|
* Checks whether the declared resolvedType of this element is a collection.
|
|
70
51
|
* @returns true if the resolvedType is a collection.
|
|
@@ -78,7 +59,6 @@ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElem
|
|
|
78
59
|
if (this.#timeout) {
|
|
79
60
|
clearTimeout(this.#timeout);
|
|
80
61
|
}
|
|
81
|
-
return this.watch?.close();
|
|
82
62
|
};
|
|
83
63
|
getParameterList = () => {
|
|
84
64
|
const { expr } = this._meta;
|
|
@@ -91,30 +71,6 @@ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElem
|
|
|
91
71
|
}
|
|
92
72
|
return parameters;
|
|
93
73
|
};
|
|
94
|
-
#setupWatch = async (grid) => {
|
|
95
|
-
const { subscribePollRate, subscribe } = this
|
|
96
|
-
._meta;
|
|
97
|
-
if (subscribe) {
|
|
98
|
-
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
99
|
-
const updateValue = () => {
|
|
100
|
-
if (this.watch?.grid) {
|
|
101
|
-
this.#setValue(this.watch?.grid);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
// Update with the value received when opening the watch
|
|
105
|
-
updateValue();
|
|
106
|
-
// Configure polling options
|
|
107
|
-
this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
|
|
108
|
-
this.watch.changed({
|
|
109
|
-
callback: updateValue,
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
#getWatchDisplayName = () => {
|
|
114
|
-
return `ResolvableElement Watch for ${this.name ??
|
|
115
|
-
this.resolvedExpression ??
|
|
116
|
-
this._meta.expr}`;
|
|
117
|
-
};
|
|
118
74
|
}
|
|
119
75
|
exports.ResolvableExprElement = ResolvableExprElement;
|
|
120
76
|
//# sourceMappingURL=ResolvableExprElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA2C;AAC3C,mDAAoD;AACpD,iFAGyC;AAEzC,sEAAkE;AAIlE;;GAEG;AACH,MAAa,qBAEX,SAAQ,+CAAyB;IAClC,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpD,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,SAAS,GAAG,CAAC,CAAA;IACb,QAAQ,CAAS;IAEP,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACnE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACzD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAEtE,MAAM,kBAAkB,GAAG,IAAA,sDAAyB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAEtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAEzD,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CACZ,sCAAsC,EACtC,kBAAkB,EAClB,IAAI,CAAC,QAAQ,EAAE,CACf,CAAA;YACD,OAAM;SACN;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAE/B,iEAAiE;QACjE,8FAA8F;QAC9F,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,GAAG,CAAA;QACrE,IAAI,kBAAkB,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;SAChB;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;SACjB;QAED,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC,EAAE,oBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAM,CAAC,CAAC,SAAS,CAAC,4BAAW,CAAC,CAAC,KAAK,CAAsB,CAAA;SACrF;IACF,CAAC,CAAA;IAED;;;OAGG;IACH,2BAA2B,GAAG,GAAY,EAAE;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAEhE,OAAO,CACN,qBAAqB,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;YACvD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3B,CAAA;IACF,CAAC,CAAA;IAES,OAAO,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC3B;IACF,CAAC,CAAA;IAED,gBAAgB,GAAmB,GAAG,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAExD,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,IAAI,IAAI,EAAE;YACT,IAAA,qDAAwB,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACtB,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;SACF;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;;AAnFF,sDAoFC"}
|
|
@@ -4,8 +4,6 @@ export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
|
|
|
4
4
|
resolutionType: 'expr';
|
|
5
5
|
expr: string;
|
|
6
6
|
refreshAfter: number;
|
|
7
|
-
subscribe?: boolean;
|
|
8
|
-
subscribePollRate?: number;
|
|
9
7
|
}
|
|
10
8
|
export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
|
|
11
9
|
export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAWI,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,mCAA2B,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC;AAEM,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC"}
|
package/dist_es/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { type FunctionResult } from './resolvableElements/elements/function/Func
|
|
|
2
2
|
export { type ResolvableValueElementMeta } from './resolvableElements/elements/ResolvableValueElement';
|
|
3
3
|
export { isSectionData, type ParametersOfSection, type ResolvedSection, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
4
4
|
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
5
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
5
6
|
export * from './resolvableElements/react/SectionChecker';
|
|
6
7
|
export * from './resolvableElements/react/useResolverContext';
|
|
7
8
|
export * from './resolvableElements/react/useResolveSection';
|
package/dist_es/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
3
|
*/
|
|
4
4
|
export { isSectionData, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
5
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
5
6
|
//////////////////////////////////////////////////////////////////////////
|
|
6
7
|
// React
|
|
7
8
|
//////////////////////////////////////////////////////////////////////////
|
package/dist_es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EACN,aAAa,GAGb,MAAM,0DAA0D,CAAA;AAEjE,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EACN,aAAa,GAGb,MAAM,0DAA0D,CAAA;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAA;AAC3F,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,kBAAkB,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { HDict } from 'haystack-core';
|
|
2
|
-
import { Watch } from 'haystack-nclient';
|
|
3
2
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
3
|
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
5
4
|
/**
|
|
@@ -10,8 +9,6 @@ export declare class ResolvableExprElement<T extends UiElementData> extends Reso
|
|
|
10
9
|
static collectionTypes: Set<string>;
|
|
11
10
|
constructor(data: UiElementConstructorData<T>);
|
|
12
11
|
refreshes: number;
|
|
13
|
-
watch?: Watch;
|
|
14
|
-
resolvedExpression?: string;
|
|
15
12
|
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
16
13
|
/**
|
|
17
14
|
* Checks whether the declared resolvedType of this element is a collection.
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { HNum } from 'haystack-core';
|
|
5
5
|
import { millisecond, second } from 'haystack-units';
|
|
6
6
|
import { replaceTemplateVariables, resolveTemplateExpression, } from '../../resolveTemplatedExpression';
|
|
7
|
-
import { DEFAULT_POLL_RATE_SECS } from 'haystack-nclient';
|
|
8
7
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
9
8
|
/**
|
|
10
9
|
* Resolves to the result of an expression.
|
|
@@ -16,41 +15,17 @@ export class ResolvableExprElement extends ResolvableValueElement {
|
|
|
16
15
|
}
|
|
17
16
|
refreshes = 0;
|
|
18
17
|
#timeout;
|
|
19
|
-
watch;
|
|
20
|
-
resolvedExpression;
|
|
21
18
|
doInitialize = async (parameters) => {
|
|
22
19
|
await this.#updateValue(parameters);
|
|
23
|
-
// Setup watch if we're expecting a grid or dict result containing a record id.
|
|
24
|
-
if (this.isExpectedResultACollection()) {
|
|
25
|
-
let grid;
|
|
26
|
-
if (valueIsKind(this.value, Kind.Grid)) {
|
|
27
|
-
grid = this.value;
|
|
28
|
-
}
|
|
29
|
-
else if (valueIsKind(this.value, Kind.Dict)) {
|
|
30
|
-
grid = HGrid.make(this.value);
|
|
31
|
-
}
|
|
32
|
-
if (grid && grid.hasColumn('id')) {
|
|
33
|
-
await this.#setupWatch(grid);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
20
|
};
|
|
37
21
|
#updateValue = async (parameters) => {
|
|
38
22
|
const { expr, refreshAfter } = this._meta;
|
|
39
|
-
|
|
40
|
-
const grid = await this.resolver.eval(
|
|
23
|
+
const resolvedExpression = resolveTemplateExpression(expr, parameters);
|
|
24
|
+
const grid = await this.resolver.eval(resolvedExpression);
|
|
41
25
|
if (grid.isError()) {
|
|
42
|
-
console.error('Empty grid result for expression: \n',
|
|
26
|
+
console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
|
|
43
27
|
return;
|
|
44
28
|
}
|
|
45
|
-
this.#setValue(grid);
|
|
46
|
-
if (refreshAfter) {
|
|
47
|
-
this.#timeout = setTimeout(() => {
|
|
48
|
-
this.refreshes++;
|
|
49
|
-
this.#updateValue(parameters);
|
|
50
|
-
}, HNum.make(refreshAfter, second).convertTo(millisecond).value);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
#setValue(grid) {
|
|
54
29
|
const val = grid[0]?.get('val');
|
|
55
30
|
// Identify when it's necessary to unpack the result `val` or not
|
|
56
31
|
// since the eval wraps the result value in a grid's first dict `val` tag for non-collections.
|
|
@@ -61,7 +36,13 @@ export class ResolvableExprElement extends ResolvableValueElement {
|
|
|
61
36
|
else {
|
|
62
37
|
this.value = grid;
|
|
63
38
|
}
|
|
64
|
-
|
|
39
|
+
if (refreshAfter) {
|
|
40
|
+
this.#timeout = setTimeout(() => {
|
|
41
|
+
this.refreshes++;
|
|
42
|
+
this.#updateValue(parameters);
|
|
43
|
+
}, HNum.make(refreshAfter, second).convertTo(millisecond).value);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
65
46
|
/**
|
|
66
47
|
* Checks whether the declared resolvedType of this element is a collection.
|
|
67
48
|
* @returns true if the resolvedType is a collection.
|
|
@@ -75,7 +56,6 @@ export class ResolvableExprElement extends ResolvableValueElement {
|
|
|
75
56
|
if (this.#timeout) {
|
|
76
57
|
clearTimeout(this.#timeout);
|
|
77
58
|
}
|
|
78
|
-
return this.watch?.close();
|
|
79
59
|
};
|
|
80
60
|
getParameterList = () => {
|
|
81
61
|
const { expr } = this._meta;
|
|
@@ -88,29 +68,5 @@ export class ResolvableExprElement extends ResolvableValueElement {
|
|
|
88
68
|
}
|
|
89
69
|
return parameters;
|
|
90
70
|
};
|
|
91
|
-
#setupWatch = async (grid) => {
|
|
92
|
-
const { subscribePollRate, subscribe } = this
|
|
93
|
-
._meta;
|
|
94
|
-
if (subscribe) {
|
|
95
|
-
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
96
|
-
const updateValue = () => {
|
|
97
|
-
if (this.watch?.grid) {
|
|
98
|
-
this.#setValue(this.watch?.grid);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
// Update with the value received when opening the watch
|
|
102
|
-
updateValue();
|
|
103
|
-
// Configure polling options
|
|
104
|
-
this.watch.pollRate = subscribePollRate ?? DEFAULT_POLL_RATE_SECS;
|
|
105
|
-
this.watch.changed({
|
|
106
|
-
callback: updateValue,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
#getWatchDisplayName = () => {
|
|
111
|
-
return `ResolvableElement Watch for ${this.name ??
|
|
112
|
-
this.resolvedExpression ??
|
|
113
|
-
this._meta.expr}`;
|
|
114
|
-
};
|
|
115
71
|
}
|
|
116
72
|
//# sourceMappingURL=ResolvableExprElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,
|
|
1
|
+
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,6 @@ export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
|
|
|
4
4
|
resolutionType: 'expr';
|
|
5
5
|
expr: string;
|
|
6
6
|
refreshAfter: number;
|
|
7
|
-
subscribe?: boolean;
|
|
8
|
-
subscribePollRate?: number;
|
|
9
7
|
}
|
|
10
8
|
export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
|
|
11
9
|
export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA"}
|