@argusoft/medplat-core 1.0.27 → 1.0.29
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-Zm8Obm4N.js +1284 -0
- package/dist/AccessRights-Zm8Obm4N.js.map +1 -0
- package/dist/{AddFeatures-C0Z29oSd.js → AddFeatures-v3TmGQee.js} +2 -2
- package/dist/{AddFeatures-C0Z29oSd.js.map → AddFeatures-v3TmGQee.js.map} +1 -1
- package/dist/AddMenuConfiguration-Ce91MhnU.js +8547 -0
- package/dist/AddMenuConfiguration-Ce91MhnU.js.map +1 -0
- package/dist/{AddRoleDrawer-CQdzQZLb.js → AddRoleDrawer-0gqAK8N0.js} +62 -63
- package/dist/AddRoleDrawer-0gqAK8N0.js.map +1 -0
- package/dist/{ChangePasswordModalCore-CDxkeIIM.js → ChangePasswordModalCore-DutQAZOx.js} +2 -2
- package/dist/{ChangePasswordModalCore-CDxkeIIM.js.map → ChangePasswordModalCore-DutQAZOx.js.map} +1 -1
- package/dist/{ConditionConfig-DSsgGEXS.js → ConditionConfig-B4Ffpgj3.js} +2 -2
- package/dist/ConditionConfig-B4Ffpgj3.js.map +1 -0
- package/dist/{EntityManagement-GaYsBTvf.js → EntityManagement-CPQL6qBj.js} +2 -2
- package/dist/{EntityManagement-GaYsBTvf.js.map → EntityManagement-CPQL6qBj.js.map} +1 -1
- package/dist/{EventConfigurations-kNtAj_WM.js → EventConfigurations-BJcURufo.js} +3 -3
- package/dist/{EventConfigurations-kNtAj_WM.js.map → EventConfigurations-BJcURufo.js.map} +1 -1
- package/dist/{EventsExceptionModal-D4Bf1ilS.js → EventsExceptionModal-BlZtBQoR.js} +2 -2
- package/dist/{EventsExceptionModal-D4Bf1ilS.js.map → EventsExceptionModal-BlZtBQoR.js.map} +1 -1
- package/dist/{EventsSkeleton-8iiETGcf.js → EventsSkeleton-DK6JDKAK.js} +26 -19
- package/dist/EventsSkeleton-DK6JDKAK.js.map +1 -0
- package/dist/{FeatureMenu-jl7-Tk6y.js → FeatureMenu-C3503UIX.js} +3 -3
- package/dist/{FeatureMenu-jl7-Tk6y.js.map → FeatureMenu-C3503UIX.js.map} +1 -1
- package/dist/Features-Dne21RWu.js +14 -0
- package/dist/Features-Dne21RWu.js.map +1 -0
- package/dist/FileSaver.min-CN9EpL2h.js.map +1 -1
- package/dist/{ManageNotification-CaBAOhji.js → Google-DQxMfbaL.js} +1725 -2652
- package/dist/Google-DQxMfbaL.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js +5895 -0
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/ImmunizationSkeleton-D2tdv5k-.js.map +1 -1
- package/dist/{ManageDynamicFeature-BhONvfC_.js → ManageDynamicFeature-dt096fyj.js} +2 -2
- package/dist/{ManageDynamicFeature-BhONvfC_.js.map → ManageDynamicFeature-dt096fyj.js.map} +1 -1
- package/dist/{ManageEventConfiguration-DV3I5POA.js → ManageEventConfiguration-BpSJszSX.js} +5 -5
- package/dist/{ManageEventConfiguration-DV3I5POA.js.map → ManageEventConfiguration-BpSJszSX.js.map} +1 -1
- package/dist/ManageNotification-CfhHlfxA.js +934 -0
- package/dist/ManageNotification-CfhHlfxA.js.map +1 -0
- package/dist/{ManageRole-CGYfglpo.js → ManageRole-4Y2PP4dQ.js} +32 -30
- package/dist/ManageRole-4Y2PP4dQ.js.map +1 -0
- package/dist/{ManageUser-AY1EUDLI.js → ManageUser-DDzyd9jm.js} +1728 -1592
- package/dist/ManageUser-DDzyd9jm.js.map +1 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js +108 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-BxLympIO.js → MobileTypeEventConfigModal-DUkUYACe.js} +2 -2
- package/dist/MobileTypeEventConfigModal-DUkUYACe.js.map +1 -0
- package/dist/{NotificationList-C3Vb_jKU.js → NotificationList-BMFpNUJG.js} +109 -110
- package/dist/NotificationList-BMFpNUJG.js.map +1 -0
- package/dist/{OtherTypeEventConfigModal-BeG1GrUi.js → OtherTypeEventConfigModal-CYBfr2XE.js} +570 -478
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js.map +1 -0
- package/dist/{RoleManagement-BPl2cE27.js → RoleManagement-DEiBNfT8.js} +100 -101
- package/dist/RoleManagement-DEiBNfT8.js.map +1 -0
- package/dist/{ServerSyncModal-D_oFpv3C.js → ServerSyncModal-92U3xtqI.js} +84 -85
- package/dist/ServerSyncModal-92U3xtqI.js.map +1 -0
- package/dist/{SubMenu-DYxAPH2Z.js → SubMenu-B072oEGb.js} +3 -3
- package/dist/{SubMenu-DYxAPH2Z.js.map → SubMenu-B072oEGb.js.map} +1 -1
- package/dist/{TableDetails-Cf_YfnY2.js → TableDetails-BtafRxXb.js} +1069 -831
- package/dist/TableDetails-BtafRxXb.js.map +1 -0
- package/dist/{TableList-D6jnIbnz.js → TableList-Dpo6dO7S.js} +2 -2
- package/dist/{TableList-D6jnIbnz.js.map → TableList-Dpo6dO7S.js.map} +1 -1
- package/dist/{TypeConfiguration-37wp-gsl.js → TypeConfiguration-C3xoP2Nb.js} +2 -2
- package/dist/{TypeConfiguration-37wp-gsl.js.map → TypeConfiguration-C3xoP2Nb.js.map} +1 -1
- package/dist/{WidgetList-Dw_FmbbE.js → WidgetList-D7YuWfDD.js} +2 -2
- package/dist/{WidgetList-Dw_FmbbE.js.map → WidgetList-D7YuWfDD.js.map} +1 -1
- package/dist/dashboardLayoutUtils-D1xCAxp3.js +405 -0
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +1 -0
- package/dist/i18next-CTOWN_jH.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +4 -752
- package/dist/index.js.map +1 -1
- package/dist/index.lib-C3fwoM3y.js +820 -0
- package/dist/index.lib-C3fwoM3y.js.map +1 -0
- package/dist/xlsx.min-D1LFqt_b.js.map +1 -1
- package/package.json +2 -2
- package/dist/AccessRights-CHu27ZOw.js +0 -1262
- package/dist/AccessRights-CHu27ZOw.js.map +0 -1
- package/dist/AddMenuConfiguration-BSQLl88V.js +0 -6570
- package/dist/AddMenuConfiguration-BSQLl88V.js.map +0 -1
- package/dist/AddRoleDrawer-CQdzQZLb.js.map +0 -1
- package/dist/ConditionConfig-DSsgGEXS.js.map +0 -1
- package/dist/EventsSkeleton-8iiETGcf.js.map +0 -1
- package/dist/Features-CObdzJp_.js +0 -13
- package/dist/Features-CObdzJp_.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-BevKZx_l.js +0 -5910
- package/dist/ImmunizationConfigurationBase-BevKZx_l.js.map +0 -1
- package/dist/ManageNotification-CaBAOhji.js.map +0 -1
- package/dist/ManageRole-CGYfglpo.js.map +0 -1
- package/dist/ManageUser-AY1EUDLI.js.map +0 -1
- package/dist/MobileMenuManagement-CVAKyKDa.js +0 -112
- package/dist/MobileMenuManagement-CVAKyKDa.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-BxLympIO.js.map +0 -1
- package/dist/NotificationList-C3Vb_jKU.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +0 -1
- package/dist/RoleManagement-BPl2cE27.js.map +0 -1
- package/dist/ServerSyncModal-D_oFpv3C.js.map +0 -1
- package/dist/TableDetails-Cf_YfnY2.js.map +0 -1
- package/dist/dashboardLayoutUtils-Bt5HA96J.js +0 -265
- package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoleManagement-BPl2cE27.js","sources":["../src/services/Roles.js","../src/views/Roles/Skeletons/RoleManagementSkeleton.jsx","../src/views/Roles/RoleManagement.jsx"],"sourcesContent":["import implementationConfig from \"@/common/config/implementationConfig\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getAllRoleList = () => api.get(\"/role\");\n\nexport const deleteRoleFeature = (id) =>\n api.delete(implementationConfig.api.useQueryParamStyle ? `/menuconfig/usermenuitem/delete?empMenuItemId=${id}` : `/menuconfig/usermenuitem/${id}`);\n\nexport const getRoleById = (id) => api.get(implementationConfig.api.useQueryParamStyle ? `/role/retrieveById?id=${id}` : `/role/${id}`);\n\nexport const postRole = (params) => api.post(\"/role\", { ...params });\n\nexport const putRole = (params) => implementationConfig.api.useQueryParamStyle ? api.put(\"/role/update\", { ...params }) : api.post(\"/role\", { ...params });\n\nexport const ToggleState = (params) =>\n api.put(`role/?is_active=${params.state === \"INACTIVE\" ? \"true\" : \"false\"}`, {\n ...params,\n });\nexport const postNewFeature = (params, id) =>\n api.post(`/menuconfig/assignnewfeature?roleId=${id}`, { ...params });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst RoleManagementSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"pt-6 relative h-[90vh]\">\n {/* skleton for roles and add button */}\n\n <div className=\"flex flex-row h-[80vh] \">\n <div className=\"flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md\">\n {\" \"}\n <div className=\"flex justify-between\">\n {/* skleton for list of roles and toogle roles */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-23 h-[40px] mr-3\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n <div className=\"flex flex-col border border-gray-300 w-[80%] p-2 rounded-md\">\n <div className=\"flex justify-between\">\n {/* skleton for role name and options */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-24 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-21 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n </div>\n\n <div className=\"absolute bottom-20 right-[10px] \">\n <div className=\"bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nRoleManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport default RoleManagementSkeleton;\n","import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { Suspense, useEffect, useState, lazy } from \"react\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport {\n Box,\n Card,\n Switch,\n TextField,\n Button,\n Chip,\n Typography,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getAllRoleList,\n ToggleState,\n deleteRoleFeature,\n getRoleById,\n} from \"../../services/Roles.js\";\nimport { getRoleList } from \"@/common/services/GlobalApis.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport RoleManagementSkeleton from \"./Skeletons/RoleManagementSkeleton.jsx\";\nimport { useSelector } from \"react-redux\";\nconst AddFeatures = lazy(() => import(\"./AddFeatures.jsx\"));\nconst ManageRole = lazy(() => import(\"./ManageRole.jsx\"));\n\nexport default function RoleManagement() {\n const { translate } = useTranslateProvider();\n const [Data, setData] = useState(\"\");\n const [selectedRole, setSelectedRole] = useState(Data[0]);\n const [includeInActive, setincludeInActive] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [openManageRole, setOpenManageRole] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [rights, setRights] = useState(null);\n const [confirmToggleOpen, setConfirmToggleOpen] = useState(false);\n const trackEvent = useTrackEvent();\n const currentLoogedInUserRoleId = useSelector((state) => state.Authenticate.user.roleId);\n const [allowedRoleIds, setallowedRoleIds] = useState([]);\n\n const getAllData = async (isPreserveRole = false) => {\n try {\n setIsLoading(true);\n const roleListPromise = includeInActive ? getAllRoleList() : getRoleList();\n let data, userRoleIds = [];\n if (currentLoogedInUserRoleId) {\n // Run both APIs in parallel\n const [{ data: roleData }, currRoleData] = await Promise.all([\n roleListPromise,\n getRoleById(currentLoogedInUserRoleId),\n ]);\n data = roleData;\n userRoleIds = currRoleData?.data?.roleIds || [];\n } else {\n // Only fetch role list\n const { data: roleData } = await roleListPromise;\n data = roleData;\n }\n setallowedRoleIds(userRoleIds);\n // ✅ Filter logic (keep only allowed roles)\n const filteredData =\n userRoleIds.length > 0\n ? data.filter((role) => userRoleIds.includes(role.id))\n : data; // fallback: show all if no roleIds\n setData(filteredData);\n if (!isPreserveRole && filteredData.length > 0) {\n setSelectedRole(filteredData[0]);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(function () {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\"techo.manage.role\");\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n getAllData();\n }, []);\n\n const handleCheckboxChange = async (event) => {\n let isChecked = event.target.checked;\n setincludeInActive(event.target.checked);\n try {\n setIsLoading((cur) => !cur);\n let data;\n if (isChecked) {\n ({ data } = await getAllRoleList());\n } else {\n ({ data } = await getRoleList());\n }\n if (allowedRoleIds && allowedRoleIds.length > 0) {\n data = data.filter(\n (role) => allowedRoleIds.includes(role.id)\n );\n }\n setData(data);\n setSelectedRole(data[0]);\n setIsLoading((cur) => !cur);\n setSearchText(\"\");\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const filterData = Data\n ? Data?.filter((feature) =>\n feature.name.toLowerCase().includes(searchText.toLowerCase())\n )\n : [];\n\n const formatDateDDMMYYYY = (timestamp) => {\n if (!timestamp) return \"\";\n const date = new Date(Number(timestamp));\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n };\n\n const handleToggleState = async () => {\n setConfirmToggleOpen(false);\n try {\n const payload = Data?.find((data) => data.id === selectedRole.id);\n await ToggleState(payload);\n showToast({\n message: `State succesfully changed from ${payload?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${payload?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n type: \"success\",\n });\n let res;\n setIsLoading((cur) => !cur);\n if (includeInActive) {\n res = await getAllRoleList();\n } else {\n res = await getRoleList();\n }\n\n setData(res.data);\n setSelectedRole(res.data[0]);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in handle active\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const sortedFilteredFeatures = Data\n ? Data.find((obj) => obj.id === selectedRole.id)\n ?.assignedFeatureList.filter((feature) =>\n feature.featureName\n ?.toLowerCase()\n .includes(searchQuery?.toLowerCase())\n )\n .sort((a, b) => a.featureName?.localeCompare(b.featureName))\n : [];\n\n const handleDeleteRoleFeature = async (feature) => {\n try {\n await deleteRoleFeature(feature.userMenuItemId);\n await getAllData(true);\n setSearchQuery(\"\");\n showToast({ message: \"Feature deleted successfully!\", type: \"success\" });\n } catch (error) {\n showToast({ message: error, type: \"error\" });\n }\n };\n\n const handleManageRoleModel = (index) => {\n setOpenManageRole(index);\n trackEvent(\"button_click\", {\n button_name: `${index === 1 ? \"add\" : \"edit\"} role modal button`,\n button_type: \"navigate\",\n button_id: `roles-${index === 1 ? \"add\" : \"edit\"}-button`,\n });\n };\n\n const isRoleListModified = () => {\n getAllData();\n setSearchText(\"\");\n };\n\n const handleOpen = async () => {\n try {\n setOpenModal(true);\n await trackEvent(\"button_click\", {\n button_name: \"add feature button\",\n button_type: \"navigate\",\n button_id: \"roles-addfeatures-button-add\",\n });\n } catch (error) {\n console.error(error);\n }\n };\n\n return !isLoading && rights !== null && !GeneralUtil.hasCheckRights(rights?.[\"view.manage.role\"]) ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Roles\n </Typography>\n </Card>\n </Box>\n ) : (\n <RoleManagementSkeleton isLoading={isLoading}>\n <Box className=\"flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]\">\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:w-[300px] flex flex-col p-4\"\n >\n <div className=\"flex justify-between items-center mb-3\">\n <Typography\n variant=\"h6\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n User Roles\n </Typography>\n {GeneralUtil.hasCheckRights(rights?.['create.manage.role']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => handleManageRoleModel(1)}\n data-testid=\"managerole-add-button\"\n >\n {translate(\"+ Add Role\")}\n </Button>\n )}\n </div>\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Search roles...\"\n fullWidth\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n data-testid=\"listofroles-search-input\"\n />\n <div className=\"flex items-center gap-2 mt-3\">\n <Switch\n size=\"small\"\n checked={includeInActive}\n onChange={handleCheckboxChange}\n />\n <Typography variant=\"body2\">Include Inactive</Typography>\n </div>\n <div className=\"flex-1 overflow-y-auto mt-4\">\n {filterData.length > 0 && (\n <>\n {filterData.map((role) => (\n <Card\n key={role.id}\n variant=\"outlined\"\n onClick={() => setSelectedRole(role)}\n className={`p-3 cursor-pointer transition\n ${selectedRole.id === role.id\n ? \"border-b-2\"\n : \"border-b-2 border-0\"\n }`}\n sx={\n selectedRole.id === role.id\n ? {\n bgcolor: (t) => alpha(t.palette.primary.main, 0.08),\n }\n : {}\n }\n >\n <Typography fontWeight={600}>\n {role.name}\n \n {role?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {role.assignedFeatureList.length} Features\n </Typography>\n </Card>\n ))}\n </>\n )}\n </div>\n </Card>\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:flex-1 flex flex-col p-5\"\n >\n <div className=\"flex flex-col sm:flex-row justify-between items-start border-b pb-4 gap-4\">\n <div className=\"flex flex-col gap-1 w-full sm:w-auto\">\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"h5\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n {selectedRole?.name || \"Select Role\"}\n </Typography>\n {selectedRole?.state === \"ACTIVE\" && (\n <Chip label=\"ACTIVE\" color=\"success\" size=\"small\" />\n )}\n {selectedRole?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </div>\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n className=\"mt-1\"\n >\n Created on {formatDateDDMMYYYY(selectedRole?.createdOn)}\n </Typography>\n </div>\n <div className=\"flex gap-2\">\n {GeneralUtil.hasCheckRights(rights?.['update.manage.role.toggleActive']) && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setConfirmToggleOpen(true)}\n >\n {selectedRole?.state === \"ACTIVE\" ? \"Deactivate\" : \"Activate\"}\n </Button>\n )}\n {GeneralUtil.hasCheckRights(rights?.['update.manage.role']) && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={() => handleManageRoleModel(2)}\n >\n ✏️ Edit Role\n </Button>\n )}\n </div>\n </div>\n {/* ASSIGNED FEATURES */}\n <div className=\"mt-5 flex flex-col flex-1 overflow-hidden\">\n <div className=\"flex flex-col sm:flex-row justify-between items-start sm:items-center mb-4 gap-4\">\n <div className=\"flex flex-row items-center gap-2 w-full sm:w-auto\">\n <Typography fontWeight={600}>{translate(\"Assigned Features\")}</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ({sortedFilteredFeatures.length} {translate(\"features active for this role\")})\n </Typography>\n </div>\n <TextField\n size=\"small\"\n sx={{ width: { xs: \"100%\", sm: \"60%\" } }}\n placeholder=\"Search Feature Name\"\n variant=\"outlined\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n data-testid=\"assignedfeatures-search-input\"\n />\n </div>\n <Box className=\"overflow-x-auto w-full\">\n <Box\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]\"\n sx={{\n color: \"text.secondary\",\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n }}\n >\n <div>{translate(\"FEATURE NAME\")}</div>\n <div className=\"text-center\">{translate(\"ACTIONS\")}</div>\n </Box>\n <Box\n className=\"h-[calc(100vh-440px)] overflow-y-auto min-w-[500px]\"\n sx={{\n bgcolor: \"background.paper\",\n }}\n >\n {sortedFilteredFeatures.length > 0 && (\n <>\n {sortedFilteredFeatures.map((feature, index) => (\n <Box\n key={feature.id}\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition\"\n sx={{\n \"&:hover\": {\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n },\n }}\n >\n <div className=\"flex flex-col\">\n <Typography sx={{ fontSize: \"13px\", fontWeight: 600 }}>\n {feature.featureName}\n </Typography>\n </div>\n <div className=\"flex justify-center\">\n {GeneralUtil.hasCheckRights(rights?.['view.manage.role.unassignFeature']) && (\n <FontAwesomeIcon\n icon={faTrash}\n onClick={() => {\n handleDeleteRoleFeature(feature);\n }}\n color=\"error\"\n className=\"text-red-400 cursor-pointer\"\n data-testid={`assignedfeatures-delete-icon-${index}`}\n />\n )}\n </div>\n </Box>\n ))}\n </>\n )}\n {sortedFilteredFeatures.length === 0 && (\n <>\n <Typography\n className=\"p-4\"\n sx={{ fontSize: \"13px\", fontStyle: \"italic\" }}\n >\n No Features assigned yet!\n </Typography>\n </>\n )}\n </Box>\n </Box>\n </div>\n <Box\n className=\"border-t p-4\"\n sx={{\n bgcolor: (t) => alpha(t.palette.primary.main, 0.06),\n }}\n >\n {GeneralUtil.hasCheckRights(rights?.['view.manage.role.assignFeature']) && (\n <Button variant=\"outlined\" size=\"small\" onClick={handleOpen}>\n + Add More Features\n </Button>\n )}\n </Box>\n </Card>\n <CustomConfirmationModal\n open={confirmToggleOpen}\n handleClose={() => setConfirmToggleOpen(false)}\n handleClick={handleToggleState}\n title={selectedRole?.state === \"ACTIVE\" ? \"Deactivate Role\" : \"Activate Role\"}\n description={`Are you sure you want to ${selectedRole?.state === \"ACTIVE\" ? \"deactivate\" : \"activate\"} the role \"${selectedRole?.name}\"?`}\n dataTestId=\"toggle-role-confirm-modal\"\n />\n <Suspense>\n <ManageRole\n isUpdate={openManageRole !== 1}\n selectedId={openManageRole === 2 ? selectedRole.id : null}\n data-testid=\"roles-managerole-add-button\"\n open={openManageRole}\n setOpen={setOpenManageRole}\n isRoleListModified={isRoleListModified}\n />\n </Suspense>\n <Suspense fallback={<div className=\"animate-pulse w-80 h-20 \"></div>}>\n {openModal === true && (\n <AddFeatures\n open={openModal}\n setOpenModal={setOpenModal}\n selectedId={selectedRole.id}\n setData={() => getAllData(true)}\n assignedFeatureList={\n Data\n ? (() =>\n Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n ? Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n : Data[0]?.assignedFeatureList)()\n : []\n }\n data-testid=\"roles-addfeatures-component\"\n />\n )}\n </Suspense>\n </Box>\n </RoleManagementSkeleton>\n );\n}\n"],"names":["getAllRoleList","api","deleteRoleFeature","id","implementationConfig","getRoleById","postRole","params","putRole","ToggleState","postNewFeature","RoleManagementSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddFeatures","lazy","ManageRole","RoleManagement","translate","useTranslateProvider","Data","setData","useState","selectedRole","setSelectedRole","includeInActive","setincludeInActive","setIsLoading","openModal","setOpenModal","openManageRole","setOpenManageRole","searchText","setSearchText","searchQuery","setSearchQuery","rights","setRights","confirmToggleOpen","setConfirmToggleOpen","trackEvent","useTrackEvent","currentLoogedInUserRoleId","state","allowedRoleIds","setallowedRoleIds","getAllData","isPreserveRole","roleListPromise","getRoleList","data","userRoleIds","roleData","currRoleData","_a","filteredData","role","error","showToast","useEffect","featureJson","getAssignedFeatures","handleCheckboxChange","event","isChecked","cur","filterData","feature","formatDateDDMMYYYY","timestamp","date","day","month","year","handleToggleState","payload","res","sortedFilteredFeatures","obj","a","b","handleDeleteRoleFeature","handleManageRoleModel","index","isRoleListModified","handleOpen","GeneralUtil","Box","Card","Typography","Button","TextField","Switch","Fragment","t","alpha","Chip","FontAwesomeIcon","faTrash","CustomConfirmationModal","Suspense","_b","_c"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSyncModal-D_oFpv3C.js","sources":["../src/views/Features/ServerSyncModal.jsx"],"sourcesContent":["/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-02-24 (Monday)\n */\nimport { execute } from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Alert,\n Autocomplete,\n Backdrop,\n Button,\n Checkbox,\n Chip,\n CircularProgress,\n Divider,\n Fade,\n FormControl,\n FormHelperText,\n FormLabel,\n IconButton,\n InputAdornment,\n Modal,\n OutlinedInput,\n Tab,\n Tabs,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { Box } from \"@mui/system\";\nimport { t } from \"i18next\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { Controller, useFieldArray, useForm } from \"react-hook-form\";\nimport { api as API } from \"@/common/interceptors/AxiosInterceptor\";\nimport {\n syncMenuConfigFormsWithServer,\n downloadFeature,\n} from \"@/common/services/SyncWithServer\";\nimport { FormConfiguratorService } from \"@/common/services/FormConfiguratorService\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faArrowsRotate,\n faChevronDown,\n faCircleInfo,\n faDownload,\n faEye,\n faEyeSlash,\n faXmark,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport InfoBadge from \"@/views/custom-components/InfoBadge\";\nimport AlertPlaceholder from \"@/views/custom-components/AlertPlaceholder\";\nimport PostgresEditor from \"@/views/custom-components/PostgresEditor\";\n\nexport default function ServerSyncModal({\n id,\n navigationState,\n selectedFeature,\n openServerSyncModal,\n openModalFunc,\n}) {\n const [linkedForms, setLinkedForms] = useState();\n const [allRouteMaps, setAllRouteMaps] = useState([]);\n // const [formSyncMap, setFormSyncMap] = useState([]);\n const [serverDetails, setServerDetails] = useState();\n\n const [showPassword, setShowPassword] = useState(false);\n const [currentSelectedMigrationTab, setCurrentSelectedMigrationTab] =\n useState(-1);\n const [loading, setLoading] = useState(false);\n const [selectedMigrationByFormCode, setSelectedMigrationByFormCode] =\n useState({});\n const [syncedMigrations, setSyncedMigrations] = useState([]);\n const [tabValue, setTabValue] = useState(\"SYNC\");\n\n const formCtrl = useForm({\n defaultValues: {\n serverName: \"\",\n formCode: [],\n formDetails: [],\n userName: \"\",\n password: \"\",\n requestMessage: \"\",\n },\n mode: \"onChange\",\n });\n\n const { fields, remove, append, replace } = useFieldArray({\n control: formCtrl.control,\n name: \"formDetails\",\n });\n\n const handleTabValueChange = (event, newValue) => {\n setSelectedMigrationByFormCode({});\n\n const fieldData = [...fields];\n fieldData.forEach((field) => {\n const linkedField = linkedForms.find(\n (f) => f.formCode === field.formCode\n );\n field.migrationList = linkedField.migrationListAll;\n field.migrationListAll = linkedField.migrationListAll;\n });\n\n replace(fieldData);\n setTabValue(newValue);\n };\n\n useEffect(() => {\n (async () => {\n try {\n await fetchForms();\n await fetchServerDet();\n } catch (error) {\n showToast({\n message: error,\n type: \"error\",\n });\n }\n })();\n }, [openServerSyncModal]);\n\n const fetchForms = async () => {\n try {\n const response = (\n await FormConfiguratorService.getAllLinkedFormsByMenuConfigId(id)\n ).data;\n if (response) {\n setAllRouteMaps(response);\n setLinkedForms(() => {\n const responseObj = response;\n const uniqueMap = new Map();\n responseObj.forEach((item) => {\n if (!uniqueMap.has(item.formCode)) {\n uniqueMap.set(item.formCode, {\n sourceFormCode: item.sourceFormCode,\n formName: item.formName,\n formCode: item.formCode,\n versions: JSON.parse(item.versions).filter(\n (v) => v.version !== \"DRAFT\"\n ),\n formUUID: item.uuid,\n builderType: item.builderType,\n migrationList: item.migrationList,\n migrationListAll: item.migrationList,\n });\n }\n });\n\n return Array.from(uniqueMap.values());\n });\n }\n } catch (error) {\n showToast({\n message: error,\n type: \"error\",\n });\n }\n };\n\n const handleServerChanged = async (server) => {\n if (server && linkedForms) {\n const formMasterUUIDs = linkedForms.map((item) => item.formUUID);\n\n try {\n const response = await API.get(\n `sync/migrationUUIDsByListOfFormMasterUUIDSource`,\n {\n params: {\n formMasterUUIDs,\n serverCode: server.code,\n },\n paramsSerializer: {\n serialize: (params) =>\n Object.entries(params)\n .map(([key, value]) =>\n Array.isArray(value)\n ? value\n .map((v) => `${key}=${encodeURIComponent(v)}`)\n .join(\"&\")\n : `${key}=${encodeURIComponent(value)}`\n )\n .join(\"&\"),\n },\n }\n );\n\n setSyncedMigrations([...response.data]);\n } catch (error) {\n console.error(\"Error fetching UUIDs:\", error);\n }\n } else {\n setSyncedMigrations([]);\n }\n\n // const response = (\n // await execute({\n // code: 'medplat_form_get_all_form_sync_map_by_destination_server_code',\n // parameters: {\n // destinationServerCode: serverCode,\n // },\n // })\n // ).data;\n // if (response.result) {\n // let formSyncMapResult = response.result;\n // formSyncMapResult.forEach((fsm) => {\n // fsm.syncVersionMap = JSON.parse(fsm.syncVersionMap) || [];\n // });\n // setFormSyncMap(formSyncMapResult);\n // }\n };\n\n const fetchServerDet = async () => {\n try {\n const response = (\n await execute({\n code: \"fetch_server_details\",\n })\n ).data;\n if (response.result) {\n setServerDetails(response.result);\n }\n } catch (error) {\n showToast({\n message: error,\n type: \"error\",\n });\n }\n };\n\n\n\n const onFormSelectionChange = () => {\n let formCodes = formCtrl.getValues(\"formCode\") || [];\n if (formCodes.length > 0) {\n setCurrentSelectedMigrationTab(formCodes[0]);\n let selectedFormDetails = formCodes\n .map((code) => {\n let form = linkedForms?.find((f) => f.formCode === code);\n return form\n ? {\n formName: form.formName,\n formCode: form.formCode,\n formUUID: form.formUUID,\n migrationList: form.migrationList?.filter(\n (ml) => !syncedMigrations.includes(ml.uuid)\n ),\n migrationListAll: form.migrationList,\n }\n : null;\n })\n .filter(Boolean);\n\n let currentFields = fields.map((field) => field.formCode);\n\n let newForms = selectedFormDetails.filter(\n (form) => !currentFields.includes(form.formCode)\n );\n\n let removedForms = currentFields.filter(\n (code) => !formCodes.includes(code)\n );\n\n newForms.forEach((form) => {\n const formDetails = linkedForms?.find(\n (item) => item.formCode === form.formCode\n );\n const maxVersion = formDetails.versions.reduce((max, current) =>\n parseInt(current.version) > parseInt(max.version) ? current : max\n );\n append({\n formName: form.formName,\n formCode: form.formCode,\n migrationList: form.migrationList,\n migrationListAll: form.migrationList,\n version: maxVersion.version,\n formUUID: form.formUUID,\n builderType: form.builderType,\n });\n });\n\n removedForms.forEach((code) => {\n let index = fields.findIndex((field) => field.formCode === code);\n if (index !== -1) remove(index);\n });\n } else {\n setCurrentSelectedMigrationTab(-1);\n replace([]);\n }\n };\n\n const handleClickShowPassword = () => setShowPassword((show) => !show);\n\n const handleDialogClose = () => {\n openModalFunc(false);\n };\n\n const encrypt = async (encryptionKey, initVector, data) => {\n try {\n return await GeneralUtil.getEncodedData(encryptionKey, initVector, data);\n } catch (error) {\n console.error(error);\n return null;\n }\n };\n\n const getSortedUUIDsByCreatedOn = (data, allowedUUIDs) => {\n return Object.entries(data)\n .filter(([uuid]) => !allowedUUIDs.includes(uuid))\n .sort(([, a], [, b]) => a.createdOn - b.createdOn)\n .map(([uuid]) => uuid);\n };\n\n const onSubmit = async (data) => {\n try {\n setLoading(true);\n const keyIv = await API.get(\"/login/get-key-and-iv\", {\n withCredentials: true,\n });\n const encryptedUserName = await encrypt(\n keyIv.data.key,\n keyIv.data.initVector,\n data.userName\n );\n const encryptedPassword = await encrypt(\n keyIv.data.key,\n keyIv.data.initVector,\n data.password\n );\n const formConfigsData = data.formDetails.map((form) => {\n let migrationUUIDList = getSortedUUIDsByCreatedOn(\n selectedMigrationByFormCode[form.formCode] || {},\n syncedMigrations || []\n );\n\n let obj = {\n formMasterUUID: form.formUUID,\n version: form.version,\n migrationUUIDList,\n builderType: form.builderType,\n };\n return obj;\n });\n\n const routeGraphMap = [];\n\n allRouteMaps.forEach((form) => {\n if (form.sourceFormCode != form.formCode) {\n routeGraphMap.push({ [form.sourceFormCode]: form.formCode });\n }\n });\n\n const requestBody = {\n menuConfigId: id,\n navigationState: navigationState,\n formConfigsData: formConfigsData,\n routeGraphMap: routeGraphMap,\n transactionRequestData: {\n serverCode: data.serverName,\n requestMessage: data.requestMessage,\n featureType: \"FORM_CONFIGURATOR\",\n featureReferenceType: \"FEATURE\",\n featureReferenceId: navigationState,\n },\n authRequestData: {\n userName: encryptedUserName,\n password: encryptedPassword,\n grantType: \"password\",\n clientId: \"imtecho-ui\",\n },\n };\n\n if (tabValue === \"SYNC\") {\n try {\n setLoading(true);\n const syncData = await syncMenuConfigFormsWithServer(requestBody);\n setLoading(false);\n if (syncData.data.isSuccess) {\n showToast({\n type: \"success\",\n message: \"Synced to server successfully.\",\n });\n openModalFunc(false);\n } else {\n showToast({\n type: \"error\",\n message: \"Issue in syncing with server.\",\n });\n console.error(\"error\", syncData.data.error);\n }\n } catch (error) {\n setLoading(false);\n showToast({\n type: \"error\",\n message: \"Sync failed: Unauthorized access\",\n });\n console.error(\"error\", error);\n }\n }\n\n if (tabValue === \"DOWNLOAD\") {\n try {\n setLoading(true);\n const response = await downloadFeature(requestBody);\n const timestamp = Date.now();\n const filename = `V${timestamp}__${requestBody.navigationState}__feature.json`;\n\n const blob = new Blob([response.data], { type: \"application/json\" });\n const url = window.URL.createObjectURL(blob);\n\n const link = document.createElement(\"a\");\n link.href = url;\n link.setAttribute(\"download\", filename);\n document.body.appendChild(link);\n link.click();\n link.remove();\n\n window.URL.revokeObjectURL(url);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n showToast({\n type: \"error\",\n message: \"Download failed\",\n });\n console.error(\"error\", error);\n }\n }\n setLoading(false);\n } catch (error) {\n setLoading(false);\n console.error(\"error\", error);\n }\n };\n\n const handleSelectMigrationByForm = (event, formCode, migration) => {\n let existingSelectedMigration = { ...selectedMigrationByFormCode };\n if (event.target.checked) {\n if (\n Object.prototype.hasOwnProperty.call(\n existingSelectedMigration,\n formCode\n )\n ) {\n existingSelectedMigration[formCode][migration.uuid] = migration;\n } else {\n existingSelectedMigration[formCode] = {};\n existingSelectedMigration[formCode][migration.uuid] = migration;\n }\n } else {\n delete existingSelectedMigration[formCode][migration.uuid];\n }\n setSelectedMigrationByFormCode({ ...existingSelectedMigration });\n };\n\n // const formatDateForVersion = (dateString) => {\n // const date = new Date(dateString);\n // const day = String(date.getDate()).padStart(2, '0');\n // const month = String(date.getMonth() + 1).padStart(2, '0');\n // const year = date.getFullYear();\n // let hours = date.getHours();\n // const minutes = String(date.getMinutes()).padStart(2, '0');\n // hours = String(hours).padStart(2, '0');\n // return `${day}/${month}/${year} ${hours}:${minutes}`;\n // };\n\n // const truncateString = (str, maxLength) => {\n // if (!str) {\n // return 'Not available';\n // }\n // if (str.length > maxLength) {\n // return str.slice(0, maxLength - 3) + '...';\n // }\n // return str;\n // };\n\n // const checkIfVersionSynced = (formCode, version) => {\n // const form = formSyncMap.find((fsm) => fsm.formCode === formCode);\n // if (form) {\n // const syncedform = form?.syncVersionMap?.filter((f) => f.sourceVersion === version);\n // if (syncedform && syncedform.length > 0) {\n // const maxSyncedForm = syncedform.reduce((max, current) =>\n // parseInt(current.destinationVersion) > parseInt(max.destinationVersion) ? current : max\n // );\n // return `Version ${maxSyncedForm.sourceVersion} was synced with Version ${maxSyncedForm.destinationVersion} on (${formatDateForVersion(maxSyncedForm.createdOn)})`;\n // }\n // }\n // return '';\n // };\n\n const formatDate = (dateString) => {\n const date = new Date(dateString);\n\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n\n let hours = date.getHours();\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n\n hours = String(hours).padStart(2, \"0\");\n\n return `${day}/${month}/${year} ${hours}:${minutes}`;\n };\n\n return (\n <Modal\n open={openServerSyncModal}\n slots={{ backdrop: Backdrop }}\n slotProps={{\n backdrop: {\n timeout: 500,\n },\n }}\n PaperProps={{\n style: {\n borderRadius: \"8px\",\n },\n }}\n >\n <Fade in={openServerSyncModal}>\n <Box\n sx={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n padding: \"10px 25px\",\n transform: \"translate(-50%, -50%)\",\n width: \"80%\",\n maxHeight: \"90%\",\n scrollbarWidth: \"none\",\n overflowY: \"scroll\",\n bgcolor: \"background.paper\",\n borderRadius: \"12px\",\n boxShadow: 12,\n transition: \"all 0.5s ease !important\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <Typography variant=\"h6\" className=\"text-customBlue\">\n {t(\"Sync\")} {selectedFeature?.name}\n </Typography>\n <IconButton onClick={handleDialogClose}>\n <FontAwesomeIcon icon={faXmark} />\n </IconButton>\n </Box>\n <form noValidate onSubmit={formCtrl.handleSubmit(onSubmit)}>\n <Box sx={{ my: 2 }}>\n <Backdrop\n sx={(theme) => ({\n color: \"#fff\",\n zIndex: theme.zIndex.drawer + 1,\n })}\n open={loading}\n >\n <Box\n sx={{\n backgroundColor: \"white\",\n p: 3,\n color: \"black\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n borderRadius: \"10px\",\n }}\n >\n <CircularProgress color=\"inherit\" />\n <Typography sx={{ ml: 2 }}>\n Syncing feature, it may take some time, please wait...\n </Typography>\n </Box>\n </Backdrop>\n <Grid container spacing={2}>\n <Grid size={5} container>\n <Grid size={12}>\n <Tabs\n value={tabValue}\n onChange={handleTabValueChange}\n variant=\"fullWidth\"\n >\n <Tab label=\"SYNC\" value=\"SYNC\" />\n <Tab label=\"DOWNLOAD\" value=\"DOWNLOAD\" />\n </Tabs>\n </Grid>\n {[\"SYNC\"].includes(tabValue) && (\n <>\n <Grid size={12}>\n <Divider>\n <Chip label=\"Server and form details\" size=\"small\" />\n </Divider>\n </Grid>\n <Grid size={12}>\n <FormControl fullWidth>\n <FormLabel required>Select server</FormLabel>\n <Controller\n name=\"serverName\"\n control={formCtrl.control}\n rules={{\n required: {\n value: true,\n message: `Select server`,\n },\n }}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => {\n const selectedServers = serverDetails?.filter(\n (server) => value?.includes(server.code)\n );\n return (\n <Autocomplete\n fullWidth\n size=\"small\"\n options={serverDetails || []}\n getOptionLabel={(option) =>\n option.serverDetails || \"\"\n }\n value={selectedServers}\n getOptionDisabled={(option) =>\n value?.includes(option.code)\n }\n onChange={(_, newValue) => {\n const serverCodes = newValue?.code;\n onChange(serverCodes);\n handleServerChanged(newValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select server\"\n variant=\"outlined\"\n error={error}\n helperText={error?.message}\n />\n )}\n />\n );\n }}\n />\n </FormControl>\n </Grid>\n </>\n )}\n {[\"DOWNLOAD\", \"SYNC\"].includes(tabValue) && (\n <>\n <Grid size={12}>\n <FormControl fullWidth>\n <FormLabel required>\n {t(\"Select\")} {t(\"forms\")}\n </FormLabel>\n <Controller\n name=\"formCode\"\n rules={{\n required: {\n value: true,\n message: `Select server`,\n },\n }}\n control={formCtrl.control}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => {\n const selectedObjects = linkedForms?.filter(\n (form) => value?.includes(form.formCode)\n );\n return (\n <Autocomplete\n multiple\n size=\"small\"\n options={linkedForms || []}\n disableCloseOnSelect\n getOptionLabel={(option) =>\n option.formName || \"\"\n }\n value={selectedObjects}\n getOptionDisabled={(option) =>\n value?.includes(option.formCode)\n }\n onChange={(_, newValue) => {\n const formCodes = newValue.map(\n (item) => item.formCode\n );\n onChange(formCodes);\n onFormSelectionChange();\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select all forms to sync\"\n variant=\"outlined\"\n error={error}\n helperText={error?.message}\n />\n )}\n />\n );\n }}\n />\n </FormControl>\n </Grid>\n </>\n )}\n {[\"SYNC\"].includes(tabValue) && (\n <>\n <Grid size={12}>\n <Divider>\n <Chip\n label={\n <Box>\n <Box component={\"span\"} sx={{ mr: 0.5 }}>\n User authentication details\n </Box>\n <Tooltip title=\"Users with admin role can perform the sync operation\">\n <FontAwesomeIcon icon={faCircleInfo} />\n </Tooltip>\n </Box>\n }\n size=\"small\"\n />\n </Divider>\n </Grid>\n <Grid size={12}>\n <FormControl variant=\"outlined\" fullWidth>\n <FormLabel required>\n {t(\"Username\")}\n </FormLabel>\n <Controller\n name=\"userName\"\n rules={{\n required: {\n value: true,\n message: `Enter username`,\n },\n }}\n control={formCtrl.control}\n render={({\n field,\n fieldState: { error },\n }) => (\n <TextField\n {...field}\n size=\"small\"\n placeholder=\"Enter username\"\n variant=\"outlined\"\n autoComplete=\"off\"\n error={!!error}\n helperText={error?.message}\n />\n )}\n />\n </FormControl>\n </Grid>\n <Grid size={12}>\n <FormControl fullWidth>\n <FormLabel\n required\n color=\"text.primary\"\n sx={{ mb: 0.5 }}\n >\n {t(\"Password\")}\n </FormLabel>\n <Controller\n name=\"password\"\n rules={{\n required: {\n value: true,\n message: `Enter password`,\n },\n }}\n control={formCtrl.control}\n errors={formCtrl.formState.errors}\n defaultValue=\"\"\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => (\n <Box sx={{ mb: 1 }}>\n <OutlinedInput\n fullWidth\n type={showPassword ? \"text\" : \"password\"}\n value={value}\n size=\"small\"\n placeholder=\"Enter password\"\n onChange={onChange}\n error={error}\n autoComplete=\"off\"\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label={\n showPassword\n ? \"hide the password\"\n : \"display the password\"\n }\n onClick={handleClickShowPassword}\n onMouseDown={(e) => e.preventDefault()}\n onMouseUp={(e) => e.preventDefault()}\n edge=\"end\"\n >\n {showPassword ? (\n <FontAwesomeIcon\n icon={faEyeSlash}\n size=\"xs\"\n />\n ) : (\n <FontAwesomeIcon\n icon={faEye}\n size=\"xs\"\n />\n )}\n </IconButton>\n </InputAdornment>\n }\n />\n {error && (\n <FormHelperText error={error}>\n {error?.message}\n </FormHelperText>\n )}\n </Box>\n )}\n />\n </FormControl>\n </Grid>\n <Grid size={12}>\n <FormControl fullWidth>\n <FormLabel required>\n {t(\"Request\")} {t(\"message\")}\n </FormLabel>\n <Controller\n name=\"requestMessage\"\n rules={{\n required: {\n value: true,\n message: `Enter request message`,\n },\n }}\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <TextField\n multiline\n rows={4}\n size=\"small\"\n placeholder=\"Enter request message\"\n {...field}\n error={error}\n helperText={error?.message}\n />\n )}\n />\n </FormControl>\n </Grid>\n </>\n )}\n </Grid>\n <Grid size={7}>\n {/* {fields?.length > 0 && (\n <Grid size={12}>\n <FormControl variant=\"outlined\" className=\"m-3 flex flex-row\">\n <Box className=\"w-[97%] m-2\" sx={{ padding: '10px' }}>\n <TableContainer component={Paper} sx={{ maxHeight: '300px', overflowY: 'auto' }}>\n <Table>\n <TableHead sx={{ backgroundColor: 'background.default' }}>\n <TableRow>\n <TableCell align=\"center\">\n <strong>{t('Name')}</strong>\n </TableCell>\n <TableCell align=\"center\">\n <strong>{t('Code')}</strong>\n </TableCell>\n <TableCell align=\"center\" width={'50%'}>\n <strong>{t('Version')}</strong>\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {fields?.map((selected, index) => {\n const formDet = linkedForms?.find((item) => item.formCode === selected.formCode);\n return (\n <TableRow key={selected.formCode}>\n <TableCell align=\"center\">{formDet?.formName}</TableCell>\n <TableCell align=\"center\">{selected.formCode}</TableCell>\n <TableCell align=\"center\">\n <Controller\n id=\"formDetails\"\n name={`formDetails.${index}.version`}\n control={formCtrl.control}\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <>\n <Autocomplete\n size=\"small\"\n disabled\n options={formDet?.versions || []}\n getOptionLabel={(option) => option.version || ''}\n renderOption={(props, option) => (\n <li {...props}>\n <Box sx={{ width: '100%' }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <Box>{option?.version}</Box>\n <Box sx={{ pl: 2, color: '#444', fontSize: '0.8rem' }}>\n <kbd>({formatDateForVersion(option?.createdOn)})</kbd>\n </Box>\n </Box>\n <Box\n sx={{\n float: 'right',\n color: option.versionDescription ? '#444' : '#999',\n fontSize: '0.8rem',\n }}\n >\n <Tooltip title={option.versionDescription} arrow>\n ({truncateString(option.versionDescription, 30)})\n </Tooltip>\n </Box>\n </Box>\n </li>\n )}\n value={\n formDet?.versions?.find((option) => option.version === value) || null\n }\n clearOnBlur\n onChange={(_, newValue) => onChange(newValue ? newValue.version : null)}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select Versions\"\n variant=\"outlined\"\n error={!!error}\n helperText={error ? error.message : ''}\n />\n )}\n />\n <FormHelperText sx={{ color: 'info.dark' }}>\n {value && checkIfVersionSynced(selected.formCode, value)}\n </FormHelperText>\n </>\n )}\n />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n </FormControl>\n </Grid>\n )} */}\n <Box>\n {fields.length > 0 ? (\n <React.Fragment>\n <Alert sx={{ mt: 1 }} severity=\"info\">\n Please select the migration corresponding to the\n respective form for synchronization\n </Alert>\n <Tabs\n value={currentSelectedMigrationTab}\n onChange={(_, value) => {\n setCurrentSelectedMigrationTab(value);\n }}\n >\n {fields?.map((field) => (\n <Tab\n key={field.formUUID}\n value={field.formCode}\n label={\n <InfoBadge\n label={field.formCode}\n value={`V${field.version}`}\n color=\"info.main\"\n tooltipValue={`Version ${field.version} of ${field.formName} will be synced`}\n showTooltip={true}\n valueSize={30}\n fontSize=\"0.8rem\"\n />\n }\n />\n ))}\n </Tabs>\n <Divider sx={{ mb: 1 }} />\n {currentSelectedMigrationTab != -1 &&\n (() => {\n const currentForm = fields.find(\n (field) =>\n field.formCode === currentSelectedMigrationTab\n );\n return (\n <Grid\n spacing={2}\n container\n key={currentForm.formCode}\n sx={{ maxHeight: \"50vh\", overflowY: \"scroll\" }}\n >\n {currentForm?.migrationList.length === 0 && (\n <Grid size={12}>\n <AlertPlaceholder height=\"250px\">\n No migration queries present for (\n {currentForm.formName})\n </AlertPlaceholder>\n </Grid>\n )}\n {currentForm?.migrationList?.map(\n (migration) => (\n <Grid\n size={12}\n container\n key={migration.uuid}\n >\n <Grid size={1}>\n <Checkbox\n value={\n Object.keys(\n selectedMigrationByFormCode[\n currentSelectedMigrationTab\n ] || {}\n )?.includes(migration.uuid) &&\n (!syncedMigrations?.includes(\n migration.uuid\n ) ||\n tabValue == \"DOWNLOAD\")\n }\n checked={\n Object.keys(\n selectedMigrationByFormCode[\n currentSelectedMigrationTab\n ] || {}\n )?.includes(migration.uuid) &&\n (!syncedMigrations?.includes(\n migration.uuid\n ) ||\n tabValue == \"DOWNLOAD\")\n }\n disabled={\n syncedMigrations?.includes(\n migration.uuid\n ) && tabValue === \"SYNC\"\n }\n sx={{\n \"& .MuiSvgIcon-root\": {\n fontSize: 32,\n },\n mr: 1,\n }}\n onChange={(e) => {\n handleSelectMigrationByForm(\n e,\n currentSelectedMigrationTab,\n migration\n );\n }}\n />\n </Grid>\n <Grid size={11}>\n <Accordion\n slotProps={{\n transition: { unmountOnExit: true },\n }}\n >\n <AccordionSummary\n expandIcon={\n <FontAwesomeIcon\n icon={faChevronDown}\n />\n }\n aria-controls=\"panel1-content\"\n id=\"panel1-header\"\n sx={{\n backgroundColor:\n \"background.default\",\n }}\n >\n <Typography component=\"span\">\n Created on :{\" \"}\n {formatDate(migration.createdOn)}\n <Chip\n sx={{ ml: 2 }}\n size=\"small\"\n color={\n migration.isExecuted\n ? \"success\"\n : \"warning\"\n }\n label={\n migration.isExecuted\n ? \"Executed\"\n : \"Not Executed\"\n }\n />\n {migration.isExecuted &&\n migration.isError && (\n <Chip\n sx={{ ml: 2 }}\n size=\"small\"\n color={\"error\"}\n label={\"Error\"}\n />\n )}\n {syncedMigrations?.includes(\n migration.uuid\n ) &&\n tabValue === \"SYNC\" && (\n <Chip\n sx={{ ml: 2 }}\n size=\"small\"\n color={\"info\"}\n label={\"Synced\"}\n />\n )}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <PostgresEditor\n mode=\"READ_ONLY\"\n defaultValue={migration?.query}\n />\n </AccordionDetails>\n </Accordion>\n </Grid>\n </Grid>\n )\n )}\n </Grid>\n );\n })()}\n </React.Fragment>\n ) : (\n <Box sx={{ mt: 1 }}>\n <AlertPlaceholder height=\"250px\">\n Please select forms to sync\n </AlertPlaceholder>\n </Box>\n )}\n </Box>\n </Grid>\n </Grid>\n </Box>\n <Box\n sx={{\n my: 1,\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\",\n }}\n >\n {[\"SYNC\"].includes(tabValue) && (\n <Button\n type=\"submit\"\n startIcon={\n <FontAwesomeIcon size=\"lg\" icon={faArrowsRotate} />\n }\n color=\"success\"\n size=\"small\"\n variant=\"contained\"\n sx={{ mr: 1 }}\n >\n Start Syncing\n </Button>\n )}\n\n {[\"DOWNLOAD\"].includes(tabValue) && (\n <Button\n type=\"submit\"\n startIcon={<FontAwesomeIcon size=\"lg\" icon={faDownload} />}\n color=\"success\"\n size=\"small\"\n variant=\"contained\"\n sx={{ mr: 1 }}\n >\n Download Config\n </Button>\n )}\n </Box>\n </form>\n </Box>\n </Fade>\n </Modal>\n );\n}\n\nServerSyncModal.propTypes = {\n id: PropTypes.any,\n selectedFeature: PropTypes.any,\n navigationState: PropTypes.any,\n openServerSyncModal: PropTypes.any,\n openModalFunc: PropTypes.any,\n};\n"],"names":["ServerSyncModal","id","navigationState","selectedFeature","openServerSyncModal","openModalFunc","linkedForms","setLinkedForms","useState","allRouteMaps","setAllRouteMaps","serverDetails","setServerDetails","showPassword","setShowPassword","currentSelectedMigrationTab","setCurrentSelectedMigrationTab","loading","setLoading","selectedMigrationByFormCode","setSelectedMigrationByFormCode","syncedMigrations","setSyncedMigrations","tabValue","setTabValue","formCtrl","useForm","fields","remove","append","replace","useFieldArray","handleTabValueChange","event","newValue","fieldData","field","linkedField","f","useEffect","fetchForms","fetchServerDet","error","showToast","response","FormConfiguratorService","responseObj","uniqueMap","item","v","handleServerChanged","server","formMasterUUIDs","API","params","key","value","execute","onFormSelectionChange","formCodes","selectedFormDetails","code","form","_a","ml","currentFields","newForms","removedForms","maxVersion","max","current","index","handleClickShowPassword","show","handleDialogClose","encrypt","encryptionKey","initVector","data","GeneralUtil","getSortedUUIDsByCreatedOn","allowedUUIDs","uuid","a","b","onSubmit","keyIv","encryptedUserName","encryptedPassword","formConfigsData","migrationUUIDList","routeGraphMap","requestBody","syncData","syncMenuConfigFormsWithServer","downloadFeature","filename","blob","url","link","handleSelectMigrationByForm","formCode","migration","existingSelectedMigration","formatDate","dateString","date","day","month","year","hours","minutes","jsx","Modal","Backdrop","Fade","jsxs","Box","Typography","t","IconButton","FontAwesomeIcon","faXmark","theme","CircularProgress","Grid","Tabs","Tab","Fragment","Divider","Chip","FormControl","FormLabel","Controller","onChange","selectedServers","Autocomplete","option","_","serverCodes","TextField","selectedObjects","Tooltip","faCircleInfo","OutlinedInput","InputAdornment","e","faEyeSlash","faEye","FormHelperText","React","Alert","InfoBadge","currentForm","AlertPlaceholder","Checkbox","_b","Accordion","AccordionSummary","faChevronDown","AccordionDetails","PostgresEditor","Button","faArrowsRotate","faDownload","PropTypes"],"mappings":"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"}
|