"use client"; import DataTableWithAuth from "@/core/components/DataTableWithAuth"; import { GET_ROAD_MISSIONS_VIOLATIONS_LIST } from "@/core/utils/routes"; import { Box } from "@mui/material"; import moment from "jalali-moment"; import { useMemo } from "react"; import RowActions from "./RowActions"; import Toolbar from "./Toolbar"; import { violationsCategoryStatus } from "@/core/utils/violationsCategoryStatus"; import useProvinces from "@/lib/hooks/useProvince"; import CustomSelectByDependency from "@/core/components/DataTable/filter/fieldsType/CustomSelectByDependency"; import useCities from "@/lib/hooks/useCities"; const ViolationsList = () => { const columns = useMemo(() => { const dynamicColumns = { header: "استان", id: "province_id", enableColumnFilter: true, datatype: "numeric", filterMode: "equals", grow: false, size: 130, ColumnSelectComponent: (props) => { const { provinces, errorProvinces, loadingProvinces } = useProvinces(); const getColumnSelectOptions = useMemo(() => { if (loadingProvinces) { return [{ value: "loading", label: "در حال بارگذاری..." }]; } if (errorProvinces) { return [{ value: "error", label: "خطا در بارگذاری" }]; } return [ { value: "", label: "کل کشور" }, ...provinces.map((province) => ({ value: province.id, label: province.name_fa, })), ]; }, [provinces, errorProvinces, loadingProvinces]); return ( ); }, Cell: ({ renderedCellValue, row }) => { return <>{row.original.province_name}; }, }; return [ { accessorKey: "id", header: "کد یکتا", id: "id", enableColumnFilter: true, datatype: "text", filterMode: "equals", columnFilterModeOptions: ["equals", "contains"], grow: false, }, { accessorKey: "machine_code", header: "کد خودرو", id: "machine_code", datatype: "text", columnFilterModeOptions: ["equals", "contains"], grow: false, }, ...[dynamicColumns], { header: "شهر", id: "city_id", enableColumnFilter: true, datatype: "numeric", filterMode: "equals", dependencyId: "province_id", grow: false, size: 120, ColumnSelectComponent: (props) => { const { cityList, loadingCityList, errorCityList } = useCities(props.dependencyFieldValue.value); const getColumnSelectOptions = useMemo(() => { if (props.dependencyFieldValue.value === "") { return [{ value: "empty", label: "ابتدا استان را انتخاب کنید" }]; } if (loadingCityList) { return [{ value: "loading", label: "در حال بارگذاری..." }]; } if (errorCityList) { return [{ value: "error", label: "خطا در بارگذاری" }]; } return [ { value: "", label: "کل ادارات" }, ...cityList.map((edare) => ({ value: edare.id, label: edare.name_fa, })), ]; }, [cityList, loadingCityList, errorCityList]); return ( ); }, Cell: ({ row }) => <>{row.original.city_name}, }, { accessorKey: "machine", header: "نام خودرو", id: "machine", datatype: "text", columnFilterModeOptions: ["equals", "contains"], grow: false, Cell: ({ row }) => row.original.machine?.car_name || "-", }, { accessorKey: "request_date", header: "تاریخ تخلف", id: "request_date", enableColumnFilter: true, datatype: "date", filterMode: "between", grow: false, Cell: ({ row }) => moment(row.original.request_date).locale("fa").format("YYYY/MM/DD"), }, ]; }, []); return ( <> ); }; export default ViolationsList;