@argusoft/medplat-core 1.0.18 → 1.0.20

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 (106) 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-CiZZZ0GL.js} +2 -2
  6. package/dist/{AddFeatures-CE5rBxEG.js.map → AddFeatures-CiZZZ0GL.js.map} +1 -1
  7. package/dist/{AddMenuConfiguration-QWfpcnuP.js → AddMenuConfiguration-DsnY0Rws.js} +544 -544
  8. package/dist/AddMenuConfiguration-DsnY0Rws.js.map +1 -0
  9. package/dist/{AddRoleDrawer-SvntLdRu.js → AddRoleDrawer-CQdzQZLb.js} +39 -39
  10. package/dist/AddRoleDrawer-CQdzQZLb.js.map +1 -0
  11. package/dist/ChangePasswordModalCore-50EzprTk.js +5495 -0
  12. package/dist/ChangePasswordModalCore-50EzprTk.js.map +1 -0
  13. package/dist/{ConditionConfig-DB0FqwgG.js → ConditionConfig-C3rF2wXU.js} +2 -2
  14. package/dist/{ConditionConfig-DB0FqwgG.js.map → ConditionConfig-C3rF2wXU.js.map} +1 -1
  15. package/dist/{EntityManagement-DQKXnEzz.js → EntityManagement-D4nG7wUX.js} +2 -2
  16. package/dist/{EntityManagement-DQKXnEzz.js.map → EntityManagement-D4nG7wUX.js.map} +1 -1
  17. package/dist/{EventConfigurations-D8juDb29.js → EventConfigurations-BGffjVC7.js} +3 -3
  18. package/dist/{EventConfigurations-D8juDb29.js.map → EventConfigurations-BGffjVC7.js.map} +1 -1
  19. package/dist/{EventsExceptionModal-DsvngLi8.js → EventsExceptionModal-D4Bf1ilS.js} +2 -2
  20. package/dist/{EventsExceptionModal-DsvngLi8.js.map → EventsExceptionModal-D4Bf1ilS.js.map} +1 -1
  21. package/dist/EventsSkeleton-8iiETGcf.js +76 -0
  22. package/dist/EventsSkeleton-8iiETGcf.js.map +1 -0
  23. package/dist/{FeatureMenu-CLX8VNZ-.js → FeatureMenu-DUZL32RI.js} +3 -3
  24. package/dist/{FeatureMenu-CLX8VNZ-.js.map → FeatureMenu-DUZL32RI.js.map} +1 -1
  25. package/dist/Features-CObdzJp_.js +13 -0
  26. package/dist/Features-CObdzJp_.js.map +1 -0
  27. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js +5706 -0
  28. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js.map +1 -0
  29. package/dist/ImmunizationConfigurationBase.css +1 -1
  30. package/dist/{ManageDynamicFeature-CsIett5x.js → ManageDynamicFeature-BhONvfC_.js} +3 -3
  31. package/dist/{ManageDynamicFeature-CsIett5x.js.map → ManageDynamicFeature-BhONvfC_.js.map} +1 -1
  32. package/dist/{ManageEventConfiguration-0YBDaxOI.js → ManageEventConfiguration-BntUc_YI.js} +93 -93
  33. package/dist/ManageEventConfiguration-BntUc_YI.js.map +1 -0
  34. package/dist/{ManageNotification-BUAvg5Ge.js → ManageNotification-CSl02Wq7.js} +2 -2
  35. package/dist/{ManageNotification-BUAvg5Ge.js.map → ManageNotification-CSl02Wq7.js.map} +1 -1
  36. package/dist/{ManageRole-Cbs9dUhc.js → ManageRole-tdzAiCOE.js} +222 -229
  37. package/dist/ManageRole-tdzAiCOE.js.map +1 -0
  38. package/dist/{ManageUser-eBS0yC5k.js → ManageUser-C6dlK-Mr.js} +3 -4
  39. package/dist/{ManageUser-eBS0yC5k.js.map → ManageUser-C6dlK-Mr.js.map} +1 -1
  40. package/dist/{MobileMenuManagement-BmrO-7MN.js → MobileMenuManagement-CV6QCeos.js} +15 -15
  41. package/dist/MobileMenuManagement-CV6QCeos.js.map +1 -0
  42. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js → MobileTypeEventConfigModal-BNjZ8pnq.js} +2 -2
  43. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js.map → MobileTypeEventConfigModal-BNjZ8pnq.js.map} +1 -1
  44. package/dist/{NewServerManagement-5YcAtF-g.js → NewServerManagement-Cxe0dV0O.js} +5 -5
  45. package/dist/NewServerManagement-Cxe0dV0O.js.map +1 -0
  46. package/dist/{NotificationList-CUZSWp2J.js → NotificationList-D1U1LYnz.js} +140 -139
  47. package/dist/NotificationList-D1U1LYnz.js.map +1 -0
  48. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js → OtherTypeEventConfigModal-DiVhWDpG.js} +43 -43
  49. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js.map → OtherTypeEventConfigModal-DiVhWDpG.js.map} +1 -1
  50. package/dist/{QueryBuilder-DXexUIe8.js → QueryBuilder-DI0wCJbz.js} +85 -84
  51. package/dist/QueryBuilder-DI0wCJbz.js.map +1 -0
  52. package/dist/{QueryManagement-DGHV_-d5.js → QueryManagement-CRykYGum.js} +3 -3
  53. package/dist/QueryManagement-CRykYGum.js.map +1 -0
  54. package/dist/{RoleManagement-BThAL5LO.js → RoleManagement-Cg8-EiVr.js} +83 -82
  55. package/dist/RoleManagement-Cg8-EiVr.js.map +1 -0
  56. package/dist/SecurityAuditLogList-Dod711KT.js +874 -0
  57. package/dist/SecurityAuditLogList-Dod711KT.js.map +1 -0
  58. package/dist/{ShowFlywayQuery-BkyA6QaA.js → ShowFlywayQuery-tj42YQAS.js} +33 -33
  59. package/dist/ShowFlywayQuery-tj42YQAS.js.map +1 -0
  60. package/dist/{SubMenu-BGznOP2a.js → SubMenu-CM_4wNCR.js} +2 -2
  61. package/dist/{SubMenu-BGznOP2a.js.map → SubMenu-CM_4wNCR.js.map} +1 -1
  62. package/dist/{TableDetails-DztbjsIA.js → TableDetails-Cf_YfnY2.js} +235 -235
  63. package/dist/TableDetails-Cf_YfnY2.js.map +1 -0
  64. package/dist/{TableList-DYwotUDO.js → TableList-HGbEN4bv.js} +28 -28
  65. package/dist/TableList-HGbEN4bv.js.map +1 -0
  66. package/dist/{TypeConfiguration-DYbBG_hZ.js → TypeConfiguration-CupQxH9Y.js} +28 -28
  67. package/dist/TypeConfiguration-CupQxH9Y.js.map +1 -0
  68. package/dist/{UserList-BAeAFeXZ.js → UserList-BzHsbYel.js} +423 -423
  69. package/dist/UserList-BzHsbYel.js.map +1 -0
  70. package/dist/{WidgetList-D-fIf3N2.js → WidgetList-B7X8Awkg.js} +2 -2
  71. package/dist/{WidgetList-D-fIf3N2.js.map → WidgetList-B7X8Awkg.js.map} +1 -1
  72. package/dist/index-D9YNFPn9.js +1439 -0
  73. package/dist/index-D9YNFPn9.js.map +1 -0
  74. package/dist/index.css +1 -1
  75. package/dist/index.js +102 -100
  76. package/dist/index.js.map +1 -1
  77. package/dist/{index-BFznsakV.js → pdfmake-Cf-381ou.js} +13951 -15385
  78. package/dist/pdfmake-Cf-381ou.js.map +1 -0
  79. package/package.json +1 -1
  80. package/dist/AddEditQueryBuilder-Bcjl5mXE.js.map +0 -1
  81. package/dist/AddMenuConfiguration-QWfpcnuP.js.map +0 -1
  82. package/dist/AddRoleDrawer-SvntLdRu.js.map +0 -1
  83. package/dist/ChangePasswordModalCore-ClND1mel.js +0 -181
  84. package/dist/ChangePasswordModalCore-ClND1mel.js.map +0 -1
  85. package/dist/EventsSkeleton-DCXwwPbb.js +0 -76
  86. package/dist/EventsSkeleton-DCXwwPbb.js.map +0 -1
  87. package/dist/Features-Cpf1PDx0.js +0 -13
  88. package/dist/Features-Cpf1PDx0.js.map +0 -1
  89. package/dist/ImmunizationConfigurationBase-BqPTExSk.js +0 -5653
  90. package/dist/ImmunizationConfigurationBase-BqPTExSk.js.map +0 -1
  91. package/dist/ManageEventConfiguration-0YBDaxOI.js.map +0 -1
  92. package/dist/ManageRole-Cbs9dUhc.js.map +0 -1
  93. package/dist/MobileMenuManagement-BmrO-7MN.js.map +0 -1
  94. package/dist/NewServerManagement-5YcAtF-g.js.map +0 -1
  95. package/dist/NotificationList-CUZSWp2J.js.map +0 -1
  96. package/dist/QueryBuilder-DXexUIe8.js.map +0 -1
  97. package/dist/QueryManagement-DGHV_-d5.js.map +0 -1
  98. package/dist/RoleManagement-BThAL5LO.js.map +0 -1
  99. package/dist/SecurityAuditLogList-DHTcOtbx.js +0 -748
  100. package/dist/SecurityAuditLogList-DHTcOtbx.js.map +0 -1
  101. package/dist/ShowFlywayQuery-BkyA6QaA.js.map +0 -1
  102. package/dist/TableDetails-DztbjsIA.js.map +0 -1
  103. package/dist/TableList-DYwotUDO.js.map +0 -1
  104. package/dist/TypeConfiguration-DYbBG_hZ.js.map +0 -1
  105. package/dist/UserList-BAeAFeXZ.js.map +0 -1
  106. package/dist/index-BFznsakV.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewServerManagement-5YcAtF-g.js","sources":["../src/views/Features/AddServerModal.jsx","../src/views/Features/NewServerManagement.jsx"],"sourcesContent":["/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-04-23 (Wednesday)\n */\n\nimport {\n addServer,\n addServerMappingList,\n updateServer,\n updateServerMappingList,\n} from \"@/common/services/SyncWithServer\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { useTheme } from \"@mui/material/styles\";\nimport \"./Styles/ServerManagement.scss\";\nimport {\n Autocomplete,\n Box,\n Button,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport * as Yup from \"yup\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPen, faPlus } from \"@fortawesome/free-solid-svg-icons\";\n\nexport default function AddServerModal({\n openAddServer,\n openAddServerFunc,\n allServerList,\n reloadPageFunc,\n editServer,\n editServerFunc,\n serverData = {},\n}) {\n const { translate } = useTranslateProvider();\n const [successMessage, setSuccessMessage] = useState(\"\");\n const serverTypes = [\"STAGING\", \"PRODUCTION\"];\n const theme = useTheme();\n const getClassName = (base) =>\n theme.palette.mode === \"light\" ? base : `${base}-dark`;\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Name is required\"),\n code: Yup.string().required(\"Code is required\"),\n type: Yup.string().required(\"Type is required\"),\n url: Yup.string()\n .required(\"URL is required\")\n .matches(\n /^https?:\\/\\/(localhost|\\d{1,3}(?:\\.\\d{1,3}){3}|[a-zA-Z0-9.-]+)(:\\d+)?(\\/.*)?$/,\n \"Invalid URL\",\n ),\n isActive: Yup.boolean().required(\"This field is required.\"),\n });\n\n const formCtrl = useForm({\n defaultValues: {\n name: \"\",\n code: \"\",\n type: \"\",\n url: \"\",\n isActive: null,\n canPullServer: [],\n canPushServer: [],\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n useEffect(() => {\n if (editServer) {\n formCtrl.reset({\n name: serverData.name,\n code: serverData.code,\n type: serverData.type,\n url: serverData.url,\n isActive: serverData.isActive,\n canPullServer: serverData.canPullServers\n ? serverData.canPullServers\n : [],\n canPushServer: serverData.canPushServers\n ? serverData.canPushServers\n : [],\n });\n }\n }, []);\n\n const handleDialogClose = () => {\n openAddServerFunc(false);\n editServerFunc(false);\n };\n\n const checkAvailability = async (code) => {\n if (allServerList?.find((server) => server.code === code)) {\n formCtrl.setError(\"code\", {\n type: \"manual\",\n message: \"Code already exists\",\n });\n } else {\n setSuccessMessage(`${code} is available`);\n }\n };\n\n const debouncedCheckAvailability = useDebounceFn(checkAvailability, 500);\n\n const onSubmit = async (data) => {\n let serversToAdd = new Map();\n data.canPullServer?.forEach((server) => {\n let obj = {\n canPull: true,\n canPush: false,\n };\n serversToAdd.set(server.code, obj);\n });\n data.canPushServer?.forEach((server) => {\n if (serversToAdd.has(server.code)) {\n serversToAdd.get(server.code).canPush = true;\n } else {\n let obj = {\n canPull: false,\n canPush: true,\n };\n serversToAdd.set(server.code, obj);\n }\n });\n const serverMappingList = [];\n serversToAdd.forEach((value, key) => {\n serverMappingList.push({\n sourceServerCode: data.code,\n destinationServerCode: key,\n canPull: value.canPull,\n canPush: value.canPush,\n });\n serverMappingList.push({\n sourceServerCode: key,\n destinationServerCode: data.code,\n canPull: value.canPush,\n canPush: value.canPull,\n });\n });\n if (!editServer) {\n try {\n const addServerData = {\n name: data.name,\n code: data.code,\n type: data.type,\n url: data.url,\n isActive: data.isActive,\n };\n await addServer(addServerData);\n showToast({\n type: \"success\",\n message: \"Server added successfully\",\n });\n if (serverMappingList.length > 0) {\n try {\n await addServerMappingList(serverMappingList);\n showToast({\n type: \"success\",\n message: \"Server mapping added successfully\",\n });\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to add server mapping\",\n });\n console.error(\"Error adding server mapping:\", error);\n }\n }\n reloadPageFunc((prev) => !prev);\n openAddServerFunc(false);\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to add server\",\n });\n console.error(\"Error adding server:\", error);\n }\n } else {\n try {\n if (serversToAdd.size === 0) {\n serverMappingList.push({\n sourceServerCode: data.code,\n destinationServerCode: null,\n canPull: null,\n canPush: null,\n });\n }\n data.uuid = serverData.uuid;\n await updateServer(data);\n showToast({\n type: \"success\",\n message: \"Server updated successfully\",\n });\n if (serverMappingList.length > 0) {\n try {\n await updateServerMappingList(serverMappingList);\n showToast({\n type: \"success\",\n message: \"Server mapping updated successfully\",\n });\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to update server mapping\",\n });\n console.error(\"Error updating server mapping:\", error);\n }\n }\n reloadPageFunc((prev) => !prev);\n handleDialogClose();\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to update server\",\n });\n console.error(\"Error updating server:\", error);\n }\n }\n };\n\n // Reusable field row component for consistent layout\n const FieldRow = ({ label, required, children }) => (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 0.75 }}>\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 600, color: \"text.primary\" }}\n >\n {label}\n {required && (\n <Typography component=\"span\" sx={{ color: \"error.main\", ml: 0.5 }}>\n *\n </Typography>\n )}\n </Typography>\n {children}\n </Box>\n );\n\n FieldRow.propTypes = {\n label: PropTypes.string.isRequired,\n required: PropTypes.bool,\n children: PropTypes.node.isRequired,\n };\n\n return (\n <Dialog\n open={openAddServer}\n fullWidth={true}\n maxWidth={\"sm\"}\n onClose={handleDialogClose}\n className={getClassName(\"add-server-dialog\")}\n PaperProps={{\n sx: {\n borderRadius: 3,\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n \"& .MuiDialogContent-root\": {\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n },\n },\n }}\n >\n {/* ── Dialog Header ── */}\n <DialogTitle\n sx={{\n px: 3,\n pt: 2.5,\n pb: 2,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\n <Box\n sx={{\n width: 36,\n height: 36,\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"primary.main\",\n color: \"primary.contrastText\",\n flexShrink: 0,\n }}\n >\n <FontAwesomeIcon\n icon={editServer ? faPen : faPlus}\n style={{ fontSize: \"0.85rem\" }}\n />\n </Box>\n <Box>\n <Typography variant=\"h6\" sx={{ fontWeight: 700, lineHeight: 1.3 }}>\n {editServer\n ? translate(\"Update Server\")\n : translate(\"Add Server\")}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {editServer\n ? \"Modify server configuration and sync permissions.\"\n : \"Configure a new server connection.\"}\n </Typography>\n </Box>\n </Box>\n </DialogTitle>\n\n <form noValidate onSubmit={formCtrl.handleSubmit(onSubmit)}>\n <DialogContent\n sx={{\n px: 3,\n py: 3,\n scrollbarWidth: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n }}\n >\n <Grid container spacing={2.5}>\n {/* ── Server Details Section ── */}\n <Grid size={12}>\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontWeight: 700,\n color: \"text.primary\",\n mb: 0.5,\n textTransform: \"uppercase\",\n fontSize: \"0.7rem\",\n letterSpacing: \"0.05em\",\n }}\n >\n Server Details\n </Typography>\n <Divider />\n </Grid>\n\n {/* Name & Code in a 2-column layout */}\n <Grid size={6}>\n <FieldRow label={translate(\"Name\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"name\"\n id=\"name\"\n errors={formCtrl.formState.errors}\n placeholder=\"Enter server name\"\n />\n </FieldRow>\n </Grid>\n\n <Grid size={6}>\n <FieldRow label={translate(\"Code\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"code\"\n id=\"code\"\n disabled={editServer}\n errors={formCtrl.formState.errors}\n placeholder=\"Enter server code\"\n successMessage={successMessage}\n onChange={(e) => debouncedCheckAvailability(e.target.value)}\n />\n </FieldRow>\n </Grid>\n\n {/* Type & URL */}\n <Grid size={6}>\n <FieldRow label={translate(\"Type\")} required>\n <Controller\n name=\"type\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n options={serverTypes || []}\n getOptionLabel={(option) => option}\n defaultValue={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select type\"\n variant=\"outlined\"\n error={!!formCtrl.formState.errors?.type}\n />\n )}\n />\n );\n }}\n />\n {formCtrl.formState.errors.type && (\n <FormHelperText error>\n {formCtrl.formState.errors.type?.message}\n </FormHelperText>\n )}\n </FieldRow>\n </Grid>\n\n <Grid size={6}>\n <FieldRow label={translate(\"URL\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"url\"\n id=\"url\"\n errors={formCtrl.formState.errors}\n placeholder=\"https://example.com\"\n />\n </FieldRow>\n </Grid>\n\n {/* Active Status */}\n <Grid size={12}>\n <FieldRow label={translate(\"Active\")} required>\n <Controller\n name=\"isActive\"\n control={formCtrl.control}\n rules={{ required: \"This field is required.\" }}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => (\n <FormControl component=\"fieldset\" error={!!error}>\n <RadioGroup row value={value} onChange={onChange}>\n <FormControlLabel\n value={true}\n control={<Radio size=\"small\" />}\n label={<Typography variant=\"body2\">Yes</Typography>}\n />\n <FormControlLabel\n value={false}\n control={<Radio size=\"small\" />}\n label={<Typography variant=\"body2\">No</Typography>}\n />\n </RadioGroup>\n {error && (\n <FormHelperText>\n {formCtrl.formState.errors.isActive?.message}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n </FieldRow>\n </Grid>\n\n {/* ── Sync Permissions Section ── */}\n <Grid size={12} sx={{ mt: 0.5 }}>\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontWeight: 700,\n color: \"text.primary\",\n mb: 0.5,\n textTransform: \"uppercase\",\n fontSize: \"0.7rem\",\n letterSpacing: \"0.05em\",\n }}\n >\n Sync Permissions\n </Typography>\n <Divider />\n </Grid>\n\n {/* Can Pull From */}\n <Grid size={12}>\n <FieldRow label={translate(\"Can Pull From\")}>\n <Controller\n name=\"canPullServer\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n multiple\n options={allServerList || []}\n getOptionLabel={(option) => option.name || \"\"}\n getOptionKey={(option) => option.code || \"\"}\n getOptionDisabled={(option) =>\n option.code === formCtrl.getValues(\"code\") ||\n formCtrl\n .getValues(\"canPullServer\")\n .some((server) => server.code === option.code)\n }\n value={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderTags={(tagValue, getTagProps) =>\n tagValue.map((option, index) => (\n <Chip\n {...getTagProps({ index })}\n key={option.code}\n label={option.name}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={{ borderRadius: 2, fontWeight: 500 }}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={\n value?.length > 0\n ? \"\"\n : \"Select servers to pull from...\"\n }\n variant=\"outlined\"\n />\n )}\n />\n );\n }}\n />\n </FieldRow>\n </Grid>\n\n {/* Can Push To */}\n <Grid size={12}>\n <FieldRow label={translate(\"Can Push To\")}>\n <Controller\n name=\"canPushServer\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n multiple\n options={allServerList || []}\n getOptionLabel={(option) => option.name || \"\"}\n getOptionKey={(option) => option.code || \"\"}\n getOptionDisabled={(option) =>\n option.code === formCtrl.getValues(\"code\") ||\n formCtrl\n .getValues(\"canPushServer\")\n .some((server) => server.code === option.code)\n }\n value={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderTags={(tagValue, getTagProps) =>\n tagValue.map((option, index) => (\n <Chip\n {...getTagProps({ index })}\n key={option.code}\n label={option.name}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={{ borderRadius: 2, fontWeight: 500 }}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={\n value?.length > 0\n ? \"\"\n : \"Select servers to push to...\"\n }\n variant=\"outlined\"\n />\n )}\n />\n );\n }}\n />\n </FieldRow>\n </Grid>\n </Grid>\n </DialogContent>\n\n {/* ── Dialog Actions ── */}\n <DialogActions\n sx={{\n px: 3,\n py: 2,\n borderTop: \"1px solid\",\n borderColor: \"divider\",\n gap: 1,\n }}\n >\n <Button\n onClick={handleDialogClose}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n borderRadius: 2,\n textTransform: \"none\",\n fontWeight: 600,\n px: 2.5,\n borderColor: \"divider\",\n color: \"text.secondary\",\n \"&:hover\": {\n backgroundColor: \"action.hover\",\n borderColor: \"text.disabled\",\n },\n }}\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n sx={{\n borderRadius: 2,\n textTransform: \"none\",\n fontWeight: 600,\n px: 2.5,\n boxShadow: \"none\",\n }}\n startIcon={\n <FontAwesomeIcon\n icon={editServer ? faPen : faPlus}\n style={{ fontSize: \"0.75rem\" }}\n />\n }\n >\n {editServer ? \"Update Server\" : \"Add Server\"}\n </Button>\n </DialogActions>\n </form>\n </Dialog>\n );\n}\n\nAddServerModal.propTypes = {\n openAddServer: PropTypes.bool,\n openAddServerFunc: PropTypes.func,\n allServerList: PropTypes.array,\n reloadPageFunc: PropTypes.func,\n editServer: PropTypes.bool,\n editServerFunc: PropTypes.func,\n serverData: PropTypes.object,\n};\n","/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-04-21 (Monday)\n */\n\nimport {\n getAllServer,\n getAllServerDetails,\n} from \"@/common/services/SyncWithServer\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCircleCheck,\n faCircleXmark,\n faPen,\n faPlus,\n faServer,\n faMagnifyingGlass,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\nimport \"./Styles/ServerManagement.scss\";\nimport {\n Button,\n Chip,\n Divider,\n IconButton,\n InputAdornment,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { Box } from \"@mui/system\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport AddServerModal from \"./AddServerModal\";\n\nexport default function NewServerManagement() {\n const [allServerList, setAllServerList] = useState([]);\n const [openAddServer, setOpenAddServer] = useState(false);\n const [editServer, setEditServer] = useState(false);\n const [serverData, setServerData] = useState({});\n const [allServerDetails, setAllServerDetails] = useState([]);\n const [reloadPage, setReloadPage] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const theme = useTheme();\n\n useEffect(() => {\n (async () => {\n await fetchServers();\n await fetchAllServerDetails();\n })();\n }, [reloadPage]);\n\n const getClassName = (className) => {\n return theme.palette.mode === \"light\" ? className : `${className}-dark`;\n };\n\n const fetchServers = async () => {\n try {\n const response = (await getAllServer()).data;\n if (response) {\n setAllServerList(\n response.map((item) => {\n let obj = { code: item.code, name: item.name };\n return obj;\n }),\n );\n }\n } catch (error) {\n console.error(\"Error fetching servers:\", error);\n }\n };\n\n const fetchAllServerDetails = async () => {\n try {\n const response = (await getAllServerDetails()).data;\n if (response) {\n response.forEach((item) => {\n let canPull = item.canPullServers\n ? JSON.parse(item.canPullServers)\n : [];\n let canPush = item.canPushServers\n ? JSON.parse(item.canPushServers)\n : [];\n item.canPullServers = JSON.parse(item.canPullServers);\n item.canPushServers = JSON.parse(item.canPushServers);\n item.pullServersName =\n canPull.length > 0 ? canPull.map((server) => server.name) : [];\n item.pushServersName =\n canPush.length > 0 ? canPush.map((server) => server.name) : [];\n });\n setAllServerDetails(response);\n }\n } catch (error) {\n console.error(\"Error fetching servers:\", error);\n }\n };\n\n const handleServerEdit = (item) => {\n setEditServer(true);\n setServerData(item);\n setOpenAddServer(true);\n };\n\n const filteredServers = useMemo(() => {\n if (!searchQuery.trim()) return allServerDetails;\n const q = searchQuery.toLowerCase();\n return allServerDetails.filter(\n (item) =>\n item.name?.toLowerCase().includes(q) ||\n item.code?.toLowerCase().includes(q) ||\n item.url?.toLowerCase().includes(q),\n );\n }, [allServerDetails, searchQuery]);\n\n const activeCount = allServerDetails.filter((s) => s.isActive).length;\n\n const formatDate = (dateString) => {\n if (!dateString) return \"-\";\n const date = new Date(dateString);\n const day = String(date.getDate()).padStart(2, \"0\");\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n const month = monthNames[date.getMonth()];\n const year = date.getFullYear();\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${day} ${month} ${year}, ${hours}:${minutes}`;\n };\n\n return (\n <Grid pt={2} sx={{ height: \"calc(100vh)\", zoom: \"0.9\" }}>\n <Box sx={{ p: 3 }} className={getClassName(\"server-management-wrapper\")}>\n {/* ── Main Paper Container (ManageAllForms style) ── */}\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: 3,\n backgroundColor: \"background.paper\",\n }}\n >\n {/* ── Header Section ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n Server Management\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Configure and manage server connections, sync permissions, and\n server details.\n </Typography>\n </Box>\n\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <Button\n size=\"small\"\n variant=\"contained\"\n sx={{\n borderRadius: 2,\n fontWeight: 600,\n px: 2,\n boxShadow: \"none\",\n textTransform: \"none\",\n }}\n startIcon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setOpenAddServer(true);\n }}\n >\n Add Server\n </Button>\n </Box>\n </Box>\n\n {/* ── Search & Stats Bar ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n backgroundColor: \"action.hover\",\n p: 1.5,\n borderRadius: 2.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faServer}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label={`${allServerDetails.length} Total`}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n px: 0.5,\n borderColor: \"divider\",\n }}\n />\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleCheck}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label={`${activeCount} Active`}\n size=\"small\"\n color=\"success\"\n variant=\"filled\"\n sx={{ fontWeight: 700, borderRadius: 2, px: 0.5 }}\n />\n {allServerDetails.length - activeCount > 0 && (\n <Chip\n label={`${allServerDetails.length - activeCount} Inactive`}\n size=\"small\"\n color=\"default\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n px: 0.5,\n borderColor: \"divider\",\n }}\n />\n )}\n </Box>\n\n <TextField\n value={searchQuery}\n size=\"small\"\n placeholder=\"Search servers...\"\n onChange={(e) => setSearchQuery(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <FontAwesomeIcon\n icon={faMagnifyingGlass}\n style={{ fontSize: \"0.85rem\", color: \"#999\" }}\n />\n </InputAdornment>\n ),\n sx: {\n backgroundColor: \"background.paper\",\n borderRadius: 2,\n minWidth: 260,\n },\n }}\n />\n </Box>\n </Box>\n\n <Divider sx={{ my: 3 }} />\n\n {/* ── Server Table ── */}\n <TableContainer\n className={getClassName(\"server-table\")}\n component={Paper}\n elevation={0}\n sx={{\n borderRadius: 2.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n overflowY: \"auto\",\n maxHeight: \"calc(100vh - 340px)\",\n }}\n >\n <Table stickyHeader>\n <TableHead>\n <TableRow>\n {[\n \"Sr. No.\",\n \"Name\",\n \"Code\",\n \"Type\",\n \"URL\",\n \"Status\",\n \"Can Pull From\",\n \"Can Push To\",\n \"Modified On\",\n \"Actions\",\n ].map((header, i) => (\n <TableCell\n key={i}\n align={header === \"Actions\" ? \"center\" : \"left\"}\n sx={{\n fontWeight: 700,\n fontSize: \"0.78rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n color: \"text.secondary\",\n backgroundColor: \"background.default\",\n borderBottom: \"2px solid\",\n borderColor: \"divider\",\n py: 1.5,\n }}\n >\n {header}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {filteredServers.map((item, index) => (\n <TableRow\n key={index}\n sx={{\n transition: \"background-color 0.15s ease\",\n \"&:hover\": { backgroundColor: \"action.hover\" },\n \"&:last-child td\": { borderBottom: 0 },\n }}\n >\n <TableCell\n sx={{ color: \"text.secondary\", fontWeight: 500 }}\n >\n {index + 1}\n </TableCell>\n <TableCell sx={{ fontWeight: 600 }}>{item.name}</TableCell>\n <TableCell>\n <Chip\n label={item.code}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n fontFamily: \"monospace\",\n fontSize: \"0.75rem\",\n borderRadius: 1.5,\n borderColor: \"divider\",\n }}\n />\n </TableCell>\n <TableCell>{item.type}</TableCell>\n <TableCell\n sx={{\n maxWidth: 200,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n <Tooltip title={item.url || \"\"} arrow placement=\"top\">\n <span>{item.url}</span>\n </Tooltip>\n </TableCell>\n <TableCell>\n {item.isActive ? (\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleCheck}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label=\"Active\"\n size=\"small\"\n color=\"success\"\n variant=\"filled\"\n sx={{ fontWeight: 600, borderRadius: 2 }}\n />\n ) : (\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleXmark}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label=\"Inactive\"\n size=\"small\"\n color=\"default\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n borderColor: \"divider\",\n }}\n />\n )}\n </TableCell>\n <TableCell>\n {Array.isArray(item.pullServersName) &&\n item.pullServersName.length > 0 ? (\n item.pullServersName.map((server, i) => (\n <Chip\n key={i}\n label={server || \"-\"}\n color=\"primary\"\n size=\"small\"\n variant=\"outlined\"\n sx={{\n mr: 0.5,\n mb: 0.5,\n borderRadius: 2,\n fontWeight: 500,\n }}\n />\n ))\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">\n —\n </Typography>\n )}\n </TableCell>\n <TableCell>\n {Array.isArray(item.pushServersName) &&\n item.pushServersName.length > 0 ? (\n item.pushServersName.map((server, i) => (\n <Chip\n key={i}\n label={server || \"-\"}\n color=\"primary\"\n size=\"small\"\n variant=\"outlined\"\n sx={{\n mr: 0.5,\n mb: 0.5,\n borderRadius: 2,\n fontWeight: 500,\n }}\n />\n ))\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">\n —\n </Typography>\n )}\n </TableCell>\n <TableCell>\n <Typography\n variant=\"caption\"\n sx={{ color: \"text.secondary\" }}\n >\n {formatDate(item.modifiedOn)}\n </Typography>\n </TableCell>\n <TableCell align=\"center\">\n <Tooltip title=\"Edit server\" arrow placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={() => {\n handleServerEdit(item);\n }}\n sx={{\n color: \"primary.main\",\n \"&:hover\": { backgroundColor: \"primary.50\" },\n }}\n >\n <FontAwesomeIcon\n icon={faPen}\n style={{ fontSize: \"0.8rem\" }}\n />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {filteredServers.length === 0 && (\n <TableRow>\n <TableCell colSpan={10} align=\"center\" sx={{ py: 6 }}>\n <FontAwesomeIcon\n icon={faServer}\n style={{\n fontSize: \"2rem\",\n color: \"#ccc\",\n marginBottom: 8,\n display: \"block\",\n margin: \"0 auto 8px\",\n }}\n />\n <Typography variant=\"body2\" color=\"text.secondary\">\n {searchQuery\n ? \"No servers match your search.\"\n : 'No servers found. Click \"Add Server\" to get started.'}\n </Typography>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </Box>\n {openAddServer && (\n <AddServerModal\n openAddServer={openAddServer}\n openAddServerFunc={setOpenAddServer}\n allServerList={allServerList}\n reloadPageFunc={setReloadPage}\n editServer={editServer}\n editServerFunc={setEditServer}\n serverData={serverData}\n />\n )}\n </Grid>\n );\n}\n"],"names":["AddServerModal","openAddServer","openAddServerFunc","allServerList","reloadPageFunc","editServer","editServerFunc","serverData","translate","useTranslateProvider","successMessage","setSuccessMessage","useState","serverTypes","theme","useTheme","getClassName","base","validationSchema","Yup","formCtrl","useForm","yupResolver","useEffect","handleDialogClose","debouncedCheckAvailability","useDebounceFn","code","server","onSubmit","data","serversToAdd","_a","obj","_b","serverMappingList","value","key","updateServer","showToast","updateServerMappingList","error","prev","addServerData","addServer","addServerMappingList","FieldRow","label","required","children","jsxs","Box","Typography","jsx","PropTypes","Dialog","DialogTitle","FontAwesomeIcon","faPen","faPlus","DialogContent","Grid","Divider","CustomTextField","e","Controller","onChange","Autocomplete","option","event","newValue","params","TextField","FormHelperText","FormControl","RadioGroup","FormControlLabel","Radio","tagValue","getTagProps","index","createElement","Chip","DialogActions","Button","NewServerManagement","setAllServerList","setOpenAddServer","setEditServer","setServerData","allServerDetails","setAllServerDetails","reloadPage","setReloadPage","searchQuery","setSearchQuery","fetchServers","fetchAllServerDetails","className","response","getAllServer","item","getAllServerDetails","canPull","canPush","handleServerEdit","filteredServers","useMemo","q","_c","activeCount","s","formatDate","dateString","date","day","month","year","hours","minutes","Paper","faServer","faCircleCheck","InputAdornment","faMagnifyingGlass","TableContainer","Table","TableHead","TableRow","header","i","TableCell","TableBody","Tooltip","faCircleXmark","IconButton"],"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":"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"}
@@ -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":"QueryManagement-DGHV_-d5.js","sources":["../src/services/QueryManagement.js","../src/views/QueryManagement/Skeletons/QueryManagementSkeleton.jsx","../src/views/QueryManagement/QueryManagement.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getDataWithTimeout = (params) =>\n api.post(\"resource/getdatawithtimeout\", params);\n\nexport const getQueryBasedData = (query) =>\n api.post(\"querymanagement/retrieve\", query, {\n headers: { \"Content-Type\": \"application/json\" },\n transformRequest: [(data) => data],\n });\n\nexport const executeQuery = (query) =>\n api.post(\"querymanagement/execute\", query, {\n headers: { \"Content-Type\": \"application/json\" },\n transformRequest: [(data) => data],\n });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const QueryManagementSkeleton = ({ children, loading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!loading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col space-y-4 h-[100vh] pt-3 relative w-full\">\n <div className=\" flex flex-row space-x-2 overflow-auto\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100%] h-[50px] \"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100%] h-[50px] mx-[10px]\"></div>\n </div>\n <div className=\" flex flex-col flex-1 \">\n <div className=\"bg-gray-300 animate-pulse h-[10rem] w-full rounded-md mb-2\"></div>\n <div className=\"flex h-40 space-x-6\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-60 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nQueryManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n Typography,\n Button,\n Box,\n Card,\n TextField,\n Chip,\n Divider,\n Modal,\n IconButton,\n Tabs,\n Tab,\n InputAdornment,\n} from \"@mui/material\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport {\n executeQuery,\n getDataWithTimeout,\n getQueryBasedData,\n} from \"../../services/QueryManagement\";\nimport { execute, downloadExcel } from \"@/common/services/GlobalApis\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { useSelector } from \"react-redux\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { useForm } from \"react-hook-form\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport dayjs from \"dayjs\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { QueryManagementSkeleton } from \"./Skeletons/QueryManagementSkeleton\";\nimport Editor from \"@monaco-editor/react\";\nimport \"./Styles/QueryManagement.scss\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport {\n faDatabase,\n faHistory,\n faTerminal,\n faPlay,\n faDownload,\n faTimes,\n faTableList,\n faSearch,\n faSlidersH,\n faLock,\n faSitemap,\n faSyncAlt,\n faClock\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport debounce from \"lodash/debounce\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\nimport baburao from \"@/assets/gifs/baburao.gif\";\n\nconst dbaToolkitScripts = [\n {\n category: \"Performance & Space\",\n name: \"Table Disk Usage Breakdown\",\n description: \"Displays all tables in the public schema ordered by total disk footprint.\",\n code: `SELECT \\n relname AS table_name, \\n pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size,\\n pg_size_pretty(pg_relation_size(c.oid)) AS data_size,\\n pg_size_pretty(pg_total_relation_size(c.oid) - pg_relation_size(c.oid)) AS index_size\\nFROM pg_class c\\nLEFT JOIN pg_namespace n ON (n.oid = c.relnamespace)\\nWHERE n.nspname = 'public' AND c.relkind = 'r'\\nORDER BY pg_total_relation_size(c.oid) DESC;`\n },\n {\n category: \"Performance & Space\",\n name: \"Unused Indexes Audit\",\n description: \"Finds indexes that have never been scanned by queries (candidates to drop).\",\n code: `SELECT \\n schemaname, relname AS table_name, indexrelname AS index_name, \\n idx_scan AS times_used, pg_size_pretty(pg_relation_size(indexrelid)) AS index_size\\nFROM pg_stat_user_indexes WHERE idx_scan = 0 \\nORDER BY pg_relation_size(indexrelid) DESC;`\n },\n {\n category: \"Performance & Space\",\n name: \"Buffer Cache Hit Ratio\",\n description: \"Calculates percentage of data reads served from shared memory RAM vs hitting cold disk storage. Aim for > 99%.\",\n code: `SELECT \\n relname AS table_name, \\n heap_blks_hit AS ram_hits, \\n heap_blks_read AS disk_reads,\\n ROUND(100.0 * heap_blks_hit / NULLIF(heap_blks_hit + heap_blks_read, 0), 2) AS cache_hit_ratio_pct\\nFROM pg_statio_user_tables \\nWHERE (heap_blks_hit + heap_blks_read) > 0\\nORDER BY disk_reads DESC;`\n },\n {\n category: \"Performance & Space\",\n name: \"Table Scan Analysis (Seq vs Index)\",\n description: \"Identifies heavy tables that frequently perform sequential scans instead of utilizing indexes.\",\n code: `SELECT \\n relname AS table_name, \\n seq_scan AS sequential_scans, \\n idx_scan AS indexed_scans,\\n ROUND(100.0 * idx_scan / NULLIF(seq_scan + idx_scan, 0), 2) AS optimal_index_usage_pct\\nFROM pg_stat_user_tables \\nWHERE (seq_scan + idx_scan) > 100\\nORDER BY seq_scan DESC;`\n },\n {\n category: \"Index Health\",\n name: \"Duplicate & Redundant Indexes\",\n description: \"Finds index keys pointing to the same table column combination—wasting memory buffers and slowing down mutations.\",\n code: `SELECT \\n indrelid::regclass AS table_name,\\n amname AS access_method,\\n indkey::text AS stringified_keys,\\n array_agg(indexrelid::regclass) AS duplicate_indexes\\nFROM pg_index i\\nJOIN pg_opclass o ON o.oid = ANY(i.indclass)\\nJOIN pg_am a ON a.oid = o.opcmethod\\nGROUP BY indrelid, amname, indkey\\nHAVING count(*) > 1;`\n },\n {\n category: \"Index Health\",\n name: \"Index Size vs Usage Breakdown\",\n description: \"Compares raw storage footprint vs actual read utilization across your entire index ecosystem.\",\n code: `SELECT \\n schemaname, \\n relname AS table_name, \\n indexrelname AS index_name, \\n pg_size_pretty(pg_relation_size(indexrelid)) AS index_size, \\n idx_scan AS scan_count\\nFROM pg_stat_user_indexes \\nORDER BY pg_relation_size(indexrelid) DESC;`\n },\n {\n category: \"Maintenance\",\n name: \"Dead Rows & Bloat Tracking\",\n description: \"Shows dead row accumulation counts that require manual VACUUMing.\",\n code: `SELECT \\n schemaname, relname AS table_name, n_dead_tup AS dead_rows,\\n n_live_tup AS live_rows, last_vacuum, last_autovacuum\\nFROM pg_stat_user_tables WHERE n_dead_tup > 0\\nORDER BY n_dead_tup DESC;`\n },\n {\n category: \"Maintenance\",\n name: \"Autovacuum Live Execution Progress\",\n description: \"Monitors actively running background cleanups, physical page heap scans, and current phase progressions.\",\n code: `SELECT \\n p.pid, \\n now() - a.xact_start AS active_duration, \\n p.phase, \\n p.heap_blks_total, \\n p.heap_blks_scanned, \\n p.heap_blks_vacuumed\\nFROM pg_stat_progress_vacuum p\\nJOIN pg_stat_activity a ON p.pid = a.pid;`\n },\n {\n category: \"Maintenance\",\n name: \"Transaction ID Wraparound Risk Age\",\n description: \"Tracks how close databases are climbing toward freezing points to prevent catastrophic read-only emergencies.\",\n code: `SELECT \\n datname AS database_name, \\n age(datfrozenxid) AS current_tx_age, \\n ROUND(100.0 * age(datfrozenxid) / 2000000000.0, 4) AS wraparound_emergency_consumed_pct\\nFROM pg_database \\nWHERE datallowconn = true\\nORDER BY current_tx_age DESC;`\n }\n];\n\nconst staticTableListPaginationConfig = { pagination: false };\nconst staticTableListStyleConfig = { tableStyle: { maxHeight: \"55vh\", borderRadius: \"8px\" } };\nconst staticQueryOutputPaginationConfig = {\n pagination: false,\n paginationType: \"virtual-scroll\",\n};\nconst staticQueryOutputStyleConfig = { tableStyle: { maxHeight: \"62vh\", borderRadius: \"8px\" } };\n\nconst modalStyle = {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90%\",\n maxWidth: \"1200px\",\n bgcolor: \"background.paper\",\n boxShadow: \"0px 20px 50px rgba(0, 0, 0, 0.15)\",\n p: 4,\n borderRadius: \"16px\",\n outline: \"none\",\n border: \"1px solid rgba(0, 0, 0, 0.05)\"\n};\n\nconst extractNodeMetric = (line) => {\n if (!line) return 0;\n const timeMatch = line.match(/actual\\s+time=[\\d.]+\\.\\.([\\d.]+)/);\n if (timeMatch && timeMatch[1]) return parseFloat(timeMatch[1]);\n\n const costMatch = line.match(/cost=[\\d.]+\\.\\.([\\d.]+)/);\n if (costMatch && costMatch[1]) return parseFloat(costMatch[1]);\n\n return 0;\n};\n\nconst VisualPlanRow = ({ rawTextLine, totalPlanMetric }) => {\n if (!rawTextLine || !rawTextLine.trim()) return null;\n\n const leadingSpaces = rawTextLine.search(/\\S/);\n const depth = leadingSpaces > 0 ? Math.floor(leadingSpaces / 2) : 0;\n const cleanContent = rawTextLine.trim();\n\n const isSeqScan = cleanContent.includes(\"Seq Scan\");\n const isIndexScan = cleanContent.includes(\"Index Scan\");\n const isCostRow = cleanContent.startsWith(\"->\") || depth > 0;\n\n const nodeMetric = extractNodeMetric(cleanContent);\n const impactPercentage = totalPlanMetric > 0 ? Math.round((nodeMetric / totalPlanMetric) * 100) : 0;\n\n const isBottleneck = impactPercentage >= 35;\n\n return (\n <Box\n className=\"flex items-center justify-between gap-4 py-2 px-3 my-1 rounded-lg border transition-all hover:bg-slate-100/80\"\n sx={{\n marginLeft: `${depth * 24}px`,\n backgroundColor: isBottleneck ? \"#fff5f5\" : isSeqScan ? \"#fef2f2\" : isIndexScan ? \"#f0fdf4\" : \"#ffffff\",\n borderColor: isBottleneck ? \"#fecaca\" : isSeqScan ? \"#fca5a5\" : isIndexScan ? \"#bbf7d0\" : \"#e2e8f0\",\n borderLeft: isBottleneck ? \"5px solid #dc2626\" : isSeqScan ? \"5px solid #ef4444\" : isIndexScan ? \"5px solid #22c55e\" : \"1px solid #e2e8f0\"\n }}\n >\n <Box className=\"flex items-center gap-2 overflow-hidden flex-grow\">\n {isCostRow && <span className=\"text-gray-400 font-bold select-none\">↳</span>}\n <Typography\n variant=\"body2\"\n className=\"font-mono text-slate-700 font-medium break-all whitespace-pre-wrap\"\n sx={{ color: isBottleneck ? \"#991b1b\" : isSeqScan ? \"#991b1b\" : isIndexScan ? \"#166534\" : \"#334155\" }}\n >\n {cleanContent}\n </Typography>\n </Box>\n\n {nodeMetric > 0 && (\n <Box className=\"flex items-center gap-1.5 shrink-0\">\n <Chip\n label={`${impactPercentage}% cost`}\n size=\"small\"\n color={isBottleneck ? \"error\" : impactPercentage > 15 ? \"warning\" : \"default\"}\n sx={{\n fontSize: '11px',\n fontWeight: '700',\n height: '22px',\n borderRadius: '6px'\n }}\n />\n </Box>\n )}\n </Box>\n );\n};\n\nconst QueryManagement = () => {\n const useSkeleton = useSelector(getUseSkeleton);\n const [rights, setRights] = useState({});\n const [processId, setProcessId] = useState(null);\n const [selectedQuery, setSelectedQuery] = useState(\"\");\n const [modalIndex, setModalIndex] = useState(0);\n const [queryOutputColumns, setQueryOutputColumns] = useState([]);\n const [queryOutputData, setQueryOutputData] = useState([]);\n const [isfetchLockedQuery, setisFetchLockedQuery] = useState(false);\n const { user } = useSelector((state) => state.Authenticate);\n\n const [activeTab, setActiveTab] = useState(0);\n const [resultSearchQuery, setResultSearchQuery] = useState(\"\");\n const [isTablesModalOpen, setIsTablesModalOpen] = useState(false);\n const [isHistoryModalOpen, setIsHistoryModalOpen] = useState(false);\n\n const [tableListData, setTableListData] = useState([]);\n const [filteredTableData, setFilteredTableData] = useState([]);\n const [queryHistoryData, setQueryHistoryData] = useState([]);\n const [actions, setActions] = useState([]);\n const numberOfRows = queryOutputData.length || null;\n\n const [explainTextLines, setExplainTextLines] = useState([]);\n const [executionTime, setExecutionTime] = useState(null);\n\n const populateStateQuery = `select pid,datname,state,wait_event_type,cast(now() - query_start as text) as query_age,cast(now() - state_change as text) as state_age,query from pg_stat_activity where state in ('active','idle in transaction') order by query_age desc;`;\n const killProcessQuery = `select pg_terminate_backend( ${processId} )`;\n const fetchLockedQuery = `select cast(pid as text) as pid, cast(usename as text) as usename, cast(pg_blocking_pids(pid) as text) as blocked_by, datname as Database_Name,cast(query as text) as blocked_query from pg_stat_activity where cardinality(pg_blocking_pids(pid)) > 0`;\n const fetchExceptionsQuery = `select * from caught_exception where username = (select user_name from um_user where id = ` + user.id + `) order by id desc limit 100`;\n\n const { translate } = useTranslateProvider();\n const [loading, setLoading] = useState(false);\n const [isCustomLoading, setisCustomLoading] = useState(false);\n const [isTableDataLoading, setisTableDataLoading] = useState(false);\n const [disabled, setDisabled] = useState(true);\n\n const [isDbaToolkitOpen, setIsDbaToolkitOpen] = useState(false);\n\n const [showDropGif, setShowDropGif] = useState(false);\n\n const handleSelectedTable = async (row, queryType = null) => {\n let query;\n if (queryType === \"index\") {\n query = \"SELECT * FROM pg_indexes WHERE tablename = '\" + row.tablename + \"' limit 100\";\n } else if (queryType === \"ddl\") {\n query = `WITH table_columns AS (\n SELECT c.relname AS table_name, a.attname AS column_name, pg_catalog.format_type(a.atttypid, a.atttypmod) AS column_type,\n CASE WHEN a.attnotnull THEN 'not null' ELSE 'null' END AS column_constraint\n FROM pg_class c JOIN pg_attribute a ON a.attrelid = c.oid JOIN pg_type t ON a.atttypid = t.oid\n WHERE c.relname = '${row.tablename}' AND a.attnum > 0 ORDER BY a.attnum\n ), table_indexes AS (\n SELECT t.relname AS table_name, i.relname AS index_name, pg_catalog.pg_get_indexdef(ix.indexrelid) AS index_def\n FROM pg_class t JOIN pg_index ix ON t.oid = ix.indrelid JOIN pg_class i ON i.oid = ix.indexrelid\n WHERE t.relname = '${row.tablename}'\n )\n SELECT 'CREATE TABLE ' || tc.table_name || E'\\\\n(\\\\n' || array_to_string(array_agg(DISTINCT ' ' || tc.column_name || ' ' || tc.column_type || ' ' || tc.column_constraint), E',\\\\n') || E'\\\\n);\\\\n' || COALESCE(string_agg(DISTINCT ti.index_def, E'\\\\n'), '') AS ddl\n FROM table_columns tc LEFT JOIN table_indexes ti ON tc.table_name = ti.table_name GROUP BY tc.table_name;`;\n } else {\n query = `select * from ${row.tablename} limit 100`;\n }\n setSelectedQuery(query);\n setIsTablesModalOpen(false);\n setActiveTab(0);\n handleRetrieveData(query);\n };\n\n const handleSelectedQuery = async (row) => {\n setSelectedQuery(row.query);\n setValue(\"query\", row.query);\n setDisabled(!(row.query && row.query.trim().length > 0));\n setIsHistoryModalOpen(false);\n setActiveTab(0);\n };\n\n const tableListColumns = [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n { field: \"size_pretty\", label: \"Size\", align: \"left\" },\n { field: \"tablename\", label: \"Table Name\", align: \"left\", onClick: handleSelectedTable },\n {\n field: \"Action\",\n label: \"Action\",\n align: \"center\",\n render: (row) => (\n <Button variant=\"outlined\" color=\"primary\" size=\"small\" sx={{ borderRadius: \"6px\", textTransform: \"none\" }} onClick={() => handleSelectedTable(row, \"index\")}>\n {translate(\"Index\")}\n </Button>\n ),\n },\n {\n field: \"DDL\",\n label: \"DDL\",\n align: \"center\",\n render: (row) => (\n <Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={{ borderRadius: \"6px\", textTransform: \"none\" }} onClick={() => handleSelectedTable(row, \"ddl\")}>\n {translate(\"DDL\")}\n </Button>\n ),\n },\n ];\n\n const queryHistoryColumns = [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n { field: \"query\", label: \"Query\", align: \"left\", onClick: handleSelectedQuery },\n { field: \"created_on\", label: \"Executed On\", align: \"left\" },\n ];\n\n const { control, setValue, getValues, formState: { errors } } = useForm({\n mode: \"onChange\",\n defaultValues: { excelFileName: \"\" },\n });\n\n useEffect(() => { setFilteredTableData(tableListData); }, [tableListData]);\n\n useEffect(() => {\n if (selectedQuery?.length > 0) {\n setDisabled(false);\n setValue(\"query\", selectedQuery);\n } else {\n setDisabled(true);\n }\n }, [selectedQuery]);\n\n const trackEvent = useTrackEvent();\n\n const handleRetrieveData = async (query, actions = []) => {\n try {\n if (!query) {\n showToast({ message: `Query can not be empty`, type: \"error\" });\n return;\n }\n setisCustomLoading(true);\n setResultSearchQuery(\"\");\n \n const startTime = performance.now();\n const { data } = await getQueryBasedData(query).catch((error) => {\n setQueryOutputData([]);\n setisCustomLoading(false);\n setExecutionTime(null);\n showToast({ message: `${error.response.data.message}`, type: \"error\" });\n });\n const endTime = performance.now();\n setExecutionTime((endTime - startTime).toFixed(0));\n\n if (data && !data.length) {\n setQueryOutputData([]);\n showToast({ message: `No data found`, type: \"info\" });\n setisCustomLoading(false);\n return;\n }\n if (data?.length) {\n if (query !== populateStateQuery) {\n showToast({ message: `Query Executed Successfully`, type: \"success\" });\n }\n }\n if (query === populateStateQuery) {\n actions = [\n {\n label: \"KILL PROCESS\",\n icon: (\n <Button\n variant=\"outlined\"\n color=\"error\"\n size=\"small\"\n sx={{\n borderRadius: '6px',\n textTransform: 'none',\n fontSize: '11px',\n minWidth: 'auto'\n }}\n >\n {translate(\"Kill Query\")}\n </Button>\n ),\n onClick: openKillProcessModal,\n },\n ];\n } else if (query === killProcessQuery) {\n if (data?.length) showToast({ message: `Terminated Successfully`, type: \"success\" });\n setQueryOutputData([]);\n return;\n }\n setQueryOutputData(data.map((data, index) => ({ index: index + 1, ...data })));\n const columnNames = Object.keys(data[0]);\n if (actions.length || query === populateStateQuery) columnNames.push(\"Actions\");\n const columns = columnNames.map((column) => ({ field: column, label: column, align: \"left\" }));\n setActions(actions);\n setQueryOutputColumns([{ field: \"index\", label: \"#\", align: \"left\" }, ...columns]);\n fetchLimitedQueryHistory();\n setisCustomLoading(false);\n setActiveTab(1);\n } catch (error) {\n setisCustomLoading(false);\n }\n };\n\n const handleExplainPlan = async () => {\n const rawQueryInput = getValues(\"query\");\n if (!rawQueryInput) {\n showToast({ message: `Query can not be empty`, type: \"error\" });\n return;\n }\n\n const cleanedQuery = rawQueryInput.trim().replace(/;+$/, \"\");\n const explainStatement = `EXPLAIN ${cleanedQuery};`;\n\n try {\n setisCustomLoading(true);\n const { data } = await getQueryBasedData(explainStatement).catch((error) => {\n setisCustomLoading(false);\n showToast({ message: `${error.response?.data?.message || \"Explain failed\"}`, type: \"error\" });\n });\n\n if (data && data.length > 0) {\n const planKey = Object.keys(data[0])[0];\n const parsedLines = data.map(row => row[planKey]);\n\n setExplainTextLines(parsedLines);\n showToast({ message: `Explain Plan Calculated`, type: \"success\" });\n setActiveTab(2);\n } else {\n showToast({ message: `No data returned from execution plan`, type: \"info\" });\n }\n setisCustomLoading(false);\n } catch (error) {\n setisCustomLoading(false);\n console.error(error);\n }\n };\n\n const handleExecuteData = async (query) => {\n try {\n if (!query) {\n showToast({ message: `Query can not be empty`, type: \"error\" });\n return;\n }\n const { data } = await executeQuery(query).catch((error) => {\n showToast({ message: `${error.response.data.message}`, type: \"error\" });\n });\n if (!data.length) showToast({ message: `No data found`, type: \"info\" });\n if (data.length) showToast({ message: `Query updated successfully`, type: \"success\" });\n } catch (error) {\n console.error(error);\n }\n };\n\n const handleDownloadExcel = async () => {\n const queryUUID = \"d91d249f-c8e1-4397-a84d-6ce6eb33eb48\";\n const queryValue = getValues(\"query\");\n const excelFileName = getValues(\"excelFileName\");\n if (!queryValue) {\n showToast({ message: `Query can not be empty`, type: \"info\" });\n return;\n }\n try {\n setisCustomLoading(true);\n const reportExcelDto = { paramObj: { query: queryValue } };\n const response = await downloadExcel(queryUUID, reportExcelDto).catch((error) => {\n showToast({ message: `Operation Unsuccessful, Something went wrong`, type: \"error\" });\n return null;\n });\n\n if (!response) {\n setisCustomLoading(false);\n return;\n }\n\n const blob = new Blob([response.data], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" });\n const filename = `${excelFileName || \"rename\"}_${new Date().getTime()}.xlsx`;\n\n if (navigator.msSaveBlob) {\n const blobData = new Blob([response.data], { type: \"\" });\n trackEvent(\"file_download\", { file_type: \"xlsx\", file_name: filename, file_size: `${(blobData.size / 1024).toFixed(2)} KB`, download_status: \"success\" });\n return navigator.msSaveBlob(blobData, filename);\n } else {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n a.style.display = \"none\";\n document.body.appendChild(a);\n a.click();\n trackEvent(\"file_download\", { file_type: \"xlsx\", file_name: filename, file_size: `${(blob.size / 1024).toFixed(2)} KB`, download_status: \"success\" });\n URL.revokeObjectURL(url);\n a.remove();\n }\n setisCustomLoading(false);\n } catch (error) {\n setisCustomLoading(false);\n showToast({ type: \"error\", message: `Something went wrong!` });\n }\n };\n\n const handleFetchLockedQuery = async () => {\n try {\n setisFetchLockedQuery(true);\n setSelectedQuery(fetchLockedQuery);\n await handleRetrieveData(fetchLockedQuery);\n } catch (error) {\n console.error(error);\n }\n };\n\n const openKillProcessModal = async (row) => {\n setModalIndex(3);\n setProcessId(row.pid);\n };\n\n const handleKillProcess = async () => {\n try {\n await handleRetrieveData(killProcessQuery);\n await handleRetrieveData(isfetchLockedQuery ? fetchLockedQuery : populateStateQuery);\n } catch (error) {\n console.error(error);\n }\n };\n\n const handlePopulateStateQuery = async () => {\n try {\n setSelectedQuery(populateStateQuery);\n await handleRetrieveData(populateStateQuery);\n } catch (error) {\n console.error(error);\n }\n };\n\n const fetchLimitedQueryHistory = async () => {\n try {\n const queryHistorySearchKey = getValues(\"queryHistorySearchKey\");\n const { data } = await execute({\n code: \"retrieve_limited_query_history\",\n parameters: { userId: user?.id, limit: 100, searchKey: queryHistorySearchKey },\n });\n setQueryHistoryData(\n data.result.map((data, index) => ({\n index: index + 1,\n ...data,\n created_on: dayjs(data.created_on).format(\"DD-MM-YYYY h:mm:ss A\"),\n }))\n );\n } catch (error) {\n console.error(error);\n }\n };\n\n const init = async () => {\n try {\n setLoading(true);\n const { data: featureJson } = await getAssignedFeatures(\"techo.querymanagement\");\n if (featureJson) setRights(JSON.parse(featureJson));\n await fetchLimitedQueryHistory();\n setLoading(false);\n } catch (error) {\n setLoading(false);\n }\n };\n\n useEffect(() => { init(); }, []);\n\n const openTablesModal = async () => {\n setIsTablesModalOpen(true);\n if (!tableListData.length) await fetchTableList();\n };\n\n const openDbaToolkitModal = () => {\n setIsDbaToolkitOpen(true);\n };\n\n const fetchTableList = async () => {\n try {\n setisTableDataLoading(true);\n const { data } = await getDataWithTimeout({ code: \"retrieve_all_tables\" });\n setTableListData(data.result.map((data, index) => ({ index: index + 1, ...data })));\n setisTableDataLoading(false);\n } catch (error) {\n setisTableDataLoading(false);\n }\n };\n\n const handleSearchKeyChange = (e) => { handleSearchChange(e.target.value); };\n\n const handleSearchChange = useMemo(\n () =>\n debounce((value) => {\n const lowerCaseValue = value.toLowerCase();\n setFilteredTableData(tableListData.filter((data) => data?.tablename?.toLowerCase().includes(lowerCaseValue)));\n }, 300),\n [tableListData]\n );\n\n const processedFilteredOutputData = useMemo(() => {\n if (!resultSearchQuery) return queryOutputData;\n const cleanSearchVal = resultSearchQuery.toLowerCase().trim();\n\n return queryOutputData.filter((row) => {\n return Object.entries(row).some(([key, val]) => {\n if (key === \"index\" || key === \"Actions\") return false;\n return String(val ?? \"\").toLowerCase().includes(cleanSearchVal);\n });\n });\n }, [queryOutputData, resultSearchQuery]);\n\n const handleRefreshCurrentQuery = async () => {\n const currentQuery = getValues(\"query\") || selectedQuery;\n if (currentQuery) {\n await handleRetrieveData(currentQuery, actions);\n } else {\n showToast({ message: \"No context query found to refresh\", type: \"warning\" });\n }\n };\n\n const handleFetchExceptions = async () => {\n try {\n setSelectedQuery(fetchExceptionsQuery);\n await handleRetrieveData(fetchExceptionsQuery);\n } catch (error) {\n console.error(error);\n }\n };\n\n return GeneralUtil.isTecho && !loading && !rights?.[\"view.manage.querymanagement.retrieve\"] ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card className=\"p-8 max-w-md text-center shadow-2xl border border-gray-100 rounded-2xl bg-white\">\n <Typography variant=\"h5\" color=\"error\" fontWeight=\"700\" letterSpacing=\"-0.5px\">Access Denied</Typography>\n <Typography variant=\"body2\" className=\"text-gray-400 mt-2\">You don't have permission to view Query Management Tool</Typography>\n </Card>\n </Box>\n ) : (\n <QueryManagementSkeleton loading={loading}>\n {isCustomLoading && useSkeleton && (\n <div className=\"loader-overlay\"><div className=\"loader-spinner\"></div></div>\n )}\n\n <Box className=\"w-full flex flex-col gap-4 mt-2 p-3 min-h-[85vh] bg-[#fdfeff]\">\n\n <Card className=\"px-4 py-2.5 shadow-sm border border-gray-200/70 rounded-xl bg-white flex flex-wrap items-center justify-between gap-4\">\n\n <Tabs\n value={activeTab}\n onChange={(e, newVal) => setActiveTab(newVal)}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n sx={{\n '& .MuiTabs-indicator': { height: '3px', borderRadius: '3px' },\n '& .MuiTab-root': { textTransform: 'none', fontWeight: 600, fontSize: '14px', minHeight: '44px' }\n }}\n >\n <Tab\n label={\n <Box className=\"flex items-center gap-2\">\n <FontAwesomeIcon icon={faTerminal} className=\"text-xs opacity-80\" />\n <span>{translate(\"Query Console\")}</span>\n </Box>\n }\n />\n <Tab\n label={\n <Box className=\"flex items-center gap-2\">\n <FontAwesomeIcon icon={faTableList} className=\"text-xs opacity-80\" />\n <span>{translate(\"Results Layer\")}</span>\n {!!numberOfRows && (\n <Chip label={numberOfRows} size=\"small\" color=\"primary\" sx={{ height: 18, fontSize: '10px', fontWeight: 'bold' }} />\n )}\n </Box>\n }\n />\n <Tab\n label={\n <Box className=\"flex items-center gap-2\">\n <FontAwesomeIcon icon={faSitemap} className=\"text-xs text-indigo-500 opacity-90\" />\n <span>{translate(\"Query Plan\")}</span>\n {explainTextLines.length > 0 && (\n <Chip label=\"Ready\" size=\"small\" color=\"info\" sx={{ height: 18, fontSize: '9px', fontWeight: 'bold' }} />\n )}\n </Box>\n }\n />\n </Tabs>\n\n <Box className=\"flex flex-wrap items-center gap-2.5\">\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={openTablesModal} className=\"h-[36px] border-gray-300 hover:bg-gray-50 text-gray-700\" sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 500 }}>\n <FontAwesomeIcon icon={faDatabase} className=\"mr-2 text-blue-500\" />\n {translate(\"Tables Explorer\")}\n </Button>\n\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={openDbaToolkitModal} className=\"h-[36px] border-gray-300 hover:bg-gray-50 text-gray-700\" sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 500 }}>\n <FontAwesomeIcon icon={faSlidersH} className=\"mr-2 text-blue-500\" />\n {translate(\"DBA Toolkit\")}\n </Button>\n\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={() => setIsHistoryModalOpen(true)} className=\"h-[36px] border-gray-300 hover:bg-gray-50 text-gray-700\" sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 500 }}>\n <FontAwesomeIcon icon={faHistory} className=\"mr-2 text-purple-500\" />\n {translate(\"Query History\")}\n </Button>\n\n <Divider orientation=\"vertical\" flexItem className=\"hidden md:block my-1\" />\n\n <Button size=\"small\" color=\"secondary\" onClick={handleFetchLockedQuery} className=\"h-[34px] font-semibold text-xs text-gray-500\" sx={{ textTransform: \"none\" }}>\n <FontAwesomeIcon icon={faLock} className=\"mr-1 text-amber-500 text-[10px]\" /> {translate(\"Locked Queries\")}\n </Button>\n\n <Button size=\"small\" color=\"secondary\" onClick={handlePopulateStateQuery} className=\"h-[34px] font-semibold text-xs text-gray-500\" sx={{ textTransform: \"none\" }}>\n <FontAwesomeIcon icon={faSlidersH} className=\"mr-1 text-teal-500 text-[10px]\" /> {translate(\"Active Queries\")}\n </Button>\n\n <Button size=\"small\" color=\"secondary\" onClick={handleFetchExceptions} className=\"h-[34px] font-semibold text-xs text-gray-500\" sx={{ textTransform: \"none\" }}>\n <FontAwesomeIcon icon={faTimes} className=\"mr-1 text-teal-500 text-[10px]\" /> {translate(\"Recent Exceptions\")}\n </Button>\n </Box>\n </Card>\n\n <Box className=\"flex-grow flex flex-col\">\n\n {activeTab === 0 && (\n <Card className=\"p-4 shadow-sm border border-gray-200 rounded-2xl bg-white flex flex-col gap-4 flex-grow min-h-[520px]\">\n\n <Box className=\"flex-grow relative rounded-xl overflow-hidden border border-gray-200 shadow-inner bg-[#fffffe] h-[400px]\">\n <Editor\n height=\"100%\"\n defaultLanguage=\"sql\"\n theme=\"vs-light\"\n value={getValues(\"query\") || \"\"}\n onChange={(value) => {\n setValue(\"query\", value || \"\");\n setDisabled(!(value && value.trim().length > 0));\n }}\n options={{\n minimap: { enabled: false },\n fontSize: 14,\n fontFamily: \"'Fira Code', 'Courier New', monospace\",\n lineNumbers: \"on\",\n roundedSelection: true,\n scrollBeyondLastLine: false,\n readOnly: false,\n automaticLayout: true,\n tabSize: 2,\n suggestOnTriggerCharacters: true,\n wordWrap: \"on\"\n }}\n loading={<div className=\"p-4 text-gray-400 font-mono text-xs\">Loading IDE Engine...</div>}\n />\n </Box>\n\n <Box className=\"flex flex-wrap items-center justify-between gap-3 pt-3 border-t border-gray-100\">\n\n <Box className=\"flex items-center gap-2 bg-gray-50/80 p-1.5 rounded-xl border border-gray-200/60\">\n\n <CustomTextField\n id=\"excelFileName\"\n name=\"excelFileName\"\n control={control}\n placeholder=\"Export sheet filename...\"\n size=\"small\"\n className=\"max-w-[220px] bg-white\"\n sx={{ '& .MuiOutlinedInput-root': { borderRadius: '8px', height: '36px' } }}\n />\n\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n onClick={handleDownloadExcel}\n className=\"border-gray-300 text-gray-700 hover:bg-white\"\n sx={{\n textTransform: \"none\",\n borderRadius: \"8px\",\n height: \"36px\",\n minWidth: \"max-content\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n px: 2,\n py: 0,\n fontSize: \"0.875rem\",\n lineHeight: 1\n }}\n >\n <FontAwesomeIcon icon={faDownload} className=\"mr-2 text-gray-400\" />\n Spreadsheet\n </Button>\n\n </Box>\n\n <Box className=\"flex gap-2.5\">\n {(!GeneralUtil.isTecho || rights?.['view.manage.querymanagement.execute']) && (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n disabled={disabled}\n className=\"h-[38px]\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 600 }}\n onClick={async () => {\n const val = getValues(\"query\");\n setSelectedQuery(val);\n val?.toLowerCase().includes(\"where\") ? await handleExecuteData(val) : setModalIndex(2);\n }}\n >\n {translate(\"Execute Command\")}\n </Button>\n )}\n\n <Button\n variant=\"outlined\"\n disabled={disabled}\n className=\"h-[38px] border-indigo-200 text-indigo-600 hover:bg-indigo-50 disabled:border-gray-200 disabled:text-gray-400\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 600 }}\n onClick={handleExplainPlan}\n >\n <FontAwesomeIcon icon={faSitemap} className=\"mr-2 text-xs\" />\n {translate(\"Explain Plan\")}\n </Button>\n {(!GeneralUtil.isTecho || rights?.['view.manage.querymanagement.retrieve']) && (\n <Button\n variant=\"contained\"\n color=\"success\"\n disabled={disabled}\n className=\"h-[38px] shadow-sm shadow-green-200\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 600, px: 3 }}\n onClick={async () => {\n const val = getValues(\"query\");\n setSelectedQuery(val);\n \n const cleanVal = val?.toLowerCase().trim() || \"\";\n \n const restrictedRegex = /\\b(drop|truncate|delete|update)\\b/;\n\n if (restrictedRegex.test(cleanVal)) {\n setShowDropGif(true);\n return;\n }\n\n const isSelect = cleanVal.startsWith(\"select\");\n const hasWhere = cleanVal.includes(\"where\");\n\n if (isSelect && !hasWhere) {\n setModalIndex(1);\n } else {\n await handleRetrieveData(val);\n }\n }}\n >\n <FontAwesomeIcon icon={faPlay} className=\"mr-2 text-xs\" />\n {translate(\"Retrieve Data\")}\n </Button>\n )}\n </Box>\n </Box>\n </Card>\n )}\n\n {activeTab === 1 && (\n <Card className=\"p-4 shadow-sm border border-gray-200 rounded-2xl bg-white flex flex-col flex-grow min-h-[520px]\">\n <Box className=\"flex flex-wrap items-center justify-between border-b border-gray-100 pb-3 mb-3 gap-3\">\n {queryOutputData.length > 0 && (\n <Box className=\"flex flex-wrap items-center justify-between w-full gap-3\">\n <Box className=\"flex items-center gap-3 w-full sm:w-auto\">\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Filter layout results...\"\n value={resultSearchQuery}\n onChange={(e) => setResultSearchQuery(e.target.value)}\n sx={{\n width: { xs: \"100%\", sm: \"280px\" },\n '& .MuiOutlinedInput-root': { borderRadius: '10px', height: '36px', backgroundColor: '#fafbfe' }\n }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <FontAwesomeIcon icon={faSearch} className=\"text-gray-400 text-xs\" />\n </InputAdornment>\n ),\n endAdornment: resultSearchQuery && (\n <InputAdornment position=\"end\">\n <IconButton size=\"small\" onClick={() => setResultSearchQuery(\"\")} edge=\"end\">\n <FontAwesomeIcon icon={faTimes} className=\"text-[10px]\" />\n </IconButton>\n </InputAdornment>\n )\n }}\n />\n\n <Chip\n label={\n resultSearchQuery\n ? `${translate(\"Matches\")}: ${processedFilteredOutputData.length} / ${numberOfRows}`\n : `${translate(\"Records Loaded\")}: ${numberOfRows}`\n }\n size=\"medium\"\n color={resultSearchQuery ? \"primary\" : \"success\"}\n variant={resultSearchQuery ? \"outlined\" : \"filled\"}\n sx={{ borderRadius: \"8px\", fontWeight: \"600\", fontSize: \"12px\", height: \"34px\" }}\n />\n\n {executionTime && (\n <Chip\n icon={<FontAwesomeIcon icon={faClock} style={{ fontSize: '11px', color: '#475569' }} />}\n label={`${executionTime} ms`}\n variant=\"outlined\"\n sx={{ \n borderRadius: \"8px\", \n fontWeight: \"500\", \n fontSize: \"12px\",\n height: \"34px\", \n backgroundColor: '#f1f5f9', \n borderColor: '#e2e8f0' \n }}\n />\n )}\n </Box>\n\n <Box className=\"flex flex-wrap items-center gap-2.5 ml-auto\">\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleRefreshCurrentQuery}\n className=\"h-[36px] border-gray-300 hover:bg-gray-50 text-gray-700\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\", fontWeight: 500 }}\n >\n <FontAwesomeIcon icon={faSyncAlt} className=\"mr-2 text-teal-600\" />\n {translate(\"Refresh\")}\n </Button>\n\n <Box className=\"flex items-center gap-2 bg-gray-50/80 p-1.5 rounded-xl border border-gray-200/60\">\n <CustomTextField\n id=\"excelFileName\"\n name=\"excelFileName\"\n control={control}\n placeholder=\"Export sheet filename...\"\n size=\"small\"\n className=\"max-w-[220px] bg-white\"\n sx={{ '& .MuiOutlinedInput-root': { borderRadius: '8px', height: '36px' } }}\n />\n\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n onClick={handleDownloadExcel}\n className=\"border-gray-300 text-gray-700 hover:bg-white\"\n sx={{\n textTransform: \"none\",\n borderRadius: \"8px\",\n height: \"36px\",\n minWidth: \"max-content\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n px: 2,\n py: 0,\n fontSize: \"0.875rem\",\n lineHeight: 1\n }}\n >\n <FontAwesomeIcon icon={faDownload} className=\"mr-2 text-blue-600\" />\n {translate(\"Spreadsheet\")}\n </Button>\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n\n {processedFilteredOutputData.length ? (\n <Box className=\"w-full overflow-x-auto flex-grow border border-gray-150 rounded-xl\">\n <CustomizedTable\n className=\"min-w-[600px]\"\n columns={queryOutputColumns}\n actions={actions}\n tableData={processedFilteredOutputData}\n paginationConfig={staticQueryOutputPaginationConfig}\n styleConfig={staticQueryOutputStyleConfig}\n />\n </Box>\n ) : (\n <Box className=\"flex flex-col items-center justify-center flex-grow py-24 text-gray-400 bg-gray-50/50 rounded-xl border border-dashed border-gray-200\">\n <FontAwesomeIcon icon={faTableList} size=\"2x\" className=\"mb-3 text-gray-300\" />\n <Typography variant=\"body2\" fontWeight=\"600\" className=\"text-gray-600\">\n {queryOutputData.length > 0 ? \"No Matching Metadata Fields\" : \"No Active Dataset Displayed\"}\n </Typography>\n <Typography variant=\"caption\" className=\"mt-1 text-gray-400 max-w-xs text-center\">\n {queryOutputData.length > 0\n ? \"The criteria keywords queried didn't flag hits inside the running table frame matrix.\"\n : \"Head backwards into the query console and fire data queries to populate results layer.\"\n }\n </Typography>\n <Button\n variant=\"outlined\"\n size=\"small\"\n color=\"inherit\"\n onClick={() => {\n if (queryOutputData.length > 0) {\n setResultSearchQuery(\"\");\n } else {\n setActiveTab(0);\n }\n }}\n className=\"mt-4 border-gray-300 text-gray-600 bg-white\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\", fontSize: \"12px\" }}\n >\n {queryOutputData.length > 0 ? \"Reset Matrix Filter\" : \"Go to Query Workspace\"}\n </Button>\n </Box>\n )}\n </Card>\n )}\n\n {activeTab === 2 && (\n <Card className=\"p-5 shadow-sm border border-gray-200 rounded-2xl bg-white flex flex-col flex-grow min-h-[520px]\">\n {explainTextLines.length > 0 ? (\n <Box className=\"flex flex-col flex-grow w-full\">\n <Typography variant=\"subtitle2\" className=\"text-gray-500 font-bold mb-3 uppercase tracking-wider text-xs\">\n Plan Graph Node Sequence: (Root Bottleneck Impact Assessment):\n </Typography>\n\n <Box className=\"flex-grow w-full overflow-y-auto bg-slate-50/50 border border-gray-200/80 rounded-xl p-4 max-h-[60vh]\">\n {(() => {\n const totalPlanMetric = extractNodeMetric(explainTextLines[0]);\n return explainTextLines.map((line, idx) => (\n <VisualPlanRow\n key={idx}\n rawTextLine={line}\n totalPlanMetric={totalPlanMetric}\n />\n ));\n })()}\n </Box>\n </Box>\n ) : (\n <Box className=\"flex flex-col items-center justify-center flex-grow py-24 text-gray-400 bg-gray-50/30 rounded-xl border border-dashed border-gray-200\">\n <FontAwesomeIcon icon={faSitemap} size=\"2x\" className=\"mb-3 text-indigo-300\" />\n <Typography variant=\"body2\" fontWeight=\"600\" className=\"text-gray-600\">\n No Query Plan Loaded\n </Typography>\n <Typography variant=\"caption\" className=\"mt-1 text-gray-400 max-w-xs text-center\">\n Type a query inside the editor and select 'Explain Plan' to compile the database execution steps.\n </Typography>\n <Button\n variant=\"outlined\"\n size=\"small\"\n color=\"primary\"\n onClick={() => setActiveTab(0)}\n className=\"mt-4\"\n sx={{ textTransform: \"none\", borderRadius: \"8px\" }}\n >\n Go to Query Console\n </Button>\n </Box>\n )}\n </Card>\n )}\n </Box>\n\n </Box>\n\n <Modal open={isTablesModalOpen} onClose={() => setIsTablesModalOpen(false)}>\n <Box sx={modalStyle} className=\"flex flex-col gap-4 max-h-[85vh]\">\n <Box className=\"flex items-center justify-between border-b border-gray-100 pb-3\">\n <Typography variant=\"h6\" fontWeight=\"700\" className=\"flex items-center gap-2.5 text-gray-800\" letterSpacing=\"-0.4px\">\n <FontAwesomeIcon icon={faDatabase} className=\"text-blue-500 text-lg\" /> {translate(\"Tables Explorer\")}\n </Typography>\n <IconButton onClick={() => setIsTablesModalOpen(false)} size=\"small\" className=\"hover:bg-gray-100\">\n <FontAwesomeIcon icon={faTimes} className=\"text-sm text-gray-400\" />\n </IconButton>\n </Box>\n <TextField\n fullWidth\n onChange={handleSearchKeyChange}\n size=\"small\"\n placeholder=\"Type matching schema name indexes...\"\n sx={{ '& .MuiOutlinedInput-root': { borderRadius: '10px', backgroundColor: '#fdfeff' } }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <FontAwesomeIcon icon={faSearch} className=\"text-gray-400 text-xs\" />\n </InputAdornment>\n )\n }}\n />\n <Box className=\"overflow-y-auto flex-grow border border-gray-100 rounded-xl\">\n <CustomizedTable\n strip={true}\n isLoading={isTableDataLoading}\n columns={tableListColumns}\n tableData={filteredTableData}\n paginationConfig={staticTableListPaginationConfig}\n styleConfig={staticTableListStyleConfig}\n />\n </Box>\n </Box>\n </Modal>\n\n <Modal open={isHistoryModalOpen} onClose={() => setIsHistoryModalOpen(false)}>\n <Box sx={modalStyle} className=\"flex flex-col gap-4 max-h-[85vh]\">\n <Box className=\"flex items-center justify-between border-b border-gray-100 pb-3\">\n <Typography variant=\"h6\" fontWeight=\"700\" className=\"flex items-center gap-2.5 text-gray-800\" letterSpacing=\"-0.4px\">\n <FontAwesomeIcon icon={faHistory} className=\"text-purple-500 text-lg\" /> {translate(\"Query History\")}\n </Typography>\n <IconButton onClick={() => setIsHistoryModalOpen(false)} size=\"small\" className=\"hover:bg-gray-100\">\n <FontAwesomeIcon icon={faTimes} className=\"text-sm text-gray-400\" />\n </IconButton>\n </Box>\n <Box className=\"flex gap-2.5\">\n <CustomTextField\n id=\"queryHistorySearchKey\"\n name=\"queryHistorySearchKey\"\n control={control}\n placeholder=\"Search previous queries...\"\n size=\"small\"\n className=\"flex-grow\"\n sx={{ '& .MuiOutlinedInput-root': { borderRadius: '10px' } }}\n />\n <Button variant=\"contained\" color=\"primary\" onClick={fetchLimitedQueryHistory} sx={{ borderRadius: \"10px\", px: 3, textTransform: \"none\" }}>\n {translate(\"Search\")}\n </Button>\n </Box>\n <Box className=\"overflow-y-auto flex-grow border border-gray-150 rounded-xl\">\n <CustomizedTable\n strip={true}\n columns={queryHistoryColumns}\n tableData={queryHistoryData}\n paginationConfig={staticTableListPaginationConfig}\n styleConfig={staticTableListStyleConfig}\n />\n </Box>\n </Box>\n </Modal>\n\n <Modal open={isDbaToolkitOpen} onClose={() => setIsDbaToolkitOpen(false)}>\n <Box sx={modalStyle} className=\"flex flex-col gap-4 max-h-[85vh]\">\n <Box className=\"flex items-center justify-between border-b border-gray-100 pb-3\">\n <Typography variant=\"h6\" fontWeight=\"700\" className=\"flex items-center gap-2.5 text-gray-800\" letterSpacing=\"-0.4px\">\n <FontAwesomeIcon icon={faDatabase} className=\"text-purple-500 text-lg\" />\n {translate(\"DBA Toolkit\")}\n </Typography>\n <IconButton onClick={() => setIsDbaToolkitOpen(false)} size=\"small\" className=\"hover:bg-gray-100\">\n <FontAwesomeIcon icon={faTimes} className=\"text-sm text-gray-400\" />\n </IconButton>\n </Box>\n\n <Box className=\"overflow-y-auto flex-grow bg-slate-50/50 p-3 rounded-xl border border-gray-100 flex flex-col gap-5\">\n {[\"Performance & Space\", \"Index Health\", \"Maintenance\"].map((category) => {\n const categoryScripts = dbaToolkitScripts.filter(s => s.category === category);\n if (categoryScripts.length === 0) return null;\n\n return (\n <Box key={category} className=\"flex flex-col gap-2\">\n <Typography variant=\"caption\" className=\"text-slate-400 font-bold uppercase tracking-wider pl-1 text-[11px]\">\n {category}\n </Typography>\n\n <Box className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n {categoryScripts.map((snippet, index) => (\n <Box\n key={index}\n onClick={() => {\n setValue(\"query\", snippet.code);\n setDisabled(false);\n setIsDbaToolkitOpen(false);\n setActiveTab(0);\n showToast({ message: `Injected script: ${snippet.name}`, type: \"success\" });\n }}\n className=\"p-4 bg-white hover:bg-purple-50/30 border border-slate-200 hover:border-purple-300 rounded-xl cursor-pointer transition-all shadow-sm group flex flex-col justify-between\"\n >\n <Box>\n <Typography variant=\"body2\" className=\"font-bold text-slate-800 group-hover:text-purple-700 transition-colors\">\n {snippet.name}\n </Typography>\n <Typography variant=\"caption\" className=\"text-slate-500 block mt-1 leading-normal\">\n {snippet.description}\n </Typography>\n </Box>\n\n <Box className=\"mt-3 pt-2 border-t border-slate-100 flex items-center justify-between text-xs text-purple-600 font-medium opacity-80 group-hover:opacity-100\">\n <span>Load Into Editor</span>\n <span className=\"font-mono text-[10px] bg-purple-100 px-1.5 py-0.5 rounded text-purple-700\">SQL</span>\n </Box>\n </Box>\n ))}\n </Box>\n </Box>\n );\n })}\n </Box>\n </Box>\n </Modal>\n\n <Modal \n open={showDropGif} \n onClose={() => setShowDropGif(false)}\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}\n >\n <Box \n sx={{ \n bgcolor: 'background.paper', \n boxShadow: 24, \n p: 4, \n borderRadius: '16px', \n textAlign: 'center',\n maxWidth: '500px',\n outline: 'none'\n }}\n >\n <Typography variant=\"h5\" color=\"error\" fontWeight=\"700\" sx={{ mb: 2 }}>\n 🛑 ACCESS DENIED!\n </Typography>\n \n <img \n src={baburao}\n alt=\"baburao\" \n style={{ width: '100%', borderRadius: '8px', marginBottom: '16px' }}\n />\n \n <Typography variant=\"body2\" className=\"text-gray-600 mb-4\">\n Nice try! Attempting to commit such acts from a data retrieval screen is strictly forbidden by the DBA overlords.\n </Typography>\n \n <Button \n variant=\"contained\" \n color=\"error\" \n onClick={() => setShowDropGif(false)}\n sx={{ borderRadius: '8px', textTransform: 'none' }}\n >\n I promise to behave\n </Button>\n </Box>\n </Modal>\n\n {!!modalIndex && (\n <CustomConfirmationModal\n description={\n modalIndex === 3\n ? `Are you sure you want to kill process id ${processId}?`\n : \"The query does not include a WHERE clause. Are you sure you want to proceed?\"\n }\n title={\"CONFIRM ACTION\"}\n open={modalIndex}\n handleClick={async () => {\n if (modalIndex === 1) handleRetrieveData(selectedQuery);\n if (modalIndex === 2) handleExecuteData(selectedQuery);\n if (modalIndex === 3) handleKillProcess();\n setModalIndex(0);\n }}\n handleClose={() => setModalIndex(0)}\n />\n )}\n </QueryManagementSkeleton>\n );\n};\n\nexport default QueryManagement;"],"names":["getDataWithTimeout","params","api","getQueryBasedData","query","data","executeQuery","QueryManagementSkeleton","children","loading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","dbaToolkitScripts","staticTableListPaginationConfig","staticTableListStyleConfig","staticQueryOutputPaginationConfig","staticQueryOutputStyleConfig","modalStyle","extractNodeMetric","line","timeMatch","costMatch","VisualPlanRow","rawTextLine","totalPlanMetric","leadingSpaces","depth","cleanContent","isSeqScan","isIndexScan","isCostRow","nodeMetric","impactPercentage","isBottleneck","Box","Typography","Chip","QueryManagement","useSkeleton","rights","setRights","useState","processId","setProcessId","selectedQuery","setSelectedQuery","modalIndex","setModalIndex","queryOutputColumns","setQueryOutputColumns","queryOutputData","setQueryOutputData","isfetchLockedQuery","setisFetchLockedQuery","user","state","activeTab","setActiveTab","resultSearchQuery","setResultSearchQuery","isTablesModalOpen","setIsTablesModalOpen","isHistoryModalOpen","setIsHistoryModalOpen","tableListData","setTableListData","filteredTableData","setFilteredTableData","queryHistoryData","setQueryHistoryData","actions","setActions","numberOfRows","explainTextLines","setExplainTextLines","executionTime","setExecutionTime","populateStateQuery","killProcessQuery","fetchLockedQuery","fetchExceptionsQuery","translate","useTranslateProvider","setLoading","isCustomLoading","setisCustomLoading","isTableDataLoading","setisTableDataLoading","disabled","setDisabled","isDbaToolkitOpen","setIsDbaToolkitOpen","showDropGif","setShowDropGif","handleSelectedTable","row","queryType","handleRetrieveData","handleSelectedQuery","setValue","tableListColumns","Button","queryHistoryColumns","control","getValues","errors","useForm","useEffect","trackEvent","useTrackEvent","showToast","startTime","error","endTime","openKillProcessModal","index","columnNames","columns","column","fetchLimitedQueryHistory","handleExplainPlan","rawQueryInput","explainStatement","_b","_a","planKey","parsedLines","handleExecuteData","handleDownloadExcel","queryUUID","queryValue","excelFileName","response","downloadExcel","blob","filename","blobData","url","a","handleFetchLockedQuery","handleKillProcess","handlePopulateStateQuery","queryHistorySearchKey","execute","dayjs","init","featureJson","getAssignedFeatures","openTablesModal","fetchTableList","openDbaToolkitModal","handleSearchKeyChange","e","handleSearchChange","useMemo","debounce","value","lowerCaseValue","processedFilteredOutputData","cleanSearchVal","key","val","handleRefreshCurrentQuery","currentQuery","handleFetchExceptions","GeneralUtil","Card","Tabs","newVal","Tab","FontAwesomeIcon","faTerminal","faTableList","faSitemap","faDatabase","faSlidersH","faHistory","Divider","faLock","faTimes","Editor","CustomTextField","faDownload","cleanVal","isSelect","hasWhere","faPlay","TextField","InputAdornment","faSearch","IconButton","faClock","faSyncAlt","CustomizedTable","idx","Modal","category","categoryScripts","s","snippet","baburao","CustomConfirmationModal"],"mappings":"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"}