From a63e119b97bb337015f570afb3aa4a8c76dd0f1c Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Tue, 20 May 2025 14:05:34 +0330 Subject: [PATCH 1/5] change position columns --- .../damages/operator/OperatorList.jsx | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx index 2c07053..36e4b47 100644 --- a/src/components/dashboard/damages/operator/OperatorList.jsx +++ b/src/components/dashboard/damages/operator/OperatorList.jsx @@ -39,6 +39,25 @@ const OperatorList = () => { grow: false, size: 100, }, + { + accessorKey: "status", + header: "وضعیت", + id: "status", + enableColumnFilter: true, + datatype: "numeric", + filterMode: "equals", + grow: false, + size: 100, + columnSelectOption: () => { + return statusOptions.map((status) => ({ + value: status.value, + label: status.label, + })); + }, + Cell: ({ row }) => { + return {row.original.status_fa}; + }, + }, { header: "اطلاعات تصادف", id: "accidentInfo", @@ -422,25 +441,6 @@ const OperatorList = () => { grow: false, size: 100, }, - { - accessorKey: "status", - header: "وضعیت", - id: "status", - enableColumnFilter: true, - datatype: "numeric", - filterMode: "equals", - grow: false, - size: 100, - columnSelectOption: () => { - return statusOptions.map((status) => ({ - value: status.value, - label: status.label, - })); - }, - Cell: ({ row }) => { - return {row.original.status_fa}; - }, - }, ]; }, []); @@ -456,7 +456,7 @@ const OperatorList = () => { sorting={[{ id: "id", desc: true }]} TableToolbar={Toolbar} enableRowActions - positionActionsColumn={"last"} + positionActionsColumn={"first"} RowActions={RowActions} /> From 6dc9d4995f000e4427288e06196999c81de0a6ec Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Tue, 20 May 2025 14:05:53 +0330 Subject: [PATCH 2/5] formatting --- src/components/dashboard/roadSafety/operator/Learn/index.jsx | 4 ++-- .../dashboard/roadSafety/supervisor/Learn/index.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/dashboard/roadSafety/operator/Learn/index.jsx b/src/components/dashboard/roadSafety/operator/Learn/index.jsx index 8ea5000..8db03e7 100644 --- a/src/components/dashboard/roadSafety/operator/Learn/index.jsx +++ b/src/components/dashboard/roadSafety/operator/Learn/index.jsx @@ -14,7 +14,7 @@ const Learn = () => { document.body.appendChild(link); link.click(); document.body.removeChild(link); - } + }; return ( <> @@ -36,4 +36,4 @@ const Learn = () => { ); }; -export default Learn; \ No newline at end of file +export default Learn; diff --git a/src/components/dashboard/roadSafety/supervisor/Learn/index.jsx b/src/components/dashboard/roadSafety/supervisor/Learn/index.jsx index 8ea5000..8db03e7 100644 --- a/src/components/dashboard/roadSafety/supervisor/Learn/index.jsx +++ b/src/components/dashboard/roadSafety/supervisor/Learn/index.jsx @@ -14,7 +14,7 @@ const Learn = () => { document.body.appendChild(link); link.click(); document.body.removeChild(link); - } + }; return ( <> @@ -36,4 +36,4 @@ const Learn = () => { ); }; -export default Learn; \ No newline at end of file +export default Learn; From ff8e0fda9326f301bd07ec17eea0e7d87191b358 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sat, 24 May 2025 13:51:56 +0330 Subject: [PATCH 3/5] add permission country --- .../damages/operator/OperatorList.jsx | 94 ++++++++++--------- 1 file changed, 51 insertions(+), 43 deletions(-) diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx index 36e4b47..c52107e 100644 --- a/src/components/dashboard/damages/operator/OperatorList.jsx +++ b/src/components/dashboard/damages/operator/OperatorList.jsx @@ -14,8 +14,14 @@ import ImageDialog from "./RowActions/ImageDialog"; import LocationForm from "./RowActions/LocationForm"; import ShowPlate from "./RowActions/ShowPlate"; import Toolbar from "./Toolbar"; +import { usePermissions } from "@/lib/hooks/usePermissions"; +import { useAuth } from "@/lib/contexts/auth"; const OperatorList = () => { + const { data: userPermissions } = usePermissions(); + const hasCountryPermission = userPermissions?.includes("show-receipt"); + const { user } = useAuth(); + const statusOptions = [ { value: "", label: "همه وضعیت ها" }, { value: 0, label: "بدون اقدام" }, @@ -26,6 +32,42 @@ const OperatorList = () => { { value: 5, label: "نامه پلیس راه صادر شده است" }, ]; const columns = useMemo(() => { + const provinceColumn = { + accessorKey: "province_id", + 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: ({ row }) => <>{row.original.province_fa}, + } return [ { accessorKey: "id", @@ -66,42 +108,7 @@ const OperatorList = () => { grow: false, size: 50, columns: [ - { - accessorKey: "province_id", - 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: ({ row }) => <>{row.original.province_fa}, - }, + ...(hasCountryPermission ? [provinceColumn] : []), { accessorKey: "city_id", header: "شهرستان", // Office @@ -109,17 +116,17 @@ const OperatorList = () => { enableColumnFilter: true, datatype: "numeric", filterMode: "equals", - dependencyId: "province_id", + dependencyId: hasCountryPermission ? "province_id" : null, grow: false, size: 120, ColumnSelectComponent: (props) => { const { cityList, loadingCityList, errorCityList } = useCities( - props.dependencyFieldValue.value + hasCountryPermission ? props.dependencyFieldValue.value : user.province_id ); - const [prevDependency, setPrevDependency] = useState(props.dependencyFieldValue.value); + const [prevDependency, setPrevDependency] = useState(hasCountryPermission ? props.dependencyFieldValue.value : user.province_id); const getColumnSelectOptions = useMemo(() => { - if (props.dependencyFieldValue.value === "") { + if (hasCountryPermission && props.dependencyFieldValue.value === "") { return [{ value: "empty", label: "ابتدا استان را انتخاب کنید" }]; } if (loadingCityList) { @@ -137,10 +144,11 @@ const OperatorList = () => { ]; }, [cityList, loadingCityList, errorCityList]); useEffect(() => { + if (hasCountryPermission) return; if (prevDependency === props.dependencyFieldValue?.value) return; props.handleChange({ ...props.filterParameters, value: "" }); setPrevDependency(props.dependencyFieldValue?.value); - }, [props.dependencyFieldValue?.value]); + }, [props.dependencyFieldValue?.value, hasCountryPermission]); return ( { props.dependencyFieldValue?.value === "" ? "empty" : loadingCityList - ? "loading" - : props.filterParameters.value + ? "loading" + : props.filterParameters.value } columnSelectOption={getColumnSelectOptions} /> From 73c6f375980dae439b445662fa8dd94f459a2e22 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sat, 24 May 2025 13:53:26 +0330 Subject: [PATCH 4/5] formatting --- .../dashboard/damages/operator/OperatorList.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx index c52107e..584be1b 100644 --- a/src/components/dashboard/damages/operator/OperatorList.jsx +++ b/src/components/dashboard/damages/operator/OperatorList.jsx @@ -67,7 +67,7 @@ const OperatorList = () => { ); }, Cell: ({ row }) => <>{row.original.province_fa}, - } + }; return [ { accessorKey: "id", @@ -123,7 +123,9 @@ const OperatorList = () => { const { cityList, loadingCityList, errorCityList } = useCities( hasCountryPermission ? props.dependencyFieldValue.value : user.province_id ); - const [prevDependency, setPrevDependency] = useState(hasCountryPermission ? props.dependencyFieldValue.value : user.province_id); + const [prevDependency, setPrevDependency] = useState( + hasCountryPermission ? props.dependencyFieldValue.value : user.province_id + ); const getColumnSelectOptions = useMemo(() => { if (hasCountryPermission && props.dependencyFieldValue.value === "") { @@ -156,8 +158,8 @@ const OperatorList = () => { props.dependencyFieldValue?.value === "" ? "empty" : loadingCityList - ? "loading" - : props.filterParameters.value + ? "loading" + : props.filterParameters.value } columnSelectOption={getColumnSelectOptions} /> From ae59b860cc40b15ebe6f3763c76adf9798b1bb4c Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sat, 24 May 2025 13:53:54 +0330 Subject: [PATCH 5/5] change version to 1.1.6 --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index cc277d3..1746ff6 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ HOST="rms.witel.ir" -NEXT_PUBLIC_VERSION="1.1.5" +NEXT_PUBLIC_VERSION="1.1.6" NEXT_PUBLIC_API_URL="https://rms.witel.ir" NEXT_PUBLIC_MAPTILE_ENDPOINT="https://rmsmap.rmto.ir/141map" \ No newline at end of file