diff --git a/jsconfig.json b/jsconfig.json
index c136578..b51472a 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -1,27 +1,27 @@
// javascript for production
-// {
-// "compilerOptions": {
-// "paths": {
-// "@/*": ["./src/*"],
-// "^/*": ["./public/*"]
-// }
-// }
-// }
-
-// typescript for local development
{
"compilerOptions": {
- "jsx": "react-jsx",
- "noUnusedLocals": true,
- "noImplicitAny": false,
- "checkJs": true,
- "allowJs": true,
- "strict": true,
- "baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"^/*": ["./public/*"]
}
- },
- "exclude": ["node_modules"]
+ }
}
+
+// typescript for local development
+// {
+// "compilerOptions": {
+// "jsx": "react-jsx",
+// "noUnusedLocals": true,
+// "noImplicitAny": false,
+// "checkJs": true,
+// "allowJs": true,
+// "strict": true,
+// "baseUrl": ".",
+// "paths": {
+// "@/*": ["./src/*"],
+// "^/*": ["./public/*"]
+// }
+// },
+// "exclude": ["node_modules"]
+// }
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
index 4eaae92..34badf1 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
@@ -3,6 +3,7 @@ import DataTableWithAuth from "@/core/components/DataTableWithAuth";
import { Box } from "@mui/material";
import { useMemo } from "react";
import Toolbar from "./Toolbar";
+import RowActions from "./RowActions";
const MachinesReportsList = ({ data, specialFilter }) => {
const columns = useMemo(() => {
@@ -70,6 +71,8 @@ const MachinesReportsList = ({ data, specialFilter }) => {
table_name={"roadMissionReportList"}
enablePagination={false}
specialFilter={specialFilter}
+ enableRowActions
+ RowActions={RowActions}
/>
);
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
new file mode 100644
index 0000000..037aec7
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
@@ -0,0 +1,106 @@
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { GET_MACHINE_MISSIONS_DETAILS } from "@/core/utils/routes";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+
+const MachineMissionsList = ({ row }) => {
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 80,
+ },
+ {
+ 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",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "station_name",
+ header: "راهدارخانه",
+ id: "station_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "driver_name",
+ header: "راننده",
+ id: "driver_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "km",
+ header: "کیلومتر شروع",
+ id: "km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "end_km",
+ header: "کیلومتر پایان",
+ id: "end_km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ ],
+ []
+ );
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default MachineMissionsList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx
new file mode 100644
index 0000000..5e79bfa
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx
@@ -0,0 +1,27 @@
+import { Box, Button, DialogActions, DialogContent } from "@mui/material";
+import { Stack } from "@mui/system";
+import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
+
+const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default MachineMissionsDetailsTable;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx
new file mode 100644
index 0000000..3b65c8f
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx
@@ -0,0 +1,47 @@
+import { Close, RemoveRedEye } from "@mui/icons-material";
+import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MachineMissionsDetailsTable from "./Form";
+
+const MissionDetails = ({ row }) => {
+ const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
+
+ return (
+ <>
+
+ {
+ setOpenMachineMissionsDetails(true);
+ }}
+ >
+
+
+
+
+ >
+ );
+};
+export default MissionDetails;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx
new file mode 100644
index 0000000..5e1a4bd
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx
@@ -0,0 +1,46 @@
+import { useEffect, useRef } from "react";
+import { Marker, Polyline, useMap } from "react-leaflet";
+import L from "leaflet";
+import polyline from "@mapbox/polyline";
+import SourceIcon from "@/assets/images/source-icon.svg";
+import DestIcon from "@/assets/images/destination-icon.svg";
+
+const ShowRoute = ({ area }) => {
+ const map = useMap();
+ const defaultIconSize = [35, 35];
+
+ const createCustomIcon = (size, iconUrl) => {
+ return L.icon({
+ iconUrl: iconUrl,
+ iconSize: size,
+ iconAnchor: [size[0] / 2, size[1]],
+ popupAnchor: [0, -size[1]],
+ });
+ };
+
+ useEffect(() => {
+ if (coords.length > 0) {
+ map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
+ }
+ }, [area]);
+ const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
+ const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
+
+ if (!area) return null;
+ const coords = polyline.decode(area, 6);
+
+ if (coords.length === 0) return null;
+
+ const sourcePosition = coords[0];
+ const destPosition = coords[coords.length - 1];
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default ShowRoute;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx
new file mode 100644
index 0000000..4501d35
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx
@@ -0,0 +1,57 @@
+import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MapIcon from "@mui/icons-material/Map";
+import MapLayer from "@/core/components/MapLayer";
+import ShowRoute from "./ShowRoute";
+
+const RouteDetail = ({ encoded_route }) => {
+ const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
+ return (
+ <>
+
+ setOpenRouteDetailDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default RouteDetail;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx
new file mode 100644
index 0000000..dbf9aa7
--- /dev/null
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx
@@ -0,0 +1,6 @@
+import MissionDetails from "./MissionDitails";
+
+const RowActions = ({ row }) => {
+ return ;
+};
+export default RowActions;
diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js
index 2bac1c4..10a6117 100644
--- a/src/core/utils/routes.js
+++ b/src/core/utils/routes.js
@@ -291,3 +291,4 @@ export const GET_PROVINCES_LIST = api + "/api/v3/provinces/list";
export const GET_CITIES_LIST = api + "/api/v3/cities/list";
export const GET_STATIONS_LIST = api + "/api/v3/road_maintenance_station";
export const UPDATE_MACHINE_STATUS_AND_LOCATION = api + "/api/v3/cmms_machines";
+export const GET_MACHINE_MISSIONS_DETAILS = api + "/api/v3/missions/report_machine/machine_details_report";