@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.
- package/dist/{AccessRights-Bvd5Bm5K.js → AccessRights-CupmTG3T.js} +2 -2
- package/dist/{AccessRights-Bvd5Bm5K.js.map → AccessRights-CupmTG3T.js.map} +1 -1
- package/dist/{AddEditQueryBuilder-Bcjl5mXE.js → AddEditQueryBuilder-C8ZSkOF0.js} +60 -60
- package/dist/AddEditQueryBuilder-C8ZSkOF0.js.map +1 -0
- package/dist/{AddFeatures-CE5rBxEG.js → AddFeatures-CiZZZ0GL.js} +2 -2
- package/dist/{AddFeatures-CE5rBxEG.js.map → AddFeatures-CiZZZ0GL.js.map} +1 -1
- package/dist/{AddMenuConfiguration-QWfpcnuP.js → AddMenuConfiguration-DsnY0Rws.js} +544 -544
- package/dist/AddMenuConfiguration-DsnY0Rws.js.map +1 -0
- package/dist/{AddRoleDrawer-SvntLdRu.js → AddRoleDrawer-CQdzQZLb.js} +39 -39
- package/dist/AddRoleDrawer-CQdzQZLb.js.map +1 -0
- package/dist/ChangePasswordModalCore-50EzprTk.js +5495 -0
- package/dist/ChangePasswordModalCore-50EzprTk.js.map +1 -0
- package/dist/{ConditionConfig-DB0FqwgG.js → ConditionConfig-C3rF2wXU.js} +2 -2
- package/dist/{ConditionConfig-DB0FqwgG.js.map → ConditionConfig-C3rF2wXU.js.map} +1 -1
- package/dist/{EntityManagement-DQKXnEzz.js → EntityManagement-D4nG7wUX.js} +2 -2
- package/dist/{EntityManagement-DQKXnEzz.js.map → EntityManagement-D4nG7wUX.js.map} +1 -1
- package/dist/{EventConfigurations-D8juDb29.js → EventConfigurations-BGffjVC7.js} +3 -3
- package/dist/{EventConfigurations-D8juDb29.js.map → EventConfigurations-BGffjVC7.js.map} +1 -1
- package/dist/{EventsExceptionModal-DsvngLi8.js → EventsExceptionModal-D4Bf1ilS.js} +2 -2
- package/dist/{EventsExceptionModal-DsvngLi8.js.map → EventsExceptionModal-D4Bf1ilS.js.map} +1 -1
- package/dist/EventsSkeleton-8iiETGcf.js +76 -0
- package/dist/EventsSkeleton-8iiETGcf.js.map +1 -0
- package/dist/{FeatureMenu-CLX8VNZ-.js → FeatureMenu-DUZL32RI.js} +3 -3
- package/dist/{FeatureMenu-CLX8VNZ-.js.map → FeatureMenu-DUZL32RI.js.map} +1 -1
- package/dist/Features-CObdzJp_.js +13 -0
- package/dist/Features-CObdzJp_.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-C5wnjI_-.js +5706 -0
- package/dist/ImmunizationConfigurationBase-C5wnjI_-.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/{ManageDynamicFeature-CsIett5x.js → ManageDynamicFeature-BhONvfC_.js} +3 -3
- package/dist/{ManageDynamicFeature-CsIett5x.js.map → ManageDynamicFeature-BhONvfC_.js.map} +1 -1
- package/dist/{ManageEventConfiguration-0YBDaxOI.js → ManageEventConfiguration-BntUc_YI.js} +93 -93
- package/dist/ManageEventConfiguration-BntUc_YI.js.map +1 -0
- package/dist/{ManageNotification-BUAvg5Ge.js → ManageNotification-CSl02Wq7.js} +2 -2
- package/dist/{ManageNotification-BUAvg5Ge.js.map → ManageNotification-CSl02Wq7.js.map} +1 -1
- package/dist/{ManageRole-Cbs9dUhc.js → ManageRole-tdzAiCOE.js} +222 -229
- package/dist/ManageRole-tdzAiCOE.js.map +1 -0
- package/dist/{ManageUser-eBS0yC5k.js → ManageUser-C6dlK-Mr.js} +3 -4
- package/dist/{ManageUser-eBS0yC5k.js.map → ManageUser-C6dlK-Mr.js.map} +1 -1
- package/dist/{MobileMenuManagement-BmrO-7MN.js → MobileMenuManagement-CV6QCeos.js} +15 -15
- package/dist/MobileMenuManagement-CV6QCeos.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-Ltm529jG.js → MobileTypeEventConfigModal-BNjZ8pnq.js} +2 -2
- package/dist/{MobileTypeEventConfigModal-Ltm529jG.js.map → MobileTypeEventConfigModal-BNjZ8pnq.js.map} +1 -1
- package/dist/{NewServerManagement-5YcAtF-g.js → NewServerManagement-Cxe0dV0O.js} +5 -5
- package/dist/NewServerManagement-Cxe0dV0O.js.map +1 -0
- package/dist/{NotificationList-CUZSWp2J.js → NotificationList-D1U1LYnz.js} +140 -139
- package/dist/NotificationList-D1U1LYnz.js.map +1 -0
- package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js → OtherTypeEventConfigModal-DiVhWDpG.js} +43 -43
- package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js.map → OtherTypeEventConfigModal-DiVhWDpG.js.map} +1 -1
- package/dist/{QueryBuilder-DXexUIe8.js → QueryBuilder-DI0wCJbz.js} +85 -84
- package/dist/QueryBuilder-DI0wCJbz.js.map +1 -0
- package/dist/{QueryManagement-DGHV_-d5.js → QueryManagement-CRykYGum.js} +3 -3
- package/dist/QueryManagement-CRykYGum.js.map +1 -0
- package/dist/{RoleManagement-BThAL5LO.js → RoleManagement-Cg8-EiVr.js} +83 -82
- package/dist/RoleManagement-Cg8-EiVr.js.map +1 -0
- package/dist/SecurityAuditLogList-Dod711KT.js +874 -0
- package/dist/SecurityAuditLogList-Dod711KT.js.map +1 -0
- package/dist/{ShowFlywayQuery-BkyA6QaA.js → ShowFlywayQuery-tj42YQAS.js} +33 -33
- package/dist/ShowFlywayQuery-tj42YQAS.js.map +1 -0
- package/dist/{SubMenu-BGznOP2a.js → SubMenu-CM_4wNCR.js} +2 -2
- package/dist/{SubMenu-BGznOP2a.js.map → SubMenu-CM_4wNCR.js.map} +1 -1
- package/dist/{TableDetails-DztbjsIA.js → TableDetails-Cf_YfnY2.js} +235 -235
- package/dist/TableDetails-Cf_YfnY2.js.map +1 -0
- package/dist/{TableList-DYwotUDO.js → TableList-HGbEN4bv.js} +28 -28
- package/dist/TableList-HGbEN4bv.js.map +1 -0
- package/dist/{TypeConfiguration-DYbBG_hZ.js → TypeConfiguration-CupQxH9Y.js} +28 -28
- package/dist/TypeConfiguration-CupQxH9Y.js.map +1 -0
- package/dist/{UserList-BAeAFeXZ.js → UserList-BzHsbYel.js} +423 -423
- package/dist/UserList-BzHsbYel.js.map +1 -0
- package/dist/{WidgetList-D-fIf3N2.js → WidgetList-B7X8Awkg.js} +2 -2
- package/dist/{WidgetList-D-fIf3N2.js.map → WidgetList-B7X8Awkg.js.map} +1 -1
- package/dist/index-D9YNFPn9.js +1439 -0
- package/dist/index-D9YNFPn9.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +102 -100
- package/dist/index.js.map +1 -1
- package/dist/{index-BFznsakV.js → pdfmake-Cf-381ou.js} +13951 -15385
- package/dist/pdfmake-Cf-381ou.js.map +1 -0
- package/package.json +1 -1
- package/dist/AddEditQueryBuilder-Bcjl5mXE.js.map +0 -1
- package/dist/AddMenuConfiguration-QWfpcnuP.js.map +0 -1
- package/dist/AddRoleDrawer-SvntLdRu.js.map +0 -1
- package/dist/ChangePasswordModalCore-ClND1mel.js +0 -181
- package/dist/ChangePasswordModalCore-ClND1mel.js.map +0 -1
- package/dist/EventsSkeleton-DCXwwPbb.js +0 -76
- package/dist/EventsSkeleton-DCXwwPbb.js.map +0 -1
- package/dist/Features-Cpf1PDx0.js +0 -13
- package/dist/Features-Cpf1PDx0.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-BqPTExSk.js +0 -5653
- package/dist/ImmunizationConfigurationBase-BqPTExSk.js.map +0 -1
- package/dist/ManageEventConfiguration-0YBDaxOI.js.map +0 -1
- package/dist/ManageRole-Cbs9dUhc.js.map +0 -1
- package/dist/MobileMenuManagement-BmrO-7MN.js.map +0 -1
- package/dist/NewServerManagement-5YcAtF-g.js.map +0 -1
- package/dist/NotificationList-CUZSWp2J.js.map +0 -1
- package/dist/QueryBuilder-DXexUIe8.js.map +0 -1
- package/dist/QueryManagement-DGHV_-d5.js.map +0 -1
- package/dist/RoleManagement-BThAL5LO.js.map +0 -1
- package/dist/SecurityAuditLogList-DHTcOtbx.js +0 -748
- package/dist/SecurityAuditLogList-DHTcOtbx.js.map +0 -1
- package/dist/ShowFlywayQuery-BkyA6QaA.js.map +0 -1
- package/dist/TableDetails-DztbjsIA.js.map +0 -1
- package/dist/TableList-DYwotUDO.js.map +0 -1
- package/dist/TypeConfiguration-DYbBG_hZ.js.map +0 -1
- package/dist/UserList-BAeAFeXZ.js.map +0 -1
- package/dist/index-BFznsakV.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityAuditLogList-Dod711KT.js","sources":["../src/views/SecurityAuditLog/SecurityAuditLogFilterForm.jsx","../src/views/SecurityAuditLog/SecurityAuditLogList.jsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n TextField,\n InputLabel,\n alpha,\n Tooltip,\n useTheme,\n Typography,\n} from \"@mui/material\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSearch, faInfoCircle, faCalendar } from \"@fortawesome/free-solid-svg-icons\";\nimport { DateRange } from \"react-date-range\";\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\nexport default function SecurityAuditLogFilterForm({\n filter,\n setFilter,\n handleOverlayState,\n}) {\n const { translate } = useTranslateProvider();\n const theme = useTheme();\n const isDark = theme.palette.mode === \"dark\";\n const [localFilter, setLocalFilter] = useState(filter);\n const [showCalendar, setShowCalendar] = useState(false);\n\n const [dateRange, setDateRange] = useState([\n {\n startDate: filter.startTime ? new Date(filter.startTime) : new Date(),\n endDate: filter.endTime ? new Date(filter.endTime) : new Date(),\n key: 'selection'\n }\n ]);\n\n useEffect(() => {\n setLocalFilter(filter);\n setDateRange([\n {\n startDate: filter.startTime ? new Date(filter.startTime) : new Date(),\n endDate: filter.endTime ? new Date(filter.endTime) : new Date(),\n key: 'selection'\n }\n ]);\n }, [filter]);\n\n const handleDateChange = (ranges) => {\n const { selection } = ranges;\n setDateRange([selection]);\n \n const startStr = selection.startDate ? formatDate(selection.startDate) : null;\n const endStr = selection.endDate ? formatDate(selection.endDate) : null;\n \n setLocalFilter(prev => ({\n ...prev,\n startTime: startStr,\n endTime: endStr\n }));\n };\n\n const formatDate = (date) => {\n if (!date) return null;\n const d = new Date(date);\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;\n };\n\n const getDisplayRange = () => {\n if (!localFilter.startTime && !localFilter.endTime) return \"Select date range\";\n const start = localFilter.startTime ? new Date(localFilter.startTime).toLocaleDateString() : \"\";\n const end = localFilter.endTime ? new Date(localFilter.endTime).toLocaleDateString() : \"\";\n return `${start} - ${end}`;\n };\n\n const handleInputChange = (field, value) => {\n setLocalFilter((prev) => ({ ...prev, [field]: value }));\n };\n\n const applyFilters = () => {\n setFilter(localFilter);\n handleOverlayState(); \n };\n\n const textFieldStyles = {\n \"& .MuiInputLabel-root\": {\n color: theme.palette.text.secondary, \n fontSize: \"0.85rem\",\n fontWeight: 500,\n transform: \"translate(0, -1.5px) scale(1)\", \n \"&.Mui-focused\": { color: theme.palette.primary.main },\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: alpha(theme.palette.text.primary, 0.05),\n borderRadius: \"12px\",\n color: theme.palette.text.primary,\n marginTop: \"20px\",\n \"& fieldset\": { \n borderColor: alpha(theme.palette.text.primary, 0.1),\n borderRadius: \"12px\",\n },\n \"&:hover fieldset\": { borderColor: alpha(theme.palette.text.primary, 0.3) },\n \"&.Mui-focused fieldset\": { borderColor: theme.palette.primary.main, borderWidth: \"2px\" },\n },\n \"& .MuiInputBase-input\": {\n padding: \"10px 14px\",\n colorScheme: isDark ? \"dark\" : \"light\",\n }\n };\n\n return (\n <Box className=\"flex flex-col gap-6 p-6\">\n <Box className=\"flex flex-col gap-1.5 pt-1\">\n <Typography variant=\"caption\" sx={{ color: theme.palette.text.secondary, fontWeight: 500, fontSize: \"0.85rem\", transform: \"translate(0, -1.5px)\" }}>\n {translate(\"Date Range\")}\n </Typography>\n <Box \n onClick={() => setShowCalendar(!showCalendar)}\n className=\"flex items-center justify-between gap-2 px-3 py-2.5 rounded-xl cursor-pointer transition-all\" \n sx={{ \n backgroundColor: alpha(theme.palette.text.primary, 0.05), \n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n \"&:hover\": { borderColor: alpha(theme.palette.text.primary, 0.3) }\n }}\n >\n <Typography variant=\"body2\" sx={{ color: theme.palette.text.primary, fontSize: '0.875rem' }}>\n {getDisplayRange()}\n </Typography>\n <FontAwesomeIcon icon={faCalendar} className=\"opacity-50 text-sm\" />\n </Box>\n {showCalendar && (\n <Box \n className=\"mt-2 p-2 rounded-xl flex justify-center overflow-hidden border\"\n sx={{ \n backgroundColor: theme.palette.background.paper,\n borderColor: alpha(theme.palette.text.primary, 0.1),\n \"& .rdrCalendarWrapper\": {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n },\n \"& .rdrDateDisplayWrapper\": {\n backgroundColor: alpha(theme.palette.text.primary, 0.05),\n },\n \"& .rdrMonthAndYearWrapper\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrMonthName\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrDayNumber span\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrDayDisabled\": {\n backgroundColor: 'transparent',\n \"& .rdrDayNumber span\": {\n color: alpha(theme.palette.text.primary, 0.25),\n }\n },\n \"& .rdrDayPassive\": {\n \"& .rdrDayNumber span\": {\n color: alpha(theme.palette.text.primary, 0.3),\n }\n }\n }}\n >\n <DateRange\n editableDateInputs={false}\n onChange={handleDateChange}\n moveRangeOnFirstSelection={false}\n ranges={dateRange}\n rangeColors={[theme.palette.primary.main]}\n />\n </Box>\n )}\n </Box>\n\n <Box className=\"flex flex-col gap-4 pt-2\">\n <TextField\n label={translate(\"User ID\")}\n placeholder={translate(\"e.g. 101\")}\n value={localFilter.userId || \"\"}\n onChange={(e) => handleInputChange(\"userId\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"IP Address\")}\n placeholder=\"192.168.1.1\"\n value={localFilter.ip || \"\"}\n onChange={(e) => handleInputChange(\"ip\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Session ID\")}\n placeholder={translate(\"e.g. E561890...\")}\n value={localFilter.sessionId || \"\"}\n onChange={(e) => handleInputChange(\"sessionId\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Event Type\")}\n placeholder=\"LOGIN_SUCCESS\"\n value={localFilter.eventType || \"\"}\n onChange={(e) => handleInputChange(\"eventType\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Resource Path\")}\n placeholder=\"/api/v1/...\"\n value={localFilter.resource || \"\"}\n onChange={(e) => handleInputChange(\"resource\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n </Box>\n\n <Box className=\"flex justify-stretch mt-4\">\n <Button \n variant=\"contained\" \n onClick={applyFilters} \n fullWidth\n startIcon={<FontAwesomeIcon icon={faSearch} />}\n sx={{ \n backgroundColor: theme.palette.primary.main, \n height: '45px',\n borderRadius: '12px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n letterSpacing: '1px',\n '&:hover': { backgroundColor: theme.palette.primary.dark } \n }}\n >\n {translate(\"Apply Filters\")}\n </Button>\n </Box>\n </Box>\n );\n}\n","import { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { showToast } from \"@/common/toaster/toaster.jsx\";\nimport usePagination from \"@/hooks/usePagination.js\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport SideOverlay from \"@/views/custom-components/SideOverlay.jsx\";\nimport SecurityAuditLogFilterForm from \"./SecurityAuditLogFilterForm.jsx\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport { execute } from \"@/common/services/GlobalApis\";\n\nimport {\n faEye,\n faFileExcel,\n faFilePdf,\n faSync,\n faChartLine,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n Box,\n Button,\n CircularProgress,\n Dialog,\n DialogContent,\n DialogTitle,\n TextField,\n Typography,\n Tooltip,\n IconButton,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { saveAs } from \"file-saver\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport * as XLSX from \"xlsx-js-style\";\nimport pdfMake from 'pdfmake/build/pdfmake';\nimport vfs from '@/assets/fonts/vfs_fonts';\nimport dayjs from \"dayjs\";\nimport moment from \"moment\";\n\nconst isGujarati = (text) => /[\\u0A80-\\u0AFF]/.test(text);\n\nexport default function SecurityAuditLogList() {\n const getTimeAgo = (timestamp) => {\n if (!timestamp) return 'N/A';\n const now = moment();\n const past = moment(timestamp);\n const duration = moment.duration(now.diff(past));\n const years = duration.years();\n const months = duration.months();\n const days = duration.days();\n const hours = duration.hours();\n const minutes = duration.minutes();\n const seconds = duration.seconds();\n if (years > 0) return `${years} year${years > 1 ? 's' : ''} ago`;\n if (months > 0) return `${months} month${months > 1 ? 's' : ''} ago`;\n if (days > 0) return `${days} day${days > 1 ? 's' : ''} ago`;\n let result = [];\n if (hours > 0) result.push(`${hours} hour${hours > 1 ? 's' : ''}`);\n if (minutes > 0) result.push(`${minutes} minute${minutes > 1 ? 's' : ''}`);\n if (seconds > 0 && hours === 0) result.push(`${seconds} second${seconds > 1 ? 's' : ''}`);\n if (result.length === 0) return 'Just now';\n return result.join(' ') + ' ago';\n };\n\n const trackEvent = useTrackEvent();\n const theme = useTheme();\n const isDark = theme.palette.mode === \"dark\";\n const [refreshToggle, setRefreshToggle] = useState(false);\n\n const [search, setSearch] = useState(\"\");\n const [debounceSearch, setDebounceSearch] = useState(\"\");\n const [logsData, setLogsData] = useState([]);\n const [hasMore, setHasMore] = useState(true);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [sortConfig, setSortConfig] = useState({\n sortColumn: \"timestamp\",\n sortOrder: \"desc\",\n });\n const [filter, setFilter] = useState({\n startTime: null,\n endTime: null,\n userId: null,\n username: null,\n ip: null,\n sessionId: null,\n eventType: null,\n resource: null,\n });\n\n const pageSize = 50;\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n\n const [detailsModalOpen, setDetailsModalOpen] = useState(false);\n const [selectedRow, setSelectedRow] = useState(null);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebounceSearch(search);\n }, 1000);\n return () => clearTimeout(timer);\n }, [search]);\n\n const columns = useMemo(\n () => [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n {\n field: \"timestamp\",\n label: \"Time\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"timestamp\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Tooltip title={getTimeAgo(row?.timestamp)} arrow placement=\"top\">\n <Box className=\"flex items-center h-full cursor-pointer\">\n {dayjs(row?.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\")}\n </Box>\n </Tooltip>\n ),\n },\n {\n field: \"session_id\",\n label: \"Session ID\".toUpperCase(),\n align: \"left\",\n render: (row) => (\n <Typography variant=\"caption\" className=\"font-mono opacity-70\">\n {row?.session_id || \"N/A\"}\n </Typography>\n ),\n },\n {\n field: \"user_id\",\n label: \"User ID\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"user_id\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Typography variant=\"body2\" className=\"font-bold\" sx={{ color: theme.palette.text.primary }}>\n {row?.user_id || 'System'}\n </Typography>\n )\n },\n {\n field: \"resource\",\n label: \"Resource\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"resource\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Box className=\"max-w-xs truncate font-mono text-[0.7rem] opacity-80\" title={row?.resource}>\n {row?.resource || 'N/A'}\n </Box>\n ),\n },\n {\n field: \"Actions\",\n label: \"View Details\".toUpperCase(),\n align: \"center\",\n },\n ],\n [sortConfig]\n );\n\n const getActions = useCallback(\n (row) => {\n return [\n {\n label: \"\",\n icon: <FontAwesomeIcon icon={faEye} size=\"lg\" title=\"View Event Details\" />,\n onClick: () => {\n setSelectedRow(row);\n setDetailsModalOpen(true);\n },\n iconColor: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n hoverBackgroundColor: theme.palette.primary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.primary.main,\n },\n {\n label: \"Trace Detailed Session Logs\",\n icon: <FontAwesomeIcon icon={faChartLine} size=\"lg\" title=\"Filter Activity Analytics by this Session ID\" />,\n onClick: () => {\n if (row.session_id) {\n const baseUrl = window.location.origin + window.location.pathname.split('/medplat/')[0];\n let attrs = {};\n try { if (row.attributes) attrs = JSON.parse(row.attributes); } catch(e) {}\n if (row.user_id) attrs.user_id = row.user_id;\n const attrsEncoded = `&attributes=${encodeURIComponent(JSON.stringify(attrs))}`;\n const url = `${baseUrl}/medplat/manage/activityAnalytics?sessionId=${row.session_id}${attrsEncoded}`;\n window.open(url, \"_blank\");\n } else {\n showToast({ message: \"No Session ID available for this log\", type: \"warning\" });\n }\n },\n iconColor: theme.palette.secondary.main,\n backgroundColor: alpha(theme.palette.secondary.main, 0.1),\n hoverBackgroundColor: theme.palette.secondary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.secondary.main,\n },\n ];\n },\n [theme]\n );\n\n const handleSort = async (column) => {\n const newOrder =\n sortConfig.sortColumn === column.field && sortConfig.sortOrder === \"asc\"\n ? \"desc\"\n : \"asc\";\n setSortConfig({ sortColumn: column.field, sortOrder: newOrder });\n };\n\n const handleOverlayState = () => {\n setOverlayOpen(!overlayOpen);\n };\n\n const resetFilter = () => {\n setFilter({\n startTime: null,\n endTime: null,\n userId: null,\n username: null,\n ip: null,\n sessionId: null,\n eventType: null,\n resource: null,\n });\n setSearch(\"\");\n setOverlayOpen(false);\n };\n\n async function loadMoreData(pageParam, initialLoad) {\n try {\n initialLoad && setIsLoading(true);\n\n const params = {\n limit: pageParam.limit,\n offset: pageParam.offset,\n userId: filter.userId || null,\n ip: filter.ip || null,\n sessionId: filter.sessionId || null,\n eventType: filter.eventType || null,\n resource: filter.resource || null,\n startTime: filter.startTime ? dayjs(filter.startTime).startOf('day').valueOf() : null,\n endTime: filter.endTime ? dayjs(filter.endTime).endOf('day').valueOf() : null,\n sortBy: sortConfig.sortColumn,\n sortOrder: sortConfig.sortOrder,\n };\n\n const response = await execute(\n {\n code: \"GET_SECURITY_AUDIT_LOGS\",\n parameters: params,\n },\n { showLoader: false }\n );\n \n const results = response?.data?.result || [];\n const parsedResults = results.map(row => {\n let parsedAttrs = null;\n if (row.attributes) {\n try { parsedAttrs = JSON.parse(row.attributes); } catch(e) {}\n }\n return { ...row, parsedAttributes: parsedAttrs };\n });\n\n initialLoad && setIsLoading(false);\n return parsedResults;\n } catch (error) {\n showToast({ message: `Error fetching logs: ${error.message}`, type: \"error\" });\n setIsLoading(false);\n return [];\n }\n }\n\n const {\n data: pageData,\n fetchNextPage,\n hasNextPage,\n } = usePagination({\n key: [\n \"security_audit_logs\",\n debounceSearch,\n sortConfig.sortOrder,\n sortConfig.sortColumn,\n filter,\n refreshToggle,\n ],\n queryFn: ({ pageParam }) => {\n const isInitial = !pageParam?.offset || pageParam?.offset === 0;\n return loadMoreData(pageParam, isInitial);\n },\n limit: pageSize,\n });\n\n useEffect(() => {\n const allLogs = pageData?.pages?.flat() || [];\n setHasMore(allLogs.length > 0 ? hasNextPage : false);\n setLogsData(allLogs);\n }, [pageData, hasNextPage]);\n\n // Excel Logic\n const [disableExcel, setDisableExcel] = useState(false);\n const downloadExcelData = async () => {\n try {\n if (logsData.length === 0) {\n showToast({ message: \"No data to export\", type: \"warning\" });\n return;\n }\n setDisableExcel(true);\n\n const wsData = [\n [\"SECURITY AUDIT LOGS REPORT\"],\n [`Server Instance: ${window.location.hostname || \"NA\"}`],\n [], // blank spacer row\n // Table Headers\n [\n \"No.\",\n \"TIME\",\n \"EVENT CATEGORY\",\n \"EVENT TYPE\",\n \"SEVERITY\",\n \"USER ID\",\n \"USERNAME\",\n \"NAME\",\n \"ROLE ID\",\n \"IP ADDRESS\",\n \"SESSION ID\",\n \"HTTP METHOD\",\n \"RESOURCE\",\n \"RESPONSE CODE\",\n \"USER AGENT\"\n ]\n ];\n\n logsData.forEach((log, index) => {\n wsData.push([\n index + 1,\n dayjs(log?.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\"),\n log?.event_category || \"NA\",\n log?.event_type || \"NA\",\n log?.severity || \"NA\",\n log?.user_id || \"NA\",\n log?.parsedAttributes?.user_name || \"NA\",\n log?.parsedAttributes?.name || \"NA\",\n log?.parsedAttributes?.role_id || \"NA\",\n log?.parsedAttributes?.ip || log?.ip_address || \"NA\",\n log?.session_id || \"NA\",\n log?.http_method || \"NA\",\n log?.resource || \"NA\",\n log?.response_code || \"NA\",\n log?.parsedAttributes?.user_agent || log?.user_agent || \"NA\"\n ]);\n });\n\n const worksheet = XLSX.utils.aoa_to_sheet(wsData);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Logs\");\n \n const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });\n\n function s2ab(s) {\n const buf = new ArrayBuffer(s.length);\n const view = new Uint8Array(buf);\n for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n return buf;\n }\n\n saveAs(new Blob([s2ab(wbout)], { type: \"application/octet-stream\" }), `SecurityAuditLogs-${new Date().getTime()}.xlsx`);\n setDisableExcel(false);\n } catch (error) {\n setDisableExcel(false);\n showToast({ message: \"Error in downloading excel\", type: \"error\" });\n }\n };\n\n // PDF Logic\n const [disablePdf, setDisablePdf] = useState(false);\n const handleDownloadPdf = async () => {\n try {\n if (logsData.length === 0) {\n showToast({ message: \"No data to export\", type: \"warning\" });\n return;\n }\n setDisablePdf(true);\n \n const formatLongString = (str, interval = 10) => {\n if (!str) return \"NA\";\n return str.match(new RegExp(`.{1,${interval}}`, 'g'))?.join('\\u200B') || str;\n };\n\n const pdfColumns = [\"S.No\", \"TIME\", \"CATEGORY\", \"TYPE\", \"USER ID\", \"USERNAME\", \"IP\", \"STATUS\", \"METHOD\", \"URI\"];\n \n const rows = logsData.map((log, index) => {\n const timeStr = dayjs(log.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\");\n const category = log.event_category || \"NA\";\n const type = formatLongString(log.event_type || \"NA\", 15);\n const userId = log.user_id || \"NA\";\n const username = formatLongString(log.parsedAttributes?.user_name || \"NA\", 12);\n const ip = formatLongString(log.parsedAttributes?.ip || log.ip_address || \"NA\", 15);\n const status = log.response_code || \"NA\";\n const method = log.http_method || \"NA\";\n const uri = formatLongString(log.resource || \"NA\", 10);\n\n return [\n { text: index + 1, fontSize: 8, font: 'Roboto' },\n { text: timeStr, fontSize: 8, font: 'Roboto' },\n { text: category, fontSize: 8, font: isGujarati(category) ? 'MuktaVaani' : 'Roboto' },\n { text: type, fontSize: 8, font: isGujarati(type) ? 'MuktaVaani' : 'Roboto' },\n { text: userId, fontSize: 8, font: isGujarati(userId) ? 'MuktaVaani' : 'Roboto' },\n { text: username, fontSize: 8, font: isGujarati(username) ? 'MuktaVaani' : 'Roboto' },\n { text: ip, fontSize: 8, font: 'Roboto' },\n { text: status, fontSize: 8, font: 'Roboto' },\n { text: method, fontSize: 8, font: 'Roboto' },\n { text: uri, fontSize: 8, font: isGujarati(uri) ? 'MuktaVaani' : 'Roboto' },\n ];\n });\n\n pdfMake.vfs = { ...vfs, ...pdfMake.vfs };\n pdfMake.addFonts({\n Roboto: {\n normal: 'Roboto-Regular.ttf',\n bold: 'Roboto-Medium.ttf',\n italics: 'Roboto-Regular.ttf',\n bolditalics: 'Roboto-Regular.ttf',\n },\n MuktaVaani: {\n normal: 'MuktaVaani-Regular.ttf',\n bold: 'MuktaVaani-Regular.ttf',\n italics: 'MuktaVaani-Regular.ttf',\n bolditalics: 'MuktaVaani-Regular.ttf',\n },\n });\n\n const titleLines = [\n \"SECURITY AUDIT LOGS REPORT\",\n `Server Instance: ${window.location.hostname || \"NA\"}`\n ];\n\n const docDefinition = {\n pageOrientation: \"landscape\",\n content: [\n ...titleLines.map(line => ({\n text: line,\n font: isGujarati(line) ? 'MuktaVaani' : 'Roboto',\n alignment: 'center',\n fontSize: 12,\n bold: true,\n margin: [0, 2],\n })),\n {\n table: {\n headerRows: 1,\n widths: [25, 110, 70, 80, 45, 75, 75, 40, 45, '*'],\n body: [\n pdfColumns.map((col) => ({\n text: col,\n fillColor: '#243a50',\n color: '#ffffff',\n bold: true,\n fontSize: 8.5,\n font: isGujarati(col) ? 'MuktaVaani' : 'Roboto',\n })),\n ...rows,\n ],\n },\n layout: {\n fillColor: (rowIndex) => (rowIndex === 0 ? '#243a50' : null),\n hLineWidth: () => 0.1,\n vLineWidth: () => 0.1,\n },\n margin: [0, 8],\n },\n ],\n footer: (currentPage, pageCount) => ({\n text: `Page ${currentPage} of ${pageCount} | Audit Log Report`,\n alignment: 'left',\n margin: [14, 0],\n fontSize: 7,\n font: 'Roboto',\n }),\n header: {\n text: \"Security Audit Logs\",\n alignment: 'left',\n margin: [14, 8],\n fontSize: 8,\n font: 'Roboto',\n },\n defaultStyle: {\n font: 'MuktaVaani',\n },\n };\n\n pdfMake.createPdf(docDefinition).download(`AuditLogs-${new Date().getTime()}.pdf`);\n setDisablePdf(false);\n } catch (error) {\n setDisablePdf(false);\n console.error(error);\n showToast({ message: \"Error in downloading pdf\", type: \"error\" });\n }\n };\n\n const handleDownloadRowPdf = (row) => {\n if (!row) return;\n \n const formatLongString = (str, interval = 15) => {\n if (!str) return 'N/A';\n return str.match(new RegExp(`.{1,${interval}}`, 'g'))?.join('\\u200B') || str;\n };\n\n const details = [\n { label: 'User ID', value: String(row.user_id || 'N/A') },\n { label: 'Username', value: formatLongString(row.parsedAttributes?.user_name || 'N/A', 15) },\n { label: 'Name', value: formatLongString(row.parsedAttributes?.name || 'N/A', 15) },\n { label: 'Role ID', value: String(row.parsedAttributes?.role_id || 'N/A') },\n { label: 'Role Name', value: String(row.parsedAttributes?.role_name || 'N/A') },\n { label: 'Role Code', value: String(row.parsedAttributes?.role_code || 'N/A') },\n { label: 'Event Timestamp', value: dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\") },\n { label: 'Event Category', value: String(row.event_category || 'N/A') },\n { label: 'Event Type', value: formatLongString(row.event_type || 'N/A', 15) },\n { label: 'Severity', value: String(row.severity || 'N/A') },\n { label: 'IP Address', value: String(row.parsedAttributes?.ip || row.ip_address || 'N/A') },\n { label: 'Session ID', value: formatLongString(row.session_id || 'N/A', 15) },\n { label: 'HTTP Method', value: String(row.http_method || 'N/A') },\n { label: 'Request URI', value: formatLongString(row.resource || 'N/A', 15) },\n { label: 'Response Code', value: String(row.response_code || 'N/A') },\n { label: 'Server Instance', value: String(window.location.hostname || 'N/A') },\n { label: 'User Agent', value: formatLongString(row.parsedAttributes?.user_agent || row.user_agent || 'N/A', 15) },\n ];\n\n const rows = details.map((item, index) => {\n const label = item.label;\n const value = item.value;\n return [\n { text: index + 1, fontSize: 9, font: 'Roboto' },\n { text: label, fontSize: 9, font: isGujarati(label) ? 'MuktaVaani' : 'Roboto', bold: true },\n { text: value, fontSize: 9, font: isGujarati(value) ? 'MuktaVaani' : 'Roboto' },\n ];\n });\n\n pdfMake.vfs = { ...vfs, ...pdfMake.vfs };\n pdfMake.addFonts({\n Roboto: {\n normal: 'Roboto-Regular.ttf',\n bold: 'Roboto-Medium.ttf',\n italics: 'Roboto-Regular.ttf',\n bolditalics: 'Roboto-Regular.ttf',\n },\n MuktaVaani: {\n normal: 'MuktaVaani-Regular.ttf',\n bold: 'MuktaVaani-Regular.ttf',\n italics: 'MuktaVaani-Regular.ttf',\n bolditalics: 'MuktaVaani-Regular.ttf',\n },\n });\n\n const headerText = `Security Audit Log - Entry #${row.id || ''}`;\n const footerText = `Generated on ${new Date().toLocaleString()}`;\n\n const docDefinition = {\n pageOrientation: \"portrait\",\n content: [\n {\n table: {\n headerRows: 1,\n widths: [30, 120, '*'],\n body: [\n [\"S.No\", \"Field\", \"Value\"].map((col) => ({\n text: col,\n fillColor: '#243a50',\n color: '#ffffff',\n bold: true,\n fontSize: 9.5,\n font: isGujarati(col) ? 'MuktaVaani' : 'Roboto',\n })),\n ...rows,\n ],\n },\n layout: {\n fillColor: (rowIndex) => (rowIndex === 0 ? '#243a50' : null),\n hLineWidth: () => 0.1,\n vLineWidth: () => 0.1,\n },\n margin: [0, 10],\n },\n ],\n footer: (currentPage, pageCount) => ({\n text: `Page ${currentPage} of ${pageCount} | ${footerText}`,\n alignment: 'left',\n margin: [14, 0],\n fontSize: 7.5,\n font: 'Roboto',\n }),\n header: {\n text: headerText,\n alignment: 'left',\n margin: [14, 8],\n fontSize: 8.5,\n font: 'Roboto',\n },\n defaultStyle: {\n font: 'MuktaVaani',\n },\n };\n\n pdfMake.createPdf(docDefinition).download(`AuditLog_Detail_${row.id || new Date().getTime()}.pdf`);\n };\n\n const renderDetails = (row) => {\n if (!row) return null;\n \n const fields = [\n { label: 'Event Timestamp', value: dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\"), key: 'timestamp' },\n { label: 'Event Category', value: row.event_category, key: 'event_category' },\n { label: 'Event Type', value: row.event_type, key: 'event_type' },\n { label: 'Severity', value: row.severity, key: 'severity' },\n { label: 'User ID', value: row.user_id, key: 'user_id' },\n { label: 'Username', value: row.parsedAttributes?.user_name, key: 'username' },\n { label: 'Name', value: row.parsedAttributes?.name, key: 'name' },\n { label: 'Role ID', value: row.parsedAttributes?.role_id, key: 'role_id' },\n { label: 'Role Name', value: row.parsedAttributes?.role_name, key: 'role_name' },\n { label: 'Role Code', value: row.parsedAttributes?.role_code, key: 'role_code' },\n { label: 'IP Address', value: row.parsedAttributes?.ip || row.ip_address || 'N/A', key: 'ip_address' },\n { label: 'Session ID', value: row.session_id || 'N/A', key: 'session_id' },\n { label: 'HTTP Method', value: row.http_method, key: 'http_method' },\n { label: 'Resource', value: row.resource, key: 'resource' },\n { label: 'Response Code', value: row.response_code, key: 'response_code' },\n ];\n\n const formatDetails = (val) => {\n if (!val) return 'N/A';\n try {\n return JSON.stringify(typeof val === 'string' ? JSON.parse(val) : val, null, 2);\n } catch(e) {\n return String(val);\n }\n }\n\n return (\n <Grid container spacing={2}>\n <Grid size={6}>\n <DetailItem label=\"Event Category\" value={row.event_category} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Event Type\" value={row.event_type} />\n </Grid>\n \n <Grid size={6}>\n <DetailItem label=\"User ID\" value={row.user_id} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Username\" value={row.parsedAttributes?.user_name || 'N/A'} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Name\" value={row.parsedAttributes?.name || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Role ID\" value={row.parsedAttributes?.role_id || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Role Name\" value={row.parsedAttributes?.role_name || 'N/A'} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Role Code\" value={row.parsedAttributes?.role_code || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"HTTP Method\" value={row.http_method} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Resource\" value={row.resource} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Response Code\" value={row.response_code} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Severity\" value={row.severity} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"IP Address\" value={row.parsedAttributes?.ip || row.ip_address || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Timestamp\" value={dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\")} />\n </Grid>\n\n <Grid size={12}>\n <DetailItem label=\"Session ID\" value={row.session_id || 'N/A'} />\n </Grid>\n <Grid size={12}>\n <DetailItem label=\"User Agent\" value={row.parsedAttributes?.user_agent || row.user_agent || 'N/A'} />\n </Grid>\n </Grid>\n );\n };\n\n const DetailItem = ({ label, value, isCode }) => (\n <Box sx={{ mb: 1, borderBottom: `1px solid ${theme.palette.divider}`, pb: 0.5 }}>\n <Typography variant=\"caption\" sx={{ color: theme.palette.text.secondary, textTransform: 'uppercase', fontWeight: 'bold', fontSize: '0.65rem' }}>\n {label}\n </Typography>\n <Typography \n variant=\"body2\" \n sx={{ \n color: theme.palette.text.primary, \n wordBreak: 'break-word', \n whiteSpace: isCode ? 'pre-wrap' : 'normal',\n fontFamily: isCode ? 'monospace' : 'inherit',\n fontSize: isCode ? '0.75rem' : '0.875rem'\n }}\n >\n {String(value || 'N/A')}\n </Typography>\n </Box>\n );\n\n return (\n <Grid className=\"w-[98%] mt-4\">\n <Grid\n container\n spacing={2}\n className=\"mb-4 justify-between items-center\"\n >\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n variant=\"h6\"\n sx={{ fontWeight: 'bold', color: theme.palette.primary.main, textTransform: 'uppercase' }}\n >\n {translate(\"Security Audit Logs\")}\n </Typography>\n </Grid>\n\n <Grid size={{ xs: 12, md: 8 }} className=\"flex flex-col md:flex-row gap-3 justify-end items-center\">\n <div className=\"flex items-center gap-3 w-full md:w-auto\">\n <IconButton\n color=\"primary\"\n onClick={() => setRefreshToggle(prev => !prev)}\n className=\"rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm\"\n sx={{\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n width: 40,\n height: 40,\n '&:hover': { backgroundColor: theme.palette.primary.main, color: 'white' }\n }}\n >\n <FontAwesomeIcon icon={faSync} className=\"text-sm\" />\n </IconButton>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className={`flex items-center rounded-2xl p-1 shadow-sm transition-all border ${\n isDark ? \"bg-slate-900 border-slate-800\" : \"bg-white border-slate-200\"\n }`}>\n <button\n disabled={disablePdf || isLoading}\n onClick={handleDownloadPdf}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ${\n isDark ? \"text-slate-400 hover:text-slate-100 hover:bg-slate-800\" : \"text-slate-600 hover:text-red-600 hover:bg-slate-50\"\n }`}\n >\n {disablePdf ? <CircularProgress size={14} sx={{ color: \"inherit\" }} /> : <FontAwesomeIcon icon={faFilePdf} />}\n Pdf\n </button>\n\n <button\n disabled={disableExcel || isLoading}\n onClick={downloadExcelData}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ml-1 ${\n isDark ? \"bg-slate-800 text-slate-100 hover:bg-slate-700\" : \"bg-[var(--color-tableHeader)] text-white hover:bg-[var(--color-tableHeader)]\"\n }`}\n >\n {disableExcel ? <CircularProgress size={14} sx={{ color: \"inherit\" }} /> : <FontAwesomeIcon icon={faFileExcel} />}\n Excel Data\n </button>\n </div>\n </div>\n </Grid>\n </Grid>\n\n <CustomizedTable\n columns={columns}\n tableData={logsData}\n actions={getActions}\n paginationConfig={{\n pagination: true,\n paginationType: \"infinite-scroll\",\n rowsPerPageInTable: pageSize,\n hasMore,\n loadMore: () => hasMore && fetchNextPage({ cancelRefetch: false }),\n }}\n isLoading={isLoading}\n handleSort={handleSort}\n />\n\n <SideOverlay\n title=\"Audit Filter\"\n resetButtonLabel=\"Reset\"\n onResetClick={resetFilter}\n FormBody={SecurityAuditLogFilterForm}\n handleOverlayState={handleOverlayState}\n overlayOpen={overlayOpen}\n dataTestId=\"security-audit-log-filter\"\n ModalProps={{\n sx: {\n '& .MuiDrawer-paper': {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '& .p-2\\\\.5': { \n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${theme.palette.divider}`,\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n letterSpacing: '1px'\n }\n }\n }\n }}\n formProps={{\n filter,\n setFilter,\n handleOverlayState\n }}\n />\n \n <Dialog \n open={detailsModalOpen} \n onClose={() => setDetailsModalOpen(false)} \n maxWidth=\"sm\" \n fullWidth\n PaperProps={{\n sx: {\n backgroundColor: theme.palette.background.paper, \n color: theme.palette.text.primary\n }\n }}\n >\n <DialogTitle sx={{ borderBottom: `1px solid ${theme.palette.divider}`, fontWeight: 'bold', color: theme.palette.primary.main }}>\n Log Entry Details\n </DialogTitle>\n <DialogContent dividers sx={{ borderColor: theme.palette.divider }}>\n <Box className=\"p-2\">\n {renderDetails(selectedRow)}\n </Box>\n </DialogContent>\n <Box sx={{ p: 2, display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\n <Button \n onClick={() => handleDownloadRowPdf(selectedRow)} \n variant=\"outlined\" \n color=\"primary\" \n startIcon={<FontAwesomeIcon icon={faFilePdf} />}\n sx={{ borderRadius: '12px' }}\n >\n Download PDF\n </Button>\n <Button onClick={() => setDetailsModalOpen(false)} variant=\"contained\" color=\"primary\" sx={{ borderRadius: '12px' }}>\n Close\n </Button>\n </Box>\n </Dialog>\n </Grid>\n );\n}\n"],"names":["SecurityAuditLogFilterForm","filter","setFilter","handleOverlayState","translate","useTranslateProvider","theme","useTheme","isDark","localFilter","setLocalFilter","useState","showCalendar","setShowCalendar","dateRange","setDateRange","useEffect","handleDateChange","ranges","selection","startStr","formatDate","endStr","prev","date","d","getDisplayRange","start","end","handleInputChange","field","value","applyFilters","textFieldStyles","alpha","jsxs","Box","jsx","Typography","FontAwesomeIcon","faCalendar","DateRange","TextField","e","Button","faSearch","isGujarati","text","SecurityAuditLogList","getTimeAgo","timestamp","now","moment","past","duration","years","months","days","hours","minutes","seconds","result","useTrackEvent","refreshToggle","setRefreshToggle","search","setSearch","debounceSearch","setDebounceSearch","logsData","setLogsData","hasMore","setHasMore","overlayOpen","setOverlayOpen","sortConfig","setSortConfig","pageSize","isLoading","setIsLoading","detailsModalOpen","setDetailsModalOpen","selectedRow","setSelectedRow","timer","columns","useMemo","row","Tooltip","dayjs","getActions","useCallback","faEye","faChartLine","baseUrl","attrs","attrsEncoded","url","showToast","handleSort","column","newOrder","resetFilter","loadMoreData","pageParam","initialLoad","params","response","execute","parsedResults","_a","parsedAttrs","error","pageData","fetchNextPage","hasNextPage","usePagination","isInitial","allLogs","disableExcel","setDisableExcel","downloadExcelData","s2ab","s","buf","view","i","wsData","log","index","_b","_c","_d","_e","worksheet","XLSX.utils","workbook","wbout","XLSX.write","saveAs","disablePdf","setDisablePdf","handleDownloadPdf","formatLongString","str","interval","pdfColumns","rows","timeStr","category","type","userId","username","ip","status","method","uri","pdfMake","vfs","docDefinition","line","col","rowIndex","currentPage","pageCount","handleDownloadRowPdf","_f","_g","item","label","headerText","footerText","renderDetails","Grid","DetailItem","_h","_i","_j","_k","_l","_m","isCode","IconButton","faSync","CircularProgress","faFilePdf","faFileExcel","CustomizedTable","SideOverlay","Dialog","DialogTitle","DialogContent"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsxs as d, Fragment as q, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslateProvider as
|
|
3
|
-
import { showToast as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { Dialog as
|
|
2
|
+
import { useTranslateProvider as R } from "@/common/languageTranslator/TranslationContext";
|
|
3
|
+
import { showToast as v } from "@/common/toaster/toaster";
|
|
4
|
+
import I from "@/hooks/useTrackEvent";
|
|
5
|
+
import O from "@/views/custom-components/CustomConfirmationModal";
|
|
6
|
+
import { Dialog as S, DialogTitle as D, DialogContent as F, TextField as A, DialogActions as B, Button as c } from "@mui/material";
|
|
7
7
|
import p from "prop-types";
|
|
8
|
-
import { useState as m, useCallback as
|
|
9
|
-
import
|
|
10
|
-
const
|
|
11
|
-
const [n, C] = m(""), [
|
|
8
|
+
import { useState as m, useCallback as M, useEffect as z } from "react";
|
|
9
|
+
import N from "@/common/config/implementationConfig";
|
|
10
|
+
const U = ({ configuredQuery: t, open: b, onClose: s }) => {
|
|
11
|
+
const [n, C] = m(""), [_, T] = m(!1), [E, r] = m(!1), x = I(), { translate: i } = R(), y = N.queryBuilder.showClickhouseOption, w = M(() => {
|
|
12
12
|
const o = t.query.includes("public");
|
|
13
13
|
T(o);
|
|
14
14
|
let e = `DELETE FROM QUERY_MASTER WHERE CODE='${t.code}';
|
|
@@ -23,41 +23,41 @@ VALUES (
|
|
|
23
23
|
`, e += t.description ? `'${t.description}',
|
|
24
24
|
` : `null,
|
|
25
25
|
`, e += t.returnsResultSet !== void 0 ? `${t.returnsResultSet}, ` : "false, ", e += t.state ? `'${t.state}', ` : "'ACTIVE', ", e += ` ${t == null ? void 0 : t.isMobileQuery},`, e += `${t == null ? void 0 : t.isPublic}`, y && (e += `,${t.isClickhouseQuery || !1}`), e += ");", C(e);
|
|
26
|
-
}, [t]),
|
|
26
|
+
}, [t]), $ = () => {
|
|
27
27
|
navigator.clipboard.writeText(n).then(() => {
|
|
28
|
-
|
|
28
|
+
v({ message: "Query Copied", type: "success" }), s();
|
|
29
29
|
});
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
const o = new Blob([n], { type: "text/plain" }), e = (o.size / 1024).toFixed(2),
|
|
34
|
-
l.href =
|
|
30
|
+
}, f = () => {
|
|
31
|
+
u(), r((o) => !o);
|
|
32
|
+
}, u = () => {
|
|
33
|
+
const o = new Blob([n], { type: "text/plain" }), e = (o.size / 1024).toFixed(2), h = URL.createObjectURL(o), l = document.createElement("a");
|
|
34
|
+
l.href = h, l.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_${t.code}.sql`, document.body.appendChild(l), l.click(), x("file_download", {
|
|
35
35
|
file_type: "sql",
|
|
36
36
|
file_name: l.download,
|
|
37
37
|
file_size: `${e} KB`,
|
|
38
38
|
download_status: "success"
|
|
39
|
-
}), document.body.removeChild(l), URL.revokeObjectURL(
|
|
40
|
-
},
|
|
41
|
-
|
|
39
|
+
}), document.body.removeChild(l), URL.revokeObjectURL(h), s();
|
|
40
|
+
}, k = () => {
|
|
41
|
+
_ ? r((o) => !o) : u();
|
|
42
42
|
};
|
|
43
|
-
return
|
|
43
|
+
return z(() => {
|
|
44
44
|
t && w();
|
|
45
45
|
}, [t, w]), /* @__PURE__ */ d(q, { children: [
|
|
46
46
|
/* @__PURE__ */ a(
|
|
47
|
-
|
|
47
|
+
O,
|
|
48
48
|
{
|
|
49
49
|
description: "This Flyway contains keyword 'public'. Are you sure you want to download?",
|
|
50
50
|
title: "CONFIRM ACTION",
|
|
51
|
-
handleClick:
|
|
52
|
-
open:
|
|
51
|
+
handleClick: f,
|
|
52
|
+
open: E,
|
|
53
53
|
handleClose: () => r((o) => !o),
|
|
54
54
|
dataTestId: "showflywayquery-customconfirmationmodal"
|
|
55
55
|
}
|
|
56
56
|
),
|
|
57
|
-
/* @__PURE__ */ d(
|
|
58
|
-
/* @__PURE__ */ a(
|
|
59
|
-
/* @__PURE__ */ a(
|
|
60
|
-
|
|
57
|
+
/* @__PURE__ */ d(S, { open: b, onClose: s, fullWidth: !0, maxWidth: "md", children: [
|
|
58
|
+
/* @__PURE__ */ a(D, { className: "p-2.5 px-5 flex border-b font-medium text-lg", children: i("Flyway Query") }),
|
|
59
|
+
/* @__PURE__ */ a(F, { children: /* @__PURE__ */ a(
|
|
60
|
+
A,
|
|
61
61
|
{
|
|
62
62
|
multiline: !0,
|
|
63
63
|
rows: 10,
|
|
@@ -81,11 +81,11 @@ VALUES (
|
|
|
81
81
|
"data-testid": "showflywayquery-textfield"
|
|
82
82
|
}
|
|
83
83
|
) }),
|
|
84
|
-
/* @__PURE__ */ d(
|
|
84
|
+
/* @__PURE__ */ d(B, { children: [
|
|
85
85
|
/* @__PURE__ */ a(
|
|
86
86
|
c,
|
|
87
87
|
{
|
|
88
|
-
onClick:
|
|
88
|
+
onClick: k,
|
|
89
89
|
variant: "contained",
|
|
90
90
|
size: "small",
|
|
91
91
|
color: "primary",
|
|
@@ -96,7 +96,7 @@ VALUES (
|
|
|
96
96
|
/* @__PURE__ */ a(
|
|
97
97
|
c,
|
|
98
98
|
{
|
|
99
|
-
onClick:
|
|
99
|
+
onClick: $,
|
|
100
100
|
variant: "contained",
|
|
101
101
|
size: "small",
|
|
102
102
|
color: "primary",
|
|
@@ -119,12 +119,12 @@ VALUES (
|
|
|
119
119
|
] })
|
|
120
120
|
] });
|
|
121
121
|
};
|
|
122
|
-
|
|
122
|
+
U.propTypes = {
|
|
123
123
|
configuredQuery: p.any,
|
|
124
124
|
open: p.any,
|
|
125
125
|
onClose: p.any
|
|
126
126
|
};
|
|
127
127
|
export {
|
|
128
|
-
|
|
128
|
+
U as default
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=ShowFlywayQuery-
|
|
130
|
+
//# sourceMappingURL=ShowFlywayQuery-tj42YQAS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShowFlywayQuery-tj42YQAS.js","sources":["../src/views/QueryBuilder/ShowFlywayQuery.jsx"],"sourcesContent":["import { useTranslateProvider } from '@/common/languageTranslator/TranslationContext';\nimport { showToast } from '@/common/toaster/toaster';\nimport useTrackEvent from '@/hooks/useTrackEvent';\nimport CustomConfirmationModal from '@/views/custom-components/CustomConfirmationModal';\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from '@mui/material';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport implementationConfig from \"@/common/config/implementationConfig\";\n\n/**\n * A React functional component that displays a configured Flyway query.\n * @mdoule ShowFlywayQuery\n * @param {Object} props - Component properties.\n * @param {Object} props.configuredQuery - The query configuration object to display.\n * @param {boolean} props.open - Boolean flag indicating if the component should be visible.\n * @param {function} props.onClose - Callback function to close the component.\n */\n\nconst ShowFlywayQuery = ({ configuredQuery, open, onClose }) => {\n const [text, setText] = useState('');\n const [isPublicKeyword, setIsPublicKeyword] = useState(false);\n const [openConfirm, setOpenConfirm] = useState(false);\n const trackEvent = useTrackEvent();\n const { translate } = useTranslateProvider();\n const isClickhouseEnabledEnv = implementationConfig.queryBuilder.showClickhouseOption;\n\n /**\n *\n * Generates a SQL query string based on the `configuredQuery` object.\n * @function generateQueryText\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query.\n * @param {string} configuredQuery.code - The unique code for the query.\n * @param {string} configuredQuery.uuid - The unique identifier for the query.\n * @param {number} configuredQuery.createdBy - The ID of the user who created the query.\n * @param {string} [configuredQuery.params] - The parameters for the query.\n * @param {string} configuredQuery.query - The actual SQL query text.\n * @param {string} [configuredQuery.description] - A description of the query.\n * @param {boolean} [configuredQuery.returnsResultSet] - Flag indicating if the query returns a result set.\n * @param {string} [configuredQuery.state] - The state of the query (e.g., 'ACTIVE').\n * @returns {void}\n */\n\n const generateQueryText = useCallback(() => {\n const publicKeyword = configuredQuery.query.includes('public');\n setIsPublicKeyword(publicKeyword);\n\n let queryText = `DELETE FROM QUERY_MASTER WHERE CODE='${configuredQuery.code}';\\n\\n`;\n queryText += `INSERT INTO QUERY_MASTER (uuid, created_by, created_on, modified_by, modified_on, code, params, query, description, returns_result_set, state, is_mobile_query, is_public ${isClickhouseEnabledEnv ? ', is_clickhouse_query' : ''}) \\nVALUES ( \\n`;\n queryText += `'${configuredQuery.uuid}', ${configuredQuery.createdBy}, current_date, ${configuredQuery.createdBy}, current_date, `;\n queryText += `'${configuredQuery.code}', \\n`;\n\n queryText += configuredQuery.params ? `'${configuredQuery.params}', \\n` : 'null, \\n';\n queryText += `'${configuredQuery.query.replace(/'/g, \"''\")}', \\n`;\n queryText += configuredQuery.description ? `'${configuredQuery.description}', \\n` : 'null, \\n';\n queryText += configuredQuery.returnsResultSet !== undefined ? `${configuredQuery.returnsResultSet}, ` : 'false, ';\n queryText += configuredQuery.state ? `'${configuredQuery.state}', ` : `'ACTIVE', `;\n queryText += ` ${configuredQuery?.isMobileQuery},`;\n queryText += `${configuredQuery?.isPublic}`;\n if (isClickhouseEnabledEnv) queryText += `,${configuredQuery.isClickhouseQuery || false}`;\n queryText += ');';\n\n setText(queryText);\n }, [configuredQuery]);\n\n /**\n *\n * Copies the generated query text to the clipboard and displays a success message.\n * @function copyQuery\n * @returns {void}\n */\n\n const copyQuery = () => {\n navigator.clipboard.writeText(text).then(() => {\n showToast({ message: 'Query Copied', type: 'success' });\n onClose();\n });\n };\n\n /**\n * Triggers a download operation and toggles the confirmation dialog visibility.\n * The function assumes that `download` and `setOpenConfirm` are available in the current scope.\n * @function askForConfirmation\n * @returns {void}\n */\n\n const askForConfirmation = () => {\n download();\n setOpenConfirm((cur) => !cur);\n };\n\n /**\n * Creates and triggers a download of a text file containing the query text.\n *\n * @function download\n * @returns {void}\n */\n\n const download = () => {\n const blob = new Blob([text], { type: 'text/plain' });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `V${new Date().getTime()}__CHANGE_IN_${configuredQuery.code}.sql`;\n document.body.appendChild(a);\n\n a.click();\n trackEvent('file_download', {\n file_type: 'sql',\n file_name: a.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: 'success',\n });\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n /**\n *\n * Handles the download process based on the presence of a public keyword in the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n if (isPublicKeyword) {\n setOpenConfirm((cur) => !cur);\n } else {\n download();\n }\n };\n\n /**\n * `useEffect` Hook to Generate Query Text\n *\n * This effect hook is used to generate the SQL query text whenever the `configuredQuery` dependency changes.\n *\n * @function useEffect\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query text.\n * @param {function} generateQueryText - A function that generates the query text based on `configuredQuery`.\n */\n\n useEffect(() => {\n if (configuredQuery) {\n generateQueryText();\n }\n }, [configuredQuery, generateQueryText]);\n return (\n <>\n <CustomConfirmationModal\n description={\"This Flyway contains keyword 'public'. Are you sure you want to download?\"}\n title={'CONFIRM ACTION'}\n handleClick={askForConfirmation}\n open={openConfirm}\n handleClose={() => setOpenConfirm((cur) => !cur)}\n dataTestId=\"showflywayquery-customconfirmationmodal\"\n />\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"md\">\n <DialogTitle className=\"p-2.5 px-5 flex border-b font-medium text-lg\">{translate('Flyway Query')}</DialogTitle>\n <DialogContent>\n <TextField\n multiline\n rows={10}\n variant=\"outlined\"\n fullWidth\n value={text}\n sx={{\n '& .MuiInputBase-input': {\n fontSize: '14px',\n },\n '& .MuiOutlinedInput-root': {\n // fontSize: '14px'\n borderRadius: '5px',\n },\n }}\n slotProps={{\n input: {\n readOnly: true,\n },\n }}\n data-testid=\"showflywayquery-textfield\"\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={handleDownload}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-download\"\n >\n {translate('Download')}\n </Button>\n <Button\n onClick={copyQuery}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-copyquery\"\n >\n {translate('Copy Query')}\n </Button>\n <Button\n onClick={onClose}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n data-testid=\"showflywayquery-button-cancel\"\n >\n {translate('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nShowFlywayQuery.propTypes = {\n configuredQuery: PropTypes.any,\n open: PropTypes.any,\n onClose: PropTypes.any,\n};\n\nexport default ShowFlywayQuery;\n"],"names":["ShowFlywayQuery","configuredQuery","open","onClose","text","setText","useState","isPublicKeyword","setIsPublicKeyword","openConfirm","setOpenConfirm","trackEvent","useTrackEvent","translate","useTranslateProvider","isClickhouseEnabledEnv","implementationConfig","generateQueryText","useCallback","publicKeyword","queryText","copyQuery","showToast","askForConfirmation","download","cur","blob","blobSizeInKB","url","a","handleDownload","useEffect","jsxs","Fragment","jsx","CustomConfirmationModal","Dialog","DialogTitle","DialogContent","TextField","DialogActions","Button","PropTypes"],"mappings":";;;;;;;;;AAkBA,MAAMA,IAAkB,CAAC,EAAE,iBAAAC,GAAiB,MAAAC,GAAM,SAAAC,QAAc;AAC9D,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAE,GAC7B,CAACC,GAAiBC,CAAkB,IAAIF,EAAS,EAAK,GACtD,CAACG,GAAaC,CAAc,IAAIJ,EAAS,EAAK,GAC9CK,IAAaC,EAAA,GACb,EAAE,WAAAC,EAAA,IAAcC,EAAA,GAChBC,IAAyBC,EAAqB,aAAa,sBAkB3DC,IAAoBC,EAAY,MAAM;AAC1C,UAAMC,IAAgBlB,EAAgB,MAAM,SAAS,QAAQ;AAC7D,IAAAO,EAAmBW,CAAa;AAEhC,QAAIC,IAAY,wCAAwCnB,EAAgB,IAAI;AAAA;AAAA;AAC5E,IAAAmB,KAAa,6KAA6KL,IAAyB,0BAA0B,EAAE;AAAA;AAAA,GAC/OK,KAAa,IAAInB,EAAgB,IAAI,MAAMA,EAAgB,SAAS,mBAAmBA,EAAgB,SAAS,oBAChHmB,KAAa,IAAInB,EAAgB,IAAI;AAAA,GAErCmB,KAAanB,EAAgB,SAAS,IAAIA,EAAgB,MAAM;AAAA,IAAU;AAAA,GAC1EmB,KAAa,IAAInB,EAAgB,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,GAC1DmB,KAAanB,EAAgB,cAAc,IAAIA,EAAgB,WAAW;AAAA,IAAU;AAAA,GACpFmB,KAAanB,EAAgB,qBAAqB,SAAY,GAAGA,EAAgB,gBAAgB,OAAO,WACxGmB,KAAanB,EAAgB,QAAQ,IAAIA,EAAgB,KAAK,QAAQ,cACtEmB,KAAa,IAAInB,KAAA,gBAAAA,EAAiB,aAAa,KAC/CmB,KAAa,GAAGnB,KAAA,gBAAAA,EAAiB,QAAQ,IACrCc,MAAwBK,KAAa,IAAInB,EAAgB,qBAAqB,EAAK,KACvFmB,KAAa,MAEbf,EAAQe,CAAS;AAAA,EACnB,GAAG,CAACnB,CAAe,CAAC,GASdoB,IAAY,MAAM;AACtB,cAAU,UAAU,UAAUjB,CAAI,EAAE,KAAK,MAAM;AAC7C,MAAAkB,EAAU,EAAE,SAAS,gBAAgB,MAAM,WAAW,GACtDnB,EAAA;AAAA,IACF,CAAC;AAAA,EACH,GASMoB,IAAqB,MAAM;AAC/B,IAAAC,EAAA,GACAd,EAAe,CAACe,MAAQ,CAACA,CAAG;AAAA,EAC9B,GASMD,IAAW,MAAM;AACrB,UAAME,IAAO,IAAI,KAAK,CAACtB,CAAI,GAAG,EAAE,MAAM,cAAc,GAC9CuB,KAAgBD,EAAK,OAAO,MAAM,QAAQ,CAAC,GAC3CE,IAAM,IAAI,gBAAgBF,CAAI,GAC9BG,IAAI,SAAS,cAAc,GAAG;AACpC,IAAAA,EAAE,OAAOD,GACTC,EAAE,WAAW,KAAI,oBAAI,KAAA,GAAO,QAAA,CAAS,eAAe5B,EAAgB,IAAI,QACxE,SAAS,KAAK,YAAY4B,CAAC,GAE3BA,EAAE,MAAA,GACFlB,EAAW,iBAAiB;AAAA,MAC1B,WAAW;AAAA,MACX,WAAWkB,EAAE;AAAA,MACb,WAAW,GAAGF,CAAY;AAAA,MAC1B,iBAAiB;AAAA,IAAA,CAClB,GACD,SAAS,KAAK,YAAYE,CAAC,GAC3B,IAAI,gBAAgBD,CAAG,GACvBzB,EAAA;AAAA,EACF,GASM2B,IAAiB,MAAM;AAC3B,IAAIvB,IACFG,EAAe,CAACe,MAAQ,CAACA,CAAG,IAE5BD,EAAA;AAAA,EAEJ;AAYA,SAAAO,EAAU,MAAM;AACd,IAAI9B,KACFgB,EAAA;AAAA,EAEJ,GAAG,CAAChB,GAAiBgB,CAAiB,CAAC,GAErC,gBAAAe,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,aAAaZ;AAAA,QACb,MAAMd;AAAA,QACN,aAAa,MAAMC,EAAe,CAACe,MAAQ,CAACA,CAAG;AAAA,QAC/C,YAAW;AAAA,MAAA;AAAA,IAAA;AAAA,sBAEZW,GAAA,EAAO,MAAAlC,GAAY,SAAAC,GAAkB,WAAS,IAAC,UAAS,MACvD,UAAA;AAAA,MAAA,gBAAA+B,EAACG,GAAA,EAAY,WAAU,gDAAgD,UAAAxB,EAAU,cAAc,GAAE;AAAA,wBAChGyB,GAAA,EACC,UAAA,gBAAAJ;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,WAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAQ;AAAA,UACR,WAAS;AAAA,UACT,OAAOnC;AAAA,UACP,IAAI;AAAA,YACF,yBAAyB;AAAA,cACvB,UAAU;AAAA,YAAA;AAAA,YAEZ,4BAA4B;AAAA;AAAA,cAE1B,cAAc;AAAA,YAAA;AAAA,UAChB;AAAA,UAEF,WAAW;AAAA,YACT,OAAO;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UAEF,eAAY;AAAA,QAAA;AAAA,MAAA,GAEhB;AAAA,wBACCoC,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAN;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,SAASX;AAAA,YACT,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,eAAY;AAAA,YAEX,YAAU,UAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEvB,gBAAAI;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,SAASpB;AAAA,YACT,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,eAAY;AAAA,YAEX,YAAU,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzB,gBAAAa;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,SAAStC;AAAA,YACT,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,MAAK;AAAA,YACL,eAAY;AAAA,YAEX,YAAU,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACrB,EAAA,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAEAH,EAAgB,YAAY;AAAA,EAC1B,iBAAiB0C,EAAU;AAAA,EAC3B,MAAMA,EAAU;AAAA,EAChB,SAASA,EAAU;AACrB;"}
|
|
@@ -9,7 +9,7 @@ import o from "prop-types";
|
|
|
9
9
|
import { useNavigate as ce } from "react-router-dom";
|
|
10
10
|
import { FontAwesomeIcon as f } from "@fortawesome/react-fontawesome";
|
|
11
11
|
import { faArrowsRotate as de, faPen as ie, faFloppyDisk as ue } from "@fortawesome/free-solid-svg-icons";
|
|
12
|
-
import { S as me } from "./FeatureMenu-
|
|
12
|
+
import { S as me } from "./FeatureMenu-DUZL32RI.js";
|
|
13
13
|
import h from "@/common/services/util/GeneralUtil";
|
|
14
14
|
const pe = L(() => import("./FlywayQuery-Cx2sly6g.js")), ye = L(() => import("./ServerSyncModal-D_oFpv3C.js"));
|
|
15
15
|
function fe({
|
|
@@ -188,4 +188,4 @@ fe.propTypes = {
|
|
|
188
188
|
export {
|
|
189
189
|
fe as default
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=SubMenu-
|
|
191
|
+
//# sourceMappingURL=SubMenu-CM_4wNCR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubMenu-BGznOP2a.js","sources":["../src/views/Features/SubMenu.jsx"],"sourcesContent":["import React, { lazy, Suspense, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport \"@/assets/scss/scrollBar.scss\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nconst FlywayQuery = lazy(() => import(\"./FlywayQuery\"));\nimport {\n darken,\n List,\n ListItem,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n TextField,\n Typography,\n useTheme,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport PropTypes from \"prop-types\";\nimport { useNavigate } from \"react-router-dom\";\nconst ServerSyncModal = lazy(() => import(\"./ServerSyncModal\"));\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faArrowsRotate,\n faFloppyDisk,\n faPen,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { SubMenuSkeleton } from \"./Skeletons/FeatureSkeletons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\n/**\n * A component that renders a submenu interface.\n * @module SubMenu\n * @param {Object} props - The props object.\n * @param {Object} props.data - The data to be used or displayed within the submenu.\n * @param {string} props.subMenuId - The ID of the current submenu to display.\n * @param {Function} props.setSubMenuId - Function to update the submenu ID.\n * @param {Function} props.setSubMenuGroupName - Function to update the submenu Group name.\n * @param {Function} props.setSubMenuFeatureVal - Function to update the submenu state.\n * @param {string} props.type - The type of submenu or functionality to render.\n * @returns {JSX.Element} The rendered submenu component.\n */\nexport default function SubMenu({\n data,\n subMenuId,\n setSubMenuId,\n setSubMenuGroupName,\n setSubMenuFeatureVal,\n type,\n isLoading,\n isNewAPI,\n subMenuGroupName,\n rights,\n}) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [itemId, setItemId] = useState(\"\");\n const [openServerSyncModal, setOpenServerSyncModal] = useState(false);\n const [selectedFeatureId, setSelectedFeatureId] = useState();\n const [selectedFeature, setSelectedFeature] = useState({});\n const [navigationState, setNavigationState] = useState(\"\");\n const theme = useTheme();\n const borderColor = theme.palette.divider;\n const sortedFilteredFeatures = data.filter((feature) =>\n feature.name.toLowerCase().includes(searchQuery.toLowerCase()),\n );\n const { translate } = useTranslateProvider();\n const { user } = useSelector((state) => state.Authenticate);\n const isAdmin =\n user?.roleCode === \"argusadmin\" || user?.roleCode === \"medplatadmin\";\n\n const navigate = useNavigate();\n\n /**\n * Navigates to the edit feature page with the specified feature ID and type.\n * @function handleEdit\n * @param {string|number} id - The ID of the feature to be edited.\n * @param {string} type - The type of the feature to be edited.\n * @returns {void}\n */\n\n const handleEdit = (id, isDynamicFeature, type) => {\n const staticOrDynamic = isDynamicFeature ? \"DYNAMIC\" : \"STATIC\";\n const queryParams = new URLSearchParams({\n featureId: id,\n featureType: type,\n subMenuGroupName: subMenuGroupName,\n staticOrDynamic,\n }).toString();\n\n const url = `addDynamicFeature?${queryParams}`;\n\n navigate(url, { state: { isNew: isNewAPI } });\n };\n\n const handleServerSync = (id, navigationState, feature) => {\n setSelectedFeatureId(id);\n setNavigationState(navigationState);\n setSelectedFeature(feature);\n setOpenServerSyncModal(true);\n };\n\n return (\n <>\n <SubMenuSkeleton isLoading={isLoading}>\n <Grid container className=\"flex flex-col w-full\">\n <Grid className=\"p-2.5 flex-0\" sx={{ borderBottom: `1px solid ${borderColor}` }}>\n <Typography variant=\"body2\" className=\"pl-1.5 font-bold pt-0.5\">\n {translate(\"List of Sub Menus\")}\n </Typography>\n </Grid>\n\n <Grid className=\"px-2 py-1 flex-0\" sx={{ borderBottom: `1px solid ${borderColor}` }}>\n <TextField\n placeholder=\"Search Features\"\n variant=\"outlined\"\n size=\"small\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n sx={{\n width: \"100%\",\n backgroundColor: (theme) => theme.palette.background.paper,\n }}\n data-testid=\"submenu-search-input\"\n />\n </Grid>\n\n <Grid width={\"100%\"} className=\"flex-1 \">\n <TableContainer\n className=\"\"\n style={{ maxHeight: \"calc(100vh - 300px)\" }}\n >\n <Table>\n <TableBody>\n <TableRow\n sx={{\n backgroundColor: (theme) => theme.palette.background.main,\n }}\n >\n <TableCell className=\"p-0 h-full align-top\">\n <Grid>\n {sortedFilteredFeatures.length ? (\n <List className=\"p-0 m-0\">\n {sortedFilteredFeatures?.map(\n (item, index, array) => {\n return (\n <ListItem\n key={item?.id}\n className=\"flex justify-between px-4 py-2 transition-colors duration-300\"\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n onClick={() => {\n setSubMenuId(item.id);\n setSubMenuGroupName(item.groupName);\n setSubMenuFeatureVal(item.isNewFeature);\n }}\n data-testid={`submenu-list-item-${item.id}`}\n sx={{\n borderBottom:\n index === array.length - 1 ? \"none\" : `1px solid ${borderColor}`,\n backgroundColor: (theme) =>\n subMenuId === item.id\n ? darken(\n theme.palette.background.default,\n 0.1,\n )\n : \"inherit\",\n }}\n >\n <Typography\n variant=\"body2\"\n className={`m-0 ${\n subMenuId === item.id ||\n hoveredIndex === index\n ? \"font-bold\"\n : \"font-normal\"\n } ${hoveredIndex === index ? \"cursor-pointer\" : \"cursor-default\"}`}\n >\n {item.name}\n </Typography>\n {item.isDynamicReport !== true && isAdmin && (\n <Grid className=\"flex flex-row\">\n {item.isDynamicFeature && (!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <FontAwesomeIcon\n size=\"lg\"\n icon={faArrowsRotate}\n rotation={90}\n onClick={() =>\n handleServerSync(\n item.id,\n item.navigationState,\n item,\n )\n }\n className=\"mr-2 text-[var(--color-primary)]\"\n />\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <button\n onClick={() =>\n handleEdit(\n item.id,\n item.isDynamicFeature,\n type,\n )\n }\n disabled={item.id !== subMenuId}\n className={`mr-2 ${\n item.id !== subMenuId\n ? \"text-gray-400 cursor-not-allowed\"\n : \"text-[var(--color-primary)]\"\n }`}\n >\n <FontAwesomeIcon\n size=\"lg\"\n icon={faPen}\n data-testid={`submenu-edit-button-${item.id}`}\n />\n </button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <FontAwesomeIcon\n icon={faFloppyDisk}\n size=\"lg\"\n onClick={() => {\n setOpen(true);\n setItemId(item.id);\n }}\n data-testid={`submenu-save-button-${item.id}`}\n className=\"mr-1 text-[var(--color-primary)] cursor-pointer\"\n />\n )}\n </Grid>\n )}\n </ListItem>\n );\n },\n )}\n </List>\n ) : (\n <List className=\"p-0 m-0\">\n <ListItem>\n <Typography variant=\"body2\" className=\" m-0\">\n {translate(\"No features for search query\")}\n </Typography>\n </ListItem>\n </List>\n )}\n </Grid>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </Grid>\n </Grid>\n </SubMenuSkeleton>\n\n {open === true && (\n <Suspense>\n <FlywayQuery\n data-testid=\"submenu-flywayquery\"\n open={open}\n data={itemId ? data.find((data) => data.id === itemId) : {}}\n type={type}\n handleClose={() => setOpen(false)}\n />\n </Suspense>\n )}\n <Suspense>\n {openServerSyncModal && (\n <ServerSyncModal\n id={selectedFeatureId}\n selectedFeature={selectedFeature}\n navigationState={navigationState}\n openServerSyncModal={openServerSyncModal}\n openModalFunc={setOpenServerSyncModal}\n />\n )}\n </Suspense>\n </>\n );\n}\n\nSubMenu.propTypes = {\n data: PropTypes.any,\n subMenuId: PropTypes.any,\n setSubMenuId: PropTypes.any,\n setSubMenuGroupName: PropTypes.any,\n setSubMenuFeatureVal: PropTypes.any,\n type: PropTypes.any,\n isLoading: PropTypes.any,\n isNewAPI: PropTypes.any,\n subMenuGroupName: PropTypes.any,\n rights: PropTypes.any,\n};\n"],"names":["FlywayQuery","lazy","ServerSyncModal","SubMenu","data","subMenuId","setSubMenuId","setSubMenuGroupName","setSubMenuFeatureVal","type","isLoading","isNewAPI","subMenuGroupName","rights","searchQuery","setSearchQuery","useState","open","setOpen","hoveredIndex","setHoveredIndex","itemId","setItemId","openServerSyncModal","setOpenServerSyncModal","selectedFeatureId","setSelectedFeatureId","selectedFeature","setSelectedFeature","navigationState","setNavigationState","borderColor","useTheme","sortedFilteredFeatures","feature","translate","useTranslateProvider","user","useSelector","state","isAdmin","navigate","useNavigate","handleEdit","id","isDynamicFeature","staticOrDynamic","url","handleServerSync","jsxs","Fragment","jsx","SubMenuSkeleton","Grid","Typography","TextField","theme","TableContainer","Table","TableBody","TableRow","TableCell","List","item","index","array","ListItem","darken","GeneralUtil","FontAwesomeIcon","faArrowsRotate","faPen","faFloppyDisk","Suspense","PropTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubMenu-CM_4wNCR.js","sources":["../src/views/Features/SubMenu.jsx"],"sourcesContent":["import React, { lazy, Suspense, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport \"@/assets/scss/scrollBar.scss\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nconst FlywayQuery = lazy(() => import(\"./FlywayQuery\"));\nimport {\n darken,\n List,\n ListItem,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n TextField,\n Typography,\n useTheme,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport PropTypes from \"prop-types\";\nimport { useNavigate } from \"react-router-dom\";\nconst ServerSyncModal = lazy(() => import(\"./ServerSyncModal\"));\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faArrowsRotate,\n faFloppyDisk,\n faPen,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { SubMenuSkeleton } from \"./Skeletons/FeatureSkeletons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\n/**\n * A component that renders a submenu interface.\n * @module SubMenu\n * @param {Object} props - The props object.\n * @param {Object} props.data - The data to be used or displayed within the submenu.\n * @param {string} props.subMenuId - The ID of the current submenu to display.\n * @param {Function} props.setSubMenuId - Function to update the submenu ID.\n * @param {Function} props.setSubMenuGroupName - Function to update the submenu Group name.\n * @param {Function} props.setSubMenuFeatureVal - Function to update the submenu state.\n * @param {string} props.type - The type of submenu or functionality to render.\n * @returns {JSX.Element} The rendered submenu component.\n */\nexport default function SubMenu({\n data,\n subMenuId,\n setSubMenuId,\n setSubMenuGroupName,\n setSubMenuFeatureVal,\n type,\n isLoading,\n isNewAPI,\n subMenuGroupName,\n rights,\n}) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [itemId, setItemId] = useState(\"\");\n const [openServerSyncModal, setOpenServerSyncModal] = useState(false);\n const [selectedFeatureId, setSelectedFeatureId] = useState();\n const [selectedFeature, setSelectedFeature] = useState({});\n const [navigationState, setNavigationState] = useState(\"\");\n const theme = useTheme();\n const borderColor = theme.palette.divider;\n const sortedFilteredFeatures = data.filter((feature) =>\n feature.name.toLowerCase().includes(searchQuery.toLowerCase()),\n );\n const { translate } = useTranslateProvider();\n const { user } = useSelector((state) => state.Authenticate);\n const isAdmin =\n user?.roleCode === \"argusadmin\" || user?.roleCode === \"medplatadmin\";\n\n const navigate = useNavigate();\n\n /**\n * Navigates to the edit feature page with the specified feature ID and type.\n * @function handleEdit\n * @param {string|number} id - The ID of the feature to be edited.\n * @param {string} type - The type of the feature to be edited.\n * @returns {void}\n */\n\n const handleEdit = (id, isDynamicFeature, type) => {\n const staticOrDynamic = isDynamicFeature ? \"DYNAMIC\" : \"STATIC\";\n const queryParams = new URLSearchParams({\n featureId: id,\n featureType: type,\n subMenuGroupName: subMenuGroupName,\n staticOrDynamic,\n }).toString();\n\n const url = `addDynamicFeature?${queryParams}`;\n\n navigate(url, { state: { isNew: isNewAPI } });\n };\n\n const handleServerSync = (id, navigationState, feature) => {\n setSelectedFeatureId(id);\n setNavigationState(navigationState);\n setSelectedFeature(feature);\n setOpenServerSyncModal(true);\n };\n\n return (\n <>\n <SubMenuSkeleton isLoading={isLoading}>\n <Grid container className=\"flex flex-col w-full\">\n <Grid className=\"p-2.5 flex-0\" sx={{ borderBottom: `1px solid ${borderColor}` }}>\n <Typography variant=\"body2\" className=\"pl-1.5 font-bold pt-0.5\">\n {translate(\"List of Sub Menus\")}\n </Typography>\n </Grid>\n\n <Grid className=\"px-2 py-1 flex-0\" sx={{ borderBottom: `1px solid ${borderColor}` }}>\n <TextField\n placeholder=\"Search Features\"\n variant=\"outlined\"\n size=\"small\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n sx={{\n width: \"100%\",\n backgroundColor: (theme) => theme.palette.background.paper,\n }}\n data-testid=\"submenu-search-input\"\n />\n </Grid>\n\n <Grid width={\"100%\"} className=\"flex-1 \">\n <TableContainer\n className=\"\"\n style={{ maxHeight: \"calc(100vh - 300px)\" }}\n >\n <Table>\n <TableBody>\n <TableRow\n sx={{\n backgroundColor: (theme) => theme.palette.background.main,\n }}\n >\n <TableCell className=\"p-0 h-full align-top\">\n <Grid>\n {sortedFilteredFeatures.length ? (\n <List className=\"p-0 m-0\">\n {sortedFilteredFeatures?.map(\n (item, index, array) => {\n return (\n <ListItem\n key={item?.id}\n className=\"flex justify-between px-4 py-2 transition-colors duration-300\"\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n onClick={() => {\n setSubMenuId(item.id);\n setSubMenuGroupName(item.groupName);\n setSubMenuFeatureVal(item.isNewFeature);\n }}\n data-testid={`submenu-list-item-${item.id}`}\n sx={{\n borderBottom:\n index === array.length - 1 ? \"none\" : `1px solid ${borderColor}`,\n backgroundColor: (theme) =>\n subMenuId === item.id\n ? darken(\n theme.palette.background.default,\n 0.1,\n )\n : \"inherit\",\n }}\n >\n <Typography\n variant=\"body2\"\n className={`m-0 ${\n subMenuId === item.id ||\n hoveredIndex === index\n ? \"font-bold\"\n : \"font-normal\"\n } ${hoveredIndex === index ? \"cursor-pointer\" : \"cursor-default\"}`}\n >\n {item.name}\n </Typography>\n {item.isDynamicReport !== true && isAdmin && (\n <Grid className=\"flex flex-row\">\n {item.isDynamicFeature && (!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <FontAwesomeIcon\n size=\"lg\"\n icon={faArrowsRotate}\n rotation={90}\n onClick={() =>\n handleServerSync(\n item.id,\n item.navigationState,\n item,\n )\n }\n className=\"mr-2 text-[var(--color-primary)]\"\n />\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <button\n onClick={() =>\n handleEdit(\n item.id,\n item.isDynamicFeature,\n type,\n )\n }\n disabled={item.id !== subMenuId}\n className={`mr-2 ${\n item.id !== subMenuId\n ? \"text-gray-400 cursor-not-allowed\"\n : \"text-[var(--color-primary)]\"\n }`}\n >\n <FontAwesomeIcon\n size=\"lg\"\n icon={faPen}\n data-testid={`submenu-edit-button-${item.id}`}\n />\n </button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.featurelist']) && (\n <FontAwesomeIcon\n icon={faFloppyDisk}\n size=\"lg\"\n onClick={() => {\n setOpen(true);\n setItemId(item.id);\n }}\n data-testid={`submenu-save-button-${item.id}`}\n className=\"mr-1 text-[var(--color-primary)] cursor-pointer\"\n />\n )}\n </Grid>\n )}\n </ListItem>\n );\n },\n )}\n </List>\n ) : (\n <List className=\"p-0 m-0\">\n <ListItem>\n <Typography variant=\"body2\" className=\" m-0\">\n {translate(\"No features for search query\")}\n </Typography>\n </ListItem>\n </List>\n )}\n </Grid>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </Grid>\n </Grid>\n </SubMenuSkeleton>\n\n {open === true && (\n <Suspense>\n <FlywayQuery\n data-testid=\"submenu-flywayquery\"\n open={open}\n data={itemId ? data.find((data) => data.id === itemId) : {}}\n type={type}\n handleClose={() => setOpen(false)}\n />\n </Suspense>\n )}\n <Suspense>\n {openServerSyncModal && (\n <ServerSyncModal\n id={selectedFeatureId}\n selectedFeature={selectedFeature}\n navigationState={navigationState}\n openServerSyncModal={openServerSyncModal}\n openModalFunc={setOpenServerSyncModal}\n />\n )}\n </Suspense>\n </>\n );\n}\n\nSubMenu.propTypes = {\n data: PropTypes.any,\n subMenuId: PropTypes.any,\n setSubMenuId: PropTypes.any,\n setSubMenuGroupName: PropTypes.any,\n setSubMenuFeatureVal: PropTypes.any,\n type: PropTypes.any,\n isLoading: PropTypes.any,\n isNewAPI: PropTypes.any,\n subMenuGroupName: PropTypes.any,\n rights: PropTypes.any,\n};\n"],"names":["FlywayQuery","lazy","ServerSyncModal","SubMenu","data","subMenuId","setSubMenuId","setSubMenuGroupName","setSubMenuFeatureVal","type","isLoading","isNewAPI","subMenuGroupName","rights","searchQuery","setSearchQuery","useState","open","setOpen","hoveredIndex","setHoveredIndex","itemId","setItemId","openServerSyncModal","setOpenServerSyncModal","selectedFeatureId","setSelectedFeatureId","selectedFeature","setSelectedFeature","navigationState","setNavigationState","borderColor","useTheme","sortedFilteredFeatures","feature","translate","useTranslateProvider","user","useSelector","state","isAdmin","navigate","useNavigate","handleEdit","id","isDynamicFeature","staticOrDynamic","url","handleServerSync","jsxs","Fragment","jsx","SubMenuSkeleton","Grid","Typography","TextField","theme","TableContainer","Table","TableBody","TableRow","TableCell","List","item","index","array","ListItem","darken","GeneralUtil","FontAwesomeIcon","faArrowsRotate","faPen","faFloppyDisk","Suspense","PropTypes"],"mappings":"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"}
|