@asaleh37/ui-base 25.8.10 → 25.8.23
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 +4 -0
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/App.tsx +12 -12
- package/src/components/BaseApp.tsx +34 -12
- package/src/components/common/Login.tsx +4 -1
- package/src/components/common/NoLicenseComponent.tsx +79 -0
- package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +2 -2
- package/src/hooks/useAxios.tsx +13 -0
- package/src/layout/Layout.tsx +4 -6
- package/src/locales/english/adminLocalsEn.json +6 -6
- package/src/locales/english/devLocalsEn.json +38 -38
- package/src/main.tsx +1 -1
- package/src/navigationItems/Administration/adminNavigationItems.tsx +2 -2
- package/src/redux/features/administration/AdministrationStoresMetaData.ts +3 -3
- package/src/redux/features/common/AppInfoSlice.ts +7 -0
- package/tsconfig.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asaleh37/ui-base",
|
|
3
|
-
"version": "25.8.
|
|
3
|
+
"version": "25.8.23",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Ahmed Saleh Mohamed",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"stylis-plugin-rtl": "^2.1.1",
|
|
114
114
|
"zod": "^3.24.2"
|
|
115
115
|
},
|
|
116
|
-
"dependencies": {
|
|
116
|
+
"dependencies": {
|
|
117
117
|
"@rollup/plugin-json": "^6.1.0",
|
|
118
118
|
"rollup-plugin-terser": "^7.0.2"
|
|
119
119
|
}
|
package/src/components/App.tsx
CHANGED
|
@@ -89,17 +89,6 @@ const App: React.FC<AppInfo> = (props: AppInfo) => {
|
|
|
89
89
|
},
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
let commonStores = {};
|
|
93
|
-
if (props.enableAdministrationModule) {
|
|
94
|
-
commonStores = { ...ADMINISTRATION_STORES };
|
|
95
|
-
}
|
|
96
|
-
if (props.businessCommonStoresMetaData) {
|
|
97
|
-
commonStores = {
|
|
98
|
-
...commonStores,
|
|
99
|
-
...props.businessCommonStoresMetaData,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
dispatch(setStoresMetaData(commonStores));
|
|
103
92
|
const AppLayoutState = useSelector((state: any) => state.AppLayout);
|
|
104
93
|
let themeOptions = { ...LightThemeOptions };
|
|
105
94
|
if (AppLayoutState.themeMode === "dark") {
|
|
@@ -112,7 +101,18 @@ const App: React.FC<AppInfo> = (props: AppInfo) => {
|
|
|
112
101
|
useEffect(() => {
|
|
113
102
|
document.title = props.documentTitle;
|
|
114
103
|
dispatch(AppInfoActions.setAppInfo(props));
|
|
115
|
-
|
|
104
|
+
let commonStores = {};
|
|
105
|
+
if (props.enableAdministrationModule) {
|
|
106
|
+
commonStores = { ...ADMINISTRATION_STORES };
|
|
107
|
+
}
|
|
108
|
+
if (props.businessCommonStoresMetaData) {
|
|
109
|
+
commonStores = {
|
|
110
|
+
...commonStores,
|
|
111
|
+
...props.businessCommonStoresMetaData,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
dispatch(setStoresMetaData(commonStores));
|
|
115
|
+
}, [props]);
|
|
116
116
|
return (
|
|
117
117
|
<ThemeProvider theme={theme}>
|
|
118
118
|
<Layout />
|
|
@@ -18,36 +18,58 @@ import i18n from "../locales/i18n";
|
|
|
18
18
|
import { initReactI18next } from "react-i18next";
|
|
19
19
|
import { ENGLISH_TRANS } from "../locales/english";
|
|
20
20
|
import { ARABIC_TRANS } from "../locales/arabic";
|
|
21
|
+
import { useEffect, useState } from "react";
|
|
21
22
|
|
|
22
23
|
library.add(fab);
|
|
23
24
|
library.add(far);
|
|
24
25
|
library.add(fas);
|
|
25
26
|
|
|
26
27
|
export const BaseApp: React.FC<AppInfo> = (props) => {
|
|
27
|
-
|
|
28
|
+
// let store = null;
|
|
29
|
+
const [systemReducers, setSystemReducers] = useState<any>({
|
|
28
30
|
AppLayout: AppLayoutReducer,
|
|
29
31
|
UserSession: UserSessionReducer,
|
|
30
32
|
loadingMask: LoadingMaskReducer,
|
|
31
33
|
commonStores: CommonStoreReducer,
|
|
32
34
|
SideBar: SideBarReducer,
|
|
33
35
|
AppInfo: AppInfoReducer,
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
+
});
|
|
36
37
|
const store = configureStore({
|
|
37
38
|
reducer: systemReducers,
|
|
38
39
|
});
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const [isAppInitialized, setIsAppInitialized] = useState<boolean>(false);
|
|
41
|
+
const initializeApp = () => {
|
|
42
|
+
const reducers = {
|
|
43
|
+
AppLayout: AppLayoutReducer,
|
|
44
|
+
UserSession: UserSessionReducer,
|
|
45
|
+
loadingMask: LoadingMaskReducer,
|
|
46
|
+
commonStores: CommonStoreReducer,
|
|
47
|
+
SideBar: SideBarReducer,
|
|
48
|
+
AppInfo: AppInfoReducer,
|
|
49
|
+
...props?.businessReduxReducers,
|
|
50
|
+
};
|
|
51
|
+
setSystemReducers((state) => {
|
|
52
|
+
return { ...reducers };
|
|
53
|
+
});
|
|
54
|
+
const resources = {
|
|
55
|
+
en: { translation: { ...ENGLISH_TRANS, ...props?.businessLocals?.en } },
|
|
56
|
+
ar: { translation: { ...ARABIC_TRANS, ...props?.businessLocals?.ar } },
|
|
57
|
+
};
|
|
58
|
+
i18n.use(initReactI18next).init({
|
|
59
|
+
resources: resources, // Where we're gonna put translations' files
|
|
60
|
+
lng: localStorage.getItem("language") || "en", // Set the initial language of the App
|
|
61
|
+
fallbackLng: "en",
|
|
62
|
+
});
|
|
63
|
+
setIsAppInitialized(true);
|
|
42
64
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
48
|
-
return (
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
initializeApp();
|
|
67
|
+
}, [props]);
|
|
68
|
+
return isAppInitialized ? (
|
|
49
69
|
<Provider store={store}>
|
|
50
70
|
<App {...props} />
|
|
51
71
|
</Provider>
|
|
72
|
+
) : (
|
|
73
|
+
<></>
|
|
52
74
|
);
|
|
53
75
|
};
|
|
@@ -124,8 +124,11 @@ const Login: React.FC = () => {
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
useEffect(() => {
|
|
127
|
+
console.log("checking usersession on reload", userSession);
|
|
128
|
+
console.log("checking usersession app info", appInfo);
|
|
127
129
|
checkUserSession();
|
|
128
|
-
}, [appInfo]);
|
|
130
|
+
}, [appInfo, userSession.isAuthenticated]);
|
|
131
|
+
|
|
129
132
|
return (
|
|
130
133
|
<ThemeProvider theme={loginTheme}>
|
|
131
134
|
<Paper
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Box, Typography } from "@mui/material";
|
|
2
|
+
import {
|
|
3
|
+
AppInfo,
|
|
4
|
+
LicenseCheckObject,
|
|
5
|
+
} from "../../redux/features/common/AppInfoSlice";
|
|
6
|
+
import { useSelector } from "react-redux";
|
|
7
|
+
import { useEffect, useState } from "react";
|
|
8
|
+
import { useAxios } from "../../hooks";
|
|
9
|
+
|
|
10
|
+
const NoLicenseComponent: React.FC = () => {
|
|
11
|
+
const [licenseCheckObj, setLicenseCheckObject] = useState<LicenseCheckObject>(
|
|
12
|
+
{ isLicensed: true, lastLicenseCheckMessage: "", lastLicenseCheckTime: "" }
|
|
13
|
+
);
|
|
14
|
+
const { handleGetRequest } = useAxios();
|
|
15
|
+
const appInfo: AppInfo = useSelector((state: any) => state.AppInfo.value);
|
|
16
|
+
const checkSystemLicense = async () => {
|
|
17
|
+
if (appInfo?.checkLicense?.endpoint) {
|
|
18
|
+
await handleGetRequest({
|
|
19
|
+
endPointURI: appInfo.checkLicense?.endpoint,
|
|
20
|
+
successCallBkFn: (response) => {
|
|
21
|
+
setLicenseCheckObject(response.data);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (appInfo?.checkLicense?.endpoint) {
|
|
29
|
+
const interval = appInfo?.checkLicense?.interval || 60000;
|
|
30
|
+
const intervalId = setInterval(() => {
|
|
31
|
+
checkSystemLicense();
|
|
32
|
+
}, interval);
|
|
33
|
+
return () => {
|
|
34
|
+
clearInterval(intervalId);
|
|
35
|
+
console.log("Interval cleared");
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}, [appInfo]);
|
|
39
|
+
return !licenseCheckObj.isLicensed ? (
|
|
40
|
+
<Box
|
|
41
|
+
sx={{
|
|
42
|
+
flex: 1,
|
|
43
|
+
width: "100%",
|
|
44
|
+
height: "100%",
|
|
45
|
+
display: "flex",
|
|
46
|
+
flexDirection: "column",
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
justifyContent: "center",
|
|
49
|
+
position: "fixed",
|
|
50
|
+
top: 0,
|
|
51
|
+
background: "rgba(235, 235, 235, 0.8)",
|
|
52
|
+
left: 0,
|
|
53
|
+
zIndex: 9999,
|
|
54
|
+
}}
|
|
55
|
+
>
|
|
56
|
+
<img src={appInfo.appLogo} style={{ height: 200, width: 200 }} />
|
|
57
|
+
<Typography variant="h5">
|
|
58
|
+
{appInfo.appName} - {appInfo.appVersion}
|
|
59
|
+
</Typography>
|
|
60
|
+
<Typography variant="h6" color="error">
|
|
61
|
+
Your license is missing or has expired.
|
|
62
|
+
</Typography>
|
|
63
|
+
<Typography variant="h6" color="error">
|
|
64
|
+
Please reach out to your vendor for assistance.
|
|
65
|
+
</Typography>
|
|
66
|
+
<Typography>
|
|
67
|
+
License Check @{licenseCheckObj?.lastLicenseCheckTime || "--------"}
|
|
68
|
+
</Typography>
|
|
69
|
+
<Typography>
|
|
70
|
+
License Check Result :{" "}
|
|
71
|
+
{licenseCheckObj?.lastLicenseCheckMessage || "--------"}
|
|
72
|
+
</Typography>
|
|
73
|
+
</Box>
|
|
74
|
+
) : (
|
|
75
|
+
<></>
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export default NoLicenseComponent;
|
package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx
CHANGED
|
@@ -22,7 +22,7 @@ const ComboBox: React.FC<ComboBoxProps> = (props) => {
|
|
|
22
22
|
const getValue = (v: string) => {
|
|
23
23
|
for (let option of props.options) {
|
|
24
24
|
if (option[props.valueField] == v) {
|
|
25
|
-
return option;
|
|
25
|
+
return option + "";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
return null;
|
|
@@ -41,7 +41,7 @@ const ComboBox: React.FC<ComboBoxProps> = (props) => {
|
|
|
41
41
|
) {
|
|
42
42
|
if (newValue != null) {
|
|
43
43
|
let v = newValue[props.valueField];
|
|
44
|
-
props.onChangeCallBack(v, newValue);
|
|
44
|
+
props.onChangeCallBack(v + "", newValue);
|
|
45
45
|
} else {
|
|
46
46
|
props.onChangeCallBack(null, null);
|
|
47
47
|
}
|
package/src/hooks/useAxios.tsx
CHANGED
|
@@ -57,6 +57,19 @@ const useAxios = () => {
|
|
|
57
57
|
toast.error("your session is now expired, you need to login again", {
|
|
58
58
|
autoClose: false,
|
|
59
59
|
});
|
|
60
|
+
} else if (
|
|
61
|
+
error
|
|
62
|
+
? error.response
|
|
63
|
+
? error.response.status
|
|
64
|
+
? error.response.status === 402
|
|
65
|
+
: false
|
|
66
|
+
: false
|
|
67
|
+
: false
|
|
68
|
+
) {
|
|
69
|
+
dispatch(UserSessionActions.setUnAuthenticated());
|
|
70
|
+
toast.error(
|
|
71
|
+
"Your license is missing or has expired,Please reach out to your vendor for assistance."
|
|
72
|
+
);
|
|
60
73
|
} else if (
|
|
61
74
|
error
|
|
62
75
|
? error.response
|
package/src/layout/Layout.tsx
CHANGED
|
@@ -8,16 +8,12 @@ import MainContent from "./MainContent";
|
|
|
8
8
|
import { BrowserRouter } from "react-router-dom";
|
|
9
9
|
import MobileDrawer from "./MobileDrawer";
|
|
10
10
|
import { ToastContainer } from "react-toastify";
|
|
11
|
-
import { useEffect, useState } from "react";
|
|
12
|
-
import useLoadingMask from "../hooks/useLoadingMask";
|
|
13
11
|
import { useIsMobile } from "../hooks/UseMobile";
|
|
14
|
-
import useSession from "../hooks/UseSession";
|
|
15
|
-
import useAxios from "../hooks/useAxios";
|
|
16
12
|
import { DRAWER_WIDTH } from "../redux/features/common/AppLayoutSlice";
|
|
17
13
|
import { UserSessionProps } from "../redux/features/common/UserSessionSlice";
|
|
18
14
|
import LoadingMask from "../components/common/LoadingMask";
|
|
19
15
|
import Login from "../components/common/Login";
|
|
20
|
-
import
|
|
16
|
+
import NoLicenseComponent from "../components/common/NoLicenseComponent";
|
|
21
17
|
|
|
22
18
|
const Main = styled("main", {
|
|
23
19
|
shouldForwardProp: (prop) => prop !== "open",
|
|
@@ -59,12 +55,12 @@ const Main = styled("main", {
|
|
|
59
55
|
|
|
60
56
|
export default function Layout() {
|
|
61
57
|
const SideBarState = useSelector((state: any) => state.SideBar);
|
|
58
|
+
|
|
62
59
|
const isMobile = useIsMobile();
|
|
63
60
|
const UserSession: UserSessionProps = useSelector(
|
|
64
61
|
(state: any) => state.UserSession
|
|
65
62
|
);
|
|
66
63
|
const AppLayout = useSelector((state: any) => state.AppLayout);
|
|
67
|
-
|
|
68
64
|
return (
|
|
69
65
|
<BrowserRouter>
|
|
70
66
|
<ToastContainer
|
|
@@ -74,6 +70,7 @@ export default function Layout() {
|
|
|
74
70
|
/>
|
|
75
71
|
<LoadingMask />
|
|
76
72
|
{UserSession.value.isAuthenticated === true ? (
|
|
73
|
+
// licenseCheckObj?.isLicensed ? (
|
|
77
74
|
<Main open={SideBarState.isOpened}>
|
|
78
75
|
<CssBaseline />
|
|
79
76
|
<TopBar />
|
|
@@ -81,6 +78,7 @@ export default function Layout() {
|
|
|
81
78
|
{isMobile ? <MobileDrawer /> : null}
|
|
82
79
|
<DrawerHeader />
|
|
83
80
|
<MainContent />
|
|
81
|
+
<NoLicenseComponent />
|
|
84
82
|
</Main>
|
|
85
83
|
) : (
|
|
86
84
|
<Login />
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID": "Organization rank id",
|
|
15
15
|
"ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID": "Organization unit id",
|
|
16
16
|
"ORGANIZATION_MEMBER_PERSON_ID": "Person id",
|
|
17
|
-
"ORGANIZATION_MEMBER_ROLE_SINGULAR": "
|
|
18
|
-
"ORGANIZATION_MEMBER_ROLE_PLURAL": "
|
|
17
|
+
"ORGANIZATION_MEMBER_ROLE_SINGULAR": "Member Role",
|
|
18
|
+
"ORGANIZATION_MEMBER_ROLE_PLURAL": "Member Roles",
|
|
19
19
|
"ORGANIZATION_MEMBER_ROLE_IS_ACTIVE": "Is active",
|
|
20
20
|
"ORGANIZATION_MEMBER_ROLE_END_DATE": "End date",
|
|
21
21
|
"ORGANIZATION_MEMBER_ROLE_ORGANIZATION_MEMBER_ID": "Organization member id",
|
|
@@ -81,13 +81,13 @@
|
|
|
81
81
|
"SYSTEM_APPLICATION_ROLE_SYSTEM_APPLICATION_ID": "System application id",
|
|
82
82
|
"SYSTEM_APPLICATION_ROLE_ROLE_DESCRIPTION": "Role description",
|
|
83
83
|
"SYSTEM_APPLICATION_ROLE_ROLE_NAME": "Role name",
|
|
84
|
-
"SYSTEM_APPLICATION_ROLE_AUTHORITY_SINGULAR": "
|
|
85
|
-
"SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL": "
|
|
84
|
+
"SYSTEM_APPLICATION_ROLE_AUTHORITY_SINGULAR": "Application Authority",
|
|
85
|
+
"SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL": "Application Authorities",
|
|
86
86
|
"SYSTEM_APPLICATION_ROLE_AUTHORITY_IS_ACTIVE": "Is active",
|
|
87
87
|
"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_AUTHORITY_ID": "System application authority id",
|
|
88
88
|
"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_ROLE_ID": "System application role id",
|
|
89
|
-
"ORGANIZATION_APPLICATION_MODULE_SINGULAR": "
|
|
90
|
-
"ORGANIZATION_APPLICATION_MODULE_PLURAL": "
|
|
89
|
+
"ORGANIZATION_APPLICATION_MODULE_SINGULAR": "Application Module",
|
|
90
|
+
"ORGANIZATION_APPLICATION_MODULE_PLURAL": "Application Modules",
|
|
91
91
|
"ORGANIZATION_APPLICATION_MODULE_EXPIRATION_DATE": "Expiration date",
|
|
92
92
|
"ORGANIZATION_APPLICATION_MODULE_IS_ACTIVE": "Is active",
|
|
93
93
|
"ORGANIZATION_APPLICATION_MODULE_ORGANIZATION_ID": "Organization id",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"DASHBOARD_ENABLED": "Enabled",
|
|
39
39
|
"DASHBOARD_LOAD_WIDGETS_INDIVIDUALLY": "Load widgets individually",
|
|
40
40
|
"DASHBOARD_NUMBER_OF_COLUMNS": "Number of columns",
|
|
41
|
-
"DASHBOARD_WIDGET_SINGULAR": "
|
|
42
|
-
"DASHBOARD_WIDGET_PLURAL": "
|
|
41
|
+
"DASHBOARD_WIDGET_SINGULAR": "Dashboard Widget",
|
|
42
|
+
"DASHBOARD_WIDGET_PLURAL": "Dashboard Widgets",
|
|
43
43
|
"DASHBOARD_WIDGET_DASHBOARD_ID": "Dashboard id",
|
|
44
44
|
"DASHBOARD_WIDGET_ENABLED": "Enabled",
|
|
45
45
|
"DASHBOARD_WIDGET_WIDGET_ID": "Widget id",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"DATA_QUERY_QUERY_NAME": "Query name",
|
|
51
51
|
"DATA_QUERY_QUERY_STR": "Query str",
|
|
52
52
|
"DATA_QUERY_USE_SYS_CON": "Use sys con",
|
|
53
|
-
"DATA_QUERY_PARAMETER_SINGULAR": "
|
|
54
|
-
"DATA_QUERY_PARAMETER_PLURAL": "
|
|
53
|
+
"DATA_QUERY_PARAMETER_SINGULAR": "Query Parameter",
|
|
54
|
+
"DATA_QUERY_PARAMETER_PLURAL": "Query Parameters",
|
|
55
55
|
"DATA_QUERY_PARAMETER_DATA_QUERY_ID": "Data query id",
|
|
56
56
|
"DATA_QUERY_PARAMETER_DEFAULT_VALUE": "Default value",
|
|
57
57
|
"DATA_QUERY_PARAMETER_ENABLED": "Enabled",
|
|
@@ -77,33 +77,33 @@
|
|
|
77
77
|
"ENTITY_PARAMETER_PARAMETER_TYPE": "Parameter type",
|
|
78
78
|
"ENTITY_PARAMETER_PARAMETER_VALUE_FIELD": "Parameter value field",
|
|
79
79
|
"ENTITY_PARAMETER_PARAMETER_VALUE_FORMAT": "Parameter value format",
|
|
80
|
-
"EXCEL_UPLOADER_DETAIL_SINGULAR": "
|
|
81
|
-
"EXCEL_UPLOADER_DETAIL_PLURAL": "
|
|
80
|
+
"EXCEL_UPLOADER_DETAIL_SINGULAR": "Excel Uploader Detail",
|
|
81
|
+
"EXCEL_UPLOADER_DETAIL_PLURAL": "Excel Uploader Details",
|
|
82
82
|
"EXCEL_UPLOADER_DETAIL_COLUMN_INDEX": "Column index",
|
|
83
83
|
"EXCEL_UPLOADER_DETAIL_EXCEL_UPLOADER_HEADER_ID": "Excel uploader header id",
|
|
84
84
|
"EXCEL_UPLOADER_DETAIL_LOOKUP_QUERY_ID": "Lookup query id",
|
|
85
85
|
"EXCEL_UPLOADER_DETAIL_TABLE_FIELD": "Table field",
|
|
86
|
-
"EXCEL_UPLOADER_HEADER_SINGULAR": "
|
|
87
|
-
"EXCEL_UPLOADER_HEADER_PLURAL": "
|
|
86
|
+
"EXCEL_UPLOADER_HEADER_SINGULAR": "Excel Uploader Header",
|
|
87
|
+
"EXCEL_UPLOADER_HEADER_PLURAL": "Excel Uploader Headers",
|
|
88
88
|
"EXCEL_UPLOADER_HEADER_UPLOADER_CONNECTION_ID": "Uploader connection id",
|
|
89
89
|
"EXCEL_UPLOADER_HEADER_UPLOADER_DATABASE_NAME": "Uploader database name",
|
|
90
90
|
"EXCEL_UPLOADER_HEADER_UPLOADER_NAME": "Uploader name",
|
|
91
91
|
"EXCEL_UPLOADER_HEADER_UPLOADER_TABLE_NAME": "Uploader table name",
|
|
92
|
-
"LOOKUP_SINGULAR": "
|
|
93
|
-
"LOOKUP_PLURAL": "
|
|
92
|
+
"LOOKUP_SINGULAR": "Lookup",
|
|
93
|
+
"LOOKUP_PLURAL": "Lookups",
|
|
94
94
|
"LOOKUP_ENABLED": "Enabled",
|
|
95
95
|
"LOOKUP_LOOKUP_AR_DISPLAY": "Lookup ar display",
|
|
96
96
|
"LOOKUP_LOOKUP_EN_DISPLAY": "Lookup en display",
|
|
97
97
|
"LOOKUP_LOOKUP_TYPE": "Lookup type",
|
|
98
98
|
"LOOKUP_LOOKUP_VALUE": "Lookup value",
|
|
99
99
|
"LOOKUP_ORG_CODE": "Org code",
|
|
100
|
-
"MAIL_ATTACHMENT_SINGULAR": "
|
|
101
|
-
"MAIL_ATTACHMENT_PLURAL": "
|
|
100
|
+
"MAIL_ATTACHMENT_SINGULAR": "Mail Attachment",
|
|
101
|
+
"MAIL_ATTACHMENT_PLURAL": "Mail Attachments",
|
|
102
102
|
"MAIL_ATTACHMENT_ENABLED": "Enabled",
|
|
103
103
|
"MAIL_ATTACHMENT_MAIL_TEMPLATE_ID": "Mail template id",
|
|
104
104
|
"MAIL_ATTACHMENT_REPORT_ID": "Report id",
|
|
105
|
-
"MAIL_BODY_SINGULAR": "
|
|
106
|
-
"MAIL_BODY_PLURAL": "
|
|
105
|
+
"MAIL_BODY_SINGULAR": "Mail Body",
|
|
106
|
+
"MAIL_BODY_PLURAL": "Mail Bodies",
|
|
107
107
|
"MAIL_BODY_BODY_NAME": "Body Name",
|
|
108
108
|
"MAIL_BODY_BODY_CONTENT": "Body content",
|
|
109
109
|
"MAIL_BODY_BODY_CONTENT_DATA_QUERY_ID": "Body content data query id",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"MAIL_BODY_IS_MAIN": "Is main",
|
|
113
113
|
"MAIL_BODY_MAIL_TEMPLATE_ID": "Mail template id",
|
|
114
114
|
"MAIL_BODY_PRINT_FOR_EACH_RECORD": "Print for each record",
|
|
115
|
-
"MAIL_NOTIFICATION_QUEUE_SINGULAR": "
|
|
116
|
-
"MAIL_NOTIFICATION_QUEUE_PLURAL": "
|
|
115
|
+
"MAIL_NOTIFICATION_QUEUE_SINGULAR": "Mail Notification Queue",
|
|
116
|
+
"MAIL_NOTIFICATION_QUEUE_PLURAL": "Mail Notification Queue",
|
|
117
117
|
"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_ATTACHED_REPORT_ID": "Custom mail attached report id",
|
|
118
118
|
"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_BODY": "Custom mail body",
|
|
119
119
|
"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_SUBJECT": "Custom mail subject",
|
|
@@ -123,8 +123,8 @@
|
|
|
123
123
|
"MAIL_NOTIFICATION_QUEUE_MAIL_TEMPLATE_ID": "Mail template id",
|
|
124
124
|
"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_MESSAGE": "Notification message",
|
|
125
125
|
"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_TIME": "Notification time",
|
|
126
|
-
"MAIL_RECIPIENT_SINGULAR": "
|
|
127
|
-
"MAIL_RECIPIENT_PLURAL": "
|
|
126
|
+
"MAIL_RECIPIENT_SINGULAR": "Mail Recipient",
|
|
127
|
+
"MAIL_RECIPIENT_PLURAL": "Mail Recipients",
|
|
128
128
|
"MAIL_RECIPIENT_ENABLED": "Enabled",
|
|
129
129
|
"MAIL_RECIPIENT_MAIL_TEMPLATE_ID": "Mail template id",
|
|
130
130
|
"MAIL_RECIPIENT_RECIPIENT_MAIL": "Recipient mail",
|
|
@@ -142,8 +142,8 @@
|
|
|
142
142
|
"MAIL_TEMPLATE_PERIODICAL": "Periodical",
|
|
143
143
|
"MAIL_TEMPLATE_START_SENDING_AT": "Start sending at",
|
|
144
144
|
"MAIL_TEMPLATE_SUBJECT_DATA_QUERY_ID": "Subject data query id",
|
|
145
|
-
"NOTIFICATION_SINGULAR": "
|
|
146
|
-
"NOTIFICATION_PLURAL": "
|
|
145
|
+
"NOTIFICATION_SINGULAR": "Notification",
|
|
146
|
+
"NOTIFICATION_PLURAL": "Notifications",
|
|
147
147
|
"NOTIFICATION_ENABLED": "Enabled",
|
|
148
148
|
"NOTIFICATION_NOTIFICATION_ACTION_KEY": "Notification action key",
|
|
149
149
|
"NOTIFICATION_NOTIFICATION_ACTION_PAYLOAD": "Notification action payload",
|
|
@@ -152,8 +152,8 @@
|
|
|
152
152
|
"NOTIFICATION_NOTIFICATION_QUERY_ID": "Notification query id",
|
|
153
153
|
"NOTIFICATION_NOTIFICATION_TEXT": "Notification text",
|
|
154
154
|
"NOTIFICATION_USERS_TO_NOTIFY_QUERY_ID": "Users to notify query id",
|
|
155
|
-
"NOTIFICATION_QUEUE_SINGULAR": "
|
|
156
|
-
"NOTIFICATION_QUEUE_PLURAL": "
|
|
155
|
+
"NOTIFICATION_QUEUE_SINGULAR": "Notification Queue",
|
|
156
|
+
"NOTIFICATION_QUEUE_PLURAL": "Notification Queue",
|
|
157
157
|
"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_KEY": "Custom notification action key",
|
|
158
158
|
"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_PAYLOAD": "Custom notification action payload",
|
|
159
159
|
"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ICON": "Custom notification icon",
|
|
@@ -178,8 +178,8 @@
|
|
|
178
178
|
"REPORT_REPORT_NAME": "Report name",
|
|
179
179
|
"REPORT_REPORT_TYPE": "Report type",
|
|
180
180
|
"REPORT_USE_SYS_DATASOURCE": "Use sys datasource",
|
|
181
|
-
"REPORT_PARAMETER_SINGULAR": "
|
|
182
|
-
"REPORT_PARAMETER_PLURAL": "
|
|
181
|
+
"REPORT_PARAMETER_SINGULAR": "Report Parameter",
|
|
182
|
+
"REPORT_PARAMETER_PLURAL": "Report Parameters",
|
|
183
183
|
"REPORT_PARAMETER_DEFAULT_VALUE": "Default value",
|
|
184
184
|
"REPORT_PARAMETER_ENABLED": "Enabled",
|
|
185
185
|
"REPORT_PARAMETER_ENTITY_PARAMETER_ID": "Entity parameter id",
|
|
@@ -187,8 +187,8 @@
|
|
|
187
187
|
"REPORT_PARAMETER_MANDATORY": "Mandatory",
|
|
188
188
|
"REPORT_PARAMETER_REPORT_ID": "Report id",
|
|
189
189
|
|
|
190
|
-
"USER_REQUEST_SINGULAR": "
|
|
191
|
-
"USER_REQUEST_PLURAL": "
|
|
190
|
+
"USER_REQUEST_SINGULAR": "User Request",
|
|
191
|
+
"USER_REQUEST_PLURAL": "User Requests",
|
|
192
192
|
"USER_REQUEST_IS_NOTIFIED": "Is notified",
|
|
193
193
|
"USER_REQUEST_MAILS_TO_NOTIFY": "Mails to notify",
|
|
194
194
|
"USER_REQUEST_NOTIFICATION_MESSAGE": "Notification message",
|
|
@@ -233,8 +233,8 @@
|
|
|
233
233
|
"WORKFLOW_DOCUMENT_MAIL_APPROVAL_ALLOWED": "Mail approval allowed",
|
|
234
234
|
"WORKFLOW_DOCUMENT_ORG_CODE": "Org code",
|
|
235
235
|
"WORKFLOW_DOCUMENT_USE_SYSTEM_CON": "Use system con",
|
|
236
|
-
"WORKFLOW_DOCUMENT_ACTION_SINGULAR": "
|
|
237
|
-
"WORKFLOW_DOCUMENT_ACTION_PLURAL": "
|
|
236
|
+
"WORKFLOW_DOCUMENT_ACTION_SINGULAR": "Workflow Document Action",
|
|
237
|
+
"WORKFLOW_DOCUMENT_ACTION_PLURAL": "Workflow Document Actions",
|
|
238
238
|
"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_CODE": "Document action code",
|
|
239
239
|
"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_NAME": "Document action name",
|
|
240
240
|
"WORKFLOW_DOCUMENT_ACTION_NEXT_DOCUMENT_STATUS_ID": "Next document status id",
|
|
@@ -242,8 +242,8 @@
|
|
|
242
242
|
"WORKFLOW_DOCUMENT_ACTION_PRE_ACTION_ENDPOINT": "Pre action endpoint",
|
|
243
243
|
"WORKFLOW_DOCUMENT_ACTION_REQUIRE_COMMENT": "Require comment",
|
|
244
244
|
"WORKFLOW_DOCUMENT_ACTION_WORKFLOW_DOCUMENT_ID": "Workflow document id",
|
|
245
|
-
"WORKFLOW_DOCUMENT_ACTION_HISTORY_SINGULAR": "
|
|
246
|
-
"WORKFLOW_DOCUMENT_ACTION_HISTORY_PLURAL": "
|
|
245
|
+
"WORKFLOW_DOCUMENT_ACTION_HISTORY_SINGULAR": "Workflow Document Action History",
|
|
246
|
+
"WORKFLOW_DOCUMENT_ACTION_HISTORY_PLURAL": "Workflow Document Action History",
|
|
247
247
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_BY": "Action by",
|
|
248
248
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_COMMENT": "Action comment",
|
|
249
249
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_METHOD": "Action method",
|
|
@@ -251,13 +251,13 @@
|
|
|
251
251
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_ACTION_ID": "Document action id",
|
|
252
252
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_REF_ID": "Document ref id",
|
|
253
253
|
"WORKFLOW_DOCUMENT_ACTION_HISTORY_WORKFLOW_DOCUMENT_ID": "Workflow document id",
|
|
254
|
-
"WORKFLOW_DOCUMENT_ACTION_MAIL_SINGULAR": "
|
|
255
|
-
"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL": "
|
|
254
|
+
"WORKFLOW_DOCUMENT_ACTION_MAIL_SINGULAR": "Workflow Document Action Mail",
|
|
255
|
+
"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL": "Workflow Document Action Mails",
|
|
256
256
|
"WORKFLOW_DOCUMENT_ACTION_MAIL_DOCUMENT_ACTION_ID": "Document action id",
|
|
257
257
|
"WORKFLOW_DOCUMENT_ACTION_MAIL_ENABLED": "Enabled",
|
|
258
258
|
"WORKFLOW_DOCUMENT_ACTION_MAIL_MAIL_TEMPLATE_ID": "Mail template id",
|
|
259
|
-
"WORKFLOW_DOCUMENT_MAIL_LOG_SINGULAR": "
|
|
260
|
-
"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL": "
|
|
259
|
+
"WORKFLOW_DOCUMENT_MAIL_LOG_SINGULAR": "Workflow Document Mail Log",
|
|
260
|
+
"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL": "Workflow Document Mail Logs",
|
|
261
261
|
"WORKFLOW_DOCUMENT_MAIL_LOG_GRAPH_API_MSG_ID": "Graph api msg id",
|
|
262
262
|
"WORKFLOW_DOCUMENT_MAIL_LOG_IS_PROCESSED": "Is processed",
|
|
263
263
|
"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_ACTION_CODE": "Mail action code",
|
|
@@ -268,8 +268,8 @@
|
|
|
268
268
|
"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_TIME": "Process time",
|
|
269
269
|
"WORKFLOW_DOCUMENT_MAIL_LOG_REF_DOC_ID": "Ref doc id",
|
|
270
270
|
"WORKFLOW_DOCUMENT_MAIL_LOG_WORKFLOW_DOCUMENT_ID": "Workflow document id",
|
|
271
|
-
"WORKFLOW_DOCUMENT_STATUS_SINGULAR": "
|
|
272
|
-
"WORKFLOW_DOCUMENT_STATUS_PLURAL": "
|
|
271
|
+
"WORKFLOW_DOCUMENT_STATUS_SINGULAR": "Workflow Document Status",
|
|
272
|
+
"WORKFLOW_DOCUMENT_STATUS_PLURAL": "Workflow Document Statuses",
|
|
273
273
|
"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_CODE": "Document status code",
|
|
274
274
|
"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_NAME": "Document status name",
|
|
275
275
|
"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_ORDER": "Document status order",
|
|
@@ -290,8 +290,8 @@
|
|
|
290
290
|
"ATTACHMENT_CONFIG_STORAGE_TYPE": "Storage type",
|
|
291
291
|
"ATTACHMENT_CONFIG_UPLOAD_AUTHORITY_KEY": "Upload authority key",
|
|
292
292
|
"ATTACHMENT_CONFIG_UPLOAD_DIRECTORY": "Upload directory",
|
|
293
|
-
"NOTIFICATION_SINGULAR": "
|
|
294
|
-
"NOTIFICATION_PLURAL": "
|
|
293
|
+
"NOTIFICATION_SINGULAR": "Notification",
|
|
294
|
+
"NOTIFICATION_PLURAL": "Notifications",
|
|
295
295
|
"NOTIFICATION_IS_ACTIVE": "Is active",
|
|
296
296
|
"NOTIFICATION_NOTIFICATION_ACTION_PAYLOAD": "Notification action payload",
|
|
297
297
|
"NOTIFICATION_NOTIFICATION_CODE": "Notification code",
|
package/src/main.tsx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRoot } from "react-dom/client";
|
|
2
2
|
import { BaseApp } from "./components";
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
createRoot(document.getElementById("root")!).render(
|
|
6
5
|
<BaseApp
|
|
7
6
|
apiBaseUrl="http://localhost:8080/api-base"
|
|
7
|
+
enableUINotifications={false}
|
|
8
8
|
appLogo={"/logo.png"}
|
|
9
9
|
appName="UI Base Library"
|
|
10
10
|
appVersion="0.0"
|
|
@@ -17,7 +17,7 @@ export const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [
|
|
|
17
17
|
actionPayload: { path: "admin/persons" },
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
id: "system_admin.devtools.
|
|
20
|
+
id: "system_admin.devtools.rolesx",
|
|
21
21
|
label: "ROLES",
|
|
22
22
|
icon: "tag",
|
|
23
23
|
action: "NAVIGATION",
|
|
@@ -200,7 +200,7 @@ export const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [
|
|
|
200
200
|
{
|
|
201
201
|
id: "system_admin.followup",
|
|
202
202
|
label: "SYSTEM_MONITORING",
|
|
203
|
-
authority: "
|
|
203
|
+
authority: "DEVELOPMENT_ADMIN",
|
|
204
204
|
icon: "tv",
|
|
205
205
|
children: [
|
|
206
206
|
{
|
|
@@ -130,19 +130,19 @@ export const ADMINISTRATION_STORES: CommonStores = {
|
|
|
130
130
|
SystemApplicationModules: {
|
|
131
131
|
autoLoad: true,
|
|
132
132
|
data: [],
|
|
133
|
-
authority: "
|
|
133
|
+
authority: "SYSTEM_ADMIN",
|
|
134
134
|
url: "api/v1/admin/systemapplicationmodule/application/all",
|
|
135
135
|
},
|
|
136
136
|
SystemApplicationAuthorities: {
|
|
137
137
|
autoLoad: true,
|
|
138
138
|
data: [],
|
|
139
|
-
authority: "
|
|
139
|
+
authority: "SYSTEM_ADMIN",
|
|
140
140
|
url: "api/v1/admin/systemapplicationauthority/all",
|
|
141
141
|
},
|
|
142
142
|
SystemApplicationRoles: {
|
|
143
143
|
autoLoad: true,
|
|
144
144
|
data: [],
|
|
145
|
-
authority: "
|
|
145
|
+
authority: "SYSTEM_ADMIN",
|
|
146
146
|
url: "api/v1/admin/systemapplicationrole/all",
|
|
147
147
|
},
|
|
148
148
|
};
|
|
@@ -3,6 +3,12 @@ import { SystemRoute } from "../../../routes/types";
|
|
|
3
3
|
import { ExtendedTreeItemProps } from "../../../navigationItems";
|
|
4
4
|
import { StoreMetaData } from "./CommonStoreSlice";
|
|
5
5
|
|
|
6
|
+
export type LicenseCheckObject = {
|
|
7
|
+
isLicensed: boolean;
|
|
8
|
+
lastLicenseCheckMessage: string;
|
|
9
|
+
lastLicenseCheckTime: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
6
12
|
export type AppInfo = {
|
|
7
13
|
documentTitle: string | null;
|
|
8
14
|
apiBaseUrl: string | null;
|
|
@@ -24,6 +30,7 @@ export type AppInfo = {
|
|
|
24
30
|
light: { primaryColor: string; secondaryColor: string };
|
|
25
31
|
dark: { primaryColor: string; secondaryColor: string };
|
|
26
32
|
};
|
|
33
|
+
checkLicense?: { endpoint: string; interval: number };
|
|
27
34
|
};
|
|
28
35
|
|
|
29
36
|
export type AppInfoProp = {
|
package/tsconfig.json
CHANGED