@asaleh37/ui-base 25.8.1-4 → 25.8.1-6

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 (161) hide show
  1. package/.github/workflows/publish-npm.yml +49 -49
  2. package/README.md +51 -51
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/index.mjs.map +1 -1
  7. package/eslint.config.js +29 -29
  8. package/index.html +13 -13
  9. package/package.json +120 -120
  10. package/rollup.config-1748377725725.cjs +34 -34
  11. package/rollup.config.js +45 -45
  12. package/src/components/App.tsx +123 -123
  13. package/src/components/BaseApp.tsx +53 -53
  14. package/src/components/administration/admin/ChangePasswordPanel.tsx +128 -128
  15. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  16. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  17. package/src/components/administration/admin/OrganizationGrid.tsx +118 -118
  18. package/src/components/administration/admin/OrganizationMemberGrid.tsx +176 -176
  19. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  20. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  21. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  22. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  23. package/src/components/administration/admin/PersonGrid.tsx +361 -361
  24. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  25. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +117 -117
  26. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  27. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  28. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +75 -75
  29. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  30. package/src/components/administration/dev/AttachmentConfigGrid.tsx +223 -223
  31. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  32. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  33. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  34. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  35. package/src/components/administration/dev/DataQueryGrid.tsx +206 -206
  36. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  37. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  38. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +150 -150
  39. package/src/components/administration/dev/EntityParameterGrid.tsx +279 -279
  40. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  41. package/src/components/administration/dev/MailAttachmentGrid.tsx +155 -155
  42. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  43. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  44. package/src/components/administration/dev/MailRecipientGrid.tsx +169 -169
  45. package/src/components/administration/dev/MailSenderConfigGrid.tsx +478 -478
  46. package/src/components/administration/dev/MailTemplateGrid.tsx +384 -384
  47. package/src/components/administration/dev/NotificationGrid.tsx +432 -432
  48. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  49. package/src/components/administration/dev/ReportGrid.tsx +506 -506
  50. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  51. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  52. package/src/components/administration/dev/WidgetGrid.tsx +431 -431
  53. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  54. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  55. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  56. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +377 -377
  57. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  58. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  59. package/src/components/common/ChangeOrgForm.tsx +81 -81
  60. package/src/components/common/Home.tsx +43 -43
  61. package/src/components/common/LanguageSwitcher.tsx +25 -25
  62. package/src/components/common/LayoutHandlers.tsx +11 -11
  63. package/src/components/common/LoadingMask.tsx +24 -24
  64. package/src/components/common/Login.tsx +214 -214
  65. package/src/components/common/MyNotificationsPanel.tsx +109 -109
  66. package/src/components/common/NotificationItem.tsx +138 -138
  67. package/src/components/index.ts +11 -11
  68. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +324 -324
  69. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +248 -248
  70. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  71. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +231 -231
  72. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +106 -106
  73. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +64 -64
  74. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +93 -93
  75. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +65 -65
  76. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +64 -64
  77. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  78. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +55 -55
  79. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +17 -17
  80. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +387 -387
  81. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +189 -189
  82. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +998 -998
  83. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  84. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  85. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +227 -227
  86. package/src/components/templates/TransferList.tsx +256 -256
  87. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  88. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  89. package/src/components/templates/attachment/AttachmentImageViewer.tsx +83 -83
  90. package/src/components/templates/attachment/AttachmentPanel.tsx +285 -285
  91. package/src/components/templates/index.ts +33 -33
  92. package/src/components/templates/report/ExcelReportViewer.tsx +71 -71
  93. package/src/components/templates/report/ReportViewer.tsx +382 -382
  94. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  95. package/src/components/templates/visuals/DashboardViewer.tsx +148 -148
  96. package/src/components/templates/visuals/WidgetViewer.tsx +198 -198
  97. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  98. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  99. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  100. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  101. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  102. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  103. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +606 -606
  104. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +140 -140
  105. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  106. package/src/hooks/UseConfirmationWindow.tsx +54 -54
  107. package/src/hooks/UseMobile.tsx +13 -13
  108. package/src/hooks/UseSession.tsx +59 -59
  109. package/src/hooks/UseWindow.tsx +107 -107
  110. package/src/hooks/index.ts +7 -7
  111. package/src/hooks/useApiActions.ts +124 -124
  112. package/src/hooks/useAxios.tsx +316 -316
  113. package/src/hooks/useInterval.tsx +23 -23
  114. package/src/hooks/useLoadingMask.tsx +16 -16
  115. package/src/hooks/useLookupGridColumn.tsx +35 -35
  116. package/src/index.ts +4 -4
  117. package/src/layout/DrawerHeader.tsx +10 -10
  118. package/src/layout/Layout.tsx +90 -90
  119. package/src/layout/MainContent.tsx +117 -117
  120. package/src/layout/MobileDrawer.tsx +103 -103
  121. package/src/layout/NavigationTree.tsx +298 -298
  122. package/src/layout/NotificationButton.tsx +207 -207
  123. package/src/layout/RouteWrapper.tsx +63 -63
  124. package/src/layout/SideBar.tsx +85 -85
  125. package/src/layout/TopBar.tsx +289 -289
  126. package/src/locales/arabic/adminLocalsAr.json +93 -93
  127. package/src/locales/arabic/common.json +44 -44
  128. package/src/locales/arabic/devLocalsAr.json +317 -317
  129. package/src/locales/arabic/index.ts +9 -9
  130. package/src/locales/english/adminLocalsEn.json +96 -96
  131. package/src/locales/english/common.json +43 -43
  132. package/src/locales/english/devLocalsEn.json +318 -318
  133. package/src/locales/english/index.ts +9 -9
  134. package/src/locales/i18n.ts +8 -8
  135. package/src/locales/index.ts +9 -9
  136. package/src/main.tsx +23 -23
  137. package/src/navigationItems/Administration/adminNavigationItems.tsx +223 -223
  138. package/src/navigationItems/Administration/index.tsx +16 -16
  139. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  140. package/src/navigationItems/common/index.tsx +7 -7
  141. package/src/navigationItems/index.tsx +35 -35
  142. package/src/redux/features/administration/AdministrationStoresMetaData.ts +148 -148
  143. package/src/redux/features/common/AppInfoSlice.ts +65 -65
  144. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  145. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  146. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  147. package/src/redux/features/common/SideBarSlice.ts +27 -27
  148. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  149. package/src/redux/store.ts +29 -29
  150. package/src/routes/administration/adminRoutes.tsx +99 -99
  151. package/src/routes/administration/devRoutes.tsx +129 -129
  152. package/src/routes/administration/index.ts +8 -8
  153. package/src/routes/index.ts +11 -11
  154. package/src/routes/types/index.ts +6 -6
  155. package/src/styles/index.css +19 -19
  156. package/src/types/index.ts +8 -8
  157. package/src/util/AppUtils.ts +53 -53
  158. package/src/util/constants.ts +6 -6
  159. package/src/util/index.ts +2 -2
  160. package/tsconfig.json +135 -135
  161. package/vite.config.ts +24 -24
