From f7c93d040456eed344226b4485505a6136713237 Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sat, 17 Aug 2024 13:42:29 +0330 Subject: [PATCH 1/7] add version app --- .../dashboard/headerWithSidebar/index.jsx | 3 +- src/core/components/SidebarMenu.jsx | 62 +++++++++---------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx index 68f4bc6..0b77983 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx @@ -2,7 +2,7 @@ import SidebarMenu from "@/core/components/SidebarMenu"; import ChevronRightIcon from "@mui/icons-material/ChevronRight"; import MenuIcon from "@mui/icons-material/Menu"; -import { Box, Drawer, IconButton, Stack, styled, Toolbar } from "@mui/material"; +import { Box, Drawer, IconButton, Stack, styled, Toolbar, Typography } from "@mui/material"; import MuiAppBar from "@mui/material/AppBar"; import { useState } from "react"; import HeaderMenu from "./HeaderMenu"; @@ -103,6 +103,7 @@ const HeaderWithSidebar = ({ children }) => { + v{process.env.NEXT_PUBLIC_VERSION}
diff --git a/src/core/components/SidebarMenu.jsx b/src/core/components/SidebarMenu.jsx index 625972a..736b032 100644 --- a/src/core/components/SidebarMenu.jsx +++ b/src/core/components/SidebarMenu.jsx @@ -35,48 +35,48 @@ function reducer(state, action) { 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": @@ -113,7 +113,7 @@ const SidebarMenu = () => { return ( userPermissions && ( - + {menuItems.map((menuItem) => { return ; })} From f2e199ee8a1fdae1d65813531935f5f068ec521d Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sun, 18 Aug 2024 11:11:58 +0330 Subject: [PATCH 2/7] formatting --- src/app/(withAuth)/dashboard/layout.js | 2 +- src/app/(withAuth)/layout.js | 4 +- src/app/layout.js | 2 +- src/app/lfwd/page.js | 10 +- .../Actions/Create/index.jsx | 7 +- .../Forms/CreateOrUpdate.jsx | 656 +++++++++++++----- .../LocationOnMap/MarkerLocation/index.jsx | 25 +- .../Forms/LocationOnMap/index.jsx | 10 +- .../inquiryPrivacyFencing/Toolbar.jsx | 1 - .../dashboard/inquiryPrivacyFencing/index.jsx | 1 - .../inquiryPrivacyFencingList/index.jsx | 5 +- .../dashboard/headerWithLogo/index.jsx | 2 +- .../dashboard/headerWithSidebar/index.jsx | 8 +- src/core/components/DataTable/Main.js | 6 +- .../DataTable/body/TableBodyCell.js | 72 +- .../components/DataTable/body/TableBodyRow.js | 41 +- .../DataTable/filter/FilterBodyField.jsx | 22 +- .../DataTable/filter/FilterOptionList.jsx | 17 +- .../DataTable/head/TableHeadCell.js | 43 +- .../components/DataTable/hide/HideBody.jsx | 9 +- .../DataTable/hide/HideBodyField.jsx | 10 +- .../DataTable/hide/HideOrShowAll.jsx | 2 +- .../DataTable/reset/ResetStorage.jsx | 2 +- src/core/components/DataTable/table/Paper.js | 48 +- .../DataTable/toolbar/TopToolbar.js | 49 +- src/core/components/DialogTransition.jsx | 2 +- .../components/MapLayer/Loading/index.jsx | 8 +- src/core/components/MapLayer/index.jsx | 4 +- .../NotificationDesign/AskForKeepData.jsx | 19 +- src/core/components/PageTitle.jsx | 12 +- src/core/components/SidebarMenu.jsx | 60 +- src/core/components/StyledForm.jsx | 2 +- src/core/utils/cacheRtl.js | 2 +- src/core/utils/errorResponse.js | 2 +- src/core/utils/flattenArrayOfObjects.js | 1 - src/core/utils/flattenObjectOfObjects.jsx | 2 +- src/lib/contexts/DataTable.js | 4 +- src/lib/contexts/auth.js | 4 +- src/lib/contexts/tableSetting.js | 2 +- src/lib/hooks/useRequest.js | 5 +- 40 files changed, 733 insertions(+), 450 deletions(-) diff --git a/src/app/(withAuth)/dashboard/layout.js b/src/app/(withAuth)/dashboard/layout.js index 5a85c25..219cee2 100644 --- a/src/app/(withAuth)/dashboard/layout.js +++ b/src/app/(withAuth)/dashboard/layout.js @@ -4,7 +4,7 @@ import { Stack } from "@mui/material"; const Layout = ({ children }) => { return ( - + {children} diff --git a/src/app/(withAuth)/layout.js b/src/app/(withAuth)/layout.js index b9c3d01..63d25a7 100644 --- a/src/app/(withAuth)/layout.js +++ b/src/app/(withAuth)/layout.js @@ -1,9 +1,7 @@ import WithAuthMiddleware from "@/core/middlewares/withAuth"; const Layout = ({ children }) => { - return ( - {children} - ); + return {children}; }; export default Layout; diff --git a/src/app/layout.js b/src/app/layout.js index 580ae26..237d222 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -8,7 +8,7 @@ export const metadata = { export default function RootLayout({ children }) { return ( - + {children} diff --git a/src/app/lfwd/page.js b/src/app/lfwd/page.js index 61ebe16..70708e4 100644 --- a/src/app/lfwd/page.js +++ b/src/app/lfwd/page.js @@ -8,7 +8,7 @@ import Link from "next/link"; import { useEffect, useState } from "react"; const Page = ({ searchParams }) => { - const { getUser } = useAuth() + const { getUser } = useAuth(); const { username } = searchParams; const [login, setLogin] = useState(0); const request = useRequest(); @@ -17,7 +17,7 @@ const Page = ({ searchParams }) => { const login = async () => { try { await request(`${GET_LOGIN_ROUTE}?username=${username}`); - await getUser() + await getUser(); setLogin(1); } catch (error) { setLogin(2); @@ -31,7 +31,7 @@ const Page = ({ searchParams }) => { setLogin(0); try { await request(`${GET_LOGIN_ROUTE}?username=${username}`); - await getUser() + await getUser(); setLogin(1); } catch (error) { setLogin(2); @@ -44,8 +44,8 @@ const Page = ({ searchParams }) => { {login === 0 ? "درحال دریافت مجوز برای ارتباط با سرور..." : login === 1 - ? "ارتباط با سرور برقرار شد." - : "ارتباط با سرور برقرار نشد. مشکلی وجود دارد."} + ? "ارتباط با سرور برقرار شد." + : "ارتباط با سرور برقرار نشد. مشکلی وجود دارد."} )} diff --git a/src/components/dashboard/inquiryPrivacyFencing/Forms/CreateOrUpdate.jsx b/src/components/dashboard/inquiryPrivacyFencing/Forms/CreateOrUpdate.jsx index 435f39b..f3483ae 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/Forms/CreateOrUpdate.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/Forms/CreateOrUpdate.jsx @@ -1,7 +1,21 @@ import LtrTextField from "@/core/components/LtrTextField"; import StyledForm from "@/core/components/StyledForm"; import useRequest from "@/lib/hooks/useRequest"; -import { Autocomplete, Box, Button, Chip, Container, DialogActions, DialogContent, Fade, Grid, InputAdornment, Stack, TextField, Typography } from "@mui/material"; +import { + Autocomplete, + Box, + Button, + Chip, + Container, + DialogActions, + DialogContent, + Fade, + Grid, + InputAdornment, + Stack, + TextField, + Typography, +} from "@mui/material"; import { DatePicker, LocalizationProvider, faIR } from "@mui/x-date-pickers"; import { AdapterDateFnsJalali } from "@mui/x-date-pickers/AdapterDateFnsJalali"; import moment from "jalali-moment"; @@ -9,130 +23,135 @@ import { Controller, useForm } from "react-hook-form"; import LocationOnMap from "./LocationOnMap"; const initValues = { - dabirkhaneh_number: '', + dabirkhaneh_number: "", nameh_date: moment(), - nameh_date_fa: '', - marjae_pasokh: '', + nameh_date_fa: "", + marjae_pasokh: "", motaghazi_is_legal_id: null, - motaghazi_is_legal: '', - motaghazi_type_id: '', + motaghazi_is_legal: "", + motaghazi_type_id: "", motaghazi_type: null, - motaghazi_firstname: '', - motaghazi_lastname: '', - national_id: '', - shenase_melli: '', - tel_number: '', - mobile_number: '', - address: '', + motaghazi_firstname: "", + motaghazi_lastname: "", + national_id: "", + shenase_melli: "", + tel_number: "", + mobile_number: "", + address: "", edare_kol_id: null, - edare_kol: '', + edare_kol: "", edare_shahri_id: null, - edare_shahri: '', + edare_shahri: "", rah_type_id: null, - rah_type: '', - name_mehvar_id: '', + rah_type: "", + name_mehvar_id: "", name_mehvar_fa: null, mizan_harim: null, arze_navar: null, samt_id: null, - samt: '', - kilometr: '', - lat: '', - lon: '', + samt: "", + kilometr: "", + lat: "", + lon: "", zone: null, karbari_type_id: null, - karbari_type: '', - tarh_title: '', - masahat_zirbana: '', + karbari_type: "", + tarh_title: "", + masahat_zirbana: "", ehdasat_type_id: [], - ehdasat_type: '', - divarkeshi_distance: '', - mostahadesat_distance: '', + ehdasat_type: "", + divarkeshi_distance: "", + mostahadesat_distance: "", mahale_ejra_id: null, - mahale_ejra: '', + mahale_ejra: "", traffic_id: null, - traffic: '', + traffic: "", vaziat_eghtesadi_id: null, - vaziat_eghtesadi: '', + vaziat_eghtesadi: "", has_access_id: null, - has_access: '', - shomare_estelam_harim: '', - max_month: '', - max_day: '', - shomare_tahaodname: '', - shomare_daftarkhaneh: '', - description: '', - ronevesht: '', -} + has_access: "", + shomare_estelam_harim: "", + max_month: "", + max_day: "", + shomare_tahaodname: "", + shomare_daftarkhaneh: "", + description: "", + ronevesht: "", +}; const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { - const request = useRequest() - const { control, watch, register, handleSubmit, setValue, formState: { isSubmitting } } = useForm({ defaultValues: defaultValues || initValues }); + const request = useRequest(); + const { + control, + watch, + register, + handleSubmit, + setValue, + formState: { isSubmitting }, + } = useForm({ defaultValues: defaultValues || initValues }); const onSubmit = async (data) => { - const formData = new FormData() - formData.append('dabirkhaneh_number', data.dabirkhaneh_number) - formData.append('nameh_date', data.nameh_date.format('YYYY-MM-DD')) - formData.append('nameh_date_fa', data.nameh_date) - formData.append('marjae_pasokh', data.marjae_pasokh) - formData.append('motaghazi_is_legal_id', data.motaghazi_is_legal_id) - formData.append('motaghazi_is_legal', data.motaghazi_is_legal_id) - formData.append('motaghazi_type_id', 1) - formData.append('motaghazi_type', data.motaghazi_type) - formData.append('motaghazi_firstname', data.motaghazi_firstname) - formData.append('motaghazi_lastname', data.motaghazi_lastname) - formData.append('national_id', data.national_id) - formData.append('shenase_melli', data.national_id) - formData.append('tel_number', data.tel_number) - formData.append('mobile_number', data.mobile_number) - formData.append('address', data.address) - formData.append('edare_kol_id', data.edare_kol_id) - formData.append('edare_kol', data.edare_kol_id) - formData.append('edare_shahri_id', data.edare_shahri_id) - formData.append('edare_shahri', data.edare_shahri_id) - formData.append('rah_type_id', data.rah_type_id) - formData.append('rah_type', data.rah_type_id) - formData.append('name_mehvar_id', 1) - formData.append('name_mehvar_fa', data.name_mehvar_fa) - formData.append('mizan_harim', data.mizan_harim) - formData.append('arze_navar', data.arze_navar) - formData.append('samt_id', data.samt_id) - formData.append('samt', data.samt_id) - formData.append('kilometr', data.kilometr) - formData.append('lat', data.lat) - formData.append('lon', data.lon) - formData.append('zone', data.zone) - formData.append('karbari_type_id', data.karbari_type_id) - formData.append('karbari_type', data.karbari_type_id) - formData.append('tarh_title', data.tarh_title) - formData.append('masahat_zirbana', data.masahat_zirbana) - formData.append('ehdasat_type_id', data.ehdasat_type_id.join("|")) - formData.append('ehdasat_type', data.ehdasat_type_id.join("|")) - formData.append('divarkeshi_distance', data.divarkeshi_distance) - formData.append('mostahadesat_distance', data.mostahadesat_distance) - formData.append('mahale_ejra_id', data.mahale_ejra_id) - formData.append('mahale_ejra', data.mahale_ejra) - formData.append('traffic_id', data.traffic_id) - formData.append('traffic', data.traffic_id) - formData.append('vaziat_eghtesadi_id', data.vaziat_eghtesadi_id) - formData.append('vaziat_eghtesadi', data.vaziat_eghtesadi) - formData.append('has_access_id', data.has_access_id) - formData.append('has_access', data.has_access_id) - formData.append('shomare_estelam_harim', data.shomare_estelam_harim) - formData.append('max_month', data.max_month) - formData.append('max_day', data.max_day) - formData.append('shomare_tahaodname', data.shomare_tahaodname) - formData.append('shomare_daftarkhaneh', data.shomare_daftarkhaneh) - formData.append('description', data.description) - formData.append('ronevesht', data.ronevesht) + const formData = new FormData(); + formData.append("dabirkhaneh_number", data.dabirkhaneh_number); + formData.append("nameh_date", data.nameh_date.format("YYYY-MM-DD")); + formData.append("nameh_date_fa", data.nameh_date); + formData.append("marjae_pasokh", data.marjae_pasokh); + formData.append("motaghazi_is_legal_id", data.motaghazi_is_legal_id); + formData.append("motaghazi_is_legal", data.motaghazi_is_legal_id); + formData.append("motaghazi_type_id", 1); + formData.append("motaghazi_type", data.motaghazi_type); + formData.append("motaghazi_firstname", data.motaghazi_firstname); + formData.append("motaghazi_lastname", data.motaghazi_lastname); + formData.append("national_id", data.national_id); + formData.append("shenase_melli", data.national_id); + formData.append("tel_number", data.tel_number); + formData.append("mobile_number", data.mobile_number); + formData.append("address", data.address); + formData.append("edare_kol_id", data.edare_kol_id); + formData.append("edare_kol", data.edare_kol_id); + formData.append("edare_shahri_id", data.edare_shahri_id); + formData.append("edare_shahri", data.edare_shahri_id); + formData.append("rah_type_id", data.rah_type_id); + formData.append("rah_type", data.rah_type_id); + formData.append("name_mehvar_id", 1); + formData.append("name_mehvar_fa", data.name_mehvar_fa); + formData.append("mizan_harim", data.mizan_harim); + formData.append("arze_navar", data.arze_navar); + formData.append("samt_id", data.samt_id); + formData.append("samt", data.samt_id); + formData.append("kilometr", data.kilometr); + formData.append("lat", data.lat); + formData.append("lon", data.lon); + formData.append("zone", data.zone); + formData.append("karbari_type_id", data.karbari_type_id); + formData.append("karbari_type", data.karbari_type_id); + formData.append("tarh_title", data.tarh_title); + formData.append("masahat_zirbana", data.masahat_zirbana); + formData.append("ehdasat_type_id", data.ehdasat_type_id.join("|")); + formData.append("ehdasat_type", data.ehdasat_type_id.join("|")); + formData.append("divarkeshi_distance", data.divarkeshi_distance); + formData.append("mostahadesat_distance", data.mostahadesat_distance); + formData.append("mahale_ejra_id", data.mahale_ejra_id); + formData.append("mahale_ejra", data.mahale_ejra); + formData.append("traffic_id", data.traffic_id); + formData.append("traffic", data.traffic_id); + formData.append("vaziat_eghtesadi_id", data.vaziat_eghtesadi_id); + formData.append("vaziat_eghtesadi", data.vaziat_eghtesadi); + formData.append("has_access_id", data.has_access_id); + formData.append("has_access", data.has_access_id); + formData.append("shomare_estelam_harim", data.shomare_estelam_harim); + formData.append("max_month", data.max_month); + formData.append("max_day", data.max_day); + formData.append("shomare_tahaodname", data.shomare_tahaodname); + formData.append("shomare_daftarkhaneh", data.shomare_daftarkhaneh); + formData.append("description", data.description); + formData.append("ronevesht", data.ronevesht); try { - await request(url, 'post', { data: formData }) - handleClose() - mutate() - } catch (error) { - - } + await request(url, "post", { data: formData }); + handleClose(); + mutate(); + } catch (error) {} }; return ( @@ -141,11 +160,18 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { localeText={faIR.components.MuiLocalizationProvider.defaultProps.localeText} > - - + + - + { onChange={(newValue) => onChange(moment(newValue))} label="تاریخ نامه درخواست *" slotProps={{ - textField: { fullWidth: true, size: "small", autoComplete: 'off' }, + textField: { fullWidth: true, size: "small", autoComplete: "off" }, }} /> )} /> - + { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["حقوقی", "حقیقی"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - + { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["دولتی", "خصوصی"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -208,26 +253,76 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { - + - - + + - + - + - - + + - + { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["تهران"]} renderInput={(params) => ( - { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["تهران"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -281,10 +384,12 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} - options={["آزاد راه", "بزرگراه", 'راه فرعی درجه 3']} - renderInput={(params) => } + options={["آزاد راه", "بزرگراه", "راه فرعی درجه 3"]} + renderInput={(params) => ( + + )} /> )} /> @@ -299,16 +404,23 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["سایر"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - + @@ -322,10 +434,12 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["چپ", "راست"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -340,16 +454,27 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["12.5", "17.5"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - + { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["15", "30"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -371,15 +503,40 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { - + - + - - + + { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["38", "39"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -408,22 +572,42 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["اتاقک نگهبانی", "دولتی"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - + - - مترمربع, - }} /> + مترمربع, + }} + /> { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} renderTags={(value, getTagProps) => value.map((option, index) => { const { key, ...tagProps } = getTagProps({ index }); return ( - + ); }) } options={["تعمیرات", "احداث بنا"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - متر, - }} /> + متر, + }} + /> - متر, - }} /> + متر, + }} + /> { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["داخل حریم"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -490,10 +705,17 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["سبک (ضریب ۱)"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -508,10 +730,17 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["تست"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> @@ -526,46 +755,115 @@ const CreateOrUpdateForm = ({ handleClose, mutate, defaultValues, url }) => { disablePortal value={value} onChange={(event, newValue) => { - onChange(newValue) + onChange(newValue); }} options={["بله", "خیر"]} - renderInput={(params) => } + renderInput={(params) => ( + + )} /> )} /> - + - - حداکثر مدت زمان شروع عملیات: * - - + + + حداکثر مدت زمان شروع عملیات: * + + + - + - + - + - + - - + + - + ); }; export default CreateOrUpdateForm; diff --git a/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/MarkerLocation/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/MarkerLocation/index.jsx index d673679..c79c266 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/MarkerLocation/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/MarkerLocation/index.jsx @@ -12,21 +12,26 @@ const MarkerLocation = ({ setValue, defaultLatLon }) => { const location = useRef(); const map = useMapEvents({ move: (e) => { - const latlon = e.target.getCenter() + const latlon = e.target.getCenter(); location.current?.setLatLng(latlon); - setValue('lat', latlon.lat) - setValue('lon', latlon.lng) + setValue("lat", latlon.lat); + setValue("lon", latlon.lng); }, zoom: (e) => { - const latlon = e.target.getCenter() + const latlon = e.target.getCenter(); location.current?.setLatLng(latlon); - setValue('lat', latlon.lat) - setValue('lon', latlon.lng) + setValue("lat", latlon.lat); + setValue("lon", latlon.lng); }, }); return ( - - ) -} -export default MarkerLocation \ No newline at end of file + + ); +}; +export default MarkerLocation; diff --git a/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/index.jsx index fe65106..dfd8854 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/Forms/LocationOnMap/index.jsx @@ -11,12 +11,12 @@ const MapLayer = dynamic(() => import("@/core/components/MapLayer"), { const LocationOnMap = ({ setValue, defaultLatLon }) => { return ( - - + + - ) -} -export default LocationOnMap \ No newline at end of file + ); +}; +export default LocationOnMap; diff --git a/src/components/dashboard/inquiryPrivacyFencing/Toolbar.jsx b/src/components/dashboard/inquiryPrivacyFencing/Toolbar.jsx index 73cee6d..843492b 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/Toolbar.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/Toolbar.jsx @@ -1,7 +1,6 @@ import InquiryPrivacyFencingCreate from "./Actions/Create"; const Toolbar = ({ mutate }) => { - return ( <> diff --git a/src/components/dashboard/inquiryPrivacyFencing/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/index.jsx index c8dd8c9..40e9e58 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/index.jsx @@ -13,4 +13,3 @@ const InquiryPrivacyFencingPage = () => { ); }; export default InquiryPrivacyFencingPage; - diff --git a/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx index 86a2840..0341e45 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx @@ -231,12 +231,12 @@ const InquiryPrivacyFencingList = () => { enableColumnFilter: false, }, ], - [], + [] ); return ( <> - + { ); }; export default InquiryPrivacyFencingList; - diff --git a/src/components/layouts/dashboard/headerWithLogo/index.jsx b/src/components/layouts/dashboard/headerWithLogo/index.jsx index 2d0b7bc..9b59fa6 100644 --- a/src/components/layouts/dashboard/headerWithLogo/index.jsx +++ b/src/components/layouts/dashboard/headerWithLogo/index.jsx @@ -4,7 +4,7 @@ import HeaderBottom from "./HaederBottom"; const HeaderWithLogo = () => { return ( - + diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx index 0b77983..5190d9e 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx @@ -90,7 +90,7 @@ const HeaderWithSidebar = ({ children }) => { boxSizing: "border-box", borderTop: 1, borderTopColor: "divider", - position: 'inherit' + position: "inherit", }, }} variant="persistent" @@ -103,7 +103,9 @@ const HeaderWithSidebar = ({ children }) => { - v{process.env.NEXT_PUBLIC_VERSION} + + v{process.env.NEXT_PUBLIC_VERSION} +
@@ -114,4 +116,4 @@ const HeaderWithSidebar = ({ children }) => { ); }; -export default HeaderWithSidebar; \ No newline at end of file +export default HeaderWithSidebar; diff --git a/src/core/components/DataTable/Main.js b/src/core/components/DataTable/Main.js index 1f51695..5aed12b 100644 --- a/src/core/components/DataTable/Main.js +++ b/src/core/components/DataTable/Main.js @@ -32,13 +32,11 @@ const DataTable_Main = (props) => { const fetchUrl = useMemo(() => { const isValueEmpty = (value) => { if (Array.isArray(value)) { - return value.length === 0 || value.every(v => v === ""); + return value.length === 0 || value.every((v) => v === ""); } return value === "" || value === null || value === undefined; }; - const filteredFilterData = Object.values(filterData).filter( - (filter) => !isValueEmpty(filter.value), - ); + const filteredFilterData = Object.values(filterData).filter((filter) => !isValueEmpty(filter.value)); const params = new URLSearchParams(); params.set("start", `${pagination.pageIndex * pagination.pageSize}`); diff --git a/src/core/components/DataTable/body/TableBodyCell.js b/src/core/components/DataTable/body/TableBodyCell.js index 43f76f7..39f6895 100644 --- a/src/core/components/DataTable/body/TableBodyCell.js +++ b/src/core/components/DataTable/body/TableBodyCell.js @@ -1,10 +1,10 @@ -import { getCommonMRTCellStyles, parseFromValuesOrFunc } from '@/core/utils/utils'; -import { useTheme } from '@emotion/react'; -import { Skeleton, TableCell } from '@mui/material'; -import { isCellEditable, openEditingCell } from 'material-react-table'; -import { memo, useEffect, useMemo, useState } from 'react'; -import DataTable_CopyButton from '../buttons/CopyButton'; -import DataTable_TableBodyCellValue from './TableBodyCellValue'; +import { getCommonMRTCellStyles, parseFromValuesOrFunc } from "@/core/utils/utils"; +import { useTheme } from "@emotion/react"; +import { Skeleton, TableCell } from "@mui/material"; +import { isCellEditable, openEditingCell } from "material-react-table"; +import { memo, useEffect, useMemo, useState } from "react"; +import DataTable_CopyButton from "../buttons/CopyButton"; +import DataTable_TableBodyCellValue from "./TableBodyCellValue"; const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, staticRowIndex, table, ...rest }) => { const theme = useTheme(); @@ -82,10 +82,10 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta const borderStyle = showResizeBorder ? `2px solid ${draggingBorderColor} !important` : isDraggingColumn || isDraggingRow - ? `1px dashed ${theme.palette.grey[500]} !important` - : isHoveredColumn || isHoveredRow || isResizingColumn - ? `2px dashed ${draggingBorderColor} !important` - : undefined; + ? `1px dashed ${theme.palette.grey[500]} !important` + : isHoveredColumn || isHoveredRow || isResizingColumn + ? `2px dashed ${draggingBorderColor} !important` + : undefined; if (showResizeBorder) { return columnResizeDirection === "ltr" ? { borderRight: borderStyle } : { borderLeft: borderStyle }; @@ -93,18 +93,18 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta return borderStyle ? { - borderBottom: - isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn) ? borderStyle : undefined, - borderLeft: - isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isFirstColumn) - ? borderStyle - : undefined, - borderRight: - isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isLastColumn) - ? borderStyle - : undefined, - borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined, - } + borderBottom: + isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn) ? borderStyle : undefined, + borderLeft: + isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isFirstColumn) + ? borderStyle + : undefined, + borderRight: + isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isLastColumn) + ? borderStyle + : undefined, + borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined, + } : undefined; }, [columnSizingInfo.isResizingColumn, draggingColumn, draggingRow, hoveredColumn, hoveredRow, staticRowIndex]); @@ -178,8 +178,8 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta "&:hover": { outline: actionCell?.id === cell.id || - (editDisplayMode === "cell" && isEditable) || - (editDisplayMode === "table" && (isCreating || isEditing)) + (editDisplayMode === "cell" && isEditable) || + (editDisplayMode === "table" && (isCreating || isEditing)) ? `1px solid ${theme.palette.grey[500]}` : undefined, textOverflow: "clip", @@ -188,8 +188,8 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta cursor: isRightClickable ? "context-menu" : isEditable && editDisplayMode === "cell" - ? "pointer" - : "inherit", + ? "pointer" + : "inherit", outline: actionCell?.id === cell.id ? `1px solid ${theme.palette.grey[500]}` : undefined, outlineOffset: "-1px", overflow: "hidden", @@ -199,12 +199,12 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta ? "0 0.5rem" : "0.5rem" : density === "comfortable" - ? columnDefType === "display" - ? "0.5rem 0.75rem" - : "1rem" - : columnDefType === "display" - ? "1rem 1.25rem" - : "1.5rem", + ? columnDefType === "display" + ? "0.5rem 0.75rem" + : "1rem" + : columnDefType === "display" + ? "1rem 1.25rem" + : "1.5rem", textOverflow: columnDefType !== "display" ? "ellipsis" : undefined, whiteSpace: row.getIsPinned() || density === "compact" ? "nowrap" : "normal", @@ -215,7 +215,7 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta theme, }), ...draggingBorders, - backgroundColor: baseBackgroundColor + backgroundColor: baseBackgroundColor, })} > {tableCellProps.children ?? ( @@ -225,8 +225,8 @@ const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, sta ) : showSkeletons !== false && (isLoading || showSkeletons) ? ( ) : columnDefType === "display" && - (["mrt-row-expand", "mrt-row-numbers", "mrt-row-select"].includes(column.id) || - !row.getIsGrouped()) ? ( + (["mrt-row-expand", "mrt-row-numbers", "mrt-row-select"].includes(column.id) || + !row.getIsGrouped()) ? ( columnDef.Cell?.({ cell, column, diff --git a/src/core/components/DataTable/body/TableBodyRow.js b/src/core/components/DataTable/body/TableBodyRow.js index e35f29a..2d21f32 100644 --- a/src/core/components/DataTable/body/TableBodyRow.js +++ b/src/core/components/DataTable/body/TableBodyRow.js @@ -91,16 +91,16 @@ const DataTable_TableBodyRow = ({ const cellHighlightColor = isRowSelected ? selectedRowBackgroundColor : isRowPinned - ? pinnedRowBackgroundColor - : undefined; + ? pinnedRowBackgroundColor + : undefined; const cellHighlightColorHover = tableRowProps?.hover !== false ? isRowSelected ? cellHighlightColor : theme.palette.mode === "dark" - ? `${lighten(baseBackgroundColor, 0.2)}` - : `${darken(baseBackgroundColor, 0.2)}` + ? `${lighten(baseBackgroundColor, 0.2)}` + : `${darken(baseBackgroundColor, 0.2)}` : undefined; return ( @@ -126,9 +126,9 @@ const DataTable_TableBodyRow = ({ sx={(theme) => ({ "&:hover td:after": cellHighlightColorHover ? { - backgroundColor: alpha(cellHighlightColorHover, 0.3), - ...commonCellBeforeAfterStyles, - } + backgroundColor: alpha(cellHighlightColorHover, 0.3), + ...commonCellBeforeAfterStyles, + } : undefined, bottom: !virtualRow && bottomPinnedIndex !== undefined && isRowPinned @@ -140,24 +140,25 @@ const DataTable_TableBodyRow = ({ position: virtualRow ? "absolute" : rowPinningDisplayMode?.includes("sticky") && isRowPinned - ? "sticky" - : "relative", + ? "sticky" + : "relative", td: { ...getCommonPinnedCellStyles({ table, theme }), }, "td:after": cellHighlightColor ? { - backgroundColor: cellHighlightColor, - ...commonCellBeforeAfterStyles, - } + backgroundColor: cellHighlightColor, + ...commonCellBeforeAfterStyles, + } : undefined, top: virtualRow ? 0 : topPinnedIndex !== undefined && isRowPinned - ? `${topPinnedIndex * rowHeight + - (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0) + ? `${ + topPinnedIndex * rowHeight + + (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0) }px` - : undefined, + : undefined, transition: virtualRow ? "none" : "all 150ms ease-in-out", width: "100%", zIndex: rowPinningDisplayMode?.includes("sticky") && isRowPinned ? 2 : 0, @@ -181,11 +182,11 @@ const DataTable_TableBodyRow = ({ }; return cell ? ( memoMode === "cells" && - cell.column.columnDef.columnDefType === "data" && - !draggingColumn && - !draggingRow && - editingCell?.id !== cell.id && - editingRow?.id !== row.id ? ( + cell.column.columnDef.columnDefType === "data" && + !draggingColumn && + !draggingRow && + editingCell?.id !== cell.id && + editingRow?.id !== row.id ? ( ) : ( diff --git a/src/core/components/DataTable/filter/FilterBodyField.jsx b/src/core/components/DataTable/filter/FilterBodyField.jsx index 7f0337e..a9bef12 100644 --- a/src/core/components/DataTable/filter/FilterBodyField.jsx +++ b/src/core/components/DataTable/filter/FilterBodyField.jsx @@ -18,15 +18,15 @@ const columnFilterModeOptionFa = { }; function FilterBodyField({ - column, - filterParameters, - handleChange, - handleBlur, - setFieldValue, - errors, - touched, - resetForm, - }) { + column, + filterParameters, + handleChange, + handleBlur, + setFieldValue, + errors, + touched, + resetForm, +}) { const [anchorEl, setAnchorEl] = useState(null); const defaultFilterTranslation = columnFilterModeOptionFa[filterParameters.filterFn] || filterParameters.filterFn; @@ -48,8 +48,8 @@ function FilterBodyField({ touched={touched} /> ) : filterParameters.datatype === "numeric" && - filterParameters.filterFn === "equals" && - Array.isArray(column.columnSelectOption) ? ( + filterParameters.filterFn === "equals" && + Array.isArray(column.columnSelectOption) ? ( { diff --git a/src/core/components/DataTable/head/TableHeadCell.js b/src/core/components/DataTable/head/TableHeadCell.js index 046f833..631a122 100644 --- a/src/core/components/DataTable/head/TableHeadCell.js +++ b/src/core/components/DataTable/head/TableHeadCell.js @@ -67,20 +67,20 @@ const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, const borderStyle = showResizeBorder ? `2px solid ${draggingBorderColor} !important` : draggingColumn?.id === column.id - ? `1px dashed ${theme.palette.grey[500]}` - : hoveredColumn?.id === column.id - ? `2px dashed ${draggingBorderColor}` - : undefined; + ? `1px dashed ${theme.palette.grey[500]}` + : hoveredColumn?.id === column.id + ? `2px dashed ${draggingBorderColor}` + : undefined; if (showResizeBorder) { return columnResizeDirection === "ltr" ? { borderRight: borderStyle } : { borderLeft: borderStyle }; } const draggingBorders = borderStyle ? { - borderLeft: borderStyle, - borderRight: borderStyle, - borderTop: borderStyle, - } + borderLeft: borderStyle, + borderRight: borderStyle, + borderTop: borderStyle, + } : undefined; return draggingBorders; @@ -151,19 +151,19 @@ const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, density === "compact" ? "0.5rem" : density === "comfortable" - ? columnDefType === "display" - ? "0.75rem" - : "1rem" - : columnDefType === "display" - ? "1rem 1.25rem" - : "1.5rem", + ? columnDefType === "display" + ? "0.75rem" + : "1rem" + : columnDefType === "display" + ? "1rem 1.25rem" + : "1.5rem", pb: columnDefType === "display" ? 0 : showColumnFilters || density === "compact" ? "0.4rem" : "0.6rem", pt: columnDefType === "group" || density === "compact" ? "0.25rem" : density === "comfortable" - ? ".75rem" - : "1.25rem", + ? ".75rem" + : "1.25rem", userSelect: enableMultiSort && column.getCanSort() ? "none" : undefined, verticalAlign: "middle", ...getCommonMRTCellStyles({ @@ -188,8 +188,8 @@ const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, columnDefType === "group" || tableCellProps?.align === "center" ? "center" : column.getCanResize() - ? "space-between" - : "flex-start", + ? "space-between" + : "flex-start", position: "relative", width: "100%", }} @@ -218,7 +218,7 @@ const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, textAlign: "start", color: "#fff", fontWeight: "400", - whiteSpace: "nowrap" + whiteSpace: "nowrap", }} > {HeaderElement} @@ -226,9 +226,10 @@ const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, {column.getCanSort() && columnDefType !== "group" && ( {columns.map((column) => ( - + ))} @@ -50,4 +45,4 @@ function HideBody({ columns, drawerState, setDrawerState }) { ); } -export default HideBody; \ No newline at end of file +export default HideBody; diff --git a/src/core/components/DataTable/hide/HideBodyField.jsx b/src/core/components/DataTable/hide/HideBodyField.jsx index fe3dc2d..6b60966 100644 --- a/src/core/components/DataTable/hide/HideBodyField.jsx +++ b/src/core/components/DataTable/hide/HideBodyField.jsx @@ -22,7 +22,7 @@ const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ function HideBodyField({ column, hideData, setHideData }) { const handleCheckboxChange = () => { - setHideData(prevData => { + setHideData((prevData) => { const updateHideData = (data, id) => { if (data.hasOwnProperty(id)) { return { ...data, [id]: !data[id] }; @@ -44,11 +44,7 @@ function HideBodyField({ column, hideData, setHideData }) { if (typeof hideData[column.id] === "boolean") { return ( - + {column.header} ); @@ -77,4 +73,4 @@ function HideBodyField({ column, hideData, setHideData }) { ); } -export default HideBodyField; \ No newline at end of file +export default HideBodyField; diff --git a/src/core/components/DataTable/hide/HideOrShowAll.jsx b/src/core/components/DataTable/hide/HideOrShowAll.jsx index ee3a903..c0d2e8d 100644 --- a/src/core/components/DataTable/hide/HideOrShowAll.jsx +++ b/src/core/components/DataTable/hide/HideOrShowAll.jsx @@ -67,4 +67,4 @@ function HideOrShowAll({ hideData, setHideData }) { ); } -export default HideOrShowAll; \ No newline at end of file +export default HideOrShowAll; diff --git a/src/core/components/DataTable/reset/ResetStorage.jsx b/src/core/components/DataTable/reset/ResetStorage.jsx index 6d8a534..9f6abd5 100644 --- a/src/core/components/DataTable/reset/ResetStorage.jsx +++ b/src/core/components/DataTable/reset/ResetStorage.jsx @@ -19,4 +19,4 @@ function ResetStorage({ user_id, page_name, table_name }) { ); } -export default ResetStorage; \ No newline at end of file +export default ResetStorage; diff --git a/src/core/components/DataTable/table/Paper.js b/src/core/components/DataTable/table/Paper.js index 05a0dbb..f972030 100644 --- a/src/core/components/DataTable/table/Paper.js +++ b/src/core/components/DataTable/table/Paper.js @@ -5,17 +5,17 @@ import DataTable_TopToolbar from "../toolbar/TopToolbar"; import DataTable_TableContainer from "./TableContainer"; const DataTable_Paper = ({ - table, - table_name, - columns, - user_id, - page_name, - mutate, - need_filter, - table_url, - table_title, - ...rest - }) => { + table, + table_name, + columns, + user_id, + page_name, + mutate, + need_filter, + table_url, + table_title, + ...rest +}) => { const { getState, options: { @@ -50,19 +50,19 @@ const DataTable_Paper = ({ style={{ ...(isFullScreen ? { - bottom: 0, - height: "100dvh", - left: 0, - margin: 0, - maxHeight: "100dvh", - maxWidth: "100dvw", - padding: 0, - position: "fixed", - right: 0, - top: 0, - width: "100dvw", - zIndex: 999, - } + bottom: 0, + height: "100dvh", + left: 0, + margin: 0, + maxHeight: "100dvh", + maxWidth: "100dvw", + padding: 0, + position: "fixed", + right: 0, + top: 0, + width: "100dvw", + zIndex: 999, + } : {}), ...paperProps?.style, }} diff --git a/src/core/components/DataTable/toolbar/TopToolbar.js b/src/core/components/DataTable/toolbar/TopToolbar.js index fc21ae7..a4d9db7 100644 --- a/src/core/components/DataTable/toolbar/TopToolbar.js +++ b/src/core/components/DataTable/toolbar/TopToolbar.js @@ -8,16 +8,16 @@ import ResetStorage from "@/core/components/DataTable/reset/ResetStorage"; import HideColumn from "@/core/components/DataTable/hide"; const DataTable_TopToolbar = ({ - mutate, - need_filter, - table, - columns, - table_url, - user_id, - page_name, - table_name, - table_title, - }) => { + mutate, + need_filter, + table, + columns, + table_url, + user_id, + page_name, + table_name, + table_title, +}) => { const { getState, options: { @@ -70,13 +70,21 @@ const DataTable_TopToolbar = ({ width: "100%", }} > - {renderTopToolbarCustomActions?.({ table })} - {table_title || ""} + + {renderTopToolbarCustomActions?.({ table })} + + + {table_title || ""} + {enableToolbarInternalActions && ( - + + table_name={table_name} + /> {need_filter && ( ; }); -export default DialogTransition \ No newline at end of file +export default DialogTransition; diff --git a/src/core/components/MapLayer/Loading/index.jsx b/src/core/components/MapLayer/Loading/index.jsx index 5d42012..806168c 100644 --- a/src/core/components/MapLayer/Loading/index.jsx +++ b/src/core/components/MapLayer/Loading/index.jsx @@ -2,11 +2,7 @@ import { Box, LinearProgress, Stack } from "@mui/material"; function MapLoading() { return ( - + @@ -14,4 +10,4 @@ function MapLoading() { ); } -export default MapLoading; \ No newline at end of file +export default MapLoading; diff --git a/src/core/components/MapLayer/index.jsx b/src/core/components/MapLayer/index.jsx index 52209da..1a07c9c 100644 --- a/src/core/components/MapLayer/index.jsx +++ b/src/core/components/MapLayer/index.jsx @@ -1,7 +1,7 @@ "use client"; import { MapContainer, TileLayer, useMap } from "react-leaflet"; -export const IRAN_CENTER = L.latLng(32.4279, 53.6880); +export const IRAN_CENTER = L.latLng(32.4279, 53.688); const MapOptions = ({ options }) => { const map = useMap(); @@ -40,4 +40,4 @@ function MapLayer({ children, style, otherLayers, options }) { ); } -export default MapLayer; \ No newline at end of file +export default MapLayer; diff --git a/src/core/components/NotificationDesign/AskForKeepData.jsx b/src/core/components/NotificationDesign/AskForKeepData.jsx index fa9bfa6..9e1cbd9 100644 --- a/src/core/components/NotificationDesign/AskForKeepData.jsx +++ b/src/core/components/NotificationDesign/AskForKeepData.jsx @@ -10,9 +10,7 @@ import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects"; function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, table_name, columns }) { const { filterAction, sortAction, hideAction } = useTableSetting(); - const filteredHideData = Object.fromEntries( - Object.entries(hideData).filter(([key, value]) => value === false), - ); + const filteredHideData = Object.fromEntries(Object.entries(hideData).filter(([key, value]) => value === false)); const flattenHideData = flattenObjectOfObjects(filteredHideData); @@ -53,19 +51,10 @@ function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, ta آیا مایل به ذخیره تغییر های اعمال شده برای دفعات بعد هستید؟ - - @@ -73,4 +62,4 @@ function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, ta ); } -export default AskForKeepData; \ No newline at end of file +export default AskForKeepData; diff --git a/src/core/components/PageTitle.jsx b/src/core/components/PageTitle.jsx index 605ad47..4c93098 100644 --- a/src/core/components/PageTitle.jsx +++ b/src/core/components/PageTitle.jsx @@ -4,9 +4,15 @@ import { Chip, Divider, Typography } from "@mui/material"; const PageTitle = ({ title }) => { return ( - {title}} /> + + + {title} + + } + /> + ); }; export default PageTitle; - diff --git a/src/core/components/SidebarMenu.jsx b/src/core/components/SidebarMenu.jsx index 736b032..a2c0531 100644 --- a/src/core/components/SidebarMenu.jsx +++ b/src/core/components/SidebarMenu.jsx @@ -35,48 +35,48 @@ function reducer(state, action) { 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": diff --git a/src/core/components/StyledForm.jsx b/src/core/components/StyledForm.jsx index 4513129..accf0ab 100644 --- a/src/core/components/StyledForm.jsx +++ b/src/core/components/StyledForm.jsx @@ -1,5 +1,5 @@ import { styled } from "@mui/material"; -const StyledForm = styled('form')``; +const StyledForm = styled("form")``; export default StyledForm; diff --git a/src/core/utils/cacheRtl.js b/src/core/utils/cacheRtl.js index 6cf5267..a646aa5 100644 --- a/src/core/utils/cacheRtl.js +++ b/src/core/utils/cacheRtl.js @@ -4,7 +4,7 @@ import { prefixer } from "stylis"; import stylisRTLPlugin from "stylis-plugin-rtl"; import { CacheProvider } from "@emotion/react"; -const isBrowser = typeof document !== 'undefined'; +const isBrowser = typeof document !== "undefined"; const createEmotionCache = () => { let insertionPoint; diff --git a/src/core/utils/errorResponse.js b/src/core/utils/errorResponse.js index 9eae51c..c71bfed 100644 --- a/src/core/utils/errorResponse.js +++ b/src/core/utils/errorResponse.js @@ -19,7 +19,7 @@ const errorServer = (response, notification, toastContainer) => { const errorClient = (response, notification, toastContainer, logout) => { switch (response.status) { case 401: - logout() + logout(); if (notification) errorUnauthorizedToast(toastContainer); break; case 422: diff --git a/src/core/utils/flattenArrayOfObjects.js b/src/core/utils/flattenArrayOfObjects.js index ec3cc23..e4d5051 100644 --- a/src/core/utils/flattenArrayOfObjects.js +++ b/src/core/utils/flattenArrayOfObjects.js @@ -7,4 +7,3 @@ export const flattenArrayOfObjects = (array, key) => { return acc; }, []); }; - diff --git a/src/core/utils/flattenObjectOfObjects.jsx b/src/core/utils/flattenObjectOfObjects.jsx index 3fdac84..fb03576 100644 --- a/src/core/utils/flattenObjectOfObjects.jsx +++ b/src/core/utils/flattenObjectOfObjects.jsx @@ -9,4 +9,4 @@ export const flattenObjectOfObjects = (obj, res = {}) => { } } return res; -}; \ No newline at end of file +}; diff --git a/src/lib/contexts/DataTable.js b/src/lib/contexts/DataTable.js index 789df28..ff3439c 100644 --- a/src/lib/contexts/DataTable.js +++ b/src/lib/contexts/DataTable.js @@ -23,7 +23,7 @@ const DataTableProvider = ({ children, user_id, page_name, table_name, columns } const filterValues = flatColumns.reduce((acc, column) => { if (!column.enableColumnFilter) return acc; const storeFilter = settingStore?.[user_id]?.[page_name]?.[table_name]?.["filters"]?.find( - (filter) => filter.id === column.id, + (filter) => filter.id === column.id ); if (column.datatype === "array") { acc[column.id] = { @@ -100,7 +100,7 @@ const DataTableProvider = ({ children, user_id, page_name, table_name, columns } position: "bottom-left", draggable: true, autoClose: false, - }, + } ); } else { toast.update("keep_data", { diff --git a/src/lib/contexts/auth.js b/src/lib/contexts/auth.js index 074c8db..0dfa41a 100644 --- a/src/lib/contexts/auth.js +++ b/src/lib/contexts/auth.js @@ -49,7 +49,7 @@ export const AuthProvider = ({ children }) => { clearUser(); changeAuthState(false); changeInitAuth(true); - } + }; const getUser = useCallback(async () => { try { @@ -77,7 +77,7 @@ export const AuthProvider = ({ children }) => { isAuth: state.isAuth, initAuthState: state.initAuthState, getUser, - logout + logout, }} > {children} diff --git a/src/lib/contexts/tableSetting.js b/src/lib/contexts/tableSetting.js index 0484511..55d4e29 100644 --- a/src/lib/contexts/tableSetting.js +++ b/src/lib/contexts/tableSetting.js @@ -130,4 +130,4 @@ export const TableSettingProvider = ({ children }) => { {children} ); -}; \ No newline at end of file +}; diff --git a/src/lib/hooks/useRequest.js b/src/lib/hooks/useRequest.js index 48a2080..eb30a18 100644 --- a/src/lib/hooks/useRequest.js +++ b/src/lib/hooks/useRequest.js @@ -16,7 +16,7 @@ const defaultOptions = { }; const useRequest = (initOptions) => { - const { logout } = useAuth() + const { logout } = useAuth(); const _options = Object.assign({}, defaultOptions, initOptions); @@ -38,7 +38,8 @@ const useRequest = (initOptions) => { errorResponse( error.response, mergedOptions.notification.show && mergedOptions.notification.failed, - "request_data", logout + "request_data", + logout ); } throw error; From 980a5248f4c135f5e1f8a1f0cb8515d5947d5723 Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sun, 18 Aug 2024 13:19:58 +0330 Subject: [PATCH 3/7] add header menu --- .../headerWithSidebar/HeaderMenu/index.jsx | 53 +++++++++++- .../dashboard/headerWithSidebar/index.jsx | 3 +- src/core/utils/headerMenu.js | 80 +++++++++++++++++++ 3 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 src/core/utils/headerMenu.js diff --git a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx index c705242..5dcf168 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx @@ -1,4 +1,53 @@ -const HeaderMenu = () => { - return <>منو; +import { ExpandLess, ExpandMore, Link } from "@mui/icons-material"; +import { Button, Divider, ListItemIcon, ListItemText, Menu, MenuItem } from "@mui/material"; +import NextLink from "next/link"; +import { useState } from "react"; + +const HeaderMenu = ({ menu }) => { + const [anchorEl, setAnchorEl] = useState(null); + const open = Boolean(anchorEl); + + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + {menu.subMenu.map((subMenu, index) => ( + <> + {subMenu.map(sub => ( + + + + + + {sub.title} + + ))} + {menu.subMenu.length - 1 !== index && ( + + )} + + ))} + + + ); }; export default HeaderMenu; diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx index 5190d9e..7ff7e4f 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx @@ -6,6 +6,7 @@ import { Box, Drawer, IconButton, Stack, styled, Toolbar, Typography } from "@mu import MuiAppBar from "@mui/material/AppBar"; import { useState } from "react"; import HeaderMenu from "./HeaderMenu"; +import { headerMenu } from "@/core/utils/headerMenu"; const drawerWidth = 300; @@ -75,7 +76,7 @@ const HeaderWithSidebar = ({ children }) => { - + {headerMenu.map(menu => )} diff --git a/src/core/utils/headerMenu.js b/src/core/utils/headerMenu.js new file mode 100644 index 0000000..4f42f34 --- /dev/null +++ b/src/core/utils/headerMenu.js @@ -0,0 +1,80 @@ +export const headerMenu = [ + { + title: 'تصادفات', + subMenu: [ + [ + { + title: 'تصادفات روزانه', + href: 'https://rms.witel.ir/v2/daily_accidents/create' + } + ] + ] + }, + { + title: 'گزارش های جامع', + subMenu: [ + [ + { + title: 'گزارش محوری', + href: 'https://rms.witel.ir/v2/axis_reports' + }, + { + title: 'هوش تجاری (‌BI)', + href: 'https://rms.witel.ir/v2/axis_reports' + } + ] + ] + }, + { + title: 'زیرساخت و ناوگان', + subMenu: [ + [ + { + title: 'پراکندگی بر روی نقشه راهدارخانه ها', + href: 'https://rms.witel.ir/v2/map?type=rahdar' + }, + { + title: 'راهدارخانه ها', + href: 'https://rms.witel.ir/v2/rahdari_points' + } + ], + [ + { + title: 'ممیزی ماشین آلات راهداری کشور', + href: 'https://rms.witel.ir/cmms-audit' + } + ] + ] + }, + { + title: 'سامانه های راهداری', + subMenu: [ + [ + { + title: 'تحقیق و توسعه', + href: 'https://rms.witel.ir/RandD' + }, + { + title: 'سامانه مدیریت یکپارچه زیرساخت های راه (PMS,BMS,SMS)', + href: 'http://roadams.rmto.ir' + }, + { + title: 'سامانه مدیریت ناوگان (FMS)', + href: 'http://fms.141.ir' + }, + { + title: 'سامانه جامع مدیریت سوانح و حوادث جاده ای', + href: 'https://items.rmto.ir' + }, + { + title: 'سامانه مدیریت نگهداری ماشین آلات (CMMS)', + href: 'https://cmms.rmto.ir/Login.aspx?ReturnUrl=%2f' + }, + { + title: 'درگاه کاتالوگ داده', + href: 'https://roadams.rmto.ir:8080' + } + ] + ] + } +] \ No newline at end of file From 15bab1a6a44b8e42c4c5ab497e3c7d68c20d794c Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sun, 18 Aug 2024 15:25:20 +0330 Subject: [PATCH 4/7] change style headers --- src/assets/images/rmsLogo.png | Bin 17747 -> 3340 bytes .../headerWithLogo/HaederBottom/index.jsx | 4 ++-- .../headerWithLogo/HaederTop/index.jsx | 2 +- .../dashboard/headerWithSidebar/index.jsx | 5 ++++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/assets/images/rmsLogo.png b/src/assets/images/rmsLogo.png index 8340d5aab2b5b5fcc0942998129e90a6cc2dbc54..49795c3304ada0bc0eed3d4bc70aec770b875a77 100644 GIT binary patch literal 3340 zcmV+n4fFDeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T@T}D@>i|vIsB6Boa^; zxw0#Z-G%8Z;q&rXL^6*|yTxPezcnsCX@VT_BaFd>P-G}o5!E!r@gj18 zs)VGl56O`xq)0)y4}u~g?`LHjCm*}S7{QHUzlzu{w!9F`0sQQR!%-{6MvOwpD!SD` zqC!H^8fJhmciiI#D;y^T+OQTNoWO>4(f917TYx*LQDD~Q@nS+wD+dWd`=%)(k96c# zt{VREw$#yc_Pxgo<{2_rLBDwzMX-*yE@aZSML$PpyMU;RB5E?4IRq&+x`S;&Q)#H%FQLSN}&hJZWVSvuuXJi5tg3Wz#+EhheSrq*xHL1 zEU$^8Wv~=xerrSFpyv&Uz>S3Co(4be&#EoQc2bqu#uvI9%k%%e^YKvas+9g_1OG>h zl^+res11^$%}L0r+Jy#CVRXN}urcPjEUmJP1Xj>AP01_WFut()m%D~`iHw}SW2hh+ zwh-RfQ-uryKMXtOFDltE{xK$>JbAkqj5p+iiE;_YBbDtc1gInhPEc81T)KJUyG+kt z)MvID_J0_kbN1vt55IA{*(7cfM00cl1hA$m2df~ZK2oxA(g#exeofjUt4Jn6Vy^Rr zl&6yOP910S?I9)+F#9}?h{c#ionG}+ReH2^!-Qx{&=MnO>=+F3QVdqRJ!%~&T&z5( zn)1SD=X>Uzd-Kj9(;GE&*Bq$G&vP7ahMIt&b49Wo+!+Zs{^lQlo9<>h4Tb3o672js zH3AKxKv1Jkamz@#Ejj!2c_xpARzxx$Dv85}Pyy`hJQfcmT1{n-Dn}kF+dQd6S8Iig zj3NX1amrJ`I~%vOPPpkSaGP8R_mKuue5NA9nnZvji3+}?W|ywN|2ch$DC$?IeUxC~ ze(nis(fxDAaj3zkPIcx~Mq80sXq~mhzzR!z&v|TTnJanard{AlnXGGtgaPfhQVy;<^t&XQflm{#1S27^2AXv;6rIt9 zG0}=h4eqhF(c?a0j_U!LD0CnkZoK=zmZ>Lnafe`j?w9KCf*P=f^+YVgu?o$yn_yrC zF0hRTn(ivwH06-~m5ZRN=y!pD@?WEfp_fByeL#EOnOpghE{=&-uBB~2iLZQ_Irdfe zoTU3w_OH&*&%fm7H5rfW8Upc93@+6dtfQ!^ytH)Vgd$xW6LqW8=em-GR~l>O*B#lF z59-tHqLoF0?iB9VJxZn>={G#-N&EBH>(iHnvP~1-cYDh3k|V*VBsDOiGb9+`rfz0! zwnpg}`qZTX&f7=nmYZqa>Yt3&r@mLfIsRk%>W#FnFnydp)gf93I|Ie1~@hX;5)iey4cv`gp=+9W~=*`va-m0&u7oj>&H?*%5TPPRD(LDtX*)(&b% zOSDPEnN@zc(XSj&aEgib4aVvEbhm@97y_pnypTN)gBx3~Pj?D!5`k1kp-V1g57Ky^ zEU#ISXw^mCiW=jY1rC>(=5COy96`fweY#UnETtIC>+PXxSxFFP|s6h$Mb>&oS)J2ztvw!HFXf@K;Yze~fpjYww z1M<-1<)=T>#a%+Dh%i7`y4Gpsmq4{eL5aTF6hh0cTUODfQ(Q|ltm%CpPiQfu+LS

U*R_dc7x)K}Cyv00;Y@I80KVDH-A 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 diff --git a/src/components/layouts/dashboard/headerWithLogo/HaederBottom/index.jsx b/src/components/layouts/dashboard/headerWithLogo/HaederBottom/index.jsx index f23833c..1ab9f22 100644 --- a/src/components/layouts/dashboard/headerWithLogo/HaederBottom/index.jsx +++ b/src/components/layouts/dashboard/headerWithLogo/HaederBottom/index.jsx @@ -15,9 +15,9 @@ const HeaderBottom = () => { alignItems={"center"} direction={"row"} > - + - theme.palette.primary2.contrastText }}> + theme.palette.primary2.contrastText }}> سامانه جامع راهداری theme.palette.primary2.contrastText }}>rms.rmto.ir diff --git a/src/components/layouts/dashboard/headerWithLogo/HaederTop/index.jsx b/src/components/layouts/dashboard/headerWithLogo/HaederTop/index.jsx index 2c0c3b6..4926625 100644 --- a/src/components/layouts/dashboard/headerWithLogo/HaederTop/index.jsx +++ b/src/components/layouts/dashboard/headerWithLogo/HaederTop/index.jsx @@ -5,7 +5,7 @@ import HeaderLogo from "@/assets/images/headerLogo.png"; const HeaderTop = () => { return ( - + ); }; diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx index 7ff7e4f..288ef6c 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx @@ -9,6 +9,7 @@ import HeaderMenu from "./HeaderMenu"; import { headerMenu } from "@/core/utils/headerMenu"; const drawerWidth = 300; +const headersHeight = 136 const Main = styled(Stack, { shouldForwardProp: (prop) => prop !== "open" })(({ theme, open }) => ({ flexGrow: 1, @@ -63,7 +64,9 @@ const HeaderWithSidebar = ({ children }) => { setOpen(false); }; return ( - + Date: Sun, 18 Aug 2024 15:25:31 +0330 Subject: [PATCH 5/7] fixed bug --- .../headerWithSidebar/HeaderMenu/index.jsx | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx index 5dcf168..0d87a5d 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx @@ -30,24 +30,25 @@ const HeaderMenu = ({ menu }) => { open={open} onClose={handleClose} > - {menu.subMenu.map((subMenu, index) => ( - <> - {subMenu.map(sub => ( - - - - - - {sub.title} - - ))} - {menu.subMenu.length - 1 !== index && ( - - )} - - ))} + {menu.subMenu.flatMap((subMenu, index) => [ + ...subMenu.map(sub => ( + + + + + {sub.title} + + )), + index < menu.subMenu.length - 1 && + ])} ); }; + export default HeaderMenu; From f258dedc78cd2768412c4bcc8d2ebf756f371315 Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sun, 18 Aug 2024 15:38:23 +0330 Subject: [PATCH 6/7] change style --- src/components/dashboard/inquiryPrivacyFencing/index.jsx | 2 +- .../inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx | 2 +- src/components/layouts/dashboard/headerWithSidebar/index.jsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/dashboard/inquiryPrivacyFencing/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/index.jsx index 40e9e58..794be55 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/index.jsx @@ -6,7 +6,7 @@ import { Stack } from "@mui/material"; const InquiryPrivacyFencingPage = () => { return ( - + diff --git a/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx index 0341e45..24871ed 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/inquiryPrivacyFencingList/index.jsx @@ -236,7 +236,7 @@ const InquiryPrivacyFencingList = () => { return ( <> - + {

- + {children}
From 63d284a64fd3c9da9a735932266b19250b84eafb Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Mon, 19 Aug 2024 13:32:21 +0330 Subject: [PATCH 7/7] change style --- src/components/layouts/dashboard/headerWithSidebar/index.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx index 8bdd960..de73115 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx @@ -50,7 +50,7 @@ const DrawerHeader = styled("div")(({ theme }) => ({ alignItems: "center", padding: theme.spacing(0, 1), ...theme.mixins.toolbar, - minHeight: "48px !important", + minHeight: "40px !important", justifyContent: "flex-end", })); @@ -68,7 +68,7 @@ const HeaderWithSidebar = ({ children }) => { display: "flex", height: `calc(100% - ${headersHeight}px)`, width: "100%", mt: `${headersHeight}px` }}> - +