@asaleh37/ui-base 26.2.16 → 27.5.26

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 (176) hide show
  1. package/.env.development +1 -1
  2. package/.github/workflows/publish-npm.yml +49 -49
  3. package/README.md +51 -51
  4. package/__ODockerfile +14 -14
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +1 -1
  8. package/dist/index.mjs.map +1 -1
  9. package/eslint.config.js +29 -29
  10. package/index.html +20 -20
  11. package/package.json +122 -122
  12. package/public/manifest.json +21 -21
  13. package/rollup.config-1748377725725.cjs +50 -50
  14. package/rollup.config.js +45 -45
  15. package/src/components/App.tsx +155 -155
  16. package/src/components/BaseApp.tsx +75 -75
  17. package/src/components/ExampleTrial.tsx +24 -24
  18. package/src/components/administration/admin/ChangePasswordPanel.tsx +128 -128
  19. package/src/components/administration/admin/CustomPersonGrid.tsx +361 -361
  20. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  21. package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -347
  22. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  23. package/src/components/administration/admin/OrganizationGrid.tsx +118 -118
  24. package/src/components/administration/admin/OrganizationMemberGrid.tsx +190 -190
  25. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  26. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  27. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  28. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  29. package/src/components/administration/admin/PersonGrid.tsx +27 -27
  30. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  31. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +117 -117
  32. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  33. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  34. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +75 -75
  35. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  36. package/src/components/administration/dev/AttachmentConfigGrid.tsx +224 -224
  37. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  38. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  39. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  40. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  41. package/src/components/administration/dev/DataQueryGrid.tsx +216 -216
  42. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  43. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  44. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +151 -151
  45. package/src/components/administration/dev/EntityParameterGrid.tsx +322 -322
  46. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  47. package/src/components/administration/dev/MailAttachmentGrid.tsx +172 -172
  48. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  49. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  50. package/src/components/administration/dev/MailRecipientGrid.tsx +170 -170
  51. package/src/components/administration/dev/MailSenderConfigGrid.tsx +486 -486
  52. package/src/components/administration/dev/MailTemplateGrid.tsx +385 -385
  53. package/src/components/administration/dev/NotificationGrid.tsx +435 -435
  54. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  55. package/src/components/administration/dev/ReportGrid.tsx +503 -503
  56. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  57. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  58. package/src/components/administration/dev/WidgetGrid.tsx +380 -380
  59. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  60. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  61. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  62. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +357 -357
  63. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  64. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  65. package/src/components/common/AzureLogin.tsx +222 -222
  66. package/src/components/common/ChangeOrgForm.tsx +85 -85
  67. package/src/components/common/Home.tsx +43 -43
  68. package/src/components/common/LanguageSwitcher.tsx +25 -25
  69. package/src/components/common/LayoutHandlers.tsx +11 -11
  70. package/src/components/common/LoadingMask.tsx +24 -24
  71. package/src/components/common/Login.tsx +268 -268
  72. package/src/components/common/MobileLogin.tsx +229 -229
  73. package/src/components/common/MyNotificationsPanel.tsx +109 -109
  74. package/src/components/common/NoLicenseComponent.tsx +79 -79
  75. package/src/components/common/NotificationItem.tsx +138 -138
  76. package/src/components/index.ts +10 -10
  77. package/src/components/msalConfig.ts +11 -11
  78. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +361 -361
  79. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +297 -297
  80. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  81. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +238 -238
  82. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +108 -108
  83. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +66 -66
  84. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +164 -164
  85. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +70 -70
  86. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +71 -71
  87. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  88. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +56 -56
  89. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +20 -20
  90. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +431 -431
  91. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +197 -197
  92. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +1044 -1044
  93. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  94. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  95. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +251 -251
  96. package/src/components/templates/TransferList.tsx +256 -256
  97. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  98. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  99. package/src/components/templates/attachment/AttachmentImageViewer.tsx +85 -85
  100. package/src/components/templates/attachment/AttachmentPanel.tsx +285 -285
  101. package/src/components/templates/index.ts +35 -35
  102. package/src/components/templates/report/ExcelReportViewer.tsx +71 -71
  103. package/src/components/templates/report/ReportViewer.tsx +261 -261
  104. package/src/components/templates/report/ReportViewerRoute.tsx +9 -9
  105. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  106. package/src/components/templates/visuals/DashboardViewer.tsx +192 -192
  107. package/src/components/templates/visuals/WidgetViewer.tsx +208 -208
  108. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  109. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  110. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  111. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  112. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  113. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  114. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +611 -611
  115. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +145 -145
  116. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  117. package/src/examples/ExampleGrid.tsx +134 -134
  118. package/src/hooks/UseConfirmationWindow.tsx +56 -56
  119. package/src/hooks/UseMobile.tsx +13 -13
  120. package/src/hooks/UseSession.tsx +59 -59
  121. package/src/hooks/UseWindow.tsx +111 -111
  122. package/src/hooks/index.ts +22 -22
  123. package/src/hooks/useApiActions.ts +124 -124
  124. package/src/hooks/useAxios.tsx +340 -340
  125. package/src/hooks/useCommonStore.tsx +29 -29
  126. package/src/hooks/useInterval.tsx +23 -23
  127. package/src/hooks/useLoadingMask.tsx +16 -16
  128. package/src/hooks/useLookupGridColumn.tsx +35 -35
  129. package/src/hooks/useParameterPanel.tsx +171 -171
  130. package/src/index.ts +4 -4
  131. package/src/layout/DrawerHeader.tsx +10 -10
  132. package/src/layout/Layout.tsx +102 -102
  133. package/src/layout/MainContent.tsx +115 -115
  134. package/src/layout/MobileDrawer.tsx +103 -103
  135. package/src/layout/NavigationTree.tsx +360 -360
  136. package/src/layout/NotificationButton.tsx +207 -207
  137. package/src/layout/RouteWrapper.tsx +63 -63
  138. package/src/layout/SideBar.tsx +85 -85
  139. package/src/layout/TopBar.tsx +317 -317
  140. package/src/locales/arabic/adminLocalsAr.json +94 -94
  141. package/src/locales/arabic/common.json +44 -44
  142. package/src/locales/arabic/devLocalsAr.json +317 -317
  143. package/src/locales/arabic/index.ts +9 -9
  144. package/src/locales/english/adminLocalsEn.json +97 -97
  145. package/src/locales/english/common.json +43 -43
  146. package/src/locales/english/devLocalsEn.json +318 -318
  147. package/src/locales/english/index.ts +9 -9
  148. package/src/locales/i18n.ts +8 -8
  149. package/src/locales/index.ts +9 -9
  150. package/src/main.tsx +41 -41
  151. package/src/navigationItems/Administration/adminNavigationItems.tsx +231 -231
  152. package/src/navigationItems/Administration/index.tsx +16 -16
  153. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  154. package/src/navigationItems/common/index.tsx +7 -7
  155. package/src/navigationItems/index.tsx +35 -35
  156. package/src/redux/features/administration/AdministrationStoresMetaData.ts +164 -164
  157. package/src/redux/features/common/AppInfoSlice.ts +95 -95
  158. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  159. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  160. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  161. package/src/redux/features/common/SideBarSlice.ts +27 -27
  162. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  163. package/src/redux/store.ts +29 -29
  164. package/src/routes/administration/adminRoutes.tsx +99 -99
  165. package/src/routes/administration/devRoutes.tsx +129 -129
  166. package/src/routes/administration/index.ts +10 -10
  167. package/src/routes/index.ts +5 -5
  168. package/src/routes/types/index.ts +6 -6
  169. package/src/styles/index.css +19 -19
  170. package/src/types/index.ts +8 -8
  171. package/src/util/AppUtils.ts +73 -73
  172. package/src/util/constants.ts +6 -6
  173. package/src/util/index.ts +5 -5
  174. package/tsconfig.json +135 -135
  175. package/vite.config.ts +24 -24
  176. package/package-lock.json/342/200/216 +0 -9040
