diff --git a/src/app/(withAuth)/dashboard/inquiry_privacy/fencing/page.js b/src/app/(withAuth)/dashboard/inquiry_privacy/fencing/page.js index 0a1b9ec..b7aecdd 100644 --- a/src/app/(withAuth)/dashboard/inquiry_privacy/fencing/page.js +++ b/src/app/(withAuth)/dashboard/inquiry_privacy/fencing/page.js @@ -1,10 +1,7 @@ import InquiryPrivacyFencingPage from "@/components/dashboard/inquiryPrivacyFencing"; const Page = () => { - - return ( - - ); + return ; }; -export default Page; \ No newline at end of file +export default Page; diff --git a/src/app/(withAuth)/dashboard/layout.js b/src/app/(withAuth)/dashboard/layout.js index f00cb95..dc77f0a 100644 --- a/src/app/(withAuth)/dashboard/layout.js +++ b/src/app/(withAuth)/dashboard/layout.js @@ -12,4 +12,4 @@ const Layout = ({ children }) => { ); }; -export default Layout; \ No newline at end of file +export default Layout; diff --git a/src/app/(withAuth)/dashboard/page.js b/src/app/(withAuth)/dashboard/page.js index c43c1ae..46d4a05 100644 --- a/src/app/(withAuth)/dashboard/page.js +++ b/src/app/(withAuth)/dashboard/page.js @@ -1,9 +1,5 @@ const Page = () => { - - return ( - <> - - ); + return <>; }; export default Page; diff --git a/src/app/page.js b/src/app/page.js index 2997c35..a98fa16 100644 --- a/src/app/page.js +++ b/src/app/page.js @@ -1,7 +1,8 @@ import { redirect } from "next/navigation"; +const prefix = process.env.NODE_ENV === "production" ? "/v3" : ""; function Page() { - redirect("/dashboard", "replace"); + redirect(prefix + "/dashboard", "replace"); return null; } diff --git a/src/core/components/DataTable/Main.js b/src/core/components/DataTable/Main.js index 3ea2e65..45268ab 100644 --- a/src/core/components/DataTable/Main.js +++ b/src/core/components/DataTable/Main.js @@ -99,7 +99,7 @@ const DataTable_Main = (props) => { params.set("sorting", JSON.stringify(sortData)); return `${table_url}?${params}`; }, [table_url, filterData, pagination, columns]); - + const table = useMaterialReactTable({ localization: FA_DATATABLE_LOCALIZATION, columns, diff --git a/src/core/components/LtrTextField.jsx b/src/core/components/LtrTextField.jsx new file mode 100644 index 0000000..f31527c --- /dev/null +++ b/src/core/components/LtrTextField.jsx @@ -0,0 +1,10 @@ +import { TextField, styled } from "@mui/material"; + +const LtrTextField = styled(TextField)` + .MuiInputBase-input { + /* @noflip */ + direction: ltr; + } +`; + +export default LtrTextField; diff --git a/src/core/components/NotificationDesign/AskForKeepData.jsx b/src/core/components/NotificationDesign/AskForKeepData.jsx index 552aee1..8918a4c 100644 --- a/src/core/components/NotificationDesign/AskForKeepData.jsx +++ b/src/core/components/NotificationDesign/AskForKeepData.jsx @@ -25,7 +25,7 @@ function AskForKeepData({ filterData, sortData, user_id, page_name, table_name, }) .filter(Boolean); filterAction(user_id, page_name, table_name, filteredItems, columns); - + sortAction(user_id, page_name, table_name, sortData, columns); toast.dismiss({ containerId: "datatable" }); }; @@ -75,4 +75,4 @@ function AskForKeepData({ filterData, sortData, user_id, page_name, table_name, ); } -export default AskForKeepData; \ No newline at end of file +export default AskForKeepData; diff --git a/src/core/components/SidebarMenu.jsx b/src/core/components/SidebarMenu.jsx index 30a9297..74291a3 100644 --- a/src/core/components/SidebarMenu.jsx +++ b/src/core/components/SidebarMenu.jsx @@ -15,11 +15,11 @@ function selectPage(item, route) { showSubitems: item.route === route, }; } else if (item.Subitems && Array.isArray(item.Subitems)) { - const updatedSubitems = item.Subitems.map(subitem => selectPage(subitem, route)); + const updatedSubitems = item.Subitems.map((subitem) => selectPage(subitem, route)); return { ...item, Subitems: updatedSubitems, - showSubitems: updatedSubitems.some(subitem => subitem.showSubitems || subitem.route === route), + showSubitems: updatedSubitems.some((subitem) => subitem.showSubitems || subitem.route === route), }; } return item; @@ -28,59 +28,59 @@ function selectPage(item, route) { function reducer(state, action) { switch (action.type) { case "UPDATE_MENU": - const _permissions = action.permissions || [] - const filteredPageMenu = filterMenuItems(state, ['all', ..._permissions]) - return filteredPageMenu + const _permissions = action.permissions || []; + const filteredPageMenu = filterMenuItems(state, ["all", ..._permissions]); + return filteredPageMenu; case "COLLAPSE_MENU": return state.map((item) => action.id == item.id ? { - ...item, - showSubitems: !item.showSubitems, - } + ...item, + showSubitems: !item.showSubitems, + } : item ); case "COLLAPSE_SUB_ITEMS": return state.map((item) => { return item.hasSubitems ? { - ...item, - Subitems: item.Subitems.map((subitem) => - action.id === subitem.id - ? { - ...subitem, - showSubitems: !subitem.showSubitems, - } - : subitem - ), - } + ...item, + Subitems: item.Subitems.map((subitem) => + action.id === subitem.id + ? { + ...subitem, + showSubitems: !subitem.showSubitems, + } + : subitem + ), + } : item; }); case "COLLAPSE_SUB_SECOND_ITEMS": return state.map((item) => { return item.hasSubitems ? { - ...item, - Subitems: item.Subitems.map((subitem) => { - return subitem.hasSubitems - ? { - ...subitem, - Subitems: subitem.Subitems.map((secondSubitem) => - action.id === secondSubitem.id - ? { - ...secondSubitem, - showSubitems: !secondSubitem.showSubitems, - } - : secondSubitem - ), - } - : subitem; - }), - } + ...item, + Subitems: item.Subitems.map((subitem) => { + return subitem.hasSubitems + ? { + ...subitem, + Subitems: subitem.Subitems.map((secondSubitem) => + action.id === secondSubitem.id + ? { + ...secondSubitem, + showSubitems: !secondSubitem.showSubitems, + } + : secondSubitem + ), + } + : subitem; + }), + } : item; }); case "SELECTED": - return state.map(item => selectPage(item, action.route)); + return state.map((item) => selectPage(item, action.route)); default: throw new Error(); @@ -88,7 +88,7 @@ function reducer(state, action) { } const SidebarMenu = () => { - const { data: userPermissions } = usePermissions() + const { data: userPermissions } = usePermissions(); const [menuItems, dispatch] = useReducer(reducer, pageMenu); const pathname = usePathname(); const [selectedKey, setSelectedKey] = useState(null); @@ -99,10 +99,9 @@ const SidebarMenu = () => { }, [userPermissions, pathname]); useEffect(() => { - if (!userPermissions) return - dispatch({ type: 'UPDATE_MENU', permissions: userPermissions }); - }, [userPermissions]) - + if (!userPermissions) return; + dispatch({ type: "UPDATE_MENU", permissions: userPermissions }); + }, [userPermissions]); useEffect(() => { selectedKey && diff --git a/src/core/utils/filterMenuItems.js b/src/core/utils/filterMenuItems.js index 7bceeb5..bd35a95 100644 --- a/src/core/utils/filterMenuItems.js +++ b/src/core/utils/filterMenuItems.js @@ -1,7 +1,7 @@ export function filterMenuItems(items, _permissions = []) { return items.reduce((acc, item) => { if (item.permissions) { - if (item.permissions.some(permission => _permissions.includes(permission))) { + if (item.permissions.some((permission) => _permissions.includes(permission))) { acc.push(item); } } else if (item.hasSubitems) { @@ -14,4 +14,4 @@ export function filterMenuItems(items, _permissions = []) { } return acc; }, []); -} \ No newline at end of file +} diff --git a/src/core/utils/pageMenu.js b/src/core/utils/pageMenu.js index 0129a78..d47d020 100644 --- a/src/core/utils/pageMenu.js +++ b/src/core/utils/pageMenu.js @@ -1,5 +1,5 @@ import { Security } from "@mui/icons-material"; -const prefix = process.env.NODE_ENV === 'production' ? '/v3' : '' +const prefix = process.env.NODE_ENV === "production" ? "/v3" : ""; export const pageMenu = [ { @@ -8,7 +8,7 @@ export const pageMenu = [ type: "page", route: prefix + "/dashboard", icon: , - permissions: ["all"] + permissions: ["all"], }, { id: "userManagement", @@ -16,7 +16,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/user_management", icon: , - permissions: ['full-user-management', 'limited-user-management'] + permissions: ["full-user-management", "limited-user-management"], }, { id: "projectsManagment", @@ -31,7 +31,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/finance", icon: , - permissions: ['show-contract', 'show-contract-province'], + permissions: ["show-contract", "show-contract-province"], }, { id: "projectsManagmentList", @@ -39,7 +39,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/projects_list", icon: , - permissions: ["all"] + permissions: ["all"], }, { id: "projectsManagmentProposal", @@ -47,7 +47,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/proposal", icon: , - permissions: ['show-proposal', 'show-proposal-province'] + permissions: ["show-proposal", "show-proposal-province"], }, { id: "projectsManagmentLawmaker", @@ -55,7 +55,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/rahdari_projects/lawmakers", icon: , - permissions: ['show-lawmaker', 'show-lawmaker-province'] + permissions: ["show-lawmaker", "show-lawmaker-province"], }, { id: "projectsManagmentMap", @@ -63,7 +63,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=rahdari_projects", icon: , - permissions: ["all"] + permissions: ["all"], }, ], }, @@ -86,7 +86,10 @@ export const pageMenu = [ label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_items/supervisor/cartable", - permissions: ['show-road-item-supervise-cartable', 'show-road-item-supervise-cartable-province'] + permissions: [ + "show-road-item-supervise-cartable", + "show-road-item-supervise-cartable-province", + ], }, ], }, @@ -102,14 +105,14 @@ export const pageMenu = [ label: "ثبت فعالیت", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_items/operator/create", - permissions: ['create-road-item'] + permissions: ["create-road-item"], }, { id: "roadItemManagmentOparationCartable", label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_items/operator/cartable", - permissions: ['create-road-item'] + permissions: ["create-road-item"], }, ], }, @@ -119,7 +122,11 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_items", icon: , - permissions: ['show-road-item-supervise-cartable', 'show-road-item-supervise-cartable-province', 'create-road-item'] + permissions: [ + "show-road-item-supervise-cartable", + "show-road-item-supervise-cartable-province", + "create-road-item", + ], }, { id: "roadItemManagmentReport", @@ -127,7 +134,11 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_items/report", icon: , - permissions: ['show-road-item-supervise-cartable', 'show-road-item-supervise-cartable-province', 'create-road-item'] + permissions: [ + "show-road-item-supervise-cartable", + "show-road-item-supervise-cartable-province", + "create-road-item", + ], }, ], }, @@ -150,7 +161,10 @@ export const pageMenu = [ label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/road_patrols/supervisor/cartable", - permissions: ['show-road-patrol-supervise-cartable', 'show-road-patrol-supervise-cartable-province'] + permissions: [ + "show-road-patrol-supervise-cartable", + "show-road-patrol-supervise-cartable-province", + ], }, ], }, @@ -166,14 +180,14 @@ export const pageMenu = [ label: "ثبت اقدام", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_patrols/operator/create", - permissions: ['add-road-patrol'] + permissions: ["add-road-patrol"], }, { id: "roadPatrolManagmentOparationCartable", label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_patrols/operator/cartable", - permissions: ['add-road-patrol'] + permissions: ["add-road-patrol"], }, ], }, @@ -183,7 +197,11 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_patrols", icon: , - permissions: ['add-road-patrol', 'show-road-patrol-supervise-cartable', 'show-road-patrol-supervise-cartable-province'] + permissions: [ + "add-road-patrol", + "show-road-patrol-supervise-cartable", + "show-road-patrol-supervise-cartable-province", + ], }, { id: "roadPatrolManagmentReport", @@ -191,7 +209,11 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_patrols/report", icon: , - permissions: ['add-road-patrol', 'show-road-patrol-supervise-cartable', 'show-road-patrol-supervise-cartable-province'] + permissions: [ + "add-road-patrol", + "show-road-patrol-supervise-cartable", + "show-road-patrol-supervise-cartable-province", + ], }, ], }, @@ -207,23 +229,23 @@ export const pageMenu = [ label: "احداث و بهره برداری دیوارکشی و مستحدثات", type: "page", route: prefix + "/dashboard/inquiry_privacy/fencing", - permissions: ['all'] + permissions: ["all"], }, { id: "inquiryPrivacyManagmentRoad", label: "احداث راه دسترسی اختصاصی", type: "page", route: prefix + "/dashboard/inquiry_privacy/road", - permissions: ['all'] + permissions: ["all"], }, { id: "inquiryPrivacyManagmentInfrastructure", label: "احداث و بهره برداری تاسیسات زیربنایی", type: "page", route: prefix + "/dashboard/inquiry_privacy/infrastructure", - permissions: ['all'] + permissions: ["all"], }, - ] + ], }, { id: "safetyAndPrivacyManagment", @@ -244,14 +266,18 @@ export const pageMenu = [ label: "ثبت فعالیت", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/safety_and_privacy/operator/first_step", - permissions: ['add-safety-and-privacy'] + permissions: ["add-safety-and-privacy"], }, { id: "safetyAndPrivacyManagmentOparationCartable", label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/safety_and_privacy/operator/cartable", - permissions: ['show-safety-and-privacy-operator-cartable', 'show-safety-and-privacy-operator-cartable-province', 'show-safety-and-privacy-operator-cartable-edarate-shahri'] + permissions: [ + "show-safety-and-privacy-operator-cartable", + "show-safety-and-privacy-operator-cartable-province", + "show-safety-and-privacy-operator-cartable-edarate-shahri", + ], }, ], }, @@ -261,8 +287,12 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=safety_and_privacy", icon: , - permissions: ['show-safety-and-privacy-operator-cartable', 'show-safety-and-privacy-operator-cartable-province', - 'show-safety-and-privacy-operator-cartable-edarate-shahri', 'add-safety-and-privacy'] + permissions: [ + "show-safety-and-privacy-operator-cartable", + "show-safety-and-privacy-operator-cartable-province", + "show-safety-and-privacy-operator-cartable-edarate-shahri", + "add-safety-and-privacy", + ], }, { id: "safetyAndPrivacyManagmentReport", @@ -270,8 +300,12 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/safety_and_privacy/report", icon: , - permissions: ['show-safety-and-privacy-operator-cartable', 'show-safety-and-privacy-operator-cartable-province', - 'show-safety-and-privacy-operator-cartable-edarate-shahri', 'add-safety-and-privacy'] + permissions: [ + "show-safety-and-privacy-operator-cartable", + "show-safety-and-privacy-operator-cartable-province", + "show-safety-and-privacy-operator-cartable-edarate-shahri", + "add-safety-and-privacy", + ], }, ], }, @@ -294,7 +328,7 @@ export const pageMenu = [ label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations/supervisor/cartable", - permissions: ['supervise-fast-react', 'supervise-fast-react-province'] + permissions: ["supervise-fast-react", "supervise-fast-react-province"], }, ], }, @@ -304,7 +338,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations", icon: , - permissions: ['show-fast-react', 'show-fast-react-province', 'show-fast-react-edarate-shahri'] + permissions: ["show-fast-react", "show-fast-react-province", "show-fast-react-edarate-shahri"], }, { id: "roadObservationsManagmentOparation", @@ -318,7 +352,7 @@ export const pageMenu = [ label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations/operator/cartable", - permissions: ['show-fast-react', 'show-fast-react-province', 'show-fast-react-edarate-shahri'] + permissions: ["show-fast-react", "show-fast-react-province", "show-fast-react-edarate-shahri"], }, ], }, @@ -328,7 +362,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=road_observations", icon: , - permissions: ["all"] + permissions: ["all"], }, { id: "roadObservationsManagmentReport", @@ -336,7 +370,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/road_observations/report/index", icon: , - permissions: ["all"] + permissions: ["all"], }, ], }, @@ -353,7 +387,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/winter_camp", icon: , - permissions: ['show-camp', 'show-camp-province'] + permissions: ["show-camp", "show-camp-province"], }, { id: "winterCampManagmentFirstRing", @@ -361,7 +395,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=camp", icon: , - permissions: ['show-camp', 'show-camp-province'] + permissions: ["show-camp", "show-camp-province"], }, { id: "winterCampManagmentReport", @@ -369,7 +403,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/map?type=campNew", icon: , - permissions: ['show-camp', 'show-camp-province'] + permissions: ["show-camp", "show-camp-province"], }, ], }, @@ -392,7 +426,7 @@ export const pageMenu = [ label: "کارتابل", type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/receipt", - permissions: ["all"] + permissions: ["all"], }, ], }, @@ -402,7 +436,7 @@ export const pageMenu = [ type: "page", route: process.env.NEXT_PUBLIC_API_URL + "/v2/receipt/report", icon: , - permissions: ["all"] + permissions: ["all"], }, ], }, diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js index 81ac016..eb14f6c 100644 --- a/src/core/utils/routes.js +++ b/src/core/utils/routes.js @@ -3,4 +3,4 @@ const api = process.env.NEXT_PUBLIC_API_URL; export const GET_USER_ROUTE = api + "/webapi/user/get-permission"; export const GET_LOGIN_ROUTE = api + "/login_dev"; -export const GET_PERMISSIONS_ROUTE = api + "/webapi/user/get-permission"; \ No newline at end of file +export const GET_PERMISSIONS_ROUTE = api + "/webapi/user/get-permission"; diff --git a/src/lib/hooks/usePermissions.js b/src/lib/hooks/usePermissions.js index 4f54b41..004ff6d 100644 --- a/src/lib/hooks/usePermissions.js +++ b/src/lib/hooks/usePermissions.js @@ -3,16 +3,16 @@ import useSWR from "swr"; import useRequest from "./useRequest"; export const usePermissions = () => { - const request = useRequest() + const request = useRequest(); const fetcher = async (url) => { try { - const response = await request(url) - return response.data.data + const response = await request(url); + return response.data.data; } catch (error) { throw new Error(); } }; return useSWR(GET_PERMISSIONS_ROUTE, fetcher, { keepPreviousData: true }); -} \ No newline at end of file +};