@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.
Files changed (113) hide show
  1. package/dist/fantomProps/createFin5Props/index.d.ts +12 -0
  2. package/dist/fantomProps/createFin5Props/index.js +147 -0
  3. package/dist/fantomProps/createFin5Props/index.js.map +1 -0
  4. package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -0
  5. package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +17 -0
  6. package/dist/fantomProps/createFin5Props/runCreateFin5Props.js.map +1 -0
  7. package/dist/fantomProps/fantomPropsToObject.js +3 -0
  8. package/dist/fantomProps/fantomPropsToObject.js.map +1 -1
  9. package/dist/fantomProps/generateJsonFromFantomPropsFile.js +3 -0
  10. package/dist/fantomProps/generateJsonFromFantomPropsFile.js.map +1 -1
  11. package/dist/fantomProps/localePropsToJson.js +3 -0
  12. package/dist/fantomProps/localePropsToJson.js.map +1 -1
  13. package/dist/fantomProps/readFantomPropsFile.js +3 -0
  14. package/dist/fantomProps/readFantomPropsFile.js.map +1 -1
  15. package/dist/fin5Top/fin5Top.js +3 -0
  16. package/dist/fin5Top/fin5Top.js.map +1 -1
  17. package/dist/fin5Top/getFin5BinUrl.js +3 -0
  18. package/dist/fin5Top/getFin5BinUrl.js.map +1 -1
  19. package/dist/fin5Top/openFin5Alarm.js +5 -2
  20. package/dist/fin5Top/openFin5Alarm.js.map +1 -1
  21. package/dist/fin5Top/openFin5Historian.js +5 -2
  22. package/dist/fin5Top/openFin5Historian.js.map +1 -1
  23. package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +7 -0
  24. package/dist/fin5Top/useFin5AppURLHashParameter.js +72 -0
  25. package/dist/fin5Top/useFin5AppURLHashParameter.js.map +1 -0
  26. package/dist/index.d.ts +6 -0
  27. package/dist/index.js +12 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/react/app/Fin5AppContainer.d.ts +36 -0
  30. package/dist/react/app/Fin5AppContainer.jsx +102 -0
  31. package/dist/react/app/Fin5AppContainer.jsx.map +1 -0
  32. package/dist/react/app/Fin5AppRootStore.d.ts +38 -0
  33. package/dist/react/app/Fin5AppRootStore.js +66 -0
  34. package/dist/react/app/Fin5AppRootStore.js.map +1 -0
  35. package/dist/react/components/ErrorBoundary.d.ts +57 -0
  36. package/dist/react/components/ErrorBoundary.jsx +177 -0
  37. package/dist/react/components/ErrorBoundary.jsx.map +1 -0
  38. package/dist/react/components/Loader.d.ts +9 -0
  39. package/dist/react/components/Loader.jsx +18 -0
  40. package/dist/react/components/Loader.jsx.map +1 -0
  41. package/dist/react/components/LoadingSpinner.jsx +19 -3
  42. package/dist/react/components/LoadingSpinner.jsx.map +1 -1
  43. package/dist/react/components/navigation/BasicLayout.d.ts +2 -1
  44. package/dist/react/components/navigation/BasicLayout.jsx +10 -3
  45. package/dist/react/components/navigation/BasicLayout.jsx.map +1 -1
  46. package/dist/react/components/navigation/MenuPage.jsx +3 -0
  47. package/dist/react/components/navigation/MenuPage.jsx.map +1 -1
  48. package/dist/react/components/navigation/Router.jsx +3 -0
  49. package/dist/react/components/navigation/Router.jsx.map +1 -1
  50. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -0
  51. package/dist_es/fantomProps/createFin5Props/index.js +141 -0
  52. package/dist_es/fantomProps/createFin5Props/index.js.map +1 -0
  53. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -0
  54. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +12 -0
  55. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js.map +1 -0
  56. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -0
  57. package/dist_es/fantomProps/fantomPropsToObject.js +179 -0
  58. package/dist_es/fantomProps/fantomPropsToObject.js.map +1 -0
  59. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -0
  60. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +13 -0
  61. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js.map +1 -0
  62. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -0
  63. package/dist_es/fantomProps/localePropsToJson.js +22 -0
  64. package/dist_es/fantomProps/localePropsToJson.js.map +1 -0
  65. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -0
  66. package/dist_es/fantomProps/readFantomPropsFile.js +36 -0
  67. package/dist_es/fantomProps/readFantomPropsFile.js.map +1 -0
  68. package/dist_es/fin5Top/fin5Top.d.ts +111 -0
  69. package/dist_es/fin5Top/fin5Top.js +55 -0
  70. package/dist_es/fin5Top/fin5Top.js.map +1 -0
  71. package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -0
  72. package/dist_es/fin5Top/getFin5BinUrl.js +6 -0
  73. package/dist_es/fin5Top/getFin5BinUrl.js.map +1 -0
  74. package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -0
  75. package/dist_es/fin5Top/openFin5Alarm.js +20 -0
  76. package/dist_es/fin5Top/openFin5Alarm.js.map +1 -0
  77. package/dist_es/fin5Top/openFin5Historian.d.ts +3 -0
  78. package/dist_es/fin5Top/openFin5Historian.js +16 -0
  79. package/dist_es/fin5Top/openFin5Historian.js.map +1 -0
  80. package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +7 -0
  81. package/dist_es/fin5Top/useFin5AppURLHashParameter.js +68 -0
  82. package/dist_es/fin5Top/useFin5AppURLHashParameter.js.map +1 -0
  83. package/dist_es/index.d.ts +18 -0
  84. package/dist_es/index.js +34 -0
  85. package/dist_es/index.js.map +1 -0
  86. package/dist_es/react/app/Fin5AppContainer.d.ts +36 -0
  87. package/dist_es/react/app/Fin5AppContainer.jsx +73 -0
  88. package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
  89. package/dist_es/react/app/Fin5AppRootStore.d.ts +38 -0
  90. package/dist_es/react/app/Fin5AppRootStore.js +62 -0
  91. package/dist_es/react/app/Fin5AppRootStore.js.map +1 -0
  92. package/dist_es/react/components/ErrorBoundary.d.ts +57 -0
  93. package/dist_es/react/components/ErrorBoundary.jsx +150 -0
  94. package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
  95. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -0
  96. package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
  97. package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
  98. package/dist_es/react/components/Loader.d.ts +9 -0
  99. package/dist_es/react/components/Loader.jsx +13 -0
  100. package/dist_es/react/components/Loader.jsx.map +1 -0
  101. package/dist_es/react/components/LoadingSpinner.d.ts +3 -0
  102. package/dist_es/react/components/LoadingSpinner.jsx +23 -0
  103. package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
  104. package/dist_es/react/components/navigation/BasicLayout.d.ts +21 -0
  105. package/dist_es/react/components/navigation/BasicLayout.jsx +104 -0
  106. package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
  107. package/dist_es/react/components/navigation/MenuPage.d.ts +33 -0
  108. package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
  109. package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
  110. package/dist_es/react/components/navigation/Router.d.ts +12 -0
  111. package/dist_es/react/components/navigation/Router.jsx +19 -0
  112. package/dist_es/react/components/navigation/Router.jsx.map +1 -0
  113. 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,2 @@
1
+ import { HRef } from 'haystack-core';
2
+ export declare const getFin5BinUrl: (id: HRef) => string;
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { fin5Top } from './fin5Top';
5
+ export const getFin5BinUrl = (id) => `/finGetFile/${fin5Top?.finstack?.projectName}?fileRef=${id?.toString()}`;
6
+ //# sourceMappingURL=getFin5BinUrl.js.map
@@ -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,3 @@
1
+ export declare type HistorianType = 'point' | 'query' | 'string';
2
+ export declare type HistorianArgs = string | (string | undefined)[];
3
+ export declare const openFin5HistorianApp: (queryType?: HistorianType, args?: HistorianArgs) => Promise<void>;
@@ -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';
@@ -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 {};