@argusoft/medplat-core 1.0.30 → 1.0.31
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/{AccessRights-xrday-L1.js → AccessRights-DUgY6ewy.js} +151 -143
- package/dist/AccessRights-DUgY6ewy.js.map +1 -0
- package/dist/AddMenuConfiguration-c6ZKiN0i.js +8898 -0
- package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +1 -0
- package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js → BrandsPage-DMw2vT0u-BVhvhc6J.js} +14 -14
- package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js.map → BrandsPage-DMw2vT0u-BVhvhc6J.js.map} +1 -1
- package/dist/{CategoriesPage-BsS5IQh3-B03lWRY5.js → CategoriesPage-D3ihx9Gi-CT58g0ry.js} +112 -105
- package/dist/CategoriesPage-D3ihx9Gi-CT58g0ry.js.map +1 -0
- package/dist/{ChangePasswordModalCore-BPsJquTS.js → ChangePasswordModalCore-lQ9GamH1.js} +3 -3
- package/dist/{ChangePasswordModalCore-BPsJquTS.js.map → ChangePasswordModalCore-lQ9GamH1.js.map} +1 -1
- package/dist/ConditionConfig-BQBmBHaM.js +408 -0
- package/dist/ConditionConfig-BQBmBHaM.js.map +1 -0
- package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js → DashboardPage-asr2XDRu-uOOlX9Vq.js} +29 -29
- package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js.map → DashboardPage-asr2XDRu-uOOlX9Vq.js.map} +1 -1
- package/dist/EventConfig-BY2cgGyx.js +27 -0
- package/dist/{EventConfig-BmLemzX3.js.map → EventConfig-BY2cgGyx.js.map} +1 -1
- package/dist/EventConfigurations-CUPEN5BV.js +544 -0
- package/dist/EventConfigurations-CUPEN5BV.js.map +1 -0
- package/dist/EventConfigurations.css +1 -1
- package/dist/EventsExceptionModal-BX-ArkBE.js +188 -0
- package/dist/EventsExceptionModal-BX-ArkBE.js.map +1 -0
- package/dist/EventsUi-D6O9S7BK.js +258 -0
- package/dist/EventsUi-D6O9S7BK.js.map +1 -0
- package/dist/{FacilityPicker-BiZeupmP-CyPHmj6b.js → FacilityPicker-DYl_PDyt-Cbwo2tAY.js} +10 -10
- package/dist/{FacilityPicker-BiZeupmP-CyPHmj6b.js.map → FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map} +1 -1
- package/dist/{FeatureMenu-DYJmDt7q.js → FeatureMenu-CHsBbw3W.js} +9 -5
- package/dist/FeatureMenu-CHsBbw3W.js.map +1 -0
- package/dist/{FhirServerList-DuTwnngN.js → FhirServerList-iXBPkRVF.js} +11 -11
- package/dist/{FhirServerList-DuTwnngN.js.map → FhirServerList-iXBPkRVF.js.map} +1 -1
- package/dist/{GrantPermissionModal-BDN66Atn.js → GrantPermissionModal-D7iNZd0M.js} +54 -51
- package/dist/GrantPermissionModal-D7iNZd0M.js.map +1 -0
- package/dist/{ImmunizationConfigurationBase-Di1KO3oW.js → ImmunizationConfigurationBase-aUtx0JEe.js} +3440 -3060
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +1 -0
- package/dist/{InventoryPage-C_AxSy7A-QLvlL4rE.js → InventoryPage-DOotGZrj-CoPjOJEI.js} +10 -10
- package/dist/{InventoryPage-C_AxSy7A-QLvlL4rE.js.map → InventoryPage-DOotGZrj-CoPjOJEI.js.map} +1 -1
- package/dist/ManageEventConfiguration-DqW3krT6.js +1216 -0
- package/dist/ManageEventConfiguration-DqW3krT6.js.map +1 -0
- package/dist/ManageEventConfiguration.css +1 -1
- package/dist/{ManageUser-DCFkUMV9.js → ManageUser-DZltBina.js} +134 -134
- package/dist/{ManageUser-DCFkUMV9.js.map → ManageUser-DZltBina.js.map} +1 -1
- package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js → MemberProfileCard-D5CgkTdJ-D2NgDJl3.js} +25 -25
- package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js.map → MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map} +1 -1
- package/dist/MobileAnalytics-BLOionG_.js +17301 -0
- package/dist/MobileAnalytics-BLOionG_.js.map +1 -0
- package/dist/MobileMenuManagement-68Wijb0X.js +220 -0
- package/dist/MobileMenuManagement-68Wijb0X.js.map +1 -0
- package/dist/MobileTypeEventConfigModal-CMcj7Ozp.js +752 -0
- package/dist/MobileTypeEventConfigModal-CMcj7Ozp.js.map +1 -0
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js +1812 -0
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +1 -0
- package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js → PaymentCreatePage-DfvSZ-kB-CckogYoe.js} +14 -14
- package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map → PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map} +1 -1
- package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js → PaymentsPage-DMNjYWAJ-ChO9IXmk.js} +24 -24
- package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js.map → PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map} +1 -1
- package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js → PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js} +2 -2
- package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map → PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map} +1 -1
- package/dist/{PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js → PickupCreatePage-B4O_-vE5-DoOo9nJO.js} +64 -64
- package/dist/{PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map → PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map} +1 -1
- package/dist/{PickupsPage-Ctpghavs-CUp4uIZq.js → PickupsPage-D7zyioJB-bHKnARYw.js} +29 -29
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +1 -0
- package/dist/{PmGuard-b10TGXEi-G3N0G_Wg.js → PmGuard-BZE-y4In-D_pUm5MP.js} +25 -25
- package/dist/{PmGuard-b10TGXEi-G3N0G_Wg.js.map → PmGuard-BZE-y4In-D_pUm5MP.js.map} +1 -1
- package/dist/{ProductEditPage-C1thoKHu-URQaZ6st.js → ProductEditPage-BVlVUCtD-BR-tJ5Wb.js} +475 -472
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +1 -0
- package/dist/{ProductsPage-CupVmOD4-D45a_hf-.js → ProductsPage-DvNHIeZt-BoOOJJtk.js} +36 -35
- package/dist/ProductsPage-DvNHIeZt-BoOOJJtk.js.map +1 -0
- package/dist/{PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js → PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js} +214 -187
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +1 -0
- package/dist/{PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js → PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js} +80 -80
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +1 -0
- package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js → PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js} +29 -29
- package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map → PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map} +1 -1
- package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js → PurchasesPage-DgL5T6BY-DePUuE9l.js} +31 -31
- package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js.map → PurchasesPage-DgL5T6BY-DePUuE9l.js.map} +1 -1
- package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js → SaleCreatePage-CZnIOydv-DKBw-qp7.js} +15 -15
- package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map → SaleCreatePage-CZnIOydv-DKBw-qp7.js.map} +1 -1
- package/dist/{SalesPage-D18DCseD-BxktGDRQ.js → SalesPage-DPIRrC_O-M8rqnK7z.js} +62 -62
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +1 -0
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +676 -0
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js.map +1 -0
- package/dist/{ShowFlywayQuery-D1y_4A1u.js → ShowFlywayQuery-DIOUdYfG.js} +26 -19
- package/dist/{ShowFlywayQuery-D1y_4A1u.js.map → ShowFlywayQuery-DIOUdYfG.js.map} +1 -1
- package/dist/{StorageUnitsPage-7EqwuMOI-BwUso1Th.js → StorageUnitsPage-BDRkdCjW-UF64rf7q.js} +195 -188
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +1 -0
- package/dist/{SubMenu-eEDhZUvh.js → SubMenu-BdMTYtC1.js} +5 -3
- package/dist/SubMenu-BdMTYtC1.js.map +1 -0
- package/dist/{TransactionsPage-DrH53pVS-BkhIGB6C.js → TransactionsPage-CqWTMNU8-Df6eGFDW.js} +48 -48
- package/dist/{TransactionsPage-DrH53pVS-BkhIGB6C.js.map → TransactionsPage-CqWTMNU8-Df6eGFDW.js.map} +1 -1
- package/dist/{TransferCreatePage-CuvoMrYH-DTTfHjz-.js → TransferCreatePage-DF7FZaTJ-CL79V3aR.js} +8 -8
- package/dist/{TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map → TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map} +1 -1
- package/dist/{TransfersPage-Cf701t8s-BBbN7cBf.js → TransfersPage-CGrRFaBF-cTwBUv0o.js} +69 -69
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +1 -0
- package/dist/TypeConfiguration-JbRCN6GR.js +114 -0
- package/dist/TypeConfiguration-JbRCN6GR.js.map +1 -0
- package/dist/{UserList-DgPxsnj2.js → UserList-L41Xw0Q6.js} +2 -2
- package/dist/{UserList-DgPxsnj2.js.map → UserList-L41Xw0Q6.js.map} +1 -1
- package/dist/Users-CsJ08Kjm.js +40 -0
- package/dist/{Users-Bpc4Sazd.js.map → Users-CsJ08Kjm.js.map} +1 -1
- package/dist/{VialsPage-8oAc1yFv-Cl3FUXBJ.js → VialsPage-rvvXjgZG-Oqo1v6kQ.js} +35 -35
- package/dist/{VialsPage-8oAc1yFv-Cl3FUXBJ.js.map → VialsPage-rvvXjgZG-Oqo1v6kQ.js.map} +1 -1
- package/dist/{constants-ClZJY2x1-MkSWn6TZ.js → constants-DpXnLsAB-D6lN5cjK.js} +58 -47
- package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +1 -0
- package/dist/{dashboardLayoutUtils-D1xCAxp3.js → dashboardLayoutUtils-CJivzaU1.js} +95 -92
- package/dist/dashboardLayoutUtils-CJivzaU1.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.lib-ETRQOzvE.js +894 -0
- package/dist/index.lib-ETRQOzvE.js.map +1 -0
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +36 -0
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js.map +1 -0
- package/package.json +1 -1
- package/dist/AccessRights-xrday-L1.js.map +0 -1
- package/dist/AddMenuConfiguration-e5BVXhmw.js +0 -8547
- package/dist/AddMenuConfiguration-e5BVXhmw.js.map +0 -1
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +0 -1
- package/dist/ConditionConfig-Ddz9halE.js +0 -395
- package/dist/ConditionConfig-Ddz9halE.js.map +0 -1
- package/dist/ConditionConfig.css +0 -1
- package/dist/EventConfig-BmLemzX3.js +0 -26
- package/dist/EventConfigurations-Bzh1qWXU.js +0 -450
- package/dist/EventConfigurations-Bzh1qWXU.js.map +0 -1
- package/dist/EventsExceptionModal-B2SRrnB1.js +0 -200
- package/dist/EventsExceptionModal-B2SRrnB1.js.map +0 -1
- package/dist/EventsSkeleton-BIcPks4T.js +0 -61
- package/dist/EventsSkeleton-BIcPks4T.js.map +0 -1
- package/dist/FeatureMenu-DYJmDt7q.js.map +0 -1
- package/dist/GrantPermissionModal-BDN66Atn.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +0 -1
- package/dist/ManageEventConfiguration-CoYcpjR9.js +0 -1085
- package/dist/ManageEventConfiguration-CoYcpjR9.js.map +0 -1
- package/dist/MobileAnalytics-pQoE8cG1.js +0 -16888
- package/dist/MobileAnalytics-pQoE8cG1.js.map +0 -1
- package/dist/MobileMenuManagement-Cf8IZlla.js +0 -108
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-BeveaX0C.js +0 -783
- package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-CM6VkdmY.js +0 -2046
- package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +0 -1
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +0 -1
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +0 -1
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +0 -1
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +0 -1
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +0 -1
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js.map +0 -1
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +0 -747
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +0 -1
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +0 -1
- package/dist/SubMenu-eEDhZUvh.js.map +0 -1
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +0 -1
- package/dist/TypeConfiguration-3O6ABrK-.js +0 -117
- package/dist/TypeConfiguration-3O6ABrK-.js.map +0 -1
- package/dist/Users-Bpc4Sazd.js +0 -41
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +0 -1
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +0 -1
- package/dist/index.lib-Dn8PMkeD.js +0 -862
- package/dist/index.lib-Dn8PMkeD.js.map +0 -1
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
import { jsx as n, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { useState as r, useMemo as p, useCallback as Ie, useEffect as K, Suspense as Z, lazy as le } from "react";
|
|
3
|
+
import Ne from "moment";
|
|
4
|
+
import { showToast as O } from "@/common/toaster/toaster";
|
|
5
|
+
import { r as We, t as Ae, a as Oe } from "./EventConfig-BY2cgGyx.js";
|
|
6
|
+
import I from "@/common/services/util/GeneralUtil";
|
|
7
|
+
import { Paper as Me, Box as g, Typography as w, InputAdornment as ee, IconButton as te, Tooltip as ke, Button as M, ToggleButtonGroup as _e, ToggleButton as ne, Chip as ae } from "@mui/material";
|
|
8
|
+
import ie from "@mui/material/Grid2";
|
|
9
|
+
import { useForm as Fe } from "react-hook-form";
|
|
10
|
+
import Be from "@/views/custom-components/CustomConfirmationModal";
|
|
11
|
+
import Le from "@/views/custom-components/CustomDropdown";
|
|
12
|
+
import Pe from "@/views/custom-components/DebouncedSearchInput";
|
|
13
|
+
import $e from "@/common/syncWithServer/SyncWithServerDialog";
|
|
14
|
+
import { getAssignedFeatures as ze } from "@/utils/feature.js";
|
|
15
|
+
import { useNavigate as De } from "react-router";
|
|
16
|
+
import Re from "@/hooks/useTrackEvent";
|
|
17
|
+
import { useTranslateProvider as Ue } from "@/common/languageTranslator/TranslationContext";
|
|
18
|
+
import Ge from "@/views/custom-components/CustomizedTable/CustomizedTableV2";
|
|
19
|
+
import f from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
20
|
+
import { l as re, E as oe, M as se, S as He, a as Ye, b as z, c as qe, T as Ve } from "./EventsUi-D6O9S7BK.js";
|
|
21
|
+
import './EventConfigurations.css';const Qe = le(() => import("./ShowFlywayQuery-DIOUdYfG.js")), je = le(() => import("./EventsExceptionModal-BX-ArkBE.js")), N = 40, Xe = (l, v) => {
|
|
22
|
+
if (!(l != null && l.trigerWhen)) return "—";
|
|
23
|
+
const u = [v(re(Ve, l.trigerWhen))];
|
|
24
|
+
if (l.day && u.push(`${v("day")} ${l.day}`), l.hour !== null && l.hour !== void 0) {
|
|
25
|
+
const k = String(l.hour).padStart(2, "0"), c = String(l.minute ?? 0).padStart(2, "0");
|
|
26
|
+
u.push(`${k}:${c}`);
|
|
27
|
+
} else l.minute && u.push(`${v("minute")} ${l.minute}`);
|
|
28
|
+
return u.join(" · ");
|
|
29
|
+
};
|
|
30
|
+
function gt() {
|
|
31
|
+
const l = De(), v = Re(), [u, k] = r(null), [c, ue] = r(!0), [b, D] = r(!1), [T, R] = r(!1), [E, _] = r(""), [x, S] = r(null), [a, F] = r({}), [ce, U] = r(!1), [de, fe] = r(""), [B, G] = r(null), [H, Y] = r(!1), { translate: t } = Ue(), [L, y] = r(!1), [q, V] = r(!1), [s, me] = r({}), { control: he, reset: pe } = Fe({
|
|
32
|
+
defaultValues: { eventType: "" }
|
|
33
|
+
}), [W, Q] = r(""), ge = async () => {
|
|
34
|
+
v("button_click", {
|
|
35
|
+
button_name: "refresh-events-button",
|
|
36
|
+
button_type: "reload",
|
|
37
|
+
button_id: "eventconfiguration-refresh-button"
|
|
38
|
+
}), A(c);
|
|
39
|
+
}, ve = p(
|
|
40
|
+
() => [
|
|
41
|
+
{ field: "name", label: t("Name"), align: "left", minWidth: 240 },
|
|
42
|
+
{
|
|
43
|
+
field: "eventType",
|
|
44
|
+
label: t("Event Type"),
|
|
45
|
+
align: "left",
|
|
46
|
+
minWidth: 150,
|
|
47
|
+
render: (e) => t(re(oe, e == null ? void 0 : e.eventType))
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
field: "trigerWhen",
|
|
51
|
+
label: t("Schedule"),
|
|
52
|
+
align: "left",
|
|
53
|
+
minWidth: 200,
|
|
54
|
+
render: (e) => Xe(e, t)
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
field: "state",
|
|
58
|
+
label: t("State"),
|
|
59
|
+
align: "left",
|
|
60
|
+
minWidth: 110,
|
|
61
|
+
render: (e) => /* @__PURE__ */ n(se, { meta: He, value: e == null ? void 0 : e.state, translate: t })
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
field: "status",
|
|
65
|
+
label: t("Last Run"),
|
|
66
|
+
align: "left",
|
|
67
|
+
minWidth: 130,
|
|
68
|
+
render: (e) => /* @__PURE__ */ n(
|
|
69
|
+
se,
|
|
70
|
+
{
|
|
71
|
+
meta: Ye,
|
|
72
|
+
value: e == null ? void 0 : e.status,
|
|
73
|
+
translate: t,
|
|
74
|
+
uppercase: !0
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
field: "completionTime",
|
|
80
|
+
label: t("Completed On"),
|
|
81
|
+
align: "left",
|
|
82
|
+
minWidth: 160,
|
|
83
|
+
render: (e) => e != null && e.completionTime ? Ne(e.completionTime).format("DD-MM-YYYY HH:mm") : "—"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
field: "Actions",
|
|
87
|
+
label: t("Actions"),
|
|
88
|
+
align: "left",
|
|
89
|
+
minWidth: 120
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
[t]
|
|
93
|
+
), ye = async () => {
|
|
94
|
+
try {
|
|
95
|
+
x === "TOGGLE_STATE" ? (S(null), y(!0), await Ae(a), O({
|
|
96
|
+
message: (a == null ? void 0 : a.state) === "ACTIVE" ? "Event marked inactive" : "Event marked active",
|
|
97
|
+
type: "success"
|
|
98
|
+
}), await A(c)) : x === "RUN_NOW" && (S(null), y(!0), await Oe(a == null ? void 0 : a.uuid), O({ message: "Event queued to run now", type: "success" }), await A(c));
|
|
99
|
+
} catch {
|
|
100
|
+
O({
|
|
101
|
+
message: "Could not complete that action. Please try again.",
|
|
102
|
+
type: "error"
|
|
103
|
+
}), y(!1);
|
|
104
|
+
}
|
|
105
|
+
}, Ce = () => G(() => null), be = (e) => {
|
|
106
|
+
l(`/ui/medplat/views/config/${e == null ? void 0 : e.uuid}`);
|
|
107
|
+
}, Te = Ie(
|
|
108
|
+
(e) => {
|
|
109
|
+
const i = I.hasCheckRights(
|
|
110
|
+
s == null ? void 0 : s["update.manage.event"]
|
|
111
|
+
), m = (e == null ? void 0 : e.eventType) === "TIMMER_BASED" || (e == null ? void 0 : e.eventType) === "RECURSION", d = [
|
|
112
|
+
i && {
|
|
113
|
+
label: t(
|
|
114
|
+
(e == null ? void 0 : e.state) === "ACTIVE" ? "Mark as Inactive" : "Mark as Active"
|
|
115
|
+
),
|
|
116
|
+
onClick: (o) => {
|
|
117
|
+
F(o), S("TOGGLE_STATE");
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
label: t("Sync With Server"),
|
|
122
|
+
onClick: (o) => G(o == null ? void 0 : o.uuid)
|
|
123
|
+
},
|
|
124
|
+
m && I.hasCheckRights(s == null ? void 0 : s["view.manage.event.runNow"]) && {
|
|
125
|
+
label: t("Run Event Now"),
|
|
126
|
+
onClick: (o) => {
|
|
127
|
+
F(o), S("RUN_NOW");
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
m && {
|
|
131
|
+
label: t("Show Exceptions"),
|
|
132
|
+
onClick: (o) => {
|
|
133
|
+
F(o), Y(!0);
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
label: t("Show Flyway Query"),
|
|
138
|
+
onClick: (o) => {
|
|
139
|
+
fe(o), U(!0);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
].filter(Boolean);
|
|
143
|
+
return [
|
|
144
|
+
i && {
|
|
145
|
+
label: "",
|
|
146
|
+
icon: /* @__PURE__ */ n(f, { iconName: "faPen" }),
|
|
147
|
+
onClick: be,
|
|
148
|
+
ariaLabel: t("Edit event"),
|
|
149
|
+
dataTestId: "event-configuration-edit-button"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
label: "",
|
|
153
|
+
icon: /* @__PURE__ */ n(f, { iconName: "faBars" }),
|
|
154
|
+
menuItems: d,
|
|
155
|
+
ariaLabel: t("More event actions"),
|
|
156
|
+
dataTestId: "event-configuration-menu-button"
|
|
157
|
+
}
|
|
158
|
+
].filter(Boolean);
|
|
159
|
+
},
|
|
160
|
+
[s, t]
|
|
161
|
+
);
|
|
162
|
+
K(() => {
|
|
163
|
+
(async () => {
|
|
164
|
+
const { data: i } = await ze(
|
|
165
|
+
"techo.notification.all"
|
|
166
|
+
);
|
|
167
|
+
i && me(JSON.parse(i));
|
|
168
|
+
})();
|
|
169
|
+
}, []);
|
|
170
|
+
const A = async (e) => {
|
|
171
|
+
try {
|
|
172
|
+
y(!0);
|
|
173
|
+
const i = await We(e), m = [...(i == null ? void 0 : i.data) || []].sort((d, o) => d.trigerWhen === null && o.trigerWhen !== null ? -1 : o.trigerWhen === null && d.trigerWhen !== null ? 1 : o.trigerWhen < d.trigerWhen ? -1 : o.trigerWhen > d.trigerWhen ? 1 : (d.day ?? 0) - (o.day ?? 0) || (d.hour ?? 0) - (o.hour ?? 0));
|
|
174
|
+
k(m), y(!1), V(!0);
|
|
175
|
+
} catch {
|
|
176
|
+
O({
|
|
177
|
+
message: "Could not load events. Please try again.",
|
|
178
|
+
type: "error"
|
|
179
|
+
}), y(!1), V(!0);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
K(() => {
|
|
183
|
+
A(c);
|
|
184
|
+
}, [c]);
|
|
185
|
+
const j = p(() => {
|
|
186
|
+
if (!u) return [];
|
|
187
|
+
const e = E.trim().toLowerCase();
|
|
188
|
+
return e ? u.filter(
|
|
189
|
+
(i) => {
|
|
190
|
+
var m;
|
|
191
|
+
return (m = i == null ? void 0 : i.name) == null ? void 0 : m.toLowerCase().includes(e);
|
|
192
|
+
}
|
|
193
|
+
) : u;
|
|
194
|
+
}, [u, E]), C = p(
|
|
195
|
+
() => j.filter(
|
|
196
|
+
(e) => !W || e.eventType === W
|
|
197
|
+
),
|
|
198
|
+
[j, W]
|
|
199
|
+
), Ee = p(
|
|
200
|
+
() => C.filter((e) => e.status === "EXCEPTION").length,
|
|
201
|
+
[C]
|
|
202
|
+
), xe = p(
|
|
203
|
+
() => C.filter((e) => e.status !== "COMPLETED").length,
|
|
204
|
+
[C]
|
|
205
|
+
), Se = p(() => {
|
|
206
|
+
const e = new Set(
|
|
207
|
+
(u || []).map((i) => i.eventType).filter(Boolean)
|
|
208
|
+
);
|
|
209
|
+
return oe.filter((i) => e.has(i.value)).map((i) => ({
|
|
210
|
+
value: i.value,
|
|
211
|
+
label: t(i.label)
|
|
212
|
+
}));
|
|
213
|
+
}, [u, t]), P = p(
|
|
214
|
+
() => C.filter((e) => !(b && e.status !== "EXCEPTION" || T && e.status === "COMPLETED")),
|
|
215
|
+
[C, b, T]
|
|
216
|
+
), X = !!E || !!W || b || T, J = () => {
|
|
217
|
+
_(""), D(!1), R(!1), Q(""), pe({ eventType: "" });
|
|
218
|
+
}, $ = !L && s !== null && !I.hasCheckRights(s == null ? void 0 : s["view.manage.event"]);
|
|
219
|
+
return /* @__PURE__ */ h(ie, { container: !0, className: "event-configuration", spacing: 2, children: [
|
|
220
|
+
B && /* @__PURE__ */ n(
|
|
221
|
+
$e,
|
|
222
|
+
{
|
|
223
|
+
isOpen: !!B,
|
|
224
|
+
handleClose: Ce,
|
|
225
|
+
featureUUID: B,
|
|
226
|
+
dataTestId: "eventconfiguration-dialog-syncwithserver"
|
|
227
|
+
}
|
|
228
|
+
),
|
|
229
|
+
/* @__PURE__ */ n(Z, { children: H && /* @__PURE__ */ n(
|
|
230
|
+
je,
|
|
231
|
+
{
|
|
232
|
+
id: a == null ? void 0 : a.id,
|
|
233
|
+
eventName: a == null ? void 0 : a.name,
|
|
234
|
+
open: H,
|
|
235
|
+
handleClose: () => Y(!1),
|
|
236
|
+
dataTestId: "eventconfiguration-modal-viewexception"
|
|
237
|
+
}
|
|
238
|
+
) }),
|
|
239
|
+
/* @__PURE__ */ n(Z, { children: /* @__PURE__ */ n(
|
|
240
|
+
Qe,
|
|
241
|
+
{
|
|
242
|
+
configuredQuery: de,
|
|
243
|
+
open: ce,
|
|
244
|
+
onClose: () => {
|
|
245
|
+
U(!1);
|
|
246
|
+
},
|
|
247
|
+
dataTestId: "eventconfiguration-query-showflywayquery"
|
|
248
|
+
}
|
|
249
|
+
) }),
|
|
250
|
+
/* @__PURE__ */ n(
|
|
251
|
+
Be,
|
|
252
|
+
{
|
|
253
|
+
description: x === "RUN_NOW" ? `${a == null ? void 0 : a.name} will be queued to run immediately, outside its schedule.` : (a == null ? void 0 : a.state) === "ACTIVE" ? `${a == null ? void 0 : a.name} will stop running on its schedule. You can turn it back on from this screen.` : `${a == null ? void 0 : a.name} will start running on its schedule again.`,
|
|
254
|
+
title: t(x === "RUN_NOW" ? "Run this event now?" : (a == null ? void 0 : a.state) === "ACTIVE" ? "Mark as Inactive" : "Mark as Active"),
|
|
255
|
+
handleClick: ye,
|
|
256
|
+
open: !!x,
|
|
257
|
+
handleClose: () => S(null),
|
|
258
|
+
dataTestId: "eventconfiguration-modal-customconfirmation"
|
|
259
|
+
}
|
|
260
|
+
),
|
|
261
|
+
/* @__PURE__ */ n(ie, { size: { xs: 12 }, children: /* @__PURE__ */ n(
|
|
262
|
+
Me,
|
|
263
|
+
{
|
|
264
|
+
elevation: 0,
|
|
265
|
+
sx: {
|
|
266
|
+
p: { xs: 2.5, md: 3 },
|
|
267
|
+
mb: 3,
|
|
268
|
+
border: "1px solid",
|
|
269
|
+
borderColor: "divider",
|
|
270
|
+
borderRadius: (e) => `${e.shape.cardRadius}px`,
|
|
271
|
+
backgroundColor: "background.paper"
|
|
272
|
+
},
|
|
273
|
+
children: /* @__PURE__ */ h(g, { sx: { display: "flex", flexDirection: "column", gap: 3 }, children: [
|
|
274
|
+
/* @__PURE__ */ h(
|
|
275
|
+
g,
|
|
276
|
+
{
|
|
277
|
+
sx: {
|
|
278
|
+
display: "flex",
|
|
279
|
+
justifyContent: "space-between",
|
|
280
|
+
alignItems: "flex-start",
|
|
281
|
+
flexWrap: "wrap",
|
|
282
|
+
gap: 2
|
|
283
|
+
},
|
|
284
|
+
children: [
|
|
285
|
+
/* @__PURE__ */ h(g, { sx: { minWidth: { xs: "100%", lg: "40%" } }, children: [
|
|
286
|
+
/* @__PURE__ */ n(
|
|
287
|
+
w,
|
|
288
|
+
{
|
|
289
|
+
variant: "h5",
|
|
290
|
+
component: "h1",
|
|
291
|
+
sx: { fontWeight: 800, color: "text.primary", mb: 0.5 },
|
|
292
|
+
children: t("Events")
|
|
293
|
+
}
|
|
294
|
+
),
|
|
295
|
+
/* @__PURE__ */ n(w, { variant: "body2", color: "text.secondary", children: t(
|
|
296
|
+
"Rules that watch for something happening and act on it - sending a notification, running a query, raising an exception."
|
|
297
|
+
) })
|
|
298
|
+
] }),
|
|
299
|
+
!$ && /* @__PURE__ */ h(
|
|
300
|
+
g,
|
|
301
|
+
{
|
|
302
|
+
sx: {
|
|
303
|
+
display: "flex",
|
|
304
|
+
alignItems: "center",
|
|
305
|
+
gap: 1.5,
|
|
306
|
+
flexWrap: "wrap"
|
|
307
|
+
},
|
|
308
|
+
children: [
|
|
309
|
+
/* @__PURE__ */ n(
|
|
310
|
+
Pe,
|
|
311
|
+
{
|
|
312
|
+
value: E,
|
|
313
|
+
onChange: _,
|
|
314
|
+
placeholder: t("Search by name"),
|
|
315
|
+
autoFocus: !1,
|
|
316
|
+
size: "small",
|
|
317
|
+
"data-testid": "eventconfiguration-textfield-searchquery",
|
|
318
|
+
sx: { width: { xs: "100%", sm: 240 } },
|
|
319
|
+
slotProps: {
|
|
320
|
+
htmlInput: { "aria-label": t("Search by name") }
|
|
321
|
+
},
|
|
322
|
+
inputProps: {
|
|
323
|
+
startAdornment: /* @__PURE__ */ n(ee, { position: "start", children: /* @__PURE__ */ n(g, { sx: { color: "text.disabled", display: "flex" }, children: /* @__PURE__ */ n(
|
|
324
|
+
f,
|
|
325
|
+
{
|
|
326
|
+
iconName: "faMagnifyingGlass",
|
|
327
|
+
size: "sm"
|
|
328
|
+
}
|
|
329
|
+
) }) }),
|
|
330
|
+
endAdornment: E ? /* @__PURE__ */ n(ee, { position: "end", children: /* @__PURE__ */ n(
|
|
331
|
+
te,
|
|
332
|
+
{
|
|
333
|
+
size: "small",
|
|
334
|
+
"aria-label": t("Clear search"),
|
|
335
|
+
onClick: () => _(""),
|
|
336
|
+
children: /* @__PURE__ */ n(f, { iconName: "faXmark", size: "sm" })
|
|
337
|
+
}
|
|
338
|
+
) }) : null
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
),
|
|
342
|
+
/* @__PURE__ */ n(ke, { title: t("Refresh"), children: /* @__PURE__ */ n(
|
|
343
|
+
te,
|
|
344
|
+
{
|
|
345
|
+
size: "small",
|
|
346
|
+
onClick: ge,
|
|
347
|
+
"aria-label": t("Refresh"),
|
|
348
|
+
"data-testid": "eventconfiguration-refresh-button",
|
|
349
|
+
children: /* @__PURE__ */ n(f, { iconName: "faRotateRight" })
|
|
350
|
+
}
|
|
351
|
+
) }),
|
|
352
|
+
I.hasCheckRights(
|
|
353
|
+
s == null ? void 0 : s["create.manage.event"]
|
|
354
|
+
) && /* @__PURE__ */ n(
|
|
355
|
+
M,
|
|
356
|
+
{
|
|
357
|
+
size: "small",
|
|
358
|
+
variant: "contained",
|
|
359
|
+
startIcon: /* @__PURE__ */ n(f, { iconName: "faPlus" }),
|
|
360
|
+
"data-testid": "eventconfiguration-configurenew-button",
|
|
361
|
+
onClick: () => {
|
|
362
|
+
v("button_click", {
|
|
363
|
+
button_name: "configure-new-event-button",
|
|
364
|
+
button_type: "navigate",
|
|
365
|
+
button_id: "eventconfiguration-configurenew-button"
|
|
366
|
+
}), l("/ui/medplat/views/config");
|
|
367
|
+
},
|
|
368
|
+
children: t("Configure New")
|
|
369
|
+
}
|
|
370
|
+
)
|
|
371
|
+
]
|
|
372
|
+
}
|
|
373
|
+
)
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
),
|
|
377
|
+
!$ && /* ── Filters ── */
|
|
378
|
+
/* @__PURE__ */ h(
|
|
379
|
+
g,
|
|
380
|
+
{
|
|
381
|
+
sx: {
|
|
382
|
+
display: "flex",
|
|
383
|
+
alignItems: "center",
|
|
384
|
+
gap: 1.5,
|
|
385
|
+
flexWrap: "wrap"
|
|
386
|
+
},
|
|
387
|
+
children: [
|
|
388
|
+
/* @__PURE__ */ h(
|
|
389
|
+
_e,
|
|
390
|
+
{
|
|
391
|
+
exclusive: !0,
|
|
392
|
+
size: "small",
|
|
393
|
+
value: c,
|
|
394
|
+
onChange: (e, i) => {
|
|
395
|
+
i !== null && ue(i);
|
|
396
|
+
},
|
|
397
|
+
"aria-label": t("State"),
|
|
398
|
+
sx: {
|
|
399
|
+
height: N,
|
|
400
|
+
"& .MuiToggleButton-root": { py: 0 }
|
|
401
|
+
},
|
|
402
|
+
children: [
|
|
403
|
+
/* @__PURE__ */ n(ne, { value: !0, "data-testid": "eventconfiguration-active-toggle", children: t("Active") }),
|
|
404
|
+
/* @__PURE__ */ n(ne, { value: !1, "data-testid": "eventconfiguration-inactive-toggle", children: t("Inactive") })
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
),
|
|
408
|
+
/* @__PURE__ */ n(
|
|
409
|
+
ae,
|
|
410
|
+
{
|
|
411
|
+
label: `${t("Exception")} (${Ee})`,
|
|
412
|
+
variant: b ? "filled" : "outlined",
|
|
413
|
+
color: b ? "primary" : "default",
|
|
414
|
+
onClick: () => D((e) => !e),
|
|
415
|
+
sx: {
|
|
416
|
+
height: N,
|
|
417
|
+
"& .MuiChip-label": { px: 1.75 }
|
|
418
|
+
},
|
|
419
|
+
"data-testid": "eventconfiguration-Exception-checkbox"
|
|
420
|
+
}
|
|
421
|
+
),
|
|
422
|
+
/* @__PURE__ */ n(
|
|
423
|
+
ae,
|
|
424
|
+
{
|
|
425
|
+
label: `${t("Not Completed")} (${xe})`,
|
|
426
|
+
variant: T ? "filled" : "outlined",
|
|
427
|
+
color: T ? "primary" : "default",
|
|
428
|
+
onClick: () => R((e) => !e),
|
|
429
|
+
sx: {
|
|
430
|
+
height: N,
|
|
431
|
+
"& .MuiChip-label": { px: 1.75 }
|
|
432
|
+
},
|
|
433
|
+
"data-testid": "eventconfiguration-notcompleted-checkbox"
|
|
434
|
+
}
|
|
435
|
+
),
|
|
436
|
+
/* @__PURE__ */ n(
|
|
437
|
+
g,
|
|
438
|
+
{
|
|
439
|
+
sx: {
|
|
440
|
+
width: { xs: "100%", sm: 200 },
|
|
441
|
+
"& .MuiOutlinedInput-root": {
|
|
442
|
+
height: N
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
children: /* @__PURE__ */ n(
|
|
446
|
+
Le,
|
|
447
|
+
{
|
|
448
|
+
control: he,
|
|
449
|
+
name: "eventType",
|
|
450
|
+
options: Se,
|
|
451
|
+
displayName: "label",
|
|
452
|
+
optionValue: "value",
|
|
453
|
+
isNullSelectDisabled: !1,
|
|
454
|
+
placeholder: t("All event types"),
|
|
455
|
+
onChange: (e) => {
|
|
456
|
+
var i;
|
|
457
|
+
return Q(((i = e == null ? void 0 : e.target) == null ? void 0 : i.value) || "");
|
|
458
|
+
},
|
|
459
|
+
dataTestId: "eventconfiguration-eventtype-filter"
|
|
460
|
+
}
|
|
461
|
+
)
|
|
462
|
+
}
|
|
463
|
+
),
|
|
464
|
+
/* @__PURE__ */ n(
|
|
465
|
+
M,
|
|
466
|
+
{
|
|
467
|
+
size: "small",
|
|
468
|
+
variant: "text",
|
|
469
|
+
disabled: !X,
|
|
470
|
+
startIcon: /* @__PURE__ */ n(f, { iconName: "faXmark", size: "sm" }),
|
|
471
|
+
onClick: J,
|
|
472
|
+
sx: { height: N },
|
|
473
|
+
"data-testid": "eventconfiguration-clear-filters",
|
|
474
|
+
children: t("Clear filters")
|
|
475
|
+
}
|
|
476
|
+
)
|
|
477
|
+
]
|
|
478
|
+
}
|
|
479
|
+
),
|
|
480
|
+
$ ? /* @__PURE__ */ n(
|
|
481
|
+
z,
|
|
482
|
+
{
|
|
483
|
+
icon: "faLock",
|
|
484
|
+
title: t("You don't have access to Events"),
|
|
485
|
+
body: t(
|
|
486
|
+
"Your role doesn't include permission to view events. Ask an administrator to grant the view right for this module."
|
|
487
|
+
),
|
|
488
|
+
dataTestId: "no-permission-message"
|
|
489
|
+
}
|
|
490
|
+
) : L ? /* @__PURE__ */ n(qe, {}) : q && P.length === 0 && X ? /* @__PURE__ */ n(
|
|
491
|
+
z,
|
|
492
|
+
{
|
|
493
|
+
icon: "faMagnifyingGlass",
|
|
494
|
+
title: t("No events match these filters"),
|
|
495
|
+
body: t(
|
|
496
|
+
"Try a shorter search term, another event type, or switch between Active and Inactive."
|
|
497
|
+
),
|
|
498
|
+
action: /* @__PURE__ */ n(M, { variant: "text", size: "small", onClick: J, children: t("Clear filters") }),
|
|
499
|
+
dataTestId: "eventconfiguration-no-results"
|
|
500
|
+
}
|
|
501
|
+
) : q && P.length === 0 ? /* @__PURE__ */ n(
|
|
502
|
+
z,
|
|
503
|
+
{
|
|
504
|
+
icon: "faBolt",
|
|
505
|
+
title: t(c ? "No active events" : "No inactive events"),
|
|
506
|
+
body: t(
|
|
507
|
+
"Configure an event to react to a form submission, a schedule, or a manual trigger."
|
|
508
|
+
),
|
|
509
|
+
action: I.hasCheckRights(s == null ? void 0 : s["create.manage.event"]) ? /* @__PURE__ */ n(
|
|
510
|
+
M,
|
|
511
|
+
{
|
|
512
|
+
variant: "contained",
|
|
513
|
+
size: "small",
|
|
514
|
+
startIcon: /* @__PURE__ */ n(f, { iconName: "faPlus" }),
|
|
515
|
+
onClick: () => l("/ui/medplat/views/config"),
|
|
516
|
+
children: t("Configure New")
|
|
517
|
+
}
|
|
518
|
+
) : null,
|
|
519
|
+
dataTestId: "eventconfiguration-no-events"
|
|
520
|
+
}
|
|
521
|
+
) : /* @__PURE__ */ n(
|
|
522
|
+
Ge,
|
|
523
|
+
{
|
|
524
|
+
columns: ve,
|
|
525
|
+
tableData: P,
|
|
526
|
+
actions: Te,
|
|
527
|
+
paginationConfig: { pagination: !1 },
|
|
528
|
+
dataTestId: "eventconfiguration-table-configuredevents",
|
|
529
|
+
isLoading: L,
|
|
530
|
+
rowUniqueKey: "uuid",
|
|
531
|
+
disableHtml: !0,
|
|
532
|
+
showFullContent: !1,
|
|
533
|
+
styleConfig: { tableStyle: { maxHeight: 180 } }
|
|
534
|
+
}
|
|
535
|
+
)
|
|
536
|
+
] })
|
|
537
|
+
}
|
|
538
|
+
) })
|
|
539
|
+
] });
|
|
540
|
+
}
|
|
541
|
+
export {
|
|
542
|
+
gt as default
|
|
543
|
+
};
|
|
544
|
+
//# sourceMappingURL=EventConfigurations-CUPEN5BV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventConfigurations-CUPEN5BV.js","sources":["../src/views/Events/EventConfigurations.jsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n lazy,\n Suspense,\n} from \"react\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveAll, runEvent, toggleState } from \"../../services/EventConfig\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport {\n Button,\n Typography,\n Box,\n Chip,\n IconButton,\n InputAdornment,\n Paper,\n ToggleButton,\n ToggleButtonGroup,\n Tooltip,\n} from \"@mui/material\";\nimport \"./Styles/EventConfiguration.scss\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useForm } from \"react-hook-form\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport DebouncedSearchInput from \"@/views/custom-components/DebouncedSearchInput\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nconst ShowFlywayQuery = lazy(() => import(\"./ShowFlywayQuery\"));\nconst EventsExceptionModal = lazy(() => import(\"./EventsExceptionModal\"));\nimport { useNavigate } from \"react-router\";\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport {\n EmptyState,\n EVENT_TYPES,\n labelOf,\n MetaChip,\n STATE_META,\n STATUS_META,\n TRIGGER_WHEN,\n} from \"./components/EventsUi\";\n\n/** Shared height for every control in the filter row, so the row reads as one. */\nconst FILTER_CONTROL_HEIGHT = 40;\n\n/**\n * @method describeSchedule\n * @description Turns the stored trigger fields into one readable line\n * (\"Monthly · day 3 · 09:30\") instead of the raw enum plus loose numbers.\n * @param {Object} row - An event configuration row.\n * @param {Function} translate - Translation function.\n * @returns {string} A human-readable schedule.\n */\nconst describeSchedule = (row, translate) => {\n if (!row?.trigerWhen) return \"—\";\n\n const parts = [translate(labelOf(TRIGGER_WHEN, row.trigerWhen))];\n\n if (row.day) {\n parts.push(`${translate(\"day\")} ${row.day}`);\n }\n if (row.hour !== null && row.hour !== undefined) {\n const hour = String(row.hour).padStart(2, \"0\");\n const minute = String(row.minute ?? 0).padStart(2, \"0\");\n parts.push(`${hour}:${minute}`);\n } else if (row.minute) {\n parts.push(`${translate(\"minute\")} ${row.minute}`);\n }\n\n return parts.join(\" · \");\n};\n\n/**\n * EventConfigurations component for managing and displaying configured events.\n *\n * @module EventConfigurations\n * @function\n */\nfunction EventConfigurations() {\n const navigate = useNavigate();\n const trackEvent = useTrackEvent();\n const [configuredEvents, setConfiguredEvents] = useState(null);\n\n const [fetchActiveOnly, setFetchActiveOnly] = useState(true);\n const [showExceptionOnly, setShowExceptionOnly] = useState(false);\n const [showNonCompletedOnly, setShowNonCompletedOnly] = useState(false);\n\n const [search, setSearch] = useState(\"\");\n const [pendingAction, setPendingAction] = useState(null);\n const [clickedRow, setClickedRow] = useState({});\n const [openFlywayQuery, setOpenFlywayQuery] = useState(false);\n const [configuredQuery, setConfiguredQuery] = useState(\"\");\n const [featureUuid, setFeatureUuid] = useState(null);\n const [showException, setShowException] = useState(false);\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const [hasLoaded, setHasLoaded] = useState(false);\n const [rights, setRights] = useState({});\n\n // The event-type filter reuses the same field component as the forms, so it\n // needs a form context of its own.\n const { control: filterControl, reset: resetFilterForm } = useForm({\n defaultValues: { eventType: \"\" },\n });\n const [selectedEventType, setSelectedEventType] = useState(\"\");\n\n /**\n * Refreshes the event configurations based on the current state filter.\n *\n * @async\n * @function onRefresh\n */\n const onRefresh = async () => {\n trackEvent(\"button_click\", {\n button_name: \"refresh-events-button\",\n button_type: \"reload\",\n button_id: \"eventconfiguration-refresh-button\",\n });\n loadInitialData(fetchActiveOnly);\n };\n\n const headers = useMemo(\n () => [\n { field: \"name\", label: translate(\"Name\"), align: \"left\", minWidth: 240 },\n {\n field: \"eventType\",\n label: translate(\"Event Type\"),\n align: \"left\",\n minWidth: 150,\n render: (row) => translate(labelOf(EVENT_TYPES, row?.eventType)),\n },\n {\n field: \"trigerWhen\",\n label: translate(\"Schedule\"),\n align: \"left\",\n minWidth: 200,\n render: (row) => describeSchedule(row, translate),\n },\n {\n field: \"state\",\n label: translate(\"State\"),\n align: \"left\",\n minWidth: 110,\n render: (row) => (\n <MetaChip meta={STATE_META} value={row?.state} translate={translate} />\n ),\n },\n {\n field: \"status\",\n label: translate(\"Last Run\"),\n align: \"left\",\n minWidth: 130,\n render: (row) => (\n <MetaChip\n meta={STATUS_META}\n value={row?.status}\n translate={translate}\n uppercase\n />\n ),\n },\n {\n field: \"completionTime\",\n label: translate(\"Completed On\"),\n align: \"left\",\n minWidth: 160,\n render: (row) =>\n row?.completionTime\n ? moment(row.completionTime).format(\"DD-MM-YYYY HH:mm\")\n : \"—\",\n },\n {\n field: \"Actions\",\n label: translate(\"Actions\"),\n align: \"left\",\n minWidth: 120,\n },\n ],\n [translate],\n );\n\n /**\n * @function handleToggleState\n * Runs whichever action the confirmation dialog was opened for.\n *\n * @returns {Promise<void>}\n */\n const handleToggleState = async () => {\n try {\n if (pendingAction === \"TOGGLE_STATE\") {\n setPendingAction(null);\n setIsLoading(true);\n await toggleState(clickedRow);\n showToast({\n message:\n clickedRow?.state === \"ACTIVE\"\n ? \"Event marked inactive\"\n : \"Event marked active\",\n type: \"success\",\n });\n await loadInitialData(fetchActiveOnly);\n } else if (pendingAction === \"RUN_NOW\") {\n setPendingAction(null);\n setIsLoading(true);\n await runEvent(clickedRow?.uuid);\n showToast({ message: \"Event queued to run now\", type: \"success\" });\n await loadInitialData(fetchActiveOnly);\n }\n } catch {\n showToast({\n message: \"Could not complete that action. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n }\n };\n\n const handleSyncClose = () => setFeatureUuid(() => null);\n\n /**\n * @function handleEdit\n * Navigates to the edit page for the selected row.\n *\n * @param {Object} row - The selected row to edit.\n */\n const handleEdit = (row) => {\n navigate(`/ui/medplat/views/config/${row?.uuid}`);\n };\n\n // Every row handler takes the row it was invoked on: `CustomActionIcons`\n // passes it to each menu item, and reading it back from state would act on\n // a stale selection.\n const actions = useCallback(\n (row) => {\n const canUpdate = GeneralUtil.hasCheckRights(\n rights?.[\"update.manage.event\"],\n );\n const isScheduled =\n row?.eventType === \"TIMMER_BASED\" || row?.eventType === \"RECURSION\";\n\n const menu = [\n canUpdate && {\n label: translate(\n row?.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\",\n ),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"TOGGLE_STATE\");\n },\n },\n {\n label: translate(\"Sync With Server\"),\n onClick: (clicked) => setFeatureUuid(clicked?.uuid),\n },\n isScheduled &&\n GeneralUtil.hasCheckRights(rights?.[\"view.manage.event.runNow\"]) && {\n label: translate(\"Run Event Now\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"RUN_NOW\");\n },\n },\n isScheduled && {\n label: translate(\"Show Exceptions\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setShowException(true);\n },\n },\n {\n label: translate(\"Show Flyway Query\"),\n onClick: (clicked) => {\n setConfiguredQuery(clicked);\n setOpenFlywayQuery(true);\n },\n },\n ].filter(Boolean);\n\n return [\n canUpdate && {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faPen\" />,\n onClick: handleEdit,\n ariaLabel: translate(\"Edit event\"),\n dataTestId: \"event-configuration-edit-button\",\n },\n {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faBars\" />,\n menuItems: menu,\n ariaLabel: translate(\"More event actions\"),\n dataTestId: \"event-configuration-menu-button\",\n },\n ].filter(Boolean);\n },\n [rights, translate],\n );\n\n useEffect(() => {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\n \"techo.notification.all\",\n );\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n }, []);\n\n /**\n * @function loadInitialData\n * Loads the configured events for the selected state filter.\n *\n * @param {boolean} isActive - Whether to load active events.\n */\n const loadInitialData = async (isActive) => {\n try {\n setIsLoading(true);\n const response = await retrieveAll(isActive);\n // Sorted so the scheduled events with the nearest cadence group\n // together; the raw rows are kept intact for the row actions.\n const rows = [...(response?.data || [])].sort((a, b) => {\n if (a.trigerWhen === null && b.trigerWhen !== null) return -1;\n if (b.trigerWhen === null && a.trigerWhen !== null) return 1;\n if (b.trigerWhen < a.trigerWhen) return -1;\n if (b.trigerWhen > a.trigerWhen) return 1;\n return (a.day ?? 0) - (b.day ?? 0) || (a.hour ?? 0) - (b.hour ?? 0);\n });\n setConfiguredEvents(rows);\n setIsLoading(false);\n setHasLoaded(true);\n } catch {\n showToast({\n message: \"Could not load events. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n setHasLoaded(true);\n }\n };\n\n useEffect(() => {\n loadInitialData(fetchActiveOnly);\n }, [fetchActiveOnly]);\n\n const searchedEvents = useMemo(() => {\n if (!configuredEvents) return [];\n const term = search.trim().toLowerCase();\n if (!term) return configuredEvents;\n return configuredEvents.filter((event) =>\n event?.name?.toLowerCase().includes(term),\n );\n }, [configuredEvents, search]);\n\n const typeFilteredEvents = useMemo(\n () =>\n searchedEvents.filter(\n (event) => !selectedEventType || event.eventType === selectedEventType,\n ),\n [searchedEvents, selectedEventType],\n );\n\n const exceptionCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status === \"EXCEPTION\").length,\n [typeFilteredEvents],\n );\n\n const nonCompletedCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status !== \"COMPLETED\").length,\n [typeFilteredEvents],\n );\n\n const eventTypeOptions = useMemo(() => {\n const present = new Set(\n (configuredEvents || []).map((event) => event.eventType).filter(Boolean),\n );\n return EVENT_TYPES.filter((type) => present.has(type.value)).map((type) => ({\n value: type.value,\n label: translate(type.label),\n }));\n }, [configuredEvents, translate]);\n\n const visibleTableEvents = useMemo(\n () =>\n typeFilteredEvents.filter((event) => {\n if (showExceptionOnly && event.status !== \"EXCEPTION\") return false;\n if (showNonCompletedOnly && event.status === \"COMPLETED\") return false;\n return true;\n }),\n [typeFilteredEvents, showExceptionOnly, showNonCompletedOnly],\n );\n\n const isFiltered =\n Boolean(search) ||\n Boolean(selectedEventType) ||\n showExceptionOnly ||\n showNonCompletedOnly;\n\n const clearFilters = () => {\n setSearch(\"\");\n setShowExceptionOnly(false);\n setShowNonCompletedOnly(false);\n setSelectedEventType(\"\");\n resetFilterForm({ eventType: \"\" });\n };\n\n const isDenied =\n !isLoading &&\n rights !== null &&\n !GeneralUtil.hasCheckRights(rights?.[\"view.manage.event\"]);\n\n return (\n <Grid container className=\"event-configuration\" spacing={2}>\n {featureUuid && (\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={handleSyncClose}\n featureUUID={featureUuid}\n dataTestId=\"eventconfiguration-dialog-syncwithserver\"\n />\n )}\n <Suspense>\n {showException && (\n <EventsExceptionModal\n id={clickedRow?.id}\n eventName={clickedRow?.name}\n open={showException}\n handleClose={() => setShowException(false)}\n dataTestId=\"eventconfiguration-modal-viewexception\"\n />\n )}\n </Suspense>\n <Suspense>\n <ShowFlywayQuery\n configuredQuery={configuredQuery}\n open={openFlywayQuery}\n onClose={() => {\n setOpenFlywayQuery(false);\n }}\n dataTestId=\"eventconfiguration-query-showflywayquery\"\n />\n </Suspense>\n <CustomConfirmationModal\n description={\n pendingAction === \"RUN_NOW\"\n ? `${clickedRow?.name} will be queued to run immediately, outside its schedule.`\n : clickedRow?.state === \"ACTIVE\"\n ? `${clickedRow?.name} will stop running on its schedule. You can turn it back on from this screen.`\n : `${clickedRow?.name} will start running on its schedule again.`\n }\n title={\n pendingAction === \"RUN_NOW\"\n ? translate(\"Run this event now?\")\n : translate(\n clickedRow?.state === \"ACTIVE\"\n ? \"Mark as Inactive\"\n : \"Mark as Active\",\n )\n }\n handleClick={handleToggleState}\n open={Boolean(pendingAction)}\n handleClose={() => setPendingAction(null)}\n dataTestId=\"eventconfiguration-modal-customconfirmation\"\n />\n\n <Grid size={{ xs: 12 }}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n mb: 3,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {/* ── Header: title block (left) + actions (right) ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {translate(\"Events\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Rules that watch for something happening and act on it - sending a notification, running a query, raising an exception.\",\n )}\n </Typography>\n </Box>\n\n {!isDenied && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <DebouncedSearchInput\n value={search}\n onChange={setSearch}\n placeholder={translate(\"Search by name\")}\n autoFocus={false}\n size=\"small\"\n data-testid=\"eventconfiguration-textfield-searchquery\"\n sx={{ width: { xs: \"100%\", sm: 240 } }}\n slotProps={{\n htmlInput: { \"aria-label\": translate(\"Search by name\") },\n }}\n inputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Box sx={{ color: \"text.disabled\", display: \"flex\" }}>\n <FontAwesomeIcons\n iconName=\"faMagnifyingGlass\"\n size=\"sm\"\n />\n </Box>\n </InputAdornment>\n ),\n endAdornment: search ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={translate(\"Clear search\")}\n onClick={() => setSearch(\"\")}\n >\n <FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n />\n <Tooltip title={translate(\"Refresh\")}>\n <IconButton\n size=\"small\"\n onClick={onRefresh}\n aria-label={translate(\"Refresh\")}\n data-testid=\"eventconfiguration-refresh-button\"\n >\n <FontAwesomeIcons iconName=\"faRotateRight\" />\n </IconButton>\n </Tooltip>\n {GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.event\"],\n ) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n data-testid=\"eventconfiguration-configurenew-button\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"configure-new-event-button\",\n button_type: \"navigate\",\n button_id: \"eventconfiguration-configurenew-button\",\n });\n navigate(\"/ui/medplat/views/config\");\n }}\n >\n {translate(\"Configure New\")}\n </Button>\n )}\n </Box>\n )}\n </Box>\n\n {!isDenied && (\n /* ── Filters ── */\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n value={fetchActiveOnly}\n onChange={(event, next) => {\n if (next !== null) setFetchActiveOnly(next);\n }}\n aria-label={translate(\"State\")}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiToggleButton-root\": { py: 0 },\n }}\n >\n <ToggleButton value={true} data-testid=\"eventconfiguration-active-toggle\">\n {translate(\"Active\")}\n </ToggleButton>\n <ToggleButton value={false} data-testid=\"eventconfiguration-inactive-toggle\">\n {translate(\"Inactive\")}\n </ToggleButton>\n </ToggleButtonGroup>\n\n <Chip\n label={`${translate(\"Exception\")} (${exceptionCount})`}\n variant={showExceptionOnly ? \"filled\" : \"outlined\"}\n color={showExceptionOnly ? \"primary\" : \"default\"}\n onClick={() => setShowExceptionOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-Exception-checkbox\"\n />\n <Chip\n label={`${translate(\"Not Completed\")} (${nonCompletedCount})`}\n variant={showNonCompletedOnly ? \"filled\" : \"outlined\"}\n color={showNonCompletedOnly ? \"primary\" : \"default\"}\n onClick={() => setShowNonCompletedOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-notcompleted-checkbox\"\n />\n\n <Box\n sx={{\n width: { xs: \"100%\", sm: 200 },\n \"& .MuiOutlinedInput-root\": {\n height: FILTER_CONTROL_HEIGHT,\n },\n }}\n >\n <CustomDropdown\n control={filterControl}\n name=\"eventType\"\n options={eventTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n isNullSelectDisabled={false}\n placeholder={translate(\"All event types\")}\n onChange={(event) =>\n setSelectedEventType(event?.target?.value || \"\")\n }\n dataTestId=\"eventconfiguration-eventtype-filter\"\n />\n </Box>\n\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!isFiltered}\n startIcon={<FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />}\n onClick={clearFilters}\n sx={{ height: FILTER_CONTROL_HEIGHT }}\n data-testid=\"eventconfiguration-clear-filters\"\n >\n {translate(\"Clear filters\")}\n </Button>\n </Box>\n )}\n\n {isDenied ? (\n <EmptyState\n icon=\"faLock\"\n title={translate(\"You don't have access to Events\")}\n body={translate(\n \"Your role doesn't include permission to view events. Ask an administrator to grant the view right for this module.\",\n )}\n dataTestId=\"no-permission-message\"\n />\n ) : isLoading ? (\n <EventConfigurationSkeleton />\n ) : hasLoaded && visibleTableEvents.length === 0 && isFiltered ? (\n <EmptyState\n icon=\"faMagnifyingGlass\"\n title={translate(\"No events match these filters\")}\n body={translate(\n \"Try a shorter search term, another event type, or switch between Active and Inactive.\",\n )}\n action={\n <Button variant=\"text\" size=\"small\" onClick={clearFilters}>\n {translate(\"Clear filters\")}\n </Button>\n }\n dataTestId=\"eventconfiguration-no-results\"\n />\n ) : hasLoaded && visibleTableEvents.length === 0 ? (\n <EmptyState\n icon=\"faBolt\"\n title={\n fetchActiveOnly\n ? translate(\"No active events\")\n : translate(\"No inactive events\")\n }\n body={translate(\n \"Configure an event to react to a form submission, a schedule, or a manual trigger.\",\n )}\n action={\n GeneralUtil.hasCheckRights(rights?.[\"create.manage.event\"]) ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={() => navigate(\"/ui/medplat/views/config\")}\n >\n {translate(\"Configure New\")}\n </Button>\n ) : null\n }\n dataTestId=\"eventconfiguration-no-events\"\n />\n ) : (\n <CustomizedTable\n columns={headers}\n tableData={visibleTableEvents}\n actions={actions}\n paginationConfig={{ pagination: false }}\n dataTestId=\"eventconfiguration-table-configuredevents\"\n isLoading={isLoading}\n rowUniqueKey=\"uuid\"\n disableHtml\n showFullContent={false}\n styleConfig={{ tableStyle: { maxHeight: 180 } }}\n />\n )}\n </Box>\n </Paper>\n </Grid>\n </Grid>\n );\n}\n\nexport default EventConfigurations;\n"],"names":["ShowFlywayQuery","lazy","EventsExceptionModal","FILTER_CONTROL_HEIGHT","describeSchedule","row","translate","parts","labelOf","TRIGGER_WHEN","hour","minute","EventConfigurations","navigate","useNavigate","trackEvent","useTrackEvent","configuredEvents","setConfiguredEvents","useState","fetchActiveOnly","setFetchActiveOnly","showExceptionOnly","setShowExceptionOnly","showNonCompletedOnly","setShowNonCompletedOnly","search","setSearch","pendingAction","setPendingAction","clickedRow","setClickedRow","openFlywayQuery","setOpenFlywayQuery","configuredQuery","setConfiguredQuery","featureUuid","setFeatureUuid","showException","setShowException","useTranslateProvider","isLoading","setIsLoading","hasLoaded","setHasLoaded","rights","setRights","filterControl","resetFilterForm","useForm","selectedEventType","setSelectedEventType","onRefresh","loadInitialData","headers","useMemo","EVENT_TYPES","jsx","MetaChip","STATE_META","STATUS_META","moment","handleToggleState","toggleState","showToast","runEvent","handleSyncClose","handleEdit","actions","useCallback","canUpdate","GeneralUtil","isScheduled","menu","clicked","FontAwesomeIcons","useEffect","featureJson","getAssignedFeatures","isActive","response","retrieveAll","rows","a","b","searchedEvents","term","event","_a","typeFilteredEvents","exceptionCount","nonCompletedCount","eventTypeOptions","present","type","visibleTableEvents","isFiltered","clearFilters","isDenied","Grid","SyncWithServerDialog","Suspense","CustomConfirmationModal","Paper","t","jsxs","Box","Typography","DebouncedSearchInput","InputAdornment","IconButton","Tooltip","Button","ToggleButtonGroup","next","ToggleButton","Chip","current","CustomDropdown","EmptyState","EventConfigurationSkeleton","CustomizedTable"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.event-configuration{margin-top:20px
|
|
1
|
+
.event-configuration{margin-top:20px;margin-bottom:50px}
|