udp-react-enterprise-component-library 25.18.1-beta.42 → 25.18.1-beta.44
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/{Shell-CAPPm490.js → Shell-DKZFbV05.js} +7 -5
- package/dist/Shell-DKZFbV05.js.map +1 -0
- package/dist/{SiteHeader-wIcmMhx9.js → SiteHeader-DMstxPs3.js} +3 -3
- package/dist/{SiteHeader-wIcmMhx9.js.map → SiteHeader-DMstxPs3.js.map} +1 -1
- package/dist/{UdpFormsSubmissionGrid-BTg1Ktrn.js → UdpFormsSubmissionGrid-PWsnFyYB.js} +238 -63
- package/dist/UdpFormsSubmissionGrid-PWsnFyYB.js.map +1 -0
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -0
- package/dist/shell/index.js +2 -2
- package/dist/shell/ui/index.js +1 -1
- package/dist/types/src/index.d.ts +3 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/kpi/UdpKpiCard.d.ts +4 -0
- package/dist/types/src/kpi/UdpKpiCard.d.ts.map +1 -0
- package/dist/types/src/kpi/UdpKpiCards.d.ts +4 -0
- package/dist/types/src/kpi/UdpKpiCards.d.ts.map +1 -0
- package/dist/types/src/kpi/type.d.ts +36 -0
- package/dist/types/src/kpi/type.d.ts.map +1 -0
- package/dist/types/src/shell/Shell.d.ts.map +1 -1
- package/dist/types/src/shell/ui/SiteHeader.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
- package/export-map.json +4 -2
- package/package.json +2 -2
- package/dist/Shell-CAPPm490.js.map +0 -1
- package/dist/UdpFormsSubmissionGrid-BTg1Ktrn.js.map +0 -1
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { t as ConfigService
|
|
1
|
+
import { t as ConfigService } from "./configService-C4uoG3wj.js";
|
|
2
2
|
import { n as UdpPageEnums } from "./pageEnums-DHCYa0ey.js";
|
|
3
3
|
import { t as useUser } from "./useUser-wpHGo6jU.js";
|
|
4
4
|
import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.js";
|
|
5
|
+
import { o as SqlFilterOperators } from "./SearchUtilities-B1TCyppF.js";
|
|
6
|
+
import { n as SideSheet } from "./SideSheet-CDXVa_Kr.js";
|
|
5
7
|
import { t as PageLoading } from "./PageLoading-GD6E2uMU.js";
|
|
6
8
|
import { t as useTenant } from "./useTenant-CGaZEBEJ.js";
|
|
7
9
|
import { t as SearchMethodUdpGrid } from "./SearchMethodUdpGrid-CWYZUOx-.js";
|
|
8
10
|
import { t as CustomMenuPage_default } from "./menuPage-B9NwQJVt.js";
|
|
9
11
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
12
|
+
import { TextField } from "@material-ui/core";
|
|
10
13
|
import { useSnackbar } from "notistack";
|
|
11
|
-
import { useHistory } from "react-router-dom";
|
|
14
|
+
import { useHistory, useLocation } from "react-router-dom";
|
|
12
15
|
import { useTranslation } from "react-i18next";
|
|
13
|
-
import {
|
|
16
|
+
import { Autocomplete } from "@material-ui/lab";
|
|
14
17
|
|
|
15
18
|
//#region src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.jsx
|
|
16
19
|
const UdpFormsSubmissionStatusEnum = Object.freeze({
|
|
@@ -30,20 +33,151 @@ const dateFormatter = (dateString) => {
|
|
|
30
33
|
hour12: true
|
|
31
34
|
});
|
|
32
35
|
};
|
|
36
|
+
const filterConfigByUrlField = {
|
|
37
|
+
form_name: {
|
|
38
|
+
agGridField: "form_Name",
|
|
39
|
+
filterType: "text"
|
|
40
|
+
},
|
|
41
|
+
formsubmission_formversion: {
|
|
42
|
+
agGridField: "formSubmission_FormVersion",
|
|
43
|
+
filterType: "number"
|
|
44
|
+
},
|
|
45
|
+
form_description: {
|
|
46
|
+
agGridField: "form_Description",
|
|
47
|
+
filterType: "text"
|
|
48
|
+
},
|
|
49
|
+
formsubmission_userdisplayname: {
|
|
50
|
+
agGridField: "formSubmission_UserDisplayName",
|
|
51
|
+
filterType: "text"
|
|
52
|
+
},
|
|
53
|
+
formsubmission_status: {
|
|
54
|
+
agGridField: "formSubmission_Status",
|
|
55
|
+
filterType: "number"
|
|
56
|
+
},
|
|
57
|
+
formsubmission_initialcreatedon: {
|
|
58
|
+
agGridField: "formSubmission_InitialCreatedOn",
|
|
59
|
+
filterType: "date"
|
|
60
|
+
},
|
|
61
|
+
formsubmission_lastmodifiedon: {
|
|
62
|
+
agGridField: "formSubmission_LastModifiedOn",
|
|
63
|
+
filterType: "date"
|
|
64
|
+
},
|
|
65
|
+
formsubmission_submittedon: {
|
|
66
|
+
agGridField: "formSubmission_SubmittedOn",
|
|
67
|
+
filterType: "date"
|
|
68
|
+
},
|
|
69
|
+
formsubmission_duedate: {
|
|
70
|
+
agGridField: "formSubmission_DueDate",
|
|
71
|
+
filterType: "date"
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Maps your internal filter object structure (from URL processing)
|
|
76
|
+
* to the ag-Grid Filter Model structure.
|
|
77
|
+
* * @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects
|
|
78
|
+
* @returns {object} ag-Grid Filter Model
|
|
79
|
+
*/
|
|
80
|
+
/**
|
|
81
|
+
* Maps your internal filter object structure (from URL processing)
|
|
82
|
+
* to the ag-Grid Filter Model structure.
|
|
83
|
+
* @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects
|
|
84
|
+
* @returns {object} ag-Grid Filter Model
|
|
85
|
+
*/
|
|
86
|
+
const mapUrlFiltersToAgGridModel = (filterObjects) => {
|
|
87
|
+
if (!filterObjects || filterObjects.length === 0) return null;
|
|
88
|
+
const agGridModel = {};
|
|
89
|
+
filterObjects.forEach((filter) => {
|
|
90
|
+
const { searchField, searchOperator, searchValue } = filter;
|
|
91
|
+
const config = filterConfigByUrlField[searchField.toLocaleLowerCase()];
|
|
92
|
+
if (!config) {
|
|
93
|
+
console.warn(`No configuration found for URL filter field: ${searchField}. Filter ignored.`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const agGridField = config.agGridField;
|
|
97
|
+
const filterType = config.filterType;
|
|
98
|
+
let type = "equals";
|
|
99
|
+
switch (searchOperator) {
|
|
100
|
+
case SqlFilterOperators.EQUALS:
|
|
101
|
+
type = "equals";
|
|
102
|
+
break;
|
|
103
|
+
case SqlFilterOperators.NOT_EQUALS:
|
|
104
|
+
type = "notEqual";
|
|
105
|
+
break;
|
|
106
|
+
case SqlFilterOperators.GREATER_THAN:
|
|
107
|
+
type = "greaterThan";
|
|
108
|
+
break;
|
|
109
|
+
case SqlFilterOperators.LESS_THAN:
|
|
110
|
+
type = "lessThan";
|
|
111
|
+
break;
|
|
112
|
+
case SqlFilterOperators.LIKE:
|
|
113
|
+
type = "contains";
|
|
114
|
+
break;
|
|
115
|
+
default: type = "equals";
|
|
116
|
+
}
|
|
117
|
+
let filterValue = searchValue;
|
|
118
|
+
if (!filterValue || filterValue.toLowerCase() === "undefined" || filterValue.toLowerCase() === "null") {
|
|
119
|
+
console.warn(`Skipping filter for ${agGridField} due to invalid value: ${searchValue}`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (filterType == "date") agGridModel[agGridField] = {
|
|
123
|
+
filterType,
|
|
124
|
+
type,
|
|
125
|
+
dateFrom: filterValue
|
|
126
|
+
};
|
|
127
|
+
else agGridModel[agGridField] = {
|
|
128
|
+
filterType,
|
|
129
|
+
type,
|
|
130
|
+
filter: filterValue
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
return agGridModel;
|
|
134
|
+
};
|
|
33
135
|
const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, generic2 = void 0, generic3 = void 0, formsRendererUrlPath = void 0 }) => {
|
|
34
136
|
const user = useUser();
|
|
35
137
|
const tenant = useTenant();
|
|
36
138
|
const history = useHistory();
|
|
139
|
+
const location = useLocation();
|
|
37
140
|
const { t } = useTranslation();
|
|
38
141
|
const { enqueueSnackbar, closeSnackbar } = useSnackbar();
|
|
39
142
|
const [innerMenuItemList, setInnerMenuItemList] = useState([]);
|
|
40
143
|
const [formSubmissionViewDataRaw, setFormSubmissionViewDataRaw] = useState([]);
|
|
41
144
|
const [formDataRaw, setFormDataRaw] = useState([]);
|
|
42
145
|
const [isSidesheetOpen, setIsSidesheetOpen] = useState(false);
|
|
43
|
-
const [
|
|
44
|
-
const
|
|
45
|
-
const
|
|
146
|
+
const [selectedUdpFormInSideSheet, setSelectedUdpFormInSideSheet] = useState({});
|
|
147
|
+
const [formSubmissionUrlSearchObjs, setFormSubmissionUrlSearchObjs] = useState([]);
|
|
148
|
+
const [gridApi, setGridApi] = useState(null);
|
|
149
|
+
const handleGridApiCallback = useCallback((api) => {
|
|
150
|
+
setGridApi(api);
|
|
151
|
+
}, []);
|
|
152
|
+
const initialFilterModel = useMemo(() => {
|
|
153
|
+
return mapUrlFiltersToAgGridModel(formSubmissionUrlSearchObjs);
|
|
154
|
+
}, [formSubmissionUrlSearchObjs]);
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
if (gridApi && initialFilterModel) {
|
|
157
|
+
gridApi.setFilterModel(initialFilterModel);
|
|
158
|
+
gridApi.onFilterChanged();
|
|
159
|
+
}
|
|
160
|
+
}, [gridApi, initialFilterModel]);
|
|
161
|
+
const buildFormSubmissionSearchParams = useCallback((search) => {
|
|
162
|
+
const qs = new URLSearchParams(search);
|
|
163
|
+
const filterObjects = [];
|
|
164
|
+
qs.forEach((value, key) => {
|
|
165
|
+
if (key.startsWith("udp_search")) {
|
|
166
|
+
const keyParts = key.split("-");
|
|
167
|
+
const searchField = keyParts[1] || void 0;
|
|
168
|
+
const searchOperator = SqlFilterOperators[(keyParts[2] || void 0)?.toUpperCase()] || void 0;
|
|
169
|
+
const searchValue = value || void 0;
|
|
170
|
+
if (searchField && searchOperator && searchValue) filterObjects.push({
|
|
171
|
+
searchField,
|
|
172
|
+
searchOperator,
|
|
173
|
+
searchValue
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
return filterObjects;
|
|
178
|
+
}, []);
|
|
46
179
|
const handleSideSheetClosed = () => {
|
|
180
|
+
setSelectedUdpFormInSideSheet({});
|
|
47
181
|
setIsSidesheetOpen(false);
|
|
48
182
|
};
|
|
49
183
|
const consolidateAndSortFormsByFormId = useCallback((forms, submissions = []) => {
|
|
@@ -106,7 +240,7 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
106
240
|
const filterSubmissionByTenantId = useCallback((submissions, tenantId) => {
|
|
107
241
|
return submissions.filter((submission) => submission.form_TenantId === tenantId);
|
|
108
242
|
}, []);
|
|
109
|
-
|
|
243
|
+
useCallback(async () => {
|
|
110
244
|
try {
|
|
111
245
|
if (!tenant?.activeTenant?.tenantId) return;
|
|
112
246
|
const filterElements = [];
|
|
@@ -135,7 +269,7 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
135
269
|
searchOperator: "=",
|
|
136
270
|
searchValue: generic3
|
|
137
271
|
});
|
|
138
|
-
setFormSubmissionViewDataRaw(filterSubmissionByTenantId((await apiMutate(ConfigService
|
|
272
|
+
setFormSubmissionViewDataRaw(filterSubmissionByTenantId((await apiMutate(ConfigService.productV1ApiUrl, `UdpFormWithSubmissionsView/search`, {
|
|
139
273
|
method: "POST",
|
|
140
274
|
data: {
|
|
141
275
|
eagerLoad: false,
|
|
@@ -166,7 +300,7 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
166
300
|
searchOperator: "=",
|
|
167
301
|
searchValue: tenant.activeTenant.tenantId
|
|
168
302
|
});
|
|
169
|
-
setFormDataRaw((await apiMutate(ConfigService
|
|
303
|
+
setFormDataRaw((await apiMutate(ConfigService.productV1ApiUrl, `UdpForm/search`, {
|
|
170
304
|
method: "POST",
|
|
171
305
|
data: {
|
|
172
306
|
eagerLoad: false,
|
|
@@ -221,7 +355,7 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
221
355
|
searchValue: tenant?.activeTenant?.tenantId || ""
|
|
222
356
|
});
|
|
223
357
|
return {
|
|
224
|
-
requestUrl: `${ConfigService
|
|
358
|
+
requestUrl: `${ConfigService.productV1ApiUrl}/UdpFormWithSubmissionsView/search`,
|
|
225
359
|
customSearchObject: {
|
|
226
360
|
eagerLoad: false,
|
|
227
361
|
filterElements,
|
|
@@ -306,21 +440,26 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
306
440
|
{
|
|
307
441
|
headerName: t("Form Name"),
|
|
308
442
|
field: "form_Name",
|
|
443
|
+
type: "text",
|
|
309
444
|
sortable: true
|
|
310
445
|
},
|
|
311
446
|
{
|
|
312
447
|
headerName: t("Form Version"),
|
|
313
448
|
field: "formSubmission_FormVersion",
|
|
314
|
-
|
|
449
|
+
type: "number",
|
|
450
|
+
sortable: true
|
|
315
451
|
},
|
|
316
452
|
{
|
|
317
453
|
headerName: t("Description"),
|
|
318
454
|
field: "form_Description",
|
|
455
|
+
type: "text",
|
|
319
456
|
sortable: true
|
|
320
457
|
},
|
|
321
458
|
{
|
|
322
459
|
headerName: t("Submitted By"),
|
|
323
|
-
field: "formSubmission_UserDisplayName"
|
|
460
|
+
field: "formSubmission_UserDisplayName",
|
|
461
|
+
type: "text",
|
|
462
|
+
sortable: true
|
|
324
463
|
},
|
|
325
464
|
{
|
|
326
465
|
headerName: "Form Status",
|
|
@@ -336,25 +475,29 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
336
475
|
headerName: t("Created On"),
|
|
337
476
|
field: "formSubmission_InitialCreatedOn",
|
|
338
477
|
valueFormatter: (p) => p.value ? dateFormatter(p.value) : "",
|
|
339
|
-
sortable: true
|
|
478
|
+
sortable: true,
|
|
479
|
+
cellDataType: "dateTimeString"
|
|
340
480
|
},
|
|
341
481
|
{
|
|
342
482
|
headerName: t("Last Modified On"),
|
|
343
483
|
field: "formSubmission_LastModifiedOn",
|
|
344
484
|
valueFormatter: (p) => p.value ? dateFormatter(p.value) : "",
|
|
345
|
-
sortable: true
|
|
485
|
+
sortable: true,
|
|
486
|
+
cellDataType: "dateTimeString"
|
|
346
487
|
},
|
|
347
488
|
{
|
|
348
489
|
headerName: t("Submitted On"),
|
|
349
490
|
field: "formSubmission_SubmittedOn",
|
|
350
491
|
valueFormatter: (p) => p.value ? dateFormatter(p.value) : "",
|
|
351
|
-
sortable: true
|
|
492
|
+
sortable: true,
|
|
493
|
+
cellDataType: "dateTimeString"
|
|
352
494
|
},
|
|
353
495
|
{
|
|
354
496
|
headerName: t("Due On"),
|
|
355
497
|
field: "formSubmission_DueDate",
|
|
356
498
|
valueFormatter: (p) => p.value ? dateFormatter(p.value) : "",
|
|
357
|
-
sortable: true
|
|
499
|
+
sortable: true,
|
|
500
|
+
cellDataType: "dateTimeString"
|
|
358
501
|
},
|
|
359
502
|
{
|
|
360
503
|
field: "actions",
|
|
@@ -380,22 +523,18 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
380
523
|
{ name: "agGridHideShowColumns" }
|
|
381
524
|
], []);
|
|
382
525
|
const handleSidesheetPrimaryClick = useCallback(() => {
|
|
383
|
-
const [id, versionStr] = (
|
|
526
|
+
const [id, versionStr] = (selectedUdpFormInSideSheet.value || "").split("|");
|
|
384
527
|
const version = Number(versionStr || 0);
|
|
385
528
|
if (!id || !version) {
|
|
386
|
-
console.warn("Invalid selection:",
|
|
529
|
+
console.warn("Invalid selection:", selectedUdpFormInSideSheet);
|
|
387
530
|
setIsSidesheetOpen(false);
|
|
388
531
|
return;
|
|
389
532
|
}
|
|
533
|
+
setIsSidesheetOpen(false);
|
|
390
534
|
const urlPath = generateFormRendererUrlPath(id, version);
|
|
391
535
|
history.push(urlPath);
|
|
392
|
-
pendingNavRef.current = {
|
|
393
|
-
id,
|
|
394
|
-
version
|
|
395
|
-
};
|
|
396
|
-
setIsSidesheetOpen(false);
|
|
397
536
|
}, [
|
|
398
|
-
|
|
537
|
+
selectedUdpFormInSideSheet,
|
|
399
538
|
history,
|
|
400
539
|
generateFormRendererUrlPath
|
|
401
540
|
]);
|
|
@@ -424,24 +563,9 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
424
563
|
label: s.version ? `${s.name} (v${s.version})` : s.name
|
|
425
564
|
}));
|
|
426
565
|
}, [selectableItems]);
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const onChange = (e) => {
|
|
431
|
-
setSelectedFormValue((e?.detail ?? (e?.target && e.target.value) ?? "") || "");
|
|
432
|
-
};
|
|
433
|
-
el.addEventListener("change", onChange);
|
|
434
|
-
el.addEventListener("input", onChange);
|
|
435
|
-
if (selectedFormValue) el.value = selectedFormValue;
|
|
436
|
-
return () => {
|
|
437
|
-
el.removeEventListener("change", onChange);
|
|
438
|
-
el.removeEventListener("input", onChange);
|
|
439
|
-
};
|
|
440
|
-
}, [
|
|
441
|
-
selectorOptions,
|
|
442
|
-
isSidesheetOpen,
|
|
443
|
-
selectedFormValue
|
|
444
|
-
]);
|
|
566
|
+
const handleSelectedUdpFormInSideSheetChange = (event, newValue) => {
|
|
567
|
+
if (newValue !== null) setSelectedUdpFormInSideSheet(newValue);
|
|
568
|
+
};
|
|
445
569
|
const getMainGridContent = ({ selectedNode, menuItemsList, idMap, classes }) => {
|
|
446
570
|
if (!selectedNode) return /* @__PURE__ */ React.createElement(PageLoading, null);
|
|
447
571
|
const formId = parseIdAndVersion(selectedNode.id);
|
|
@@ -449,44 +573,95 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
449
573
|
const newestFormVersion = formDataRaw.filter((formObj) => formObj.id == formId).reduce((acc, curr) => {
|
|
450
574
|
return Math.max(acc, curr.version);
|
|
451
575
|
}, 0);
|
|
452
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
576
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(SideSheet, {
|
|
453
577
|
open: isSidesheetOpen,
|
|
454
578
|
title: t("Submit New Form"),
|
|
455
579
|
position: "right",
|
|
456
|
-
width: "
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
},
|
|
462
|
-
ref: selectorRef,
|
|
580
|
+
width: "30%",
|
|
581
|
+
buttonLabel: t("New"),
|
|
582
|
+
buttonOneDisabled: !selectedUdpFormInSideSheet.value,
|
|
583
|
+
onSubmit: handleSidesheetPrimaryClick,
|
|
584
|
+
onClose: handleSideSheetClosed
|
|
585
|
+
}, /* @__PURE__ */ React.createElement(Autocomplete, {
|
|
463
586
|
options: selectorOptions,
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
587
|
+
getOptionLabel: (selectedOption) => selectedOption.label,
|
|
588
|
+
onChange: handleSelectedUdpFormInSideSheetChange,
|
|
589
|
+
value: selectedUdpFormInSideSheet.value,
|
|
590
|
+
size: "small",
|
|
591
|
+
renderInput: (params) => /* @__PURE__ */ React.createElement(TextField, {
|
|
592
|
+
...params,
|
|
593
|
+
label: "Choose a Form",
|
|
594
|
+
variant: "outlined"
|
|
595
|
+
})
|
|
467
596
|
})), /* @__PURE__ */ React.createElement(SearchMethodUdpGrid, {
|
|
468
597
|
searchMethodConfig: getSearchMethodConfig(formId),
|
|
469
598
|
columnDefs,
|
|
470
599
|
gridOptions: getGridOptions(),
|
|
471
600
|
gridHeaderConfig: getGridHeaderConfig(formId, newestFormVersion, formTitle),
|
|
472
|
-
gridFunctions
|
|
601
|
+
gridFunctions,
|
|
602
|
+
gridApiCallback: handleGridApiCallback
|
|
473
603
|
}));
|
|
474
604
|
};
|
|
475
605
|
useEffect(() => {
|
|
476
|
-
console.log("useEffect fetch data triggered");
|
|
477
|
-
console.log(generic1);
|
|
478
606
|
if (!tenant?.activeTenant?.tenantId) return;
|
|
607
|
+
setFormSubmissionUrlSearchObjs(buildFormSubmissionSearchParams(location.search));
|
|
608
|
+
let cancelled = false;
|
|
479
609
|
(async () => {
|
|
480
|
-
|
|
481
|
-
|
|
610
|
+
try {
|
|
611
|
+
let filterElements = [];
|
|
612
|
+
filterElements.push({
|
|
613
|
+
searchField: "Form_TenantId",
|
|
614
|
+
searchOperator: "=",
|
|
615
|
+
searchValue: tenant.activeTenant.tenantId
|
|
616
|
+
});
|
|
617
|
+
if (!isManagerMode) filterElements.push({
|
|
618
|
+
searchField: "FormSubmission_UnityUserId",
|
|
619
|
+
searchOperator: "=",
|
|
620
|
+
searchValue: user.id
|
|
621
|
+
});
|
|
622
|
+
if (generic1 !== void 0) filterElements.push({
|
|
623
|
+
searchField: "formSubmission_generic1",
|
|
624
|
+
searchOperator: "=",
|
|
625
|
+
searchValue: generic1
|
|
626
|
+
});
|
|
627
|
+
if (generic2 !== void 0) filterElements.push({
|
|
628
|
+
searchField: "formSubmission_generic2",
|
|
629
|
+
searchOperator: "=",
|
|
630
|
+
searchValue: generic2
|
|
631
|
+
});
|
|
632
|
+
if (generic3 !== void 0) filterElements.push({
|
|
633
|
+
searchField: "formSubmission_generic3",
|
|
634
|
+
searchOperator: "=",
|
|
635
|
+
searchValue: generic3
|
|
636
|
+
});
|
|
637
|
+
const formSubmissionViewSearchResponse = await apiMutate(ConfigService.productV1ApiUrl, `UdpFormWithSubmissionsView/search`, {
|
|
638
|
+
method: "POST",
|
|
639
|
+
data: {
|
|
640
|
+
eagerLoad: false,
|
|
641
|
+
getAll: true,
|
|
642
|
+
filterElements
|
|
643
|
+
}
|
|
644
|
+
}, {});
|
|
645
|
+
if (cancelled) return;
|
|
646
|
+
setFormSubmissionViewDataRaw((formSubmissionViewSearchResponse?.data.pageList || []).filter((submission) => submission.form_TenantId === tenant.activeTenant.tenantId));
|
|
647
|
+
await fetchForms();
|
|
648
|
+
} catch (err) {
|
|
649
|
+
console.error("fetching submissions/forms failed", err);
|
|
650
|
+
}
|
|
482
651
|
})();
|
|
652
|
+
return () => {
|
|
653
|
+
cancelled = true;
|
|
654
|
+
};
|
|
483
655
|
}, [
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
tenant,
|
|
656
|
+
location.search,
|
|
657
|
+
tenant?.activeTenant?.tenantId,
|
|
487
658
|
generic1,
|
|
488
659
|
generic2,
|
|
489
|
-
generic3
|
|
660
|
+
generic3,
|
|
661
|
+
isManagerMode,
|
|
662
|
+
user?.id,
|
|
663
|
+
fetchForms,
|
|
664
|
+
buildFormSubmissionSearchParams
|
|
490
665
|
]);
|
|
491
666
|
useEffect(() => {
|
|
492
667
|
const innerMenuList = consolidateAndSortFormsByFormId(formDataRaw || [], formSubmissionViewDataRaw || []);
|
|
@@ -522,4 +697,4 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
522
697
|
|
|
523
698
|
//#endregion
|
|
524
699
|
export { UdpFormsSubmissionGrid as t };
|
|
525
|
-
//# sourceMappingURL=UdpFormsSubmissionGrid-
|
|
700
|
+
//# sourceMappingURL=UdpFormsSubmissionGrid-PWsnFyYB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UdpFormsSubmissionGrid-PWsnFyYB.js","names":["CustomMenuPage"],"sources":["../src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.jsx"],"sourcesContent":["import React, {\n useMemo,\n useState,\n useEffect,\n useCallback,\n useRef\n} from 'react';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport { CustomMenuPage } from '../../../menuPage';\nimport { useTranslation } from 'react-i18next';\nimport { apiMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { LoadingIndicator } from '../../../UI/loading/LoadingIndicator';\nimport { UdpPageEnums } from '../../../enums';\nimport { StatusCellRenderer } from '../../../UI/templates/ui/renderers';\nimport { SqlFilterOperators } from '../../../enums/aggridEnums';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport { Autocomplete } from '@material-ui/lab';\nimport { TextField } from '@material-ui/core';\nimport { PageLoading } from '../../../UI';\n\nconst UdpFormsSubmissionStatusEnum = Object.freeze({\n InProgress: 1,\n Submitted: 2,\n Created: 3\n});\n\nconst dateFormatter = (dateString) => {\n let normalizedDateString = dateString;\n\n // Check if the string is in the 'YYYY-MM-DD HH:mm:ss.sss' format (i.e., contains a space, not 'T')\n // If the input is '2025-12-10T20:23:23.055Z', it passes straight through.\n // This format is assumed to be missing timezone info and needs to be treated as UTC.\n if (dateString.includes(' ') && !dateString.includes('Z')) {\n // Replace the space with 'T' and append 'Z' to enforce UTC interpretation\n normalizedDateString = dateString.replace(' ', 'T') + 'Z';\n }\n\n const date = new Date(normalizedDateString);\n\n return date.toLocaleString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n};\n\nconst filterConfigByUrlField = {\n form_name: { agGridField: 'form_Name', filterType: 'text' },\n formsubmission_formversion: {\n agGridField: 'formSubmission_FormVersion',\n filterType: 'number'\n },\n form_description: { agGridField: 'form_Description', filterType: 'text' },\n formsubmission_userdisplayname: {\n agGridField: 'formSubmission_UserDisplayName',\n filterType: 'text'\n },\n formsubmission_status: {\n agGridField: 'formSubmission_Status',\n filterType: 'number'\n },\n formsubmission_initialcreatedon: {\n agGridField: 'formSubmission_InitialCreatedOn',\n filterType: 'date'\n },\n formsubmission_lastmodifiedon: {\n agGridField: 'formSubmission_LastModifiedOn',\n filterType: 'date'\n },\n formsubmission_submittedon: {\n agGridField: 'formSubmission_SubmittedOn',\n filterType: 'date'\n },\n formsubmission_duedate: {\n agGridField: 'formSubmission_DueDate',\n filterType: 'date'\n }\n};\n\n// --- NEW HELPER FUNCTION ---\n/**\n * Maps your internal filter object structure (from URL processing)\n * to the ag-Grid Filter Model structure.\n * * @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects\n * @returns {object} ag-Grid Filter Model\n */\n/**\n * Maps your internal filter object structure (from URL processing)\n * to the ag-Grid Filter Model structure.\n * @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects\n * @returns {object} ag-Grid Filter Model\n */\nconst mapUrlFiltersToAgGridModel = (filterObjects) => {\n if (!filterObjects || filterObjects.length === 0) {\n return null;\n }\n\n const agGridModel = {};\n\n filterObjects.forEach((filter) => {\n const { searchField, searchOperator, searchValue } = filter;\n\n const searchKey = searchField.toLocaleLowerCase();\n const config = filterConfigByUrlField[searchKey];\n\n if (!config) {\n console.warn(\n `No configuration found for URL filter field: ${searchField}. Filter ignored.`\n );\n return;\n }\n\n const agGridField = config.agGridField;\n const filterType = config.filterType;\n\n let type = 'equals';\n switch (searchOperator) {\n case SqlFilterOperators.EQUALS:\n type = 'equals';\n break;\n case SqlFilterOperators.NOT_EQUALS:\n type = 'notEqual';\n break;\n case SqlFilterOperators.GREATER_THAN:\n type = 'greaterThan';\n break;\n case SqlFilterOperators.LESS_THAN:\n type = 'lessThan';\n break;\n case SqlFilterOperators.LIKE:\n type = 'contains';\n break;\n default:\n type = 'equals';\n }\n\n let filterValue = searchValue;\n\n if (\n !filterValue ||\n filterValue.toLowerCase() === 'undefined' ||\n filterValue.toLowerCase() === 'null'\n ) {\n console.warn(\n `Skipping filter for ${agGridField} due to invalid value: ${searchValue}`\n );\n return; \n }\n\n if (filterType == 'date'){\n agGridModel[agGridField] = {\n filterType,\n type,\n dateFrom: filterValue \n };\n } else {\n agGridModel[agGridField] = {\n filterType,\n type,\n filter: filterValue \n };\n }\n\n });\n\n return agGridModel;\n};\n\nexport const UdpFormsSubmissionGrid = ({\n isManagerMode = false,\n generic1 = undefined,\n generic2 = undefined,\n generic3 = undefined,\n formsRendererUrlPath = undefined\n}) => {\n const user = useUser();\n const tenant = useTenant();\n const history = useHistory();\n const location = useLocation();\n const { t } = useTranslation();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [innerMenuItemList, setInnerMenuItemList] = useState([]);\n const [formSubmissionViewDataRaw, setFormSubmissionViewDataRaw] = useState([]);\n const [formDataRaw, setFormDataRaw] = useState([]);\n const [isSidesheetOpen, setIsSidesheetOpen] = useState(false);\n const [selectedUdpFormInSideSheet, setSelectedUdpFormInSideSheet] = useState({});\n const [formSubmissionUrlSearchObjs, setFormSubmissionUrlSearchObjs] = useState([]);\n\n const [gridApi, setGridApi] = useState(null); \n const handleGridApiCallback = useCallback((api) => {setGridApi(api); }, []);\n\n const initialFilterModel = useMemo(() => {\n return mapUrlFiltersToAgGridModel(formSubmissionUrlSearchObjs);\n }, [formSubmissionUrlSearchObjs]); \n\n useEffect(() => {\n if (gridApi && initialFilterModel) {\n gridApi.setFilterModel(initialFilterModel);\n gridApi.onFilterChanged();\n }\n }, [gridApi, initialFilterModel]);\n\n const buildFormSubmissionSearchParams = useCallback((search) => {\n const qs = new URLSearchParams(search);\n const filterObjects = [];\n qs.forEach((value, key) => {\n if (key.startsWith('udp_search')) {\n const keyParts = key.split('-');\n const searchField = keyParts[1] || undefined;\n const searchOperatorRaw = keyParts[2] || undefined;\n const searchOperator =\n SqlFilterOperators[searchOperatorRaw?.toUpperCase()] || undefined;\n const searchValue = value || undefined;\n if (searchField && searchOperator && searchValue) {\n filterObjects.push({\n searchField,\n searchOperator,\n searchValue\n });\n }\n }\n });\n return filterObjects;\n }, []);\n\n const handleSideSheetClosed = () => {\n setSelectedUdpFormInSideSheet({});\n setIsSidesheetOpen(false);\n };\n\n const consolidateAndSortFormsByFormId = useCallback(\n (forms, submissions = []) => {\n const resultMap = new Map();\n for (const item of forms) {\n const {\n id: formId,\n version: formVersion,\n name: formName,\n description: formDescription,\n initialCreatedOn: initialCreatedOn\n } = item;\n if (!formId || formVersion == null) continue;\n\n const key = String(formId);\n const existing = resultMap.get(key);\n\n // normalize version and timestamp\n const versionNum = Number(formVersion) || 0;\n const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;\n\n // robust comparison (coerce to string)\n const submissionCount = (submissions || []).filter(\n (sub) => String(sub?.formSubmission_FormId) === key\n ).length;\n\n if (!existing) {\n resultMap.set(key, {\n id: key,\n formId,\n formVersion: versionNum,\n name: formName || t('Untitled Form'),\n submissionCount,\n description: formDescription || '',\n mostRecentCreatedOn: ts\n });\n } else {\n // keep metadata (name/description/formVersion) from the highest version seen\n if (versionNum > (existing.formVersion || 0)) {\n existing.formVersion = versionNum;\n if (formName) existing.name = formName;\n if (formDescription) existing.description = formDescription;\n }\n }\n }\n\n const sortedOptions = Array.from(resultMap.values()).sort((a, b) =>\n b.name.localeCompare(a.name)\n );\n return sortedOptions;\n },\n [t]\n );\n\n const consolidateAndSortFormSubmissionsByFormId = useCallback(\n (submissions) => {\n const resultMap = new Map();\n for (const item of submissions) {\n const {\n formSubmission_FormId: formId,\n formSubmission_FormVersion: formVersion,\n form_Name: formName,\n form_Description: formDescription,\n formSubmission_InitialCreatedOn: initialCreatedOn\n } = item;\n if (!formId || formVersion == null) continue;\n\n const key = `${formId}`;\n const existing = resultMap.get(key);\n\n // normalize version and timestamp\n const versionNum = Number(formVersion) || 0;\n const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;\n\n if (!existing) {\n resultMap.set(key, {\n id: key,\n formId,\n formVersion: versionNum,\n name: formName || t('Untitled Form'),\n submissionCount: 1,\n description: formDescription || '',\n mostRecentCreatedOn: ts\n });\n } else {\n existing.submissionCount += 1;\n existing.mostRecentCreatedOn = Math.max(\n existing.mostRecentCreatedOn || 0,\n ts\n );\n\n // keep metadata (name/description/formVersion) from the highest version seen\n if (versionNum > (existing.formVersion || 0)) {\n existing.formVersion = versionNum;\n if (formName) existing.name = formName;\n if (formDescription) existing.description = formDescription;\n }\n }\n }\n\n const sortedOptions = Array.from(resultMap.values()).sort(\n (a, b) => b.mostRecentCreatedOn - a.mostRecentCreatedOn\n );\n return sortedOptions;\n },\n [t]\n );\n\n const filterSubmissionByTenantId = useCallback((submissions, tenantId) => {\n return submissions.filter(\n (submission) => submission.form_TenantId === tenantId\n );\n }, []);\n\n const fetchSubmissions = useCallback(async () => {\n try {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n filterElements.push({\n searchField: 'Form_TenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'FormSubmission_UnityUserId',\n searchOperator: '=',\n searchValue: user.id\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormWithSubmissionsView/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const submissions = formSubmissionViewSearchResponse?.data.pageList || [];\n const processedSubmissions = filterSubmissionByTenantId(\n submissions,\n tenant.activeTenant.tenantId\n );\n setFormSubmissionViewDataRaw(processedSubmissions);\n } catch (e) {\n console.error('fetchSubmissions error:', e);\n }\n }, [\n user,\n tenant,\n isManagerMode,\n consolidateAndSortFormSubmissionsByFormId,\n t,\n generic1,\n generic2,\n generic3,\n filterSubmissionByTenantId\n ]);\n\n const fetchForms = useCallback(async () => {\n try {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n filterElements.push({\n searchField: 'tenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n const formResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpForm/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const forms = formResponse?.data.pageList || [];\n setFormDataRaw(forms);\n } catch (e) {\n console.error('fetchForms error:', e);\n }\n }, [user, tenant, consolidateAndSortFormSubmissionsByFormId]);\n\n const parseIdAndVersion = useCallback((input) => {\n const formSubmissionId = input.replace(/^form-submission-/, '');\n // Check for \"all forms\" special case\n if (formSubmissionId.includes('all-forms-key')) {\n return null;\n }\n return formSubmissionId;\n }, []);\n\n const getSearchMethodConfig = useCallback(\n (formId) => {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'formSubmission_unityUserId',\n searchOperator: '=',\n searchValue: user.id || ''\n });\n }\n\n if (formId) {\n filterElements.push({\n searchField: 'formSubmission_formId',\n searchOperator: '=',\n searchValue: formId\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n filterElements.push({\n searchField: 'form_tenantId',\n searchOperator: '=',\n searchValue: tenant?.activeTenant?.tenantId || ''\n });\n\n return {\n requestUrl: `${ConfigService.productV1ApiUrl}/UdpFormWithSubmissionsView/search`,\n customSearchObject: {\n eagerLoad: false,\n filterElements,\n orderElements: [\n {\n sortColumn: 'initialCreatedOn',\n sortDirection: 'DESC'\n }\n ]\n }\n // logicalSearchOperator: 1,\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // type: 'advanced',\n // pageNumber: 1,\n // pageSize: 20,\n };\n },\n [user, isManagerMode, tenant, generic1, generic2, generic3]\n );\n\n const generateFormRendererUrlPath = useCallback(\n (formId, formVersion) => {\n const baseRoute = formsRendererUrlPath\n ? formsRendererUrlPath\n : 'page/' + UdpPageEnums.Udp_Form_Renderer_Page;\n\n return `${baseRoute}?udpf_formId=${encodeURIComponent(\n formId\n )}&udpf_version=${encodeURIComponent(formVersion)}`;\n },\n [generic1, generic2, generic3, formsRendererUrlPath]\n );\n\n const getGridHeaderConfig = useCallback(\n (formId, formVersion, formTitle) => {\n const config = {\n title: formTitle\n };\n\n if (!isManagerMode) {\n config.primaryActionButton = {\n label: t('Submit New Form'),\n onClick: () => {\n // Only show submit button when we have a specific form id and version\n if (formId && formVersion) {\n const urlPath = generateFormRendererUrlPath(formId, formVersion);\n history.push(urlPath);\n } else {\n setIsSidesheetOpen(true);\n }\n }\n };\n }\n\n return config;\n },\n [history, t, isManagerMode, generateFormRendererUrlPath]\n );\n\n const getGridOptions = useCallback(() => {\n return {\n pagination: true,\n defaultColDef: {\n sortable: true,\n filter: true,\n resizable: true\n },\n };\n }, []);\n\n const getStatus = useMemo(() => {\n return {\n Created: 'info',\n InProgress: 'warning',\n Submitted: 'success',\n Overdue: 'error'\n };\n }, []);\n\n const getSubmissionStatusLabel = (node) => {\n const formStatus = node?.data?.formSubmission_Status;\n const dueDateRaw = node?.data?.formSubmission_DueDate;\n\n // overdue check\n if (dueDateRaw && formStatus != UdpFormsSubmissionStatusEnum.Submitted) {\n const dueTs = Date.parse(String(dueDateRaw));\n if (!Number.isNaN(dueTs) && Date.now() > dueTs) return 'Overdue';\n }\n\n switch (formStatus) {\n case UdpFormsSubmissionStatusEnum.InProgress:\n return 'InProgress';\n case UdpFormsSubmissionStatusEnum.Created:\n return 'Created';\n case UdpFormsSubmissionStatusEnum.Submitted:\n return 'Submitted';\n default:\n return 'Unknown';\n }\n };\n\n const columnDefs = useMemo(\n () => [\n { headerName: 'Form ID', field: 'formSubmission_FormId', hide: true },\n {\n headerName: t('Form Name'),\n field: 'form_Name',\n type: 'text',\n sortable: true\n },\n {\n headerName: t('Form Version'),\n field: 'formSubmission_FormVersion',\n type: 'number',\n sortable: true\n },\n {\n headerName: t('Description'),\n field: 'form_Description',\n type: 'text',\n sortable: true\n },\n {\n headerName: t('Submitted By'),\n field: 'formSubmission_UserDisplayName',\n type: 'text',\n sortable: true\n },\n {\n headerName: 'Form Status',\n filter: false,\n field: 'formSubmission_Status',\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: getStatus,\n getStatusValue: getSubmissionStatusLabel\n }\n },\n {\n headerName: t('Created On'),\n field: 'formSubmission_InitialCreatedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Last Modified On'),\n field: 'formSubmission_LastModifiedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Submitted On'),\n field: 'formSubmission_SubmittedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Due On'),\n field: 'formSubmission_DueDate',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n iconName: 'view',\n title: t('Open This Submission'),\n handleOnClick: (e, params) => {\n history.push(\n `${\n formsRendererUrlPath\n ? formsRendererUrlPath\n : '/page/' + UdpPageEnums.Udp_Form_Renderer_Page\n }?udpf_submissionId=${params?.data?.formSubmission_Id}`\n );\n }\n }\n ]\n }\n }\n ],\n [history, t, formsRendererUrlPath]\n );\n\n const gridFunctions = useMemo(\n () => [\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ],\n []\n );\n\n const handleSidesheetPrimaryClick = useCallback(() => {\n // selectedUdpFormInSideSheet format is \"formId|formVersion\"\n const raw = selectedUdpFormInSideSheet.value || '';\n const [id, versionStr] = raw.split('|');\n const version = Number(versionStr || 0);\n if (!id || !version) {\n console.warn('Invalid selection:', selectedUdpFormInSideSheet);\n setIsSidesheetOpen(false);\n return;\n }\n\n setIsSidesheetOpen(false);\n const urlPath = generateFormRendererUrlPath(id, version);\n history.push(urlPath);\n }, [selectedUdpFormInSideSheet, history, generateFormRendererUrlPath]);\n\n const selectableItems = useMemo(() => {\n const map = new Map();\n\n for (const f of formDataRaw || []) {\n const formType = f.form_Type ?? f.formType ?? f.type;\n if (Number(formType) !== 1) continue;\n\n const formId = f.id ?? f.form_Id ?? f.formId ?? String(f?.Id ?? '');\n const version = Number(f.version ?? f.form_Version ?? f.formVersion ?? 0);\n const name =\n f.name ??\n f.form_Name ??\n f.formName ??\n f.Form_Name ??\n f.displayName ??\n t('Untitled Form');\n const description = f.description ?? f.form_Description ?? '';\n\n const existing = map.get(formId);\n if (!existing || version > existing.version) {\n map.set(formId, { id: formId, name, version, description });\n }\n }\n\n return Array.from(map.values()).sort((a, b) => b.version - a.version);\n }, [formDataRaw, t]);\n\n const selectorOptions = useMemo(() => {\n return (selectableItems || []).map((s) => ({\n value: `${s.id}|${s.version}`,\n label: s.version ? `${s.name} (v${s.version})` : s.name\n }));\n }, [selectableItems]);\n\n const handleSelectedUdpFormInSideSheetChange = (event, newValue) => {\n if (newValue !== null) {\n setSelectedUdpFormInSideSheet(newValue);\n }\n };\n\n const getMainGridContent = ({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n }) => {\n if (!selectedNode) {\n return <PageLoading />;\n }\n const formId = parseIdAndVersion(selectedNode.id);\n const found = innerMenuItemList.find((form) => form.formId == formId);\n const formTitle = `${found?.name}` || 'Unknown Form';\n const newestFormVersion = formDataRaw\n .filter((formObj) => formObj.id == formId)\n .reduce((acc, curr) => {\n return Math.max(acc, curr.version);\n }, 0);\n\n return (\n <>\n <SideSheet\n open={isSidesheetOpen}\n title={t('Submit New Form')}\n position='right'\n width={'30%'}\n buttonLabel={t('New')}\n buttonOneDisabled={!selectedUdpFormInSideSheet.value}\n onSubmit={handleSidesheetPrimaryClick}\n onClose={handleSideSheetClosed}\n >\n <Autocomplete\n options={selectorOptions}\n getOptionLabel={(selectedOption) => selectedOption.label}\n onChange={handleSelectedUdpFormInSideSheetChange}\n value={selectedUdpFormInSideSheet.value}\n size='small'\n renderInput={(params) => (\n <TextField {...params} label='Choose a Form' variant='outlined' />\n )}\n />\n </SideSheet>\n <SearchMethodUdpGrid\n searchMethodConfig={getSearchMethodConfig(formId)}\n columnDefs={columnDefs}\n gridOptions={getGridOptions()}\n gridHeaderConfig={getGridHeaderConfig(\n formId,\n newestFormVersion,\n formTitle\n )}\n gridFunctions={gridFunctions}\n gridApiCallback={handleGridApiCallback} // Pass the setter/ref handler\n />\n </>\n );\n };\n\n useEffect(() => {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const urlSearchObjs = buildFormSubmissionSearchParams(location.search);\n setFormSubmissionUrlSearchObjs(urlSearchObjs); // THIS LINE TRIGGERS initialFilterModel\n\n let cancelled = false;\n (async () => {\n try {\n // replicate fetchSubmissions logic but using local urlSearchObjs (avoids depending on the state)\n let filterElements = [];\n\n filterElements.push({\n searchField: 'Form_TenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'FormSubmission_UnityUserId',\n searchOperator: '=',\n searchValue: user.id\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormWithSubmissionsView/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n if (cancelled) return;\n\n const submissions = formSubmissionViewSearchResponse?.data.pageList || [];\n const processedSubmissions = submissions.filter((submission) =>\n submission.form_TenantId === tenant.activeTenant.tenantId\n );\n setFormSubmissionViewDataRaw(processedSubmissions);\n await fetchForms();\n } catch (err) {\n console.error('fetching submissions/forms failed', err);\n }\n })();\n\n return () => {\n cancelled = true;\n };\n }, [\n location.search,\n tenant?.activeTenant?.tenantId,\n generic1,\n generic2,\n generic3,\n isManagerMode,\n user?.id,\n fetchForms,\n buildFormSubmissionSearchParams\n ]);\n\n // derive menu items from fetched submissions (separate effect to avoid refetch loop)\n useEffect(() => {\n const innerMenuList = consolidateAndSortFormsByFormId(\n formDataRaw || [],\n formSubmissionViewDataRaw || []\n );\n\n innerMenuList.unshift({\n id: 'all-forms-key',\n name: t(\n isManagerMode ? 'All Form Submissions' : 'All My Form Submissions'\n ),\n submissionCount: formSubmissionViewDataRaw?.length || 0\n });\n setInnerMenuItemList(innerMenuList);\n }, [\n formSubmissionViewDataRaw,\n isManagerMode,\n consolidateAndSortFormsByFormId,\n formDataRaw,\n t\n ]);\n\n return (\n <div>\n <CustomMenuPage\n menuTitle={t('Forms')}\n items={innerMenuItemList}\n idPrefix='form-submission'\n showItemCount={true}\n itemCountAccessor={(item) => item?.submissionCount ?? 0}\n mainContent={({ selectedNode, menuItemsList, idMap, classes }) => {\n return (\n <div>\n {getMainGridContent({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n })}\n </div>\n );\n }}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -148,7 +148,7 @@ import { t as PageStatus } from "./PageStatus-DNxWVAG8.js";
|
|
|
148
148
|
import { n as getRouteRolesMapAndMenuActiveMap, t as getMenuItemsRecursively } from "./menuUtilities-B6z02FRb.js";
|
|
149
149
|
import { n as useMenuContext, t as MenuProvider } from "./MenuProvider-rwBliXcV.js";
|
|
150
150
|
import { n as PrivateRoute, t as UdpRoutes } from "./routes-DG4NLFP9.js";
|
|
151
|
-
import { o as ShellDropdown, s as AmbientProjectSwitcher } from "./SiteHeader-
|
|
151
|
+
import { o as ShellDropdown, s as AmbientProjectSwitcher } from "./SiteHeader-DMstxPs3.js";
|
|
152
152
|
import { n as AppMenuItem, r as AppMenuItemComponent, t as AppMenu } from "./AppMenu-DW1oQdFA.js";
|
|
153
153
|
import { t as BreadCrumbMenu } from "./BreadCrumbMenu-AehSna6J.js";
|
|
154
154
|
import { t as useTenant } from "./useTenant-CGaZEBEJ.js";
|
|
@@ -225,7 +225,7 @@ import { t as UdpMap } from "./maps-BgmvNpkU.js";
|
|
|
225
225
|
import { t as UdpAdvancedSearchBuilder } from "./advancedSearchBuilder-7ixhIwLW.js";
|
|
226
226
|
import { n as SapFlexibleTemplate, t as ToggleSection } from "./templates-2r09nl9N.js";
|
|
227
227
|
import { t as AlertContainer } from "./UI-Baviuqz7.js";
|
|
228
|
-
import { t as Shell } from "./Shell-
|
|
228
|
+
import { t as Shell } from "./Shell-DKZFbV05.js";
|
|
229
229
|
import { t as UserForm } from "./UserForm-DZ1a9uqZ.js";
|
|
230
230
|
import { t as SearchMethodUdpGrid } from "./SearchMethodUdpGrid-CWYZUOx-.js";
|
|
231
231
|
import { n as UdpMaintenanceEnginePage } from "./UdpMaintenanceEnginePage-C1UcnDlL.js";
|
|
@@ -296,13 +296,28 @@ import { t as WorkflowContainer } from "./WorkflowContainer-Cd5H4mpf.js";
|
|
|
296
296
|
import { t as TimelineCalendar } from "./TimelineCalendar-Mi4baqsg.js";
|
|
297
297
|
import { t as CustomMenuPage_default } from "./menuPage-B9NwQJVt.js";
|
|
298
298
|
import { t as StatusCellRenderer } from "./StatusCellRenderer-BuPuvngw.js";
|
|
299
|
-
import { t as UdpFormsSubmissionGrid } from "./UdpFormsSubmissionGrid-
|
|
299
|
+
import { t as UdpFormsSubmissionGrid } from "./UdpFormsSubmissionGrid-PWsnFyYB.js";
|
|
300
300
|
import { n as FieldType, t as FieldArrayCard } from "./FieldArrayCard-Bv9h9akG.js";
|
|
301
301
|
import { n as ApprovalIcon, t as RejectIcon } from "./RejectIcon-CNSkW92y.js";
|
|
302
302
|
import { t as MyExportsPage } from "./MyExportsPage-BwcVZASe.js";
|
|
303
303
|
import { n as getI18nInstance, r as initializeUnityI18n, t as UdpAppProvider } from "./UdpAppProvider-BRyRY8zN.js";
|
|
304
304
|
import "./errorBoundary/index.js";
|
|
305
305
|
import { UdpPagesLazy, UdpPagesLoaders } from "./udp/pages/UdpPagesLazy/index.js";
|
|
306
|
-
import
|
|
306
|
+
import React from "react";
|
|
307
|
+
import { ConfigService, UdpKpiCard as UdpKpiCard$1, UdpKpiCards as UdpKpiCards$1 } from "udp-react-stencil-component-library";
|
|
307
308
|
|
|
308
|
-
export { ADUserTypeEnums, Accordion, AccountFlags, ActionContext, ActionDispatchContext, ActionForm, ActionModal, ActionPanelPlacement, ActionProvider, ActionSideSheet, ActionSpeedDial, ActionSplitScreen, ActionSummaryCard, ActionSummaryHeader, ActionSummaryListContainer, ActionSummaryListItem, ActionSummaryPopover, ActionWrapper, ActionsRenderer, AddressListItem, Adornment, AgTable, AgTableButtons, AlertContainer, AlertFlag, AmChart, AmbientAlert, AmbientAutoComplete, AmbientCard, AmbientCardButton, AmbientCardTitle, AmbientDateRangeSelector, AmbientGridTemplate, AmbientList, AmbientListItem, AmbientPopoverMenuItem, AmbientProjectSwitcher, AmbientSingleDateSelector, AmbientSplitStatCard, AmbientStepper, AmbientSummaryListHeader, AmbientTextField, AmbientToast, AmbientToggleButton, AmbientToggleButtonGroup, AmbientTokenButton, AmbientVisualizationCard, AmbientVisualizer, ApiMethodInstanceUdpGrid, AppMenu, AppMenuItem, AppMenuItemComponent, ApprovalIcon, Attachments, AuthProvider, AuthProviderWrapper, AutoCompletePropertyWidget_exports as AutoCompletePropertyWidget, AvatarAlphabet, BackwardsCompatibleGrid, BarChartWidget_exports as BarChartWidget, BaseSideSheet, BioCard, Block, BooleanPropertyWidget_exports as BooleanPropertyWidget, Box, BreadCrumbMenu, BubbleWidget_exports as BubbleWidget, CardList, CardinalityTypeEnums, ChatContainer, ChatMessage, CheckboxGroup, CheckboxList, ChipAlphabet, CircleGaugeWidget, CircularProgress, CkRichEditor, ClickOpenEnums, ClientSideUdpGrid, ColorKey, CompactCard, CompactDataList, CompactDataListItem, ConfigService, ContainerTypeEnums, ContentContainer, Controls, CoreLayoutFloorplan, CrudForm, CustomMenuPage_default as CustomMenuPage, DateField, DatePropertyWidget_exports as DatePropertyWidget, DateTimeField, DateTimePropertyWidget_exports as DateTimePropertyWidget, DateTrendWidget_exports as DateTrendWidget, DensePlotWidget_exports as DensePlotWidget, DeviceTypeEnums, DiffChecker, Directory, DirectoryListItem, Divider, DonutChartWidget_exports as DonutChartWidget, DragDropFileUpload, DraggableSidebarTemplate, DynamicContainerWithMenu, EMPTY_GUID, Ellipse, EmptyStateDisplay, EntityAttributeEnums, EntityHeader, EntityMaintenanceUdpGrid, ExecuteApiDialog, ExpandRenderer, ExportSidesheet, ExtenderToggle, Field, FieldArrayCard, FieldType, FileUpload, FileViewer, FilterOperators, FilterSearch, FlagBlock, FloatPropertyWidget_exports as FloatPropertyWidget, FluentActivity, FluentActivityRow, FluentButton, FluentCard, FluentCardActions, FluentCardContent, FluentCardHeader, FluentCardText, FluentCheckbox, FluentColorPicker, FluentCompoundButton, FluentDataTable, FluentDatePicker, FluentDateTimePicker, FluentDialog, FluentIcon, FluentIconButton, FluentImageMap, FluentLink, FluentListElement, FluentListItem, FluentMap, FluentMenuListButton, FluentMenuListItem, FluentProfileMenuCard, FluentRadio, FluentRadioGroup, FluentScrollLoadAutocompleteMenu, FluentSearchField, FluentSelectGroupMenu, FluentSelectMenu, FluentSideNav, FluentSimpleSelect, FluentSimpleTab, FluentSimpleTabs, FluentTabPanel, FluentTabUtility, FluentTagField, FluentTagFieldComponent, FluentTextField, FluentTextFieldAutoComplete, FluentTextFieldComponent, FluentTimePicker, FluentTimeline, FluentToggle, FluentUploadButton, FluentUploadIconButton, Form, FormButtons, FormControl, FormControlLabel, FormError, FormHeader, FormSpy, FormSubHeader, FullScreenControl, GaugeWidget, GeoMap, GraphCard, Grid, GridActionBar, GridEnums, GridExcelStyleEnums, GridGroup, GridGroupingHeader, GridGroupingSidebar, GridRow, GridSidebarContainer, GridStateTypeEnums, GridUnit, HeaderExpander, HeaderLayout, IconButtonWithTooltip, IconKey, IconRenderer, IframeContainer, ImageLayer, ImportDataFromFileMapping, IndicatorChip, InfoCard, InputAdornment, InputFieldType, Inquiry, InquiryAdvancedSearch, InquiryAdvancedSearchForm, InquiryContainer, InquiryDashboard, InquiryHeaderControl, InquiryHeaderControlTarget, InquiryHeaderSecondary, InquiryHeaderSecondaryAlert, InquiryHeaderSecondaryAlertTarget, InquiryHeaderSecondaryTarget, InquiryHeaderTitle, InquiryHeaderTitleTarget, InquiryNodeControls, InquirySearchContainer, InquirySearchDatasource, InquirySearchTable, InquiryTreeMenu, InquiryTreeMenuItem, InquiryWrapper, InsightRenderer, IntegerPropertyWidget_exports as IntegerPropertyWidget, ItemDescription, ItemsWidgetCard, JobStatusIdMapping, JobTypeIdMapping, KeyValueTextField, Layers, LayoutUnit, LicenseKey, LineAndSparklinesWidget_exports as LineAndSparklinesWidget, LineGraphWidget_exports as LineGraphWidget, LinearProgress, ListCard, ListElement, LoadingIndicator, LogicalSearchOperatorEnums, LoginForm, LookupTypeEnums, LookupTypeIdEnums, Map, MapFilterBar, MapLayout, MapSheet, MenuItemEnums, MenuProvider, MenuTypeEnums, MttMainTimeline, MttSummary, MttTimeline, MultilineTextPropertyWidget_exports as MultilineTextPropertyWidget, MyExportsPage, NestParent, NestWrapper, NestedGrid, NewsCard, NodeActionEnums, NodeActionTriggerEnums, NodeColumnHeader, NodeDetails, NodeGroupOutlierEnums, NodeGroupTypeEnums, NodeList, NodeLoader, Note, Notes, NotesScreen, NotificationElement, NumericPropertyWidget_exports as NumericPropertyWidget, OpenPage, OutlookCallback, PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PDFViewer, PageContainer, PageContent, PageHeader, PageLoading, PageNotFoundRoute, PageRenderer, PageSectionHeader, PageSectionSpacer, PageStatus, PageSubHeaderAction, PageSubHeaderActionsTarget, PanelPositionEnums, ParamsMappingForm, PasswordResetRedirect, PaymentForm, PaymentMethodTypeEnum, PaymentReversalForm, PaymentTenderTypeEnum, PaymentVendorFactoryEnum, PopoverCard, PowerBIReport, PrimaryActionButton, PrimaryActionHeader, PrivateRoute, ProductEnums, ProductNameEnums, ProgressBarWidget_exports as ProgressBarWidget, PropertyField, PropertyFields, PropertyTypeEnum, QuickViewCard, RecentlyLoadedNodesTable, RecentlyLoadedNodesWidget_exports as RecentlyLoadedNodesWidget, RejectIcon, RemindersScreen, RemindersWidget_exports as RemindersWidget, RequiredFieldsMappingForm, RoleIdEnums, RoleNameEnums, RoleTypeEnums, SapFlexibleTemplate, SearchGroupingType, SearchMethodUdpGrid, SearchOperators, SearchServiceDatasource, SearchSortDirection, SearchValueType, SelectGroupMenu, SelectPropertyWidget_exports as SelectPropertyWidget, ServerSideUdpGrid, SeverityTypeEnums, Shell, ShellDropdown, SideBarTemplate, SideSheet, SideSheetHeader, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SparklineWidget_exports as SparklineWidget, SparsePlotWidget_exports as SparsePlotWidget, SplitScreenTypeEnums, StandardTitle, Statistic, StatusCellRenderer, StatusChip, StatusLineItem, Sticky, StylizedTitle, SubHeaderAction, SubHeaderActionsTarget, SubmitButton, SummaryBlock, SupportCaseSideSheet, SvgIcon, TableColumnDefs, TableContainer, TeleportSource, TenantTypeEnums, TextPropertyWidget_exports as TextPropertyWidget, ThemeProvider, TicketCard, TileDisplay, TileLayer, TimeField, TimeLine, TimePropertyWidget_exports as TimePropertyWidget, TimelineCalendar, TimelinePreloaderNode, ToggleSection, Token, TokenGroupItem, ToolBarButton, TransactionActionTypeEnums, TransactionEventTypeEnums, TransactionUiActionTypeEnums, TreeViewModeEnums, TrimForAvatar, Typography, UdpAdvancedSearchBuilder, UdpAppProvider, UdpBarChart, UdpCalendar, UdpCalendarDayView, UdpCalendarMonthView, UdpCalendarWeekView, UdpCalendarYearView, UdpCrudFormFields, UdpDateRangeSelector, UdpDateSelector, UdpDonutChart, UdpEnums, UdpFormsBuilderPage_default as UdpFormsBuilderPage, UdpFormsListPage_default as UdpFormsListPage, UdpFormsSubmissionGrid, UdpGridTemplate, UdpKeywordEnums, UdpLineChart, UdpMaintenanceEnginePage, UdpMap, UdpMapComponent, UdpMapToolbar, UdpPageEnums, UdpPages, UdpPagesLazy, UdpPagesLoaders, UdpPrivateForm, UdpPublicForm_default as UdpPublicForm, UdpReminderFiledForType, UdpRoutes, UdpSearchEnums, UdpStepper, UdpTabPanel, UdpTabUtility, UdpTabs, UdpTimeSelector, UdpTimeline, UdpTimelineConnector, UdpTimelineContent, UdpTimelineDot, UdpTimelineItem, UdpTimelineSeparator, UdpTransactionActionEnums, UdpTransactionEmailForm, UdpTransactionsPage_default as UdpTransactionsPage, UnityFluentIcon, UnityIcon, UserContext, UserDispatchContext, UserForm, UtilityBar, UtilityBarInport, UtilityBarInportTarget, UtilityTabHeader, VectorLayer, VerticalEnums, VisibilityTypeEnums, WidgetCard, WorkOrderCard, WorkflowContainer, ZoomControl, acquireAccessToken, apiMutate, apiResponseArrayToOptions, arrayMutators, camelToPascalCaseWithSpace, checkNodeIsHidden, clearGridState, clearStoredExternalPath, clearStoredPath, clearStoredTenant, collapseAllNodes, colors, constructBusinessObjectArrFromTree, constructDynamicNodeGroups, constructDynamicNodeGroups2, constructPreloadedTree, constructStaticNodeGroups, corporateColors, corporateColorsHint, createTimeline, createUser, csvStrToArray, csvStrToArrayOfObjects, defaultColumnActionsDef, deleteGridState, deleteNode, deleteNodeAndChildren, evaluateRule, executeQueryAdHoc, executeQueryInstance, executeQueryInstanceWithApiMethodInstance, executeQueryWithParameters, expandAllNodes, findAllParentIds, findLastNode, findNodeById, findNodeByIdAndLabel, findNodesByIdAndLabel, findTermByType, fluentLibraryIcons, formatBytes, mttFunctions_exports as formatDataWithTimelineCategoryNameOrderedByDate, formatDateToLocaleString, formatTreeLabel, formatTreeMenuItem, getAccessToken, getAllChildrenNodesToDelete, getApiAccessScope, getApiMethodIdByPath, getBaseMethod, getCommonEntityName, getDisplayDetails, getDisplayName, getEntityAttributes, getFieldValuesForProperties, getFullyQualifiedName, getGridState, getHeaderTitle, getI18nInstance, getIconFromName, getLazyLoadChildrenArr, getLoginRequest, getMenuItemsRecursively, getMergedConfig, getNodeIdForRightBorder, getOrderedDynamicGroups, getPathObject, getPathParametersObj, getPrimaryKeyValues, getPropertiesForFieldValues, getPropertyMappingList, getPropertyMappingObj, getRatio, getRouteRolesMapAndMenuActiveMap, getSanitizedName, getSearchIdentifiers, getSearchObject, getSearchValueString, getSignInAuthProvider, getStoredExternalPath, getStoredPath, getStoredTenant, getSuccessAction, getTokenRequest, getUnityIconFromName, greyScale, handleResponseErrors, initSignInAuthProvider, initializeUnityI18n, loginRedirect, makeDynamicGroupStructures, makeDynamicTreeStructure, makeTreeStaticGroupStructure, makeTreeStructure, mapNodeGroupChildren, mapNodeObjValuesToSearchParameters, mapRule, mapRuleData, onFirstDataRendered, parseSearchParamsIntoFilterObjects, pluralize, processCatalogObjectKeysInOrder, processItemForDynamicNodeGroups, processItemForStaticNodeGroup, processObjIndex, processObjectToTree, processOrderedTreeData, processReferences, productCategoryColors, removeWhiteSpace, saveGridState, searchForMatchingNode, searchTree, storeCurrentPath, storeExternalPath, storeInitialPath, storeInitialTenant, storePath, storeTenant, toLowerFirstChar, toTitleCase, toUpperFirstChar, toUtcDate, toggleHeader, transformMenuPageTree, trimStringAfter, unityIcons, updateTreeIds, useAccessToken, useActionState, useActions, useAgGridApi, useAllTeleporters, useApiCatalog, useAuthedUser, useAxiosGet, useAxiosGetQuery, useAxiosMutate, useCatalogStore, useControlZoom, useConvertFilterModelToSearchFilters, useCrudActions, useCurrentPageReturnTo, useDateLocale, useDefaultFormValues, useDynamicListCalculation, useExport, useField, useFieldChangeListener, useFluentIcon, useForm, useFormState, useGridClear, useGridFormat, useHandleAction, useHandleAxiosSnackbar, useIsAuthed, useIsUnityAuthenticated, useItemSubCard, useLocalUserActions, useLoginAction, useLogoutAction, useLookupsStore, useMenuContext, useNoticeUpdate, useOutlook, usePageContext, usePosition, useProductVersion, usePromotedLookupMethods, usePromotedMethodEntity, useQueryExecutors, useQuickFilter, useScreenControl, useSearchFilterParamsMap, useServerSideDatasource, useSetInitialShellVisibility, useSetLocationState, useShellStore, useSingleLogout, useStyles, useSystemColor, useTenant, useTenantStore, useTheme, useTypeScale, useUdpExport, useUser, useUserActions, useWorkflowStore, verticalPrimary, verticalSecondary, whitelistedPaths };
|
|
309
|
+
//#region src/kpi/UdpKpiCards.tsx
|
|
310
|
+
const UdpKpiCards = (props) => {
|
|
311
|
+
const { children, ...otherProps } = props;
|
|
312
|
+
return /* @__PURE__ */ React.createElement(UdpKpiCards$1, otherProps, children);
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/kpi/UdpKpiCard.tsx
|
|
317
|
+
const UdpKpiCard = (props) => {
|
|
318
|
+
return /* @__PURE__ */ React.createElement(UdpKpiCard$1, props);
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
//#endregion
|
|
322
|
+
export { ADUserTypeEnums, Accordion, AccountFlags, ActionContext, ActionDispatchContext, ActionForm, ActionModal, ActionPanelPlacement, ActionProvider, ActionSideSheet, ActionSpeedDial, ActionSplitScreen, ActionSummaryCard, ActionSummaryHeader, ActionSummaryListContainer, ActionSummaryListItem, ActionSummaryPopover, ActionWrapper, ActionsRenderer, AddressListItem, Adornment, AgTable, AgTableButtons, AlertContainer, AlertFlag, AmChart, AmbientAlert, AmbientAutoComplete, AmbientCard, AmbientCardButton, AmbientCardTitle, AmbientDateRangeSelector, AmbientGridTemplate, AmbientList, AmbientListItem, AmbientPopoverMenuItem, AmbientProjectSwitcher, AmbientSingleDateSelector, AmbientSplitStatCard, AmbientStepper, AmbientSummaryListHeader, AmbientTextField, AmbientToast, AmbientToggleButton, AmbientToggleButtonGroup, AmbientTokenButton, AmbientVisualizationCard, AmbientVisualizer, ApiMethodInstanceUdpGrid, AppMenu, AppMenuItem, AppMenuItemComponent, ApprovalIcon, Attachments, AuthProvider, AuthProviderWrapper, AutoCompletePropertyWidget_exports as AutoCompletePropertyWidget, AvatarAlphabet, BackwardsCompatibleGrid, BarChartWidget_exports as BarChartWidget, BaseSideSheet, BioCard, Block, BooleanPropertyWidget_exports as BooleanPropertyWidget, Box, BreadCrumbMenu, BubbleWidget_exports as BubbleWidget, CardList, CardinalityTypeEnums, ChatContainer, ChatMessage, CheckboxGroup, CheckboxList, ChipAlphabet, CircleGaugeWidget, CircularProgress, CkRichEditor, ClickOpenEnums, ClientSideUdpGrid, ColorKey, CompactCard, CompactDataList, CompactDataListItem, ConfigService, ContainerTypeEnums, ContentContainer, Controls, CoreLayoutFloorplan, CrudForm, CustomMenuPage_default as CustomMenuPage, DateField, DatePropertyWidget_exports as DatePropertyWidget, DateTimeField, DateTimePropertyWidget_exports as DateTimePropertyWidget, DateTrendWidget_exports as DateTrendWidget, DensePlotWidget_exports as DensePlotWidget, DeviceTypeEnums, DiffChecker, Directory, DirectoryListItem, Divider, DonutChartWidget_exports as DonutChartWidget, DragDropFileUpload, DraggableSidebarTemplate, DynamicContainerWithMenu, EMPTY_GUID, Ellipse, EmptyStateDisplay, EntityAttributeEnums, EntityHeader, EntityMaintenanceUdpGrid, ExecuteApiDialog, ExpandRenderer, ExportSidesheet, ExtenderToggle, Field, FieldArrayCard, FieldType, FileUpload, FileViewer, FilterOperators, FilterSearch, FlagBlock, FloatPropertyWidget_exports as FloatPropertyWidget, FluentActivity, FluentActivityRow, FluentButton, FluentCard, FluentCardActions, FluentCardContent, FluentCardHeader, FluentCardText, FluentCheckbox, FluentColorPicker, FluentCompoundButton, FluentDataTable, FluentDatePicker, FluentDateTimePicker, FluentDialog, FluentIcon, FluentIconButton, FluentImageMap, FluentLink, FluentListElement, FluentListItem, FluentMap, FluentMenuListButton, FluentMenuListItem, FluentProfileMenuCard, FluentRadio, FluentRadioGroup, FluentScrollLoadAutocompleteMenu, FluentSearchField, FluentSelectGroupMenu, FluentSelectMenu, FluentSideNav, FluentSimpleSelect, FluentSimpleTab, FluentSimpleTabs, FluentTabPanel, FluentTabUtility, FluentTagField, FluentTagFieldComponent, FluentTextField, FluentTextFieldAutoComplete, FluentTextFieldComponent, FluentTimePicker, FluentTimeline, FluentToggle, FluentUploadButton, FluentUploadIconButton, Form, FormButtons, FormControl, FormControlLabel, FormError, FormHeader, FormSpy, FormSubHeader, FullScreenControl, GaugeWidget, GeoMap, GraphCard, Grid, GridActionBar, GridEnums, GridExcelStyleEnums, GridGroup, GridGroupingHeader, GridGroupingSidebar, GridRow, GridSidebarContainer, GridStateTypeEnums, GridUnit, HeaderExpander, HeaderLayout, IconButtonWithTooltip, IconKey, IconRenderer, IframeContainer, ImageLayer, ImportDataFromFileMapping, IndicatorChip, InfoCard, InputAdornment, InputFieldType, Inquiry, InquiryAdvancedSearch, InquiryAdvancedSearchForm, InquiryContainer, InquiryDashboard, InquiryHeaderControl, InquiryHeaderControlTarget, InquiryHeaderSecondary, InquiryHeaderSecondaryAlert, InquiryHeaderSecondaryAlertTarget, InquiryHeaderSecondaryTarget, InquiryHeaderTitle, InquiryHeaderTitleTarget, InquiryNodeControls, InquirySearchContainer, InquirySearchDatasource, InquirySearchTable, InquiryTreeMenu, InquiryTreeMenuItem, InquiryWrapper, InsightRenderer, IntegerPropertyWidget_exports as IntegerPropertyWidget, ItemDescription, ItemsWidgetCard, JobStatusIdMapping, JobTypeIdMapping, KeyValueTextField, Layers, LayoutUnit, LicenseKey, LineAndSparklinesWidget_exports as LineAndSparklinesWidget, LineGraphWidget_exports as LineGraphWidget, LinearProgress, ListCard, ListElement, LoadingIndicator, LogicalSearchOperatorEnums, LoginForm, LookupTypeEnums, LookupTypeIdEnums, Map, MapFilterBar, MapLayout, MapSheet, MenuItemEnums, MenuProvider, MenuTypeEnums, MttMainTimeline, MttSummary, MttTimeline, MultilineTextPropertyWidget_exports as MultilineTextPropertyWidget, MyExportsPage, NestParent, NestWrapper, NestedGrid, NewsCard, NodeActionEnums, NodeActionTriggerEnums, NodeColumnHeader, NodeDetails, NodeGroupOutlierEnums, NodeGroupTypeEnums, NodeList, NodeLoader, Note, Notes, NotesScreen, NotificationElement, NumericPropertyWidget_exports as NumericPropertyWidget, OpenPage, OutlookCallback, PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PDFViewer, PageContainer, PageContent, PageHeader, PageLoading, PageNotFoundRoute, PageRenderer, PageSectionHeader, PageSectionSpacer, PageStatus, PageSubHeaderAction, PageSubHeaderActionsTarget, PanelPositionEnums, ParamsMappingForm, PasswordResetRedirect, PaymentForm, PaymentMethodTypeEnum, PaymentReversalForm, PaymentTenderTypeEnum, PaymentVendorFactoryEnum, PopoverCard, PowerBIReport, PrimaryActionButton, PrimaryActionHeader, PrivateRoute, ProductEnums, ProductNameEnums, ProgressBarWidget_exports as ProgressBarWidget, PropertyField, PropertyFields, PropertyTypeEnum, QuickViewCard, RecentlyLoadedNodesTable, RecentlyLoadedNodesWidget_exports as RecentlyLoadedNodesWidget, RejectIcon, RemindersScreen, RemindersWidget_exports as RemindersWidget, RequiredFieldsMappingForm, RoleIdEnums, RoleNameEnums, RoleTypeEnums, SapFlexibleTemplate, SearchGroupingType, SearchMethodUdpGrid, SearchOperators, SearchServiceDatasource, SearchSortDirection, SearchValueType, SelectGroupMenu, SelectPropertyWidget_exports as SelectPropertyWidget, ServerSideUdpGrid, SeverityTypeEnums, Shell, ShellDropdown, SideBarTemplate, SideSheet, SideSheetHeader, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SparklineWidget_exports as SparklineWidget, SparsePlotWidget_exports as SparsePlotWidget, SplitScreenTypeEnums, StandardTitle, Statistic, StatusCellRenderer, StatusChip, StatusLineItem, Sticky, StylizedTitle, SubHeaderAction, SubHeaderActionsTarget, SubmitButton, SummaryBlock, SupportCaseSideSheet, SvgIcon, TableColumnDefs, TableContainer, TeleportSource, TenantTypeEnums, TextPropertyWidget_exports as TextPropertyWidget, ThemeProvider, TicketCard, TileDisplay, TileLayer, TimeField, TimeLine, TimePropertyWidget_exports as TimePropertyWidget, TimelineCalendar, TimelinePreloaderNode, ToggleSection, Token, TokenGroupItem, ToolBarButton, TransactionActionTypeEnums, TransactionEventTypeEnums, TransactionUiActionTypeEnums, TreeViewModeEnums, TrimForAvatar, Typography, UdpAdvancedSearchBuilder, UdpAppProvider, UdpBarChart, UdpCalendar, UdpCalendarDayView, UdpCalendarMonthView, UdpCalendarWeekView, UdpCalendarYearView, UdpCrudFormFields, UdpDateRangeSelector, UdpDateSelector, UdpDonutChart, UdpEnums, UdpFormsBuilderPage_default as UdpFormsBuilderPage, UdpFormsListPage_default as UdpFormsListPage, UdpFormsSubmissionGrid, UdpGridTemplate, UdpKeywordEnums, UdpKpiCard, UdpKpiCards, UdpLineChart, UdpMaintenanceEnginePage, UdpMap, UdpMapComponent, UdpMapToolbar, UdpPageEnums, UdpPages, UdpPagesLazy, UdpPagesLoaders, UdpPrivateForm, UdpPublicForm_default as UdpPublicForm, UdpReminderFiledForType, UdpRoutes, UdpSearchEnums, UdpStepper, UdpTabPanel, UdpTabUtility, UdpTabs, UdpTimeSelector, UdpTimeline, UdpTimelineConnector, UdpTimelineContent, UdpTimelineDot, UdpTimelineItem, UdpTimelineSeparator, UdpTransactionActionEnums, UdpTransactionEmailForm, UdpTransactionsPage_default as UdpTransactionsPage, UnityFluentIcon, UnityIcon, UserContext, UserDispatchContext, UserForm, UtilityBar, UtilityBarInport, UtilityBarInportTarget, UtilityTabHeader, VectorLayer, VerticalEnums, VisibilityTypeEnums, WidgetCard, WorkOrderCard, WorkflowContainer, ZoomControl, acquireAccessToken, apiMutate, apiResponseArrayToOptions, arrayMutators, camelToPascalCaseWithSpace, checkNodeIsHidden, clearGridState, clearStoredExternalPath, clearStoredPath, clearStoredTenant, collapseAllNodes, colors, constructBusinessObjectArrFromTree, constructDynamicNodeGroups, constructDynamicNodeGroups2, constructPreloadedTree, constructStaticNodeGroups, corporateColors, corporateColorsHint, createTimeline, createUser, csvStrToArray, csvStrToArrayOfObjects, defaultColumnActionsDef, deleteGridState, deleteNode, deleteNodeAndChildren, evaluateRule, executeQueryAdHoc, executeQueryInstance, executeQueryInstanceWithApiMethodInstance, executeQueryWithParameters, expandAllNodes, findAllParentIds, findLastNode, findNodeById, findNodeByIdAndLabel, findNodesByIdAndLabel, findTermByType, fluentLibraryIcons, formatBytes, mttFunctions_exports as formatDataWithTimelineCategoryNameOrderedByDate, formatDateToLocaleString, formatTreeLabel, formatTreeMenuItem, getAccessToken, getAllChildrenNodesToDelete, getApiAccessScope, getApiMethodIdByPath, getBaseMethod, getCommonEntityName, getDisplayDetails, getDisplayName, getEntityAttributes, getFieldValuesForProperties, getFullyQualifiedName, getGridState, getHeaderTitle, getI18nInstance, getIconFromName, getLazyLoadChildrenArr, getLoginRequest, getMenuItemsRecursively, getMergedConfig, getNodeIdForRightBorder, getOrderedDynamicGroups, getPathObject, getPathParametersObj, getPrimaryKeyValues, getPropertiesForFieldValues, getPropertyMappingList, getPropertyMappingObj, getRatio, getRouteRolesMapAndMenuActiveMap, getSanitizedName, getSearchIdentifiers, getSearchObject, getSearchValueString, getSignInAuthProvider, getStoredExternalPath, getStoredPath, getStoredTenant, getSuccessAction, getTokenRequest, getUnityIconFromName, greyScale, handleResponseErrors, initSignInAuthProvider, initializeUnityI18n, loginRedirect, makeDynamicGroupStructures, makeDynamicTreeStructure, makeTreeStaticGroupStructure, makeTreeStructure, mapNodeGroupChildren, mapNodeObjValuesToSearchParameters, mapRule, mapRuleData, onFirstDataRendered, parseSearchParamsIntoFilterObjects, pluralize, processCatalogObjectKeysInOrder, processItemForDynamicNodeGroups, processItemForStaticNodeGroup, processObjIndex, processObjectToTree, processOrderedTreeData, processReferences, productCategoryColors, removeWhiteSpace, saveGridState, searchForMatchingNode, searchTree, storeCurrentPath, storeExternalPath, storeInitialPath, storeInitialTenant, storePath, storeTenant, toLowerFirstChar, toTitleCase, toUpperFirstChar, toUtcDate, toggleHeader, transformMenuPageTree, trimStringAfter, unityIcons, updateTreeIds, useAccessToken, useActionState, useActions, useAgGridApi, useAllTeleporters, useApiCatalog, useAuthedUser, useAxiosGet, useAxiosGetQuery, useAxiosMutate, useCatalogStore, useControlZoom, useConvertFilterModelToSearchFilters, useCrudActions, useCurrentPageReturnTo, useDateLocale, useDefaultFormValues, useDynamicListCalculation, useExport, useField, useFieldChangeListener, useFluentIcon, useForm, useFormState, useGridClear, useGridFormat, useHandleAction, useHandleAxiosSnackbar, useIsAuthed, useIsUnityAuthenticated, useItemSubCard, useLocalUserActions, useLoginAction, useLogoutAction, useLookupsStore, useMenuContext, useNoticeUpdate, useOutlook, usePageContext, usePosition, useProductVersion, usePromotedLookupMethods, usePromotedMethodEntity, useQueryExecutors, useQuickFilter, useScreenControl, useSearchFilterParamsMap, useServerSideDatasource, useSetInitialShellVisibility, useSetLocationState, useShellStore, useSingleLogout, useStyles, useSystemColor, useTenant, useTenantStore, useTheme, useTypeScale, useUdpExport, useUser, useUserActions, useWorkflowStore, verticalPrimary, verticalSecondary, whitelistedPaths };
|
|
323
|
+
//# sourceMappingURL=index.js.map
|