diff --git a/src/components/dashboard/roadItems/operator/OperatorList.jsx b/src/components/dashboard/roadItems/operator/OperatorList.jsx index 33b37c6..793b1e6 100644 --- a/src/components/dashboard/roadItems/operator/OperatorList.jsx +++ b/src/components/dashboard/roadItems/operator/OperatorList.jsx @@ -156,9 +156,8 @@ const OperatorList = () => { }, }, { - accessorKey: "files", - header: "تصاویر", // Images - id: "files", + header: "تصاویر", + id: "images", enableColumnFilter: false, enableSorting: false, datatype: "array", @@ -173,23 +172,15 @@ const OperatorList = () => { }, }, }, - Cell: ({ renderedCellValue }) => { - if (renderedCellValue.length > 0) { - return ( - - - - ); - } + Cell: ({ renderedCellValue, row }) => { return ( - - بدون تصویر - + + + ); }, }, { - accessorKey: "location", header: "موقعیت", // Location id: "location", enableColumnFilter: false, @@ -220,8 +211,7 @@ const OperatorList = () => { }, }, { - accessorKey: "cmms_machines", - header: "خودرو ها", // Car ID + header: "خودرو ها", id: "cmmsMachines__machine_code", enableColumnFilter: true, datatype: "text", @@ -239,19 +229,15 @@ const OperatorList = () => { }, }, }, - Cell: ({ renderedCellValue }) => { - if (renderedCellValue) { - return ( - - - - ); - } - return خودرویی وجود ندارد; + Cell: ({ renderedCellValue, row }) => { + return ( + + + + ); }, }, { - accessorKey: "rahdaran", header: "راهداران", id: "rahdaran__code", enableColumnFilter: true, @@ -270,10 +256,10 @@ const OperatorList = () => { }, }, }, - Cell: ({ renderedCellValue }) => { + Cell: ({ renderedCellValue, row }) => { return ( - + ); }, diff --git a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx index 164fc70..bb235a1 100644 --- a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx +++ b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx @@ -1,19 +1,77 @@ -import { Dialog, DialogTitle } from "@mui/material"; +import { GET_CMMS_MACHINE_ROAD_ITEM, UPDATE_ROAD_ITEMS } from "@/core/utils/routes"; +import { Dialog, DialogTitle, Typography } from "@mui/material"; import EditFormContent from "./EditFormContent"; -import { UPDATE_ROAD_ITEMS } from "@/core/utils/routes"; import useRequest from "@/lib/hooks/useRequest"; +import { useEffect, useState } from "react"; +import DialogLoading from "@/core/components/DialogLoading"; const EditController = ({ rowId, mutate, setOpenEditDialog, openEditDialog, row }) => { - const requestServer = useRequest({ notificationSuccess: true }); + const requestServer = useRequest(); + const [loadingImages, setLoadingImages] = useState(true); + const [images, setImages] = useState(null); + const [loadingCmmsMachine, setLoadingCmmsMachine] = useState(true); + const [cmmsMachine, setCmmsMachine] = useState(null); + const [loadingRahdaran, setLoadingRahdaran] = useState(true); + const [rahdaran, setRahdaran] = useState(null); + + useEffect(() => { + const fetchData = async () => { + try { + setLoadingImages(true); + const response = await requestServer(`${GET_IMAGES_ROAD_ITEM}/${rowId}`); + setImages(response.data); + } catch (error) { + } finally { + setLoadingImages(false); + } + }; + + fetchData(); + }, [rowId]); + + useEffect(() => { + const fetchData = async () => { + try { + setLoadingCmmsMachine(true); + const response = await requestServer(`${GET_CMMS_MACHINE_ROAD_ITEM}/${rowId}`); + setCmmsMachine(response.data); + } catch (error) { + } finally { + setLoadingCmmsMachine(false); + } + }; + + fetchData(); + }, [rowId]); + + useEffect(() => { + const fetchData = async () => { + try { + setLoadingRahdaran(true); + const response = await requestServer(`${GET_RAHDARAN_ROAD_ITEM}/${rowId}`); + setRahdaran(response.data); + } catch (error) { + } finally { + setLoadingRahdaran(false); + } + }; + + fetchData(); + }, [rowId]); const HandleSubmit = async ({ result }) => { const formData = new FormData(); for (const [key, value] of Object.entries(result)) { formData.append(key, value); } - await requestServer(`${UPDATE_ROAD_ITEMS}/${rowId}`, "post", { - data: formData, - }) + await requestServer( + `${UPDATE_ROAD_ITEMS}/${rowId}`, + "post", + { + data: formData, + }, + { notificationSuccess: true } + ) .then((response) => { mutate(); setOpenEditDialog(false); @@ -21,34 +79,28 @@ const EditController = ({ rowId, mutate, setOpenEditDialog, openEditDialog, row .catch((error) => {}); }; - return ( - + ) : images && cmmsMachine && rahdaran ? ( + - ویرایش اطلاعات - - + /> + ) : ( + + تمامی اطلاعات یافت نشد! + ); }; export default EditController; diff --git a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormContent.jsx b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormContent.jsx index d8b8dc3..c49d50d 100644 --- a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormContent.jsx +++ b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormContent.jsx @@ -1,7 +1,6 @@ -import { LinearProgress, Typography } from "@mui/material"; -import React from "react"; -import useRoadItemGetISubtems from "@/lib/hooks/useRoadItemGetISubtems"; import EditFormCreate from "@/components/dashboard/roadItems/operator/RowActions/EditForm/EditFormCreate"; +import useRoadItemGetISubtems from "@/lib/hooks/useRoadItemGetISubtems"; +import { LinearProgress, Typography } from "@mui/material"; const EditFormContent = ({ setOpenEditDialog, onSubmit, defaultData, is_gasht }) => { const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetISubtems(defaultData?.item_id); diff --git a/src/components/dashboard/roadItems/operator/RowActions/EditForm/index.jsx b/src/components/dashboard/roadItems/operator/RowActions/EditForm/index.jsx index 9302918..2cc378d 100644 --- a/src/components/dashboard/roadItems/operator/RowActions/EditForm/index.jsx +++ b/src/components/dashboard/roadItems/operator/RowActions/EditForm/index.jsx @@ -19,13 +19,27 @@ const EditForm = ({ row, mutate, rowId }) => { - + + ویرایش اطلاعات + {openEditDialog && ( + + )} + ); }; diff --git a/src/components/dashboard/roadItems/operator/RowActions/ImageForm/ImagesContent.jsx b/src/components/dashboard/roadItems/operator/RowActions/ImageForm/ImagesContent.jsx new file mode 100644 index 0000000..6414e24 --- /dev/null +++ b/src/components/dashboard/roadItems/operator/RowActions/ImageForm/ImagesContent.jsx @@ -0,0 +1,43 @@ +import { useEffect, useState } from "react"; +import ImageFormContent from "./ImageFormContent"; +import DialogLoading from "@/core/components/DialogLoading"; +import useRequest from "@/lib/hooks/useRequest"; +import { GET_IMAGES_ROAD_ITEM } from "@/core/utils/routes"; +import { Typography } from "@mui/material"; + +const ImagesContent = ({ rowId }) => { + const [loading, setLoading] = useState(true); + const [data, setData] = useState(null); + const request = useRequest(); + + useEffect(() => { + const fetchData = async () => { + try { + setLoading(true); + const response = await request(`${GET_IMAGES_ROAD_ITEM}/${rowId}`); + setData(response.data.data); + } catch (error) { + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [rowId]); + + return ( + <> + {loading ? ( + + ) : data ? ( + <> + + + + ) : ( + تصویری در سامانه یافت نشد + )} + + ); +}; +export default ImagesContent; diff --git a/src/components/dashboard/roadItems/operator/RowActions/ImageForm/index.jsx b/src/components/dashboard/roadItems/operator/RowActions/ImageForm/index.jsx index 130f443..08e9cd9 100644 --- a/src/components/dashboard/roadItems/operator/RowActions/ImageForm/index.jsx +++ b/src/components/dashboard/roadItems/operator/RowActions/ImageForm/index.jsx @@ -1,9 +1,9 @@ -import { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Paper, Tooltip } from "@mui/material"; -import { useState } from "react"; import PhotoLibraryIcon from "@mui/icons-material/PhotoLibrary"; -import ImageFormContent from "./ImageFormContent"; +import { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Tooltip } from "@mui/material"; +import { useState } from "react"; +import ImagesContent from "./ImagesContent"; -const ImageDialog = ({ images }) => { +const ImageDialog = ({ rowId }) => { const [openImageDialog, setOpenImageDialog] = useState(false); return ( @@ -26,12 +26,7 @@ const ImageDialog = ({ images }) => { scroll="paper" > تصاویر - - - - - - + {openImageDialog && }