@j2inn/resolvable-ui-elements 1.1.3 → 2.0.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 +122 -122
- 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 +41 -41
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -16
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +105 -105
- 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 +117 -117
- 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 +36 -36
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +101 -101
- 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 +5 -5
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { HVal } from 'haystack-core';
|
|
2
|
-
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
-
export interface UiElementSectionMeta extends UiElementMeta {
|
|
4
|
-
resolutionType?: never;
|
|
5
|
-
}
|
|
6
|
-
export type ResolvedSection<T extends UiElementData<UiElementSectionMeta>> = T extends {
|
|
7
|
-
_resolved?: Record<string, unknown>;
|
|
8
|
-
} ? Required<T>['_resolved'] : Record<string, unknown>;
|
|
9
|
-
export type ParametersOfSection<T extends UiElementData> = T extends {
|
|
10
|
-
_parameters?: Record<string, HVal>;
|
|
11
|
-
} ? PartialExplicitUndefined<T['_parameters']> : undefined;
|
|
12
|
-
export type PartialExplicitUndefined<T> = {
|
|
13
|
-
[P in keyof T]: T[P] | null | undefined;
|
|
14
|
-
};
|
|
15
|
-
export declare const isSectionData: (element: UiElementData) => element is UiElementData<UiElementSectionMeta>;
|
|
16
|
-
export declare const isSectionMeta: (meta: UiElementMeta | undefined) => meta is UiElementSectionMeta;
|
|
1
|
+
import { HVal } from 'haystack-core';
|
|
2
|
+
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
+
export interface UiElementSectionMeta extends UiElementMeta {
|
|
4
|
+
resolutionType?: never;
|
|
5
|
+
}
|
|
6
|
+
export type ResolvedSection<T extends UiElementData<UiElementSectionMeta>> = T extends {
|
|
7
|
+
_resolved?: Record<string, unknown>;
|
|
8
|
+
} ? Required<T>['_resolved'] : Record<string, unknown>;
|
|
9
|
+
export type ParametersOfSection<T extends UiElementData> = T extends {
|
|
10
|
+
_parameters?: Record<string, HVal>;
|
|
11
|
+
} ? PartialExplicitUndefined<T['_parameters']> : undefined;
|
|
12
|
+
export type PartialExplicitUndefined<T> = {
|
|
13
|
+
[P in keyof T]: T[P] | null | undefined;
|
|
14
|
+
};
|
|
15
|
+
export declare const isSectionData: (element: UiElementData) => element is UiElementData<UiElementSectionMeta>;
|
|
16
|
+
export declare const isSectionMeta: (meta: UiElementMeta | undefined) => meta is UiElementSectionMeta;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isSectionMeta = exports.isSectionData = void 0;
|
|
7
|
-
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
8
|
-
const isSectionData = (element) => (0, exports.isSectionMeta)(element._meta);
|
|
9
|
-
exports.isSectionData = isSectionData;
|
|
10
|
-
const isSectionMeta = (meta) => meta == null || !(0, ResolvableValueElement_1.isResolvableValueElementMeta)(meta);
|
|
11
|
-
exports.isSectionMeta = isSectionMeta;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isSectionMeta = exports.isSectionData = void 0;
|
|
7
|
+
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
8
|
+
const isSectionData = (element) => (0, exports.isSectionMeta)(element._meta);
|
|
9
|
+
exports.isSectionData = isSectionData;
|
|
10
|
+
const isSectionMeta = (meta) => meta == null || !(0, ResolvableValueElement_1.isResolvableValueElementMeta)(meta);
|
|
11
|
+
exports.isSectionMeta = isSectionMeta;
|
|
12
12
|
//# sourceMappingURL=SectionElementMeta.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Resolver } from 'resolvableElements/Resolver';
|
|
2
|
-
import { UiElementData } from '../UiElement';
|
|
3
|
-
import { ParametersOfSection, ResolvedSection } from './SectionElementMeta';
|
|
4
|
-
/**
|
|
5
|
-
* Resolves a section UI element.
|
|
6
|
-
* @param resolver the Resolver context
|
|
7
|
-
* @param sectionData section data object
|
|
8
|
-
* @param parameters parameters for the resolution
|
|
9
|
-
* @returns the resolved result of the section.
|
|
10
|
-
*/
|
|
11
|
-
export declare function resolveSection<T extends UiElementData>(resolver: Resolver, sectionData: T, parameters?: ParametersOfSection<T>): Promise<ResolvedSection<T> | undefined>;
|
|
12
|
-
export declare const areParametersValid: <T extends UiElementData<import("../UiElement").UiElementMeta>>(parameters: ParametersOfSection<T>) => boolean;
|
|
1
|
+
import { Resolver } from 'resolvableElements/Resolver';
|
|
2
|
+
import { UiElementData } from '../UiElement';
|
|
3
|
+
import { ParametersOfSection, ResolvedSection } from './SectionElementMeta';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a section UI element.
|
|
6
|
+
* @param resolver the Resolver context
|
|
7
|
+
* @param sectionData section data object
|
|
8
|
+
* @param parameters parameters for the resolution
|
|
9
|
+
* @returns the resolved result of the section.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveSection<T extends UiElementData>(resolver: Resolver, sectionData: T, parameters?: ParametersOfSection<T>): Promise<ResolvedSection<T> | undefined>;
|
|
12
|
+
export declare const areParametersValid: <T extends UiElementData<import("../UiElement").UiElementMeta>>(parameters: ParametersOfSection<T>) => boolean;
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2024, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.areParametersValid = exports.resolveSection = void 0;
|
|
7
|
-
const FunctionElement_1 = require("../function/FunctionElement");
|
|
8
|
-
const ResolvableSectionElement_1 = require("./ResolvableSectionElement");
|
|
9
|
-
/**
|
|
10
|
-
* Resolves a section UI element.
|
|
11
|
-
* @param resolver the Resolver context
|
|
12
|
-
* @param sectionData section data object
|
|
13
|
-
* @param parameters parameters for the resolution
|
|
14
|
-
* @returns the resolved result of the section.
|
|
15
|
-
*/
|
|
16
|
-
async function resolveSection(resolver, sectionData, parameters) {
|
|
17
|
-
const parametersDict = (0, FunctionElement_1.makeParametersDict)(parameters);
|
|
18
|
-
if ((0, exports.areParametersValid)(parameters)) {
|
|
19
|
-
const sectionElement = new ResolvableSectionElement_1.ResolvableSectionElement({
|
|
20
|
-
element: sectionData,
|
|
21
|
-
resolver,
|
|
22
|
-
onUpdate: () => {
|
|
23
|
-
return;
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
await sectionElement
|
|
27
|
-
.initialize(parametersDict)
|
|
28
|
-
.finally(() => sectionElement?.close());
|
|
29
|
-
return sectionElement.value;
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
exports.resolveSection = resolveSection;
|
|
34
|
-
const areParametersValid = (parameters) => {
|
|
35
|
-
if (parameters &&
|
|
36
|
-
Object.entries(parameters).some(([, value]) => value == null)) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return true;
|
|
40
|
-
};
|
|
41
|
-
exports.areParametersValid = areParametersValid;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2024, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.areParametersValid = exports.resolveSection = void 0;
|
|
7
|
+
const FunctionElement_1 = require("../function/FunctionElement");
|
|
8
|
+
const ResolvableSectionElement_1 = require("./ResolvableSectionElement");
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a section UI element.
|
|
11
|
+
* @param resolver the Resolver context
|
|
12
|
+
* @param sectionData section data object
|
|
13
|
+
* @param parameters parameters for the resolution
|
|
14
|
+
* @returns the resolved result of the section.
|
|
15
|
+
*/
|
|
16
|
+
async function resolveSection(resolver, sectionData, parameters) {
|
|
17
|
+
const parametersDict = (0, FunctionElement_1.makeParametersDict)(parameters);
|
|
18
|
+
if ((0, exports.areParametersValid)(parameters)) {
|
|
19
|
+
const sectionElement = new ResolvableSectionElement_1.ResolvableSectionElement({
|
|
20
|
+
element: sectionData,
|
|
21
|
+
resolver,
|
|
22
|
+
onUpdate: () => {
|
|
23
|
+
return;
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
await sectionElement
|
|
27
|
+
.initialize(parametersDict)
|
|
28
|
+
.finally(() => sectionElement?.close());
|
|
29
|
+
return sectionElement.value;
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
exports.resolveSection = resolveSection;
|
|
34
|
+
const areParametersValid = (parameters) => {
|
|
35
|
+
if (parameters &&
|
|
36
|
+
Object.entries(parameters).some(([, value]) => value == null)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
};
|
|
41
|
+
exports.areParametersValid = areParametersValid;
|
|
42
42
|
//# sourceMappingURL=resolveSection.js.map
|
|
@@ -1,16 +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 the value of a tag on a record and keeps it updated using a watch.
|
|
7
|
-
*/
|
|
8
|
-
export declare class ResolvableTagElement<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
|
-
}
|
|
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 the value of a tag on a record and keeps it updated using a watch.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResolvableTagElement<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
|
+
}
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ResolvableTagElement = void 0;
|
|
7
|
-
const haystack_core_1 = require("haystack-core");
|
|
8
|
-
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
-
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
-
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
11
|
-
const UiElement_1 = require("../UiElement");
|
|
12
|
-
/**
|
|
13
|
-
* Resolves to the value of a tag on a record and keeps it updated using a watch.
|
|
14
|
-
*/
|
|
15
|
-
class ResolvableTagElement extends ResolvableValueElement_1.ResolvableValueElement {
|
|
16
|
-
constructor(data) {
|
|
17
|
-
super(data);
|
|
18
|
-
}
|
|
19
|
-
filter;
|
|
20
|
-
watch;
|
|
21
|
-
doInitialize = async (parameters) => {
|
|
22
|
-
const { subscribe, entityBinding, parentBinding } = this
|
|
23
|
-
._meta;
|
|
24
|
-
const filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(UiElement_1.UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
25
|
-
if (!this.#isValidFilter(filter)) {
|
|
26
|
-
throw Error('Invalid filter');
|
|
27
|
-
}
|
|
28
|
-
this.filter = filter;
|
|
29
|
-
const grid = await this.resolver.read(this.filter);
|
|
30
|
-
if (!this.#isValidReadGrid(grid)) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
this.#updateValue(grid);
|
|
34
|
-
if (subscribe) {
|
|
35
|
-
await this.#setupWatch(grid);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
doClose = async () => {
|
|
39
|
-
return this.watch?.close();
|
|
40
|
-
};
|
|
41
|
-
getParameterList = () => {
|
|
42
|
-
const { entityBinding, parentBinding } = this
|
|
43
|
-
._meta;
|
|
44
|
-
const parameters = [];
|
|
45
|
-
if (entityBinding) {
|
|
46
|
-
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
|
|
47
|
-
parameters.push(match);
|
|
48
|
-
return '';
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
if (parentBinding) {
|
|
52
|
-
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
|
|
53
|
-
parameters.push(match);
|
|
54
|
-
return '';
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return parameters;
|
|
58
|
-
};
|
|
59
|
-
#isValidFilter = (filter) => {
|
|
60
|
-
try {
|
|
61
|
-
haystack_core_1.HFilter.parse(filter);
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
console.error('Invalid filter: \n', this.filter, e);
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
return true;
|
|
68
|
-
};
|
|
69
|
-
#isValidReadGrid = (grid) => {
|
|
70
|
-
if (grid.isEmpty()) {
|
|
71
|
-
console.error('Empty grid result for query: \n', this.filter);
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
if (grid.length > 1) {
|
|
75
|
-
console.warn('More than 1 result for query: \n', this.filter);
|
|
76
|
-
}
|
|
77
|
-
return true;
|
|
78
|
-
};
|
|
79
|
-
#setupWatch = async (grid) => {
|
|
80
|
-
const { readTag, subscribePollRate, subscribe } = this
|
|
81
|
-
._meta;
|
|
82
|
-
if (subscribe) {
|
|
83
|
-
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
84
|
-
const updateValue = () => this.#updateValue(this.watch?.grid);
|
|
85
|
-
// Update with the value received when opening the watch
|
|
86
|
-
updateValue();
|
|
87
|
-
// Configure polling options
|
|
88
|
-
this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
|
|
89
|
-
this.watch.changed({
|
|
90
|
-
interests: [readTag],
|
|
91
|
-
callback: updateValue,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
#updateValue = (grid) => {
|
|
96
|
-
const { readTag } = this._meta;
|
|
97
|
-
if (grid) {
|
|
98
|
-
this.value = grid[0]?.get(readTag);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
#getWatchDisplayName = () => {
|
|
102
|
-
return `ResolvableElement Watch for ${this.name ?? this.filter}`;
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
exports.ResolvableTagElement = ResolvableTagElement;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResolvableTagElement = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
+
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
+
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
11
|
+
const UiElement_1 = require("../UiElement");
|
|
12
|
+
/**
|
|
13
|
+
* Resolves to the value of a tag on a record and keeps it updated using a watch.
|
|
14
|
+
*/
|
|
15
|
+
class ResolvableTagElement extends ResolvableValueElement_1.ResolvableValueElement {
|
|
16
|
+
constructor(data) {
|
|
17
|
+
super(data);
|
|
18
|
+
}
|
|
19
|
+
filter;
|
|
20
|
+
watch;
|
|
21
|
+
doInitialize = async (parameters) => {
|
|
22
|
+
const { subscribe, entityBinding, parentBinding } = this
|
|
23
|
+
._meta;
|
|
24
|
+
const filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(UiElement_1.UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
25
|
+
if (!this.#isValidFilter(filter)) {
|
|
26
|
+
throw Error('Invalid filter');
|
|
27
|
+
}
|
|
28
|
+
this.filter = filter;
|
|
29
|
+
const grid = await this.resolver.read(this.filter);
|
|
30
|
+
if (!this.#isValidReadGrid(grid)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.#updateValue(grid);
|
|
34
|
+
if (subscribe) {
|
|
35
|
+
await this.#setupWatch(grid);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
doClose = async () => {
|
|
39
|
+
return this.watch?.close();
|
|
40
|
+
};
|
|
41
|
+
getParameterList = () => {
|
|
42
|
+
const { entityBinding, parentBinding } = this
|
|
43
|
+
._meta;
|
|
44
|
+
const parameters = [];
|
|
45
|
+
if (entityBinding) {
|
|
46
|
+
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
|
|
47
|
+
parameters.push(match);
|
|
48
|
+
return '';
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (parentBinding) {
|
|
52
|
+
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
|
|
53
|
+
parameters.push(match);
|
|
54
|
+
return '';
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return parameters;
|
|
58
|
+
};
|
|
59
|
+
#isValidFilter = (filter) => {
|
|
60
|
+
try {
|
|
61
|
+
haystack_core_1.HFilter.parse(filter);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error('Invalid filter: \n', this.filter, e);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
};
|
|
69
|
+
#isValidReadGrid = (grid) => {
|
|
70
|
+
if (grid.isEmpty()) {
|
|
71
|
+
console.error('Empty grid result for query: \n', this.filter);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (grid.length > 1) {
|
|
75
|
+
console.warn('More than 1 result for query: \n', this.filter);
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
};
|
|
79
|
+
#setupWatch = async (grid) => {
|
|
80
|
+
const { readTag, subscribePollRate, subscribe } = this
|
|
81
|
+
._meta;
|
|
82
|
+
if (subscribe) {
|
|
83
|
+
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
84
|
+
const updateValue = () => this.#updateValue(this.watch?.grid);
|
|
85
|
+
// Update with the value received when opening the watch
|
|
86
|
+
updateValue();
|
|
87
|
+
// Configure polling options
|
|
88
|
+
this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
|
|
89
|
+
this.watch.changed({
|
|
90
|
+
interests: [readTag],
|
|
91
|
+
callback: updateValue,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
#updateValue = (grid) => {
|
|
96
|
+
const { readTag } = this._meta;
|
|
97
|
+
if (grid) {
|
|
98
|
+
this.value = grid[0]?.get(readTag);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
#getWatchDisplayName = () => {
|
|
102
|
+
return `ResolvableElement Watch for ${this.name ?? this.filter}`;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
exports.ResolvableTagElement = ResolvableTagElement;
|
|
106
106
|
//# sourceMappingURL=ResolvableTagElement.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ResolvableValueElementMeta } from '../ResolvableValueElement';
|
|
2
|
-
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
-
export interface UiElementTagMetaBase extends ResolvableValueElementMeta {
|
|
4
|
-
resolutionType: 'tag';
|
|
5
|
-
readTag: string;
|
|
6
|
-
parentBinding?: string;
|
|
7
|
-
entityBinding?: string;
|
|
8
|
-
subscribe?: boolean;
|
|
9
|
-
subscribePollRate?: number;
|
|
10
|
-
}
|
|
11
|
-
export declare const isResolvableTagElementData: (element: UiElementData) => element is UiElementData<UiElementTagMetaBase>;
|
|
12
|
-
export declare const isResolvableTagMeta: (meta: UiElementMeta) => meta is UiElementTagMetaBase;
|
|
1
|
+
import { ResolvableValueElementMeta } from '../ResolvableValueElement';
|
|
2
|
+
import { UiElementData, UiElementMeta } from '../UiElement';
|
|
3
|
+
export interface UiElementTagMetaBase extends ResolvableValueElementMeta {
|
|
4
|
+
resolutionType: 'tag';
|
|
5
|
+
readTag: string;
|
|
6
|
+
parentBinding?: string;
|
|
7
|
+
entityBinding?: string;
|
|
8
|
+
subscribe?: boolean;
|
|
9
|
+
subscribePollRate?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const isResolvableTagElementData: (element: UiElementData) => element is UiElementData<UiElementTagMetaBase>;
|
|
12
|
+
export declare const isResolvableTagMeta: (meta: UiElementMeta) => meta is UiElementTagMetaBase;
|
|
@@ -1,15 +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.isResolvableTagMeta = exports.isResolvableTagElementData = void 0;
|
|
7
|
-
const isResolvableTagElementData = (element) => {
|
|
8
|
-
return !!element?._meta && (0, exports.isResolvableTagMeta)(element._meta);
|
|
9
|
-
};
|
|
10
|
-
exports.isResolvableTagElementData = isResolvableTagElementData;
|
|
11
|
-
const isResolvableTagMeta = (meta) => {
|
|
12
|
-
return meta.resolutionType === 'tag';
|
|
13
|
-
};
|
|
14
|
-
exports.isResolvableTagMeta = isResolvableTagMeta;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isResolvableTagMeta = exports.isResolvableTagElementData = void 0;
|
|
7
|
+
const isResolvableTagElementData = (element) => {
|
|
8
|
+
return !!element?._meta && (0, exports.isResolvableTagMeta)(element._meta);
|
|
9
|
+
};
|
|
10
|
+
exports.isResolvableTagElementData = isResolvableTagElementData;
|
|
11
|
+
const isResolvableTagMeta = (meta) => {
|
|
12
|
+
return meta.resolutionType === 'tag';
|
|
13
|
+
};
|
|
14
|
+
exports.isResolvableTagMeta = isResolvableTagMeta;
|
|
15
15
|
//# sourceMappingURL=TagElementMeta.js.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
2
|
-
import { UiElementSectionMeta } from '../elements/section/SectionElementMeta';
|
|
3
|
-
import { UiElementData } from '../elements/UiElement';
|
|
4
|
-
export declare const generateInterfaces: (section: UiElementData<UiElementSectionMeta>) => string;
|
|
5
|
-
/**
|
|
6
|
-
* Class for generating typescript interfaces from a section data.
|
|
7
|
-
*/
|
|
8
|
-
export declare class SectionInterfacesGenerator {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(section: UiElementData<UiElementSectionMeta>);
|
|
11
|
-
sectionData: UiElementData<UiElementSectionMeta>;
|
|
12
|
-
output: string;
|
|
13
|
-
generate: () => string;
|
|
14
|
-
generateInterface(section: ResolvableSectionElement, indentation: number): void;
|
|
15
|
-
generateNamespace(section: ResolvableSectionElement<UiElementData<UiElementSectionMeta>>, indentation: number): void;
|
|
16
|
-
}
|
|
17
|
-
export declare function makeResolvableSectionElementMock(sectionData: UiElementData<UiElementSectionMeta>, name?: string): ResolvableSectionElement<UiElementData<UiElementSectionMeta>>;
|
|
1
|
+
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
2
|
+
import { UiElementSectionMeta } from '../elements/section/SectionElementMeta';
|
|
3
|
+
import { UiElementData } from '../elements/UiElement';
|
|
4
|
+
export declare const generateInterfaces: (section: UiElementData<UiElementSectionMeta>) => string;
|
|
5
|
+
/**
|
|
6
|
+
* Class for generating typescript interfaces from a section data.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SectionInterfacesGenerator {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(section: UiElementData<UiElementSectionMeta>);
|
|
11
|
+
sectionData: UiElementData<UiElementSectionMeta>;
|
|
12
|
+
output: string;
|
|
13
|
+
generate: () => string;
|
|
14
|
+
generateInterface(section: ResolvableSectionElement, indentation: number): void;
|
|
15
|
+
generateNamespace(section: ResolvableSectionElement<UiElementData<UiElementSectionMeta>>, indentation: number): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function makeResolvableSectionElementMock(sectionData: UiElementData<UiElementSectionMeta>, name?: string): ResolvableSectionElement<UiElementData<UiElementSectionMeta>>;
|