diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
index 8237b24..3c12ce3 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
@@ -1,11 +1,51 @@
+import CustomSelectByDependency from "@/core/components/DataTable/filter/fieldsType/CustomSelectByDependency";
import DataTableWithAuth from "@/core/components/DataTableWithAuth";
import { GET_DRIVER_DETAILS } from "@/core/utils/routes";
+import useCities from "@/lib/hooks/useCities";
+import useProvinces from "@/lib/hooks/useProvince";
import { Box } from "@mui/material";
import { useMemo } from "react";
const DriverList = ({ row, specialFilter }) => {
- const columns = useMemo(
- () => [
+ 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: "کد یکتا",
@@ -17,27 +57,52 @@ const DriverList = ({ row, specialFilter }) => {
grow: false,
size: 80,
},
+ ...[dynamicColumns],
{
- accessorKey: "province_name",
- header: "استان",
- id: "province_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "city_name",
header: "شهر",
- id: "city_name",
+ id: "city_id",
enableColumnFilter: true,
- datatype: "text",
+ datatype: "numeric",
filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
+ dependencyId: "province_id",
grow: false,
- size: 100,
+ 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: "station_name",
@@ -83,9 +148,8 @@ const DriverList = ({ row, specialFilter }) => {
grow: false,
size: 100,
},
- ],
- []
- );
+ ];
+ }, []);
return (
<>
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
index d026fba..57a5ef9 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
@@ -1,11 +1,51 @@
+import CustomSelectByDependency from "@/core/components/DataTable/filter/fieldsType/CustomSelectByDependency";
import DataTableWithAuth from "@/core/components/DataTableWithAuth";
import { GET_MACHINE_MISSIONS_DETAILS } from "@/core/utils/routes";
+import useCities from "@/lib/hooks/useCities";
+import useProvinces from "@/lib/hooks/useProvince";
import { Box } from "@mui/material";
import { useMemo } from "react";
const MachineMissionsList = ({ row, specialFilter }) => {
- const columns = useMemo(
- () => [
+ 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: "کد یکتا",
@@ -17,27 +57,52 @@ const MachineMissionsList = ({ row, specialFilter }) => {
grow: false,
size: 80,
},
+ ...[dynamicColumns],
{
- accessorKey: "province_name",
- header: "استان",
- id: "province_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "city_name",
header: "شهر",
- id: "city_name",
+ id: "city_id",
enableColumnFilter: true,
- datatype: "text",
+ datatype: "numeric",
filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
+ dependencyId: "province_id",
grow: false,
- size: 100,
+ 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: "station_name",
@@ -83,9 +148,8 @@ const MachineMissionsList = ({ row, specialFilter }) => {
grow: false,
size: 100,
},
- ],
- []
- );
+ ];
+ }, []);
return (
<>