diff --git a/src/components/dashboard/roadSafety/reports/map/index.jsx b/src/components/dashboard/roadSafety/reports/map/index.jsx
index 315a6a5..91c0979 100644
--- a/src/components/dashboard/roadSafety/reports/map/index.jsx
+++ b/src/components/dashboard/roadSafety/reports/map/index.jsx
@@ -61,6 +61,7 @@ const RoadSafetyReportMap = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
SelectComponent: (props) => {
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
const getSelectOptions = useMemo(() => {
@@ -94,6 +95,7 @@ const RoadSafetyReportMap = () => {
datatype: "numeric",
dependencyId: "province_id",
value: "",
+ enable: true,
SelectComponent: (props) => {
const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists(
props.dependencyFieldValue.value
@@ -144,6 +146,7 @@ const RoadSafetyReportMap = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
SelectComponent: (props) => {
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
@@ -178,6 +181,7 @@ const RoadSafetyReportMap = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
selectOption: () => {
return axisOptions.map((status) => ({
value: status.value,
@@ -191,6 +195,7 @@ const RoadSafetyReportMap = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
selectOption: () => {
return statusOptions.map((status) => ({
value: status.value,
@@ -204,6 +209,7 @@ const RoadSafetyReportMap = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ بازدید",
@@ -211,6 +217,7 @@ const RoadSafetyReportMap = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ بارگذاری مستندات",
@@ -218,6 +225,7 @@ const RoadSafetyReportMap = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ اقدام",
@@ -225,6 +233,7 @@ const RoadSafetyReportMap = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
],
[]
diff --git a/src/components/dashboard/roadSafety/reports/reportPage/index.jsx b/src/components/dashboard/roadSafety/reports/reportPage/index.jsx
index dff0300..a8f8998 100644
--- a/src/components/dashboard/roadSafety/reports/reportPage/index.jsx
+++ b/src/components/dashboard/roadSafety/reports/reportPage/index.jsx
@@ -4,14 +4,14 @@ import PageTitle from "@/core/components/PageTitle";
import DataTableFilterDataStructure from "@/core/utils/DataTableFilterDataStructure";
import isArrayEmpty from "@/core/utils/isArrayEmpty";
import { GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT, GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
+import { useAuth } from "@/lib/contexts/auth";
import { usePermissions } from "@/lib/hooks/usePermissions";
import useProvinces from "@/lib/hooks/useProvince";
import useRequest from "@/lib/hooks/useRequest";
import useSafetyAndPrivacyGetItems from "@/lib/hooks/useSafetyAndPrivacyGetItems";
-import { Box, LinearProgress, Stack } from "@mui/material";
+import { LinearProgress, Stack } from "@mui/material";
import { useEffect, useMemo, useState } from "react";
import ReportLists from "./ReportLists";
-import { useAuth } from "@/lib/contexts/auth";
const statusOptions = [
{ value: "", label: "همه وضعیت ها" },
@@ -31,53 +31,52 @@ const axisOptions = [
const ReportPage = () => {
const { data: userPermissions } = usePermissions();
const hasProvincesPermission = userPermissions.includes("show-safety-and-privacy-operator-cartable");
- const { user } = useAuth()
+ const { user } = useAuth();
const requestServer = useRequest();
const [data, setData] = useState(null);
const [isLoading, setLoading] = useState(true);
-
- const defaultValues = useMemo(() => {
- const provinceFilter = {
- header: "استان",
- id: "province_id",
- filterMode: "equals",
- datatype: "numeric",
- value: "",
- SelectComponent: (props) => {
- const { provinces, errorProvinces, loadingProvinces } = useProvinces();
- const getSelectOptions = 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 (
-
- );
+ const defaultValues = useMemo(
+ () => [
+ {
+ header: "استان",
+ id: "province_id",
+ filterMode: "equals",
+ datatype: "numeric",
+ value: hasProvincesPermission ? "" : user.province_id,
+ enable: hasProvincesPermission,
+ SelectComponent: (props) => {
+ const { provinces, errorProvinces, loadingProvinces } = useProvinces();
+ const getSelectOptions = 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 (
+
+ );
+ },
},
- };
-
- return [
- ...(hasProvincesPermission ? [provinceFilter] : []),
{
header: "مورد مشاهده شده",
id: "info_id",
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
SelectComponent: (props) => {
const { itemsList, loadingItemsList, errorItemsList } = useSafetyAndPrivacyGetItems();
@@ -112,6 +111,7 @@ const ReportPage = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
selectOption: () => {
return axisOptions.map((status) => ({
value: status.value,
@@ -125,6 +125,7 @@ const ReportPage = () => {
filterMode: "equals",
datatype: "numeric",
value: "",
+ enable: true,
selectOption: () => {
return statusOptions.map((status) => ({
value: status.value,
@@ -138,6 +139,7 @@ const ReportPage = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ بازدید",
@@ -145,6 +147,7 @@ const ReportPage = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ بارگذاری مستندات",
@@ -152,6 +155,7 @@ const ReportPage = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
{
header: "تاریخ اقدام",
@@ -159,9 +163,11 @@ const ReportPage = () => {
filterMode: "between",
datatype: "date",
value: ["", ""],
+ enable: true,
},
- ];
- }, []);
+ ],
+ [hasProvincesPermission, user.province_id]
+ );
const [filterData, setFilterData] = useState(
defaultValues.reduce((acc, item) => {
@@ -172,33 +178,16 @@ const ReportPage = () => {
useEffect(() => {
const fetchData = async () => {
-
try {
setLoading(true);
- const province_id = hasProvincesPermission
- ? filterData.province_id.value
- : user.province_id;
-
- const adjustedFilterData = hasProvincesPermission
- ? filterData
- : {
- ...filterData,
- province_id: {
- id: "province_id",
- filterMode: "equals",
- datatype: "numeric",
- value: province_id,
- },
- };
-
- const filters = DataTableFilterDataStructure(adjustedFilterData, isArrayEmpty);
-
+ const filters = DataTableFilterDataStructure(filterData, isArrayEmpty);
const params = new URLSearchParams();
params.set("filters", JSON.stringify(filters || []));
-
- if (province_id === "") {
+ if (filterData.province_id.value === "") {
try {
- const response = await requestServer(`${GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT}?${params.toString()}`);
+ const response = await requestServer(
+ `${GET_ROAD_SAFETY_PROVINCE_ACTIVITY_REPORT}?${params.toString()}`
+ );
const result = response.data.data;
const nationalReportForItem = result.activities.find((report) => report.province_id === -1);
const nationalReport = {
@@ -222,9 +211,11 @@ const ReportPage = () => {
console.log(e);
}
} else {
- params.set("province_id", province_id);
+ params.set("province_id", filterData.province_id.value);
try {
- const response = await requestServer(`${GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT}?${params.toString()}`);
+ const response = await requestServer(
+ `${GET_ROAD_SAFETY_CITY_ACTIVITY_REPORT}?${params.toString()}`
+ );
const result = response.data.data;
const nationalReportForItem = result.activities.find(
(report) => report.edare_shahri_id == "-1"
@@ -245,7 +236,9 @@ const ReportPage = () => {
};
}),
]);
- } catch (e) { console.log(e); }
+ } catch (e) {
+ console.log(e);
+ }
}
} catch (error) {
console.log(error);
diff --git a/src/core/components/FilterDrawer/index.jsx b/src/core/components/FilterDrawer/index.jsx
index 2fc5d8e..a231b71 100644
--- a/src/core/components/FilterDrawer/index.jsx
+++ b/src/core/components/FilterDrawer/index.jsx
@@ -111,24 +111,26 @@ const FilterDrawer = ({ defaultValues, setFilterData, closeDrawer }) => {