From 64541d52c0300f452c5de30015f34ec2cc6ce9bf Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Sat, 26 Oct 2024 11:21:04 +0330 Subject: [PATCH 1/3] rename folder structure --- .../dashboard/{test => azmayesh}/page.js | 2 +- .../CreateDialog/AzmayeshGeneralInfo.jsx} | 18 +++++------ .../Create}/CreateDialog/ChooseLocation.jsx | 31 ++++++++++--------- .../Create}/CreateDialog/CreateTimeLine.jsx | 0 .../Actions/Create}/CreateDialog/MapBox.jsx | 0 .../Actions/Create}/CreateDialog/index.jsx | 17 +++++----- .../Actions/Create}/index.jsx | 6 ++-- .../AzmayeshList.jsx} | 4 +-- .../ShowLocation/ShowLocationMarker.jsx | 8 ++--- .../{test => azmayesh}/ShowLocation/index.jsx | 0 .../dashboard/{test => azmayesh}/Toolbar.jsx | 4 +-- .../dashboard/{test => azmayesh}/index.jsx | 4 +-- src/core/utils/routes.js | 4 +-- src/lib/hooks/useAzmayesh.js | 30 ++++++++++++++++++ src/lib/hooks/useTest.js | 30 ------------------ 15 files changed, 78 insertions(+), 80 deletions(-) rename src/app/(withAuth)/dashboard/{test => azmayesh}/page.js (55%) rename src/components/dashboard/{test/Actions/create/CreateDialog/TestGeneralInfo.jsx => azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx} (97%) rename src/components/dashboard/{test/Actions/create => azmayesh/Actions/Create}/CreateDialog/ChooseLocation.jsx (84%) rename src/components/dashboard/{test/Actions/create => azmayesh/Actions/Create}/CreateDialog/CreateTimeLine.jsx (100%) rename src/components/dashboard/{test/Actions/create => azmayesh/Actions/Create}/CreateDialog/MapBox.jsx (100%) rename src/components/dashboard/{test/Actions/create => azmayesh/Actions/Create}/CreateDialog/index.jsx (93%) rename src/components/dashboard/{test/Actions/create => azmayesh/Actions/Create}/index.jsx (91%) rename src/components/dashboard/{test/TestList.jsx => azmayesh/AzmayeshList.jsx} (98%) rename src/components/dashboard/{test => azmayesh}/ShowLocation/ShowLocationMarker.jsx (93%) rename src/components/dashboard/{test => azmayesh}/ShowLocation/index.jsx (100%) rename src/components/dashboard/{test => azmayesh}/Toolbar.jsx (52%) rename src/components/dashboard/{test => azmayesh}/index.jsx (79%) create mode 100644 src/lib/hooks/useAzmayesh.js delete mode 100644 src/lib/hooks/useTest.js diff --git a/src/app/(withAuth)/dashboard/test/page.js b/src/app/(withAuth)/dashboard/azmayesh/page.js similarity index 55% rename from src/app/(withAuth)/dashboard/test/page.js rename to src/app/(withAuth)/dashboard/azmayesh/page.js index 7baafa7..eca1b9d 100644 --- a/src/app/(withAuth)/dashboard/test/page.js +++ b/src/app/(withAuth)/dashboard/azmayesh/page.js @@ -1,4 +1,4 @@ -import TestPage from "@/components/dashboard/test"; +import TestPage from "@/components/dashboard/azmayesh"; const Page = () => { return ; diff --git a/src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx similarity index 97% rename from src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx rename to src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx index d424a1a..f8e9345 100644 --- a/src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx @@ -14,7 +14,7 @@ import { TextField, Typography } from "@mui/material"; -import useTest from "@/lib/hooks/useTest"; +import useAzmayesh from "@/lib/hooks/useAzmayesh"; import useProvinces from "@/lib/hooks/useProvince"; import {LocalizationProvider, MobileDatePicker} from "@mui/x-date-pickers"; import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali"; @@ -22,8 +22,8 @@ import {faIR} from "@mui/x-date-pickers/locales"; import ClearIcon from "@mui/icons-material/Clear"; import React from "react"; -const TestGeneralInfo = ({control, register, setValue, errors}) => { - const {tests, errorTests, loadingTests} = useTest(); +const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { + const {azmayeshes, errorAzmayeshes, loadingAzmayeshes} = useAzmayesh(); const {provinces, errorProvinces, loadingProvinces} = useProvinces(); return ( @@ -37,12 +37,12 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => { - {errorTests ? ( + {errorAzmayeshes ? ( خطایی در دریافت لیست آزمایش ها رخ داده است! - ) : loadingTests ? ( + ) : loadingAzmayeshes ? ( درحال دریافت لیست آزمایش ها @@ -51,10 +51,10 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => { test.id === value) || null} + value={azmayeshes.find((azmayesh) => azmayesh.id === value) || null} disablePortal - options={tests} - getOptionLabel={(test) => test.name} + options={azmayeshes} + getOptionLabel={(azmayesh) => azmayesh.name} isOptionEqualToValue={(option, value) => option.id === value?.id} onChange={(event, newValue) => { onChange(newValue ? newValue.id : ""); @@ -384,4 +384,4 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => { ); }; -export default TestGeneralInfo; \ No newline at end of file +export default AzmayeshGeneralInfo; \ No newline at end of file diff --git a/src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx similarity index 84% rename from src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx rename to src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx index 433543e..724de0f 100644 --- a/src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx @@ -3,8 +3,8 @@ import {Marker, useMapEvents} from "react-leaflet"; import {useEffect, useRef} from "react"; import L from "leaflet"; -import TestIcon from "@/assets/images/examine_marker.png"; -import TestActiveIcon from "@/assets/images/examine_marker_active.png"; +import AzmayeshIcon from "@/assets/images/examine_marker.png"; +import AzmayeshActiveIcon from "@/assets/images/examine_marker_active.png"; import { Box, Button, @@ -25,7 +25,7 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("sm")); - const mapTestMarker = useRef(); + const mapAzmayeshMarker = useRef(); const defaultIconSize = [35, 35]; const createCustomIcon = (size, iconUrl) => { return L.icon({ @@ -39,37 +39,40 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { const map = useMapEvents({ move(e) { if (!mapBoxData) { - mapTestMarker.current.setLatLng(e.target.getCenter()); + mapAzmayeshMarker.current.setLatLng(e.target.getCenter()); } }, movestart() { if (!mapBoxData) { - mapTestMarker.current.setIcon(createCustomIcon([45, 45], TestIcon.src)); + mapAzmayeshMarker.current.setIcon(createCustomIcon([45, 45], AzmayeshIcon.src)); } }, moveend() { if (!mapBoxData) { - mapTestMarker.current.setIcon(createCustomIcon(defaultIconSize, TestIcon.src)); + mapAzmayeshMarker.current.setIcon(createCustomIcon(defaultIconSize, AzmayeshIcon.src)); } } }); useEffect(() => { - if (mapTestMarker.current) { + if (mapAzmayeshMarker.current) { const newIcon = mapBoxData - ? createCustomIcon([45, 45], TestActiveIcon.src) - : createCustomIcon(defaultIconSize, TestIcon.src); - mapTestMarker.current.setIcon(newIcon); + ? createCustomIcon([45, 45], AzmayeshActiveIcon.src) + : createCustomIcon(defaultIconSize, AzmayeshIcon.src); + mapAzmayeshMarker.current.setIcon(newIcon); } if (mapBoxData) { - mapTestMarker.current.setLatLng(mapBoxData); + mapAzmayeshMarker.current.setLatLng(mapBoxData); map.flyTo(mapBoxData, 14); } }, [mapBoxData]); const handleMarkerClick = () => { if (!mapBoxData) { - setMapBoxData({lat: mapTestMarker.current.getLatLng().lat, lng: mapTestMarker.current.getLatLng().lng}); + setMapBoxData({ + lat: mapAzmayeshMarker.current.getLatLng().lat, + lng: mapAzmayeshMarker.current.getLatLng().lng + }); } }; @@ -81,9 +84,9 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { <> { +const CreateDialog = ({open, setOpen, mutate}) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("sm")); const [tabState, setTabState] = useState(0); @@ -99,7 +99,6 @@ const CreateDialog = ({open, setOpen}) => { } = useForm({defaultValues, resolver: yupResolver(validationSchema), mode: "onBlur"}); const onSubmit = async (data) => { - console.log("data", data); const formData = new FormData(); formData.append("lat", mapBoxData.lat); formData.append("lng", mapBoxData.lng); @@ -117,14 +116,11 @@ const CreateDialog = ({open, setOpen}) => { formData.append("request_date", moment(data.request_date).format("YYYY-MM-DD")); formData.append("report_date", moment(data.report_date).format("YYYY-MM-DD")); - for (var pair of formData.entries()) { - console.log(pair[0] + ', ' + pair[1]); - } - - requestServer(POST_TEST, "post", { + requestServer(POST_AZMAYESH, "post", { data: formData, }) .then(() => { + mutate(); handleClose(); }) .catch(() => { @@ -151,7 +147,8 @@ const CreateDialog = ({open, setOpen}) => { - + {!isMobile && ( diff --git a/src/components/dashboard/test/Actions/create/index.jsx b/src/components/dashboard/azmayesh/Actions/Create/index.jsx similarity index 91% rename from src/components/dashboard/test/Actions/create/index.jsx rename to src/components/dashboard/azmayesh/Actions/Create/index.jsx index 9d59d00..1dae100 100644 --- a/src/components/dashboard/test/Actions/create/index.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/index.jsx @@ -6,7 +6,7 @@ import {useState} from "react"; import {AddCircle} from "@mui/icons-material"; import CreateDialog from "./CreateDialog"; -const TestCreate = () => { +const AzmayeshCreate = ({mutate}) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("sm")); const [open, setOpen] = useState(false); @@ -26,8 +26,8 @@ const TestCreate = () => { ثبت آزمایش )} - {open && } + {open && } ); }; -export default TestCreate; +export default AzmayeshCreate; diff --git a/src/components/dashboard/test/TestList.jsx b/src/components/dashboard/azmayesh/AzmayeshList.jsx similarity index 98% rename from src/components/dashboard/test/TestList.jsx rename to src/components/dashboard/azmayesh/AzmayeshList.jsx index 2c735f4..8fd735f 100644 --- a/src/components/dashboard/test/TestList.jsx +++ b/src/components/dashboard/azmayesh/AzmayeshList.jsx @@ -8,7 +8,7 @@ import {GET_AZMAYESH_LIST} from "@/core/utils/routes"; import moment from "jalali-moment"; import ShowLocation from "./ShowLocation"; -const TestList = () => { +const AzmayeshList = () => { const columns = useMemo( () => [ { @@ -132,4 +132,4 @@ const TestList = () => { ); }; -export default TestList; +export default AzmayeshList; diff --git a/src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx b/src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx similarity index 93% rename from src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx rename to src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx index 6b65250..ea9ed7b 100644 --- a/src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx +++ b/src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx @@ -1,9 +1,9 @@ "use client"; import {Marker, useMap} from "react-leaflet"; -import {useEffect, useRef} from "react"; +import {useEffect} from "react"; import L from "leaflet"; -import TestActiveIcon from "@/assets/images/examine_marker_active.png"; +import AzmayeshActiveIcon from "@/assets/images/examine_marker_active.png"; import {Box, FormControl, InputAdornment, InputLabel, OutlinedInput, Stack, useMediaQuery} from "@mui/material"; import VerifiedIcon from '@mui/icons-material/Verified'; import {useTheme} from "@emotion/react"; @@ -13,7 +13,6 @@ const ShowLocationMarker = ({lat, lng}) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("sm")); - const mapTestMarker = useRef(); const defaultIconSize = [35, 35]; const createCustomIcon = (size, iconUrl) => { return L.icon({ @@ -33,8 +32,7 @@ const ShowLocationMarker = ({lat, lng}) => { <> { return ( <> - + ); }; diff --git a/src/components/dashboard/test/index.jsx b/src/components/dashboard/azmayesh/index.jsx similarity index 79% rename from src/components/dashboard/test/index.jsx rename to src/components/dashboard/azmayesh/index.jsx index d2503a0..da7eb79 100644 --- a/src/components/dashboard/test/index.jsx +++ b/src/components/dashboard/azmayesh/index.jsx @@ -2,13 +2,13 @@ import PageTitle from "@/core/components/PageTitle"; import {Stack} from "@mui/material"; -import TestList from "./TestList"; +import AzmayeshList from "./AzmayeshList"; const TestPage = () => { return ( - + ); }; diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js index 0e60709..4fcfff2 100644 --- a/src/core/utils/routes.js +++ b/src/core/utils/routes.js @@ -12,6 +12,6 @@ export const GET_CITY_LISTS = "/v3/api/fake-cities"; export const GET_PROVINCE_LISTS = "/v3/api/fake-provinces"; export const GET_PREV_STATE_OPINION = "/v3/api/fake-prev-state-opinion"; export const SUBMIT_ROAD_SAFETY_FORM = "/v3/api/fake-submit"; -export const POST_TEST = api + "/api/v3/azmayeshes/store"; -export const GET_TESTS_LIST = api + "/api/v3/azmayesh_types"; +export const POST_AZMAYESH = api + "/api/v3/azmayeshes/store"; +export const GET_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types"; export const GET_AZMAYESH_LIST = api + "/api/v3/azmayeshes"; diff --git a/src/lib/hooks/useAzmayesh.js b/src/lib/hooks/useAzmayesh.js new file mode 100644 index 0000000..5650a14 --- /dev/null +++ b/src/lib/hooks/useAzmayesh.js @@ -0,0 +1,30 @@ +import {useEffect, useState} from "react"; +import {GET_AZMAYESH_TYPE_LIST} from "@/core/utils/routes"; +import useRequest from "@/lib/hooks/useRequest"; + +const useAzmayesh = () => { + const requestServer = useRequest(); + const [azmayeshes, setAzmayeshes] = useState([]); + const [loadingAzmayeshes, setLoadingAzmayeshes] = useState(true); + const [errorAzmayeshes, setErrorAzmayeshes] = useState(null); + + useEffect(() => { + const fetchTests = async () => { + try { + const response = await requestServer(`${GET_AZMAYESH_TYPE_LIST}`); + setAzmayeshes(response.data.data); + setLoadingAzmayeshes(false); + } catch (e) { + console.error("Error fetching tests types:", e); + setErrorAzmayeshes(e); + setLoadingAzmayeshes(false); + } + }; + + fetchTests(); + }, []); + + return {azmayeshes, loadingAzmayeshes, errorAzmayeshes}; +}; + +export default useAzmayesh; diff --git a/src/lib/hooks/useTest.js b/src/lib/hooks/useTest.js deleted file mode 100644 index ea1a386..0000000 --- a/src/lib/hooks/useTest.js +++ /dev/null @@ -1,30 +0,0 @@ -import {useEffect, useState} from "react"; -import {GET_TESTS_LIST} from "@/core/utils/routes"; -import useRequest from "@/lib/hooks/useRequest"; - -const useTest = () => { - const requestServer = useRequest(); - const [tests, setTests] = useState([]); - const [loadingTests, setLoadingTests] = useState(true); - const [errorTests, setErrorTests] = useState(null); - - useEffect(() => { - const fetchTests = async () => { - try { - const response = await requestServer(`${GET_TESTS_LIST}`); - setTests(response.data.data); - setLoadingTests(false); - } catch (e) { - console.error("Error fetching tests types:", e); - setErrorTests(e); - setLoadingTests(false); - } - }; - - fetchTests(); - }, []); - - return {tests, loadingTests, errorTests}; -}; - -export default useTest; From 05385a8d2b90a9344ad0deb564a8f5932a86ec36 Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sat, 26 Oct 2024 13:47:36 +0330 Subject: [PATCH 2/3] fixed bug and formatting --- package.json | 8 +- src/app/(withAuth)/dashboard/azmayesh/page.js | 2 +- src/app/api/fake-tests-type/route.js | 2 +- src/app/api/fake-tests/route.js | 12 +- src/assets/scss/global.scss | 9 +- src/assets/scss/map-styles.scss | 38 ++--- .../CreateDialog/AzmayeshGeneralInfo.jsx | 116 ++++++--------- .../Create/CreateDialog/ChooseLocation.jsx | 91 +++++++----- .../Create/CreateDialog/CreateTimeLine.jsx | 62 ++++---- .../Actions/Create/CreateDialog/MapBox.jsx | 26 ++-- .../Actions/Create/CreateDialog/index.jsx | 134 ++++++++++-------- .../azmayesh/Actions/Create/index.jsx | 16 +-- .../dashboard/azmayesh/AzmayeshList.jsx | 24 ++-- .../ShowLocation/ShowLocationMarker.jsx | 63 ++++---- .../dashboard/azmayesh/ShowLocation/index.jsx | 18 +-- src/components/dashboard/azmayesh/Toolbar.jsx | 4 +- src/components/dashboard/azmayesh/index.jsx | 6 +- .../RowActions/MapModify/MapActionButtons.jsx | 86 +++++------ .../RowActions/MapModify/MapModifyDialog.jsx | 87 ++++++------ .../RowActions/MapModify/PolygonForDesign.jsx | 19 ++- .../zaminGov/RowActions/MapModify/index.jsx | 16 ++- .../zaminGov/RowActions/index.jsx | 14 +- src/core/utils/pageMenu.js | 80 +++++------ src/lib/hooks/useAzmayesh.js | 6 +- src/lib/hooks/useProvince.js | 6 +- 25 files changed, 483 insertions(+), 462 deletions(-) diff --git a/package.json b/package.json index 9641fc0..b59745d 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@hookform/resolvers": "^3.9.0", - "@mui/icons-material": "^5.15.6", + "@mui/icons-material": "^5.16.7", "@mui/lab": "^5.0.0-alpha.173", - "@mui/material": "^5.15.6", - "@mui/material-nextjs": "^5.15.6", + "@mui/material": "^5.16.7", + "@mui/material-nextjs": "^5.16.6", "@mui/x-date-pickers": "^6.19.5", "@mui/x-tree-view": "^7.11.0", "axios": "^1.7.2", @@ -49,4 +49,4 @@ "eslint-config-prettier": "^9.1.0", "prettier": "^3.3.2" } -} +} \ No newline at end of file diff --git a/src/app/(withAuth)/dashboard/azmayesh/page.js b/src/app/(withAuth)/dashboard/azmayesh/page.js index eca1b9d..27f1bd7 100644 --- a/src/app/(withAuth)/dashboard/azmayesh/page.js +++ b/src/app/(withAuth)/dashboard/azmayesh/page.js @@ -1,7 +1,7 @@ import TestPage from "@/components/dashboard/azmayesh"; const Page = () => { - return ; + return ; }; export default Page; diff --git a/src/app/api/fake-tests-type/route.js b/src/app/api/fake-tests-type/route.js index 943b759..7d41c3e 100644 --- a/src/app/api/fake-tests-type/route.js +++ b/src/app/api/fake-tests-type/route.js @@ -14,5 +14,5 @@ const data = [ ]; export async function GET() { - return Response.json({data}); + return Response.json({ data }); } diff --git a/src/app/api/fake-tests/route.js b/src/app/api/fake-tests/route.js index 7d9c077..3918bf0 100644 --- a/src/app/api/fake-tests/route.js +++ b/src/app/api/fake-tests/route.js @@ -10,7 +10,7 @@ const data = [ work_number: "شماره کار", request_number: "شماره درخواست", request_date: "تاریخ درخواست", - report_date: "تاریخ گزارش" + report_date: "تاریخ گزارش", }, { id: 2, @@ -23,7 +23,7 @@ const data = [ work_number: "شماره کار", request_number: "شماره درخواست", request_date: "تاریخ درخواست", - report_date: "تاریخ گزارش" + report_date: "تاریخ گزارش", }, { id: 3, @@ -36,7 +36,7 @@ const data = [ work_number: "شماره کار", request_number: "شماره درخواست", request_date: "تاریخ درخواست", - report_date: "تاریخ گزارش" + report_date: "تاریخ گزارش", }, { id: 4, @@ -49,7 +49,7 @@ const data = [ work_number: "شماره کار", request_number: "شماره درخواست", request_date: "تاریخ درخواست", - report_date: "تاریخ گزارش" + report_date: "تاریخ گزارش", }, { id: 5, @@ -62,10 +62,10 @@ const data = [ work_number: "شماره کار", request_number: "شماره درخواست", request_date: "تاریخ درخواست", - report_date: "تاریخ گزارش" + report_date: "تاریخ گزارش", }, ]; export async function GET() { - return Response.json({data}); + return Response.json({ data }); } diff --git a/src/assets/scss/global.scss b/src/assets/scss/global.scss index 5db6087..7b73e7e 100644 --- a/src/assets/scss/global.scss +++ b/src/assets/scss/global.scss @@ -3,7 +3,8 @@ @import "react-toastify/dist/ReactToastify.css"; .filter-toast { - box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, - rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; - background-color: #d0dfe8; -} \ No newline at end of file + box-shadow: + rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, + rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + background-color: #d0dfe8; +} diff --git a/src/assets/scss/map-styles.scss b/src/assets/scss/map-styles.scss index 2dd81bb..44e6651 100644 --- a/src/assets/scss/map-styles.scss +++ b/src/assets/scss/map-styles.scss @@ -1,27 +1,27 @@ .leaflet-draw-tooltip { - background-color: #4f4f4f; - font-family: IRANSans; - color: #fff; - font-size: 10px; - padding: 2px 8px; - margin-right: 15px; - border-radius: 4px; - box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); + background-color: #4f4f4f; + font-family: IRANSans; + color: #fff; + font-size: 10px; + padding: 2px 8px; + margin-right: 15px; + border-radius: 4px; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); } .leaflet-draw-tooltip:before { - content: ""; - position: absolute; - bottom: 100%; - left: 103%; - transform: rotate(90deg); - margin-left: -6px; - border-width: 6px; - border-style: solid; - border-color: transparent transparent #333 transparent; + content: ""; + position: absolute; + bottom: 100%; + left: 103%; + transform: rotate(90deg); + margin-left: -6px; + border-width: 6px; + border-style: solid; + border-color: transparent transparent #333 transparent; } .leaflet-draw-tooltip-subtext { - font-size: 12px; - color: #ffeb3b; + font-size: 12px; + color: #ffeb3b; } diff --git a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx index f8e9345..e5b160a 100644 --- a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx @@ -1,6 +1,6 @@ "use client"; -import {Controller} from "react-hook-form"; +import { Controller } from "react-hook-form"; import { Autocomplete, CircularProgress, @@ -12,39 +12,36 @@ import { InputLabel, OutlinedInput, TextField, - Typography + Typography, } from "@mui/material"; import useAzmayesh from "@/lib/hooks/useAzmayesh"; import useProvinces from "@/lib/hooks/useProvince"; -import {LocalizationProvider, MobileDatePicker} from "@mui/x-date-pickers"; -import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali"; -import {faIR} from "@mui/x-date-pickers/locales"; +import { LocalizationProvider, MobileDatePicker } from "@mui/x-date-pickers"; +import { AdapterDateFnsJalali } from "@mui/x-date-pickers/AdapterDateFnsJalali"; +import { faIR } from "@mui/x-date-pickers/locales"; import ClearIcon from "@mui/icons-material/Clear"; import React from "react"; -const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { - const {azmayeshes, errorAzmayeshes, loadingAzmayeshes} = useAzmayesh(); - const {provinces, errorProvinces, loadingProvinces} = useProvinces(); +const AzmayeshGeneralInfo = ({ control, register, setValue, errors }) => { + const { azmayeshes, errorAzmayeshes, loadingAzmayeshes } = useAzmayesh(); + const { provinces, errorProvinces, loadingProvinces } = useProvinces(); return ( - + ( - - + render={({ field: { onChange, value }, fieldState: { error } }) => ( + + {errorAzmayeshes ? ( - + خطایی در دریافت لیست آزمایش ها رخ داده است! ) : loadingAzmayeshes ? ( - - + + درحال دریافت لیست آزمایش ها ) : ( @@ -78,23 +75,20 @@ const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { )} /> - + ( - - + render={({ field: { onChange, value }, fieldState: { error } }) => ( + + {errorProvinces ? ( - + خطایی در دریافت لیست استان ها رخ داده است! ) : loadingProvinces ? ( - - + + درحال دریافت لیست استان ها ) : ( @@ -129,11 +123,8 @@ const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { /> - - - پروژه - + + پروژه { - - کارفرما - + کارفرما { fullWidth type="text" /> - - {errors.employer ? errors.employer.message : null} - + {errors.employer ? errors.employer.message : null} - - مشاور - + مشاور { - - پیمانکار - + پیمانکار { - - متقاضی - + متقاضی { fullWidth type="text" /> - - {errors.applicant ? errors.applicant.message : null} - + {errors.applicant ? errors.applicant.message : null} - - شماره کار - + شماره کار { - - - شماره درخواست - + + شماره درخواست { name="request_date" control={control} defaultValue={new Date()} - render={({field: {onChange, value}, fieldState: {error}}) => ( - + render={({ field: { onChange, value }, fieldState: { error } }) => ( + { }, }} > - + ), @@ -327,13 +296,8 @@ const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { name="report_date" control={control} defaultValue={new Date()} - render={({field: {onChange, value}, fieldState: {error}}) => ( - + render={({ field: { onChange, value }, fieldState: { error } }) => ( + { }, }} > - + ), @@ -384,4 +348,4 @@ const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => { ); }; -export default AzmayeshGeneralInfo; \ No newline at end of file +export default AzmayeshGeneralInfo; diff --git a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx index 724de0f..4986e19 100644 --- a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx @@ -1,7 +1,7 @@ "use client"; -import {Marker, useMapEvents} from "react-leaflet"; -import {useEffect, useRef} from "react"; +import { Marker, useMapEvents } from "react-leaflet"; +import { useEffect, useRef } from "react"; import L from "leaflet"; import AzmayeshIcon from "@/assets/images/examine_marker.png"; import AzmayeshActiveIcon from "@/assets/images/examine_marker_active.png"; @@ -14,14 +14,14 @@ import { OutlinedInput, Stack, Tooltip, - useMediaQuery + useMediaQuery, } from "@mui/material"; -import NewReleasesIcon from '@mui/icons-material/NewReleases'; -import VerifiedIcon from '@mui/icons-material/Verified'; -import EditIcon from '@mui/icons-material/Edit'; -import {useTheme} from "@emotion/react"; +import NewReleasesIcon from "@mui/icons-material/NewReleases"; +import VerifiedIcon from "@mui/icons-material/Verified"; +import EditIcon from "@mui/icons-material/Edit"; +import { useTheme } from "@emotion/react"; -const ChooseLocation = ({mapBoxData, setMapBoxData}) => { +const ChooseLocation = ({ mapBoxData, setMapBoxData }) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("sm")); @@ -32,7 +32,7 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { iconUrl: iconUrl, iconSize: size, iconAnchor: [size[0] / 2, size[1]], - popupAnchor: [0, -size[1]] + popupAnchor: [0, -size[1]], }); }; @@ -51,7 +51,7 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { if (!mapBoxData) { mapAzmayeshMarker.current.setIcon(createCustomIcon(defaultIconSize, AzmayeshIcon.src)); } - } + }, }); useEffect(() => { @@ -71,38 +71,40 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { if (!mapBoxData) { setMapBoxData({ lat: mapAzmayeshMarker.current.getLatLng().lat, - lng: mapAzmayeshMarker.current.getLatLng().lng + lng: mapAzmayeshMarker.current.getLatLng().lng, }); } }; const handleEditLocation = () => { setMapBoxData(null); - } + }; return ( <> - - + + - + طول جغرافیایی { size="small" readOnly sx={{ - '& .MuiOutlinedInput-notchedOutline': { + "& .MuiOutlinedInput-notchedOutline": { borderColor: mapBoxData ? "success.main" : "", }, - color: mapBoxData ? "success.main" : "" + color: mapBoxData ? "success.main" : "", }} value={mapBoxData ? `${mapBoxData.lat}` : ""} endAdornment={ - {mapBoxData ? : - } + {mapBoxData ? ( + + ) : ( + + )} } label="طول جغرافیایی" @@ -129,7 +134,7 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => { - + عرض جغرافیایی { size="small" readOnly sx={{ - '& .MuiOutlinedInput-notchedOutline': { + "& .MuiOutlinedInput-notchedOutline": { borderColor: mapBoxData ? "success.main" : "", }, - color: mapBoxData ? "success.main" : "" + color: mapBoxData ? "success.main" : "", }} value={mapBoxData ? `${mapBoxData.lng}` : ""} endAdornment={ - {mapBoxData ? : - } + {mapBoxData ? ( + + ) : ( + + )} } label="عرض جغرافیایی" /> - + ); }; -export default ChooseLocation; \ No newline at end of file +export default ChooseLocation; diff --git a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/CreateTimeLine.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/CreateTimeLine.jsx index 49a7d90..61ab92c 100644 --- a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/CreateTimeLine.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/CreateTimeLine.jsx @@ -1,8 +1,8 @@ "use client"; -import {Box, Typography} from "@mui/material"; -import TextSnippetIcon from '@mui/icons-material/TextSnippet'; -import TravelExploreIcon from '@mui/icons-material/TravelExplore'; +import { Box, Typography } from "@mui/material"; +import TextSnippetIcon from "@mui/icons-material/TextSnippet"; +import TravelExploreIcon from "@mui/icons-material/TravelExplore"; import { Timeline, TimelineConnector, @@ -10,46 +10,52 @@ import { TimelineDot, TimelineItem, timelineItemClasses, - TimelineSeparator + TimelineSeparator, } from "@mui/lab"; -const CreateTimeLine = ({tabState}) => { +const CreateTimeLine = ({ tabState }) => { return ( - - + + - - - + + + - + - - - نقشه + + نقشه + + ثبت مختصات محل آزمایش - ثبت مختصات محل - آزمایش - - - + + + - + - - - مشخصات آزمایش + + مشخصات آزمایش + + ثبت مشخصات اولیه - ثبت مشخصات اولیه diff --git a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/MapBox.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/MapBox.jsx index 8b1611c..a09e986 100644 --- a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/MapBox.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/MapBox.jsx @@ -1,25 +1,27 @@ "use client"; -import {Box, Stack} from "@mui/material"; +import { Box, Stack } from "@mui/material"; import dynamic from "next/dynamic"; import MapLoading from "@/core/components/MapLayer/Loading"; import ChooseLocation from "./ChooseLocation"; const MapLayer = dynamic(() => import("@/core/components/MapLayer"), { - loading: () => , + loading: () => , ssr: false, }); -const MapBox = ({mapBoxData, setMapBoxData}) => { +const MapBox = ({ mapBoxData, setMapBoxData }) => { return ( - - + + { }} > - + diff --git a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/index.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/index.jsx index 2ed5836..425725d 100644 --- a/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/index.jsx +++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/index.jsx @@ -1,43 +1,36 @@ "use client"; -import {Box, Button, Dialog, DialogActions, DialogContent, Tab, Tabs, useMediaQuery} from "@mui/material"; -import {useTheme} from "@emotion/react"; -import React, {useState} from "react"; +import { Box, Button, Dialog, DialogActions, DialogContent, Tab, Tabs, useMediaQuery } from "@mui/material"; +import { useTheme } from "@emotion/react"; +import React, { useState } from "react"; import MapBox from "./MapBox"; -import TravelExploreIcon from '@mui/icons-material/TravelExplore'; -import TextSnippetIcon from '@mui/icons-material/TextSnippet'; -import KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight'; -import KeyboardDoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeft'; -import ExitToAppIcon from '@mui/icons-material/ExitToApp'; -import BeenhereIcon from '@mui/icons-material/Beenhere'; +import TravelExploreIcon from "@mui/icons-material/TravelExplore"; +import TextSnippetIcon from "@mui/icons-material/TextSnippet"; +import KeyboardDoubleArrowRightIcon from "@mui/icons-material/KeyboardDoubleArrowRight"; +import KeyboardDoubleArrowLeftIcon from "@mui/icons-material/KeyboardDoubleArrowLeft"; +import ExitToAppIcon from "@mui/icons-material/ExitToApp"; +import BeenhereIcon from "@mui/icons-material/Beenhere"; import CreateTimeLine from "./CreateTimeLine"; -import {useForm} from "react-hook-form"; +import { useForm } from "react-hook-form"; import StyledForm from "@/core/components/StyledForm"; -import {object, string} from "yup"; +import { object, string } from "yup"; import useRequest from "@/lib/hooks/useRequest"; -import {yupResolver} from "@hookform/resolvers/yup"; +import { yupResolver } from "@hookform/resolvers/yup"; import moment from "jalali-moment"; -import {POST_AZMAYESH} from "@/core/utils/routes"; +import { POST_AZMAYESH } from "@/core/utils/routes"; import AzmayeshGeneralInfo from "./AzmayeshGeneralInfo"; function TabPanel(props) { - const {children, value, index} = props; + const { children, value, index } = props; return ( -