@j2inn/resolvable-ui-elements 0.0.1-alpha.11
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/README.md +22 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/resolvableElements/Resolver.d.ts +18 -0
- package/dist/resolvableElements/Resolver.js +29 -0
- package/dist/resolvableElements/Resolver.js.map +1 -0
- package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -0
- package/dist/resolvableElements/elements/ResolvableElement.js +30 -0
- package/dist/resolvableElements/elements/ResolvableElement.js.map +1 -0
- package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -0
- package/dist/resolvableElements/elements/ResolvableValueElement.js +39 -0
- package/dist/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
- package/dist/resolvableElements/elements/UiElement.d.ts +40 -0
- package/dist/resolvableElements/elements/UiElement.js +54 -0
- package/dist/resolvableElements/elements/UiElement.js.map +1 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +14 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +63 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +15 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
- package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -0
- package/dist/resolvableElements/elements/function/FunctionElement.js +37 -0
- package/dist/resolvableElements/elements/function/FunctionElement.js.map +1 -0
- package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js +15 -0
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
- package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -0
- package/dist/resolvableElements/elements/list/ListElementMeta.js +15 -0
- package/dist/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
- package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -0
- package/dist/resolvableElements/elements/list/ResolvableListElement.js +103 -0
- package/dist/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
- package/dist/resolvableElements/elements/makeElement.d.ts +7 -0
- package/dist/resolvableElements/elements/makeElement.js +41 -0
- package/dist/resolvableElements/elements/makeElement.js.map +1 -0
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +21 -0
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +113 -0
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
- package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
- package/dist/resolvableElements/elements/section/SectionElementMeta.js +12 -0
- package/dist/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +106 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.js +15 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +136 -0
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +42 -0
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
- package/dist/resolvableElements/react/useResolveSection.d.ts +21 -0
- package/dist/resolvableElements/react/useResolveSection.js +71 -0
- package/dist/resolvableElements/react/useResolveSection.js.map +1 -0
- package/dist/resolvableElements/react/useResolverContext.d.ts +4 -0
- package/dist/resolvableElements/react/useResolverContext.jsx +57 -0
- package/dist/resolvableElements/react/useResolverContext.jsx.map +1 -0
- package/dist/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
- package/dist/resolvableElements/resolveTemplatedExpression.js +36 -0
- package/dist/resolvableElements/resolveTemplatedExpression.js.map +1 -0
- package/dist/useCurrentUser.d.ts +10 -0
- package/dist/useCurrentUser.jsx +51 -0
- package/dist/useCurrentUser.jsx.map +1 -0
- package/dist_es/index.d.ts +6 -0
- package/dist_es/index.js +14 -0
- package/dist_es/index.js.map +1 -0
- package/dist_es/resolvableElements/Resolver.d.ts +18 -0
- package/dist_es/resolvableElements/Resolver.js +25 -0
- package/dist_es/resolvableElements/Resolver.js.map +1 -0
- package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -0
- package/dist_es/resolvableElements/elements/ResolvableElement.js +26 -0
- package/dist_es/resolvableElements/elements/ResolvableElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -0
- package/dist_es/resolvableElements/elements/ResolvableValueElement.js +33 -0
- package/dist_es/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/UiElement.d.ts +40 -0
- package/dist_es/resolvableElements/elements/UiElement.js +49 -0
- package/dist_es/resolvableElements/elements/UiElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +14 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +59 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +10 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
- package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -0
- package/dist_es/resolvableElements/elements/function/FunctionElement.js +32 -0
- package/dist_es/resolvableElements/elements/function/FunctionElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +10 -0
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
- package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -0
- package/dist_es/resolvableElements/elements/list/ListElementMeta.js +10 -0
- package/dist_es/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -0
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +99 -0
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -0
- package/dist_es/resolvableElements/elements/makeElement.js +37 -0
- package/dist_es/resolvableElements/elements/makeElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +21 -0
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +108 -0
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +7 -0
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +102 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +10 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +132 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +16 -0
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
- package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -0
- package/dist_es/resolvableElements/react/useResolveSection.js +67 -0
- package/dist_es/resolvableElements/react/useResolveSection.js.map +1 -0
- package/dist_es/resolvableElements/react/useResolverContext.d.ts +4 -0
- package/dist_es/resolvableElements/react/useResolverContext.jsx +29 -0
- package/dist_es/resolvableElements/react/useResolverContext.jsx.map +1 -0
- package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
- package/dist_es/resolvableElements/resolveTemplatedExpression.js +31 -0
- package/dist_es/resolvableElements/resolveTemplatedExpression.js.map +1 -0
- package/dist_es/useCurrentUser.d.ts +10 -0
- package/dist_es/useCurrentUser.jsx +23 -0
- package/dist_es/useCurrentUser.jsx.map +1 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# What is resolvable-ui-elements?
|
|
2
|
+
The main goal of this library is to enhance the flexibility of the UI code written, by adding a layer that separates the queries and information used to interact with the backend from the UI code, moving it to a separated JSON file.
|
|
3
|
+
|
|
4
|
+
The JSON file (typically called `elements.json`) can be generated from a spreadsheet used to simplify the data management for a project UI.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## How do I get set up? ###
|
|
8
|
+
To install this package run `npm i @j2inn/resolvable-ui-elements`
|
|
9
|
+
|
|
10
|
+
## Where do I get more info? ###
|
|
11
|
+
See: https://finproducts.atlassian.net/wiki/spaces/ECO/pages/32881311778/Element+Types
|
|
12
|
+
|
|
13
|
+
## Codebase Structure ##
|
|
14
|
+
|
|
15
|
+
src
|
|
16
|
+
├── resolvableElements
|
|
17
|
+
│ ├── elements # Element classes implementation
|
|
18
|
+
│ ├── interfacesGeneration # Code for generating interfaces from an elements.json file
|
|
19
|
+
│ ├── react # React hooks to use resolvable elements.
|
|
20
|
+
│ └── ...
|
|
21
|
+
└── ...
|
|
22
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { type FunctionResult } from './resolvableElements/elements/function/FunctionElement';
|
|
2
|
+
export { isSectionData } from './resolvableElements/elements/section/SectionElementMeta';
|
|
3
|
+
export { type ParametersOfSection, type ResolvedElementValue, type UiElementData, } from './resolvableElements/elements/UiElement';
|
|
4
|
+
export * from './resolvableElements/react/useResolverContext';
|
|
5
|
+
export * from './resolvableElements/react/useResolveSection';
|
|
6
|
+
export * from './useCurrentUser';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.isSectionData = void 0;
|
|
21
|
+
var SectionElementMeta_1 = require("./resolvableElements/elements/section/SectionElementMeta");
|
|
22
|
+
Object.defineProperty(exports, "isSectionData", { enumerable: true, get: function () { return SectionElementMeta_1.isSectionData; } });
|
|
23
|
+
//////////////////////////////////////////////////////////////////////////
|
|
24
|
+
// React
|
|
25
|
+
//////////////////////////////////////////////////////////////////////////
|
|
26
|
+
__exportStar(require("./resolvableElements/react/useResolverContext"), exports);
|
|
27
|
+
__exportStar(require("./resolvableElements/react/useResolveSection"), exports);
|
|
28
|
+
//////////////////////////////////////////////////////////////////////////
|
|
29
|
+
// Other
|
|
30
|
+
//////////////////////////////////////////////////////////////////////////
|
|
31
|
+
__exportStar(require("./useCurrentUser"), exports);
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAMH,+FAAwF;AAA/E,mHAAA,aAAa,OAAA;AAMtB,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,gFAA6D;AAC7D,+EAA4D;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,mDAAgC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { HDict, HGrid } from 'haystack-core';
|
|
2
|
+
import { Client, Watch } from 'haystack-nclient';
|
|
3
|
+
export interface ResolverData {
|
|
4
|
+
client: Client;
|
|
5
|
+
user?: HDict;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolver is a mediator for the network interactions during the resolution process,
|
|
9
|
+
* in order to enable future optimizations.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Resolver {
|
|
12
|
+
constructor({ client, user }: ResolverData);
|
|
13
|
+
client: Client;
|
|
14
|
+
user?: HDict;
|
|
15
|
+
read(filter: string): Promise<HGrid<HDict>>;
|
|
16
|
+
makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
|
|
17
|
+
eval(expr: string): Promise<HGrid<HDict>>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Resolver = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Resolver is a mediator for the network interactions during the resolution process,
|
|
9
|
+
* in order to enable future optimizations.
|
|
10
|
+
*/
|
|
11
|
+
class Resolver {
|
|
12
|
+
constructor({ client, user }) {
|
|
13
|
+
this.client = client;
|
|
14
|
+
this.user = user;
|
|
15
|
+
}
|
|
16
|
+
client;
|
|
17
|
+
user;
|
|
18
|
+
async read(filter) {
|
|
19
|
+
return this.client.ext.read(filter);
|
|
20
|
+
}
|
|
21
|
+
async makeWatch(dis, grid) {
|
|
22
|
+
return this.client.ops.watch.make(dis, grid);
|
|
23
|
+
}
|
|
24
|
+
async eval(expr) {
|
|
25
|
+
return this.client.ext.eval(expr);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.Resolver = Resolver;
|
|
29
|
+
//# sourceMappingURL=Resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH;;;GAGG;AACH,MAAa,QAAQ;IACpB,YAAY,EAAE,MAAM,EAAE,IAAI,EAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IAEZ,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD;AApBD,4BAoBC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { UiElement, UiElementConstructorData, UiElementData } from './UiElement';
|
|
3
|
+
/**
|
|
4
|
+
* base class for elements that can be resolved
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class ResolvableElement<T extends UiElementData> extends UiElement<T> {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(data: UiElementConstructorData<T>);
|
|
9
|
+
initialize: (parameters: HDict) => Promise<void>;
|
|
10
|
+
protected abstract doInitialize: (parameters: HDict) => Promise<void>;
|
|
11
|
+
close: () => Promise<void>;
|
|
12
|
+
protected abstract doClose: () => Promise<void>;
|
|
13
|
+
abstract getParameterList: () => string[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResolvableElement = void 0;
|
|
7
|
+
const UiElement_1 = require("./UiElement");
|
|
8
|
+
/**
|
|
9
|
+
* base class for elements that can be resolved
|
|
10
|
+
*/
|
|
11
|
+
class ResolvableElement extends UiElement_1.UiElement {
|
|
12
|
+
constructor(data) {
|
|
13
|
+
super(data);
|
|
14
|
+
}
|
|
15
|
+
#initialized = false;
|
|
16
|
+
initialize = async (parameters) => {
|
|
17
|
+
if (this.isAccessAllowed() && !this.#initialized) {
|
|
18
|
+
this.#initialized = true;
|
|
19
|
+
return await this.doInitialize(parameters);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
close = async () => {
|
|
23
|
+
if (this.#initialized) {
|
|
24
|
+
await this.doClose();
|
|
25
|
+
this.#initialized = false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.ResolvableElement = ResolvableElement;
|
|
30
|
+
//# sourceMappingURL=ResolvableElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResolvableElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,2CAAgF;AAEhF;;GAEG;AACH,MAAsB,iBAEpB,SAAQ,qBAAY;IACrB,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,YAAY,GAAG,KAAK,CAAA;IACpB,UAAU,GAAyC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvE,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;SAC1C;IACF,CAAC,CAAA;IAGD,KAAK,GAAwB,KAAK,IAAI,EAAE;QACvC,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;SACzB;IACF,CAAC,CAAA;CAID;AAzBD,8CAyBC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ResolvableElement } from './ResolvableElement';
|
|
2
|
+
import { UiElementConstructorData, UiElementData, UiElementMeta } from './UiElement';
|
|
3
|
+
export interface ResolvableValueElementMeta extends UiElementMeta {
|
|
4
|
+
resolutionType: string;
|
|
5
|
+
resolvedType: string;
|
|
6
|
+
defaultValue: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const isResolvableValueElement: (element: UiElementData) => element is UiElementData<ResolvableValueElementMeta>;
|
|
9
|
+
export declare const isResolvableValueElementMeta: (meta: UiElementMeta) => meta is ResolvableValueElementMeta;
|
|
10
|
+
/**
|
|
11
|
+
* base class for leaf resolvable elements that are resolved into a value defined by the resolvedType property in the metadata
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class ResolvableValueElement<T extends UiElementData = UiElementData> extends ResolvableElement<T> {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(data: UiElementConstructorData<T>);
|
|
16
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResolvableValueElement = exports.isResolvableValueElementMeta = exports.isResolvableValueElement = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const ResolvableElement_1 = require("./ResolvableElement");
|
|
9
|
+
const isResolvableValueElement = (element) => {
|
|
10
|
+
return !!element?._meta && (0, exports.isResolvableValueElementMeta)(element._meta);
|
|
11
|
+
};
|
|
12
|
+
exports.isResolvableValueElement = isResolvableValueElement;
|
|
13
|
+
const isResolvableValueElementMeta = (meta) => {
|
|
14
|
+
return (!!meta.resolutionType &&
|
|
15
|
+
!!meta.resolvedType);
|
|
16
|
+
};
|
|
17
|
+
exports.isResolvableValueElementMeta = isResolvableValueElementMeta;
|
|
18
|
+
/**
|
|
19
|
+
* base class for leaf resolvable elements that are resolved into a value defined by the resolvedType property in the metadata
|
|
20
|
+
*/
|
|
21
|
+
class ResolvableValueElement extends ResolvableElement_1.ResolvableElement {
|
|
22
|
+
constructor(data) {
|
|
23
|
+
super(data);
|
|
24
|
+
this.#setDefaultValue();
|
|
25
|
+
}
|
|
26
|
+
#setDefaultValue() {
|
|
27
|
+
const { defaultValue } = this._meta;
|
|
28
|
+
if (defaultValue) {
|
|
29
|
+
try {
|
|
30
|
+
this.value = haystack_core_1.ZincReader.readValue(defaultValue);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
console.error('Failed to parse element default value from: ', JSON.stringify(this._meta), e);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ResolvableValueElement = ResolvableValueElement;
|
|
39
|
+
//# sourceMappingURL=ResolvableValueElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResolvableValueElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableValueElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA0C;AAC1C,2DAAuD;AAchD,MAAM,wBAAwB,GAAG,CACvC,OAAsB,EACiC,EAAE;IACzD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,oCAA4B,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAJY,QAAA,wBAAwB,4BAIpC;AAEM,MAAM,4BAA4B,GAAG,CAC3C,IAAmB,EACkB,EAAE;IACvC,OAAO,CACN,CAAC,CAA8B,IAAK,CAAC,cAAc;QACnD,CAAC,CAA8B,IAAK,CAAC,YAAY,CACjD,CAAA;AACF,CAAC,CAAA;AAPY,QAAA,4BAA4B,gCAOxC;AAED;;GAEG;AACH,MAAsB,sBAEpB,SAAQ,qCAAoB;IAC7B,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACxB,CAAC;IAED,gBAAgB;QACf,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAmC,CAAA;QAEjE,IAAI,YAAY,EAAE;YACjB,IAAI;gBACH,IAAI,CAAC,KAAK,GAAG,0BAAU,CAAC,SAAS,CAChC,YAAY,CAC0B,CAAA;aACvC;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,CAAC,KAAK,CACZ,8CAA8C,EAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,CAAC,CACD,CAAA;aACD;SACD;IACF,CAAC;CACD;AAzBD,wDAyBC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { HVal } from 'haystack-core';
|
|
2
|
+
import { Resolver } from '../Resolver';
|
|
3
|
+
export interface UiElementData<Meta extends UiElementMeta = UiElementMeta> {
|
|
4
|
+
_meta?: Meta;
|
|
5
|
+
}
|
|
6
|
+
export interface UiElementMeta {
|
|
7
|
+
access?: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare type ResolvedElementValue<T extends UiElementData> = T extends {
|
|
10
|
+
_resolved?: unknown;
|
|
11
|
+
} ? Required<T>['_resolved'] : unknown;
|
|
12
|
+
export declare type ParametersOfSection<T extends UiElementData> = T extends {
|
|
13
|
+
_parameters?: Record<string, HVal>;
|
|
14
|
+
} ? PartialExplicitUndefined<T['_parameters']> : undefined;
|
|
15
|
+
export declare type PartialExplicitUndefined<T> = {
|
|
16
|
+
[P in keyof T]: T[P] | null | undefined;
|
|
17
|
+
};
|
|
18
|
+
export interface UiElementConstructorData<T extends UiElementData> {
|
|
19
|
+
resolver: Resolver;
|
|
20
|
+
onUpdate: (value: ResolvedElementValue<T> | undefined) => void;
|
|
21
|
+
element: T;
|
|
22
|
+
name?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Base UiElement class
|
|
26
|
+
*/
|
|
27
|
+
export declare abstract class UiElement<T extends UiElementData = UiElementData> {
|
|
28
|
+
constructor({ name, element, resolver, onUpdate, }: UiElementConstructorData<T>);
|
|
29
|
+
resolver: Resolver;
|
|
30
|
+
_meta?: UiElementMeta;
|
|
31
|
+
name?: string;
|
|
32
|
+
toJSON(): Record<string, unknown>;
|
|
33
|
+
inspect(): void;
|
|
34
|
+
isAccessAllowed(): boolean;
|
|
35
|
+
protected _value?: ResolvedElementValue<T>;
|
|
36
|
+
get value(): ResolvedElementValue<T> | undefined;
|
|
37
|
+
set value(value: ResolvedElementValue<T> | undefined);
|
|
38
|
+
onUpdate: (value: ResolvedElementValue<T> | undefined) => void;
|
|
39
|
+
}
|
|
40
|
+
export declare function joinFilters(...filter: (string | undefined)[]): string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.joinFilters = exports.UiElement = void 0;
|
|
7
|
+
const USER_ROLE_TAG_NAME = 'uiElementPermissions';
|
|
8
|
+
/**
|
|
9
|
+
* Base UiElement class
|
|
10
|
+
*/
|
|
11
|
+
class UiElement {
|
|
12
|
+
constructor({ name, element, resolver, onUpdate, }) {
|
|
13
|
+
this._meta = element._meta;
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.resolver = resolver;
|
|
16
|
+
this.onUpdate = onUpdate;
|
|
17
|
+
}
|
|
18
|
+
resolver;
|
|
19
|
+
_meta;
|
|
20
|
+
name;
|
|
21
|
+
toJSON() {
|
|
22
|
+
return { _meta: this._meta };
|
|
23
|
+
}
|
|
24
|
+
inspect() {
|
|
25
|
+
console.log(this);
|
|
26
|
+
}
|
|
27
|
+
isAccessAllowed() {
|
|
28
|
+
if (!this._meta?.access || isSuperuser(this.resolver.user)) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
const userRole = this.resolver.user?.get(USER_ROLE_TAG_NAME);
|
|
32
|
+
if (userRole) {
|
|
33
|
+
return this._meta.access.includes(userRole.value);
|
|
34
|
+
}
|
|
35
|
+
// If userRole is not defined return false.
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
_value;
|
|
39
|
+
get value() {
|
|
40
|
+
return this._value;
|
|
41
|
+
}
|
|
42
|
+
set value(value) {
|
|
43
|
+
this._value = value;
|
|
44
|
+
this.onUpdate(value);
|
|
45
|
+
}
|
|
46
|
+
onUpdate;
|
|
47
|
+
}
|
|
48
|
+
exports.UiElement = UiElement;
|
|
49
|
+
function joinFilters(...filter) {
|
|
50
|
+
return filter.filter((filter) => filter).join(' and ');
|
|
51
|
+
}
|
|
52
|
+
exports.joinFilters = joinFilters;
|
|
53
|
+
const isSuperuser = (user) => user?.get('userRole')?.value === 'su';
|
|
54
|
+
//# sourceMappingURL=UiElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAiCjD;;GAEG;AACH,MAAsB,SAAS;IAC9B,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAO,kBAAkB,CAAC,CAAA;QAClE,IAAI,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;SACjD;QAED,2CAA2C;QAC3C,OAAO,KAAK,CAAA;IACb,CAAC;IAES,MAAM,CAA0B;IAE1C,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0C;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsD;CAC9D;AAlDD,8BAkDC;AACD,SAAgB,WAAW,CAAC,GAAG,MAA8B;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvD,CAAC;AAFD,kCAEC;AAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
3
|
+
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves to the result of an expression.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ResolvableExprElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(data: UiElementConstructorData<T>);
|
|
10
|
+
refreshes: number;
|
|
11
|
+
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
12
|
+
protected doClose: () => Promise<void>;
|
|
13
|
+
getParameterList: () => string[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResolvableExprElement = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const haystack_units_1 = require("haystack-units");
|
|
9
|
+
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
+
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
11
|
+
/**
|
|
12
|
+
* Resolves to the result of an expression.
|
|
13
|
+
*/
|
|
14
|
+
class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElement {
|
|
15
|
+
constructor(data) {
|
|
16
|
+
super(data);
|
|
17
|
+
}
|
|
18
|
+
refreshes = 0;
|
|
19
|
+
#timeout;
|
|
20
|
+
doInitialize = async (parameters) => {
|
|
21
|
+
this.#updateValue(parameters);
|
|
22
|
+
};
|
|
23
|
+
#updateValue = async (parameters) => {
|
|
24
|
+
const { expr, refreshAfter } = this._meta;
|
|
25
|
+
const resolvedExpression = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, parameters);
|
|
26
|
+
const grid = await this.resolver.eval(resolvedExpression);
|
|
27
|
+
if (grid.isError()) {
|
|
28
|
+
console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const val = grid[0]?.get('val');
|
|
32
|
+
if (val) {
|
|
33
|
+
this.value = val;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.value = grid;
|
|
37
|
+
}
|
|
38
|
+
if (refreshAfter) {
|
|
39
|
+
this.#timeout = setTimeout(() => {
|
|
40
|
+
this.refreshes++;
|
|
41
|
+
this.#updateValue(parameters);
|
|
42
|
+
}, haystack_core_1.HNum.make(refreshAfter, haystack_units_1.second).convertTo(haystack_units_1.millisecond).value);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
doClose = async () => {
|
|
46
|
+
if (this.#timeout) {
|
|
47
|
+
clearTimeout(this.#timeout);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
getParameterList = () => {
|
|
51
|
+
const { expr } = this._meta;
|
|
52
|
+
const parameters = [];
|
|
53
|
+
if (expr) {
|
|
54
|
+
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(expr, (_, match) => {
|
|
55
|
+
parameters.push(match);
|
|
56
|
+
return '';
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return parameters;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
exports.ResolvableExprElement = ResolvableExprElement;
|
|
63
|
+
//# sourceMappingURL=ResolvableExprElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAQlE;;GAEG;AACH,MAAa,qBAEX,SAAQ,+CAAyB;IAClC,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,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IAC9B,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,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,GAAyC,CAAA;SACtD;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAA0C,CAAA;SACvD;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;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;CACD;AAlED,sDAkEC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ResolvableValueElementMeta } from '../ResolvableValueElement';
|
|
2
|
+
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
+
export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
|
|
4
|
+
resolutionType: 'expr';
|
|
5
|
+
expr: string;
|
|
6
|
+
refreshAfter: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
|
|
9
|
+
export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isResolvableExprElementMeta = exports.isResolvableExprElementData = void 0;
|
|
7
|
+
const isResolvableExprElementData = (element) => {
|
|
8
|
+
return !!element?._meta && (0, exports.isResolvableExprElementMeta)(element?._meta);
|
|
9
|
+
};
|
|
10
|
+
exports.isResolvableExprElementData = isResolvableExprElementData;
|
|
11
|
+
const isResolvableExprElementMeta = (meta) => {
|
|
12
|
+
return meta.resolutionType === 'expr';
|
|
13
|
+
};
|
|
14
|
+
exports.isResolvableExprElementMeta = isResolvableExprElementMeta;
|
|
15
|
+
//# sourceMappingURL=ResolvableExprElementMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DictStore, HaysonVal, HDict, HGrid, OptionalHVal } from 'haystack-core';
|
|
2
|
+
import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves to a function that can be called to achieve side effects.
|
|
5
|
+
*/
|
|
6
|
+
export declare class FunctionElement<T extends UiElementData> extends UiElement<T> {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(data: UiElementConstructorData<T>);
|
|
9
|
+
}
|
|
10
|
+
export declare type FunctionResult = (parameters: Parameters) => Promise<HGrid>;
|
|
11
|
+
export declare type Parameters = Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined;
|
|
12
|
+
export declare const makeParametersDict: (parameters: Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined) => HDict;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.makeParametersDict = exports.FunctionElement = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
9
|
+
const UiElement_1 = require("../UiElement");
|
|
10
|
+
/**
|
|
11
|
+
* Resolves to a function that can be called to achieve side effects.
|
|
12
|
+
*/
|
|
13
|
+
class FunctionElement extends UiElement_1.UiElement {
|
|
14
|
+
constructor(data) {
|
|
15
|
+
super(data);
|
|
16
|
+
this.value = this.#buildFunction();
|
|
17
|
+
}
|
|
18
|
+
#buildFunction = () => {
|
|
19
|
+
const { expr } = this._meta;
|
|
20
|
+
return async (parameters) => {
|
|
21
|
+
const resolvedExpression = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, (0, exports.makeParametersDict)(parameters));
|
|
22
|
+
return await this.resolver.eval(resolvedExpression);
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.FunctionElement = FunctionElement;
|
|
27
|
+
const makeParametersDict = (parameters) => {
|
|
28
|
+
if (!parameters) {
|
|
29
|
+
return haystack_core_1.HDict.make();
|
|
30
|
+
}
|
|
31
|
+
if (parameters instanceof haystack_core_1.HDict) {
|
|
32
|
+
return parameters;
|
|
33
|
+
}
|
|
34
|
+
return haystack_core_1.HDict.make(Object.fromEntries(Object.entries(parameters).filter(([, v]) => v != null)));
|
|
35
|
+
};
|
|
36
|
+
exports.makeParametersDict = makeParametersDict;
|
|
37
|
+
//# sourceMappingURL=FunctionElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgF;AAChF,iFAA4E;AAE5E,4CAKqB;AAGrB;;GAEG;AACH,MAAa,eAAyC,SAAQ,qBAAY;IACzE,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAwC,CAAA;IACzE,CAAC;IAED,cAAc,GAAG,GAAmB,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAA4B,CAAA;QAElD,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,MAAM,kBAAkB,GAAG,IAAA,sDAAyB,EACnD,IAAI,EACJ,IAAA,0BAAkB,EAAC,UAAU,CAAC,CAC9B,CAAA;YAED,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACpD,CAAC,CAAA;IACF,CAAC,CAAA;CACD;AAlBD,0CAkBC;AAUM,MAAM,kBAAkB,GAAG,CACjC,UAIY,EACJ,EAAE;IACV,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,qBAAK,CAAC,IAAI,EAAE,CAAA;KACnB;IACD,IAAI,UAAU,YAAY,qBAAK,EAAE;QAChC,OAAO,UAAU,CAAA;KACjB;IAED,OAAO,qBAAK,CAAC,IAAI,CAChB,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CACvD,CACD,CAAA;AACF,CAAC,CAAA;AAnBY,QAAA,kBAAkB,sBAmB9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ResolvableValueElementMeta } from '../ResolvableValueElement';
|
|
2
|
+
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
+
export interface FunctionElementMeta extends ResolvableValueElementMeta {
|
|
4
|
+
resolutionType: 'function';
|
|
5
|
+
expr: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const isFunctionElementData: (element: UiElementData) => element is UiElementData<FunctionElementMeta>;
|
|
8
|
+
export declare const isFunctionElementMeta: (meta: UiElementMeta) => meta is FunctionElementMeta;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isFunctionElementMeta = exports.isFunctionElementData = void 0;
|
|
7
|
+
const isFunctionElementData = (element) => {
|
|
8
|
+
return !!element?._meta && (0, exports.isFunctionElementMeta)(element._meta);
|
|
9
|
+
};
|
|
10
|
+
exports.isFunctionElementData = isFunctionElementData;
|
|
11
|
+
const isFunctionElementMeta = (meta) => {
|
|
12
|
+
return meta.resolutionType === 'function';
|
|
13
|
+
};
|
|
14
|
+
exports.isFunctionElementMeta = isFunctionElementMeta;
|
|
15
|
+
//# sourceMappingURL=FunctionElementMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AASI,MAAM,qBAAqB,GAAG,CACpC,OAAsB,EAC0B,EAAE;IAClD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,6BAAqB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,qBAAqB,GAAG,CACpC,IAAmB,EACW,EAAE;IAChC,OAAQ,IAA4B,CAAC,cAAc,KAAK,UAAU,CAAA;AACnE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ResolvableValueElementMeta } from '../ResolvableValueElement';
|
|
2
|
+
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
+
export interface ResolvableListElementMeta extends ResolvableValueElementMeta {
|
|
4
|
+
resolutionType: 'list';
|
|
5
|
+
parentBinding?: string;
|
|
6
|
+
entityBinding?: string;
|
|
7
|
+
subscribe?: boolean;
|
|
8
|
+
subscribePollRate?: number;
|
|
9
|
+
orderBy: string | string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const isResolvableListElementData: (element: UiElementData) => element is UiElementData<ResolvableListElementMeta>;
|
|
12
|
+
export declare const isResolvableListElementMeta: (meta: UiElementMeta) => meta is ResolvableListElementMeta;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isResolvableListElementMeta = exports.isResolvableListElementData = void 0;
|
|
7
|
+
const isResolvableListElementData = (element) => {
|
|
8
|
+
return !!element?._meta && (0, exports.isResolvableListElementMeta)(element._meta);
|
|
9
|
+
};
|
|
10
|
+
exports.isResolvableListElementData = isResolvableListElementData;
|
|
11
|
+
const isResolvableListElementMeta = (meta) => {
|
|
12
|
+
return meta.resolutionType === 'list';
|
|
13
|
+
};
|
|
14
|
+
exports.isResolvableListElementMeta = isResolvableListElementMeta;
|
|
15
|
+
//# sourceMappingURL=ListElementMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/list/ListElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAcI,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,mCAA2B,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtE,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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { Watch } from 'haystack-nclient';
|
|
3
|
+
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
|
+
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves to a list of records and keeps them updated using a watch.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResolvableListElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(data: UiElementConstructorData<T>);
|
|
11
|
+
filter?: string;
|
|
12
|
+
watch?: Watch;
|
|
13
|
+
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
14
|
+
protected doClose: () => Promise<void>;
|
|
15
|
+
getParameterList: () => string[];
|
|
16
|
+
}
|