@j2inn/resolvable-ui-elements 2.0.0 → 2.1.1-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 +12 -12
- package/dist/index.js +39 -39
- package/dist/resolvableElements/Resolver.d.ts +47 -47
- package/dist/resolvableElements/Resolver.js +57 -57
- package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist/resolvableElements/elements/ResolvableElement.js +29 -29
- package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist/resolvableElements/elements/ResolvableValueElement.js +38 -38
- package/dist/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist/resolvableElements/elements/UiElement.js +56 -56
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +105 -105
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +14 -14
- package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist/resolvableElements/elements/function/FunctionElement.js +41 -41
- package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/list/ListElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist/resolvableElements/elements/list/ResolvableListElement.js +102 -102
- package/dist/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist/resolvableElements/elements/makeElement.js +40 -40
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +133 -122
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist/resolvableElements/elements/section/SectionElementMeta.js +11 -11
- package/dist/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist/resolvableElements/elements/section/resolveSection.js +50 -41
- package/dist/resolvableElements/elements/section/resolveSection.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +113 -105
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +68 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/tag/TagElementMeta.js +14 -14
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +134 -134
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +41 -41
- package/dist/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist/resolvableElements/react/SectionChecker.jsx +27 -27
- package/dist/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist/resolvableElements/react/useResolveSection.js +65 -65
- package/dist/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist/resolvableElements/react/useResolverContext.jsx +64 -64
- package/dist/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist/resolvableElements/resolveTemplatedExpression.js +43 -43
- package/dist/useCurrentUser.d.ts +10 -10
- package/dist/useCurrentUser.jsx +48 -48
- package/dist_es/index.d.ts +12 -12
- package/dist_es/index.js +20 -20
- package/dist_es/resolvableElements/Resolver.d.ts +47 -47
- package/dist_es/resolvableElements/Resolver.js +53 -53
- package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist_es/resolvableElements/elements/ResolvableElement.js +25 -25
- package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/ResolvableValueElement.js +32 -32
- package/dist_es/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist_es/resolvableElements/elements/UiElement.js +52 -52
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +101 -101
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist_es/resolvableElements/elements/function/FunctionElement.js +36 -36
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/list/ListElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +98 -98
- package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist_es/resolvableElements/elements/makeElement.js +36 -36
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +128 -117
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +6 -6
- package/dist_es/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist_es/resolvableElements/elements/section/resolveSection.js +45 -36
- package/dist_es/resolvableElements/elements/section/resolveSection.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +109 -101
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +64 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +9 -9
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +128 -128
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +15 -15
- package/dist_es/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist_es/resolvableElements/react/SectionChecker.jsx +20 -20
- package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist_es/resolvableElements/react/useResolveSection.js +61 -61
- package/dist_es/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist_es/resolvableElements/react/useResolverContext.jsx +36 -36
- package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist_es/resolvableElements/resolveTemplatedExpression.js +38 -38
- package/dist_es/useCurrentUser.d.ts +10 -10
- package/dist_es/useCurrentUser.jsx +20 -20
- package/package.json +2 -2
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { HDict, HGrid } from 'haystack-core';
|
|
2
|
-
import { Client, Watch } from 'haystack-nclient';
|
|
3
|
-
export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
|
|
4
|
-
export interface ResolverData {
|
|
5
|
-
/**
|
|
6
|
-
* Haystack client for network communication
|
|
7
|
-
*/
|
|
8
|
-
client: Client;
|
|
9
|
-
/**
|
|
10
|
-
* Current user dict, used to check permissions
|
|
11
|
-
*/
|
|
12
|
-
user?: HDict;
|
|
13
|
-
/**
|
|
14
|
-
* Name of the tag that is expected on the user dict to define its role
|
|
15
|
-
*/
|
|
16
|
-
userRoleTagName?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Function name to be used for expressions eval,
|
|
19
|
-
* used to enable custom backend permission check using elements path
|
|
20
|
-
* @example
|
|
21
|
-
* customEval(\`page/section/elementName\`, parametersDict)
|
|
22
|
-
*/
|
|
23
|
-
evalFuncName?: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Resolver is a mediator for the network interactions during the resolution process,
|
|
27
|
-
* in order to enable future optimizations and extra features
|
|
28
|
-
*/
|
|
29
|
-
export declare class Resolver implements ResolverData {
|
|
30
|
-
constructor({ client, user, userRoleTagName, evalFuncName, }: ResolverData);
|
|
31
|
-
client: Client;
|
|
32
|
-
user?: HDict;
|
|
33
|
-
userRoleTagName?: string;
|
|
34
|
-
evalFuncName?: string;
|
|
35
|
-
read(filter: string): Promise<HGrid<HDict>>;
|
|
36
|
-
makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
|
|
37
|
-
/**
|
|
38
|
-
* Eval an expression using either the provided path or otherwse directly the expression
|
|
39
|
-
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
40
|
-
*/
|
|
41
|
-
evalExprElement(expr: string, parameters: HDict, path?: string): Promise<HGrid<HDict>>;
|
|
42
|
-
private _buildExpression;
|
|
43
|
-
/**
|
|
44
|
-
* Evaluate an expression
|
|
45
|
-
*/
|
|
46
|
-
private _eval;
|
|
47
|
-
}
|
|
1
|
+
import { HDict, HGrid } from 'haystack-core';
|
|
2
|
+
import { Client, Watch } from 'haystack-nclient';
|
|
3
|
+
export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
|
|
4
|
+
export interface ResolverData {
|
|
5
|
+
/**
|
|
6
|
+
* Haystack client for network communication
|
|
7
|
+
*/
|
|
8
|
+
client: Client;
|
|
9
|
+
/**
|
|
10
|
+
* Current user dict, used to check permissions
|
|
11
|
+
*/
|
|
12
|
+
user?: HDict;
|
|
13
|
+
/**
|
|
14
|
+
* Name of the tag that is expected on the user dict to define its role
|
|
15
|
+
*/
|
|
16
|
+
userRoleTagName?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Function name to be used for expressions eval,
|
|
19
|
+
* used to enable custom backend permission check using elements path
|
|
20
|
+
* @example
|
|
21
|
+
* customEval(\`page/section/elementName\`, parametersDict)
|
|
22
|
+
*/
|
|
23
|
+
evalFuncName?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolver is a mediator for the network interactions during the resolution process,
|
|
27
|
+
* in order to enable future optimizations and extra features
|
|
28
|
+
*/
|
|
29
|
+
export declare class Resolver implements ResolverData {
|
|
30
|
+
constructor({ client, user, userRoleTagName, evalFuncName, }: ResolverData);
|
|
31
|
+
client: Client;
|
|
32
|
+
user?: HDict;
|
|
33
|
+
userRoleTagName?: string;
|
|
34
|
+
evalFuncName?: string;
|
|
35
|
+
read(filter: string): Promise<HGrid<HDict>>;
|
|
36
|
+
makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
|
|
37
|
+
/**
|
|
38
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
39
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
40
|
+
*/
|
|
41
|
+
evalExprElement(expr: string, parameters: HDict, path?: string): Promise<HGrid<HDict>>;
|
|
42
|
+
private _buildExpression;
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate an expression
|
|
45
|
+
*/
|
|
46
|
+
private _eval;
|
|
47
|
+
}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { HUri } from 'haystack-core';
|
|
5
|
-
import { resolveTemplateExpression } from './resolveTemplatedExpression';
|
|
6
|
-
export const DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
|
|
7
|
-
/**
|
|
8
|
-
* Resolver is a mediator for the network interactions during the resolution process,
|
|
9
|
-
* in order to enable future optimizations and extra features
|
|
10
|
-
*/
|
|
11
|
-
export class Resolver {
|
|
12
|
-
constructor({ client, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME, evalFuncName, }) {
|
|
13
|
-
this.client = client;
|
|
14
|
-
this.user = user;
|
|
15
|
-
this.userRoleTagName = userRoleTagName;
|
|
16
|
-
this.evalFuncName = evalFuncName;
|
|
17
|
-
}
|
|
18
|
-
client;
|
|
19
|
-
user;
|
|
20
|
-
userRoleTagName;
|
|
21
|
-
evalFuncName;
|
|
22
|
-
read(filter) {
|
|
23
|
-
return this.client.ext.read(filter);
|
|
24
|
-
}
|
|
25
|
-
makeWatch(dis, grid) {
|
|
26
|
-
return this.client.ops.watch.make(dis, grid);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Eval an expression using either the provided path or otherwse directly the expression
|
|
30
|
-
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
31
|
-
*/
|
|
32
|
-
evalExprElement(expr, parameters, path) {
|
|
33
|
-
return this._eval(this._buildExpression(expr, parameters, path));
|
|
34
|
-
}
|
|
35
|
-
_buildExpression(expr, parameters, path) {
|
|
36
|
-
if (!!path && this.evalFuncName) {
|
|
37
|
-
return `${this.evalFuncName}(${HUri.make(path).toAxon()}, ${parameters.toAxon()})`;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
return resolveTemplateExpression(expr, parameters);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Evaluate an expression
|
|
45
|
-
*/
|
|
46
|
-
async _eval(expr) {
|
|
47
|
-
const grid = await this.client.ext.eval(expr);
|
|
48
|
-
if (grid.isError()) {
|
|
49
|
-
console.error('Empty grid result for expression: \n', expr, grid.getError());
|
|
50
|
-
}
|
|
51
|
-
return grid;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { HUri } from 'haystack-core';
|
|
5
|
+
import { resolveTemplateExpression } from './resolveTemplatedExpression';
|
|
6
|
+
export const DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
|
|
7
|
+
/**
|
|
8
|
+
* Resolver is a mediator for the network interactions during the resolution process,
|
|
9
|
+
* in order to enable future optimizations and extra features
|
|
10
|
+
*/
|
|
11
|
+
export class Resolver {
|
|
12
|
+
constructor({ client, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME, evalFuncName, }) {
|
|
13
|
+
this.client = client;
|
|
14
|
+
this.user = user;
|
|
15
|
+
this.userRoleTagName = userRoleTagName;
|
|
16
|
+
this.evalFuncName = evalFuncName;
|
|
17
|
+
}
|
|
18
|
+
client;
|
|
19
|
+
user;
|
|
20
|
+
userRoleTagName;
|
|
21
|
+
evalFuncName;
|
|
22
|
+
read(filter) {
|
|
23
|
+
return this.client.ext.read(filter);
|
|
24
|
+
}
|
|
25
|
+
makeWatch(dis, grid) {
|
|
26
|
+
return this.client.ops.watch.make(dis, grid);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
30
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
31
|
+
*/
|
|
32
|
+
evalExprElement(expr, parameters, path) {
|
|
33
|
+
return this._eval(this._buildExpression(expr, parameters, path));
|
|
34
|
+
}
|
|
35
|
+
_buildExpression(expr, parameters, path) {
|
|
36
|
+
if (!!path && this.evalFuncName) {
|
|
37
|
+
return `${this.evalFuncName}(${HUri.make(path).toAxon()}, ${parameters.toAxon()})`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return resolveTemplateExpression(expr, parameters);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate an expression
|
|
45
|
+
*/
|
|
46
|
+
async _eval(expr) {
|
|
47
|
+
const grid = await this.client.ext.eval(expr);
|
|
48
|
+
if (grid.isError()) {
|
|
49
|
+
console.error('Empty grid result for expression: \n', expr, grid.getError());
|
|
50
|
+
}
|
|
51
|
+
return grid;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
54
|
//# sourceMappingURL=Resolver.js.map
|
|
@@ -1,14 +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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { UiElement } from './UiElement';
|
|
5
|
-
/**
|
|
6
|
-
* base class for elements that can be resolved
|
|
7
|
-
*/
|
|
8
|
-
export class ResolvableElement extends UiElement {
|
|
9
|
-
constructor(data) {
|
|
10
|
-
super(data);
|
|
11
|
-
}
|
|
12
|
-
#initialized = false;
|
|
13
|
-
initialize = async (parameters) => {
|
|
14
|
-
if (this.isAccessAllowed(this._meta) && !this.#initialized) {
|
|
15
|
-
this.#initialized = true;
|
|
16
|
-
return await this.doInitialize(parameters);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
close = async () => {
|
|
20
|
-
if (this.#initialized) {
|
|
21
|
-
await this.doClose();
|
|
22
|
-
this.#initialized = false;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { UiElement } from './UiElement';
|
|
5
|
+
/**
|
|
6
|
+
* base class for elements that can be resolved
|
|
7
|
+
*/
|
|
8
|
+
export class ResolvableElement extends UiElement {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
super(data);
|
|
11
|
+
}
|
|
12
|
+
#initialized = false;
|
|
13
|
+
initialize = async (parameters) => {
|
|
14
|
+
if (this.isAccessAllowed(this._meta) && !this.#initialized) {
|
|
15
|
+
this.#initialized = true;
|
|
16
|
+
return await this.doInitialize(parameters);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
close = async () => {
|
|
20
|
+
if (this.#initialized) {
|
|
21
|
+
await this.doClose();
|
|
22
|
+
this.#initialized = false;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
26
|
//# sourceMappingURL=ResolvableElement.js.map
|
|
@@ -1,16 +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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { ZincReader } from 'haystack-core';
|
|
5
|
-
import { ResolvableElement } from './ResolvableElement';
|
|
6
|
-
export const isResolvableValueElement = (element) => {
|
|
7
|
-
return !!element?._meta && isResolvableValueElementMeta(element._meta);
|
|
8
|
-
};
|
|
9
|
-
export const isResolvableValueElementMeta = (meta) => {
|
|
10
|
-
return (!!meta.resolutionType &&
|
|
11
|
-
!!meta.resolvedType);
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* base class for leaf resolvable elements that are resolved into a value defined by the resolvedType property in the metadata
|
|
15
|
-
*/
|
|
16
|
-
export class ResolvableValueElement extends ResolvableElement {
|
|
17
|
-
constructor(data) {
|
|
18
|
-
super(data);
|
|
19
|
-
this.#setDefaultValue();
|
|
20
|
-
}
|
|
21
|
-
#setDefaultValue() {
|
|
22
|
-
const { defaultValue } = this._meta;
|
|
23
|
-
if (defaultValue) {
|
|
24
|
-
try {
|
|
25
|
-
this.value = ZincReader.readValue(defaultValue);
|
|
26
|
-
}
|
|
27
|
-
catch (e) {
|
|
28
|
-
console.error('Failed to parse element default value from: ', JSON.stringify(this._meta), e);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { ZincReader } from 'haystack-core';
|
|
5
|
+
import { ResolvableElement } from './ResolvableElement';
|
|
6
|
+
export const isResolvableValueElement = (element) => {
|
|
7
|
+
return !!element?._meta && isResolvableValueElementMeta(element._meta);
|
|
8
|
+
};
|
|
9
|
+
export const isResolvableValueElementMeta = (meta) => {
|
|
10
|
+
return (!!meta.resolutionType &&
|
|
11
|
+
!!meta.resolvedType);
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* base class for leaf resolvable elements that are resolved into a value defined by the resolvedType property in the metadata
|
|
15
|
+
*/
|
|
16
|
+
export class ResolvableValueElement extends ResolvableElement {
|
|
17
|
+
constructor(data) {
|
|
18
|
+
super(data);
|
|
19
|
+
this.#setDefaultValue();
|
|
20
|
+
}
|
|
21
|
+
#setDefaultValue() {
|
|
22
|
+
const { defaultValue } = this._meta;
|
|
23
|
+
if (defaultValue) {
|
|
24
|
+
try {
|
|
25
|
+
this.value = ZincReader.readValue(defaultValue);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error('Failed to parse element default value from: ', JSON.stringify(this._meta), e);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
33
|
//# sourceMappingURL=ResolvableValueElement.js.map
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Resolver } from '../Resolver';
|
|
2
|
-
export interface UiElementData<Meta extends UiElementMeta = UiElementMeta> {
|
|
3
|
-
_meta?: Meta;
|
|
4
|
-
}
|
|
5
|
-
export interface UiElementMeta {
|
|
6
|
-
access?: string[];
|
|
7
|
-
}
|
|
8
|
-
export interface UiElementConstructorData<T extends UiElementData> {
|
|
9
|
-
resolver: Resolver;
|
|
10
|
-
onUpdate: (value: unknown | undefined) => void;
|
|
11
|
-
element: T;
|
|
12
|
-
name?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Base UiElement class
|
|
16
|
-
*/
|
|
17
|
-
export declare abstract class UiElement<T extends UiElementData = UiElementData> {
|
|
18
|
-
#private;
|
|
19
|
-
constructor({ name, element, resolver, onUpdate, }: UiElementConstructorData<T>);
|
|
20
|
-
resolver: Resolver;
|
|
21
|
-
_meta?: UiElementMeta;
|
|
22
|
-
name?: string;
|
|
23
|
-
toJSON(): Record<string, unknown>;
|
|
24
|
-
inspect(): void;
|
|
25
|
-
isAccessAllowed(meta?: UiElementMeta): boolean;
|
|
26
|
-
protected _value?: unknown;
|
|
27
|
-
get value(): unknown | undefined;
|
|
28
|
-
set value(value: unknown | undefined);
|
|
29
|
-
onUpdate: (value: unknown | undefined) => void;
|
|
30
|
-
static joinFilters(...filter: (string | undefined)[]): string;
|
|
31
|
-
}
|
|
1
|
+
import { Resolver } from '../Resolver';
|
|
2
|
+
export interface UiElementData<Meta extends UiElementMeta = UiElementMeta> {
|
|
3
|
+
_meta?: Meta;
|
|
4
|
+
}
|
|
5
|
+
export interface UiElementMeta {
|
|
6
|
+
access?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface UiElementConstructorData<T extends UiElementData> {
|
|
9
|
+
resolver: Resolver;
|
|
10
|
+
onUpdate: (value: unknown | undefined) => void;
|
|
11
|
+
element: T;
|
|
12
|
+
name?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Base UiElement class
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class UiElement<T extends UiElementData = UiElementData> {
|
|
18
|
+
#private;
|
|
19
|
+
constructor({ name, element, resolver, onUpdate, }: UiElementConstructorData<T>);
|
|
20
|
+
resolver: Resolver;
|
|
21
|
+
_meta?: UiElementMeta;
|
|
22
|
+
name?: string;
|
|
23
|
+
toJSON(): Record<string, unknown>;
|
|
24
|
+
inspect(): void;
|
|
25
|
+
isAccessAllowed(meta?: UiElementMeta): boolean;
|
|
26
|
+
protected _value?: unknown;
|
|
27
|
+
get value(): unknown | undefined;
|
|
28
|
+
set value(value: unknown | undefined);
|
|
29
|
+
onUpdate: (value: unknown | undefined) => void;
|
|
30
|
+
static joinFilters(...filter: (string | undefined)[]): string;
|
|
31
|
+
}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { DEFAULT_USER_ROLE_TAG_NAME } from '../Resolver';
|
|
5
|
-
/**
|
|
6
|
-
* Base UiElement class
|
|
7
|
-
*/
|
|
8
|
-
export class UiElement {
|
|
9
|
-
constructor({ name, element, resolver, onUpdate, }) {
|
|
10
|
-
this._meta = element._meta;
|
|
11
|
-
this.name = name;
|
|
12
|
-
this.resolver = resolver;
|
|
13
|
-
this.onUpdate = onUpdate;
|
|
14
|
-
}
|
|
15
|
-
resolver;
|
|
16
|
-
_meta;
|
|
17
|
-
name;
|
|
18
|
-
toJSON() {
|
|
19
|
-
return { _meta: this._meta };
|
|
20
|
-
}
|
|
21
|
-
inspect() {
|
|
22
|
-
console.log(this);
|
|
23
|
-
}
|
|
24
|
-
isAccessAllowed(meta) {
|
|
25
|
-
return UiElement.#isElementAccessible(meta, this.resolver.user, this.resolver.userRoleTagName);
|
|
26
|
-
}
|
|
27
|
-
_value;
|
|
28
|
-
get value() {
|
|
29
|
-
return this._value;
|
|
30
|
-
}
|
|
31
|
-
set value(value) {
|
|
32
|
-
this._value = value;
|
|
33
|
-
this.onUpdate(value);
|
|
34
|
-
}
|
|
35
|
-
onUpdate;
|
|
36
|
-
static #isElementAccessible(meta, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME) {
|
|
37
|
-
if (!meta || !meta.access || UiElement.#isSuperuser(user)) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
const userRole = user?.get(userRoleTagName);
|
|
41
|
-
if (userRole && meta.access.includes(userRole.value)) {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
static #isSuperuser(user) {
|
|
47
|
-
return user?.get('userRole')?.value === 'su';
|
|
48
|
-
}
|
|
49
|
-
static joinFilters(...filter) {
|
|
50
|
-
return filter.filter((filter) => filter).join(' and ');
|
|
51
|
-
}
|
|
52
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { DEFAULT_USER_ROLE_TAG_NAME } from '../Resolver';
|
|
5
|
+
/**
|
|
6
|
+
* Base UiElement class
|
|
7
|
+
*/
|
|
8
|
+
export class UiElement {
|
|
9
|
+
constructor({ name, element, resolver, onUpdate, }) {
|
|
10
|
+
this._meta = element._meta;
|
|
11
|
+
this.name = name;
|
|
12
|
+
this.resolver = resolver;
|
|
13
|
+
this.onUpdate = onUpdate;
|
|
14
|
+
}
|
|
15
|
+
resolver;
|
|
16
|
+
_meta;
|
|
17
|
+
name;
|
|
18
|
+
toJSON() {
|
|
19
|
+
return { _meta: this._meta };
|
|
20
|
+
}
|
|
21
|
+
inspect() {
|
|
22
|
+
console.log(this);
|
|
23
|
+
}
|
|
24
|
+
isAccessAllowed(meta) {
|
|
25
|
+
return UiElement.#isElementAccessible(meta, this.resolver.user, this.resolver.userRoleTagName);
|
|
26
|
+
}
|
|
27
|
+
_value;
|
|
28
|
+
get value() {
|
|
29
|
+
return this._value;
|
|
30
|
+
}
|
|
31
|
+
set value(value) {
|
|
32
|
+
this._value = value;
|
|
33
|
+
this.onUpdate(value);
|
|
34
|
+
}
|
|
35
|
+
onUpdate;
|
|
36
|
+
static #isElementAccessible(meta, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME) {
|
|
37
|
+
if (!meta || !meta.access || UiElement.#isSuperuser(user)) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
const userRole = user?.get(userRoleTagName);
|
|
41
|
+
if (userRole && meta.access.includes(userRole.value)) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
static #isSuperuser(user) {
|
|
47
|
+
return user?.get('userRole')?.value === 'su';
|
|
48
|
+
}
|
|
49
|
+
static joinFilters(...filter) {
|
|
50
|
+
return filter.filter((filter) => filter).join(' and ');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
53
|
//# sourceMappingURL=UiElement.js.map
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
2
|
-
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
3
|
-
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
4
|
-
import { ResolvableExprElementMeta } from './ResolvableExprElementMeta';
|
|
5
|
-
/**
|
|
6
|
-
* Resolves to the result of an expression.
|
|
7
|
-
*/
|
|
8
|
-
export declare class ResolvableExprElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(data: UiElementConstructorData<T>);
|
|
11
|
-
refreshes: number;
|
|
12
|
-
protected getMeta: () => ResolvableExprElementMeta;
|
|
13
|
-
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Checks whether the declared resolvedType of this element is a collection.
|
|
16
|
-
* @returns true if the resolvedType is a collection.
|
|
17
|
-
*/
|
|
18
|
-
isExpectedResultACollection: () => boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Checks whether the declared resolvedType of this element is a single value.
|
|
21
|
-
* @returns true if the resolvedType is a value.
|
|
22
|
-
*/
|
|
23
|
-
isExpectedResultVal: () => boolean;
|
|
24
|
-
protected doClose: () => Promise<void>;
|
|
25
|
-
getParameterList: () => string[];
|
|
26
|
-
}
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
3
|
+
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
4
|
+
import { ResolvableExprElementMeta } from './ResolvableExprElementMeta';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves to the result of an expression.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResolvableExprElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(data: UiElementConstructorData<T>);
|
|
11
|
+
refreshes: number;
|
|
12
|
+
protected getMeta: () => ResolvableExprElementMeta;
|
|
13
|
+
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether the declared resolvedType of this element is a collection.
|
|
16
|
+
* @returns true if the resolvedType is a collection.
|
|
17
|
+
*/
|
|
18
|
+
isExpectedResultACollection: () => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Checks whether the declared resolvedType of this element is a single value.
|
|
21
|
+
* @returns true if the resolvedType is a value.
|
|
22
|
+
*/
|
|
23
|
+
isExpectedResultVal: () => boolean;
|
|
24
|
+
protected doClose: () => Promise<void>;
|
|
25
|
+
getParameterList: () => string[];
|
|
26
|
+
}
|