@argusoft/medplat-core 1.0.29 → 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-DUgY6ewy.js +1031 -0
- package/dist/AccessRights-DUgY6ewy.js.map +1 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
- package/dist/{AddFeatures-v3TmGQee.js → AddFeatures-D1sU8RjY.js} +2 -2
- package/dist/{AddFeatures-v3TmGQee.js.map → AddFeatures-D1sU8RjY.js.map} +1 -1
- package/dist/AddLabelModal-Bq-wRqv9.js +631 -0
- package/dist/AddLabelModal-Bq-wRqv9.js.map +1 -0
- package/dist/AddMenuConfiguration-c6ZKiN0i.js +8898 -0
- package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +1 -0
- package/dist/AppModal-CCtrQ5Tr.js +394 -0
- package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
- package/dist/BrandsPage-DMw2vT0u-BVhvhc6J.js +387 -0
- package/dist/BrandsPage-DMw2vT0u-BVhvhc6J.js.map +1 -0
- package/dist/CategoriesPage-D3ihx9Gi-CT58g0ry.js +398 -0
- package/dist/CategoriesPage-D3ihx9Gi-CT58g0ry.js.map +1 -0
- package/dist/{ChangePasswordModalCore-DutQAZOx.js → ChangePasswordModalCore-lQ9GamH1.js} +1605 -1610
- package/dist/ChangePasswordModalCore-lQ9GamH1.js.map +1 -0
- package/dist/ConditionConfig-BQBmBHaM.js +408 -0
- package/dist/ConditionConfig-BQBmBHaM.js.map +1 -0
- package/dist/DashboardPage-asr2XDRu-uOOlX9Vq.js +435 -0
- package/dist/DashboardPage-asr2XDRu-uOOlX9Vq.js.map +1 -0
- package/dist/EventConfig-BY2cgGyx.js +27 -0
- package/dist/EventConfig-BY2cgGyx.js.map +1 -0
- 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-DYl_PDyt-Cbwo2tAY.js +79 -0
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +1 -0
- package/dist/FeatureMenu-CHsBbw3W.js +525 -0
- package/dist/FeatureMenu-CHsBbw3W.js.map +1 -0
- package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-iXBPkRVF.js} +22 -22
- package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-iXBPkRVF.js.map} +1 -1
- package/dist/{FhirServerWizard-Db6Hm4bQ.js → FhirServerWizard-DZI8Olku.js} +15 -15
- package/dist/{FhirServerWizard-Db6Hm4bQ.js.map → FhirServerWizard-DZI8Olku.js.map} +1 -1
- package/dist/FlywayQuery-CQygj51V.js +179 -0
- package/dist/FlywayQuery-CQygj51V.js.map +1 -0
- package/dist/GrantPermissionModal-D7iNZd0M.js +239 -0
- package/dist/GrantPermissionModal-D7iNZd0M.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js +8019 -0
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js +369 -0
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js.map +1 -0
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js +665 -0
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js.map +1 -0
- package/dist/LanguagesModal-B3NTebYT.js +352 -0
- package/dist/LanguagesModal-B3NTebYT.js.map +1 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js +4475 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +1 -0
- package/dist/ManageEventConfiguration-DqW3krT6.js +1216 -0
- package/dist/ManageEventConfiguration-DqW3krT6.js.map +1 -0
- package/dist/ManageEventConfiguration.css +1 -1
- package/dist/{ManageNotification-CfhHlfxA.js → ManageNotification-C5MhV77Q.js} +2 -2
- package/dist/{ManageNotification-CfhHlfxA.js.map → ManageNotification-C5MhV77Q.js.map} +1 -1
- package/dist/{ManageRole-4Y2PP4dQ.js → ManageRole-CNZBRKGU.js} +2 -2
- package/dist/{ManageRole-4Y2PP4dQ.js.map → ManageRole-CNZBRKGU.js.map} +1 -1
- package/dist/ManageTranslation-vRiptUAP.js +833 -0
- package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
- package/dist/ManageTranslation.css +1 -1
- package/dist/{ManageUser-DDzyd9jm.js → ManageUser-DZltBina.js} +224 -224
- package/dist/{ManageUser-DDzyd9jm.js.map → ManageUser-DZltBina.js.map} +1 -1
- package/dist/MemberProfileCard-D5CgkTdJ-D2NgDJl3.js +272 -0
- package/dist/MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map +1 -0
- 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/NotificationFlywayQuery-BAHVjf6N.js +247 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
- package/dist/{NotificationList-BMFpNUJG.js → NotificationList-DEyRZEuM.js} +2 -2
- package/dist/{NotificationList-BMFpNUJG.js.map → NotificationList-DEyRZEuM.js.map} +1 -1
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js +1812 -0
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +1 -0
- package/dist/PaymentCreatePage-DfvSZ-kB-CckogYoe.js +482 -0
- package/dist/PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map +1 -0
- package/dist/PaymentsPage-DMNjYWAJ-ChO9IXmk.js +157 -0
- package/dist/PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map +1 -0
- package/dist/PermissionsModal-CCYkcKlC.js +151 -0
- package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
- package/dist/PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js +119 -0
- package/dist/PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map +1 -0
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +783 -0
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +1 -0
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js +818 -0
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +1 -0
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +599 -0
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +1 -0
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +1305 -0
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +1 -0
- package/dist/ProductsPage-DvNHIeZt-BoOOJJtk.js +253 -0
- package/dist/ProductsPage-DvNHIeZt-BoOOJJtk.js.map +1 -0
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +675 -0
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +1 -0
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js +1577 -0
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +1 -0
- package/dist/PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js +279 -0
- package/dist/PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map +1 -0
- package/dist/PurchasesPage-DgL5T6BY-DePUuE9l.js +293 -0
- package/dist/PurchasesPage-DgL5T6BY-DePUuE9l.js.map +1 -0
- package/dist/QueryBuilder-CXaBe6sr.js +478 -0
- package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
- package/dist/{RoleManagement-DEiBNfT8.js → RoleManagement-s8iNx2Mu.js} +145 -155
- package/dist/RoleManagement-s8iNx2Mu.js.map +1 -0
- package/dist/Roles-BIyiic67.js +14 -0
- package/dist/Roles-BIyiic67.js.map +1 -0
- package/dist/SaleCreatePage-CZnIOydv-DKBw-qp7.js +544 -0
- package/dist/SaleCreatePage-CZnIOydv-DKBw-qp7.js.map +1 -0
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js +315 -0
- 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-D10Olk5Z.js +154 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js.map +1 -0
- package/dist/{ShowFlywayQuery-DVRCd384.js → ShowFlywayQuery-DIOUdYfG.js} +170 -123
- package/dist/ShowFlywayQuery-DIOUdYfG.js.map +1 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js +728 -0
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +1 -0
- package/dist/SubMenu-BdMTYtC1.js +319 -0
- package/dist/SubMenu-BdMTYtC1.js.map +1 -0
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js +746 -0
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +1 -0
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +315 -0
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +1 -0
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +476 -0
- 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-Bc8gYxRL.js → UserList-L41Xw0Q6.js} +253 -236
- package/dist/{UserList-Bc8gYxRL.js.map → UserList-L41Xw0Q6.js.map} +1 -1
- package/dist/Users-CsJ08Kjm.js.map +1 -1
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +321 -0
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +1 -0
- package/dist/constants-DpXnLsAB-D6lN5cjK.js +445 -0
- 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/format-UOyOu75i-D0GyylyQ.js +63 -0
- package/dist/format-UOyOu75i-D0GyylyQ.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/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js +28 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js.map +1 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js +125 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js.map +1 -0
- package/package.json +4 -3
- package/dist/AccessRights-Zm8Obm4N.js +0 -1284
- package/dist/AccessRights-Zm8Obm4N.js.map +0 -1
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js +0 -313
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js.map +0 -1
- package/dist/AddLabelModal-DFllBVcd.js +0 -734
- package/dist/AddLabelModal-DFllBVcd.js.map +0 -1
- package/dist/AddMenuConfiguration-Ce91MhnU.js +0 -8547
- package/dist/AddMenuConfiguration-Ce91MhnU.js.map +0 -1
- package/dist/AppModal-CtG2GjD_.js +0 -428
- package/dist/AppModal-CtG2GjD_.js.map +0 -1
- package/dist/ChangePasswordModalCore-DutQAZOx.js.map +0 -1
- package/dist/ConditionConfig-B4Ffpgj3.js +0 -395
- package/dist/ConditionConfig-B4Ffpgj3.js.map +0 -1
- package/dist/ConditionConfig.css +0 -1
- package/dist/EventConfigurations-BJcURufo.js +0 -449
- package/dist/EventConfigurations-BJcURufo.js.map +0 -1
- package/dist/EventsExceptionModal-BlZtBQoR.js +0 -200
- package/dist/EventsExceptionModal-BlZtBQoR.js.map +0 -1
- package/dist/EventsSkeleton-DK6JDKAK.js +0 -83
- package/dist/EventsSkeleton-DK6JDKAK.js.map +0 -1
- package/dist/FeatureMenu-C3503UIX.js +0 -265
- package/dist/FeatureMenu-C3503UIX.js.map +0 -1
- package/dist/FlywayQuery-Cx2sly6g.js +0 -169
- package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js +0 -5895
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js.map +0 -1
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js +0 -344
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js.map +0 -1
- package/dist/LanguagesModal-D6VfaGrl.js +0 -394
- package/dist/LanguagesModal-D6VfaGrl.js.map +0 -1
- package/dist/ManageDynamicFeature-dt096fyj.js +0 -4189
- package/dist/ManageDynamicFeature-dt096fyj.js.map +0 -1
- package/dist/ManageEventConfiguration-BpSJszSX.js +0 -1017
- package/dist/ManageEventConfiguration-BpSJszSX.js.map +0 -1
- package/dist/ManageTranslation-B4C9-lWD.js +0 -625
- package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
- package/dist/MobileMenuManagement-Cf8IZlla.js +0 -108
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-DUkUYACe.js +0 -783
- package/dist/MobileTypeEventConfigModal-DUkUYACe.js.map +0 -1
- package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
- package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js +0 -2046
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js.map +0 -1
- package/dist/QueryBuilder-z7eqfd7D.js +0 -383
- package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
- package/dist/RoleManagement-DEiBNfT8.js.map +0 -1
- package/dist/ShowFlywayQuery-DVRCd384.js.map +0 -1
- package/dist/ShowFlywayQuery-tj42YQAS.js +0 -130
- package/dist/ShowFlywayQuery-tj42YQAS.js.map +0 -1
- package/dist/ShowQueryHistory-BDN0tzHg.js +0 -190
- package/dist/ShowQueryHistory-BDN0tzHg.js.map +0 -1
- package/dist/SubMenu-B072oEGb.js +0 -191
- package/dist/SubMenu-B072oEGb.js.map +0 -1
- package/dist/TypeConfiguration-C3xoP2Nb.js +0 -117
- package/dist/TypeConfiguration-C3xoP2Nb.js.map +0 -1
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +0 -1
- package/dist/index.lib-C3fwoM3y.js +0 -820
- package/dist/index.lib-C3fwoM3y.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileTypeEventConfigModal-CMcj7Ozp.js","sources":["../src/views/Events/MobileTypeEventConfigModal.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Grid from \"@mui/material/Grid2\";\nimport * as Yup from \"yup\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport { retrieveAllNotifications } from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport \"./Styles/ManageEventConfiguration.scss\";\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport {\n EmptyState,\n FieldHelp,\n FieldLabel,\n ImplicitParams,\n SectionHeading,\n} from \"./components/EventsUi\";\n// Define the validation schema using Yup\n\n/**\n * Modal component for configuring mobile type event notifications.\n * @module MobileTypeEventConfigModal\n * @param {Object} props - The props for the component.\n * @param {boolean} props.open - Whether the modal is open or not.\n * @param {Function} props.handleClose - Function to close the modal.\n * @param {Function} props.handleClick - Function to handle submission of the modal form.\n * @param {Object} props.type - Configuration type object passed to the modal.\n *\n * @returns {JSX.Element} The rendered modal component.\n */\nconst MobileTypeEventConfigModal = ({\n open,\n handleClose,\n handleClick,\n type,\n}) => {\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const trackEvent = useTrackEvent();\n const [notificationTypes, setNotificationTypes] = useState([]);\n const [mobileNotification, setMobileNotification] = useState(null);\n const [mobileNotificationConfigs, setMobileNotificationConfigs] = useState(\n [],\n );\n const [mobileConfigLength, setmobileConfigLength] = useState(0);\n const { translate } = useTranslateProvider();\n\n /**\n * @function handleDeleteConfig\n * Deletes a mobile notification configuration at the specified index.\n *\n * @param {number} index - The index of the configuration to delete.\n */\n const handleDeleteConfig = (index) => {\n if (mobileNotificationConfigs) {\n mobileNotificationConfigs.forEach((data, i) => {\n setValue(`notificationCode${i}`, \"\"); // or set it to a default value\n setValue(`numberOfDaysAddedForOnDate${i}`, 0);\n setValue(`numberOfDaysAddedForExpiryDate${i}`, 0);\n setValue(`numberOfDaysAddedForDueDate${i}`, 0);\n });\n }\n\n setMobileNotificationConfigs((prev) => {\n const newConfigs = prev.filter((_, i) => i !== index);\n\n // Reset form values after deleting\n newConfigs.forEach((data, i) => {\n setValue(`notificationCode${i}`, data.notificationCode); // or set it to a default value\n setValue(\n `numberOfDaysAddedForOnDate${i}`,\n data.numberOfDaysAddedForOnDate,\n );\n setValue(\n `numberOfDaysAddedForExpiryDate${i}`,\n data.numberOfDaysAddedForExpiryDate,\n );\n setValue(\n `numberOfDaysAddedForDueDate${i}`,\n data.numberOfDaysAddedForDueDate,\n );\n });\n\n return newConfigs;\n });\n };\n\n /**\n * Updates the specified field of a mobile notification configuration.\n * @function handleChange\n * @param {number} index - The index of the configuration to update.\n * @param {string} field - The field name to update.\n * @param {*} value - The new value to set for the specified field.\n */\n const handleChange = (index, field, value) => {\n const newConfigs = [...mobileNotificationConfigs];\n newConfigs[index][field] = value;\n setMobileNotificationConfigs(newConfigs);\n };\n\n const validationSchema = Yup.object().shape({\n mobileNotificationType: Yup.string().required(\"Select notification type\"),\n baseDateFieldName: Yup.string().required(\"Enter base date field\"),\n familyFieldName: Yup.string().test(\n \"is-required\",\n \"family name is required\",\n function (value) {\n if (\n mobileNotification?.notificationFor === \"FAMILY\" ||\n mobileNotification?.notificationFor === \"MEMBER\"\n ) {\n return !!value;\n }\n return true;\n },\n ),\n memberFieldName: Yup.string().test(\n \"is-required\",\n \"member name is required\",\n function (value) {\n if (mobileNotification?.notificationFor === \"MEMBER\") {\n return !!value;\n }\n return true;\n },\n ),\n userFieldName: Yup.string().test(\n \"is-required\",\n \"user name is required\",\n function (value) {\n if (mobileNotification?.notificationFor === \"USER\") {\n return !!value;\n }\n return true;\n },\n ),\n });\n\n const {\n control,\n handleSubmit,\n reset,\n setValue,\n setError,\n clearErrors,\n getValues,\n formState: { errors, isSubmitting },\n } = useForm({\n defaultValues: {},\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n useEffect(() => {\n if (type && notificationTypes.length > 0) {\n Object.keys(type)?.forEach((key) => {\n if (key === \"index\") {\n setValue(key, type[key]);\n }\n if (key === \"mobileNotificationType\") {\n const notification = notificationTypes.filter(\n (data) => data.id === parseInt(type[key]),\n );\n setMobileNotification(...notification);\n }\n if (key === \"mobileNotificationConfigs\" && type[key]) {\n setMobileNotificationConfigs(type[key] || []);\n setmobileConfigLength(type[key]?.length);\n } else if (type[key]) {\n setValue(key, type[key]);\n }\n });\n }\n }, [type, notificationTypes]);\n\n useEffect(() => {\n loadInitialState();\n }, []);\n\n const close = () => {\n trackEvent(\"conversion_event\", {\n form: formRef.current,\n form_name: \"Add Mobile Type Configuration\",\n submit: submitRef.current,\n }); // Use the current ref value\n\n handleClose();\n };\n\n /**\n * @async\n * @function loadInitialState\n * Loads the initial state by retrieving notification types.\n * If an error occurs during retrieval, a toast message is displayed.\n */\n const loadInitialState = async () => {\n try {\n const res = await retrieveAllNotifications(true);\n setNotificationTypes(res?.data);\n } catch {\n showToast({\n message: \"Could not load notification types. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n /**\n * @function addMobileNotification\n * Adds a new mobile notification configuration to the state.\n */\n const addMobileNotification = () => {\n let addconfig = true;\n mobileNotificationConfigs?.forEach((config, index) => {\n if (config.notificationCode === \"\") {\n addconfig = false;\n const fieldPath = `notificationCode${index}`;\n\n setError(fieldPath, {\n type: \"manual\",\n message: \"Enter # of days to add\",\n });\n }\n });\n if (addconfig) {\n setmobileConfigLength((prev) => prev + 1);\n setMobileNotificationConfigs([\n ...mobileNotificationConfigs,\n {\n notificationCode: \"\",\n numberOfDaysAddedForOnDate: 0,\n numberOfDaysAddedForDueDate: 0,\n numberOfDaysAddedForExpiryDate: 0,\n },\n ]);\n }\n };\n\n /**\n * @function onSubmit\n * Handles form submission and processes the input data.\n *\n * @param {Object} data - The form data submitted by the user.\n */\n\n const onSubmit = (data) => {\n data = JSON.parse(JSON.stringify(data));\n for (let i = 0; i < mobileConfigLength; i++) {\n delete data[`notificationCode${i}`];\n delete data[`numberOfDaysAddedForOnDate${i}`];\n delete data[`numberOfDaysAddedForExpiryDate${i}`];\n delete data[`numberOfDaysAddedForDueDate${i}`];\n }\n\n data.mobileNotificationConfigs = mobileNotificationConfigs;\n data.type = type?.type;\n handleClick(data);\n submitRef.current = true;\n close();\n reset();\n };\n\n const notificationTypeOptions = useMemo(\n () =>\n (notificationTypes || []).map((data) => ({\n value: data.id,\n label: data.notificationName,\n })),\n [notificationTypes],\n );\n\n return (\n <Dialog\n data-testid=\"mobiletypeeventconfigmodal-modal\"\n open={open}\n fullWidth\n maxWidth=\"lg\"\n onClose={() => {\n close();\n reset();\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 2,\n pt: 2,\n pb: 3,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n data-testid=\"mobiletypeeventconfigmodal-header\"\n >\n <Box>\n <Typography\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n >\n {translate(\"Add\")} {translate(\"Mobile Notification\")}{\" \"}\n {translate(\"Configuration\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Sends a notification into the mobile app, scheduled relative to a date the query returns.\",\n )}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={() => {\n close();\n reset();\n }}\n aria-label={translate(\"Close\")}\n data-testid=\"mobiletypeeventconfigmodal-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <Box\n component=\"form\"\n onSubmit={handleSubmit(onSubmit)}\n data-testid=\"mobiletypeeventconfigmodal-form\"\n ref={formRef}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n minHeight: 0,\n overflow: \"hidden\",\n }}\n >\n <DialogContent\n // MUI zeroes a DialogContent's top padding when it directly follows\n // a DialogTitle; this selector has the specificity to put it back.\n sx={{ \"&.MuiDialogContent-root\": { pt: 3 } }}\n >\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n <Box data-testid=\"mobiletypeeventconfigmodal-implicit-params\">\n <ImplicitParams\n params={type?.implicitParam}\n translate={translate}\n label={translate(\"Available Implicit Parameters\")}\n />\n </Box>\n\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <SectionHeading\n hint={translate(\"Who gets the notification, and when it is due\")}\n >\n {translate(\"Notification\")}\n </SectionHeading>\n\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-notification-type\"\n >\n <FieldLabel required>\n {translate(\"Notification\")} {translate(\"Type\")}\n </FieldLabel>\n <CustomDropdown\n control={control}\n name=\"mobileNotificationType\"\n options={notificationTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n isSortedOptions\n isNullSelectDisabled={false}\n placeholder={translate(\"None\")}\n onChange={(event) => {\n const notification = notificationTypes.filter(\n (data) => data.id === event?.target?.value,\n );\n setMobileNotification(...notification);\n }}\n dataTestId=\"mobiletypeeventconfigmodal-notification-select\"\n />\n </Grid>\n\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-base-date-field\"\n >\n <FieldLabel required>\n {translate(\"Base\")} {translate(\"Date\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </FieldLabel>\n <CustomTextField\n control={control}\n id=\"baseDateFieldName\"\n name=\"baseDateFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-base-date-input\"\n />\n <FieldHelp>\n {translate(\"The date the schedule counts from\")}\n </FieldHelp>\n </Grid>\n\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-ref-code-field\"\n >\n <FieldLabel>\n {translate(\"Ref\")} {translate(\"Code\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </FieldLabel>\n <CustomTextField\n control={control}\n id=\"refCode\"\n name=\"refCode\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-ref-code-input\"\n />\n </Grid>\n\n {mobileNotification?.notificationFor === \"USER\" && (\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-user-field\"\n >\n <FieldLabel required>\n {translate(\"User\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </FieldLabel>\n <CustomTextField\n control={control}\n id=\"userFieldName\"\n name=\"userFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-user-input\"\n />\n </Grid>\n )}\n\n {mobileNotification?.notificationFor === \"MEMBER\" && (\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-member-field\"\n >\n <FieldLabel required>\n {translate(\"Member\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </FieldLabel>\n <CustomTextField\n control={control}\n id=\"memberFieldName\"\n name=\"memberFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-member-input\"\n />\n </Grid>\n )}\n\n {(mobileNotification?.notificationFor === \"FAMILY\" ||\n mobileNotification?.notificationFor === \"MEMBER\") && (\n <Grid\n size={{ xs: 12, md: 4 }}\n data-testid=\"mobiletypeeventconfigmodal-family-field\"\n >\n <FieldLabel required>\n {translate(\"Family\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </FieldLabel>\n <CustomTextField\n control={control}\n id=\"familyFieldName\"\n name=\"familyFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-family-input\"\n />\n </Grid>\n )}\n </Grid>\n </Box>\n\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: 2,\n flexWrap: \"wrap\",\n }}\n >\n <SectionHeading\n hint={translate(\n \"Each row schedules one notification, counted in days from the base date.\",\n )}\n >\n {translate(\"Schedule\")}\n </SectionHeading>\n <Button\n variant=\"outlined\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" size=\"sm\" />}\n onClick={addMobileNotification}\n data-testid=\"mobiletypeeventconfigmodal-add-configuration\"\n >\n {translate(\"Add\")} {translate(\"Configuration\")}\n </Button>\n </Box>\n\n {mobileNotificationConfigs.length === 0 ? (\n <EmptyState\n icon=\"faCalendarDays\"\n title={translate(\"No schedule rows yet\")}\n body={translate(\n \"Add a row to say which notification goes out, and how many days from the base date.\",\n )}\n dataTestId=\"mobiletypeeventconfigmodal-no-config\"\n />\n ) : (\n <TableContainer\n component={Paper}\n elevation={0}\n variant=\"outlined\"\n className=\"mobile-type-event-config-table-container\"\n sx={{ borderRadius: (t) => `${t.shape.borderRadius}px` }}\n data-testid=\"mobiletypeeventconfigmodal-table\"\n >\n <Table\n size=\"small\"\n className=\"mobile-type-event-config-table\"\n aria-label={translate(\"Mobile notification schedule\")}\n >\n <TableHead>\n <TableRow>\n <TableCell>{translate(\"Code\")}</TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Schedule\")}\n </TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Due\")}\n </TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Expiry\")}\n </TableCell>\n <TableCell>{translate(\"Actions\")}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {mobileNotificationConfigs.map((config, index) => (\n <TableRow key={index + 1}>\n <TableCell>\n <Controller\n control={control}\n name={`notificationCode${index}`}\n defaultValue={config.notificationCode}\n render={({ field }) => (\n <TextField\n required\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n {...field}\n error={Boolean(\n errors[`notificationCode${index}`],\n )}\n helperText={\n errors[`notificationCode${index}`]?.message\n }\n onChange={(e) => {\n setValue(\n `notificationCode${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"notificationCode\",\n e.target.value,\n );\n const fieldPath = `notificationCode${index}`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message: \"Enter # of days to add\",\n });\n } else {\n clearErrors(fieldPath);\n }\n }}\n placeholder={translate(\"Notification code\")}\n onBlur={() => {\n if (field.value === \"\") {\n setError(`notificationCode${index}`, {\n type: \"manual\",\n message: \"Enter # of days to add\",\n });\n } else {\n clearErrors(`notificationCode${index}`);\n }\n }}\n data-testid={`mobiletypeeventconfigmodal-notification-code-input-${index}`}\n />\n )}\n />\n </TableCell>\n <TableCell>\n <Controller\n control={control}\n name={`numberOfDaysAddedForOnDate${index}`}\n defaultValue={config.numberOfDaysAddedForOnDate}\n render={({ field }) => (\n <TextField\n required\n fullWidth\n type=\"number\"\n variant=\"outlined\"\n size=\"small\"\n {...field}\n error={Boolean(\n errors[\n `numberOfDaysAddedForOnDate${index}`\n ],\n )}\n helperText={\n errors[`numberOfDaysAddedForOnDate${index}`]\n ?.message\n }\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForOnDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForOnDate\",\n Number(e.target.value),\n );\n const fieldPath = `numberOfDaysAddedForOnDate${index}`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message: \"Enter # of days to add\",\n });\n } else {\n clearErrors(fieldPath);\n }\n }}\n onBlur={() => {\n if (field.value === \"\") {\n setError(\n `numberOfDaysAddedForOnDate${index}`,\n {\n type: \"manual\",\n message: \"Enter # of days to add\",\n },\n );\n } else {\n clearErrors(\n `numberOfDaysAddedForOnDate${index}`,\n );\n }\n }}\n data-testid={`mobiletypeeventconfigmodal-on-date-input-${index}`}\n />\n )}\n />\n </TableCell>\n <TableCell>\n <Controller\n control={control}\n name={`numberOfDaysAddedForDueDate${index}`}\n defaultValue={config.numberOfDaysAddedForDueDate}\n render={({ field }) => (\n <TextField\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n type=\"number\"\n {...field}\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForDueDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForDueDate\",\n Number(e.target.value),\n );\n }}\n data-testid={`mobiletypeeventconfigmodal-due-date-input-${index}`}\n />\n )}\n />\n </TableCell>\n <TableCell>\n <Controller\n control={control}\n name={`numberOfDaysAddedForExpiryDate${index}`}\n defaultValue={\n config.numberOfDaysAddedForExpiryDate\n }\n render={({ field }) => (\n <TextField\n fullWidth\n variant=\"outlined\"\n type=\"number\"\n size=\"small\"\n {...field}\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForExpiryDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForExpiryDate\",\n Number(e.target.value),\n );\n }}\n data-testid={`mobiletypeeventconfigmodal-expiry-date-input-${index}`}\n />\n )}\n />\n </TableCell>\n <TableCell>\n <Tooltip title={translate(\"Delete row\")}>\n <IconButton\n color=\"error\"\n size=\"small\"\n aria-label={translate(\"Delete row\")}\n onClick={() => handleDeleteConfig(index)}\n data-testid={`mobiletypeeventconfigmodal-delete-button-${index}`}\n >\n <FontAwesomeIcons iconName=\"faTrash\" size=\"sm\" />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n )}\n </Box>\n </Box>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => {\n close();\n reset();\n }}\n data-testid=\"mobiletypeeventconfigmodal-close-button-action\"\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n disabled={isSubmitting}\n data-testid=\"mobiletypeeventconfigmodal-submit-button\"\n >\n {translate(\"Submit\")}\n </Button>\n </DialogActions>\n </Box>\n </Dialog>\n );\n};\n\nMobileTypeEventConfigModal.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n handleClick: PropTypes.any,\n type: PropTypes.any,\n};\n\nexport default MobileTypeEventConfigModal;\n"],"names":["MobileTypeEventConfigModal","open","handleClose","handleClick","type","formRef","useRef","submitRef","trackEvent","useTrackEvent","notificationTypes","setNotificationTypes","useState","mobileNotification","setMobileNotification","mobileNotificationConfigs","setMobileNotificationConfigs","mobileConfigLength","setmobileConfigLength","translate","useTranslateProvider","handleDeleteConfig","index","data","i","setValue","prev","newConfigs","_","handleChange","field","value","validationSchema","Yup","control","handleSubmit","reset","setError","clearErrors","getValues","errors","isSubmitting","useForm","yupResolver","useEffect","_a","key","notification","loadInitialState","close","res","retrieveAllNotifications","showToast","addMobileNotification","addconfig","config","fieldPath","onSubmit","notificationTypeOptions","useMemo","jsxs","Dialog","DialogTitle","Box","Typography","jsx","IconButton","FontAwesomeIcons","DialogContent","ImplicitParams","SectionHeading","Grid","FieldLabel","CustomDropdown","event","CustomTextField","FieldHelp","Button","EmptyState","TableContainer","Paper","t","Table","TableHead","TableRow","TableCell","TableBody","Controller","TextField","e","Tooltip","DialogActions","PropTypes"],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { jsxs as p, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslateProvider as D } from "@/common/languageTranslator/TranslationContext";
|
|
3
|
+
import { showToast as W } from "@/common/toaster/toaster";
|
|
4
|
+
import Q from "@/hooks/useTrackEvent";
|
|
5
|
+
import v from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
6
|
+
import U from "@/views/custom-components/PostgresEditor";
|
|
7
|
+
import { Dialog as H, DialogTitle as z, Box as F, Typography as q, IconButton as V, DialogContent as $, DialogActions as M, Button as h } from "@mui/material";
|
|
8
|
+
import E from "prop-types";
|
|
9
|
+
import "react";
|
|
10
|
+
import { useSelector as P } from "react-redux";
|
|
11
|
+
function K({
|
|
12
|
+
open: O,
|
|
13
|
+
handleClose: u,
|
|
14
|
+
data: i,
|
|
15
|
+
roleData: t
|
|
16
|
+
}) {
|
|
17
|
+
var g, w, A, T, b, N;
|
|
18
|
+
const { user: n } = P((r) => r.Authenticate), { translate: c } = D();
|
|
19
|
+
let e = "";
|
|
20
|
+
if (e = "", e += "begin;", e += `
|
|
21
|
+
`, e += "DO $$", e += `
|
|
22
|
+
`, e += "DECLARE", e += `
|
|
23
|
+
`, e += "var_notification_type_id integer;", e += `
|
|
24
|
+
`, e += "var_escalation_level_id integer;", e += `
|
|
25
|
+
`, e += "old_notification_type_id integer;", e += `
|
|
26
|
+
`, e += "old_escalation_level_id integer;", e += `
|
|
27
|
+
`, e += "BEGIN", e += `
|
|
28
|
+
`, i.code !== null || i.code !== void 0) {
|
|
29
|
+
e += "DELETE FROM notification_type_master WHERE code = '" + i.code + "'returning id into old_notification_type_id;", e += `
|
|
30
|
+
`, e += `
|
|
31
|
+
`, e += "INSERT INTO notification_type_master (", e += 'created_by,created_on,modified_by,modified_on,code,"name","type",role_id,state,notification_for,action_on_role_id,data_query,action_query,order_no,color_code,data_for,url_based_action,url,modal_based_action,modal_name,is_location_filter_required,fetch_up_to_level,required_up_to_level,is_fetch_according_aoi,"uuid"', e += ")", e += `
|
|
32
|
+
`, e += "VALUES (", e += (n == null ? void 0 : n.id) + ",", e += "now(),", e += (n == null ? void 0 : n.id) + ",", e += "now(),", e += i.code ? "'" + i.code + "'," : "null,", e += i.notificationName ? "'" + i.notificationName + "'," : "null,", e += i.notificationType ? "'" + i.notificationType + "'," : "null,", i.roleId !== null ? e += i.roleId + "," : e += "null,", e += i.state ? "'" + i.state + "'," : "null,", e += i.notificationFor ? "'" + i.notificationFor + "'," : "null,", e += "null,", i.dataQuery !== null ? e += "'" + ((g = i == null ? void 0 : i.dataQuery) == null ? void 0 : g.replace(/'/g, "''")) + "'," : e += "null,", i.actionQuery !== null ? e += "'" + ((w = i == null ? void 0 : i.actionQuery) == null ? void 0 : w.replace(/'/g, "''")) + "'," : e += "null,", i.orderNo !== null ? e += i.orderNo + "," : e += "null,", i.colorCode !== null ? e += "'" + i.colorCode + "'," : e += "null,", i.dataFor !== null ? e += "'" + i.dataFor + "'," : e += "null,", e += i.urlBasedAction ? i.urlBasedAction + "," : (() => {
|
|
33
|
+
let o;
|
|
34
|
+
return i.urlBasedAction === !1 ? o = "false," : o = "null,", o;
|
|
35
|
+
})(), i.url !== null ? e += "'" + i.url + "'," : e += "null,", e += i.modalBasedAction ? i.modalBasedAction + "," : (() => {
|
|
36
|
+
let o;
|
|
37
|
+
return i.modalBasedAction === !1 ? o = "false," : o = "null,", o;
|
|
38
|
+
})(), i.modalName !== null ? e += "'" + i.modalName + "'," : e += "null,", e += i.isLocationFilterRequired ? i.isLocationFilterRequired + "," : "null,", i.fetchUptoLevel !== null ? e += i.fetchUptoLevel + "," : e += "null,", i.requiredUptoLevel !== null ? e += i.requiredUptoLevel + "," : e += "null,", e += i.isFetchAccordingAOI ? i.isFetchAccordingAOI + "," : "null,", i.uuid !== null ? e += "'" + i.uuid + "'" : e += "null", e += ")", e += "returning id into var_notification_type_id;", e += `
|
|
39
|
+
`, e += `
|
|
40
|
+
`, e += "DELETE FROM notification_type_role_rel WHERE notification_type_id = old_notification_type_id;", e += `
|
|
41
|
+
`, e += `
|
|
42
|
+
`, e += "INSERT INTO notification_type_role_rel (notification_type_id, role_id)", e += `
|
|
43
|
+
`, e += "SELECT var_notification_type_id, id", e += `
|
|
44
|
+
`, e += "FROM um_role_master", e += `
|
|
45
|
+
`, e += "WHERE name IN (";
|
|
46
|
+
let r = (A = i.roles) == null ? void 0 : A.length, m = 0;
|
|
47
|
+
if (((T = i.roles) == null ? void 0 : T.length) > 0)
|
|
48
|
+
i.roles.forEach((o) => {
|
|
49
|
+
var d;
|
|
50
|
+
m += 1, ((d = t.find((f) => f.id === o)) == null ? void 0 : d.name) != null && (e += "'" + t.find((f) => f.id === o).name + "' "), m === r ? e += ");" : e += ",", e += `
|
|
51
|
+
`;
|
|
52
|
+
});
|
|
53
|
+
else {
|
|
54
|
+
m += 1;
|
|
55
|
+
const o = ((b = t == null ? void 0 : t.find((d) => d.id === (i == null ? void 0 : i.roleId))) == null ? void 0 : b.name) ?? null;
|
|
56
|
+
e += o ? `'${o}'` : "'null'", e += ");", e += `
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
((N = i.escalationLevels) == null ? void 0 : N.length) > 0 && i.escalationLevels.forEach((o) => {
|
|
60
|
+
var f, R, C, x, L, I;
|
|
61
|
+
let d = !1;
|
|
62
|
+
if (e += `
|
|
63
|
+
`, e += "DELETE FROM escalation_level_master WHERE uuid = '" + o.uuid + "' returning id into old_escalation_level_id;", e += `
|
|
64
|
+
`, e += `
|
|
65
|
+
`, e += 'INSERT INTO escalation_level_master ("name", notification_type_id, created_by, created_on, modified_by, modified_on,uuid)', e += "VALUES (", e += "'" + o.name + "',", e += "var_notification_type_id,", e += (n == null ? void 0 : n.id) + ",", e += "now(),", e += (n == null ? void 0 : n.id) + ",", e += "now(),", e += "'" + o.uuid + "'", e += ")", e += "returning id into var_escalation_level_id;", e += `
|
|
66
|
+
`, e += `
|
|
67
|
+
`, e += "DELETE FROM escalation_level_role_rel WHERE escalation_level_id = old_escalation_level_id ;", e += `
|
|
68
|
+
`, e += `
|
|
69
|
+
`, o.performAction != null && ((f = Object.keys(o.performAction)) == null ? void 0 : f.length) > 0) {
|
|
70
|
+
for (const y in o.performAction)
|
|
71
|
+
if (((R = t.find((s) => s.id === y)) == null ? void 0 : R.name) != null) {
|
|
72
|
+
d = !0;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (d) {
|
|
77
|
+
e += "INSERT INTO escalation_level_role_rel (escalation_level_id, role_id, can_perform_action)", e += `
|
|
78
|
+
`, e += "SELECT var_escalation_level_id, id, ";
|
|
79
|
+
let y = (C = Object.keys(o.performAction)) == null ? void 0 : C.length;
|
|
80
|
+
e += `
|
|
81
|
+
`, e += "CASE", e += `
|
|
82
|
+
`;
|
|
83
|
+
let s = 0;
|
|
84
|
+
for (const _ in o.performAction)
|
|
85
|
+
s++, ((x = t.find((a) => a.id === _)) == null ? void 0 : x.name) != null && (e += "WHEN um_role_master.name = '" + ((L = t.find((a) => a.id === _)) == null ? void 0 : L.name) + "' THEN " + o.performAction[_]), s === y && (e += `
|
|
86
|
+
`, e += "ELSE false", e += `
|
|
87
|
+
`, e += "END"), e += `
|
|
88
|
+
`;
|
|
89
|
+
s = 0, e += "FROM um_role_master", e += `
|
|
90
|
+
`, e += "WHERE name IN (";
|
|
91
|
+
for (const _ in o.performAction)
|
|
92
|
+
s++, ((I = t.find((a) => a.id === _)) == null ? void 0 : I.name) !== void 0 && (e += "'" + t.find((a) => a.id === _).name + "' "), s === y ? e += ");" : e += ",", e += `
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
}), e += "END $$;", e += `
|
|
96
|
+
`, e += "commit;";
|
|
97
|
+
}
|
|
98
|
+
const k = Q(), B = () => {
|
|
99
|
+
const r = new Blob([e], { type: "text/plain" }), m = (r.size / 1024).toFixed(2), o = document.createElement("a");
|
|
100
|
+
o.href = URL.createObjectURL(r), o.download = "V" + (/* @__PURE__ */ new Date()).getTime() + "__CREATED_OR_UPDATED_feature_.sql", document.body.appendChild(o), o.click(), k("file_download", {
|
|
101
|
+
file_type: "sql",
|
|
102
|
+
file_name: o.download,
|
|
103
|
+
file_size: `${m} KB`,
|
|
104
|
+
download_status: "success"
|
|
105
|
+
}), document.body.removeChild(o), u();
|
|
106
|
+
}, S = () => {
|
|
107
|
+
navigator.clipboard.writeText(e).then(
|
|
108
|
+
() => {
|
|
109
|
+
W({
|
|
110
|
+
message: "Query copied",
|
|
111
|
+
type: "success"
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
(r) => {
|
|
115
|
+
console.error("Could not copy text: ", r);
|
|
116
|
+
}
|
|
117
|
+
), u();
|
|
118
|
+
};
|
|
119
|
+
return /* @__PURE__ */ p(
|
|
120
|
+
H,
|
|
121
|
+
{
|
|
122
|
+
"data-testid": "notification-flywayquery-modal",
|
|
123
|
+
open: O,
|
|
124
|
+
onClose: u,
|
|
125
|
+
fullWidth: !0,
|
|
126
|
+
maxWidth: "md",
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ p(
|
|
129
|
+
z,
|
|
130
|
+
{
|
|
131
|
+
sx: {
|
|
132
|
+
display: "flex",
|
|
133
|
+
alignItems: "flex-start",
|
|
134
|
+
justifyContent: "space-between",
|
|
135
|
+
gap: 2,
|
|
136
|
+
py: 1.5,
|
|
137
|
+
borderBottom: "1px solid",
|
|
138
|
+
borderColor: "divider"
|
|
139
|
+
},
|
|
140
|
+
children: [
|
|
141
|
+
/* @__PURE__ */ p(F, { children: [
|
|
142
|
+
/* @__PURE__ */ l(
|
|
143
|
+
q,
|
|
144
|
+
{
|
|
145
|
+
variant: "subtitle1",
|
|
146
|
+
component: "span",
|
|
147
|
+
sx: { fontWeight: 700, display: "block" },
|
|
148
|
+
children: c("Flyway Query")
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
/* @__PURE__ */ l(q, { variant: "body2", color: "text.secondary", children: c(
|
|
152
|
+
"Copy or download this migration to recreate this notification on another environment."
|
|
153
|
+
) })
|
|
154
|
+
] }),
|
|
155
|
+
/* @__PURE__ */ l(
|
|
156
|
+
V,
|
|
157
|
+
{
|
|
158
|
+
size: "small",
|
|
159
|
+
onClick: u,
|
|
160
|
+
"aria-label": c("Close"),
|
|
161
|
+
"data-testid": "notification-flywayquery-close-button",
|
|
162
|
+
children: /* @__PURE__ */ l(v, { iconName: "faXmark" })
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
/* @__PURE__ */ l($, { children: /* @__PURE__ */ l(
|
|
169
|
+
F,
|
|
170
|
+
{
|
|
171
|
+
"data-testid": "shownotification-flywayquery-textfield-query-display",
|
|
172
|
+
role: "region",
|
|
173
|
+
"aria-label": c("Flyway Query"),
|
|
174
|
+
sx: {
|
|
175
|
+
mt: 2,
|
|
176
|
+
overflow: "hidden",
|
|
177
|
+
borderRadius: (r) => `${r.shape.borderRadius}px`,
|
|
178
|
+
border: "1px solid",
|
|
179
|
+
borderColor: "divider"
|
|
180
|
+
},
|
|
181
|
+
children: /* @__PURE__ */ l(
|
|
182
|
+
U,
|
|
183
|
+
{
|
|
184
|
+
mode: "READ_ONLY",
|
|
185
|
+
height: "45vh",
|
|
186
|
+
defaultValue: e
|
|
187
|
+
}
|
|
188
|
+
)
|
|
189
|
+
}
|
|
190
|
+
) }),
|
|
191
|
+
/* @__PURE__ */ p(
|
|
192
|
+
M,
|
|
193
|
+
{
|
|
194
|
+
sx: { px: 3, py: 2, borderTop: "1px solid", borderColor: "divider" },
|
|
195
|
+
children: [
|
|
196
|
+
/* @__PURE__ */ l(
|
|
197
|
+
h,
|
|
198
|
+
{
|
|
199
|
+
"data-testid": "notification-flywayquery-close-button-action",
|
|
200
|
+
variant: "outlined",
|
|
201
|
+
color: "inherit",
|
|
202
|
+
size: "small",
|
|
203
|
+
onClick: u,
|
|
204
|
+
children: c("Close")
|
|
205
|
+
}
|
|
206
|
+
),
|
|
207
|
+
/* @__PURE__ */ l(
|
|
208
|
+
h,
|
|
209
|
+
{
|
|
210
|
+
"data-testid": "notification-flywayquery-copy-button",
|
|
211
|
+
variant: "outlined",
|
|
212
|
+
color: "primary",
|
|
213
|
+
size: "small",
|
|
214
|
+
startIcon: /* @__PURE__ */ l(v, { iconName: "faCopy" }),
|
|
215
|
+
onClick: S,
|
|
216
|
+
children: c("Copy Query")
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
/* @__PURE__ */ l(
|
|
220
|
+
h,
|
|
221
|
+
{
|
|
222
|
+
"data-testid": "notification-flywayquery-download-button",
|
|
223
|
+
variant: "contained",
|
|
224
|
+
color: "primary",
|
|
225
|
+
size: "small",
|
|
226
|
+
startIcon: /* @__PURE__ */ l(v, { iconName: "faDownload" }),
|
|
227
|
+
onClick: B,
|
|
228
|
+
children: c("Download")
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
)
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
K.propTypes = {
|
|
239
|
+
open: E.any,
|
|
240
|
+
handleClose: E.any,
|
|
241
|
+
data: E.any,
|
|
242
|
+
roleData: E.any
|
|
243
|
+
};
|
|
244
|
+
export {
|
|
245
|
+
K as default
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=NotificationFlywayQuery-BAHVjf6N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationFlywayQuery-BAHVjf6N.js","sources":["../src/views/Notifications/NotificationFlywayQuery.jsx"],"sourcesContent":["import { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport PostgresEditor from \"@/views/custom-components/PostgresEditor\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\n\n/**\n * NotificationFlywayQuery is a React component that renders a notification flyout with data and role information.\n * @module NotificationFlywayQuery\n * @param {Object} props - The props for the component.\n * @param {boolean} props.open - Boolean flag to determine if the notification flyout is open.\n * @param {Function} props.handleClose - Function to handle the closing of the notification flyout.\n * @param {Object} props.data - Data to display inside the notification flyout.\n * @param {Object} props.roleData - Role data to display in the notification flyout (such as user role or permissions).\n *\n * @returns {JSX.Element} A rendered notification flyout component.\n */\nexport default function NotificationFlywayQuery({\n open,\n handleClose,\n data,\n roleData,\n}) {\n const { user } = useSelector((state) => state.Authenticate);\n const { translate } = useTranslateProvider();\n let queryText = \"\";\n queryText = \"\";\n queryText += `begin;`;\n queryText += `\\n`;\n queryText += `DO $$`;\n queryText += `\\n`;\n queryText += `DECLARE`;\n queryText += `\\n`;\n queryText += `var_notification_type_id integer;`;\n queryText += `\\n`;\n queryText += `var_escalation_level_id integer;`;\n queryText += `\\n`;\n queryText += `old_notification_type_id integer;`;\n queryText += `\\n`;\n queryText += `old_escalation_level_id integer;`;\n queryText += `\\n`;\n queryText += `BEGIN`;\n queryText += `\\n`;\n\n if (data.code !== null || data.code !== undefined) {\n queryText +=\n `DELETE FROM notification_type_master WHERE code = '` +\n data.code +\n `'` +\n `returning id into old_notification_type_id;`;\n queryText += `\\n`;\n queryText += `\\n`;\n queryText += `INSERT INTO notification_type_master (`;\n queryText += `created_by,created_on,modified_by,modified_on,code,\"name\",\"type\",role_id,state,notification_for,action_on_role_id,data_query,action_query,order_no,color_code,data_for,url_based_action,url,modal_based_action,modal_name,is_location_filter_required,fetch_up_to_level,required_up_to_level,is_fetch_according_aoi,\"uuid\"`;\n queryText += `)`;\n queryText += `\\n`;\n queryText += `VALUES (`;\n queryText += user?.id + `,`;\n queryText += `now(),`;\n queryText += user?.id + `,`;\n queryText += `now(),`;\n queryText += data.code ? `'` + data.code + `',` : `null,`;\n queryText += data.notificationName\n ? `'` + data.notificationName + `',`\n : `null,`;\n queryText += data.notificationType\n ? `'` + data.notificationType + `',`\n : `null,`;\n if (data.roleId !== null) {\n queryText += data.roleId + \",\";\n } else {\n queryText += \"null,\";\n }\n queryText += data.state ? \"'\" + data.state + \"',\" : \"null,\";\n queryText += data.notificationFor\n ? \"'\" + data.notificationFor + \"',\"\n : \"null,\";\n queryText += \"null,\";\n if (data.dataQuery !== null) {\n queryText += \"'\" + data?.dataQuery?.replace(/'/g, \"''\") + \"',\";\n } else {\n queryText += \"null,\";\n }\n if (data.actionQuery !== null) {\n queryText += \"'\" + data?.actionQuery?.replace(/'/g, \"''\") + \"',\";\n } else {\n queryText += \"null,\";\n }\n if (data.orderNo !== null) {\n queryText += data.orderNo + \",\";\n } else {\n queryText += \"null,\";\n }\n if (data.colorCode !== null) {\n queryText += \"'\" + data.colorCode + \"',\";\n } else {\n queryText += \"null,\";\n }\n if (data.dataFor !== null) {\n queryText += \"'\" + data.dataFor + \"',\";\n } else {\n queryText += \"null,\";\n }\n queryText += data.urlBasedAction\n ? data.urlBasedAction + \",\"\n : (() => {\n let modalBasedActionValue;\n if (data.urlBasedAction === false) {\n modalBasedActionValue = \"false,\";\n } else {\n modalBasedActionValue = \"null,\";\n }\n return modalBasedActionValue;\n })();\n if (data.url !== null) {\n queryText += \"'\" + data.url + \"',\";\n } else {\n queryText += \"null,\";\n }\n queryText += data.modalBasedAction\n ? data.modalBasedAction + \",\"\n : (() => {\n let modalBasedActionValue;\n if (data.modalBasedAction === false) {\n modalBasedActionValue = \"false,\";\n } else {\n modalBasedActionValue = \"null,\";\n }\n return modalBasedActionValue;\n })();\n if (data.modalName !== null) {\n queryText += \"'\" + data.modalName + \"',\";\n } else {\n queryText += \"null,\";\n }\n queryText += data.isLocationFilterRequired\n ? data.isLocationFilterRequired + \",\"\n : \"null,\";\n if (data.fetchUptoLevel !== null) {\n queryText += data.fetchUptoLevel + \",\";\n } else {\n queryText += \"null,\";\n }\n if (data.requiredUptoLevel !== null) {\n queryText += data.requiredUptoLevel + \",\";\n } else {\n queryText += \"null,\";\n }\n queryText += data.isFetchAccordingAOI\n ? data.isFetchAccordingAOI + \",\"\n : \"null,\";\n if (data.uuid !== null) {\n queryText += \"'\" + data.uuid + \"'\";\n } else {\n queryText += \"null\";\n }\n queryText += \")\";\n queryText += \"returning id into var_notification_type_id;\";\n queryText += \"\\n\";\n queryText += \"\\n\";\n queryText +=\n \"DELETE FROM notification_type_role_rel WHERE notification_type_id = old_notification_type_id;\";\n queryText += \"\\n\";\n queryText += \"\\n\";\n queryText +=\n \"INSERT INTO notification_type_role_rel (notification_type_id, role_id)\";\n queryText += \"\\n\";\n queryText += \"SELECT var_notification_type_id, id\";\n queryText += \"\\n\";\n queryText += \"FROM um_role_master\";\n queryText += \"\\n\";\n queryText += \"WHERE name IN (\";\n let notificationRoleLength = data.roles?.length;\n let notificationCount = 0;\n if (data.roles?.length > 0) {\n data.roles.forEach((val) => {\n notificationCount += 1;\n if (roleData.find((item) => item.id === val)?.name != undefined) {\n queryText +=\n \"'\" + roleData.find((item) => item.id === val).name + \"' \";\n }\n if (notificationCount === notificationRoleLength) {\n queryText += \");\";\n } else {\n queryText += \",\";\n }\n queryText += \"\\n\";\n });\n } else {\n notificationCount += 1;\n const roleName =\n roleData?.find((item) => item.id === data?.roleId)?.name ?? null;\n queryText += roleName ? `'${roleName}'` : \"'null'\";\n queryText += \");\";\n queryText += \"\\n\";\n }\n if (data.escalationLevels?.length > 0) {\n data.escalationLevels.forEach((obj) => {\n let isPerformActionValid = false;\n queryText += \"\\n\";\n queryText +=\n \"DELETE FROM escalation_level_master WHERE uuid = \" +\n \"'\" +\n obj.uuid +\n \"' returning id into old_escalation_level_id;\";\n queryText += \"\\n\";\n queryText += \"\\n\";\n queryText +=\n 'INSERT INTO escalation_level_master (\"name\", notification_type_id, created_by, created_on, modified_by, modified_on,uuid)';\n queryText += \"VALUES (\";\n queryText += \"'\" + obj.name + \"',\";\n queryText += \"var_notification_type_id,\";\n queryText += user?.id + \",\";\n queryText += \"now(),\";\n queryText += user?.id + \",\";\n queryText += \"now(),\";\n queryText += \"'\" + obj.uuid + \"'\";\n queryText += \")\";\n queryText += \"returning id into var_escalation_level_id;\";\n queryText += \"\\n\";\n queryText += \"\\n\";\n queryText +=\n \"DELETE FROM escalation_level_role_rel WHERE escalation_level_id = \" +\n \"old_escalation_level_id ;\";\n queryText += \"\\n\";\n queryText += \"\\n\";\n if (\n obj.performAction != null &&\n Object.keys(obj.performAction)?.length > 0\n ) {\n for (const key in obj.performAction) {\n if (roleData.find((item) => item.id === key)?.name != undefined) {\n isPerformActionValid = true;\n break;\n }\n }\n }\n if (isPerformActionValid) {\n queryText +=\n \"INSERT INTO escalation_level_role_rel (escalation_level_id, role_id, can_perform_action)\";\n queryText += \"\\n\";\n queryText += \"SELECT var_escalation_level_id, id, \";\n let escalationLength = Object.keys(obj.performAction)?.length;\n queryText += \"\\n\";\n queryText += \"CASE\";\n queryText += \"\\n\";\n let escalationCount = 0;\n for (const key in obj.performAction) {\n escalationCount++;\n if (roleData.find((item) => item.id === key)?.name != undefined) {\n queryText +=\n \"WHEN um_role_master.name = \" +\n \"'\" +\n roleData.find((item) => item.id === key)?.name +\n \"' \" +\n \"THEN \" +\n obj.performAction[key];\n }\n if (escalationCount === escalationLength) {\n queryText += \"\\n\";\n queryText += \"ELSE false\";\n queryText += \"\\n\";\n queryText += \"END\";\n queryText += \"\\n\";\n } else {\n queryText += \"\\n\";\n }\n }\n escalationCount = 0;\n queryText += \"FROM um_role_master\";\n queryText += \"\\n\";\n queryText += \"WHERE name IN (\";\n for (const key in obj.performAction) {\n escalationCount++;\n if (roleData.find((item) => item.id === key)?.name !== undefined) {\n queryText +=\n \"'\" + roleData.find((item) => item.id === key).name + \"' \";\n }\n if (escalationCount === escalationLength) {\n queryText += \");\";\n } else {\n queryText += \",\";\n }\n queryText += \"\\n\";\n }\n }\n });\n }\n queryText += \"END $$;\";\n queryText += \"\\n\";\n queryText += \"commit;\";\n }\n const trackEvent = useTrackEvent();\n\n /**\n * Handles the download of a SQL file with the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n const blob = new Blob([queryText], { type: \"text/plain\" });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const link = document.createElement(\"a\");\n link.href = URL.createObjectURL(blob);\n link.download =\n \"V\" + new Date().getTime() + \"__CREATED_OR_UPDATED_feature_\" + \".sql\";\n document.body.appendChild(link);\n link.click();\n\n trackEvent(\"file_download\", {\n file_type: \"sql\",\n file_name: link.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: \"success\",\n });\n\n document.body.removeChild(link);\n\n handleClose();\n };\n\n /**\n * Copies the query text to the clipboard and displays a success message.\n * @function handleCopy\n * @returns {void}\n */\n\n const handleCopy = () => {\n navigator.clipboard.writeText(queryText).then(\n () => {\n showToast({\n message: \"Query copied\",\n type: \"success\",\n });\n },\n (err) => {\n console.error(\"Could not copy text: \", err);\n },\n );\n handleClose();\n };\n\n return (\n <Dialog\n data-testid=\"notification-flywayquery-modal\"\n open={open}\n onClose={handleClose}\n fullWidth\n maxWidth=\"md\"\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 2,\n py: 1.5,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <Box>\n <Typography\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n >\n {translate(\"Flyway Query\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Copy or download this migration to recreate this notification on another environment.\",\n )}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n aria-label={translate(\"Close\")}\n data-testid=\"notification-flywayquery-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n <Box\n data-testid=\"shownotification-flywayquery-textfield-query-display\"\n role=\"region\"\n aria-label={translate(\"Flyway Query\")}\n sx={{\n mt: 2,\n overflow: \"hidden\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n border: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <PostgresEditor\n mode=\"READ_ONLY\"\n height=\"45vh\"\n defaultValue={queryText}\n />\n </Box>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n data-testid=\"notification-flywayquery-close-button-action\"\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleClose}\n >\n {translate(\"Close\")}\n </Button>\n <Button\n data-testid=\"notification-flywayquery-copy-button\"\n variant=\"outlined\"\n color=\"primary\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faCopy\" />}\n onClick={handleCopy}\n >\n {translate(\"Copy Query\")}\n </Button>\n <Button\n data-testid=\"notification-flywayquery-download-button\"\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faDownload\" />}\n onClick={handleDownload}\n >\n {translate(\"Download\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nNotificationFlywayQuery.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n data: PropTypes.any,\n roleData: PropTypes.any,\n};\n"],"names":["NotificationFlywayQuery","open","handleClose","data","roleData","user","useSelector","state","translate","useTranslateProvider","queryText","_a","_b","modalBasedActionValue","notificationRoleLength","_c","notificationCount","_d","val","item","roleName","_e","_f","obj","isPerformActionValid","key","escalationLength","escalationCount","trackEvent","useTrackEvent","handleDownload","blob","blobSizeInKB","link","handleCopy","showToast","err","jsxs","Dialog","DialogTitle","Box","jsx","Typography","IconButton","FontAwesomeIcons","DialogContent","t","PostgresEditor","DialogActions","Button","PropTypes"],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ Ae.propTypes = {
|
|
|
68
68
|
children: v.any,
|
|
69
69
|
isLoading: v.any
|
|
70
70
|
};
|
|
71
|
-
const Me = X(() => import("./ManageNotification-
|
|
71
|
+
const Me = X(() => import("./ManageNotification-C5MhV77Q.js")), Ee = X(() => import("./NotificationFlywayQuery-BAHVjf6N.js"));
|
|
72
72
|
function Oe() {
|
|
73
73
|
const l = Ce(), [d, x] = c(""), [C, E] = c([]), [O, h] = c([]), [g, u] = c(""), [o, N] = c({}), [w, te] = c([]), { translate: m } = pe(), [L, B] = c(null), [F, p] = c(!1), [r, ae] = c({}), ie = [
|
|
74
74
|
{
|
|
@@ -399,4 +399,4 @@ export {
|
|
|
399
399
|
Xe as c,
|
|
400
400
|
Ye as u
|
|
401
401
|
};
|
|
402
|
-
//# sourceMappingURL=NotificationList-
|
|
402
|
+
//# sourceMappingURL=NotificationList-DEyRZEuM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationList-BMFpNUJG.js","sources":["../src/services/Notifications.js","../src/views/Notifications/Skeletons/NotificationsSkeletons.jsx","../src/views/Notifications/NotificationList.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nexport const toggleActiveState = ({ id, state }) =>\n api.put(\n `notificationtype/toggleActive?id=${id}&is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}`\n );\n\nexport const createNotification = (params) =>\n api.post(\"notificationtype/create\", params);\n\nexport const updateNotification = (params) =>\n api.post(\"notificationtype/update\", params);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const NotificationListSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex space-between justify-between m-[0px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[40px] mx-[5px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100px] h-[40px]\"></div>\n </div>\n </div>\n\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-100\"></div>\n </div>\n );\n};\n\nNotificationListSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageNotificationSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col w-full md:w-[650px] bg-white \">\n <div className=\"px-2 py-2 flex items-center \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-60 h-10\"></div>\n </div>\n <hr></hr>\n <div className=\"flex flex-col w-full space-y-2 p-2\">\n <div className=\"flex flex-col space-y-2\">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n </div>\n <hr></hr>\n <div className=\"px-2 py-2 w-full flex space-x-3 items-center justify-end \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n </div>\n </div>\n );\n};\n\nManageNotificationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import {\n lazy,\n default as React,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { toggleActiveState } from \"../../services/Notifications\";\nimport { getAllRoleList, getNotifications } from \"@/common/services/GlobalApis\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nconst ManageNotification = lazy(() => import(\"./ManageNotification\"));\nconst NotificationFlywayQuery = lazy(() => import(\"./NotificationFlywayQuery\"));\nimport { Box, Button, Card, Checkbox, debounce, FormControlLabel, TextField, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/system\";\nimport { NotificationListSkeleton } from \"./Skeletons/NotificationsSkeletons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { faBars, faPen } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\n\n/**\n *\n * @module NotificationList\n * @returns {JSX.element}\n *\n */\nexport default function NotificationList() {\n const trackEvent = useTrackEvent();\n const [search, setSearch] = useState(\"\");\n const [notifications, setNotifications] = useState([]);\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n const [openModal, setOpenModal] = useState(\"\");\n const [rowData, setRowData] = useState({});\n const [roleData, setRoleData] = useState([]);\n const { translate } = useTranslateProvider();\n const [featureUuid, setFeatureUuid] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [rights, setRights] = useState({});\n const defaultColumns = [\n {\n field: \"notificationName\",\n label: \"Name\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"code\",\n label: \"Code\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"notificationType\",\n label: \"Type\",\n align: \"left\",\n render: (row) => {\n return <Typography mt={0.5}>{row.notificationType === 'WEB' ? 'WEB' : 'MOBILE'}</Typography>;\n }\n },\n {\n field: \"state\",\n label: \"State\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n { field: \"Actions\", label: \"Actions\", align: \"left\" },\n ];\n const [columns, setColumns] = useState(defaultColumns);\n const [isActive, setisActive] = useState(true);\n const [isMobile, setisMobile] = useState(true);\n\n const isActiveRef = useRef(isActive);\n const isMobileRef = useRef(isMobile);\n\n useEffect(() => {\n isActiveRef.current = isActive;\n }, [isActive]);\n\n useEffect(() => {\n isMobileRef.current = isMobile;\n }, [isMobile]);\n\n /**\n * Toggles the active/inactive status of a notification.\n * @async\n * @function toggleActiveStatus\n * @returns {Promise<void>} A promise that resolves when the active status has been toggled and notifications reloaded.\n */\n const toggleActiveStatus = async () => {\n try {\n setIsLoading((cur) => !cur);\n await toggleActiveState({ id: rowData.id, state: rowData.state });\n setOpenModal(\"\");\n const { data } = await getNotifications();\n setNotifications(data);\n setFilteredNotifications(data);\n showToast({\n type: \"success\",\n message: `State succesfully changed from ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n });\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error ${error}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n const actions = useMemo(() => (row) => {\n const list = [];\n\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faPen}\n data-testid=\"notificationlist-button-edit\"\n />\n ),\n onClick: (e) => {\n setOpenModal(1);\n setRowData(e);\n },\n });\n }\n\n const currentMenuItems = [];\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n currentMenuItems.push({\n label: translate(\n row.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\"\n ),\n onClick: (e) => {\n setRowData(e);\n setOpenModal(2);\n },\n });\n currentMenuItems.push({\n label: translate(\"Sync With Server\"),\n onClick: (e) => {\n if (!e.uuid) {\n showToast({\n type: \"info\",\n message: `No configuration found. Please open the respective feature item and save it.`,\n });\n return;\n }\n setOpenModal(4);\n setFeatureUuid(e?.uuid);\n setRowData(e);\n },\n });\n currentMenuItems.push({\n label: translate(\"Show Flyway Query\"),\n onClick: (e) => {\n setOpenModal(3);\n setRowData(e);\n },\n });\n }\n\n if (currentMenuItems.length > 0) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faBars}\n data-testid=\"notificationlist-button-menu\"\n />\n ),\n menuItems: currentMenuItems,\n });\n }\n\n return list;\n }, [rights, translate]);\n\n const debouncedFilter = useCallback(\n debounce((searchValue) => {\n const filteredData = notifications.filter(d =>\n d.notificationName?.toLowerCase().includes(searchValue) &&\n d.state === (isActiveRef.current ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (isMobileRef.current ? 'MO' : 'WEB')\n );\n trackEvent(\"search_tracking\", {\n searchTerm: searchValue,\n results_count: filteredData.length,\n search_type: \"Page Search\",\n });\n setFilteredNotifications(filteredData);\n }, 500),\n [notifications, trackEvent]\n );\n\n /**\n * Handles the search input to filter notifications by name.\n * @function handleSearch\n * @param {Object} e - The event object from the input field.\n * @param {string} e.target.value - The current value in the search input field.\n */\n const handleSearch = (e) => {\n const searchValue = e.target.value.toLowerCase();\n setSearch(searchValue);\n debouncedFilter(searchValue);\n };\n\n /**\n * Handles sorting of the notification list based on the specified column.\n * @function handleSort\n */\n const handleSort = (column) => {\n const order = column.sortOrder === \"asc\" ? \"desc\" : \"asc\";\n setColumns((prev) =>\n prev.map((col) => {\n if (col.field === column.field) {\n return { ...col, sortOrder: order };\n }\n return col;\n })\n );\n\n const sortedData = [...filteredNotifications].sort((a, b) => {\n const valA = a[column.field]?.toString().toLowerCase();\n const valB = b[column.field]?.toString().toLowerCase();\n\n if (valA < valB) {\n return order === \"asc\" ? -1 : 1;\n }\n if (valA > valB) {\n return order === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n setFilteredNotifications(sortedData);\n };\n\n /**\n * Loads initial data for notifications and roles when the component is mounted or when `openModal` changes.\n * @function useEffect\n * @param {boolean} openModal - The state that controls whether a modal is open. Triggers the hook to reload data when it changes.\n */\n\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const { data } = await getNotifications();\n setNotifications(data);\n const filteredData = data.filter(d => d.notificationType === 'MO' && d.state === 'ACTIVE');\n setFilteredNotifications(filteredData);\n if (!roleData.length) {\n const { data: roleData } = await getAllRoleList();\n setRoleData(roleData);\n }\n const { data: assignedFeatures } = await getAssignedFeatures(\"techo.manage.notification\");\n setRights(JSON.parse(assignedFeatures));\n setIsLoading((cur) => !cur);\n setSearch('');\n } catch (error) {\n console.error(\"error\", error);\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n const handleFilter = (value, filterType) => {\n const nextIsActive =\n filterType === 'status' ? value : isActive;\n\n const nextIsMobile =\n filterType === 'notificationType' ? value : isMobile;\n\n setisActive(nextIsActive);\n setisMobile(nextIsMobile);\n\n if (search) {\n debouncedFilter(search);\n } else {\n setFilteredNotifications(\n notifications.filter(d =>\n d.state === (nextIsActive ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (nextIsMobile ? 'MO' : 'WEB')\n )\n );\n }\n };\n\n return (\n <Card\n variant=\"elevation\"\n container\n className=\"mt-6 p-3 flex flex-col space-y-3 shadow-xl\"\n >\n <Suspense>\n <ManageNotification\n open={openModal === 1 || openModal === 5}\n handleClose={() => setOpenModal(\"\")}\n data={openModal === 1 ? rowData : null}\n roleData={roleData}\n setNotifications={loadInitialData}\n data-testid=\"notification-list-managenotification-dialog\"\n />\n </Suspense>\n <Suspense>\n <NotificationFlywayQuery\n open={openModal === 3}\n handleClose={() => setOpenModal(\"\")}\n data={rowData}\n roleData={roleData}\n />\n </Suspense>\n <CustomConfirmationModal\n title={\"CONFIRM ACTION\"}\n open={openModal === 2}\n description={`Are you sure you want to change the state ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`}\n handleClick={toggleActiveStatus}\n handleClose={() => setOpenModal(\"\")}\n dataTestId=\"notification-list-customconfirmationmodal-dialog\"\n />\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={() => setFeatureUuid(() => null)}\n featureUUID={featureUuid}\n dataTestId=\"notification-list-syncwithserverdialog-dialog\"\n />\n <NotificationListSkeleton isLoading={isLoading}>\n <Grid container className=\"flex justify-between\">\n <Grid>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg text-customBlue uppercase\"\n data-testid=\"notification-list-typography-title\"\n >\n {translate(\"Notification Configuration\")}\n </Typography>\n </Grid>\n <Box className=\"flex flex-col sm:flex-row sm:items-center gap-3 w-full sm:w-auto\">\n <Box className=\"flex items-center gap-3\">\n <FormControlLabel\n control={\n <Checkbox\n checked={isActive}\n onChange={(e) =>\n handleFilter(e.target.checked, 'status')\n }\n data-testid=\"notifications-checkbox-include-active\"\n />\n }\n label={translate(\"Active\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={isMobile}\n onChange={(e) =>\n handleFilter(e.target.checked, 'notificationType')\n }\n data-testid=\"notifications-checkbox-include-mobile\"\n />\n }\n label={translate(\"Mobile\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n </Box>\n <Box className=\"flex items-center gap-3 w-full sm:w-auto\">\n <TextField\n id=\"searchQuery\"\n placeholder=\"Search Text\"\n size=\"small\"\n onChange={handleSearch}\n className=\"m-0 p-0 bg-white\"\n value={search}\n data-testid=\"notification-list-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n height: \"2.4em\",\n width: { xs: \"100%\", sm: \"190px\" },\n },\n flex: { xs: 1, sm: 1 }\n }}\n />\n {GeneralUtil.hasCheckRights(rights?.['create.manage.notificationlist']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"notification-list-add-button\",\n button_type: \"navigate\",\n button_id: \"notification-list-button-add\",\n });\n setOpenModal(5);\n }}\n data-testid=\"notification-list-button-add\"\n sx={{ whiteSpace: 'nowrap' }}\n >\n {translate(\"Add\")}\n </Button>\n )}\n </Box>\n </Box>\n </Grid>\n <Grid size={{ xs: 12 }}>\n <CustomizedTable\n columns={columns}\n actions={actions}\n tableData={filteredNotifications}\n paginationConfig={{\n pagination: false,\n }}\n styleConfig={{\n tableStyle: {\n maxHeight: 40,\n },\n }}\n handleSort={handleSort}\n isLoading={isLoading}\n dataTestId=\"notification-list-customizedtable\"\n />\n </Grid>\n </NotificationListSkeleton>\n </Card>\n );\n}\n"],"names":["toggleActiveState","id","state","api","createNotification","params","updateNotification","NotificationListSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","ManageNotificationSkeleton","ManageNotification","lazy","NotificationFlywayQuery","NotificationList","trackEvent","useTrackEvent","search","setSearch","useState","notifications","setNotifications","filteredNotifications","setFilteredNotifications","openModal","setOpenModal","rowData","setRowData","roleData","setRoleData","translate","useTranslateProvider","featureUuid","setFeatureUuid","setIsLoading","rights","setRights","defaultColumns","row","Typography","columns","setColumns","isActive","setisActive","isMobile","setisMobile","isActiveRef","useRef","isMobileRef","useEffect","toggleActiveStatus","cur","data","getNotifications","showToast","error","actions","useMemo","list","GeneralUtil","FontAwesomeIcon","faPen","e","currentMenuItems","faBars","debouncedFilter","useCallback","debounce","searchValue","filteredData","_a","d","handleSearch","handleSort","column","order","prev","col","sortedData","b","valA","valB","_b","loadInitialData","getAllRoleList","assignedFeatures","getAssignedFeatures","handleFilter","value","filterType","nextIsActive","nextIsMobile","Card","Suspense","CustomConfirmationModal","SyncWithServerDialog","Grid","Box","FormControlLabel","Checkbox","TextField","Button","CustomizedTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotificationList-DEyRZEuM.js","sources":["../src/services/Notifications.js","../src/views/Notifications/Skeletons/NotificationsSkeletons.jsx","../src/views/Notifications/NotificationList.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nexport const toggleActiveState = ({ id, state }) =>\n api.put(\n `notificationtype/toggleActive?id=${id}&is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}`\n );\n\nexport const createNotification = (params) =>\n api.post(\"notificationtype/create\", params);\n\nexport const updateNotification = (params) =>\n api.post(\"notificationtype/update\", params);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const NotificationListSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex space-between justify-between m-[0px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[40px] mx-[5px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100px] h-[40px]\"></div>\n </div>\n </div>\n\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-100\"></div>\n </div>\n );\n};\n\nNotificationListSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageNotificationSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col w-full md:w-[650px] bg-white \">\n <div className=\"px-2 py-2 flex items-center \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-60 h-10\"></div>\n </div>\n <hr></hr>\n <div className=\"flex flex-col w-full space-y-2 p-2\">\n <div className=\"flex flex-col space-y-2\">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n </div>\n <hr></hr>\n <div className=\"px-2 py-2 w-full flex space-x-3 items-center justify-end \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n </div>\n </div>\n );\n};\n\nManageNotificationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import {\n lazy,\n default as React,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { toggleActiveState } from \"../../services/Notifications\";\nimport { getAllRoleList, getNotifications } from \"@/common/services/GlobalApis\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nconst ManageNotification = lazy(() => import(\"./ManageNotification\"));\nconst NotificationFlywayQuery = lazy(() => import(\"./NotificationFlywayQuery\"));\nimport { Box, Button, Card, Checkbox, debounce, FormControlLabel, TextField, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/system\";\nimport { NotificationListSkeleton } from \"./Skeletons/NotificationsSkeletons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { faBars, faPen } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\n\n/**\n *\n * @module NotificationList\n * @returns {JSX.element}\n *\n */\nexport default function NotificationList() {\n const trackEvent = useTrackEvent();\n const [search, setSearch] = useState(\"\");\n const [notifications, setNotifications] = useState([]);\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n const [openModal, setOpenModal] = useState(\"\");\n const [rowData, setRowData] = useState({});\n const [roleData, setRoleData] = useState([]);\n const { translate } = useTranslateProvider();\n const [featureUuid, setFeatureUuid] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [rights, setRights] = useState({});\n const defaultColumns = [\n {\n field: \"notificationName\",\n label: \"Name\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"code\",\n label: \"Code\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"notificationType\",\n label: \"Type\",\n align: \"left\",\n render: (row) => {\n return <Typography mt={0.5}>{row.notificationType === 'WEB' ? 'WEB' : 'MOBILE'}</Typography>;\n }\n },\n {\n field: \"state\",\n label: \"State\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n { field: \"Actions\", label: \"Actions\", align: \"left\" },\n ];\n const [columns, setColumns] = useState(defaultColumns);\n const [isActive, setisActive] = useState(true);\n const [isMobile, setisMobile] = useState(true);\n\n const isActiveRef = useRef(isActive);\n const isMobileRef = useRef(isMobile);\n\n useEffect(() => {\n isActiveRef.current = isActive;\n }, [isActive]);\n\n useEffect(() => {\n isMobileRef.current = isMobile;\n }, [isMobile]);\n\n /**\n * Toggles the active/inactive status of a notification.\n * @async\n * @function toggleActiveStatus\n * @returns {Promise<void>} A promise that resolves when the active status has been toggled and notifications reloaded.\n */\n const toggleActiveStatus = async () => {\n try {\n setIsLoading((cur) => !cur);\n await toggleActiveState({ id: rowData.id, state: rowData.state });\n setOpenModal(\"\");\n const { data } = await getNotifications();\n setNotifications(data);\n setFilteredNotifications(data);\n showToast({\n type: \"success\",\n message: `State succesfully changed from ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n });\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error ${error}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n const actions = useMemo(() => (row) => {\n const list = [];\n\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faPen}\n data-testid=\"notificationlist-button-edit\"\n />\n ),\n onClick: (e) => {\n setOpenModal(1);\n setRowData(e);\n },\n });\n }\n\n const currentMenuItems = [];\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n currentMenuItems.push({\n label: translate(\n row.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\"\n ),\n onClick: (e) => {\n setRowData(e);\n setOpenModal(2);\n },\n });\n currentMenuItems.push({\n label: translate(\"Sync With Server\"),\n onClick: (e) => {\n if (!e.uuid) {\n showToast({\n type: \"info\",\n message: `No configuration found. Please open the respective feature item and save it.`,\n });\n return;\n }\n setOpenModal(4);\n setFeatureUuid(e?.uuid);\n setRowData(e);\n },\n });\n currentMenuItems.push({\n label: translate(\"Show Flyway Query\"),\n onClick: (e) => {\n setOpenModal(3);\n setRowData(e);\n },\n });\n }\n\n if (currentMenuItems.length > 0) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faBars}\n data-testid=\"notificationlist-button-menu\"\n />\n ),\n menuItems: currentMenuItems,\n });\n }\n\n return list;\n }, [rights, translate]);\n\n const debouncedFilter = useCallback(\n debounce((searchValue) => {\n const filteredData = notifications.filter(d =>\n d.notificationName?.toLowerCase().includes(searchValue) &&\n d.state === (isActiveRef.current ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (isMobileRef.current ? 'MO' : 'WEB')\n );\n trackEvent(\"search_tracking\", {\n searchTerm: searchValue,\n results_count: filteredData.length,\n search_type: \"Page Search\",\n });\n setFilteredNotifications(filteredData);\n }, 500),\n [notifications, trackEvent]\n );\n\n /**\n * Handles the search input to filter notifications by name.\n * @function handleSearch\n * @param {Object} e - The event object from the input field.\n * @param {string} e.target.value - The current value in the search input field.\n */\n const handleSearch = (e) => {\n const searchValue = e.target.value.toLowerCase();\n setSearch(searchValue);\n debouncedFilter(searchValue);\n };\n\n /**\n * Handles sorting of the notification list based on the specified column.\n * @function handleSort\n */\n const handleSort = (column) => {\n const order = column.sortOrder === \"asc\" ? \"desc\" : \"asc\";\n setColumns((prev) =>\n prev.map((col) => {\n if (col.field === column.field) {\n return { ...col, sortOrder: order };\n }\n return col;\n })\n );\n\n const sortedData = [...filteredNotifications].sort((a, b) => {\n const valA = a[column.field]?.toString().toLowerCase();\n const valB = b[column.field]?.toString().toLowerCase();\n\n if (valA < valB) {\n return order === \"asc\" ? -1 : 1;\n }\n if (valA > valB) {\n return order === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n setFilteredNotifications(sortedData);\n };\n\n /**\n * Loads initial data for notifications and roles when the component is mounted or when `openModal` changes.\n * @function useEffect\n * @param {boolean} openModal - The state that controls whether a modal is open. Triggers the hook to reload data when it changes.\n */\n\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const { data } = await getNotifications();\n setNotifications(data);\n const filteredData = data.filter(d => d.notificationType === 'MO' && d.state === 'ACTIVE');\n setFilteredNotifications(filteredData);\n if (!roleData.length) {\n const { data: roleData } = await getAllRoleList();\n setRoleData(roleData);\n }\n const { data: assignedFeatures } = await getAssignedFeatures(\"techo.manage.notification\");\n setRights(JSON.parse(assignedFeatures));\n setIsLoading((cur) => !cur);\n setSearch('');\n } catch (error) {\n console.error(\"error\", error);\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n const handleFilter = (value, filterType) => {\n const nextIsActive =\n filterType === 'status' ? value : isActive;\n\n const nextIsMobile =\n filterType === 'notificationType' ? value : isMobile;\n\n setisActive(nextIsActive);\n setisMobile(nextIsMobile);\n\n if (search) {\n debouncedFilter(search);\n } else {\n setFilteredNotifications(\n notifications.filter(d =>\n d.state === (nextIsActive ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (nextIsMobile ? 'MO' : 'WEB')\n )\n );\n }\n };\n\n return (\n <Card\n variant=\"elevation\"\n container\n className=\"mt-6 p-3 flex flex-col space-y-3 shadow-xl\"\n >\n <Suspense>\n <ManageNotification\n open={openModal === 1 || openModal === 5}\n handleClose={() => setOpenModal(\"\")}\n data={openModal === 1 ? rowData : null}\n roleData={roleData}\n setNotifications={loadInitialData}\n data-testid=\"notification-list-managenotification-dialog\"\n />\n </Suspense>\n <Suspense>\n <NotificationFlywayQuery\n open={openModal === 3}\n handleClose={() => setOpenModal(\"\")}\n data={rowData}\n roleData={roleData}\n />\n </Suspense>\n <CustomConfirmationModal\n title={\"CONFIRM ACTION\"}\n open={openModal === 2}\n description={`Are you sure you want to change the state ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`}\n handleClick={toggleActiveStatus}\n handleClose={() => setOpenModal(\"\")}\n dataTestId=\"notification-list-customconfirmationmodal-dialog\"\n />\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={() => setFeatureUuid(() => null)}\n featureUUID={featureUuid}\n dataTestId=\"notification-list-syncwithserverdialog-dialog\"\n />\n <NotificationListSkeleton isLoading={isLoading}>\n <Grid container className=\"flex justify-between\">\n <Grid>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg text-customBlue uppercase\"\n data-testid=\"notification-list-typography-title\"\n >\n {translate(\"Notification Configuration\")}\n </Typography>\n </Grid>\n <Box className=\"flex flex-col sm:flex-row sm:items-center gap-3 w-full sm:w-auto\">\n <Box className=\"flex items-center gap-3\">\n <FormControlLabel\n control={\n <Checkbox\n checked={isActive}\n onChange={(e) =>\n handleFilter(e.target.checked, 'status')\n }\n data-testid=\"notifications-checkbox-include-active\"\n />\n }\n label={translate(\"Active\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={isMobile}\n onChange={(e) =>\n handleFilter(e.target.checked, 'notificationType')\n }\n data-testid=\"notifications-checkbox-include-mobile\"\n />\n }\n label={translate(\"Mobile\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n </Box>\n <Box className=\"flex items-center gap-3 w-full sm:w-auto\">\n <TextField\n id=\"searchQuery\"\n placeholder=\"Search Text\"\n size=\"small\"\n onChange={handleSearch}\n className=\"m-0 p-0 bg-white\"\n value={search}\n data-testid=\"notification-list-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n height: \"2.4em\",\n width: { xs: \"100%\", sm: \"190px\" },\n },\n flex: { xs: 1, sm: 1 }\n }}\n />\n {GeneralUtil.hasCheckRights(rights?.['create.manage.notificationlist']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"notification-list-add-button\",\n button_type: \"navigate\",\n button_id: \"notification-list-button-add\",\n });\n setOpenModal(5);\n }}\n data-testid=\"notification-list-button-add\"\n sx={{ whiteSpace: 'nowrap' }}\n >\n {translate(\"Add\")}\n </Button>\n )}\n </Box>\n </Box>\n </Grid>\n <Grid size={{ xs: 12 }}>\n <CustomizedTable\n columns={columns}\n actions={actions}\n tableData={filteredNotifications}\n paginationConfig={{\n pagination: false,\n }}\n styleConfig={{\n tableStyle: {\n maxHeight: 40,\n },\n }}\n handleSort={handleSort}\n isLoading={isLoading}\n dataTestId=\"notification-list-customizedtable\"\n />\n </Grid>\n </NotificationListSkeleton>\n </Card>\n );\n}\n"],"names":["toggleActiveState","id","state","api","createNotification","params","updateNotification","NotificationListSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","ManageNotificationSkeleton","ManageNotification","lazy","NotificationFlywayQuery","NotificationList","trackEvent","useTrackEvent","search","setSearch","useState","notifications","setNotifications","filteredNotifications","setFilteredNotifications","openModal","setOpenModal","rowData","setRowData","roleData","setRoleData","translate","useTranslateProvider","featureUuid","setFeatureUuid","setIsLoading","rights","setRights","defaultColumns","row","Typography","columns","setColumns","isActive","setisActive","isMobile","setisMobile","isActiveRef","useRef","isMobileRef","useEffect","toggleActiveStatus","cur","data","getNotifications","showToast","error","actions","useMemo","list","GeneralUtil","FontAwesomeIcon","faPen","e","currentMenuItems","faBars","debouncedFilter","useCallback","debounce","searchValue","filteredData","_a","d","handleSearch","handleSort","column","order","prev","col","sortedData","b","valA","valB","_b","loadInitialData","getAllRoleList","assignedFeatures","getAssignedFeatures","handleFilter","value","filterType","nextIsActive","nextIsMobile","Card","Suspense","CustomConfirmationModal","SyncWithServerDialog","Grid","Box","FormControlLabel","Checkbox","TextField","Button","CustomizedTable"],"mappings":"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"}
|