@uxland/primary-shell 7.22.0 → 7.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{component-Dwsijod7.js → component-C_PbI9wb.js} +2 -2
- package/dist/{component-Dwsijod7.js.map → component-C_PbI9wb.js.map} +1 -1
- package/dist/{index-DlsgRvfa.js → index-DvfICPCZ.js} +4850 -4839
- package/dist/index-DvfICPCZ.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +313 -313
- package/dist/index.umd.cjs.map +1 -1
- package/dist/primary/shell/src/api/api.d.ts +2 -0
- package/dist/primary/shell/src/api/context-manager/context-manager.d.ts +27 -0
- package/dist/primary/shell/src/api/context-manager/context-manager.test.d.ts +1 -0
- package/dist/primary/shell/src/bootstrapper.d.ts +2 -4
- package/dist/primary/shell/src/features/bootstrapper.d.ts +1 -2
- package/dist/primary/shell/src/features/visit/finalize-visit/bootstrapper.d.ts +1 -2
- package/dist/primary/shell/src/features/visit/finalize-visit/component/finalize-visit-button.d.ts +0 -2
- package/dist/primary/shell/src/features/visit/finalize-visit/handler.d.ts +1 -1
- package/dist/primary/shell/src/features/visit/finalize-visit/request.d.ts +0 -2
- package/dist/primary/shell/src/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/api/api.ts +4 -0
- package/src/api/context-manager/context-manager.test.ts +86 -0
- package/src/api/context-manager/context-manager.ts +41 -0
- package/src/bootstrapper.ts +7 -5
- package/src/features/bootstrapper.ts +2 -3
- package/src/features/visit/finalize-visit/bootstrapper.ts +4 -4
- package/src/features/visit/finalize-visit/component/finalize-visit-button.ts +1 -12
- package/src/features/visit/finalize-visit/handler.ts +5 -3
- package/src/features/visit/finalize-visit/request.ts +1 -3
- package/src/index.ts +1 -0
- package/dist/index-DlsgRvfa.js.map +0 -1
|
@@ -12,6 +12,7 @@ import { PrimariaRegionManager } from './region-manager/region-manager';
|
|
|
12
12
|
import { TokenManager } from './token-manager/token-manager';
|
|
13
13
|
import { UserManager } from './user-manager/user-manager';
|
|
14
14
|
import { PrimariaImportDataManager } from './import-data-manager';
|
|
15
|
+
import { PrimariaContextManager } from './context-manager/context-manager';
|
|
15
16
|
export interface PrimariaApi extends HarmonixApi {
|
|
16
17
|
httpClient: HttpClient;
|
|
17
18
|
interactionService: PrimariaInteractionService;
|
|
@@ -19,6 +20,7 @@ export interface PrimariaApi extends HarmonixApi {
|
|
|
19
20
|
broker: PrimariaBroker;
|
|
20
21
|
regionManager: PrimariaRegionManager;
|
|
21
22
|
globalStateManager: PrimariaGlobalStateManager;
|
|
23
|
+
contextManager: PrimariaContextManager;
|
|
22
24
|
tokenManager: TokenManager;
|
|
23
25
|
userManager: UserManager;
|
|
24
26
|
ecapEventManager: EcapEventManager;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface EcapContext {
|
|
2
|
+
visi_id?: string;
|
|
3
|
+
signador?: string;
|
|
4
|
+
campanya?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class PrimariaContextManager {
|
|
7
|
+
abstract getContext(): Readonly<EcapContext>;
|
|
8
|
+
}
|
|
9
|
+
declare class PrimariaContextManagerImpl implements PrimariaContextManager {
|
|
10
|
+
private context;
|
|
11
|
+
/**
|
|
12
|
+
* Initializes the context with the provided ECAP context data.
|
|
13
|
+
* This should only be called once during shell initialization.
|
|
14
|
+
*
|
|
15
|
+
* @param {EcapContext} context - The context data from ECAP
|
|
16
|
+
* @return {void}
|
|
17
|
+
*/
|
|
18
|
+
initializeContext(context: EcapContext): void;
|
|
19
|
+
/**
|
|
20
|
+
* Returns a read-only copy of the entire ECAP context.
|
|
21
|
+
*
|
|
22
|
+
* @return {Readonly<EcapContext>} The context object
|
|
23
|
+
*/
|
|
24
|
+
getContext(): Readonly<EcapContext>;
|
|
25
|
+
}
|
|
26
|
+
export declare const createContextManager: () => PrimariaContextManagerImpl;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
export declare const initializeShell: (hostAppElement: HTMLElement, shellParams?: IShellParams) => void;
|
|
1
|
+
import { EcapContext } from './api/context-manager/context-manager';
|
|
2
|
+
export declare const initializeShell: (hostAppElement: HTMLElement, ecapContext?: EcapContext) => void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { PrimariaApi } from '../api/api';
|
|
2
|
-
|
|
3
|
-
export declare const useFeatures: (api: PrimariaApi, shellParams?: IShellParams) => void;
|
|
2
|
+
export declare const useFeatures: (api: PrimariaApi) => void;
|
|
4
3
|
export declare const disposeFeatures: (api: PrimariaApi) => void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { PrimariaApi } from '../../../api/api';
|
|
2
|
-
|
|
3
|
-
export declare const useFinalizeVisit: (api: PrimariaApi, shellParams?: IShellParams) => void;
|
|
2
|
+
export declare const useFinalizeVisit: (api: PrimariaApi) => void;
|
|
4
3
|
export declare const disposeFinalizeVisit: () => void;
|
|
@@ -4,6 +4,7 @@ export * from './api/region-manager/regions';
|
|
|
4
4
|
export * from './handle-plugins';
|
|
5
5
|
export * from './api/api';
|
|
6
6
|
export * from './api/broker/primaria-broker';
|
|
7
|
+
export type { PrimariaContextManager, EcapContext } from './api/context-manager/context-manager';
|
|
7
8
|
export * from './UI/index';
|
|
8
9
|
export { PrimariaNavItem } from './UI/shared-components/primaria-nav-item/primaria-nav-item';
|
|
9
10
|
export { PrimariaRegion } from './UI/shared-components/primaria-region';
|
package/package.json
CHANGED
package/src/api/api.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { PrimariaRegionManager, createRegionManagerProxy } from "./region-manage
|
|
|
30
30
|
import { TokenManager, createTokenManager } from "./token-manager/token-manager";
|
|
31
31
|
import { UserManager, createUserManager } from "./user-manager/user-manager";
|
|
32
32
|
import { PrimariaImportDataManager, ImportDataManagerImpl } from "./import-data-manager";
|
|
33
|
+
import { PrimariaContextManager, createContextManager } from "./context-manager/context-manager";
|
|
33
34
|
|
|
34
35
|
const broker = createBroker();
|
|
35
36
|
|
|
@@ -40,6 +41,7 @@ export interface PrimariaApi extends HarmonixApi {
|
|
|
40
41
|
broker: PrimariaBroker;
|
|
41
42
|
regionManager: PrimariaRegionManager;
|
|
42
43
|
globalStateManager: PrimariaGlobalStateManager;
|
|
44
|
+
contextManager: PrimariaContextManager;
|
|
43
45
|
tokenManager: TokenManager;
|
|
44
46
|
userManager: UserManager;
|
|
45
47
|
ecapEventManager: EcapEventManager;
|
|
@@ -54,6 +56,7 @@ export const PrimariaRegionHost: any = createRegionHost(regionManager as any);
|
|
|
54
56
|
const tokenManager = createTokenManager();
|
|
55
57
|
const userManager = createUserManager(tokenManager);
|
|
56
58
|
const globalStateManager: PrimariaGlobalStateManager = createGlobalStateManager(broker);
|
|
59
|
+
const contextManager = createContextManager();
|
|
57
60
|
const pluginBusyManager = new PluginBusyManagerImpl();
|
|
58
61
|
const quickActionBusyManager = new QuickActionBusyManagerImpl(broker);
|
|
59
62
|
const interactionService = new ParimariaInteractionServiceImpl();
|
|
@@ -80,6 +83,7 @@ export const primariaApiFactory: ApiFactory<PrimariaApi> = (
|
|
|
80
83
|
broker,
|
|
81
84
|
createLocaleManager: createLocaleManager(pluginInfo.pluginId) as any,
|
|
82
85
|
globalStateManager,
|
|
86
|
+
contextManager,
|
|
83
87
|
tokenManager,
|
|
84
88
|
userManager,
|
|
85
89
|
ecapEventManager,
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
+
import { createContextManager, EcapContext } from "./context-manager";
|
|
3
|
+
|
|
4
|
+
describe("PrimariaContextManager", () => {
|
|
5
|
+
let contextManager: ReturnType<typeof createContextManager>;
|
|
6
|
+
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
contextManager = createContextManager();
|
|
9
|
+
// Reset context before each test
|
|
10
|
+
contextManager.initializeContext({});
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
describe("initializeContext", () => {
|
|
14
|
+
it("should initialize context with provided data", () => {
|
|
15
|
+
const context: EcapContext = {
|
|
16
|
+
visi_id: "12345",
|
|
17
|
+
signador: "Dr. Smith",
|
|
18
|
+
campanya: "2024-Q1",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
contextManager.initializeContext(context);
|
|
22
|
+
|
|
23
|
+
expect(contextManager.getContext()).toEqual(context);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("should handle partial context data", () => {
|
|
27
|
+
const context: EcapContext = {
|
|
28
|
+
visi_id: "12345",
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
contextManager.initializeContext(context);
|
|
32
|
+
const result = contextManager.getContext();
|
|
33
|
+
|
|
34
|
+
expect(result.visi_id).toBe("12345");
|
|
35
|
+
expect(result.signador).toBeUndefined();
|
|
36
|
+
expect(result.campanya).toBeUndefined();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe("getContext", () => {
|
|
41
|
+
it("should return a read-only copy of context", () => {
|
|
42
|
+
const context: EcapContext = {
|
|
43
|
+
visi_id: "12345",
|
|
44
|
+
signador: "Dr. Smith",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
contextManager.initializeContext(context);
|
|
48
|
+
const returnedContext = contextManager.getContext();
|
|
49
|
+
|
|
50
|
+
expect(returnedContext).toEqual(context);
|
|
51
|
+
expect(returnedContext).not.toBe(context); // Ensure it's a copy
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("should return empty object if not initialized", () => {
|
|
55
|
+
const context = contextManager.getContext();
|
|
56
|
+
expect(context).toEqual({});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe("context properties access", () => {
|
|
61
|
+
it("should access visit ID through context", () => {
|
|
62
|
+
contextManager.initializeContext({ visi_id: "12345" });
|
|
63
|
+
const context = contextManager.getContext();
|
|
64
|
+
expect(context.visi_id).toBe("12345");
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("should access signador through context", () => {
|
|
68
|
+
contextManager.initializeContext({ signador: "Dr. Smith" });
|
|
69
|
+
const context = contextManager.getContext();
|
|
70
|
+
expect(context.signador).toBe("Dr. Smith");
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("should access campanya through context", () => {
|
|
74
|
+
contextManager.initializeContext({ campanya: "2024-Q1" });
|
|
75
|
+
const context = contextManager.getContext();
|
|
76
|
+
expect(context.campanya).toBe("2024-Q1");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("should return undefined for unset properties", () => {
|
|
80
|
+
const context = contextManager.getContext();
|
|
81
|
+
expect(context.visi_id).toBeUndefined();
|
|
82
|
+
expect(context.signador).toBeUndefined();
|
|
83
|
+
expect(context.campanya).toBeUndefined();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface EcapContext {
|
|
2
|
+
visi_id?: string;
|
|
3
|
+
signador?: string;
|
|
4
|
+
campanya?: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export abstract class PrimariaContextManager {
|
|
8
|
+
abstract getContext(): Readonly<EcapContext>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
class PrimariaContextManagerImpl implements PrimariaContextManager {
|
|
12
|
+
private context: EcapContext = {};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Initializes the context with the provided ECAP context data.
|
|
16
|
+
* This should only be called once during shell initialization.
|
|
17
|
+
*
|
|
18
|
+
* @param {EcapContext} context - The context data from ECAP
|
|
19
|
+
* @return {void}
|
|
20
|
+
*/
|
|
21
|
+
public initializeContext(context: EcapContext): void {
|
|
22
|
+
this.context = { ...context };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Returns a read-only copy of the entire ECAP context.
|
|
27
|
+
*
|
|
28
|
+
* @return {Readonly<EcapContext>} The context object
|
|
29
|
+
*/
|
|
30
|
+
getContext(): Readonly<EcapContext> {
|
|
31
|
+
return { ...this.context };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let contextManager: PrimariaContextManagerImpl;
|
|
36
|
+
|
|
37
|
+
export const createContextManager = (): PrimariaContextManagerImpl => {
|
|
38
|
+
if (contextManager) return contextManager;
|
|
39
|
+
contextManager = new PrimariaContextManagerImpl();
|
|
40
|
+
return contextManager;
|
|
41
|
+
};
|
package/src/bootstrapper.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { PrimariaShell } from "./UI/components/primaria-shell/primaria-shell";
|
|
2
2
|
import { shellApi } from "./api/api";
|
|
3
|
+
import { EcapContext } from "./api/context-manager/context-manager";
|
|
3
4
|
import { useFeatures } from "./features/bootstrapper";
|
|
4
5
|
import { useLocalization } from "./locales";
|
|
5
6
|
import { useUI } from "./UI/bootstrapper";
|
|
6
7
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export const initializeShell = (hostAppElement: HTMLElement, ecapContext?: EcapContext) => {
|
|
9
|
+
// Initialize the context manager with ECAP parameters
|
|
10
|
+
if (ecapContext) {
|
|
11
|
+
(shellApi.contextManager as any).initializeContext(ecapContext);
|
|
12
|
+
}
|
|
10
13
|
|
|
11
|
-
export const initializeShell = (hostAppElement: HTMLElement, shellParams?: IShellParams) => {
|
|
12
14
|
useLocalization(shellApi);
|
|
13
15
|
useUI();
|
|
14
|
-
useFeatures(shellApi
|
|
16
|
+
useFeatures(shellApi);
|
|
15
17
|
const shell = new PrimariaShell();
|
|
16
18
|
hostAppElement.appendChild(shell as any);
|
|
17
19
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { mediatorSettings } from "mediatr-ts";
|
|
2
2
|
import { PrimariaApi } from "../api/api";
|
|
3
|
-
import { IShellParams } from "../bootstrapper";
|
|
4
3
|
import { container } from "../infrastructure/ioc/container";
|
|
5
4
|
import { TYPES } from "../infrastructure/ioc/types";
|
|
6
5
|
import { useExitShell, disposeExitShell } from "./exit/bootstrapper";
|
|
@@ -9,12 +8,12 @@ import { GetUserInfo } from "./get-user-info/request";
|
|
|
9
8
|
import { disposeGetVisitId, useGetVisitId } from "./visit/get-visit-id/bootstrapper";
|
|
10
9
|
import { disposeFinalizeVisit, useFinalizeVisit } from "./visit/finalize-visit/bootstrapper";
|
|
11
10
|
|
|
12
|
-
export const useFeatures = (api: PrimariaApi
|
|
11
|
+
export const useFeatures = (api: PrimariaApi) => {
|
|
13
12
|
container.bind(TYPES.primaryApi).toConstantValue(api);
|
|
14
13
|
useGetUserInfo(api);
|
|
15
14
|
useExitShell(api);
|
|
16
15
|
useGetVisitId(api);
|
|
17
|
-
useFinalizeVisit(api
|
|
16
|
+
useFinalizeVisit(api);
|
|
18
17
|
api.broker.send(new GetUserInfo());
|
|
19
18
|
};
|
|
20
19
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PrimariaApi } from "../../../api/api";
|
|
2
|
-
import { IShellParams } from "../../../bootstrapper";
|
|
3
2
|
import { BrokerDisposableHandler } from "../../../api/broker/primaria-broker";
|
|
4
3
|
import { container } from "../../../infrastructure/ioc/container";
|
|
5
4
|
import { registerRequest } from "../../utils";
|
|
@@ -9,13 +8,14 @@ import { FinalizeVisitButton } from "./component/finalize-visit-button";
|
|
|
9
8
|
|
|
10
9
|
let request: BrokerDisposableHandler;
|
|
11
10
|
|
|
12
|
-
export const useFinalizeVisit = (api: PrimariaApi
|
|
11
|
+
export const useFinalizeVisit = (api: PrimariaApi) => {
|
|
13
12
|
disposeFinalizeVisit();
|
|
14
|
-
|
|
13
|
+
const visitId = api.contextManager.getContext().visi_id;
|
|
14
|
+
if (visitId) {
|
|
15
15
|
api.regionManager.registerView(api.regionManager.regions.shell.headerRightActions, {
|
|
16
16
|
id: "finalize-visit-button",
|
|
17
17
|
sortHint: "0001",
|
|
18
|
-
factory: () => Promise.resolve(new FinalizeVisitButton(
|
|
18
|
+
factory: () => Promise.resolve(new FinalizeVisitButton()),
|
|
19
19
|
});
|
|
20
20
|
request = registerRequest(api, container)(FinalizeVisit, FinalizeVisitHandler);
|
|
21
21
|
}
|
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
2
|
import { template } from "./template";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
3
|
import { shellApi } from "../../../../api/api";
|
|
5
4
|
import { FinalizeVisit } from "../request";
|
|
6
5
|
|
|
7
6
|
export class FinalizeVisitButton extends LitElement {
|
|
8
|
-
constructor(visitId: string) {
|
|
9
|
-
super();
|
|
10
|
-
this.visitId = visitId;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
7
|
render() {
|
|
14
8
|
return html`${template(this)}`;
|
|
15
9
|
}
|
|
16
10
|
|
|
17
|
-
@property({ type: String })
|
|
18
|
-
visitId: string;
|
|
19
|
-
|
|
20
11
|
finalizeVisitHandler() {
|
|
21
|
-
|
|
22
|
-
shellApi.broker.send(new FinalizeVisit(this.visitId));
|
|
23
|
-
}
|
|
12
|
+
shellApi.broker.send(new FinalizeVisit());
|
|
24
13
|
}
|
|
25
14
|
}
|
|
@@ -6,10 +6,12 @@ import { ExitShell } from "../../exit/request";
|
|
|
6
6
|
|
|
7
7
|
export class FinalizeVisitHandler {
|
|
8
8
|
constructor(@inject(TYPES.primaryApi) private api: PrimariaApi) {}
|
|
9
|
-
async handle(
|
|
9
|
+
async handle(_data: FinalizeVisit) {
|
|
10
10
|
try {
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
const visitId = this.api.contextManager.getContext().visi_id;
|
|
12
|
+
if (visitId) {
|
|
13
|
+
this.api.broker.send(new ExitShell("RESOL_VISITA", { VisiID: visitId }));
|
|
14
|
+
}
|
|
13
15
|
} catch (error) {
|
|
14
16
|
this.api.notificationService.error(error.message);
|
|
15
17
|
}
|
package/src/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from "./api/region-manager/regions";
|
|
|
14
14
|
export * from "./handle-plugins";
|
|
15
15
|
export * from "./api/api";
|
|
16
16
|
export * from "./api/broker/primaria-broker";
|
|
17
|
+
export type { PrimariaContextManager, EcapContext } from "./api/context-manager/context-manager";
|
|
17
18
|
export * from "./UI/index";
|
|
18
19
|
export { PrimariaNavItem } from "./UI/shared-components/primaria-nav-item/primaria-nav-item";
|
|
19
20
|
export { PrimariaRegion } from "./UI/shared-components/primaria-region";
|