@j2inn/fin5-ui-utils 0.0.2 → 0.0.5-beta.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/fantomProps/createFin5Props/index.d.ts +12 -0
- package/dist/fantomProps/createFin5Props/index.js +147 -0
- package/dist/fantomProps/createFin5Props/index.js.map +1 -0
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -0
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +17 -0
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.js.map +1 -0
- package/dist/fantomProps/fantomPropsToObject.js +3 -0
- package/dist/fantomProps/fantomPropsToObject.js.map +1 -1
- package/dist/fantomProps/generateJsonFromFantomPropsFile.js +3 -0
- package/dist/fantomProps/generateJsonFromFantomPropsFile.js.map +1 -1
- package/dist/fantomProps/localePropsToJson.js +3 -0
- package/dist/fantomProps/localePropsToJson.js.map +1 -1
- package/dist/fantomProps/readFantomPropsFile.js +3 -0
- package/dist/fantomProps/readFantomPropsFile.js.map +1 -1
- package/dist/fin5Top/fin5Top.js +3 -0
- package/dist/fin5Top/fin5Top.js.map +1 -1
- package/dist/fin5Top/getFin5BinUrl.js +3 -0
- package/dist/fin5Top/getFin5BinUrl.js.map +1 -1
- package/dist/fin5Top/openFin5Alarm.js +5 -2
- package/dist/fin5Top/openFin5Alarm.js.map +1 -1
- package/dist/fin5Top/openFin5Historian.js +5 -2
- package/dist/fin5Top/openFin5Historian.js.map +1 -1
- package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +7 -0
- package/dist/fin5Top/useFin5AppURLHashParameter.js +72 -0
- package/dist/fin5Top/useFin5AppURLHashParameter.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/react/app/Fin5AppContainer.d.ts +36 -0
- package/dist/react/app/Fin5AppContainer.jsx +102 -0
- package/dist/react/app/Fin5AppContainer.jsx.map +1 -0
- package/dist/react/app/Fin5AppRootStore.d.ts +38 -0
- package/dist/react/app/Fin5AppRootStore.js +66 -0
- package/dist/react/app/Fin5AppRootStore.js.map +1 -0
- package/dist/react/components/ErrorBoundary.d.ts +57 -0
- package/dist/react/components/ErrorBoundary.jsx +177 -0
- package/dist/react/components/ErrorBoundary.jsx.map +1 -0
- package/dist/react/components/Loader.d.ts +9 -0
- package/dist/react/components/Loader.jsx +18 -0
- package/dist/react/components/Loader.jsx.map +1 -0
- package/dist/react/components/LoadingSpinner.jsx +19 -3
- package/dist/react/components/LoadingSpinner.jsx.map +1 -1
- package/dist/react/components/navigation/BasicLayout.d.ts +2 -1
- package/dist/react/components/navigation/BasicLayout.jsx +10 -3
- package/dist/react/components/navigation/BasicLayout.jsx.map +1 -1
- package/dist/react/components/navigation/MenuPage.jsx +3 -0
- package/dist/react/components/navigation/MenuPage.jsx.map +1 -1
- package/dist/react/components/navigation/Router.jsx +3 -0
- package/dist/react/components/navigation/Router.jsx.map +1 -1
- package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -0
- package/dist_es/fantomProps/createFin5Props/index.js +141 -0
- package/dist_es/fantomProps/createFin5Props/index.js.map +1 -0
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -0
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +12 -0
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js.map +1 -0
- package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -0
- package/dist_es/fantomProps/fantomPropsToObject.js +179 -0
- package/dist_es/fantomProps/fantomPropsToObject.js.map +1 -0
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -0
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +13 -0
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js.map +1 -0
- package/dist_es/fantomProps/localePropsToJson.d.ts +1 -0
- package/dist_es/fantomProps/localePropsToJson.js +22 -0
- package/dist_es/fantomProps/localePropsToJson.js.map +1 -0
- package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -0
- package/dist_es/fantomProps/readFantomPropsFile.js +36 -0
- package/dist_es/fantomProps/readFantomPropsFile.js.map +1 -0
- package/dist_es/fin5Top/fin5Top.d.ts +111 -0
- package/dist_es/fin5Top/fin5Top.js +55 -0
- package/dist_es/fin5Top/fin5Top.js.map +1 -0
- package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -0
- package/dist_es/fin5Top/getFin5BinUrl.js +6 -0
- package/dist_es/fin5Top/getFin5BinUrl.js.map +1 -0
- package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -0
- package/dist_es/fin5Top/openFin5Alarm.js +20 -0
- package/dist_es/fin5Top/openFin5Alarm.js.map +1 -0
- package/dist_es/fin5Top/openFin5Historian.d.ts +3 -0
- package/dist_es/fin5Top/openFin5Historian.js +16 -0
- package/dist_es/fin5Top/openFin5Historian.js.map +1 -0
- package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +7 -0
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js +68 -0
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js.map +1 -0
- package/dist_es/index.d.ts +18 -0
- package/dist_es/index.js +34 -0
- package/dist_es/index.js.map +1 -0
- package/dist_es/react/app/Fin5AppContainer.d.ts +36 -0
- package/dist_es/react/app/Fin5AppContainer.jsx +73 -0
- package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
- package/dist_es/react/app/Fin5AppRootStore.d.ts +38 -0
- package/dist_es/react/app/Fin5AppRootStore.js +62 -0
- package/dist_es/react/app/Fin5AppRootStore.js.map +1 -0
- package/dist_es/react/components/ErrorBoundary.d.ts +57 -0
- package/dist_es/react/components/ErrorBoundary.jsx +150 -0
- package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
- package/dist_es/react/components/ErrorDisplayer.d.ts +19 -0
- package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
- package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
- package/dist_es/react/components/Loader.d.ts +9 -0
- package/dist_es/react/components/Loader.jsx +13 -0
- package/dist_es/react/components/Loader.jsx.map +1 -0
- package/dist_es/react/components/LoadingSpinner.d.ts +3 -0
- package/dist_es/react/components/LoadingSpinner.jsx +23 -0
- package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
- package/dist_es/react/components/navigation/BasicLayout.d.ts +21 -0
- package/dist_es/react/components/navigation/BasicLayout.jsx +104 -0
- package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
- package/dist_es/react/components/navigation/MenuPage.d.ts +33 -0
- package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
- package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
- package/dist_es/react/components/navigation/Router.d.ts +12 -0
- package/dist_es/react/components/navigation/Router.jsx +19 -0
- package/dist_es/react/components/navigation/Router.jsx.map +1 -0
- package/package.json +22 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fin5Top.js","sourceRoot":"","sources":["../../src/fin5Top/fin5Top.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,gBAAgB;IACb,MAAM,CAAC,QAAQ,CAAgB;IAEvC,MAAM,KAAK,OAAO;QACjB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC;IACD,MAAM,CAAC,UAAU,GAAG,CAAC,aAA0B,EAAkB,EAAE;QAClE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC;gBAC7C,CAAC,CAAE,MAAM,CAAC,GAA0B,CAAC,uEAAuE;gBAC5G,CAAC,CAAC,IAAI,CAAA;SACP;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACrB,CAAC,CAAA;;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAA;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAA;AAE/C,MAAM,UAAU,eAAe,CAAC,aAA0B;IACzD,IAAI;QACH,MAAM,EAAE,GAAG,EAAE,MAAM,CAAA;QACnB,IAAK,MAAM,CAAC,GAA0B,CAAC,QAAQ,EAAE;YAChD,OAAO,IAAI,CAAA;SACX;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC1C;KACD;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,aAAa,EAAE,EAAE,CAAA;QACjB,OAAO,KAAK,CAAA;KACZ;AACF,CAAC;AA8GD,MAAM,CAAN,IAAY,YAiBX;AAjBD,WAAY,YAAY;IACvB,+BAAe,CAAA;IACf,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,8CAA8B,CAAA;IAC9B,+BAAe,CAAA;IACf,uCAAuB,CAAA;IACvB,8CAA8B,CAAA;IAC9B,oCAAoB,CAAA;IACpB,wCAAwB,CAAA;IACxB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACpB,CAAC,EAjBW,YAAY,KAAZ,YAAY,QAiBvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFin5BinUrl.js","sourceRoot":"","sources":["../../src/fin5Top/getFin5BinUrl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAQ,EAAU,EAAE,CACjD,eAAe,OAAO,EAAE,QAAQ,EAAE,WAAW,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TargetRef } from './fin5Top';
|
|
2
|
+
export interface AlarmFilterTypes {
|
|
3
|
+
alarms: boolean;
|
|
4
|
+
events: boolean;
|
|
5
|
+
acks: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface AlarmFilter {
|
|
8
|
+
range?: string;
|
|
9
|
+
priorityThreshold?: string;
|
|
10
|
+
acked?: boolean;
|
|
11
|
+
unacked?: boolean;
|
|
12
|
+
inAlarm?: boolean;
|
|
13
|
+
notInAlarm?: boolean;
|
|
14
|
+
search?: string;
|
|
15
|
+
types?: AlarmFilterTypes;
|
|
16
|
+
}
|
|
17
|
+
export declare type AlarmOptions = {
|
|
18
|
+
targetRef?: TargetRef;
|
|
19
|
+
filter: AlarmFilter;
|
|
20
|
+
historical?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare const openFin5AlarmsApp: ({ targetRef, filter, historical, }: AlarmOptions) => Promise<void>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
//////////////////////////////////////////////////////////////////////////
|
|
5
|
+
// Alarms
|
|
6
|
+
//////////////////////////////////////////////////////////////////////////
|
|
7
|
+
import { fin5Top } from './fin5Top';
|
|
8
|
+
export const openFin5AlarmsApp = async ({ targetRef, filter, historical = false, }) => {
|
|
9
|
+
await fin5Top?.app.NavigateToApp(fin5Top?.app?.APP_NAMES?.ALARMS, targetRef);
|
|
10
|
+
fin5Top?.app.ToggleCollapse(false);
|
|
11
|
+
let alarmFilters = fin5Top?.app?.GetAlarmFilters() ?? {};
|
|
12
|
+
if (filter) {
|
|
13
|
+
alarmFilters = {
|
|
14
|
+
...alarmFilters,
|
|
15
|
+
...filter,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
fin5Top?.app?.SetAlarmFilters(alarmFilters, historical);
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=openFin5Alarm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openFin5Alarm.js","sourceRoot":"","sources":["../../src/fin5Top/openFin5Alarm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,SAAS;AACT,0EAA0E;AAE1E,OAAO,EAAE,OAAO,EAAa,MAAM,WAAW,CAAA;AAyB9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACvC,SAAS,EACT,MAAM,EACN,UAAU,GAAG,KAAK,GACJ,EAAiB,EAAE;IACjC,MAAM,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAC5E,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAElC,IAAI,YAAY,GAAG,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;IACxD,IAAI,MAAM,EAAE;QACX,YAAY,GAAG;YACd,GAAG,YAAY;YACf,GAAG,MAAM;SACT,CAAA;KACD;IAED,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AACxD,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
//////////////////////////////////////////////////////////////////////////
|
|
5
|
+
// Historian
|
|
6
|
+
//////////////////////////////////////////////////////////////////////////
|
|
7
|
+
import { fin5Top } from './fin5Top';
|
|
8
|
+
export const openFin5HistorianApp = async (queryType, args) => {
|
|
9
|
+
if (fin5Top) {
|
|
10
|
+
queryType && args
|
|
11
|
+
? fin5Top.app.OpenHistorianWithOptions(queryType, args)
|
|
12
|
+
: fin5Top.app.NavigateToApp(fin5Top.app.APP_NAMES.TREND_LIST);
|
|
13
|
+
fin5Top?.app.ToggleCollapse(false);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=openFin5Historian.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openFin5Historian.js","sourceRoot":"","sources":["../../src/fin5Top/openFin5Historian.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,YAAY;AACZ,0EAA0E;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACxC,SAAyB,EACzB,IAAoB,EACJ,EAAE;IAClB,IAAI,OAAO,EAAE;QACZ,SAAS,IAAI,IAAI;YAChB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC;YACvD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAC9D,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;KAClC;AACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use a parameter in the hash of a custom app running in FIN 5 as state.
|
|
3
|
+
* @param name parameter name.
|
|
4
|
+
* @param initialState initial state used if the parameter is not defined.
|
|
5
|
+
* @returns the parameter value and a function to update it.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => void];
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
const IN_IFRAME = window !== top;
|
|
6
|
+
const getTop = () => window.top ?? window;
|
|
7
|
+
const getApp = () => getTop()?.app;
|
|
8
|
+
const getTopLocation = () => getTop().location;
|
|
9
|
+
const getFin5HashFrameParameters = () => new URLSearchParams(getTopLocation().hash.slice(1).split('?')[1]);
|
|
10
|
+
const getFin5FrameURL = () => getFin5HashFrameParameters().get('url');
|
|
11
|
+
const getPartialURLHashFragment = (url) => `#${url?.split('#')[1] ?? ''}`;
|
|
12
|
+
const getHash = () => {
|
|
13
|
+
return IN_IFRAME
|
|
14
|
+
? getPartialURLHashFragment(getFin5FrameURL())
|
|
15
|
+
: window.location.hash;
|
|
16
|
+
};
|
|
17
|
+
const fin5SkipHashUpdate = () => getApp()?.set('skipHashUpdate', true);
|
|
18
|
+
const setHash = (hash) => {
|
|
19
|
+
if (IN_IFRAME) {
|
|
20
|
+
fin5SkipHashUpdate()?.then(() => {
|
|
21
|
+
const frameParameters = getFin5HashFrameParameters();
|
|
22
|
+
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash);
|
|
23
|
+
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
window.location.hash = hash;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const getHashParameters = () => new URLSearchParams(getHash().slice(1));
|
|
31
|
+
/**
|
|
32
|
+
* Use a parameter in the hash of a custom app running in FIN 5 as state.
|
|
33
|
+
* @param name parameter name.
|
|
34
|
+
* @param initialState initial state used if the parameter is not defined.
|
|
35
|
+
* @returns the parameter value and a function to update it.
|
|
36
|
+
*/
|
|
37
|
+
export const useFin5AppURLHashParameter = (name, initialState) => {
|
|
38
|
+
const [paramValue, setParamValue] = useState(getHashParameters()?.get(name) ?? undefined);
|
|
39
|
+
const setHashParameter = (value) => {
|
|
40
|
+
const params = getHashParameters();
|
|
41
|
+
if (params.get(name) !== value) {
|
|
42
|
+
if (value === '' || value == null) {
|
|
43
|
+
params.delete(name);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
params?.set(name, value);
|
|
47
|
+
}
|
|
48
|
+
setHash(params?.toString());
|
|
49
|
+
setParamValue(value);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (!getHashParameters()?.has(name) && initialState) {
|
|
54
|
+
setHashParameter(initialState);
|
|
55
|
+
}
|
|
56
|
+
}, []);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
const onHashChange = () => {
|
|
59
|
+
setParamValue(getHashParameters()?.get(name) ?? undefined);
|
|
60
|
+
};
|
|
61
|
+
getTop().addEventListener('hashchange', onHashChange);
|
|
62
|
+
return () => {
|
|
63
|
+
getTop().removeEventListener('hashchange', onHashChange);
|
|
64
|
+
};
|
|
65
|
+
}, []);
|
|
66
|
+
return [paramValue, setHashParameter];
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=useFin5AppURLHashParameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFin5AppURLHashParameter.js","sourceRoot":"","sources":["../../src/fin5Top/useFin5AppURLHashParameter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './fantomProps/fantomPropsToObject';
|
|
2
|
+
export * from './fantomProps/generateJsonFromFantomPropsFile';
|
|
3
|
+
export * from './fantomProps/readFantomPropsFile';
|
|
4
|
+
export * from './fantomProps/createFin5Props';
|
|
5
|
+
export * from './fin5Top/fin5Top';
|
|
6
|
+
export * from './fin5Top/getFin5BinUrl';
|
|
7
|
+
export * from './fin5Top/openFin5Alarm';
|
|
8
|
+
export * from './fin5Top/openFin5Historian';
|
|
9
|
+
export * from './fin5Top/useFin5AppURLHashParameter';
|
|
10
|
+
export * from './react/components/ErrorDisplayer';
|
|
11
|
+
export * from './react/components/ErrorBoundary';
|
|
12
|
+
export * from './react/components/Loader';
|
|
13
|
+
export * from './react/components/LoadingSpinner';
|
|
14
|
+
export * from './react/components/navigation/BasicLayout';
|
|
15
|
+
export * from './react/components/navigation/MenuPage';
|
|
16
|
+
export * from './react/components/navigation/Router';
|
|
17
|
+
export * from './react/app/Fin5AppContainer';
|
|
18
|
+
export * from './react/app/Fin5AppRootStore';
|
package/dist_es/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
//////////////////////////////////////////////////////////////////////////
|
|
5
|
+
// Fantom Props
|
|
6
|
+
//////////////////////////////////////////////////////////////////////////
|
|
7
|
+
export * from './fantomProps/fantomPropsToObject';
|
|
8
|
+
export * from './fantomProps/generateJsonFromFantomPropsFile';
|
|
9
|
+
export * from './fantomProps/readFantomPropsFile';
|
|
10
|
+
export * from './fantomProps/createFin5Props';
|
|
11
|
+
//////////////////////////////////////////////////////////////////////////
|
|
12
|
+
// Fin5 APIs related modules
|
|
13
|
+
//////////////////////////////////////////////////////////////////////////
|
|
14
|
+
export * from './fin5Top/fin5Top';
|
|
15
|
+
export * from './fin5Top/getFin5BinUrl';
|
|
16
|
+
export * from './fin5Top/openFin5Alarm';
|
|
17
|
+
export * from './fin5Top/openFin5Historian';
|
|
18
|
+
export * from './fin5Top/useFin5AppURLHashParameter';
|
|
19
|
+
//////////////////////////////////////////////////////////////////////////
|
|
20
|
+
// React components
|
|
21
|
+
//////////////////////////////////////////////////////////////////////////
|
|
22
|
+
export * from './react/components/ErrorDisplayer';
|
|
23
|
+
export * from './react/components/ErrorBoundary';
|
|
24
|
+
export * from './react/components/Loader';
|
|
25
|
+
export * from './react/components/LoadingSpinner';
|
|
26
|
+
export * from './react/components/navigation/BasicLayout';
|
|
27
|
+
export * from './react/components/navigation/MenuPage';
|
|
28
|
+
export * from './react/components/navigation/Router';
|
|
29
|
+
//////////////////////////////////////////////////////////////////////////
|
|
30
|
+
// j2inn/app support for FIN5
|
|
31
|
+
//////////////////////////////////////////////////////////////////////////
|
|
32
|
+
export * from './react/app/Fin5AppContainer';
|
|
33
|
+
export * from './react/app/Fin5AppRootStore';
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,eAAe;AACf,0EAA0E;AAE1E,cAAc,mCAAmC,CAAA;AACjD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAE7C,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,wCAAwC,CAAA;AACtD,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AppStore } from '@j2inn/app';
|
|
3
|
+
import { Client } from 'haystack-nclient';
|
|
4
|
+
import { ThemeDef } from '@j2inn/ui';
|
|
5
|
+
/**
|
|
6
|
+
* Properties for the dev application container component.
|
|
7
|
+
*/
|
|
8
|
+
export interface Fin5AppContainerProps {
|
|
9
|
+
/**
|
|
10
|
+
* The children to render.
|
|
11
|
+
*/
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* The app store.
|
|
15
|
+
*/
|
|
16
|
+
appStore?: AppStore;
|
|
17
|
+
/**
|
|
18
|
+
* The network client object.
|
|
19
|
+
*/
|
|
20
|
+
client?: Client;
|
|
21
|
+
/**
|
|
22
|
+
* Optional project name. Typically this is only specified
|
|
23
|
+
* in development mode. It's typically picked up from the URL.
|
|
24
|
+
*/
|
|
25
|
+
project?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The optional theme to use.
|
|
28
|
+
*/
|
|
29
|
+
theme?: ThemeDef;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a basic application container environment to run a view in FIN5.
|
|
33
|
+
*/
|
|
34
|
+
export declare const Fin5AppContainer: (({ children, appStore, client, project, theme, }: Fin5AppContainerProps) => JSX.Element) & {
|
|
35
|
+
displayName: string;
|
|
36
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { AppRootStoreContext, AppStoreContext } from '@j2inn/app';
|
|
6
|
+
import { observer } from 'mobx-react-lite';
|
|
7
|
+
import { Fin5AppRootStore } from './Fin5AppRootStore';
|
|
8
|
+
import { Client } from 'haystack-nclient';
|
|
9
|
+
import { ClientContext } from 'haystack-react';
|
|
10
|
+
import { I18NProvider } from '@j2inn/utils';
|
|
11
|
+
import { ThemeProvider } from 'react-jss';
|
|
12
|
+
import { DEFAULT_THEME, GenerateTheme } from '@j2inn/ui';
|
|
13
|
+
import { fin5Top } from '../../fin5Top/fin5Top';
|
|
14
|
+
import { useFin5AppURLHashParameter } from '../../fin5Top/useFin5AppURLHashParameter';
|
|
15
|
+
import { HRef } from 'haystack-core';
|
|
16
|
+
import { ErrorBoundary } from '../components/ErrorBoundary';
|
|
17
|
+
import Loader from '../components/Loader';
|
|
18
|
+
/**
|
|
19
|
+
* Creates a basic application container environment to run a view in FIN5.
|
|
20
|
+
*/
|
|
21
|
+
export const Fin5AppContainer = observer(({ children, appStore, client, project, theme = GenerateTheme(DEFAULT_THEME).light, }) => {
|
|
22
|
+
const [loading, setLoading] = useState(true);
|
|
23
|
+
const [loadingi18n, setLoadingi18n] = useState(true);
|
|
24
|
+
const rootStoreRef = useRef(null);
|
|
25
|
+
const rootStore = rootStoreRef.current ??
|
|
26
|
+
(rootStoreRef.current = new Fin5AppRootStore());
|
|
27
|
+
const [hashProjName] = useFin5AppURLHashParameter('projectName');
|
|
28
|
+
const containerProject = project || hashProjName || fin5Top?.finstack?.projectName || '';
|
|
29
|
+
const locale = fin5Top?.languageManager?.currentLang ?? navigator?.language;
|
|
30
|
+
rootStore.locale = locale;
|
|
31
|
+
if (!rootStore.allLocales.includes(locale)) {
|
|
32
|
+
rootStore.allLocales.push(locale);
|
|
33
|
+
}
|
|
34
|
+
const target = fin5Top?.app?.TargetRef?.() || '';
|
|
35
|
+
rootStore.target = target ? HRef.make(target).value : '';
|
|
36
|
+
const getClient = () => client ??
|
|
37
|
+
new Client({
|
|
38
|
+
base: new URL(window.location.href),
|
|
39
|
+
project: containerProject,
|
|
40
|
+
options: { headers: { accept: 'text/zinc' } },
|
|
41
|
+
});
|
|
42
|
+
const [containerClient, setContainerClient] = useState(getClient);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
setLoading(true);
|
|
45
|
+
const newClient = getClient();
|
|
46
|
+
setContainerClient(newClient);
|
|
47
|
+
// Load everything network wise before we load
|
|
48
|
+
// the application.
|
|
49
|
+
Promise.all([
|
|
50
|
+
newClient.ext.eval('finGetCurrentUser()'),
|
|
51
|
+
newClient.ext.loadDefs(),
|
|
52
|
+
]).then(([userGrid]) => {
|
|
53
|
+
rootStore.currentUser = userGrid.first;
|
|
54
|
+
setLoading(false);
|
|
55
|
+
});
|
|
56
|
+
}, [client, containerProject]);
|
|
57
|
+
return (<AppRootStoreContext.Provider value={rootStore}>
|
|
58
|
+
<AppStoreContext.Provider value={appStore}>
|
|
59
|
+
<ClientContext.Provider value={containerClient}>
|
|
60
|
+
<I18NProvider locale={locale} setLoading={setLoadingi18n}>
|
|
61
|
+
<ThemeProvider theme={theme}>
|
|
62
|
+
<Loader loading={loading || loadingi18n}>
|
|
63
|
+
<ErrorBoundary mode={"global" /* ErrorBoundaryMode.global */}>
|
|
64
|
+
{children}
|
|
65
|
+
</ErrorBoundary>
|
|
66
|
+
</Loader>
|
|
67
|
+
</ThemeProvider>
|
|
68
|
+
</I18NProvider>
|
|
69
|
+
</ClientContext.Provider>
|
|
70
|
+
</AppStoreContext.Provider>
|
|
71
|
+
</AppRootStoreContext.Provider>);
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=Fin5AppContainer.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fin5AppContainer.jsx","sourceRoot":"","sources":["../../../src/react/app/Fin5AppContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AppRootStore, App, AppView, CustomHistory, AppAccessLevel } from '@j2inn/app';
|
|
2
|
+
import { HDict } from 'haystack-core';
|
|
3
|
+
/**
|
|
4
|
+
* An application root store for use with FIN5.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Fin5AppRootStore implements AppRootStore {
|
|
7
|
+
constructor();
|
|
8
|
+
get app(): {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
app: App;
|
|
12
|
+
view: AppView;
|
|
13
|
+
} | undefined;
|
|
14
|
+
get sidebar(): {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
app: App;
|
|
18
|
+
view: AppView;
|
|
19
|
+
} | undefined;
|
|
20
|
+
readonly apps: App[];
|
|
21
|
+
project: string;
|
|
22
|
+
sidebarOpen: boolean;
|
|
23
|
+
open(): void;
|
|
24
|
+
openSidebar(): void;
|
|
25
|
+
locale: string;
|
|
26
|
+
allLocales: string[];
|
|
27
|
+
target: string;
|
|
28
|
+
targetSidebar: string;
|
|
29
|
+
readonly history: CustomHistory;
|
|
30
|
+
readonly historySidebar: CustomHistory;
|
|
31
|
+
currentUser: HDict | undefined;
|
|
32
|
+
postAppMessage(): void;
|
|
33
|
+
registerQuicklinks(): void;
|
|
34
|
+
unregisterQuicklinks(): void;
|
|
35
|
+
registerSidebars(): void;
|
|
36
|
+
unregisterSidebars(): void;
|
|
37
|
+
hasAppAccess: (_: string, access: AppAccessLevel) => boolean;
|
|
38
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { makeAutoObservable, observable } from 'mobx';
|
|
5
|
+
/**
|
|
6
|
+
* An application root store for use with FIN5.
|
|
7
|
+
*/
|
|
8
|
+
export class Fin5AppRootStore {
|
|
9
|
+
constructor() {
|
|
10
|
+
makeAutoObservable(this, {
|
|
11
|
+
currentUser: observable.ref,
|
|
12
|
+
apps: observable.ref,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get app() {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
get sidebar() {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
apps = [];
|
|
22
|
+
project = '';
|
|
23
|
+
sidebarOpen = false;
|
|
24
|
+
open() { }
|
|
25
|
+
openSidebar() { }
|
|
26
|
+
locale = '';
|
|
27
|
+
allLocales = [];
|
|
28
|
+
target = '';
|
|
29
|
+
targetSidebar = '';
|
|
30
|
+
history = {
|
|
31
|
+
state: {},
|
|
32
|
+
pushState: (state) => {
|
|
33
|
+
this.history.state = state;
|
|
34
|
+
},
|
|
35
|
+
replaceState: (state) => {
|
|
36
|
+
this.history.state = state;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
historySidebar = {
|
|
40
|
+
state: {},
|
|
41
|
+
pushState: (state) => {
|
|
42
|
+
this.historySidebar.state = state;
|
|
43
|
+
},
|
|
44
|
+
replaceState: (state) => {
|
|
45
|
+
this.historySidebar.state = state;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
currentUser;
|
|
49
|
+
postAppMessage() { }
|
|
50
|
+
registerQuicklinks() { }
|
|
51
|
+
unregisterQuicklinks() { }
|
|
52
|
+
registerSidebars() { }
|
|
53
|
+
unregisterSidebars() { }
|
|
54
|
+
hasAppAccess = (_, access) => {
|
|
55
|
+
// For FIN5, an operator only has readonly app level access.
|
|
56
|
+
const user = this.currentUser;
|
|
57
|
+
return user?.get('userRole')?.value === 'op'
|
|
58
|
+
? access === 'read'
|
|
59
|
+
: !!user;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=Fin5AppRootStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fin5AppRootStore.js","sourceRoot":"","sources":["../../../src/react/app/Fin5AppRootStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAErD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC5B;QACC,kBAAkB,CAAC,IAAI,EAAE;YACxB,WAAW,EAAE,UAAU,CAAC,GAAG;YAC3B,IAAI,EAAE,UAAU,CAAC,GAAG;SACpB,CAAC,CAAA;IACH,CAAC;IAED,IAAI,GAAG;QAGN,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,IAAI,OAAO;QAGV,OAAO,SAAS,CAAA;IACjB,CAAC;IAEQ,IAAI,GAAU,EAAE,CAAA;IAEzB,OAAO,GAAG,EAAE,CAAA;IAEZ,WAAW,GAAG,KAAK,CAAA;IAEnB,IAAI,KAAU,CAAC;IAEf,WAAW,KAAU,CAAC;IAEtB,MAAM,GAAG,EAAE,CAAA;IAEX,UAAU,GAAa,EAAE,CAAA;IAEzB,MAAM,GAAG,EAAE,CAAA;IAEX,aAAa,GAAG,EAAE,CAAA;IAET,OAAO,GAAkB;QACjC,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC,KAA8B,EAAQ,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QAC3B,CAAC;QACD,YAAY,EAAE,CAAC,KAA8B,EAAQ,EAAE;YACtD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QAC3B,CAAC;KACD,CAAA;IAEQ,cAAc,GAAkB;QACxC,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC,KAA8B,EAAQ,EAAE;YACnD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAA;QAClC,CAAC;QACD,YAAY,EAAE,CAAC,KAA8B,EAAQ,EAAE;YACtD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAA;QAClC,CAAC;KACD,CAAA;IAED,WAAW,CAAmB;IAE9B,cAAc,KAAU,CAAC;IAEzB,kBAAkB,KAAU,CAAC;IAE7B,oBAAoB,KAAU,CAAC;IAE/B,gBAAgB,KAAU,CAAC;IAE3B,kBAAkB,KAAU,CAAC;IAE7B,YAAY,GAAG,CAAC,CAAS,EAAE,MAAsB,EAAW,EAAE;QAC7D,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAA;QAE7B,OAAO,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI;YACjD,CAAC,CAAC,MAAM,KAAK,MAAM;YACnB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACV,CAAC,CAAA;CACD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React, { ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* An error boundary can work at the global level (where something really screws up)
|
|
4
|
+
* or an an app level (where the error is captured just for the running application).
|
|
5
|
+
*/
|
|
6
|
+
export declare const enum ErrorBoundaryMode {
|
|
7
|
+
global = "global",
|
|
8
|
+
app = "app"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The properties for an error boundary.
|
|
12
|
+
*/
|
|
13
|
+
interface ErrorBoundaryProps {
|
|
14
|
+
/**
|
|
15
|
+
* The associated application id.
|
|
16
|
+
*/
|
|
17
|
+
appId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The error mode.
|
|
20
|
+
*/
|
|
21
|
+
mode: ErrorBoundaryMode;
|
|
22
|
+
/**
|
|
23
|
+
* Optional callback to display a report dialog.
|
|
24
|
+
*/
|
|
25
|
+
showReportDialog?: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Optional callback used to capture the error.
|
|
28
|
+
*/
|
|
29
|
+
onError?: (error: Error) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Child components.
|
|
32
|
+
*/
|
|
33
|
+
children?: React.ReactNode;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The state for an error boundary.
|
|
37
|
+
*/
|
|
38
|
+
interface ErrorBoundryState {
|
|
39
|
+
/**
|
|
40
|
+
* The last captured error.
|
|
41
|
+
*/
|
|
42
|
+
error?: Error;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A common error boundary used to capture errors.
|
|
46
|
+
*/
|
|
47
|
+
export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundryState> {
|
|
48
|
+
state: {
|
|
49
|
+
error?: Error;
|
|
50
|
+
};
|
|
51
|
+
componentDidCatch(error: Error, info: ErrorInfo): void;
|
|
52
|
+
static getDerivedStateFromError(error: Error): {
|
|
53
|
+
error: Error;
|
|
54
|
+
};
|
|
55
|
+
render(): ReactNode | JSX.Element;
|
|
56
|
+
}
|
|
57
|
+
export {};
|