From 64541d52c0300f452c5de30015f34ec2cc6ce9bf Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Sat, 26 Oct 2024 11:21:04 +0330 Subject: [PATCH] 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;