@@ -1,503 +1,503 @@
1
- import { useState } from "react";
2
- import TemplateGrid from "../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid";
3
- import { useApiActions, useWindow } from "../../../hooks";
4
- import {
5
- FormElementProps,
6
- FormValueChangeCallBk,
7
- } from "../../templates/DataEntryTemplates/DataEntryTypes";
8
- import { useTranslation } from "react-i18next";
9
- import { UseFormReturn } from "react-hook-form";
10
- import { useSelector } from "react-redux";
11
- import { toast } from "react-toastify";
12
- import ReportParameterGrid from "./ReportParameterGrid";
13
- import ReportViewer from "../../templates/report/ReportViewer";
14
- import { storageTypes } from "./AttachmentConfigGrid";
15
- import { ContinuousColorLegend } from "@mui/x-charts";
16
-
17
- export type ReportType = "Jasper" | "Excel" | "Blueprint";
18
-
19
- const adjustFormAfterValueChange: FormValueChangeCallBk = (
20
- formValues,
21
- formActions,
22
- formManager,
23
- fieldName,
24
- newValue
25
- ) => {
26
- if (fieldName) {
27
- if (fieldName === "useSysDatasource" && newValue == true) {
28
- formActions.hideField("datasourceConId");
29
- formManager.setValue("datasourceConId", null);
30
- } else {
31
- formActions.showField("datasourceConId");
32
- }
33
-
34
- if (fieldName === "reportType") {
35
- if (newValue === "Blueprint") {
36
- formActions.hideField("storageType");
37
- formActions.hideField("includeAppCodeInPath");
38
- formActions.hideField("useSysDatasource");
39
- formActions.hideField("datasourceConId");
40
- formActions.hideField("reportExcelDataQueryId");
41
- formActions.hideField("reportJasperName");
42
- formActions.showField("reportBluePrintId");
43
- } else if (newValue === "Jasper") {
44
- formActions.showField("storageType");
45
- formActions.showField("includeAppCodeInPath");
46
- formActions.showField("useSysDatasource");
47
- formActions.showField("datasourceConId");
48
- formActions.hideField("reportExcelDataQueryId");
49
- formActions.showField("reportJasperName");
50
- formActions.hideField("reportBluePrintId");
51
- } else if (newValue === "Excel") {
52
- formActions.hideField("storageType");
53
- formActions.hideField("includeAppCodeInPath");
54
- formActions.hideField("useSysDatasource");
55
- formActions.hideField("datasourceConId");
56
- formActions.showField("reportExcelDataQueryId");
57
- formActions.hideField("reportJasperName");
58
- formActions.hideField("reportBluePrintId");
59
- } else {
60
- formActions.hideField("storageType");
61
- formActions.hideField("includeAppCodeInPath");
62
- formActions.hideField("useSysDatasource");
63
- formActions.hideField("datasourceConId");
64
- formActions.hideField("reportExcelDataQueryId");
65
- formActions.hideField("reportJasperName");
66
- formActions.hideField("reportBluePrintId");
67
- }
68
- }
69
- } else {
70
- console.log("FORM VALUES", formValues);
71
- if (formValues?.useSysCon) {
72
- formActions.hideField("datasourceConId");
73
- } else {
74
- formActions.showField("datasourceConId");
75
- }
76
- if (formValues?.reportType) {
77
- if (formValues?.reportType === "Blueprint") {
78
- formActions.hideField("storageType");
79
- formActions.hideField("includeAppCodeInPath");
80
- formActions.hideField("useSysDatasource");
81
- formActions.hideField("datasourceConId");
82
- formActions.hideField("reportExcelDataQueryId");
83
- formActions.hideField("reportJasperName");
84
- formActions.showField("reportBluePrintId");
85
- } else if (formValues?.reportType === "Jasper") {
86
- formActions.showField("storageType");
87
- formActions.showField("includeAppCodeInPath");
88
- formActions.showField("useSysDatasource");
89
- formActions.showField("datasourceConId");
90
- formActions.hideField("reportExcelDataQueryId");
91
- formActions.showField("reportJasperName");
92
- formActions.hideField("reportBluePrintId");
93
- } else if (formValues?.reportType === "Excel") {
94
- formActions.hideField("storageType");
95
- formActions.hideField("includeAppCodeInPath");
96
- formActions.hideField("useSysDatasource");
97
- formActions.hideField("datasourceConId");
98
- formActions.showField("reportExcelDataQueryId");
99
- formActions.hideField("reportJasperName");
100
- formActions.hideField("reportBluePrintId");
101
- }
102
- } else {
103
- formActions.hideField("storageType");
104
- formActions.hideField("includeAppCodeInPath");
105
- formActions.hideField("useSysDatasource");
106
- formActions.hideField("datasourceConId");
107
- formActions.hideField("reportExcelDataQueryId");
108
- formActions.hideField("reportJasperName");
109
- formActions.hideField("reportBluePrintId");
110
- }
111
- }
112
- };
113
-
114
- const ReportGrid: React.FC = () => {
115
- const { t } = useTranslation();
116
- const [selectedRecord, setSelectedRecord] = useState(null);
117
- const {
118
- Window: ReporTrialWindow,
119
- setWindowState: setReportTrialWindowState,
120
- } = useWindow({
121
- windowTitle: "Report View",
122
- windowIcon: "eye",
123
- width: "80%",
124
- });
125
- const {
126
- Window: ReportParameterWindow,
127
- setWindowState: setReportParameterWindowState,
128
- } = useWindow({
129
- windowTitle: "Report Parameters",
130
- windowIcon: "p",
131
- width: "80%",
132
- });
133
- const [data, setData] = useState([]);
134
- const SystemDataSources = useSelector(
135
- (state: any) => state.commonStores.stores.SystemDataSources.data
136
- );
137
- const SystemDataQueries = useSelector(
138
- (state: any) => state.commonStores.stores.SystemDataQueries.data
139
- );
140
- const SystemBluePrints = useSelector(
141
- (state: any) => state.commonStores.stores.SystemBluePrints.data
142
- );
143
- const apiActions = useApiActions({
144
- findAll: "api/v1/dev/report/all",
145
- deleteById: "api/v1/dev/report",
146
- save: "api/v1/dev/report",
147
- findById: "api/v1/dev/report",
148
- setData: setData,
149
- });
150
-
151
- const formElements: Array<FormElementProps> = [
152
- {
153
- type: "field",
154
- mode: "props",
155
- props: {
156
- fieldLabel: "id",
157
- fieldName: "id",
158
- fieldType: "number",
159
- hidden: true,
160
- gridProps: {
161
- hidden: true,
162
- },
163
- },
164
- },
165
-
166
- {
167
- type: "field",
168
- mode: "props",
169
- props: {
170
- fieldLabel: "createTime",
171
- fieldName: "createTime",
172
- fieldType: "datetime",
173
- hidden: true,
174
- gridProps: {
175
- hidden: true,
176
- },
177
- },
178
- },
179
- {
180
- type: "field",
181
- mode: "props",
182
- props: {
183
- fieldLabel: "createdBy",
184
- fieldName: "createdBy",
185
- fieldType: "text",
186
- hidden: true,
187
- gridProps: {
188
- hidden: true,
189
- },
190
- },
191
- },
192
-
193
- {
194
- type: "field",
195
- mode: "props",
196
- props: {
197
- fieldLabel: "lastUpdateBy",
198
- fieldName: "lastUpdateBy",
199
- fieldType: "text",
200
- hidden: true,
201
- gridProps: {
202
- hidden: true,
203
- },
204
- },
205
- },
206
- {
207
- type: "field",
208
- mode: "props",
209
- props: {
210
- fieldLabel: "lastUpdateTime",
211
- fieldName: "lastUpdateTime",
212
- fieldType: "datetime",
213
- hidden: true,
214
- gridProps: {
215
- hidden: true,
216
- },
217
- },
218
- },
219
- {
220
- type: "field",
221
- mode: "props",
222
- props: {
223
- fieldLabel: "REPORT_REPORT_TYPE",
224
- fieldName: "reportType",
225
- options: [
226
- { value: "Excel" },
227
- { value: "Jasper" },
228
- { value: "Blueprint" },
229
- ],
230
- optionDisplayField: "value",
231
- optionValueField: "value",
232
- required: true,
233
- fieldType: "combobox",
234
- comboboxValueDataType: "string",
235
- },
236
- },
237
- {
238
- type: "field",
239
- mode: "props",
240
- props: {
241
- fieldLabel: "REPORT_REPORT_CODE",
242
- fieldName: "reportCode",
243
- required: true,
244
- fieldType: "text",
245
- },
246
- },
247
- {
248
- type: "field",
249
- mode: "props",
250
- props: {
251
- fieldLabel: "REPORT_REPORT_NAME",
252
- fieldName: "reportName",
253
- required: true,
254
- fieldType: "text",
255
- },
256
- },
257
- {
258
- type: "field",
259
- mode: "props",
260
- props: {
261
- fieldLabel: "ATTACHMENT_CONFIG_STORAGE_TYPE",
262
- fieldName: "storageType",
263
- required: false,
264
- hidden: true,
265
- gridProps: {
266
- hidden: true,
267
- },
268
- comboboxValueDataType: "string",
269
- fieldType: "combobox",
270
- options: storageTypes,
271
- optionDisplayField: "value",
272
- optionValueField: "value",
273
- },
274
- },
275
- {
276
- type: "field",
277
- mode: "props",
278
- props: {
279
- fieldLabel: "REPORT_REPORT_CATEGORY",
280
- fieldName: "reportCategory",
281
- required: false,
282
- fieldType: "text",
283
- },
284
- },
285
- {
286
- type: "field",
287
- mode: "props",
288
- props: {
289
- fieldLabel: "Authority Code",
290
- fieldName: "reportAuthorityCode",
291
- required: false,
292
- fieldType: "text",
293
- },
294
- },
295
- {
296
- type: "field",
297
- mode: "props",
298
- props: {
299
- fieldLabel: "REPORT_REPORT_EXPORT_NAME",
300
- fieldName: "reportExportName",
301
- required: false,
302
- fieldType: "text",
303
- },
304
- },
305
- {
306
- type: "field",
307
- mode: "props",
308
- props: {
309
- fieldLabel: "REPORT_USE_SYS_DATASOURCE",
310
- fieldName: "useSysDatasource",
311
- hidden: true,
312
- gridProps: {
313
- hidden: true,
314
- },
315
- required: false,
316
- fieldType: "checkbox",
317
- },
318
- },
319
- {
320
- type: "field",
321
- mode: "props",
322
- props: {
323
- fieldLabel: "REPORT_DATASOURCE_CON_ID",
324
- fieldName: "datasourceConId",
325
- hidden: true,
326
- gridProps: {
327
- hidden: true,
328
- },
329
- required: false,
330
- fieldType: "combobox",
331
- options: SystemDataSources,
332
- optionValueField: "id",
333
- optionDisplayField: "connectionName",
334
- },
335
- },
336
-
337
- {
338
- type: "field",
339
- mode: "props",
340
- props: {
341
- fieldLabel: "REPORT_REPORT_BLUE_PRINT_ID",
342
- fieldName: "reportBluePrintId",
343
- hidden: true,
344
- gridProps: {
345
- hidden: true,
346
- },
347
- required: false,
348
- fieldType: "combobox",
349
- options: SystemBluePrints,
350
- optionDisplayField: "bluePrintCode",
351
- optionValueField: "id",
352
- },
353
- },
354
-
355
- {
356
- type: "field",
357
- mode: "props",
358
- props: {
359
- fieldLabel: "REPORT_REPORT_EXCEL_DATA_QUERY_ID",
360
- fieldName: "reportExcelDataQueryId",
361
- hidden: true,
362
- required: false,
363
- fieldType: "combobox",
364
- options: SystemDataQueries,
365
- optionValueField: "id",
366
- optionDisplayField: "queryName",
367
- },
368
- },
369
- {
370
- type: "field",
371
- mode: "props",
372
- props: {
373
- fieldLabel: "REPORT_REPORT_JASPER_NAME",
374
- fieldName: "reportJasperName",
375
- hidden: true,
376
- gridProps: {
377
- hidden: true,
378
- },
379
- required: false,
380
- fieldType: "text",
381
- },
382
- },
383
- // {
384
- // type: "field",
385
- // mode: "props",
386
- // props: {
387
- // fieldLabel: "Include App Code in attachment path",
388
- // fieldName: "includeAppCodeInPath",
389
- // required: false,
390
- // fieldType: "checkbox",
391
- // },
392
- // },
393
- {
394
- type: "field",
395
- mode: "props",
396
- props: {
397
- fieldLabel: "Active",
398
- fieldName: "isActive",
399
- fieldType: "checkbox",
400
- },
401
- },
402
- ];
403
-
404
- return (
405
- <>
406
- <ReporTrialWindow>
407
- <ReportViewer
408
- reportCode={selectedRecord?.reportCode}
409
- resultMode="App"
410
- />
411
- </ReporTrialWindow>
412
- <ReportParameterWindow>
413
- <ReportParameterGrid selectedRecord={selectedRecord} />
414
- </ReportParameterWindow>
415
- <TemplateGrid
416
- attachment={{
417
- attachmentCode: "JASPER_REPORTS",
418
- enableAttachFn(record) {
419
- if (record?.reportType === "Jasper") {
420
- return true;
421
- } else {
422
- return false;
423
- }
424
- },
425
- }}
426
- apiActions={apiActions}
427
- data={data}
428
- setData={setData}
429
- editMode={{
430
- editMode: "modal",
431
- specs: {
432
- modalTitle: "Report",
433
- modalIcon: "file",
434
- modalWidth: 300,
435
- },
436
- }}
437
- rowActions={[
438
- {
439
- icon: "p",
440
- label: "Report Parameters",
441
- isActionVisibleForRecord: (record) => {
442
- return record.reportType === "Jasper";
443
- },
444
- actionFn: async (data, recordIdsToProcessActionOn) => {
445
- setSelectedRecord(data);
446
- setReportParameterWindowState(true);
447
- },
448
- },
449
- {
450
- icon: "eye",
451
- label: "View Report",
452
- actionFn: async (data, recordIdsToProcessActionOn) => {
453
- setSelectedRecord(data);
454
- setReportTrialWindowState(true);
455
- },
456
- },
457
- ]}
458
- formProps={{ formValuesChangeCallBk: adjustFormAfterValueChange }}
459
- formElements={formElements}
460
- keyColumnName={"id"}
461
- gridTitle={t("REPORT_PLURAL")}
462
- girdIcon="table-cells"
463
- editAction={{
464
- isEnabled: true,
465
- authority: "REPORT_EDIT",
466
- preActionValidation: (record) => {
467
- if (
468
- record?.reportType === "Jasper" &&
469
- record?.useSysDatasource === false &&
470
- !record?.datasourceConId
471
- ) {
472
- toast.error("You must choose the datasource");
473
- return false;
474
- }
475
- if (record?.reportType === "Jasper" && !record?.reportJasperName) {
476
- toast.error("You must enter the jasper report name");
477
- return false;
478
- }
479
-
480
- if (
481
- record?.reportType === "Blueprint" &&
482
- !record?.reportBluePrintId
483
- ) {
484
- toast.error("You must choose the report blueprint");
485
- return false;
486
- }
487
- if (
488
- record?.reportType === "Excel" &&
489
- !record?.reportExcelDataQueryId
490
- ) {
491
- toast.error("You must choose the report query");
492
- return false;
493
- }
494
- return true;
495
- },
496
- }}
497
- deleteAction={{ isEnabled: true, authority: "REPORT_DELETE" }}
498
- />
499
- </>
500
- );
501
- };
502
-
503
- export default ReportGrid;
1
+ import { useState } from "react";
2
+ import TemplateGrid from "../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid";
3
+ import { useApiActions, useWindow } from "../../../hooks";
4
+ import {
5
+ FormElementProps,
6
+ FormValueChangeCallBk,
7
+ } from "../../templates/DataEntryTemplates/DataEntryTypes";
8
+ import { useTranslation } from "react-i18next";
9
+ import { UseFormReturn } from "react-hook-form";
10
+ import { useSelector } from "react-redux";
11
+ import { toast } from "react-toastify";
12
+ import ReportParameterGrid from "./ReportParameterGrid";
13
+ import ReportViewer from "../../templates/report/ReportViewer";
14
+ import { storageTypes } from "./AttachmentConfigGrid";
15
+ import { ContinuousColorLegend } from "@mui/x-charts";
16
+
17
+ export type ReportType = "Jasper" | "Excel" | "Blueprint";
18
+
19
+ const adjustFormAfterValueChange: FormValueChangeCallBk = (
20
+ formValues,
21
+ formActions,
22
+ formManager,
23
+ fieldName,
24
+ newValue
25
+ ) => {
26
+ if (fieldName) {
27
+ if (fieldName === "useSysDatasource" && newValue == true) {
28
+ formActions.hideField("datasourceConId");
29
+ formManager.setValue("datasourceConId", null);
30
+ } else {
31
+ formActions.showField("datasourceConId");
32
+ }
33
+
34
+ if (fieldName === "reportType") {
35
+ if (newValue === "Blueprint") {
36
+ formActions.hideField("storageType");
37
+ formActions.hideField("includeAppCodeInPath");
38
+ formActions.hideField("useSysDatasource");
39
+ formActions.hideField("datasourceConId");
40
+ formActions.hideField("reportExcelDataQueryId");
41
+ formActions.hideField("reportJasperName");
42
+ formActions.showField("reportBluePrintId");
43
+ } else if (newValue === "Jasper") {
44
+ formActions.showField("storageType");
45
+ formActions.showField("includeAppCodeInPath");
46
+ formActions.showField("useSysDatasource");
47
+ formActions.showField("datasourceConId");
48
+ formActions.hideField("reportExcelDataQueryId");
49
+ formActions.showField("reportJasperName");
50
+ formActions.hideField("reportBluePrintId");
51
+ } else if (newValue === "Excel") {
52
+ formActions.hideField("storageType");
53
+ formActions.hideField("includeAppCodeInPath");
54
+ formActions.hideField("useSysDatasource");
55
+ formActions.hideField("datasourceConId");
56
+ formActions.showField("reportExcelDataQueryId");
57
+ formActions.hideField("reportJasperName");
58
+ formActions.hideField("reportBluePrintId");
59
+ } else {
60
+ formActions.hideField("storageType");
61
+ formActions.hideField("includeAppCodeInPath");
62
+ formActions.hideField("useSysDatasource");
63
+ formActions.hideField("datasourceConId");
64
+ formActions.hideField("reportExcelDataQueryId");
65
+ formActions.hideField("reportJasperName");
66
+ formActions.hideField("reportBluePrintId");
67
+ }
68
+ }
69
+ } else {
70
+ console.log("FORM VALUES", formValues);
71
+ if (formValues?.useSysCon) {
72
+ formActions.hideField("datasourceConId");
73
+ } else {
74
+ formActions.showField("datasourceConId");
75
+ }
76
+ if (formValues?.reportType) {
77
+ if (formValues?.reportType === "Blueprint") {
78
+ formActions.hideField("storageType");
79
+ formActions.hideField("includeAppCodeInPath");
80
+ formActions.hideField("useSysDatasource");
81
+ formActions.hideField("datasourceConId");
82
+ formActions.hideField("reportExcelDataQueryId");
83
+ formActions.hideField("reportJasperName");
84
+ formActions.showField("reportBluePrintId");
85
+ } else if (formValues?.reportType === "Jasper") {
86
+ formActions.showField("storageType");
87
+ formActions.showField("includeAppCodeInPath");
88
+ formActions.showField("useSysDatasource");
89
+ formActions.showField("datasourceConId");
90
+ formActions.hideField("reportExcelDataQueryId");
91
+ formActions.showField("reportJasperName");
92
+ formActions.hideField("reportBluePrintId");
93
+ } else if (formValues?.reportType === "Excel") {
94
+ formActions.hideField("storageType");
95
+ formActions.hideField("includeAppCodeInPath");
96
+ formActions.hideField("useSysDatasource");
97
+ formActions.hideField("datasourceConId");
98
+ formActions.showField("reportExcelDataQueryId");
99
+ formActions.hideField("reportJasperName");
100
+ formActions.hideField("reportBluePrintId");
101
+ }
102
+ } else {
103
+ formActions.hideField("storageType");
104
+ formActions.hideField("includeAppCodeInPath");
105
+ formActions.hideField("useSysDatasource");
106
+ formActions.hideField("datasourceConId");
107
+ formActions.hideField("reportExcelDataQueryId");
108
+ formActions.hideField("reportJasperName");
109
+ formActions.hideField("reportBluePrintId");
110
+ }
111
+ }
112
+ };
113
+
114
+ const ReportGrid: React.FC = () => {
115
+ const { t } = useTranslation();
116
+ const [selectedRecord, setSelectedRecord] = useState(null);
117
+ const {
118
+ Window: ReporTrialWindow,
119
+ setWindowState: setReportTrialWindowState,
120
+ } = useWindow({
121
+ windowTitle: "Report View",
122
+ windowIcon: "eye",
123
+ width: "80%",
124
+ });
125
+ const {
126
+ Window: ReportParameterWindow,
127
+ setWindowState: setReportParameterWindowState,
128
+ } = useWindow({
129
+ windowTitle: "Report Parameters",
130
+ windowIcon: "p",
131
+ width: "80%",
132
+ });
133
+ const [data, setData] = useState([]);
134
+ const SystemDataSources = useSelector(
135
+ (state: any) => state.commonStores.stores.SystemDataSources.data
136
+ );
137
+ const SystemDataQueries = useSelector(
138
+ (state: any) => state.commonStores.stores.SystemDataQueries.data
139
+ );
140
+ const SystemBluePrints = useSelector(
141
+ (state: any) => state.commonStores.stores.SystemBluePrints.data
142
+ );
143
+ const apiActions = useApiActions({
144
+ findAll: "api/v1/dev/report/all",
145
+ deleteById: "api/v1/dev/report",
146
+ save: "api/v1/dev/report",
147
+ findById: "api/v1/dev/report",
148
+ setData: setData,
149
+ });
150
+
151
+ const formElements: Array<FormElementProps> = [
152
+ {
153
+ type: "field",
154
+ mode: "props",
155
+ props: {
156
+ fieldLabel: "id",
157
+ fieldName: "id",
158
+ fieldType: "number",
159
+ hidden: true,
160
+ gridProps: {
161
+ hidden: true,
162
+ },
163
+ },
164
+ },
165
+
166
+ {
167
+ type: "field",
168
+ mode: "props",
169
+ props: {
170
+ fieldLabel: "createTime",
171
+ fieldName: "createTime",
172
+ fieldType: "datetime",
173
+ hidden: true,
174
+ gridProps: {
175
+ hidden: true,
176
+ },
177
+ },
178
+ },
179
+ {
180
+ type: "field",
181
+ mode: "props",
182
+ props: {
183
+ fieldLabel: "createdBy",
184
+ fieldName: "createdBy",
185
+ fieldType: "text",
186
+ hidden: true,
187
+ gridProps: {
188
+ hidden: true,
189
+ },
190
+ },
191
+ },
192
+
193
+ {
194
+ type: "field",
195
+ mode: "props",
196
+ props: {
197
+ fieldLabel: "lastUpdateBy",
198
+ fieldName: "lastUpdateBy",
199
+ fieldType: "text",
200
+ hidden: true,
201
+ gridProps: {
202
+ hidden: true,
203
+ },
204
+ },
205
+ },
206
+ {
207
+ type: "field",
208
+ mode: "props",
209
+ props: {
210
+ fieldLabel: "lastUpdateTime",
211
+ fieldName: "lastUpdateTime",
212
+ fieldType: "datetime",
213
+ hidden: true,
214
+ gridProps: {
215
+ hidden: true,
216
+ },
217
+ },
218
+ },
219
+ {
220
+ type: "field",
221
+ mode: "props",
222
+ props: {
223
+ fieldLabel: "REPORT_REPORT_TYPE",
224
+ fieldName: "reportType",
225
+ options: [
226
+ { value: "Excel" },
227
+ { value: "Jasper" },
228
+ { value: "Blueprint" },
229
+ ],
230
+ optionDisplayField: "value",
231
+ optionValueField: "value",
232
+ required: true,
233
+ fieldType: "combobox",
234
+ comboboxValueDataType: "string",
235
+ },
236
+ },
237
+ {
238
+ type: "field",
239
+ mode: "props",
240
+ props: {
241
+ fieldLabel: "REPORT_REPORT_CODE",
242
+ fieldName: "reportCode",
243
+ required: true,
244
+ fieldType: "text",
245
+ },
246
+ },
247
+ {
248
+ type: "field",
249
+ mode: "props",
250
+ props: {
251
+ fieldLabel: "REPORT_REPORT_NAME",
252
+ fieldName: "reportName",
253
+ required: true,
254
+ fieldType: "text",
255
+ },
256
+ },
257
+ {
258
+ type: "field",
259
+ mode: "props",
260
+ props: {
261
+ fieldLabel: "ATTACHMENT_CONFIG_STORAGE_TYPE",
262
+ fieldName: "storageType",
263
+ required: false,
264
+ hidden: true,
265
+ gridProps: {
266
+ hidden: true,
267
+ },
268
+ comboboxValueDataType: "string",
269
+ fieldType: "combobox",
270
+ options: storageTypes,
271
+ optionDisplayField: "value",
272
+ optionValueField: "value",
273
+ },
274
+ },
275
+ {
276
+ type: "field",
277
+ mode: "props",
278
+ props: {
279
+ fieldLabel: "REPORT_REPORT_CATEGORY",
280
+ fieldName: "reportCategory",
281
+ required: false,
282
+ fieldType: "text",
283
+ },
284
+ },
285
+ {
286
+ type: "field",
287
+ mode: "props",
288
+ props: {
289
+ fieldLabel: "Authority Code",
290
+ fieldName: "reportAuthorityCode",
291
+ required: false,
292
+ fieldType: "text",
293
+ },
294
+ },
295
+ {
296
+ type: "field",
297
+ mode: "props",
298
+ props: {
299
+ fieldLabel: "REPORT_REPORT_EXPORT_NAME",
300
+ fieldName: "reportExportName",
301
+ required: false,
302
+ fieldType: "text",
303
+ },
304
+ },
305
+ {
306
+ type: "field",
307
+ mode: "props",
308
+ props: {
309
+ fieldLabel: "REPORT_USE_SYS_DATASOURCE",
310
+ fieldName: "useSysDatasource",
311
+ hidden: true,
312
+ gridProps: {
313
+ hidden: true,
314
+ },
315
+ required: false,
316
+ fieldType: "checkbox",
317
+ },
318
+ },
319
+ {
320
+ type: "field",
321
+ mode: "props",
322
+ props: {
323
+ fieldLabel: "REPORT_DATASOURCE_CON_ID",
324
+ fieldName: "datasourceConId",
325
+ hidden: true,
326
+ gridProps: {
327
+ hidden: true,
328
+ },
329
+ required: false,
330
+ fieldType: "combobox",
331
+ options: SystemDataSources,
332
+ optionValueField: "id",
333
+ optionDisplayField: "connectionName",
334
+ },
335
+ },
336
+
337
+ {
338
+ type: "field",
339
+ mode: "props",
340
+ props: {
341
+ fieldLabel: "REPORT_REPORT_BLUE_PRINT_ID",
342
+ fieldName: "reportBluePrintId",
343
+ hidden: true,
344
+ gridProps: {
345
+ hidden: true,
346
+ },
347
+ required: false,
348
+ fieldType: "combobox",
349
+ options: SystemBluePrints,
350
+ optionDisplayField: "bluePrintCode",
351
+ optionValueField: "id",
352
+ },
353
+ },
354
+
355
+ {
356
+ type: "field",
357
+ mode: "props",
358
+ props: {
359
+ fieldLabel: "REPORT_REPORT_EXCEL_DATA_QUERY_ID",
360
+ fieldName: "reportExcelDataQueryId",
361
+ hidden: true,
362
+ required: false,
363
+ fieldType: "combobox",
364
+ options: SystemDataQueries,
365
+ optionValueField: "id",
366
+ optionDisplayField: "queryName",
367
+ },
368
+ },
369
+ {
370
+ type: "field",
371
+ mode: "props",
372
+ props: {
373
+ fieldLabel: "REPORT_REPORT_JASPER_NAME",
374
+ fieldName: "reportJasperName",
375
+ hidden: true,
376
+ gridProps: {
377
+ hidden: true,
378
+ },
379
+ required: false,
380
+ fieldType: "text",
381
+ },
382
+ },
383
+ // {
384
+ // type: "field",
385
+ // mode: "props",
386
+ // props: {
387
+ // fieldLabel: "Include App Code in attachment path",
388
+ // fieldName: "includeAppCodeInPath",
389
+ // required: false,
390
+ // fieldType: "checkbox",
391
+ // },
392
+ // },
393
+ {
394
+ type: "field",
395
+ mode: "props",
396
+ props: {
397
+ fieldLabel: "Active",
398
+ fieldName: "isActive",
399
+ fieldType: "checkbox",
400
+ },
401
+ },
402
+ ];
403
+
404
+ return (
405
+ <>
406
+ <ReporTrialWindow>
407
+ <ReportViewer
408
+ reportCode={selectedRecord?.reportCode}
409
+ resultMode="App"
410
+ />
411
+ </ReporTrialWindow>
412
+ <ReportParameterWindow>
413
+ <ReportParameterGrid selectedRecord={selectedRecord} />
414
+ </ReportParameterWindow>
415
+ <TemplateGrid
416
+ attachment={{
417
+ attachmentCode: "JASPER_REPORTS",
418
+ enableAttachFn(record) {
419
+ if (record?.reportType === "Jasper") {
420
+ return true;
421
+ } else {
422
+ return false;
423
+ }
424
+ },
425
+ }}
426
+ apiActions={apiActions}
427
+ data={data}
428
+ setData={setData}
429
+ editMode={{
430
+ editMode: "modal",
431
+ specs: {
432
+ modalTitle: "Report",
433
+ modalIcon: "file",
434
+ modalWidth: 300,
435
+ },
436
+ }}
437
+ rowActions={[
438
+ {
439
+ icon: "p",
440
+ label: "Report Parameters",
441
+ isActionVisibleForRecord: (record) => {
442
+ return record.reportType === "Jasper";
443
+ },
444
+ actionFn: async (data, recordIdsToProcessActionOn) => {
445
+ setSelectedRecord(data);
446
+ setReportParameterWindowState(true);
447
+ },
448
+ },
449
+ {
450
+ icon: "eye",
451
+ label: "View Report",
452
+ actionFn: async (data, recordIdsToProcessActionOn) => {
453
+ setSelectedRecord(data);
454
+ setReportTrialWindowState(true);
455
+ },
456
+ },
457
+ ]}
458
+ formProps={{ formValuesChangeCallBk: adjustFormAfterValueChange }}
459
+ formElements={formElements}
460
+ keyColumnName={"id"}
461
+ gridTitle={t("REPORT_PLURAL")}
462
+ girdIcon="table-cells"
463
+ editAction={{
464
+ isEnabled: true,
465
+ authority: "REPORT_EDIT",
466
+ preActionValidation: (record) => {
467
+ if (
468
+ record?.reportType === "Jasper" &&
469
+ record?.useSysDatasource === false &&
470
+ !record?.datasourceConId
471
+ ) {
472
+ toast.error("You must choose the datasource");
473
+ return false;
474
+ }
475
+ if (record?.reportType === "Jasper" && !record?.reportJasperName) {
476
+ toast.error("You must enter the jasper report name");
477
+ return false;
478
+ }
479
+
480
+ if (
481
+ record?.reportType === "Blueprint" &&
482
+ !record?.reportBluePrintId
483
+ ) {
484
+ toast.error("You must choose the report blueprint");
485
+ return false;
486
+ }
487
+ if (
488
+ record?.reportType === "Excel" &&
489
+ !record?.reportExcelDataQueryId
490
+ ) {
491
+ toast.error("You must choose the report query");
492
+ return false;
493
+ }
494
+ return true;
495
+ },
496
+ }}
497
+ deleteAction={{ isEnabled: true, authority: "REPORT_DELETE" }}
498
+ />
499
+ </>
500
+ );
501
+ };
502
+
503
+ export default ReportGrid;