diff --git a/src/components/dashboard/inquiryPrivacyFencing/index.jsx b/src/components/dashboard/inquiryPrivacyFencing/index.jsx index 832cd3b..c7f3404 100644 --- a/src/components/dashboard/inquiryPrivacyFencing/index.jsx +++ b/src/components/dashboard/inquiryPrivacyFencing/index.jsx @@ -3,7 +3,6 @@ import { useMemo } from "react"; import Toolbar from "@/components/dashboard/inquiryPrivacyFencing/Toolbar"; import DataTable from "@/core/components/DataTable"; -import { Box } from "@mui/material"; import { GET_INQUIRY_PRIVACY_FENCING_ROUTE } from "@/core/utils/routes"; const InquiryPrivacyFencingPage = () => { @@ -32,259 +31,174 @@ const InquiryPrivacyFencingPage = () => { header: "متقاضی", id: "motaghazi_is_legal", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "nameh_date", header: "تاریخ نامه درخواست", id: "nameh_date", enableColumnFilter: false, - datatype: "date", - filterFn: "equals", }, { accessorKey: "motaghazi_type", header: "نوع متقاضی", id: "motaghazi_type", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "motaghazi_firstname", header: "نام متقاضی", id: "motaghazi_firstname", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "motaghazi_lastname", header: "نام خانوادگی متقاضی", id: "motaghazi_lastname", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "national_id", header: "کد ملی/شناسه ملی", id: "national_id", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "tel_number", header: "تلفن", id: "tel_number", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "mobile_number", header: "تلفن همراه", id: "mobile_number", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "address", header: "آدرس", id: "address", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "edare_kol", header: "اداره كل راهداری", id: "edare_kol", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "edare_shahri", header: "اداره شهرستان", id: "edare_shahri", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "rah_type", header: "نوع راه", id: "rah_type", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "name_mehvar_fa", header: "نام محور", id: "name_mehvar_fa", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "mizan_harim", header: "میزان حریم", id: "mizan_harim", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "arze_navar", header: "عرض نوار تاسیساتی زیربنایی", id: "arze_navar", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "samt", header: "سمت", id: "samt", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "kilometr", header: "كيلومتر", id: "kilometr", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "zone", header: "zone", id: "zone", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "karbari_type", header: "نوع کاربری", id: "karbari_type", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "tarh_title", header: "عنوان طرح", id: "tarh_title", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "masahat_zirbana", header: "مساحت زیربنا", id: "masahat_zirbana", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "ehdasat_type", header: "نوع احداثات", id: "ehdasat_type", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "divarkeshi_distance", header: "فاصله دیوارکشی از آکس محور", id: "divarkeshi_distance", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "mahale_ejra", header: "محل اجرا", id: "mahale_ejra", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "traffic", header: "میزان ترافیک", id: "traffic", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "vaziat_eghtesadi", header: "وضعیت اقتصادی", id: "vaziat_eghtesadi", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "has_access", header: "آیا راه دسترسی از قبل وجود دارد؟", id: "has_access", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "shomare_estelam_harim", header: "شماره استعلام دفتر ایمنی و حریم", id: "shomare_estelam_harim", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "max_month", header: "ماه", id: "max_month", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { @@ -292,48 +206,33 @@ const InquiryPrivacyFencingPage = () => { header: "روز", id: "max_day", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "shomare_tahaodname", header: "شماره تعهدنامه", id: "shomare_tahaodname", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "shomare_daftarkhaneh", header: "شماره دفترخانه", id: "shomare_daftarkhaneh", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "description", header: "توضیحات", id: "description", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, { accessorKey: "ronevesht", header: "رونوشت", id: "ronevesht", enableColumnFilter: false, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], }, ], - [] + [], ); return ( diff --git a/src/core/components/DataTable/Main.js b/src/core/components/DataTable/Main.js index db3a6f1..f18084c 100644 --- a/src/core/components/DataTable/Main.js +++ b/src/core/components/DataTable/Main.js @@ -26,10 +26,20 @@ const DataTable_Main = (props) => { }; const fetchUrl = useMemo(() => { + const isValueEmpty = (value) => { + if (Array.isArray(value)) { + return value.length === 0 || value.every(v => v === ""); + } + return value === "" || value === null || value === undefined; + }; + const filteredFilterData = Object.values(filterData).filter( + (filter) => !isValueEmpty(filter.value), + ); + const params = new URLSearchParams(); params.set("start", `${pagination.pageIndex * pagination.pageSize}`); params.set("size", pagination.pageSize); - params.set("filters", JSON.stringify(isEmptyObject(filterData) ? [] : [filterData])); + params.set("filters", JSON.stringify(filteredFilterData.length === 0 ? [] : filteredFilterData)); params.set("sorting", JSON.stringify(sortData)); return `${table_url}?${params}`; }, [table_url, filterData, pagination, columns, sortData]); diff --git a/src/core/components/DataTable/filter/FilterBodyField.jsx b/src/core/components/DataTable/filter/FilterBodyField.jsx index a9bef12..7f0337e 100644 --- a/src/core/components/DataTable/filter/FilterBodyField.jsx +++ b/src/core/components/DataTable/filter/FilterBodyField.jsx @@ -18,15 +18,15 @@ const columnFilterModeOptionFa = { }; function FilterBodyField({ - column, - filterParameters, - handleChange, - handleBlur, - setFieldValue, - errors, - touched, - resetForm, -}) { + column, + filterParameters, + handleChange, + handleBlur, + setFieldValue, + errors, + touched, + resetForm, + }) { const [anchorEl, setAnchorEl] = useState(null); const defaultFilterTranslation = columnFilterModeOptionFa[filterParameters.filterFn] || filterParameters.filterFn; @@ -48,8 +48,8 @@ function FilterBodyField({ touched={touched} /> ) : filterParameters.datatype === "numeric" && - filterParameters.filterFn === "equals" && - Array.isArray(column.columnSelectOption) ? ( + filterParameters.filterFn === "equals" && + Array.isArray(column.columnSelectOption) ? ( { diff --git a/src/lib/contexts/DataTable.js b/src/lib/contexts/DataTable.js index 3ada093..85f521f 100644 --- a/src/lib/contexts/DataTable.js +++ b/src/lib/contexts/DataTable.js @@ -22,7 +22,7 @@ const DataTableProvider = ({ children, user_id, page_name, table_name, columns } const values = flatColumns.reduce((acc, column) => { if (!column.enableColumnFilter) return acc; const filter = settingStore?.[user_id]?.[page_name]?.[table_name]?.["filters"]?.find( - (filter) => filter.id === column.id + (filter) => filter.id === column.id, ); if (column.datatype === "array") { acc[column.id] = { @@ -81,7 +81,7 @@ const DataTableProvider = ({ children, user_id, page_name, table_name, columns } position: "bottom-left", draggable: true, autoClose: false, - } + }, ); } else { toast.update("keep_data", {