@@ -1,432 +1,432 @@
1
- import { useEffect, useState } from "react";
2
- import TemplateGrid from "../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid";
3
- import { FormElementProps } from "../../templates/DataEntryTemplates/DataEntryTypes";
4
- import { useTranslation } from "react-i18next";
5
- import { useApiActions } from "../../../hooks";
6
- import { useSelector } from "react-redux";
7
- import { Box } from "@mui/material";
8
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
9
- import useInterval from "../../../hooks/useInterval";
10
-
11
- const NotificationGrid: React.FC = () => {
12
- const { t } = useTranslation();
13
- const [data, setData] = useState([]);
14
- const SystemTimeIntervals = useSelector(
15
- (state: any) => state.commonStores.stores.SystemTimeIntervals.data
16
- );
17
- const SystemDataQueries = useSelector(
18
- (state: any) => state.commonStores.stores.SystemDataQueries.data
19
- );
20
- const apiActions = useApiActions({
21
- findAll: "api/v1/dev/notification/all",
22
- deleteById: "api/v1/dev/notification",
23
- save: "api/v1/dev/notification",
24
- findById: "api/v1/dev/notification",
25
- setData: setData,
26
- });
27
-
28
- const formElements: Array<FormElementProps> = [
29
- {
30
- type: "field",
31
- mode: "props",
32
- props: {
33
- fieldLabel: "id",
34
- fieldName: "id",
35
- fieldType: "number",
36
- hidden: true,
37
- gridProps: {
38
- hidden: true,
39
- },
40
- },
41
- },
42
- {
43
- type: "field",
44
- mode: "props",
45
- props: {
46
- fieldLabel: "createTime",
47
- fieldName: "createTime",
48
- fieldType: "datetime",
49
- hidden: true,
50
- gridProps: {
51
- hidden: true,
52
- },
53
- },
54
- },
55
- {
56
- type: "field",
57
- mode: "props",
58
- props: {
59
- fieldLabel: "createdBy",
60
- fieldName: "createdBy",
61
- fieldType: "text",
62
- hidden: true,
63
- gridProps: {
64
- hidden: true,
65
- },
66
- },
67
- },
68
- {
69
- type: "field",
70
- mode: "props",
71
- props: {
72
- fieldLabel: "lastUpdateBy",
73
- fieldName: "lastUpdateBy",
74
- fieldType: "text",
75
- hidden: true,
76
- gridProps: {
77
- hidden: true,
78
- },
79
- },
80
- },
81
- {
82
- type: "field",
83
- mode: "props",
84
- props: {
85
- fieldLabel: "lastUpdateTime",
86
- fieldName: "lastUpdateTime",
87
- fieldType: "datetime",
88
- hidden: true,
89
- gridProps: {
90
- hidden: true,
91
- },
92
- },
93
- },
94
-
95
- {
96
- type: "field",
97
- mode: "props",
98
- props: {
99
- fieldLabel: "NOTIFICATION_NOTIFICATION_CODE",
100
- fieldName: "notificationCode",
101
- required: true,
102
- fieldType: "text",
103
- },
104
- },
105
-
106
- {
107
- type: "field",
108
- mode: "props",
109
- props: {
110
- fieldLabel: "Notification Data Query ( will be passed a parameter call last_run_time represents last check time)",
111
- fieldName: "notificationQueryId",
112
- required: true,
113
- fieldType: "combobox",
114
- options: SystemDataQueries,
115
- optionDisplayField: "queryName",
116
- gridProps: {
117
- hidden: true,
118
- },
119
- optionValueField: "id",
120
- },
121
- },
122
- {
123
- type: "field",
124
- mode: "props",
125
- props: {
126
- fieldLabel:
127
- "Users to notify Query (must have username property in the result set)",
128
- fieldName: "usersToNotifyQueryId",
129
- required: false,
130
- fieldType: "combobox",
131
- options: SystemDataQueries,
132
- optionDisplayField: "queryName",
133
- gridProps: {
134
- hidden: true,
135
- },
136
- optionValueField: "id",
137
- },
138
- },
139
- {
140
- type: "field",
141
- mode: "props",
142
- props: {
143
- fieldLabel: "NOTIFICATION_AUTHORITY_TO_NOTIFY",
144
- fieldName: "authorityToNotify",
145
- required: false,
146
- gridProps: {
147
- hidden: true,
148
- },
149
- fieldType: "text",
150
- },
151
- },
152
- {
153
- type: "field",
154
- mode: "props",
155
- props: {
156
- fieldLabel: "Interval Type",
157
- fieldName: "intervalType",
158
- fieldType: "combobox",
159
- options: SystemTimeIntervals,
160
- gridProps: {
161
- hidden: true,
162
- },
163
- optionDisplayField: "value",
164
- optionValueField: "value",
165
- },
166
- },
167
- {
168
- type: "field",
169
- mode: "props",
170
- props: {
171
- fieldLabel: "Interval Value (minmum value 20 seconds)",
172
- fieldName: "intervalValue",
173
- gridProps: {
174
- hidden: true,
175
- },
176
- fieldType: "number",
177
- },
178
- },
179
- {
180
- type: "field",
181
- mode: "props",
182
- props: {
183
- fieldLabel: "Start Notifing Date",
184
- fieldName: "startNotificationFrom",
185
- gridProps: {
186
- hidden: true,
187
- },
188
- fieldType: "datetime",
189
- },
190
- },
191
-
192
- {
193
- type: "field",
194
- mode: "props",
195
- props: {
196
- fieldLabel: "NOTIFICATION_SYSTEM_APPLICATION_ID",
197
- fieldName: "systemApplicationId",
198
- hidden: true,
199
- gridProps: { hidden: true },
200
- required: false,
201
- fieldType: "number",
202
- },
203
- },
204
- {
205
- type: "field",
206
- mode: "props",
207
- props: {
208
- fieldLabel: "NOTIFICATION_NOTIFICATION_ICON",
209
- fieldName: "notificationIcon",
210
- required: true,
211
- fieldType: "text",
212
- gridProps: {
213
- muiProps: {
214
- renderCell: (params: any) => {
215
- return (
216
- <Box
217
- sx={{
218
- display: "flex",
219
- alignItems: "center",
220
- color: params?.row?.notificationIconColor,
221
- justifyContent: "center",
222
- height: "100%",
223
- }}
224
- >
225
- {params?.row?.notificationIcon ? (
226
- <FontAwesomeIcon icon={params.row.notificationIcon} />
227
- ) : (
228
- <></>
229
- )}
230
- </Box>
231
- );
232
- },
233
- },
234
- },
235
- },
236
- },
237
- {
238
- type: "field",
239
- mode: "props",
240
- props: {
241
- fieldLabel: "NOTIFICATION_NOTIFICATION_AR_TEXT",
242
- fieldName: "notificationArText",
243
- required: true,
244
- fieldType: "text",
245
- gridProps: {
246
- muiProps: {
247
- renderCell: (params: any) => {
248
- return (
249
- <Box
250
- sx={{
251
- display: "flex",
252
- alignItems: "center",
253
- color: params?.row?.notificationTextColor,
254
- justifyContent: "center",
255
- height: "100%",
256
- }}
257
- >
258
- {params?.row?.notificationArText}
259
- </Box>
260
- );
261
- },
262
- },
263
- },
264
- },
265
- },
266
- {
267
- type: "field",
268
- mode: "props",
269
- props: {
270
- fieldLabel: "NOTIFICATION_NOTIFICATION_EN_TEXT",
271
- fieldName: "notificationEnText",
272
- required: true,
273
- fieldType: "text",
274
- gridProps: {
275
- muiProps: {
276
- renderCell: (params: any) => {
277
- return (
278
- <Box
279
- sx={{
280
- display: "flex",
281
- alignItems: "center",
282
- color: params?.row?.notificationTextColor,
283
- justifyContent: "center",
284
- height: "100%",
285
- }}
286
- >
287
- {params?.row?.notificationEnText}
288
- </Box>
289
- );
290
- },
291
- },
292
- },
293
- },
294
- },
295
- {
296
- type: "field",
297
- mode: "props",
298
- props: {
299
- fieldLabel: "Last Runtime",
300
- disabled: true,
301
- fieldName: "lastIntervalRun",
302
- fieldType: "datetime",
303
- },
304
- },
305
- {
306
- type: "field",
307
- mode: "props",
308
- props: {
309
- fieldLabel: "Last Successful Runtime",
310
- fieldName: "lastSuccessfulRun",
311
- disabled: true,
312
- fieldType: "datetime",
313
- },
314
- },
315
- {
316
- type: "field",
317
- mode: "props",
318
- props: {
319
- fieldLabel: "Last Run Message",
320
- fieldName: "lastRunMessage",
321
- disabled: true,
322
- fieldType: "text",
323
- },
324
- },
325
- {
326
- type: "field",
327
- mode: "props",
328
- props: {
329
- fieldLabel: "NOTIFICATION_NOTIFICATION_TEXT_COLOR",
330
- fieldName: "notificationTextColor",
331
- required: false,
332
- gridProps: {
333
- hidden: true,
334
- },
335
- fieldType: "text",
336
- },
337
- },
338
-
339
- {
340
- type: "field",
341
- mode: "props",
342
- props: {
343
- fieldLabel: "NOTIFICATION_NOTIFICATION_ICON_COLOR",
344
- fieldName: "notificationIconColor",
345
- required: false,
346
- gridProps: {
347
- hidden: true,
348
- },
349
- fieldType: "text",
350
- },
351
- },
352
- {
353
- type: "field",
354
- mode: "props",
355
- props: {
356
- fieldLabel: "NOTIFICATION_NOTIFICATION_ACTION",
357
- fieldName: "notificationAction",
358
- required: false,
359
- fieldType: "combobox",
360
- options: [{ value: "NAVIGATION" }],
361
- optionDisplayField: "value",
362
- optionValueField: "value",
363
- gridProps: {
364
- hidden: true,
365
- },
366
- },
367
- },
368
- {
369
- type: "field",
370
- mode: "props",
371
- props: {
372
- fieldLabel:
373
- "Action Payload (must be a rout in case of NAVIGATION with parameter values betweem @@)",
374
- fieldName: "notificationActionPayload",
375
- required: false,
376
- fieldType: "text",
377
- gridProps: {
378
- hidden: true,
379
- },
380
- },
381
- },
382
-
383
- {
384
- type: "field",
385
- mode: "props",
386
- props: {
387
- fieldLabel:
388
- "Organization Id Field on the Notification Query result set if it supports it",
389
- fieldName: "organizationIdField",
390
- required: false,
391
- fieldType: "text",
392
- gridProps: {
393
- hidden: true,
394
- },
395
- },
396
- },
397
- {
398
- type: "field",
399
- mode: "props",
400
- props: {
401
- fieldLabel: "NOTIFICATION_IS_ACTIVE",
402
- fieldName: "isActive",
403
- required: false,
404
- fieldType: "checkbox",
405
- },
406
- },
407
- ];
408
-
409
- return (
410
- <TemplateGrid
411
- apiActions={apiActions}
412
- data={data}
413
- setData={setData}
414
- editMode={{
415
- editMode: "modal",
416
- specs: {
417
- modalIcon: "bell",
418
- modalTitle: "System Notification",
419
- modalWidth: "300",
420
- },
421
- }}
422
- formElements={formElements}
423
- keyColumnName={"id"}
424
- gridTitle={t("NOTIFICATION_PLURAL")}
425
- girdIcon="bell"
426
- editAction={{ isEnabled: true, authority: "NOTIFICATION_EDIT" }}
427
- deleteAction={{ isEnabled: true, authority: "NOTIFICATION_DELETE" }}
428
- />
429
- );
430
- };
431
-
432
- export default NotificationGrid;
1
+ import { useEffect, useState } from "react";
2
+ import TemplateGrid from "../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid";
3
+ import { FormElementProps } from "../../templates/DataEntryTemplates/DataEntryTypes";
4
+ import { useTranslation } from "react-i18next";
5
+ import { useApiActions } from "../../../hooks";
6
+ import { useSelector } from "react-redux";
7
+ import { Box } from "@mui/material";
8
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
9
+ import useInterval from "../../../hooks/useInterval";
10
+
11
+ const NotificationGrid: React.FC = () => {
12
+ const { t } = useTranslation();
13
+ const [data, setData] = useState([]);
14
+ const SystemTimeIntervals = useSelector(
15
+ (state: any) => state.commonStores.stores.SystemTimeIntervals.data
16
+ );
17
+ const SystemDataQueries = useSelector(
18
+ (state: any) => state.commonStores.stores.SystemDataQueries.data
19
+ );
20
+ const apiActions = useApiActions({
21
+ findAll: "api/v1/dev/notification/all",
22
+ deleteById: "api/v1/dev/notification",
23
+ save: "api/v1/dev/notification",
24
+ findById: "api/v1/dev/notification",
25
+ setData: setData,
26
+ });
27
+
28
+ const formElements: Array<FormElementProps> = [
29
+ {
30
+ type: "field",
31
+ mode: "props",
32
+ props: {
33
+ fieldLabel: "id",
34
+ fieldName: "id",
35
+ fieldType: "number",
36
+ hidden: true,
37
+ gridProps: {
38
+ hidden: true,
39
+ },
40
+ },
41
+ },
42
+ {
43
+ type: "field",
44
+ mode: "props",
45
+ props: {
46
+ fieldLabel: "createTime",
47
+ fieldName: "createTime",
48
+ fieldType: "datetime",
49
+ hidden: true,
50
+ gridProps: {
51
+ hidden: true,
52
+ },
53
+ },
54
+ },
55
+ {
56
+ type: "field",
57
+ mode: "props",
58
+ props: {
59
+ fieldLabel: "createdBy",
60
+ fieldName: "createdBy",
61
+ fieldType: "text",
62
+ hidden: true,
63
+ gridProps: {
64
+ hidden: true,
65
+ },
66
+ },
67
+ },
68
+ {
69
+ type: "field",
70
+ mode: "props",
71
+ props: {
72
+ fieldLabel: "lastUpdateBy",
73
+ fieldName: "lastUpdateBy",
74
+ fieldType: "text",
75
+ hidden: true,
76
+ gridProps: {
77
+ hidden: true,
78
+ },
79
+ },
80
+ },
81
+ {
82
+ type: "field",
83
+ mode: "props",
84
+ props: {
85
+ fieldLabel: "lastUpdateTime",
86
+ fieldName: "lastUpdateTime",
87
+ fieldType: "datetime",
88
+ hidden: true,
89
+ gridProps: {
90
+ hidden: true,
91
+ },
92
+ },
93
+ },
94
+
95
+ {
96
+ type: "field",
97
+ mode: "props",
98
+ props: {
99
+ fieldLabel: "NOTIFICATION_NOTIFICATION_CODE",
100
+ fieldName: "notificationCode",
101
+ required: true,
102
+ fieldType: "text",
103
+ },
104
+ },
105
+
106
+ {
107
+ type: "field",
108
+ mode: "props",
109
+ props: {
110
+ fieldLabel: "Notification Data Query ( will be passed a parameter call last_run_time represents last check time)",
111
+ fieldName: "notificationQueryId",
112
+ required: true,
113
+ fieldType: "combobox",
114
+ options: SystemDataQueries,
115
+ optionDisplayField: "queryName",
116
+ gridProps: {
117
+ hidden: true,
118
+ },
119
+ optionValueField: "id",
120
+ },
121
+ },
122
+ {
123
+ type: "field",
124
+ mode: "props",
125
+ props: {
126
+ fieldLabel:
127
+ "Users to notify Query (must have username property in the result set)",
128
+ fieldName: "usersToNotifyQueryId",
129
+ required: false,
130
+ fieldType: "combobox",
131
+ options: SystemDataQueries,
132
+ optionDisplayField: "queryName",
133
+ gridProps: {
134
+ hidden: true,
135
+ },
136
+ optionValueField: "id",
137
+ },
138
+ },
139
+ {
140
+ type: "field",
141
+ mode: "props",
142
+ props: {
143
+ fieldLabel: "NOTIFICATION_AUTHORITY_TO_NOTIFY",
144
+ fieldName: "authorityToNotify",
145
+ required: false,
146
+ gridProps: {
147
+ hidden: true,
148
+ },
149
+ fieldType: "text",
150
+ },
151
+ },
152
+ {
153
+ type: "field",
154
+ mode: "props",
155
+ props: {
156
+ fieldLabel: "Interval Type",
157
+ fieldName: "intervalType",
158
+ fieldType: "combobox",
159
+ options: SystemTimeIntervals,
160
+ gridProps: {
161
+ hidden: true,
162
+ },
163
+ optionDisplayField: "value",
164
+ optionValueField: "value",
165
+ },
166
+ },
167
+ {
168
+ type: "field",
169
+ mode: "props",
170
+ props: {
171
+ fieldLabel: "Interval Value (minmum value 20 seconds)",
172
+ fieldName: "intervalValue",
173
+ gridProps: {
174
+ hidden: true,
175
+ },
176
+ fieldType: "number",
177
+ },
178
+ },
179
+ {
180
+ type: "field",
181
+ mode: "props",
182
+ props: {
183
+ fieldLabel: "Start Notifing Date",
184
+ fieldName: "startNotificationFrom",
185
+ gridProps: {
186
+ hidden: true,
187
+ },
188
+ fieldType: "datetime",
189
+ },
190
+ },
191
+
192
+ {
193
+ type: "field",
194
+ mode: "props",
195
+ props: {
196
+ fieldLabel: "NOTIFICATION_SYSTEM_APPLICATION_ID",
197
+ fieldName: "systemApplicationId",
198
+ hidden: true,
199
+ gridProps: { hidden: true },
200
+ required: false,
201
+ fieldType: "number",
202
+ },
203
+ },
204
+ {
205
+ type: "field",
206
+ mode: "props",
207
+ props: {
208
+ fieldLabel: "NOTIFICATION_NOTIFICATION_ICON",
209
+ fieldName: "notificationIcon",
210
+ required: true,
211
+ fieldType: "text",
212
+ gridProps: {
213
+ muiProps: {
214
+ renderCell: (params: any) => {
215
+ return (
216
+ <Box
217
+ sx={{
218
+ display: "flex",
219
+ alignItems: "center",
220
+ color: params?.row?.notificationIconColor,
221
+ justifyContent: "center",
222
+ height: "100%",
223
+ }}
224
+ >
225
+ {params?.row?.notificationIcon ? (
226
+ <FontAwesomeIcon icon={params.row.notificationIcon} />
227
+ ) : (
228
+ <></>
229
+ )}
230
+ </Box>
231
+ );
232
+ },
233
+ },
234
+ },
235
+ },
236
+ },
237
+ {
238
+ type: "field",
239
+ mode: "props",
240
+ props: {
241
+ fieldLabel: "NOTIFICATION_NOTIFICATION_AR_TEXT",
242
+ fieldName: "notificationArText",
243
+ required: true,
244
+ fieldType: "text",
245
+ gridProps: {
246
+ muiProps: {
247
+ renderCell: (params: any) => {
248
+ return (
249
+ <Box
250
+ sx={{
251
+ display: "flex",
252
+ alignItems: "center",
253
+ color: params?.row?.notificationTextColor,
254
+ justifyContent: "center",
255
+ height: "100%",
256
+ }}
257
+ >
258
+ {params?.row?.notificationArText}
259
+ </Box>
260
+ );
261
+ },
262
+ },
263
+ },
264
+ },
265
+ },
266
+ {
267
+ type: "field",
268
+ mode: "props",
269
+ props: {
270
+ fieldLabel: "NOTIFICATION_NOTIFICATION_EN_TEXT",
271
+ fieldName: "notificationEnText",
272
+ required: true,
273
+ fieldType: "text",
274
+ gridProps: {
275
+ muiProps: {
276
+ renderCell: (params: any) => {
277
+ return (
278
+ <Box
279
+ sx={{
280
+ display: "flex",
281
+ alignItems: "center",
282
+ color: params?.row?.notificationTextColor,
283
+ justifyContent: "center",
284
+ height: "100%",
285
+ }}
286
+ >
287
+ {params?.row?.notificationEnText}
288
+ </Box>
289
+ );
290
+ },
291
+ },
292
+ },
293
+ },
294
+ },
295
+ {
296
+ type: "field",
297
+ mode: "props",
298
+ props: {
299
+ fieldLabel: "Last Runtime",
300
+ disabled: true,
301
+ fieldName: "lastIntervalRun",
302
+ fieldType: "datetime",
303
+ },
304
+ },
305
+ {
306
+ type: "field",
307
+ mode: "props",
308
+ props: {
309
+ fieldLabel: "Last Successful Runtime",
310
+ fieldName: "lastSuccessfulRun",
311
+ disabled: true,
312
+ fieldType: "datetime",
313
+ },
314
+ },
315
+ {
316
+ type: "field",
317
+ mode: "props",
318
+ props: {
319
+ fieldLabel: "Last Run Message",
320
+ fieldName: "lastRunMessage",
321
+ disabled: true,
322
+ fieldType: "text",
323
+ },
324
+ },
325
+ {
326
+ type: "field",
327
+ mode: "props",
328
+ props: {
329
+ fieldLabel: "NOTIFICATION_NOTIFICATION_TEXT_COLOR",
330
+ fieldName: "notificationTextColor",
331
+ required: false,
332
+ gridProps: {
333
+ hidden: true,
334
+ },
335
+ fieldType: "text",
336
+ },
337
+ },
338
+
339
+ {
340
+ type: "field",
341
+ mode: "props",
342
+ props: {
343
+ fieldLabel: "NOTIFICATION_NOTIFICATION_ICON_COLOR",
344
+ fieldName: "notificationIconColor",
345
+ required: false,
346
+ gridProps: {
347
+ hidden: true,
348
+ },
349
+ fieldType: "text",
350
+ },
351
+ },
352
+ {
353
+ type: "field",
354
+ mode: "props",
355
+ props: {
356
+ fieldLabel: "NOTIFICATION_NOTIFICATION_ACTION",
357
+ fieldName: "notificationAction",
358
+ required: false,
359
+ fieldType: "combobox",
360
+ options: [{ value: "NAVIGATION" }],
361
+ optionDisplayField: "value",
362
+ optionValueField: "value",
363
+ gridProps: {
364
+ hidden: true,
365
+ },
366
+ },
367
+ },
368
+ {
369
+ type: "field",
370
+ mode: "props",
371
+ props: {
372
+ fieldLabel:
373
+ "Action Payload (must be a rout in case of NAVIGATION with parameter values betweem @@)",
374
+ fieldName: "notificationActionPayload",
375
+ required: false,
376
+ fieldType: "text",
377
+ gridProps: {
378
+ hidden: true,
379
+ },
380
+ },
381
+ },
382
+
383
+ {
384
+ type: "field",
385
+ mode: "props",
386
+ props: {
387
+ fieldLabel:
388
+ "Organization Id Field on the Notification Query result set if it supports it",
389
+ fieldName: "organizationIdField",
390
+ required: false,
391
+ fieldType: "text",
392
+ gridProps: {
393
+ hidden: true,
394
+ },
395
+ },
396
+ },
397
+ {
398
+ type: "field",
399
+ mode: "props",
400
+ props: {
401
+ fieldLabel: "NOTIFICATION_IS_ACTIVE",
402
+ fieldName: "isActive",
403
+ required: false,
404
+ fieldType: "checkbox",
405
+ },
406
+ },
407
+ ];
408
+
409
+ return (
410
+ <TemplateGrid
411
+ apiActions={apiActions}
412
+ data={data}
413
+ setData={setData}
414
+ editMode={{
415
+ editMode: "modal",
416
+ specs: {
417
+ modalIcon: "bell",
418
+ modalTitle: "System Notification",
419
+ modalWidth: "300",
420
+ },
421
+ }}
422
+ formElements={formElements}
423
+ keyColumnName={"id"}
424
+ gridTitle={t("NOTIFICATION_PLURAL")}
425
+ girdIcon="bell"
426
+ editAction={{ isEnabled: true, authority: "NOTIFICATION_EDIT" }}
427
+ deleteAction={{ isEnabled: true, authority: "NOTIFICATION_DELETE" }}
428
+ />
429
+ );
430
+ };
431
+
432
+ export default NotificationGrid;