@argusoft/medplat-core 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/{AccessRights-Bvd5Bm5K.js → AccessRights-CupmTG3T.js} +2 -2
  2. package/dist/{AccessRights-Bvd5Bm5K.js.map → AccessRights-CupmTG3T.js.map} +1 -1
  3. package/dist/{AddEditQueryBuilder-Bcjl5mXE.js → AddEditQueryBuilder-C8ZSkOF0.js} +60 -60
  4. package/dist/AddEditQueryBuilder-C8ZSkOF0.js.map +1 -0
  5. package/dist/{AddFeatures-CE5rBxEG.js → AddFeatures-CTVs_Gr9.js} +2 -2
  6. package/dist/{AddFeatures-CE5rBxEG.js.map → AddFeatures-CTVs_Gr9.js.map} +1 -1
  7. package/dist/{AddRoleDrawer-Bc655LQU.js → AddRoleDrawer-CQdzQZLb.js} +36 -36
  8. package/dist/AddRoleDrawer-CQdzQZLb.js.map +1 -0
  9. package/dist/{ChangePasswordModalCore-50EzprTk.js → ChangePasswordModalCore-DotONnMz.js} +459 -458
  10. package/dist/{ChangePasswordModalCore-50EzprTk.js.map → ChangePasswordModalCore-DotONnMz.js.map} +1 -1
  11. package/dist/{ConditionConfig-D2hOAa4n.js → ConditionConfig-C3rF2wXU.js} +2 -2
  12. package/dist/{ConditionConfig-D2hOAa4n.js.map → ConditionConfig-C3rF2wXU.js.map} +1 -1
  13. package/dist/{EventConfigurations-D8juDb29.js → EventConfigurations-BGffjVC7.js} +3 -3
  14. package/dist/{EventConfigurations-D8juDb29.js.map → EventConfigurations-BGffjVC7.js.map} +1 -1
  15. package/dist/{EventsExceptionModal-DsvngLi8.js → EventsExceptionModal-D4Bf1ilS.js} +2 -2
  16. package/dist/{EventsExceptionModal-DsvngLi8.js.map → EventsExceptionModal-D4Bf1ilS.js.map} +1 -1
  17. package/dist/EventsSkeleton-8iiETGcf.js +76 -0
  18. package/dist/EventsSkeleton-8iiETGcf.js.map +1 -0
  19. package/dist/{FeatureMenu-CLX8VNZ-.js → FeatureMenu-DUZL32RI.js} +3 -3
  20. package/dist/{FeatureMenu-CLX8VNZ-.js.map → FeatureMenu-DUZL32RI.js.map} +1 -1
  21. package/dist/Features-CObdzJp_.js +13 -0
  22. package/dist/Features-CObdzJp_.js.map +1 -0
  23. package/dist/{ImmunizationConfigurationBase-C5wnjI_-.js → ImmunizationConfigurationBase-CUQGVlhB.js} +741 -731
  24. package/dist/ImmunizationConfigurationBase-CUQGVlhB.js.map +1 -0
  25. package/dist/ImmunizationConfigurationBase.css +1 -1
  26. package/dist/{ManageDynamicFeature-i6ARKe36.js → ManageDynamicFeature-BhONvfC_.js} +2 -2
  27. package/dist/{ManageDynamicFeature-i6ARKe36.js.map → ManageDynamicFeature-BhONvfC_.js.map} +1 -1
  28. package/dist/{ManageEventConfiguration-CHugu2vQ.js → ManageEventConfiguration-BntUc_YI.js} +5 -5
  29. package/dist/{ManageEventConfiguration-CHugu2vQ.js.map → ManageEventConfiguration-BntUc_YI.js.map} +1 -1
  30. package/dist/{ManageNotification-BUAvg5Ge.js → ManageNotification-CSl02Wq7.js} +2 -2
  31. package/dist/{ManageNotification-BUAvg5Ge.js.map → ManageNotification-CSl02Wq7.js.map} +1 -1
  32. package/dist/{ManageRole-Cbs9dUhc.js → ManageRole-CZAk-IlM.js} +222 -229
  33. package/dist/ManageRole-CZAk-IlM.js.map +1 -0
  34. package/dist/{ManageUser-C6dlK-Mr.js → ManageUser-Ca1BsI1u.js} +2 -2
  35. package/dist/{ManageUser-C6dlK-Mr.js.map → ManageUser-Ca1BsI1u.js.map} +1 -1
  36. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js → MobileTypeEventConfigModal-BNjZ8pnq.js} +2 -2
  37. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js.map → MobileTypeEventConfigModal-BNjZ8pnq.js.map} +1 -1
  38. package/dist/{NotificationList-CUZSWp2J.js → NotificationList-D1U1LYnz.js} +140 -139
  39. package/dist/NotificationList-D1U1LYnz.js.map +1 -0
  40. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js → OtherTypeEventConfigModal-DiVhWDpG.js} +2 -2
  41. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js.map → OtherTypeEventConfigModal-DiVhWDpG.js.map} +1 -1
  42. package/dist/{QueryBuilder-DXexUIe8.js → QueryBuilder-DI0wCJbz.js} +85 -84
  43. package/dist/QueryBuilder-DI0wCJbz.js.map +1 -0
  44. package/dist/{RoleManagement-BThAL5LO.js → RoleManagement-B9WgZGEj.js} +182 -168
  45. package/dist/RoleManagement-B9WgZGEj.js.map +1 -0
  46. package/dist/{ShowFlywayQuery-BkyA6QaA.js → ShowFlywayQuery-tj42YQAS.js} +33 -33
  47. package/dist/ShowFlywayQuery-tj42YQAS.js.map +1 -0
  48. package/dist/{SubMenu-BGznOP2a.js → SubMenu-CM_4wNCR.js} +2 -2
  49. package/dist/{SubMenu-BGznOP2a.js.map → SubMenu-CM_4wNCR.js.map} +1 -1
  50. package/dist/{TypeConfiguration-D-3xNcyd.js → TypeConfiguration-CupQxH9Y.js} +28 -28
  51. package/dist/TypeConfiguration-CupQxH9Y.js.map +1 -0
  52. package/dist/{UserList-D7GL7jvO.js → UserList-BzHsbYel.js} +186 -185
  53. package/dist/UserList-BzHsbYel.js.map +1 -0
  54. package/dist/{WidgetList-B3Sm9weK.js → WidgetList-B7X8Awkg.js} +2 -2
  55. package/dist/{WidgetList-B3Sm9weK.js.map → WidgetList-B7X8Awkg.js.map} +1 -1
  56. package/dist/index.js +10 -10
  57. package/package.json +1 -1
  58. package/dist/AddEditQueryBuilder-Bcjl5mXE.js.map +0 -1
  59. package/dist/AddRoleDrawer-Bc655LQU.js.map +0 -1
  60. package/dist/EventsSkeleton-DCXwwPbb.js +0 -76
  61. package/dist/EventsSkeleton-DCXwwPbb.js.map +0 -1
  62. package/dist/Features-Cpf1PDx0.js +0 -13
  63. package/dist/Features-Cpf1PDx0.js.map +0 -1
  64. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js.map +0 -1
  65. package/dist/ManageRole-Cbs9dUhc.js.map +0 -1
  66. package/dist/NotificationList-CUZSWp2J.js.map +0 -1
  67. package/dist/QueryBuilder-DXexUIe8.js.map +0 -1
  68. package/dist/RoleManagement-BThAL5LO.js.map +0 -1
  69. package/dist/ShowFlywayQuery-BkyA6QaA.js.map +0 -1
  70. package/dist/TypeConfiguration-D-3xNcyd.js.map +0 -1
  71. package/dist/UserList-D7GL7jvO.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManageRole-Cbs9dUhc.js","sources":["../src/views/Roles/Skeletons/ManageRoleSkeleton.jsx","../src/views/Roles/ManageRole.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst ManageRoleSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"pt-6 h-[88vh]\">\n {/* Header Skeleton */}\n <div className=\"px-8 pt-2 pb-4 flex items-center justify-between\">\n <div className=\"bg-gray-300 animate-pulse rounded-md w-32 h-8\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-full w-10 h-10\"></div>\n </div>\n\n {/* Form Content Skeleton */}\n <div className=\"px-8 pb-8 space-y-6 overflow-y-auto max-h-[80vh]\">\n {/* Top Grid: Role Name, Max Position, Max Health Infra */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Location Required Toggle */}\n <div className=\"flex items-center gap-6 w-full\">\n <div className=\"w-full\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"h-8 bg-gray-300 rounded-full w-16 animate-pulse\"></div>\n </div>\n </div>\n\n {/* Location Select (Conditional placeholder) & Manage Role */}\n <div className=\"space-y-4\">\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n\n {/* Middle Grid: Role Type & Manage Team */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Health Infra & Category */}\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Bottom Section: Bank Details & Self Manage */}\n <div className=\"flex items-center gap-6\">\n {/* Bank Details (Toggle style) */}\n <div className=\"w-[60%]\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-8 bg-gray-300 rounded-full w-16 animate-pulse\"></div>\n </div>\n {/* Self Manage (Checkbox style) */}\n <div className=\"w-[40%] flex items-center gap-2\">\n <div className=\"h-5 w-5 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-4 bg-gray-300 rounded w-1/3 animate-pulse\"></div>\n </div>\n </div>\n\n {/* Mandatory Fields Checkboxes */}\n <div className=\"space-y-2\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"flex flex-wrap gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <div className=\"h-5 w-5 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-4 w-16 bg-gray-300 rounded animate-pulse\"></div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n {/* Footer Buttons */}\n <div className=\"flex items-center justify-end gap-3 pt-6 px-8 pb-4 border-t border-slate-100\">\n <div className=\"h-9 w-20 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-9 w-24 bg-gray-300 rounded animate-pulse\"></div>\n </div>\n </div>\n );\n};\n\nexport default ManageRoleSkeleton;\n\nManageRoleSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import { useState, useEffect, useRef } from \"react\";\nimport {\n Box,\n Modal,\n Button,\n FormControl,\n FormGroup,\n IconButton,\n // Tooltip,\n // Typography,\n} from \"@mui/material\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { postRole, putRole, getRoleById } from \"../../services/Roles\";\nimport {\n getLocationTypes,\n execute,\n getRoleList,\n} from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport \"@/assets/scss/scrollBar.scss\";\n\nimport { FormItem } from \"@/views/custom-components/FormItem.jsx\";\nimport * as Yup from \"yup\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport CustomCheckBox from \"@/views/custom-components/CustomCheckBox\";\n// import CustomRadioGroup from \"@/views/custom-components/CustomRadioComponent\";\nimport CustomAutocomplete from \"@/views/custom-components/CustomAutoComplete\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport PropTypes from \"prop-types\";\nimport CustomToggleSwitch from \"@/views/custom-components/CustomToggleSwitch\";\nimport ManageRoleSkeleton from \"./Skeletons/ManageRoleSkeleton.jsx\";\n\nconst roleTypes = [{ name: \"WEB\" }, { name: \"MOBILE\" }, { name: \"BOTH\" }];\n\n// Two-factor authentication method. Any TOTP authenticator app works (Google, Microsoft, Authy, ...).\nconst twoFactorTypes = [\n { label: \"Authenticator App\", value: \"AUTHENTICATOR_APP\" },\n];\n\n/**\n * ManageRole Component\n * @module ManageRole\n * @param {Object} props - The component props.\n * @param {function} props.setData - A function to update the role data in the parent component.\n * @param {string} props.selectedId - The ID of the currently selected role, used for updates.\n * @param {boolean} props.isUpdate - A flag indicating whether the component is in update mode (true) or create mode (false).\n * @returns {JSX.Element} - The rendered component for managing roles.\n */\n\nconst ManageRole = ({\n selectedId,\n isUpdate,\n open,\n setOpen,\n isRoleListModified,\n}) => {\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const trackEvent = useTrackEvent();\n const [formData, setFormData] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Enter Role Name\"),\n locationTypes: Yup.array().when(\"isLocationRequired\", {\n is: true,\n then: (schema) =>\n schema.min(1, \"Select Location Type\").required(\"Select Location Type\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n roleType: Yup.string().required(\"Select Role Type\"),\n isBankDetailsRequired: GeneralUtil.isTecho\n ? Yup.boolean().notRequired()\n : Yup.boolean().nullable().defined(\"Please Select a Value\"),\n healthInfrastructureIds: Yup.array().when(\"isHealthInfraMandatory\", {\n is: true,\n then: (schema) =>\n schema\n .min(1, \"Select Health Infrastructure Type\")\n .required(\"Select Health Infrastructure Type\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n });\n\n const {\n control,\n handleSubmit,\n formState: { errors, isSubmitting },\n setValue,\n // getValues,\n watch,\n reset,\n } = useForm({\n defaultValues: {\n name: \"\",\n locationTypes: [],\n maxPosition: \"\",\n maxHealthInfra: \"\",\n roleType: \"\",\n isLastNameMandatory: false,\n isAadharNumMandatory: false,\n isEmailMandatory: false,\n isContactNumMandatory: false,\n isConvoxIdMandatory: false,\n isHealthInfraMandatory: false,\n isGeolocationMandatory: false,\n roleIds: [],\n canManageRoleIds: [],\n manageByTeamTypeIds: [],\n canSelfManage: false,\n healthInfrastructureIds: [],\n categoryIds: [],\n isBankDetailsRequired: false,\n isBankDetailsMandatory: false,\n isTwoFactorEnabled: false,\n twoFactorType: \"\",\n id: \"\",\n code: \"\",\n description: \"\",\n createdBy: \"\",\n state: \"\",\n createdOn: \"\",\n assignedFeatureList: \"\",\n assignedFeatures: \"\",\n isSmagTrainedMandatory: \"\",\n isLocationRequired: true,\n isNodalMandatory: false,\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n shouldUnregister: false,\n });\n\n const bankDetails = watch(\"isBankDetailsRequired\");\n const isTwoFactorEnabled = watch(\"isTwoFactorEnabled\");\n const roleType = watch(\"roleType\");\n // 2FA (Google Authenticator) only applies to web logins, so it is offered for WEB and BOTH role types.\n const showTwoFactorSetting = roleType === \"WEB\" || roleType === \"BOTH\";\n const locTypes = watch(\"locationTypes\");\n const { translate } = useTranslateProvider();\n const locationDetailsWatcher = watch(\"isLocationRequired\");\n const isHealthInfraMandatory = watch(\"isHealthInfraMandatory\");\n\n const mandatoryFields = [\n { label: \"Email\", value: \"isEmailMandatory\" },\n ...(formData?.env !== \"chip\"\n ? [{ label: \"Aadhar Number\", value: \"isAadharNumMandatory\" }]\n : []),\n { label: \"Contact Number\", value: \"isContactNumMandatory\" },\n ...(formData?.env !== \"chip\"\n ? [{ label: \"Convox Id\", value: \"isConvoxIdMandatory\" }]\n : []),\n { label: \"Last Name\", value: \"isLastNameMandatory\" },\n { label: \"Health Infrastructure\", value: \"isHealthInfraMandatory\" },\n { label: \"GeoLocation\", value: \"isGeolocationMandatory\" },\n ...(formData?.env !== \"chip\"\n ? [{ label: \"Smag Trained\", value: \"isSmagTrainedMandatory\" }]\n : []),\n { label: \"Nodal\", value: \"isNodalMandatory\" },\n ].filter((field) => {\n if (GeneralUtil.isTecho) {\n return ![\n \"isGeolocationMandatory\",\n \"isHealthInfraMandatory\",\n \"isLastNameMandatory\",\n \"isSmagTrainedMandatory\",\n ].includes(field.value);\n }\n if (\n GeneralUtil.isSewaRural ||\n GeneralUtil.isPhmp ||\n GeneralUtil.isImomcare\n ) {\n return field.value !== \"isNodalMandatory\";\n }\n if (GeneralUtil.isEkavach) {\n return ![\n \"isGeolocationMandatory\",\n \"isHealthInfraMandatory\",\n \"isLastNameMandatory\",\n \"isNodalMandatory\",\n \"isSmagTrainedMandatory\",\n ].includes(field.value);\n }\n return true;\n });\n /**\n * Closes the form modal and optionally resets the form.\n * @method handleClose\n * @returns {void}\n */\n\n const handleClose = () => {\n setOpen(0);\n reset();\n trackEvent(\"conversion_event\", {\n form: formRef.current,\n form_name: \"Manage Role\",\n submit: submitRef.current,\n });\n trackEvent(\"button_click\", {\n button_name: \"add role close button\",\n button_type: \"cancel\",\n button_id: \"managerole-close-button\",\n });\n };\n\n /**\n * Adds a new field value to the current list of values for a given field.\n * @method handleAddFields\n * @param {Object} value - The new value to be added to the field.\n * @param {string} name - The name of the field to which the new value should be added.\n * @returns {void}\n */\n\n const handleAddFields = (e, value, name) => {\n setValue(name, value);\n };\n\n /**\n * Handles the submission of role data by sending a POST request to create or update a role.\n *\n * @async\n * @function onSubmit\n * @param {Object} params - The role data to be submitted.\n * @param {string} [params.id] - The unique identifier of the role (to be deleted if not an update).\n * @param {string} [params.state] - The state of the role (to be deleted if not an update).\n * @param {string} [params.createdOn] - The creation timestamp of the role (to be deleted if not an update).\n * @param {string} [params.createdBy] - The creator of the role (to be deleted if not an update).\n * @param {string} [params.code] - The code associated with the role (to be deleted if not an update).\n * @param {string} [params.description] - The description of the role (to be deleted if not an update).\n * @param {boolean} [params.assignedFeatures] - Whether features are assigned (to be deleted if not an update).\n * @param {boolean} [params.isSmagTrainedMandatory] - Whether SMAG training is mandatory (to be deleted if not an update).\n * @param {boolean} [params.isBankDetailsRequired] - Whether bank details are required (to be deleted if not an update).\n * @param {boolean} [params.isBankDetailsMandatory] - Whether bank details are mandatory (to be deleted if not an update).\n * @param {Array<Object>} params.roleIds - List of role IDs.\n * @param {Array<Object>} params.manageByTeamTypeIds - List of team type IDs for management.\n * @param {Array<Object>} params.healthInfrastructureIds - List of health infrastructure IDs.\n * @param {Array<Object>} params.categoryIds - List of category IDs.\n *\n * @throws {Error} Throws an error if the role cannot be added.\n *\n * @returns {Promise<void>} - A Promise that resolves when the role has been successfully submitted.\n */\n\n const onSubmit = async (params) => {\n try {\n trackEvent(\"button_click\", {\n button_name: isUpdate ? \"update role button\" : \"add role button\",\n button_type: \"submit\",\n button_id: \"managerole-add-button\",\n });\n\n delete params.bankDetailsRequired;\n delete params.bankDetailsMandatory;\n\n // 2FA only applies to web (WEB/BOTH); a MOBILE-only role must never carry 2FA settings.\n if (params.roleType !== \"WEB\" && params.roleType !== \"BOTH\") {\n params.isTwoFactorEnabled = false;\n }\n // When 2FA is turned off, don't send a stale type selection.\n if (!params.isTwoFactorEnabled) {\n params.twoFactorType = null;\n } else if (!params.twoFactorType) {\n // Only one 2FA method exists (authenticator app); default it when 2FA is enabled.\n params.twoFactorType = \"AUTHENTICATOR_APP\";\n }\n\n if (!isUpdate) {\n delete params.id;\n delete params.state;\n delete params.createdOn;\n delete params.createdBy;\n delete params.code;\n delete params.description;\n delete params.assignedFeatures;\n\n // delete params.isSmagTrainedMandatory;\n delete params.assignedFeatureList;\n }\n params.roleIds = params.roleIds.map((item) => item?.id);\n params.canManageRoleIds = params.canManageRoleIds.map((item) => item?.id);\n params.manageByTeamTypeIds = params.manageByTeamTypeIds.map(\n (item) => item?.id,\n );\n params.healthInfrastructureIds = params.healthInfrastructureIds.map(\n (item) => item?.id,\n );\n // params.maxHealthInfra = parseInt(params.maxHealthInfra) || null;\n // params.maxPosition = parseInt(params.maxPosition) || null;\n params.categoryIds = params.categoryIds.map((item) => item?.id);\n params.locationTypes =\n params.isLocationRequired === true ? params.locationTypes : [];\n delete params.isLocationRequired;\n params.manageByRoleIds = params.roleIds;\n isUpdate ? await putRole(params) : await postRole(params);\n showToast({\n type: \"success\",\n message: `Role ${isUpdate ? \"Updated\" : \"Added\"} Successfully`,\n });\n submitRef.current = true;\n handleClose();\n isRoleListModified();\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Role Cannot be added: ${error?.response?.data?.message}`,\n });\n }\n };\n\n /**\n * Fetches and updates form data based on the selected role ID and initializes additional data needed for the form.\n *\n * This effect runs when the `selectedId` dependency changes. It retrieves role data by ID, updates the form fields\n * with the fetched role data, and sets additional data such as roles, location types, manage team types,\n * categories, and health infrastructure types.\n *\n * @async\n * @function useEffect\n */\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n setIsLoading((cur) => !cur);\n\n const env = GeneralUtil.getEnv();\n\n if (open !== 0) {\n const [roles, locationData, manageTeam, category, healthInfraType] =\n await Promise.all([\n getRoleList(),\n getLocationTypes(),\n execute({\n code: \"team_all_types_for_roles\",\n parameters: {},\n }),\n execute({\n code: \"retrieve_field_values_for_form_field\",\n parameters: {\n form: \"WEB\",\n fieldKey: \"role_catg\",\n },\n }),\n execute({\n code: \"retrieve_field_values_for_form_field\",\n parameters: {\n form: \"WEB\",\n fieldKey: \"infra_type\",\n },\n }),\n ]);\n\n setFormData((cur) => {\n return {\n ...cur,\n roles: roles.data,\n locationData: locationData.data,\n manageTeam: manageTeam?.data?.result,\n category: category?.data?.result,\n healthInfraType: healthInfraType?.data?.result,\n };\n });\n\n if (selectedId) {\n const { data: roleData } = await getRoleById(selectedId);\n setFormData((cur) => {\n return { ...cur, roleData, env };\n });\n Object.keys(roleData).map((key) => setValue(key, roleData[key]));\n setValue(\"isBankDetailsRequired\", roleData.isBankDetailsRequired);\n setValue(\"isBankDetailsMandatory\", roleData.isBankDetailsMandatory);\n const {\n manageByTeamTypeIds,\n healthInfrastructureIds,\n roleIds,\n categoryIds,\n } = roleData;\n setValue(\n \"manageByTeamTypeIds\",\n manageByTeamTypeIds\n ? manageByTeamTypeIds.map((item) =>\n manageTeam.data.result?.find((cur) => cur?.id === item),\n )\n : [],\n );\n setValue(\n \"healthInfrastructureIds\",\n healthInfrastructureIds\n ? healthInfrastructureIds\n .map((item) =>\n healthInfraType.data.result?.find(\n (cur) => cur?.id === item,\n ),\n )\n .filter((item) => item !== undefined)\n : [],\n );\n setValue(\n \"categoryIds\",\n categoryIds\n ? categoryIds.map((item) =>\n category.data.result?.find((cur) => cur?.id === item),\n )\n : [],\n );\n setValue(\n \"roleIds\",\n roleIds\n ? roleIds\n .map((item) => roles.data?.find((cur) => cur?.id === item))\n .filter((role) => role !== undefined)\n : [],\n );\n setValue(\n \"canManageRoleIds\",\n roleData.canManageRoleIds\n ? roleData.canManageRoleIds\n .map((item) => roles.data?.find((cur) => cur?.id === item))\n .filter((role) => role !== undefined)\n : [],\n );\n if (roleData.locationTypes.length > 0) {\n setValue(\"isLocationRequired\", true);\n } else {\n setValue(\"isLocationRequired\", false);\n }\n }\n }\n\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n message: `Error in manage role :${error?.message}`,\n type: \"error\",\n });\n setIsLoading((cur) => !cur);\n }\n };\n fetchData();\n }, [selectedId, open]);\n\n return (\n <Modal\n open={open !== 0}\n onClose={handleClose}\n data-testid=\"managerole-modal\"\n >\n <div className=\"mt-10 fixed inset-0 z-[100] flex items-center justify-center p-4 animate-in fade-in duration-200\">\n <Box\n className=\"w-full max-w-2xl rounded-[2.5rem] shadow-2xl shadow-blue-900/10 overflow-hidden flex flex-col animate-in zoom-in-95 duration-300\"\n sx={{ bgcolor: (theme) => theme.palette.custom.customBackground }}\n >\n <ManageRoleSkeleton isLoading={isLoading}>\n <div className=\"px-8 pt-8 pb-4 flex items-center justify-between\">\n <div>\n <Box\n component=\"h2\"\n className=\"text-2xl font-bold text-customBlue\"\n sx={{ color: \"text.primary\" }}\n >\n {!isUpdate ? \"Add New Role\" : \"Update Role\"}\n </Box>\n </div>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n className=\"w-10 h-10 rounded-full bg-slate-100 flex items-center justify-center text-slate-400 hover:bg-slate-200 hover:text-slate-600 transition-all\"\n data-testid=\"managerole-close-icon\"\n >\n <FontAwesomeIcon icon={faXmark} size=\"lg\" />\n </IconButton>\n </div>\n <form\n onSubmit={handleSubmit(onSubmit)}\n ref={formRef}\n className=\"px-8 pb-8 space-y-6 overflow-y-auto max-h-[80vh]\"\n >\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem label=\"Role Name\">\n <CustomTextField\n placeholder={\"Role Name\"}\n name=\"name\"\n id=\"name\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-role-name-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Max Position\"\n tooltip=\"This is the maximum no of users that can be created at one location of this role type\"\n >\n <CustomTextField\n name=\"maxPosition\"\n id=\"maxPosition\"\n errors={errors}\n control={control}\n rules={{\n maxLength: 3,\n pattern: /^\\d{1,3}$/,\n }}\n inputProps={{\n maxLength: 3,\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n onInput: (e) => {\n e.target.value = e.target.value.replace(/\\D/g, \"\");\n },\n }}\n dataTestId=\"managerole-max-position-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n {!GeneralUtil.isTecho && (\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem label=\"Max Health Infrastructure\">\n <CustomTextField\n name=\"maxHealthInfra\"\n id=\"maxHealthInfra\"\n control={control}\n errors={errors}\n rules={{\n maxLength: 3,\n pattern: /^\\d{1,3}$/,\n }}\n inputProps={{\n maxLength: 3,\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n onInput: (e) => {\n e.target.value = e.target.value.replace(\n /\\D/g,\n \"\",\n );\n },\n }}\n dataTestId=\"managerole-max-health-infra-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n )}\n </div>\n <div className=\"flex items-center gap-6 w-full\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-full \"\n >\n <FormItem\n label=\"Location Required\"\n required={true}\n direction={\"row\"}\n >\n <CustomToggleSwitch\n control={control}\n name=\"isLocationRequired\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n {/* <CustomRadioGroup\n name=\"isLocationRequired\"\n errors={errors}\n control={control}\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n direction=\"row\"\n dataTestId=\"managerole-location-details-radio\"\n className={\"m-0\"}\n /> */}\n </FormItem>\n </FormControl>\n </div>\n <div className=\"space-y-4\">\n {(locationDetailsWatcher === true || isSubmitting) && (\n <>\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Location\"\n required={true}\n tooltip=\"The OU level where users of this role perform their job function\"\n >\n <CustomAutocomplete\n id=\"locationTypes\"\n control={control}\n name=\"locationTypes\"\n options={formData.locationData}\n value={locTypes?.map((locationType) =>\n formData.locationData?.find(\n (location) =>\n location.type === locationType?.type,\n ),\n )}\n errors={errors}\n getOptionLabel={(option) => option?.name}\n dataTestId=\"managerole-location-type-select\"\n checkEquality=\"type\"\n onChange={(e, val) =>\n handleAddFields(e, val, \"locationTypes\")\n }\n />\n </FormItem>\n </div>\n </>\n )}\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Can Manage Role\"\n tooltip=\"Please select the roles that shall be managed by this role\"\n >\n <CustomAutocomplete\n name=\"roleIds\"\n id=\"roleIds\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-manage-role-select\"\n options={formData.roles}\n onChange={(e, val) => handleAddFields(e, val, \"roleIds\")}\n getOptionLabel={(options) => options?.name}\n />\n </FormItem>\n </div>\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Managed From\"\n tooltip=\"Please select the roles that can manage this role\"\n >\n <CustomAutocomplete\n name=\"canManageRoleIds\"\n id=\"canManageRoleIds\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-managed-by-role-select\"\n options={formData.roles}\n onChange={(e, val) =>\n handleAddFields(e, val, \"canManageRoleIds\")\n }\n getOptionLabel={(options) => options?.name}\n />\n </FormItem>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Role Type\"\n tooltip=\"Please select Role Type\"\n required={true}\n >\n <CustomDropdown\n control={control}\n id=\"roleType\"\n name=\"roleType\"\n options={roleTypes}\n displayName=\"name\"\n optionValue=\"name\"\n errors={errors}\n dataTestId=\"managerole-role-type-dropdown\"\n />\n </FormItem>\n </div>\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Can Manage Team\"\n tooltip=\"Please select the teams that shall be managed by this role\"\n >\n <CustomAutocomplete\n control={control}\n name=\"manageByTeamTypeIds\"\n id=\"manageByTeamTypeIds\"\n errors={errors}\n options={formData.manageTeam}\n dataTestId=\"managerole-manage-team-select\"\n onChange={(e, val) =>\n handleAddFields(e, val, \"manageByTeamTypeIds\")\n }\n getOptionLabel={(options) => options?.type}\n />\n </FormItem>\n </div>\n </div>\n <div className=\"space-y-4\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Select Health Infrastructure type\"\n tooltip=\"Please select the institute to be associated with the role\"\n required={isHealthInfraMandatory}\n >\n <CustomAutocomplete\n options={formData.healthInfraType}\n errors={errors}\n name=\"healthInfrastructureIds\"\n id=\"healthInfrastructureIds\"\n dataTestId=\"managerole-health-infrastructure-select\"\n control={control}\n onChange={(e, val) =>\n handleAddFields(e, val, \"healthInfrastructureIds\")\n }\n getOptionLabel={(option) => option?.value}\n />\n </FormItem>\n </div>\n </div>\n {!GeneralUtil.isBahaar && (\n <>\n <div className=\"space-y-4\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Category\"\n tooltip=\"Please select the category to be associated with the role\"\n >\n <CustomAutocomplete\n id=\"categoryIds\"\n name=\"categoryIds\"\n errors={errors}\n options={formData.category}\n dataTestId=\"managerole-role-category-select\"\n control={control}\n onChange={(e, val) =>\n handleAddFields(e, val, \"categoryIds\")\n }\n getOptionLabel={(option) => option?.value}\n />\n </FormItem>\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"flex items-center gap-6\">\n {\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-[60%] \"\n >\n <FormItem\n label=\"Bank Details Required\"\n tooltip=\"Select if bank details are required for this role\"\n required={true}\n labelWidth=\"50%\"\n childrenWidth=\"50%\"\n direction=\"row\"\n >\n <CustomToggleSwitch\n control={control}\n name=\"isBankDetailsRequired\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n </FormItem>\n </FormControl>\n }\n {!isUpdate && (\n <>\n <FormControl variant=\"outlined \" className=\"w-[40%]\">\n <div className=\"flex items-center gap-2\">\n <FormItem\n label=\"Self Manage\"\n labelWidth=\"60%\"\n childrenWidth=\"40%\"\n direction=\"row\"\n >\n <CustomCheckBox\n name=\"canSelfManage\"\n control={control}\n isFullWidth={false}\n data-testid=\"managerole-self-manage-checkbox\"\n />\n </FormItem>\n </div>\n </FormControl>\n </>\n )}\n </div>\n {showTwoFactorSetting && (\n <div className=\"flex items-center gap-6 w-full\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-[50%]\"\n >\n <FormItem\n label=\"Two-Factor Authentication\"\n tooltip=\"Require users of this role to use a two-factor authentication app\"\n labelWidth=\"60%\"\n childrenWidth=\"40%\"\n direction=\"row\"\n >\n <CustomToggleSwitch\n control={control}\n name=\"isTwoFactorEnabled\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n </FormItem>\n </FormControl>\n {isTwoFactorEnabled === true && (\n <FormControl variant=\"outlined\" className=\"w-[50%]\">\n <FormItem\n label=\"Authentication Method\"\n tooltip=\"Select which authentication method users of this role will use\"\n >\n <CustomDropdown\n control={control}\n id=\"twoFactorType\"\n name=\"twoFactorType\"\n options={twoFactorTypes}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"managerole-two-factor-type-dropdown\"\n />\n </FormItem>\n </FormControl>\n )}\n </div>\n )}\n <div className=\"flex items-center gap-6\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-col items-start justify-between\"\n >\n <FormItem\n label=\"Mandatory Fields\"\n tooltip=\"These fields are Mandatory when creating users of this role type\"\n >\n <FormGroup row>\n {mandatoryFields?.map((field) => (\n <CustomCheckBox\n key={field.value}\n control={control}\n name={field.value}\n label={field.label}\n isFullWidth={false}\n data-testid={`managerole-mandatory-field-${field.value}`}\n />\n ))}\n {bankDetails === true && (\n <CustomCheckBox\n name=\"isBankDetailsMandatory\"\n control={control}\n label=\"Bank Details\"\n isFullWidth={false}\n data-testid=\"managerole-bank-details-mandatory-checkbox\"\n />\n )}\n </FormGroup>\n </FormItem>\n </FormControl>\n </div>\n <Box\n className=\"flex items-center justify-end gap-3 pt-6 border-t\"\n sx={{ borderColor: \"divider\" }}\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={handleClose}\n data-testid=\"managerole-close-button\"\n >\n {translate(\"Close\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n data-testid=\"managerole-submit-button\"\n >\n {!isUpdate\n ? `${translate(\"Add Role\")}`\n : `${translate(\"Update Role\")}`}\n </Button>\n </Box>\n </form>\n </ManageRoleSkeleton>\n </Box>\n </div>\n </Modal>\n );\n};\n\nexport default ManageRole;\n\nManageRole.propTypes = {\n isUpdate: PropTypes.bool,\n role: PropTypes.object,\n onClose: PropTypes.func,\n open: PropTypes.bool,\n setOpen: PropTypes.func,\n selectedId: PropTypes.string,\n isRoleListModified: PropTypes.bool,\n};\n"],"names":["ManageRoleSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","i","PropTypes","roleTypes","twoFactorTypes","ManageRole","selectedId","isUpdate","open","setOpen","isRoleListModified","formRef","useRef","submitRef","trackEvent","useTrackEvent","formData","setFormData","useState","setIsLoading","validationSchema","Yup","schema","GeneralUtil","control","handleSubmit","errors","isSubmitting","setValue","watch","reset","useForm","yupResolver","bankDetails","isTwoFactorEnabled","roleType","showTwoFactorSetting","locTypes","translate","useTranslateProvider","locationDetailsWatcher","isHealthInfraMandatory","mandatoryFields","field","handleClose","handleAddFields","value","name","onSubmit","params","item","putRole","postRole","showToast","error","_b","_a","useEffect","cur","env","roles","locationData","manageTeam","category","healthInfraType","getRoleList","getLocationTypes","execute","_c","roleData","getRoleById","key","manageByTeamTypeIds","healthInfrastructureIds","roleIds","categoryIds","role","Modal","Box","theme","IconButton","FontAwesomeIcon","faXmark","FormControl","FormItem","CustomTextField","CustomToggleSwitch","Fragment","CustomAutocomplete","locationType","location","option","val","options","CustomDropdown","CustomCheckBox","FormGroup","Button"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotificationList-CUZSWp2J.js","sources":["../src/services/Notifications.js","../src/views/Notifications/Skeletons/NotificationsSkeletons.jsx","../src/views/Notifications/NotificationList.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nexport const toggleActiveState = ({ id, state }) =>\n api.put(\n GeneralUtil.isTecho ? `notificationtype/toggleActive?id=${id}&is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}` : `notificationtype/${id}?is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}`\n );\n \nexport const createNotification = (params) =>\n api.post(GeneralUtil.isTecho? \"notificationtype/create\" : \"notificationtype\", params);\n\nexport const updateNotification = (params) =>\n api.post(GeneralUtil.isTecho? \"notificationtype/update\" : \"notificationtype\", 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.isTecho || 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.isTecho || 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.isTecho || 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","GeneralUtil","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","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":";;;;;;;;;;;;;;;;;;;AAEO,MAAMA,KAAoB,CAAC,EAAE,IAAAC,GAAI,OAAAC,EAAK,MAC3CC,EAAI;AAAA,EACFC,EAAY,UAAU,oCAAoCH,CAAE,cAAcC,MAAU,aAAa,SAAS,OAAO,KAAK,oBAAoBD,CAAE,cAAcC,MAAU,aAAa,SAAS,OAAO;AACrM,GAEaG,KAAqB,CAACC,MACjCH,EAAI,KAAKC,EAAY,UAAS,4BAA4B,oBAAoBE,CAAM,GAEzEC,KAAqB,CAACD,MACjCH,EAAI,KAAKC,EAAY,UAAS,4BAA4B,oBAAoBE,CAAM,GCLzEE,KAA2B,CAAC,EAAE,UAAAC,GAAU,WAAAC,QAE/C,CADgBC,EAAYC,CAAc,KAI1C,CAACF,IACID,IAIP,gBAAAI,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,EAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0DAAA,CAA0D;AAAA,IACzE,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,mEAAA,CAAmE;AAAA,MAClF,gBAAAA,EAAC,OAAA,EAAI,WAAU,0DAAA,CAA0D;AAAA,IAAA,EAAA,CAC3E;AAAA,EAAA,GACF;AAAA,EAEA,gBAAAA,EAAC,OAAA,EAAI,WAAU,oDAAA,CAAoD;AAAA,GACrE;AAIJN,GAAyB,YAAY;AAAA,EACnC,UAAUO,EAAU;AAAA,EACpB,WAAWA,EAAU;AACvB;AAEO,MAAMC,KAA6B,CAAC,EAAE,UAAAP,GAAU,WAAAC,QAEjD,CADgBC,EAAYC,CAAc,KAI1C,CAACF,IACID,IAIP,gBAAAI,EAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,EAAA,gBAAAC,EAAC,SAAI,WAAU,kCACb,4BAAC,OAAA,EAAI,WAAU,kDAAiD,EAAA,CAClE;AAAA,oBACC,MAAA,EAAG;AAAA,EACJ,gBAAAD,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,4DAAA,CAA4D;AAAA,MAC9E,gBAAAA,EAAC,UAAA,EAAO,WAAU,oDAAA,CAAoD;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,4DAAA,CAA4D;AAAA,MAC9E,gBAAAA,EAAC,UAAA,EAAO,WAAU,oDAAA,CAAoD;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,4DAAA,CAA4D;AAAA,MAC9E,gBAAAA,EAAC,UAAA,EAAO,WAAU,oDAAA,CAAoD;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,4DAAA,CAA4D;AAAA,MAC9E,gBAAAA,EAAC,UAAA,EAAO,WAAU,oDAAA,CAAoD;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,2DAAA,CAA2D;AAAA,MAC7E,gBAAAA,EAAC,UAAA,EAAO,WAAU,oDAAA,CAAoD;AAAA,IAAA,EAAA,CACxE;AAAA,EAAA,GACF;AAAA,oBACC,MAAA,EAAG;AAAA,EACJ,gBAAAD,EAAC,OAAA,EAAI,WAAU,6DACb,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,iDAAA,CAAiD;AAAA,IAChE,gBAAAA,EAAC,OAAA,EAAI,WAAU,iDAAA,CAAiD;AAAA,EAAA,EAAA,CAClE;AAAA,GACF;AAIJE,GAA2B,YAAY;AAAA,EACrC,UAAUD,EAAU;AAAA,EACpB,WAAWA,EAAU;AACvB;ACpEA,MAAME,KAAqBC,EAAK,MAAM,OAAO,kCAAsB,CAAC,GAC9DC,KAA0BD,EAAK,MAAM,OAAO,uCAA2B,CAAC;AAiB9E,SAAwBE,KAAmB;AACzC,QAAMC,IAAaC,GAAA,GACb,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAE,GACjC,CAACC,GAAeC,CAAgB,IAAIF,EAAS,CAAA,CAAE,GAC/C,CAACG,GAAuBC,CAAwB,IAAIJ,EAAS,CAAA,CAAE,GAC/D,CAACK,GAAWC,CAAY,IAAIN,EAAS,EAAE,GACvC,CAACO,GAASC,CAAU,IAAIR,EAAS,CAAA,CAAE,GACnC,CAACS,GAAUC,EAAW,IAAIV,EAAS,CAAA,CAAE,GACrC,EAAE,WAAAW,EAAA,IAAcC,GAAA,GAChB,CAACC,GAAaC,CAAc,IAAId,EAAS,IAAI,GAC7C,CAACf,GAAW8B,CAAY,IAAIf,EAAS,EAAK,GAC1C,CAACgB,GAAQC,EAAS,IAAIjB,EAAS,CAAA,CAAE,GACjCkB,KAAiB;AAAA,IACrB;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ,CAACC,MACA,gBAAA9B,EAAC+B,KAAW,IAAI,KAAM,YAAI,qBAAqB,QAAQ,QAAQ,SAAA,CAAS;AAAA,IACjF;AAAA,IAEF;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,IAAA;AAAA,IAET,EAAE,OAAO,WAAW,OAAO,WAAW,OAAO,OAAA;AAAA,EAAO,GAEhD,CAACC,IAASC,EAAU,IAAItB,EAASkB,EAAc,GAC/C,CAACK,GAAUC,EAAW,IAAIxB,EAAS,EAAI,GACvC,CAACyB,GAAUC,EAAW,IAAI1B,EAAS,EAAI,GAEvC2B,IAAcC,EAAOL,CAAQ,GAC7BM,IAAcD,EAAOH,CAAQ;AAEnC,EAAAK,EAAU,MAAM;AACd,IAAAH,EAAY,UAAUJ;AAAA,EACxB,GAAG,CAACA,CAAQ,CAAC,GAEbO,EAAU,MAAM;AACd,IAAAD,EAAY,UAAUJ;AAAA,EACxB,GAAG,CAACA,CAAQ,CAAC;AAQb,QAAMM,KAAqB,YAAY;AACrC,QAAI;AACF,MAAAhB,EAAa,CAACiB,MAAQ,CAACA,CAAG,GAC1B,MAAMzD,GAAkB,EAAE,IAAIgC,EAAQ,IAAI,OAAOA,EAAQ,OAAO,GAChED,EAAa,EAAE;AACf,YAAM,EAAE,MAAA2B,MAAS,MAAMC,EAAA;AACvB,MAAAhC,EAAiB+B,CAAI,GACrB7B,EAAyB6B,CAAI,GAC7BE,EAAU;AAAA,QACR,MAAM;AAAA,QACN,SAAS,oCAAmC5B,KAAA,gBAAAA,EAAS,WAAU,aAAa,aAAa,QAAQ,QAAOA,KAAA,gBAAAA,EAAS,WAAU,aAAa,WAAW,UAAU;AAAA,MAAA,CAC9J,GACDQ,EAAa,CAACiB,MAAQ,CAACA,CAAG;AAAA,IAC5B,SAASI,GAAO;AACd,MAAAD,EAAU;AAAA,QACR,MAAM;AAAA,QACN,SAAS,SAASC,CAAK;AAAA,MAAA,CACxB,GACDrB,EAAa,CAACiB,MAAQ,CAACA,CAAG;AAAA,IAC5B;AAAA,EACF,GAEMK,KAAUC,GAAQ,MAAM,CAACnB,MAAQ;AACrC,UAAMoB,IAAO,CAAA;AAEb,KAAI,CAAC5D,EAAY,WAAWqC,KAAA,QAAAA,EAAS,sCACnCuB,EAAK,KAAK;AAAA,MACR,OAAO;AAAA,MACP,MACE,gBAAAlD;AAAA,QAACmD;AAAA,QAAA;AAAA,UACC,MAAMC;AAAA,UACN,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAGhB,SAAS,CAACC,MAAM;AACd,QAAApC,EAAa,CAAC,GACdE,EAAWkC,CAAC;AAAA,MACd;AAAA,IAAA,CACD;AAGH,UAAMC,IAAmB,CAAA;AACzB,YAAI,CAAChE,EAAY,WAAWqC,KAAA,QAAAA,EAAS,uCACnC2B,EAAiB,KAAK;AAAA,MACpB,OAAOhC;AAAA,QACLQ,EAAI,UAAU,WAAW,qBAAqB;AAAA,MAAA;AAAA,MAEhD,SAAS,CAACuB,MAAM;AACd,QAAAlC,EAAWkC,CAAC,GACZpC,EAAa,CAAC;AAAA,MAChB;AAAA,IAAA,CACD,GACDqC,EAAiB,KAAK;AAAA,MACpB,OAAOhC,EAAU,kBAAkB;AAAA,MACnC,SAAS,CAAC+B,MAAM;AACd,YAAI,CAACA,EAAE,MAAM;AACX,UAAAP,EAAU;AAAA,YACR,MAAM;AAAA,YACN,SAAS;AAAA,UAAA,CACV;AACD;AAAA,QACF;AACA,QAAA7B,EAAa,CAAC,GACdQ,EAAe4B,KAAA,gBAAAA,EAAG,IAAI,GACtBlC,EAAWkC,CAAC;AAAA,MACd;AAAA,IAAA,CACD,GACDC,EAAiB,KAAK;AAAA,MACpB,OAAOhC,EAAU,mBAAmB;AAAA,MACpC,SAAS,CAAC+B,MAAM;AACd,QAAApC,EAAa,CAAC,GACdE,EAAWkC,CAAC;AAAA,MACd;AAAA,IAAA,CACD,IAGCC,EAAiB,SAAS,KAC5BJ,EAAK,KAAK;AAAA,MACR,OAAO;AAAA,MACP,MACE,gBAAAlD;AAAA,QAACmD;AAAA,QAAA;AAAA,UACC,MAAMI;AAAA,UACN,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAGhB,WAAWD;AAAA,IAAA,CACZ,GAGIJ;AAAA,EACT,GAAG,CAACvB,GAAQL,CAAS,CAAC,GAEhBkC,IAAkBC;AAAA,IACtBC,GAAS,CAACC,MAAgB;AACxB,YAAMC,IAAehD,EAAc;AAAA,QAAO;;AACxC,mBAAAiD,IAAAC,EAAE,qBAAF,gBAAAD,EAAoB,cAAc,SAASF,OAC3CG,EAAE,WAAWxB,EAAY,UAAU,WAAW,eAC9CwB,EAAE,sBAAsBtB,EAAY,UAAU,OAAO;AAAA;AAAA,MAAA;AAEvD,MAAAjC,EAAW,mBAAmB;AAAA,QAC5B,YAAYoD;AAAA,QACZ,eAAeC,EAAa;AAAA,QAC5B,aAAa;AAAA,MAAA,CACd,GACD7C,EAAyB6C,CAAY;AAAA,IACvC,GAAG,GAAG;AAAA,IACN,CAAChD,GAAeL,CAAU;AAAA,EAAA,GAStBwD,KAAe,CAACV,MAAM;AAC1B,UAAMM,IAAcN,EAAE,OAAO,MAAM,YAAA;AACnC,IAAA3C,EAAUiD,CAAW,GACrBH,EAAgBG,CAAW;AAAA,EAC7B,GAMMK,KAAa,CAACC,MAAW;AAC7B,UAAMC,IAAQD,EAAO,cAAc,QAAQ,SAAS;AACpD,IAAAhC;AAAA,MAAW,CAACkC,MACVA,EAAK,IAAI,CAACC,MACJA,EAAI,UAAUH,EAAO,QAChB,EAAE,GAAGG,GAAK,WAAWF,EAAA,IAEvBE,CACR;AAAA,IAAA;AAGH,UAAMC,IAAa,CAAC,GAAGvD,CAAqB,EAAE,KAAK,CAAC,GAAGwD,MAAM;;AAC3D,YAAMC,KAAOV,IAAA,EAAEI,EAAO,KAAK,MAAd,gBAAAJ,EAAiB,WAAW,eACnCW,KAAOC,IAAAH,EAAEL,EAAO,KAAK,MAAd,gBAAAQ,EAAiB,WAAW;AAEzC,aAAIF,IAAOC,IACFN,MAAU,QAAQ,KAAK,IAE5BK,IAAOC,IACFN,MAAU,QAAQ,IAAI,KAExB;AAAA,IACT,CAAC;AAED,IAAAnD,EAAyBsD,CAAU;AAAA,EACrC,GAQMK,IAAkB,YAAY;AAClC,QAAI;AACF,MAAAhD,EAAa,CAACiB,MAAQ,CAACA,CAAG;AAC1B,YAAM,EAAE,MAAAC,MAAS,MAAMC,EAAA;AACvB,MAAAhC,EAAiB+B,CAAI;AACrB,YAAMgB,IAAehB,EAAK,OAAO,CAAAkB,MAAKA,EAAE,qBAAqB,QAAQA,EAAE,UAAU,QAAQ;AAEzF,UADA/C,EAAyB6C,CAAY,GACjC,CAACxC,EAAS,QAAQ;AACpB,cAAM,EAAE,MAAMA,EAAAA,IAAa,MAAMuD,GAAA;AACjC,QAAAtD,GAAYD,CAAQ;AAAA,MACtB;AACA,YAAM,EAAE,MAAMwD,EAAA,IAAqB,MAAMC,GAAoB,2BAA2B;AACxF,MAAAjD,GAAU,KAAK,MAAMgD,CAAgB,CAAC,GACtClD,EAAa,CAACiB,MAAQ,CAACA,CAAG,GAC1BjC,EAAU,EAAE;AAAA,IACd,SAASqC,GAAO;AACd,cAAQ,MAAM,SAASA,CAAK,GAC5BrB,EAAa,CAACiB,MAAQ,CAACA,CAAG;AAAA,IAC5B;AAAA,EACF;AAEA,EAAAF,EAAU,MAAM;AACd,IAAAiC,EAAA;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAMI,IAAe,CAACC,GAAOC,MAAe;AAC1C,UAAMC,IACJD,MAAe,WAAWD,IAAQ7C,GAE9BgD,IACJF,MAAe,qBAAqBD,IAAQ3C;AAE9C,IAAAD,GAAY8C,CAAY,GACxB5C,GAAY6C,CAAY,GAEpBzE,IACF+C,EAAgB/C,CAAM,IAEtBM;AAAA,MACEH,EAAc;AAAA,QAAO,CAAAkD,MACnBA,EAAE,WAAWmB,IAAe,WAAW,eACvCnB,EAAE,sBAAsBoB,IAAe,OAAO;AAAA,MAAA;AAAA,IAChD;AAAA,EAGN;AAEA,SACE,gBAAAnF;AAAA,IAACoF;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAS;AAAA,MACT,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAnF,EAACoF,GAAA,EACC,UAAA,gBAAApF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAMa,MAAc,KAAKA,MAAc;AAAA,YACvC,aAAa,MAAMC,EAAa,EAAE;AAAA,YAClC,MAAMD,MAAc,IAAIE,IAAU;AAAA,YAClC,UAAAE;AAAA,YACA,kBAAkBsD;AAAA,YAClB,eAAY;AAAA,UAAA;AAAA,QAAA,GAEhB;AAAA,0BACCU,GAAA,EACC,UAAA,gBAAApF;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAMW,MAAc;AAAA,YACpB,aAAa,MAAMC,EAAa,EAAE;AAAA,YAClC,MAAMC;AAAA,YACN,UAAAE;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACA,gBAAApB;AAAA,UAACqF;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,MAAMrE,MAAc;AAAA,YACpB,aAAa,8CAA6CE,KAAA,gBAAAA,EAAS,WAAU,aAAa,aAAa,QAAQ,QAAOA,KAAA,gBAAAA,EAAS,WAAU,aAAa,WAAW,UAAU;AAAA,YAC3K,aAAawB;AAAA,YACb,aAAa,MAAMzB,EAAa,EAAE;AAAA,YAClC,YAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAEb,gBAAAjB;AAAA,UAACsF;AAAA,UAAA;AAAA,YACC,QAAQ,EAAQ9D;AAAA,YAChB,aAAa,MAAMC,EAAe,MAAM,IAAI;AAAA,YAC5C,aAAaD;AAAA,YACb,YAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAEb,gBAAAzB,EAACL,MAAyB,WAAAE,GACxB,UAAA;AAAA,UAAA,gBAAAG,EAACwF,GAAA,EAAK,WAAS,IAAC,WAAU,wBACxB,UAAA;AAAA,YAAA,gBAAAvF,EAACuF,GAAA,EACC,UAAA,gBAAAvF;AAAA,cAAC+B;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,eAAY;AAAA,gBAEX,YAAU,4BAA4B;AAAA,cAAA;AAAA,YAAA,GAE3C;AAAA,YACA,gBAAAhC,EAACyF,GAAA,EAAI,WAAU,oEACb,UAAA;AAAA,cAAA,gBAAAzF,EAACyF,GAAA,EAAI,WAAU,2BACb,UAAA;AAAA,gBAAA,gBAAAxF;AAAA,kBAACyF;AAAA,kBAAA;AAAA,oBACC,SACE,gBAAAzF;AAAA,sBAAC0F;AAAA,sBAAA;AAAA,wBACC,SAASxD;AAAA,wBACT,UAAU,CAACmB,MACTyB,EAAazB,EAAE,OAAO,SAAS,QAAQ;AAAA,wBAEzC,eAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAGhB,OAAO/B,EAAU,QAAQ;AAAA,oBACzB,WAAW;AAAA,sBACT,YAAY;AAAA,wBACV,WAAW;AAAA,sBAAA;AAAA,oBACb;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAEF,gBAAAtB;AAAA,kBAACyF;AAAA,kBAAA;AAAA,oBACC,SACE,gBAAAzF;AAAA,sBAAC0F;AAAA,sBAAA;AAAA,wBACC,SAAStD;AAAA,wBACT,UAAU,CAACiB,MACTyB,EAAazB,EAAE,OAAO,SAAS,kBAAkB;AAAA,wBAEnD,eAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAGhB,OAAO/B,EAAU,QAAQ;AAAA,oBACzB,WAAW;AAAA,sBACT,YAAY;AAAA,wBACV,WAAW;AAAA,sBAAA;AAAA,oBACb;AAAA,kBACF;AAAA,gBAAA;AAAA,cACF,GACF;AAAA,cACA,gBAAAvB,EAACyF,GAAA,EAAI,WAAU,4CACb,UAAA;AAAA,gBAAA,gBAAAxF;AAAA,kBAAC2F;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,aAAY;AAAA,oBACZ,MAAK;AAAA,oBACL,UAAU5B;AAAA,oBACV,WAAU;AAAA,oBACV,OAAOtD;AAAA,oBACP,eAAY;AAAA,oBACZ,IAAI;AAAA,sBACF,wBAAwB;AAAA,wBACtB,QAAQ;AAAA,wBACR,OAAO,EAAE,IAAI,QAAQ,IAAI,QAAA;AAAA,sBAAQ;AAAA,sBAEnC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAA;AAAA,oBAAE;AAAA,kBACvB;AAAA,gBAAA;AAAA,iBAEA,CAACnB,EAAY,YAAWqC,KAAA,gBAAAA,EAAS,uCACjC,gBAAA3B;AAAA,kBAAC4F;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,SAAS,MAAM;AACb,sBAAArF,EAAW,gBAAgB;AAAA,wBACzB,aAAa;AAAA,wBACb,aAAa;AAAA,wBACb,WAAW;AAAA,sBAAA,CACZ,GACDU,EAAa,CAAC;AAAA,oBAChB;AAAA,oBACA,eAAY;AAAA,oBACZ,IAAI,EAAE,YAAY,SAAA;AAAA,oBAEjB,YAAU,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAClB,EAAA,CAEJ;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,GACF;AAAA,4BACCsE,GAAA,EAAK,MAAM,EAAE,IAAI,MAChB,UAAA,gBAAAvF;AAAA,YAAC6F;AAAA,YAAA;AAAA,cACC,SAAA7D;AAAA,cACA,SAAAgB;AAAA,cACA,WAAWlC;AAAA,cACX,kBAAkB;AAAA,gBAChB,YAAY;AAAA,cAAA;AAAA,cAEd,aAAa;AAAA,gBACX,YAAY;AAAA,kBACV,WAAW;AAAA,gBAAA;AAAA,cACb;AAAA,cAEF,YAAAkD;AAAA,cACA,WAAApE;AAAA,cACA,YAAW;AAAA,YAAA;AAAA,UAAA,EACb,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBuilder-DXexUIe8.js","sources":["../src/services/QueryBuilder.js","../src/views/QueryBuilder/Skeletons/QueryBuilderSkeleton.jsx","../src/views/QueryBuilder/QueryBuilder.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const retrieveAllConfigured = (isActive) =>\n api.get(\"/resource\", { params: { is_active: isActive } });\n\nexport const toggleState = (data) => api.put(\"/resource\", data);\n\nexport const executeForFormConfigurator = (data) =>\n api.post(`/resource/getdataforformconfigurator/${data.code}`, data);\n\nexport const executeWithTimeout = (params) =>\n api.post(\"/resource/getdatawithtimeout\", params);\n\nexport const executeQueryForFamilyReport = (data) =>\n api.post(\"/resource/getdata\", data);\n\nexport const executeAllQuery = (dataList) =>\n api.post(\"/resource/getdatas\", dataList);\n\nexport const executeAll = (dataList) =>\n api.post(\"/resource/getalldata\", dataList);\n\nexport const getServerList = () =>\n api.post(\"/resource/getdata\", {\n code: \"get_runqueryactive_server_list\",\n parameters: {},\n });\n\nexport const saveOrUpdate = (data) => api.post(\"/resource\", data);\n\nexport const runQuery = (query) =>\n api.post(\"/resource/runquery\", query, {\n headers: { \"Content-Type\": \"application/json\" },\n transformRequest: [(data) => data],\n });\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const QueryBuilderSkeleton = ({children , isLoading}) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"w-full justify-between flex-wrap flex flex-row pt-6\">\n <div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[36px] w-[64px]\"></div>\n </div>\n\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[160px] mr-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[60px]\"></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\nQueryBuilderSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import { lazy, default as React, Suspense, useEffect, useState, useRef } from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { toggleState } from \"../../services/QueryBuilder\";\nimport { execute } from \"@/common/services/GlobalApis\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport usePagination from \"@/hooks/usePagination\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport \"./Styles/QueryBuilder.scss\";\nconst AddEditQueryBuilder = lazy(() => import(\"./AddEditQueryBuilder\"));\nconst ShowFlywayQuery = lazy(() => import(\"./ShowFlywayQuery\"));\nconst ShowQueryHistory = lazy(() => import(\"./ShowQueryHistory\"));\nimport { Box, Button, Card, TextField, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faBars, faPen } from \"@fortawesome/free-solid-svg-icons\";\nimport { QueryBuilderSkeleton } from \"./Skeletons/QueryBuilderSkeleton\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\n/**\n * @module QueryBuilder\n * @returns {JSX.Element}\n */\n\nconst QueryBuilder = () => {\n const trackEvent = useTrackEvent();\n const [queryTableValues, setQueryTableValues] = useState([]);\n const [refreshData, setRefreshData] = useState(false);\n const [actualData, setActualData] = useState([]);\n const [currentPage, setCurrentPage] = useState(1);\n const [isActiveLabel, setIsActiveLabel] = useState(\"\");\n const [isActiveDescription, setIsActiveDescription] = useState(\"\");\n const [queryHistory, setQueryHistory] = useState({});\n const [openHistory, setOpenHistory] = useState(false);\n const [configuredQuery, setConfiguredQuery] = useState(\"\");\n const [openFlywayQuery, setOpenFlywayQuery] = useState(false);\n const [featureUuid, setFeatureUuid] = useState(null);\n const [search, setSearch] = useState(null);\n const [debounceSearch, setDebounceSearch] = useState(null);\n const [clickedRow, setClickedRow] = useState({});\n const [isEdit, setIsEdit] = useState(false);\n const [editRow, setEditRow] = useState({});\n const [toggleOpen, setToggleOpen] = useState(false);\n const [addEdit, setAddEdit] = useState(false);\n const [totalRows, setTotalRows] = useState(0);\n const { translate } = useTranslateProvider();\n const [rights, setRights] = useState({});\n const rightsRef = useRef(rights);\n\n useEffect(() => {\n rightsRef.current = rights;\n }, [rights]);\n\n const isClickhouseEnabledEnv = GeneralUtil.isEkavach || GeneralUtil.isPhmp;\n\n const queryTableFields = [\n { field: \"code\", label: \"Code\", align: \"left\" },\n {\n field: \"description\",\n label: \"Description\",\n align: \"left\",\n },\n { field: \"query\", label: \"Query\", align: \"left\" },\n { field: \"returnsResultSet\", label: \"Returns Result Set\" },\n { field: \"isPublic\", label: \"Is Public\" },\n ];\n\n if (isClickhouseEnabledEnv) {\n queryTableFields.push({\n field: \"isClickhouseQuery\",\n label: \"Is Clickhouse Query\",\n });\n }\n\n queryTableFields.push({ field: \"Actions\", label: \"Actions\" });\n\n const [isLoading, setIsLoading] = useState(false);\n\n const pageSize = 50;\n\n /**\n * Custom hook for managing paginated user data.\n *\n * @CustomHook\n * @type {Object}\n * @property {Array} pageData - The paginated user data fetched from the server.\n * @property {Function} fetchNextPage - Function to fetch the next page of data.\n * @property {boolean} isFetchingNextPage - Indicates if the next page is currently being fetched.\n **/\n const { data: pageData } = usePagination({\n key: [\"queries\", debounceSearch, currentPage, refreshData, rights],\n queryFn: (pageParam) => loadMoreData(pageParam),\n currentPage,\n limit: pageSize,\n searchString: debounceSearch || null,\n paginationType: \"traditional\",\n });\n\n /**\n * Handles the editing of a data item.\n * @function handleEdit\n * @param {Object} data - The data item to be edited, including at least the `uuid` property.\n * @param {string} data.uuid - The unique identifier of the data item.\n * @returns {void}\n */\n\n const handleEdit = (data) => {\n const toggledData = actualData.filter((item) => item.uuid === data.uuid);\n setEditRow(toggledData[0]);\n setAddEdit((cur) => !cur);\n setIsEdit(true);\n };\n\n /**\n * Handles toggling the state of a data item between active and inactive.\n * @function handleToggleOption\n * @param {Object} data - The data item whose state is being toggled, including at least the `uuid` and `state` properties.\n * @param {string} data.uuid - The unique identifier of the data item.\n * @param {string} data.state - The current state of the data item (e.g., 'ACTIVE' or 'INACTIVE').\n * @returns {void}\n */\n\n const handleToggleOption = (data) => {\n setIsActiveLabel(\n data?.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\"\n );\n setIsActiveDescription(\n data?.state === \"ACTIVE\"\n ? \"Are you sure you want to change the state from active to inactive?\"\n : \"Are you sure you want to change the state from inactive to active?\"\n );\n const toggledData = actualData.filter((item) => item.uuid === data.uuid);\n setClickedRow(toggledData[0]);\n };\n\n /**\n * Toggles the state of a boolean value used to open or close a toggle component.\n * @async\n * @function handleToggle\n * @returns {void}\n */\n\n const handleToggle = async () => {\n setToggleOpen((cur) => !cur);\n };\n\n /**\n * Handles the state toggling operation and updates the UI accordingly.\n * @async\n * @function handleToggleState\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\n * @throws {Error} Throws an error if `toggleState` or `loadInitialState` fails, which is caught and handled by showing a toast message.\n */\n\n const handleToggleState = async () => {\n try {\n let data = JSON.parse(JSON.stringify(clickedRow));\n data.state = clickedRow?.state === \"ACTIVE\" ? \"INACTIVE\" : \"ACTIVE\";\n await toggleState(data);\n await fetchTotalRows();\n const updatedData = await loadMoreData({\n limit: pageSize,\n offset: (currentPage - 1) * pageSize,\n searchString: search || \"\",\n });\n setTableData(updatedData);\n setRefreshData(clickedRow);\n setToggleOpen((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in toggle state\", type: \"error\" });\n }\n };\n\n /**\n * Retrieves and displays the query history for a specific query code.\n * @async\n * @function showQueryHistory\n * @returns {Promise<void>} A promise that resolves when the query history has been retrieved and displayed.\n * @throws {Error} Throws an error if `getQueryHistory` fails, which is caught and handled by showing a toast message.\n */\n\n const showQueryHistory = async () => {\n try {\n const data = {\n code: \"retrieve_logged_actions_by_table_name_query_code\",\n parameters: {\n tableName: \"query_master\",\n queryCode: clickedRow.code,\n },\n };\n const response = await execute(data);\n\n if (response?.data?.result?.length === 0) {\n showToast({\n message: \"No Query History found for Query code\",\n type: \"warn\",\n });\n } else {\n setQueryHistory(response?.data?.result);\n setOpenHistory((cur) => !cur);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in loading Query History\", type: \"error\" });\n }\n };\n\n /**\n * Toggles the display of the Flyway query configuration modal.\n * @function showFlywayQuery\n * @returns {void} This function does not return any value.\n */\n\n const showFlywayQuery = () => {\n setConfiguredQuery(clickedRow);\n setOpenFlywayQuery((cur) => !cur);\n };\n\n /**\n * Synchronizes the local feature state with the server.\n * @function syncWithServer\n * @returns {void} This function does not return any value.\n */\n\n const syncWithServer = () => {\n setFeatureUuid(clickedRow?.uuid);\n };\n\n /**\n * sets the feature UUid to null.\n * @function handleSyncClose\n * @returns {void} This function does not return any value.\n */\n\n const handleSyncClose = () => setFeatureUuid(() => null);\n\n const getActions = () => {\n const actions = [\n {\n label: \"\",\n icon: <FontAwesomeIcon icon={faBars} size=\"lg\" />,\n menuClick: handleToggleOption,\n menuItems: [\n {\n label: translate(isActiveLabel),\n onClick: handleToggle,\n },\n {\n label: \"Show Flyway Query\",\n onClick: showFlywayQuery,\n },\n {\n label: \"Show Query History\",\n onClick: showQueryHistory,\n },\n {\n label: \"Sync With Server\",\n onClick: syncWithServer,\n },\n ],\n dataTestId: \"MenuIcon\",\n },\n ];\n if (rightsRef.current?.[\"update.admin.query\"]) {\n actions.unshift({\n label: \"\",\n icon: <FontAwesomeIcon icon={faPen} size=\"lg\" />,\n onClick: handleEdit,\n dataTestId: \"EditIcon\",\n });\n }\n return actions;\n };\n\n useEffect(() => {\n const timer = setTimeout(async () => {\n await fetchTotalRows();\n setCurrentPage(1);\n setDebounceSearch(search);\n }, 1000);\n\n return () => clearTimeout(timer); // Cleanup previous timer\n }, [search]);\n\n const fetchTotalRows = async () => {\n try {\n const { data: countData } = await execute(\n {\n code: \"fetch_total_count_for_query_builder\",\n parameters: {\n state: null,\n searchString: search || null,\n },\n },\n { showLoader: false }\n );\n setTotalRows(countData.result[0].count);\n } catch (error) {\n console.error(error);\n }\n };\n\n /**\n * Fetches additional query data for pagination and logs the search tracking event.\n * @async\n * @function loadMoreData\n * @param {Object} pageParam - The pagination parameters for the API request.\n * @param {number} pageParam.limit - The number of items to fetch per page.\n * @param {number} pageParam.offset - The offset for pagination.\n * @returns {Promise<Array>} - A promise that resolves to an array of user data fetched from the API.\n * @throws {Error} - Displays a toast notification if an error occurs during the API call.\n *\n **/\n\n const loadMoreData = async (pageParam) => {\n try {\n if (rights?.[\"view.admin.query\"]) {\n setIsLoading((cur) => !cur);\n const { data } = await execute(\n {\n code: \"fetch_queries_for_query_builder\",\n parameters: {\n limit: pageParam.limit || 50,\n offset: pageParam.offset || 0,\n state: null,\n searchString: pageParam.searchString || \"\",\n },\n },\n { showLoader: false }\n );\n search !== \"\" &&\n trackEvent(\"search_tracking\", {\n searchTerm: search,\n results_count: data?.length,\n search_type: \"Page Search\",\n });\n setIsLoading((cur) => !cur);\n return data.result;\n }\n } catch (error) {\n showToast({ message: `error ${error}`, type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const loadRights = async () => {\n try {\n setIsLoading(true);\n const { data: featureJson } =\n await getAssignedFeatures(\"techo.manage.query\");\n setRights(JSON.parse(featureJson));\n setIsLoading(false);\n } catch (error) {\n console.error(\"Error loading rights:\", error);\n setIsLoading(false);\n }\n };\n useEffect(() => {\n loadRights();\n }, []);\n\n const setTableData = (tableData) => {\n const allQueriesData = tableData?.flat() || [];\n\n setActualData(allQueriesData);\n const data = allQueriesData.map((item) => {\n return {\n ...item,\n query: `${item?.query.slice(0, 50)}...`,\n returnsResultSet: item?.returnsResultSet ? \"Yes\" : \"No\",\n isPublic: item?.isPublic ? \"Yes\" : \"No\",\n isClickhouseQuery: item?.isClickhouseQuery ? \"Yes\" : \"No\",\n };\n });\n setQueryTableValues(data);\n };\n\n /**\n * `useEffect` hook that loads initial data when the component mounts.\n * @function useEffect\n * @async\n * @returns {void} This function does not return a value.\n */\n useEffect(() => {\n setTableData(pageData);\n }, [pageData]);\n\n /**\n * Toggles the add/edit state of the component and resets the edit row.\n * @function handleAddEdit\n */\n\n const handleAddEdit = () => {\n trackEvent(\"button_click\", {\n button_name: \"querybuilder-add-button\",\n button_type: \"navigate\",\n button_id: \"querybuilder-add-button\",\n });\n setAddEdit((cur) => !cur);\n setIsEdit(false);\n setEditRow({});\n };\n\n const addEditLoadInitial = async () => {\n try {\n if (search !== \"\") {\n setSearch(\"\");\n } else {\n await fetchTotalRows();\n const updatedData = await loadMoreData({\n limit: pageSize,\n offset: (currentPage - 1) * pageSize,\n searchString: search || \"\",\n });\n setTableData(updatedData);\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n return !isLoading && !rightsRef.current?.[\"view.admin.query\"] ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card className=\"h-80 w-150 flex justify-center items-center\">\n <Typography variant=\"h5\" data-testid=\"no-permission-message\" className=\"text-customBlue\">\n You dont have permission to view Queries\n </Typography>\n </Card>\n </Box>\n ) : (\n <Grid pt={2} sx={{ height: \"calc(100vh - 84px)\" }}>\n <Suspense>\n {addEdit && (\n <AddEditQueryBuilder\n loadInitialState={addEditLoadInitial}\n isEditMode={isEdit}\n editRow={editRow}\n open={addEdit}\n close={handleAddEdit}\n data-testid=\"querybuilder-addeditquerybuilder\"\n />\n )}\n </Suspense>\n\n {featureUuid && (\n <SyncWithServerDialog\n isOpen={Boolean(setFeatureUuid)}\n handleClose={handleSyncClose}\n featureUUID={featureUuid}\n dataTestId=\"querybuilder-syncwithserverdialog\"\n />\n )}\n\n <Suspense>\n <ShowFlywayQuery\n configuredQuery={configuredQuery}\n open={openFlywayQuery}\n onClose={() => {\n setOpenFlywayQuery((cur) => !cur);\n }}\n data-testid=\"querybuilder-showflywayquery\"\n />\n </Suspense>\n\n <Suspense>\n <ShowQueryHistory\n historyList={queryHistory}\n open={openHistory}\n handleClose={() => {\n setOpenHistory((cur) => !cur);\n }}\n data-testid=\"querybuilder-showqueryhistory\"\n />\n </Suspense>\n\n <CustomConfirmationModal\n description={isActiveDescription}\n title={\"CONFIRM ACTION\"}\n handleClick={handleToggleState}\n open={toggleOpen}\n handleClose={() => setToggleOpen((cur) => !cur)}\n dataTestId=\"querybuilder-customconfirmationmodal\"\n />\n\n <Grid>\n <QueryBuilderSkeleton isLoading={isLoading}>\n <>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems={\"center\"}\n >\n <Grid item=\"true\" mt={1}>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg uppercase text-customBlue\"\n >\n {translate(\"Queries\")}\n </Typography>\n </Grid>\n <Grid item=\"true\">\n <Grid container spacing={2}>\n <Grid item=\"true\">\n <TextField\n name=\"searchQuery\"\n id=\"searchQuery\"\n className=\"m-0 p-0\"\n placeholder=\"Search Code\"\n size=\"small\"\n value={search}\n onChange={(e) => setSearch(e?.target?.value)}\n slotProps={{\n input: {\n className: \"custom-input-root\",\n },\n }}\n sx={{\n \"& .MuiInputBase-root\": {\n backgroundColor: (theme) =>\n theme.palette.background.paper,\n },\n }}\n data-testid=\"querybuilder-search-textfield\"\n />\n </Grid>\n {rights?.[\"create.admin.query\"] && (\n <Grid item=\"true\" className=\"flex items-center\">\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={handleAddEdit}\n data-testid=\"querybuilder-add-button\"\n >\n {translate(\"Add\")}\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n <Grid container className=\"mt-4\">\n <CustomizedTable\n columns={queryTableFields}\n tableData={queryTableValues}\n actions={getActions()}\n paginationConfig={{\n pagination: true,\n rowsPerPageInTable: pageSize,\n onPageChange: (newPage) => {\n setCurrentPage(newPage);\n },\n currentPage: currentPage,\n totalRows: totalRows,\n }}\n dataTestId=\"querybuilder-customizedtable\"\n styleConfig={{ tableStyle: { maxHeight: 65 } }}\n isLoading={isLoading}\n />\n </Grid>\n </>\n </QueryBuilderSkeleton>\n </Grid>\n </Grid>\n );\n};\n\nexport default QueryBuilder;\n"],"names":["toggleState","data","api","saveOrUpdate","QueryBuilderSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddEditQueryBuilder","lazy","ShowFlywayQuery","ShowQueryHistory","QueryBuilder","trackEvent","useTrackEvent","queryTableValues","setQueryTableValues","useState","refreshData","setRefreshData","actualData","setActualData","currentPage","setCurrentPage","isActiveLabel","setIsActiveLabel","isActiveDescription","setIsActiveDescription","queryHistory","setQueryHistory","openHistory","setOpenHistory","configuredQuery","setConfiguredQuery","openFlywayQuery","setOpenFlywayQuery","featureUuid","setFeatureUuid","search","setSearch","debounceSearch","setDebounceSearch","clickedRow","setClickedRow","isEdit","setIsEdit","editRow","setEditRow","toggleOpen","setToggleOpen","addEdit","setAddEdit","totalRows","setTotalRows","translate","useTranslateProvider","rights","setRights","rightsRef","useRef","useEffect","isClickhouseEnabledEnv","GeneralUtil","queryTableFields","setIsLoading","pageSize","pageData","usePagination","pageParam","loadMoreData","handleEdit","toggledData","item","cur","handleToggleOption","handleToggle","handleToggleState","fetchTotalRows","updatedData","setTableData","error","showToast","showQueryHistory","response","execute","_b","_a","_c","showFlywayQuery","syncWithServer","handleSyncClose","getActions","actions","FontAwesomeIcon","faBars","faPen","timer","countData","loadRights","featureJson","getAssignedFeatures","tableData","allQueriesData","handleAddEdit","addEditLoadInitial","Box","Card","Typography","Grid","Suspense","SyncWithServerDialog","CustomConfirmationModal","Fragment","TextField","theme","Button","CustomizedTable","newPage"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RoleManagement-BThAL5LO.js","sources":["../src/services/Roles.js","../src/views/Roles/Skeletons/RoleManagementSkeleton.jsx","../src/views/Roles/RoleManagement.jsx"],"sourcesContent":["import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getAllRoleList = () => api.get(\"/role\");\n\nexport const deleteRoleFeature = (id) =>\n api.delete(GeneralUtil.isTecho? `/menuconfig/usermenuitem/delete?empMenuItemId=${id}` : `/menuconfig/usermenuitem/${id}`);\n\nexport const getRoleById = (id) => api.get(GeneralUtil.isTecho ? `/role/retrieveById?id=${id}` : `/role/${id}`);\n\nexport const postRole = (params) => api.post(\"/role\", { ...params });\n\nexport const putRole = (params) => GeneralUtil.isTecho ? api.put(\"/role/update\", { ...params }) : api.post(\"/role\", { ...params });\n\nexport const ToggleState = (params) =>\n api.put(`role/?is_active=${params.state === \"INACTIVE\" ? \"true\" : \"false\"}`, {\n ...params,\n });\nexport const postNewFeature = (params, id) =>\n api.post(`/menuconfig/assignnewfeature?roleId=${id}`, { ...params });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst RoleManagementSkeleton = ({ children, isLoading = true }) => {\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=\"pt-6 relative h-[90vh]\">\n {/* skleton for roles and add button */}\n\n <div className=\"flex flex-row h-[80vh] \">\n <div className=\"flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md\">\n {\" \"}\n <div className=\"flex justify-between\">\n {/* skleton for list of roles and toogle roles */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-23 h-[40px] mr-3\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n <div className=\"flex flex-col border border-gray-300 w-[80%] p-2 rounded-md\">\n <div className=\"flex justify-between\">\n {/* skleton for role name and options */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-24 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-21 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n </div>\n\n <div className=\"absolute bottom-20 right-[10px] \">\n <div className=\"bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nRoleManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport default RoleManagementSkeleton;\n","import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { Suspense, useEffect, useState, lazy } from \"react\";\nimport {\n Box,\n Card,\n Switch,\n TextField,\n Button,\n Chip,\n Typography,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getAllRoleList,\n ToggleState,\n deleteRoleFeature,\n getRoleById,\n} from \"../../services/Roles.js\";\nimport { getRoleList } from \"@/common/services/GlobalApis.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport RoleManagementSkeleton from \"./Skeletons/RoleManagementSkeleton.jsx\";\nimport { useSelector } from \"react-redux\";\nconst AddFeatures = lazy(() => import(\"./AddFeatures.jsx\"));\nconst ManageRole = lazy(() => import(\"./ManageRole.jsx\"));\n\nexport default function RoleManagement() {\n const { translate } = useTranslateProvider();\n const [Data, setData] = useState(\"\");\n const [selectedRole, setSelectedRole] = useState(Data[0]);\n const [includeInActive, setincludeInActive] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [openManageRole, setOpenManageRole] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [rights, setRights] = useState({});\n const trackEvent = useTrackEvent();\n const currentLoogedInUserRoleId = useSelector((state) => state.Authenticate.user.roleId);\n const [allowedRoleIds, setallowedRoleIds] = useState([]);\n\n const getAllData = async (isPreserveRole = false) => {\n try {\n setIsLoading(true);\n const roleListPromise = includeInActive ? getAllRoleList() : getRoleList();\n let data, userRoleIds = [];\n if (currentLoogedInUserRoleId) {\n // Run both APIs in parallel\n const [{ data: roleData }, currRoleData] = await Promise.all([\n roleListPromise,\n getRoleById(currentLoogedInUserRoleId),\n ]);\n data = roleData;\n userRoleIds = currRoleData?.data?.roleIds || [];\n } else {\n // Only fetch role list\n const { data: roleData } = await roleListPromise;\n data = roleData;\n }\n setallowedRoleIds(userRoleIds);\n // ✅ Filter logic (keep only allowed roles)\n const filteredData =\n userRoleIds.length > 0\n ? data.filter((role) => userRoleIds.includes(role.id))\n : data; // fallback: show all if no roleIds\n setData(filteredData);\n if (!isPreserveRole && filteredData.length > 0) {\n setSelectedRole(filteredData[0]);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(function () {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\"techo.manage.role\");\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n getAllData();\n }, []);\n\n const handleCheckboxChange = async (event) => {\n let isChecked = event.target.checked;\n setincludeInActive(event.target.checked);\n try {\n setIsLoading((cur) => !cur);\n let data;\n if (isChecked) {\n ({ data } = await getAllRoleList());\n } else {\n ({ data } = await getRoleList());\n }\n if (allowedRoleIds && allowedRoleIds.length > 0) {\n data = data.filter(\n (role) => allowedRoleIds.includes(role.id)\n );\n }\n setData(data);\n setSelectedRole(data[0]);\n setIsLoading((cur) => !cur);\n setSearchText(\"\");\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const filterData = Data\n ? Data?.filter((feature) =>\n feature.name.toLowerCase().includes(searchText.toLowerCase())\n )\n : [];\n\n const formatDateDDMMYYYY = (timestamp) => {\n if (!timestamp) return \"\";\n const date = new Date(Number(timestamp));\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n };\n\n const handleToggleState = async () => {\n try {\n const payload = Data?.find((data) => data.id === selectedRole.id);\n await ToggleState(payload);\n showToast({\n message: `State succesfully changed from ${payload?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${payload?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n type: \"success\",\n });\n let res;\n setIsLoading((cur) => !cur);\n if (includeInActive) {\n res = await getAllRoleList();\n } else {\n res = await getRoleList();\n }\n\n setData(res.data);\n setSelectedRole(res.data[0]);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in handle active\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const sortedFilteredFeatures = Data\n ? Data.find((obj) => obj.id === selectedRole.id)\n ?.assignedFeatureList.filter((feature) =>\n feature.featureName\n ?.toLowerCase()\n .includes(searchQuery?.toLowerCase())\n )\n .sort((a, b) => a.featureName?.localeCompare(b.featureName))\n : [];\n\n const handleDeleteRoleFeature = async (feature) => {\n try {\n await deleteRoleFeature(feature.userMenuItemId);\n await getAllData(true);\n setSearchQuery(\"\");\n showToast({ message: \"Feature deleted successfully!\", type: \"success\" });\n } catch (error) {\n showToast({ message: error, type: \"error\" });\n }\n };\n\n const handleManageRoleModel = (index) => {\n setOpenManageRole(index);\n trackEvent(\"button_click\", {\n button_name: `${index === 1 ? \"add\" : \"edit\"} role modal button`,\n button_type: \"navigate\",\n button_id: `roles-${index === 1 ? \"add\" : \"edit\"}-button`,\n });\n };\n\n const isRoleListModified = () => {\n getAllData();\n setSearchText(\"\");\n };\n\n const handleOpen = async () => {\n try {\n setOpenModal(true);\n await trackEvent(\"button_click\", {\n button_name: \"add feature button\",\n button_type: \"navigate\",\n button_id: \"roles-addfeatures-button-add\",\n });\n } catch (error) {\n console.error(error);\n }\n };\n\n return GeneralUtil.isTecho && !isLoading && !rights?.[\"view.manage.role\"] ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Roles\n </Typography>\n </Card>\n </Box>\n ) : (\n <RoleManagementSkeleton isLoading={isLoading}>\n <Box className=\"flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]\">\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:w-[300px] flex flex-col p-4\"\n >\n <div className=\"flex justify-between items-center mb-3\">\n <Typography\n variant=\"h6\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n User Roles\n </Typography>\n {(!GeneralUtil.isTecho || rights?.['create.manage.role']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => handleManageRoleModel(1)}\n data-testid=\"managerole-add-button\"\n >\n {translate(\"+ Add Role\")}\n </Button>\n )}\n </div>\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Search roles...\"\n fullWidth\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n data-testid=\"listofroles-search-input\"\n />\n <div className=\"flex items-center gap-2 mt-3\">\n <Switch\n size=\"small\"\n checked={includeInActive}\n onChange={handleCheckboxChange}\n />\n <Typography variant=\"body2\">Include Inactive</Typography>\n </div>\n <div className=\"flex-1 overflow-y-auto mt-4\">\n {filterData.length > 0 && (\n <>\n {filterData.map((role) => (\n <Card\n key={role.id}\n variant=\"outlined\"\n onClick={() => setSelectedRole(role)}\n className={`p-3 cursor-pointer transition\n ${selectedRole.id === role.id\n ? \"border-b-2\"\n : \"border-b-2 border-0\"\n }`}\n sx={\n selectedRole.id === role.id\n ? {\n bgcolor: (t) => alpha(t.palette.primary.main, 0.08),\n }\n : {}\n }\n >\n <Typography fontWeight={600}>\n {role.name}\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n {role?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {role.assignedFeatureList.length} Features\n </Typography>\n </Card>\n ))}\n </>\n )}\n </div>\n </Card>\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:flex-1 flex flex-col p-5\"\n >\n <div className=\"flex flex-col sm:flex-row justify-between items-start border-b pb-4 gap-4\">\n <div className=\"flex flex-col gap-1 w-full sm:w-auto\">\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"h5\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n {selectedRole?.name || \"Select Role\"}\n </Typography>\n {selectedRole?.state === \"ACTIVE\" && (\n <Chip label=\"ACTIVE\" color=\"success\" size=\"small\" />\n )}\n {selectedRole?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </div>\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n className=\"mt-1\"\n >\n Created on {formatDateDDMMYYYY(selectedRole?.createdOn)}\n </Typography>\n </div>\n <div className=\"flex gap-2\">\n {(!GeneralUtil.isTecho || rights?.['update.manage.role.toggleActive']) && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => handleToggleState(1)}\n >\n {selectedRole?.state === \"ACTIVE\" ? \"Deactivate\" : \"Activate\"}\n </Button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.role']) && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={() => handleManageRoleModel(2)}\n >\n ✏️ Edit Role\n </Button>\n )}\n </div>\n </div>\n {/* ASSIGNED FEATURES */}\n <div className=\"mt-5 flex flex-col flex-1 overflow-hidden\">\n <div className=\"flex flex-col sm:flex-row justify-between items-start sm:items-center mb-4 gap-4\">\n <div className=\"flex flex-row items-center gap-2 w-full sm:w-auto\">\n <Typography fontWeight={600}>{translate(\"Assigned Features\")}</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ({sortedFilteredFeatures.length} {translate(\"features active for this role\")})\n </Typography>\n </div>\n <TextField\n size=\"small\"\n sx={{ width: { xs: \"100%\", sm: \"60%\" } }}\n placeholder=\"Search Feature Name\"\n variant=\"outlined\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n data-testid=\"assignedfeatures-search-input\"\n />\n </div>\n <Box className=\"overflow-x-auto w-full\">\n <Box\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]\"\n sx={{\n color: \"text.secondary\",\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n }}\n >\n <div>{translate(\"FEATURE NAME\")}</div>\n <div className=\"text-center\">{translate(\"ACTIONS\")}</div>\n </Box>\n <Box\n className=\"h-[calc(100vh-440px)] overflow-y-auto min-w-[500px]\"\n sx={{\n bgcolor: \"background.paper\",\n }}\n >\n {sortedFilteredFeatures.length > 0 && (\n <>\n {sortedFilteredFeatures.map((feature, index) => (\n <Box\n key={feature.id}\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition\"\n sx={{\n \"&:hover\": {\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n },\n }}\n >\n <div className=\"flex flex-col\">\n <Typography sx={{ fontSize: \"13px\", fontWeight: 600 }}>\n {feature.featureName}\n </Typography>\n </div>\n <div className=\"flex justify-center\">\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.unassignFeature']) && (\n <FontAwesomeIcon\n icon={faTrash}\n onClick={() => {\n handleDeleteRoleFeature(feature);\n }}\n color=\"error\"\n className=\"text-red-400 cursor-pointer\"\n data-testid={`assignedfeatures-delete-icon-${index}`}\n />\n )}\n </div>\n </Box>\n ))}\n </>\n )}\n {sortedFilteredFeatures.length === 0 && (\n <>\n <Typography\n className=\"p-4\"\n sx={{ fontSize: \"13px\", fontStyle: \"italic\" }}\n >\n No Features assigned yet!\n </Typography>\n </>\n )}\n </Box>\n </Box>\n </div>\n <Box\n className=\"border-t p-4\"\n sx={{\n bgcolor: (t) => alpha(t.palette.primary.main, 0.06),\n }}\n >\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.assignFeature']) && (\n <Button variant=\"outlined\" size=\"small\" onClick={handleOpen}>\n + Add More Features\n </Button>\n )}\n </Box>\n </Card>\n <Suspense>\n <ManageRole\n isUpdate={openManageRole !== 1}\n selectedId={openManageRole === 2 ? selectedRole.id : null}\n data-testid=\"roles-managerole-add-button\"\n open={openManageRole}\n setOpen={setOpenManageRole}\n isRoleListModified={isRoleListModified}\n />\n </Suspense>\n <Suspense fallback={<div className=\"animate-pulse w-80 h-20 \"></div>}>\n {openModal === true && (\n <AddFeatures\n open={openModal}\n setOpenModal={setOpenModal}\n selectedId={selectedRole.id}\n setData={() => getAllData(true)}\n assignedFeatureList={\n Data\n ? (() =>\n Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n ? Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n : Data[0]?.assignedFeatureList)()\n : []\n }\n data-testid=\"roles-addfeatures-component\"\n />\n )}\n </Suspense>\n </Box>\n </RoleManagementSkeleton>\n );\n}\n"],"names":["getAllRoleList","api","deleteRoleFeature","id","GeneralUtil","getRoleById","postRole","params","putRole","ToggleState","postNewFeature","RoleManagementSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddFeatures","lazy","ManageRole","RoleManagement","translate","useTranslateProvider","Data","setData","useState","selectedRole","setSelectedRole","includeInActive","setincludeInActive","setIsLoading","openModal","setOpenModal","openManageRole","setOpenManageRole","searchText","setSearchText","searchQuery","setSearchQuery","rights","setRights","trackEvent","useTrackEvent","currentLoogedInUserRoleId","state","allowedRoleIds","setallowedRoleIds","getAllData","isPreserveRole","roleListPromise","getRoleList","data","userRoleIds","roleData","currRoleData","_a","filteredData","role","error","showToast","useEffect","featureJson","getAssignedFeatures","handleCheckboxChange","event","isChecked","cur","filterData","feature","formatDateDDMMYYYY","timestamp","date","day","month","year","handleToggleState","payload","res","sortedFilteredFeatures","obj","a","b","handleDeleteRoleFeature","handleManageRoleModel","index","isRoleListModified","handleOpen","Box","Card","Typography","Button","TextField","Switch","Fragment","t","alpha","Chip","FontAwesomeIcon","faTrash","Suspense","_b","_c"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShowFlywayQuery-BkyA6QaA.js","sources":["../src/views/QueryBuilder/ShowFlywayQuery.jsx"],"sourcesContent":["import { useTranslateProvider } from '@/common/languageTranslator/TranslationContext';\nimport { showToast } from '@/common/toaster/toaster';\nimport useTrackEvent from '@/hooks/useTrackEvent';\nimport CustomConfirmationModal from '@/views/custom-components/CustomConfirmationModal';\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from '@mui/material';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\n/**\n * A React functional component that displays a configured Flyway query.\n * @mdoule ShowFlywayQuery\n * @param {Object} props - Component properties.\n * @param {Object} props.configuredQuery - The query configuration object to display.\n * @param {boolean} props.open - Boolean flag indicating if the component should be visible.\n * @param {function} props.onClose - Callback function to close the component.\n */\n\nconst ShowFlywayQuery = ({ configuredQuery, open, onClose }) => {\n const [text, setText] = useState('');\n const [isPublicKeyword, setIsPublicKeyword] = useState(false);\n const [openConfirm, setOpenConfirm] = useState(false);\n const trackEvent = useTrackEvent();\n const { translate } = useTranslateProvider();\n const isClickhouseEnabledEnv = GeneralUtil.isEkavach || GeneralUtil.isPhmp;\n\n /**\n *\n * Generates a SQL query string based on the `configuredQuery` object.\n * @function generateQueryText\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query.\n * @param {string} configuredQuery.code - The unique code for the query.\n * @param {string} configuredQuery.uuid - The unique identifier for the query.\n * @param {number} configuredQuery.createdBy - The ID of the user who created the query.\n * @param {string} [configuredQuery.params] - The parameters for the query.\n * @param {string} configuredQuery.query - The actual SQL query text.\n * @param {string} [configuredQuery.description] - A description of the query.\n * @param {boolean} [configuredQuery.returnsResultSet] - Flag indicating if the query returns a result set.\n * @param {string} [configuredQuery.state] - The state of the query (e.g., 'ACTIVE').\n * @returns {void}\n */\n\n const generateQueryText = useCallback(() => {\n const publicKeyword = configuredQuery.query.includes('public');\n setIsPublicKeyword(publicKeyword);\n\n let queryText = `DELETE FROM QUERY_MASTER WHERE CODE='${configuredQuery.code}';\\n\\n`;\n queryText += `INSERT INTO QUERY_MASTER (uuid, created_by, created_on, modified_by, modified_on, code, params, query, description, returns_result_set, state, is_mobile_query, is_public ${isClickhouseEnabledEnv ? ', is_clickhouse_query' : ''}) \\nVALUES ( \\n`;\n queryText += `'${configuredQuery.uuid}', ${configuredQuery.createdBy}, current_date, ${configuredQuery.createdBy}, current_date, `;\n queryText += `'${configuredQuery.code}', \\n`;\n\n queryText += configuredQuery.params ? `'${configuredQuery.params}', \\n` : 'null, \\n';\n queryText += `'${configuredQuery.query.replace(/'/g, \"''\")}', \\n`;\n queryText += configuredQuery.description ? `'${configuredQuery.description}', \\n` : 'null, \\n';\n queryText += configuredQuery.returnsResultSet !== undefined ? `${configuredQuery.returnsResultSet}, ` : 'false, ';\n queryText += configuredQuery.state ? `'${configuredQuery.state}', ` : `'ACTIVE', `;\n queryText += ` ${configuredQuery?.isMobileQuery},`;\n queryText += `${configuredQuery?.isPublic}`;\n if (isClickhouseEnabledEnv) queryText += `,${configuredQuery.isClickhouseQuery || false}`;\n queryText += ');';\n\n setText(queryText);\n }, [configuredQuery]);\n\n /**\n *\n * Copies the generated query text to the clipboard and displays a success message.\n * @function copyQuery\n * @returns {void}\n */\n\n const copyQuery = () => {\n navigator.clipboard.writeText(text).then(() => {\n showToast({ message: 'Query Copied', type: 'success' });\n onClose();\n });\n };\n\n /**\n * Triggers a download operation and toggles the confirmation dialog visibility.\n * The function assumes that `download` and `setOpenConfirm` are available in the current scope.\n * @function askForConfirmation\n * @returns {void}\n */\n\n const askForConfirmation = () => {\n download();\n setOpenConfirm((cur) => !cur);\n };\n\n /**\n * Creates and triggers a download of a text file containing the query text.\n *\n * @function download\n * @returns {void}\n */\n\n const download = () => {\n const blob = new Blob([text], { type: 'text/plain' });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `V${new Date().getTime()}__CHANGE_IN_${configuredQuery.code}.sql`;\n document.body.appendChild(a);\n\n a.click();\n trackEvent('file_download', {\n file_type: 'sql',\n file_name: a.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: 'success',\n });\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n /**\n *\n * Handles the download process based on the presence of a public keyword in the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n if (isPublicKeyword) {\n setOpenConfirm((cur) => !cur);\n } else {\n download();\n }\n };\n\n /**\n * `useEffect` Hook to Generate Query Text\n *\n * This effect hook is used to generate the SQL query text whenever the `configuredQuery` dependency changes.\n *\n * @function useEffect\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query text.\n * @param {function} generateQueryText - A function that generates the query text based on `configuredQuery`.\n */\n\n useEffect(() => {\n if (configuredQuery) {\n generateQueryText();\n }\n }, [configuredQuery, generateQueryText]);\n return (\n <>\n <CustomConfirmationModal\n description={\"This Flyway contains keyword 'public'. Are you sure you want to download?\"}\n title={'CONFIRM ACTION'}\n handleClick={askForConfirmation}\n open={openConfirm}\n handleClose={() => setOpenConfirm((cur) => !cur)}\n dataTestId=\"showflywayquery-customconfirmationmodal\"\n />\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"md\">\n <DialogTitle className=\"p-2.5 px-5 flex border-b font-medium text-lg\">{translate('Flyway Query')}</DialogTitle>\n <DialogContent>\n <TextField\n multiline\n rows={10}\n variant=\"outlined\"\n fullWidth\n value={text}\n sx={{\n '& .MuiInputBase-input': {\n fontSize: '14px',\n },\n '& .MuiOutlinedInput-root': {\n // fontSize: '14px'\n borderRadius: '5px',\n },\n }}\n slotProps={{\n input: {\n readOnly: true,\n },\n }}\n data-testid=\"showflywayquery-textfield\"\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={handleDownload}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-download\"\n >\n {translate('Download')}\n </Button>\n <Button\n onClick={copyQuery}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-copyquery\"\n >\n {translate('Copy Query')}\n </Button>\n <Button\n onClick={onClose}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n data-testid=\"showflywayquery-button-cancel\"\n >\n {translate('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nShowFlywayQuery.propTypes = {\n configuredQuery: PropTypes.any,\n open: PropTypes.any,\n onClose: PropTypes.any,\n};\n\nexport default ShowFlywayQuery;\n"],"names":["ShowFlywayQuery","configuredQuery","open","onClose","text","setText","useState","isPublicKeyword","setIsPublicKeyword","openConfirm","setOpenConfirm","trackEvent","useTrackEvent","translate","useTranslateProvider","isClickhouseEnabledEnv","GeneralUtil","generateQueryText","useCallback","publicKeyword","queryText","copyQuery","showToast","askForConfirmation","download","cur","blob","blobSizeInKB","url","a","handleDownload","useEffect","jsxs","Fragment","jsx","CustomConfirmationModal","Dialog","DialogTitle","DialogContent","TextField","DialogActions","Button","PropTypes"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TypeConfiguration-D-3xNcyd.js","sources":["../src/views/Events/TypeConfiguration.jsx"],"sourcesContent":["import React from \"react\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport * as Yup from \"yup\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport {\n FormControl,\n Select,\n MenuItem,\n Button,\n Box,\n Typography,\n} from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n/**\n * A form component for configuring event types.\n * @module TypeConfigurationForm\n * @param {Object} props - The props for the component.\n * @param {Function} props.setType - Function to set the selected type.\n * @param {Function} props.onSubmit - Function to handle form submission.\n * @returns {JSX.Element} The rendered form component.\n */\nconst TypeConfigurationForm = ({ setType, onSubmit }) => {\n const { translate } = useTranslateProvider();\n const validationSchema = Yup.object().shape({\n type: Yup.string().required(\"Type is Required\"),\n });\n\n const {\n control,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n /**\n * @function onFormSubmit\n * Handles form submission.\n * Calls the onSubmit function and resets the form.\n */\n const onFormSubmit = () => {\n onSubmit();\n reset();\n setType(null);\n };\n\n return (\n <div>\n <FormControl\n fullWidth\n error={!!errors.type}\n className=\"mb-2\"\n data-testid=\"typeconfigurationform-formcontrol-type\"\n >\n <Typography variant=\"body2\" className=\"m-1\">\n {translate(\"Type\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <Controller\n name=\"type\"\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Select\n {...field}\n size=\"small\"\n displayEmpty\n onChange={(e) => {\n field.onChange(e.target.value);\n setType(e.target.value);\n }}\n data-testid=\"typeconfigurationform-select-type\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">{translate(\"Select\")}</Typography>\n </MenuItem>\n <MenuItem className=\"text-[14px] \" value=\"SMS\">\n {translate(\"SMS Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EMAIL\">\n {translate(\"Email Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"QUERY\">\n {translate(\"Query\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"MOBILE\">\n {translate(\"Mobile Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EXCEPTION\">\n {translate(\"Exception\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"SYSTEM_FUNCTION\">\n {translate(\"System Function\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"PUSH_NOTIFICATION\">\n {translate(\"Push Notification\")}\n </MenuItem>\n {(GeneralUtil.isEkavach || GeneralUtil.isPhmp) && (\n <MenuItem className=\"text-[14px]\" value=\"KAFKA_SYNC\">\n {translate(\"Kafka Sync\")}\n </MenuItem>\n )}\n </Select>\n )}\n />\n {errors?.type && (\n <p\n className=\"error-helper\"\n data-testid=\"typeconfigurationform-error-helper-type\"\n >\n {errors?.type?.message}\n </p>\n )}\n </FormControl>\n\n <Box className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n setType(null);\n reset();\n setType(null);\n }} // Clear form\n data-testid=\"typeconfigurationform-button-clear\"\n >\n {translate(\"Clear\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleSubmit(onFormSubmit)} // Handle submission without form reload\n data-testid=\"typeconfigurationform-button-add\"\n >\n {translate(\"Add\")}\n </Button>\n </Box>\n </div>\n );\n};\n\nexport default TypeConfigurationForm;\n\nTypeConfigurationForm.propTypes = {\n setType: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n onSubmit: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n};\n"],"names":["TypeConfigurationForm","setType","onSubmit","translate","useTranslateProvider","validationSchema","Yup","control","handleSubmit","reset","errors","useForm","yupResolver","onFormSubmit","jsxs","FormControl","Typography","jsx","Controller","field","Select","e","MenuItem","GeneralUtil","Box","Button","PropTypes"],"mappings":"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"}