@argusoft/medplat-core 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/{AccessRights-xrday-L1.js → AccessRights-DBjTQA1-.js} +395 -390
  2. package/dist/AccessRights-DBjTQA1-.js.map +1 -0
  3. package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
  4. package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
  5. package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
  6. package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
  7. package/dist/AddMenuConfiguration.css +1 -1
  8. package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +43 -43
  9. package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
  10. package/dist/{CategoriesPage-BsS5IQh3-B03lWRY5.js → CategoriesPage-BprQEYJw-CclreTv1.js} +109 -102
  11. package/dist/CategoriesPage-BprQEYJw-CclreTv1.js.map +1 -0
  12. package/dist/{ChangePasswordModalCore-BPsJquTS.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
  13. package/dist/{ChangePasswordModalCore-BPsJquTS.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
  14. package/dist/ConditionConfig-Bpm6OoV5.js +408 -0
  15. package/dist/ConditionConfig-Bpm6OoV5.js.map +1 -0
  16. package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +32 -32
  17. package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
  18. package/dist/EntityManagement-BGwJGl9k.js +62 -0
  19. package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
  20. package/dist/EventConfig-BY2cgGyx.js +27 -0
  21. package/dist/{EventConfig-BmLemzX3.js.map → EventConfig-BY2cgGyx.js.map} +1 -1
  22. package/dist/EventConfigurations-B-z7xHh_.js +544 -0
  23. package/dist/EventConfigurations-B-z7xHh_.js.map +1 -0
  24. package/dist/EventConfigurations.css +1 -1
  25. package/dist/EventsExceptionModal-DafomIv6.js +188 -0
  26. package/dist/EventsExceptionModal-DafomIv6.js.map +1 -0
  27. package/dist/EventsUi-Dl_yckSA.js +263 -0
  28. package/dist/EventsUi-Dl_yckSA.js.map +1 -0
  29. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
  30. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
  31. package/dist/{FeatureMenu-DYJmDt7q.js → FeatureMenu-Kc73yPHH.js} +9 -5
  32. package/dist/FeatureMenu-Kc73yPHH.js.map +1 -0
  33. package/dist/{FhirServerList-DuTwnngN.js → FhirServerList-CrIHMAxz.js} +16 -16
  34. package/dist/{FhirServerList-DuTwnngN.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
  35. package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
  36. package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
  37. package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
  38. package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
  39. package/dist/{GrantPermissionModal-BDN66Atn.js → GrantPermissionModal-D7iNZd0M.js} +54 -51
  40. package/dist/GrantPermissionModal-D7iNZd0M.js.map +1 -0
  41. package/dist/ImmunizationConfigurationBase-lKsJZMak.js +8060 -0
  42. package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
  43. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
  44. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
  45. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
  46. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
  47. package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
  48. package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
  49. package/dist/ManageEventConfiguration-DqPbn3Oi.js +1216 -0
  50. package/dist/ManageEventConfiguration-DqPbn3Oi.js.map +1 -0
  51. package/dist/ManageEventConfiguration.css +1 -1
  52. package/dist/ManageRole-CyfpySt9.js +981 -0
  53. package/dist/ManageRole-CyfpySt9.js.map +1 -0
  54. package/dist/{ManageUser-DCFkUMV9.js → ManageUser-Dm0l833u.js} +286 -286
  55. package/dist/{ManageUser-DCFkUMV9.js.map → ManageUser-Dm0l833u.js.map} +1 -1
  56. package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +46 -46
  57. package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
  58. package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
  59. package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
  60. package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
  61. package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
  62. package/dist/MobileTypeEventConfigModal-DodU3beR.js +752 -0
  63. package/dist/MobileTypeEventConfigModal-DodU3beR.js.map +1 -0
  64. package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
  65. package/dist/NewServerManagement-BdayO78D.js.map +1 -0
  66. package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
  67. package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
  68. package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +58 -58
  69. package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
  70. package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +37 -37
  71. package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
  72. package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
  73. package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
  74. package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
  75. package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
  76. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
  77. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
  78. package/dist/{PickupsPage-Ctpghavs-CUp4uIZq.js → PickupsPage-BWblMlic-CWkgeBw0.js} +132 -132
  79. package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
  80. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
  81. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
  82. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
  83. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
  84. package/dist/{ProductsPage-CupVmOD4-D45a_hf-.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +44 -43
  85. package/dist/ProductsPage-BI22nPb4-CQBjnc-n.js.map +1 -0
  86. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
  87. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
  88. package/dist/{PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +428 -418
  89. package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
  90. package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +65 -65
  91. package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
  92. package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +55 -55
  93. package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
  94. package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
  95. package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
  96. package/dist/Roles-BoNGJhtR.js +19 -0
  97. package/dist/Roles-BoNGJhtR.js.map +1 -0
  98. package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +39 -39
  99. package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
  100. package/dist/{SalesPage-D18DCseD-BxktGDRQ.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +61 -61
  101. package/dist/{SalesPage-D18DCseD-BxktGDRQ.js.map → SalesPage-eF9Yr42z-BQ9FlXC3.js.map} +1 -1
  102. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
  103. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
  104. package/dist/{ShowFlywayQuery-D1y_4A1u.js → ShowFlywayQuery-DIOUdYfG.js} +26 -19
  105. package/dist/{ShowFlywayQuery-D1y_4A1u.js.map → ShowFlywayQuery-DIOUdYfG.js.map} +1 -1
  106. package/dist/{StorageUnitsPage-7EqwuMOI-BwUso1Th.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +253 -223
  107. package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
  108. package/dist/{SubMenu-eEDhZUvh.js → SubMenu-OO2zhKiu.js} +5 -3
  109. package/dist/SubMenu-OO2zhKiu.js.map +1 -0
  110. package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
  111. package/dist/TableDetails-Cc40dEUs.js.map +1 -0
  112. package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
  113. package/dist/TableList-B5tX4wII.js.map +1 -0
  114. package/dist/{TransactionsPage-DrH53pVS-BkhIGB6C.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +195 -180
  115. package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
  116. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
  117. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
  118. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
  119. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
  120. package/dist/TypeConfiguration-EaFiOzRE.js +114 -0
  121. package/dist/TypeConfiguration-EaFiOzRE.js.map +1 -0
  122. package/dist/UserList-Cf5B-o_1.js +1904 -0
  123. package/dist/UserList-Cf5B-o_1.js.map +1 -0
  124. package/dist/Users-MC7txo1V.js +43 -0
  125. package/dist/{Users-Bpc4Sazd.js.map → Users-MC7txo1V.js.map} +1 -1
  126. package/dist/VaccineEducation-T_UE57Ef.js +231 -0
  127. package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
  128. package/dist/VaccineEducation.css +1 -0
  129. package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
  130. package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
  131. package/dist/VaccineEducationConfigurator.css +4 -0
  132. package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
  133. package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
  134. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
  135. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
  136. package/dist/{constants-ClZJY2x1-MkSWn6TZ.js → constants-BTpJFQe_-CYPZIqQF.js} +166 -56
  137. package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
  138. package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
  139. package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
  140. package/dist/index-mfoqII2U.js +524 -0
  141. package/dist/index-mfoqII2U.js.map +1 -0
  142. package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
  143. package/dist/index-o8Pyt1Bt.js.map +1 -0
  144. package/dist/index.css +1 -1
  145. package/dist/index.js +1 -1
  146. package/dist/index.lib-BySa9-Z-.js +936 -0
  147. package/dist/index.lib-BySa9-Z-.js.map +1 -0
  148. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
  149. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
  150. package/package.json +5 -1
  151. package/dist/AccessRights-xrday-L1.js.map +0 -1
  152. package/dist/AddMenuConfiguration-e5BVXhmw.js +0 -8547
  153. package/dist/AddMenuConfiguration-e5BVXhmw.js.map +0 -1
  154. package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +0 -1
  155. package/dist/ConditionConfig-Ddz9halE.js +0 -395
  156. package/dist/ConditionConfig-Ddz9halE.js.map +0 -1
  157. package/dist/ConditionConfig.css +0 -1
  158. package/dist/EntityManagement-CPQL6qBj.js +0 -50
  159. package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
  160. package/dist/EventConfig-BmLemzX3.js +0 -26
  161. package/dist/EventConfigurations-Bzh1qWXU.js +0 -450
  162. package/dist/EventConfigurations-Bzh1qWXU.js.map +0 -1
  163. package/dist/EventsExceptionModal-B2SRrnB1.js +0 -200
  164. package/dist/EventsExceptionModal-B2SRrnB1.js.map +0 -1
  165. package/dist/EventsSkeleton-BIcPks4T.js +0 -61
  166. package/dist/EventsSkeleton-BIcPks4T.js.map +0 -1
  167. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +0 -79
  168. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +0 -1
  169. package/dist/FeatureMenu-DYJmDt7q.js.map +0 -1
  170. package/dist/GrantPermissionModal-BDN66Atn.js.map +0 -1
  171. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +0 -7639
  172. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +0 -1
  173. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +0 -665
  174. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +0 -1
  175. package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
  176. package/dist/ManageEventConfiguration-CoYcpjR9.js +0 -1085
  177. package/dist/ManageEventConfiguration-CoYcpjR9.js.map +0 -1
  178. package/dist/ManageRole-CNZBRKGU.js +0 -776
  179. package/dist/ManageRole-CNZBRKGU.js.map +0 -1
  180. package/dist/MobileAnalytics-pQoE8cG1.js +0 -16888
  181. package/dist/MobileAnalytics-pQoE8cG1.js.map +0 -1
  182. package/dist/MobileMenuManagement-Cf8IZlla.js +0 -108
  183. package/dist/MobileMenuManagement-Cf8IZlla.js.map +0 -1
  184. package/dist/MobileTypeEventConfigModal-BeveaX0C.js +0 -783
  185. package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +0 -1
  186. package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
  187. package/dist/OtherTypeEventConfigModal-CM6VkdmY.js +0 -2046
  188. package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +0 -1
  189. package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
  190. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +0 -783
  191. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +0 -1
  192. package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +0 -1
  193. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +0 -599
  194. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +0 -1
  195. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +0 -1302
  196. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +0 -1
  197. package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +0 -1
  198. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +0 -648
  199. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +0 -1
  200. package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +0 -1
  201. package/dist/Roles-BIyiic67.js +0 -14
  202. package/dist/Roles-BIyiic67.js.map +0 -1
  203. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +0 -747
  204. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +0 -1
  205. package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +0 -1
  206. package/dist/SubMenu-eEDhZUvh.js.map +0 -1
  207. package/dist/TableDetails-BtafRxXb.js.map +0 -1
  208. package/dist/TableList-Dpo6dO7S.js.map +0 -1
  209. package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +0 -1
  210. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +0 -315
  211. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +0 -1
  212. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +0 -476
  213. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +0 -1
  214. package/dist/TypeConfiguration-3O6ABrK-.js +0 -117
  215. package/dist/TypeConfiguration-3O6ABrK-.js.map +0 -1
  216. package/dist/UserList-DgPxsnj2.js +0 -1129
  217. package/dist/UserList-DgPxsnj2.js.map +0 -1
  218. package/dist/Users-Bpc4Sazd.js +0 -41
  219. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +0 -321
  220. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +0 -1
  221. package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +0 -1
  222. package/dist/dashboardLayoutUtils-D1xCAxp3.js +0 -405
  223. package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +0 -1
  224. package/dist/index-D9YNFPn9.js.map +0 -1
  225. package/dist/index.lib-Dn8PMkeD.js +0 -862
  226. 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-Dl_yckSA.js";
21
+ import './EventConfigurations.css';const Qe = le(() => import("./ShowFlywayQuery-DIOUdYfG.js")), je = le(() => import("./EventsExceptionModal-DafomIv6.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-B-z7xHh_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventConfigurations-B-z7xHh_.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!important;margin-bottom:50px!important}
1
+ .event-configuration{margin-top:20px;margin-bottom:50px}