send filter data for reports
This commit is contained in:
@@ -6,107 +6,107 @@ import { Controller, useWatch } from "react-hook-form";
|
||||
|
||||
const MissionDates = ({ control }) => {
|
||||
const type = useWatch({ control, name: "type" });
|
||||
|
||||
const start_date = useWatch({ control, name: "start_date" });
|
||||
const end_date = useWatch({ control, name: "end_date" });
|
||||
|
||||
const start_time = useWatch({ control, name: "start_time" });
|
||||
const end_time = useWatch({ control, name: "end_time" });
|
||||
|
||||
const startDateTime = makeDateTime(start_date, start_time);
|
||||
const endDateTime = makeDateTime(end_date, end_time);
|
||||
const now = new Date();
|
||||
|
||||
const startDateTime = start_date && start_time ? makeDateTime(start_date, start_time) : null;
|
||||
|
||||
const endDateTime = end_date && end_time ? makeDateTime(end_date, end_time) : null;
|
||||
|
||||
const isSameDay =
|
||||
start_date && end_date && new Date(start_date).toDateString() === new Date(end_date).toDateString();
|
||||
|
||||
const isToday = start_date && new Date(start_date).toDateString() === now.toDateString();
|
||||
|
||||
return (
|
||||
type && (
|
||||
<>
|
||||
<Grid item xs={12} sm={6}>
|
||||
<Controller
|
||||
control={control}
|
||||
name={"start_date"}
|
||||
render={({ field, fieldState: { error } }) => {
|
||||
return (
|
||||
name="start_date"
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<MuiDatePicker
|
||||
name="start_date"
|
||||
error={error}
|
||||
value={field.value}
|
||||
error={error}
|
||||
disableFuture={false}
|
||||
minDate={now}
|
||||
maxDate={end_date ?? null}
|
||||
placeholder={"تاریخ شروع ماموریت را وارد کنید"}
|
||||
label={"تاریخ شروع ماموریت"}
|
||||
setFieldValue={(name, value) => field.onChange(value || [])}
|
||||
helperText={error ? error.message : null}
|
||||
label="تاریخ شروع ماموریت"
|
||||
placeholder="تاریخ شروع ماموریت را وارد کنید"
|
||||
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||
helperText={error?.message}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
{type == 1 && (
|
||||
<Grid item xs={12} sm={6}>
|
||||
<Controller
|
||||
control={control}
|
||||
name={"start_time"}
|
||||
render={({ field, fieldState: { error } }) => {
|
||||
return (
|
||||
name="start_time"
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<MuiTimePicker
|
||||
name="start_time"
|
||||
error={error}
|
||||
value={field.value}
|
||||
minTime={
|
||||
start_date && new Date(start_date).toDateString() === now.toDateString()
|
||||
? now
|
||||
: null
|
||||
}
|
||||
maxTime={endDateTime ?? null}
|
||||
placeholder={"زمان شروع ماموریت را وارد کنید"}
|
||||
label={"زمان شروع ماموریت"}
|
||||
error={error}
|
||||
minTime={isToday ? now : null}
|
||||
maxTime={isSameDay && endDateTime ? endDateTime : null}
|
||||
label="زمان شروع ماموریت"
|
||||
placeholder="زمان شروع ماموریت را وارد کنید"
|
||||
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||
helperText={error ? error.message : null}
|
||||
helperText={error?.message}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
)}
|
||||
|
||||
<Grid item xs={12} sm={6}>
|
||||
<Controller
|
||||
control={control}
|
||||
name={"end_date"}
|
||||
render={({ field, fieldState: { error } }) => {
|
||||
return (
|
||||
name="end_date"
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<MuiDatePicker
|
||||
name="end_date"
|
||||
error={error}
|
||||
value={field.value}
|
||||
error={error}
|
||||
disableFuture={false}
|
||||
minDate={start_date ? start_date : now}
|
||||
placeholder={"تاریخ پایان ماموریت را وارد کنید"}
|
||||
label={"تاریخ پایان ماموریت"}
|
||||
setFieldValue={(name, value) => field.onChange(value || [])}
|
||||
helperText={error ? error.message : null}
|
||||
minDate={start_date || now}
|
||||
label="تاریخ پایان ماموریت"
|
||||
placeholder="تاریخ پایان ماموریت را وارد کنید"
|
||||
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||
helperText={error?.message}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
{type == 1 && (
|
||||
<Grid item xs={12} sm={6}>
|
||||
<Controller
|
||||
control={control}
|
||||
name={"end_time"}
|
||||
render={({ field, fieldState: { error } }) => {
|
||||
return (
|
||||
name="end_time"
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<MuiTimePicker
|
||||
name="end_time"
|
||||
error={error}
|
||||
value={field.value}
|
||||
minTime={startDateTime ?? null}
|
||||
placeholder={"زمان پایان ماموریت را وارد کنید"}
|
||||
label={"زمان پایان ماموریت"}
|
||||
error={error}
|
||||
minTime={isSameDay && startDateTime ? startDateTime : null}
|
||||
label="زمان پایان ماموریت"
|
||||
placeholder="زمان پایان ماموریت را وارد کنید"
|
||||
setFieldValue={(name, value) => field.onChange(value || null)}
|
||||
helperText={error ? error.message : null}
|
||||
helperText={error?.message}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
)}
|
||||
@@ -114,4 +114,5 @@ const MissionDates = ({ control }) => {
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
export default MissionDates;
|
||||
|
||||
@@ -50,7 +50,8 @@ const DriverReportsList = ({ data, specialFilter }) => {
|
||||
},
|
||||
];
|
||||
}, []);
|
||||
|
||||
const cleanedData = specialFilter.filter((item) => !(item.id === "province_id" && item.value === "-1"));
|
||||
const RowActionsWithRowData = (props) => <RowActions specialFilter={cleanedData} {...props} />;
|
||||
return (
|
||||
<Box sx={{ p: 1, border: 1, borderColor: "divider", borderRadius: 1 }}>
|
||||
<DataTableWithAuth
|
||||
@@ -62,7 +63,7 @@ const DriverReportsList = ({ data, specialFilter }) => {
|
||||
enablePagination={false}
|
||||
specialFilter={specialFilter}
|
||||
enableRowActions
|
||||
RowActions={RowActions}
|
||||
RowActions={RowActionsWithRowData}
|
||||
/>
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@ import { GET_DRIVER_DETAILS } from "@/core/utils/routes";
|
||||
import { Box } from "@mui/material";
|
||||
import { useMemo } from "react";
|
||||
|
||||
const DriverList = ({ row }) => {
|
||||
const DriverList = ({ row, specialFilter }) => {
|
||||
const columns = useMemo(
|
||||
() => [
|
||||
{
|
||||
@@ -93,6 +93,7 @@ const DriverList = ({ row }) => {
|
||||
<DataTableWithAuth
|
||||
need_filter={true}
|
||||
columns={columns}
|
||||
specialFilter={specialFilter}
|
||||
sorting={[{ id: "id", desc: true }]}
|
||||
table_url={`${GET_DRIVER_DETAILS}/${row.driver_id}`}
|
||||
page_name={"driverListReport"}
|
||||
|
||||
@@ -2,14 +2,14 @@ import { Box, Button, DialogActions, DialogContent } from "@mui/material";
|
||||
import { Stack } from "@mui/system";
|
||||
import DriverList from "./DriverDetailsDialog/DriverList";
|
||||
|
||||
const DriverDetailsTable = ({ row, setOpenDriverDetails }) => {
|
||||
const DriverDetailsTable = ({ row, setOpenDriverDetails, specialFilter }) => {
|
||||
return (
|
||||
<>
|
||||
<DialogContent dividers>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Stack spacing={3}>
|
||||
<Stack spacing={2}>
|
||||
<DriverList row={row} />
|
||||
<DriverList specialFilter={specialFilter} row={row} />
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
|
||||
import { useState } from "react";
|
||||
import DriverDetailsTable from "./Form";
|
||||
|
||||
const DriverDetails = ({ row }) => {
|
||||
const DriverDetails = ({ row, specialFilter }) => {
|
||||
const [openDriverDetails, setOpenDriverDetails] = useState(false);
|
||||
|
||||
return (
|
||||
@@ -35,7 +35,11 @@ const DriverDetails = ({ row }) => {
|
||||
</IconButton>
|
||||
<DialogTitle>ریز گزارشات راننده</DialogTitle>
|
||||
{openDriverDetails && (
|
||||
<DriverDetailsTable row={row.original} setOpenDriverDetails={setOpenDriverDetails} />
|
||||
<DriverDetailsTable
|
||||
specialFilter={specialFilter}
|
||||
row={row.original}
|
||||
setOpenDriverDetails={setOpenDriverDetails}
|
||||
/>
|
||||
)}
|
||||
</Dialog>
|
||||
</>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import DriverDetails from "./DriverDetails";
|
||||
|
||||
const RowActions = ({ row }) => {
|
||||
return <DriverDetails row={row} />;
|
||||
const RowActions = ({ row, specialFilter }) => {
|
||||
return <DriverDetails specialFilter={specialFilter} row={row} />;
|
||||
};
|
||||
export default RowActions;
|
||||
|
||||
@@ -27,8 +27,8 @@ const DriverReportsPage = () => {
|
||||
};
|
||||
const defaultFilter = [
|
||||
{ value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
||||
{ value: `${defaultValues.from_date}`, datatype: "date", id: "from_date", fn: "between" },
|
||||
{ value: `${defaultValues.date_to}`, datatype: "date", id: "date_to", fn: "between" },
|
||||
{ value: `${defaultValues.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" },
|
||||
{ value: `${defaultValues.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" },
|
||||
];
|
||||
const [specialFilter, setSpecialFilter] = useState(defaultFilter);
|
||||
|
||||
@@ -38,8 +38,8 @@ const DriverReportsPage = () => {
|
||||
params.set("date_to", `${data.date_to} 23:59:59`);
|
||||
setSpecialFilter([
|
||||
{ value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
||||
{ value: `${data.from_date}`, datatype: "date", id: "from_date", fn: "between" },
|
||||
{ value: `${data.date_to}`, datatype: "date", id: "date_to", fn: "between" },
|
||||
{ value: `${data.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" },
|
||||
{ value: `${data.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" },
|
||||
]);
|
||||
if (data.province_id === "-1") {
|
||||
try {
|
||||
|
||||
@@ -60,7 +60,8 @@ const MachinesReportsList = ({ data, specialFilter }) => {
|
||||
},
|
||||
];
|
||||
}, []);
|
||||
|
||||
const cleanedData = specialFilter.filter((item) => !(item.id === "province_id" && item.value === "-1"));
|
||||
const RowActionsWithRowData = (props) => <RowActions specialFilter={cleanedData} {...props} />;
|
||||
return (
|
||||
<Box sx={{ p: 1, border: 1, borderColor: "divider", borderRadius: 1 }}>
|
||||
<DataTableWithAuth
|
||||
@@ -72,7 +73,7 @@ const MachinesReportsList = ({ data, specialFilter }) => {
|
||||
enablePagination={false}
|
||||
specialFilter={specialFilter}
|
||||
enableRowActions
|
||||
RowActions={RowActions}
|
||||
RowActions={RowActionsWithRowData}
|
||||
/>
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@ import { GET_MACHINE_MISSIONS_DETAILS } from "@/core/utils/routes";
|
||||
import { Box } from "@mui/material";
|
||||
import { useMemo } from "react";
|
||||
|
||||
const MachineMissionsList = ({ row }) => {
|
||||
const MachineMissionsList = ({ row, specialFilter }) => {
|
||||
const columns = useMemo(
|
||||
() => [
|
||||
{
|
||||
@@ -91,6 +91,7 @@ const MachineMissionsList = ({ row }) => {
|
||||
<>
|
||||
<Box sx={{ mt: 3 }}>
|
||||
<DataTableWithAuth
|
||||
specialFilter={specialFilter}
|
||||
need_filter={true}
|
||||
columns={columns}
|
||||
sorting={[{ id: "id", desc: true }]}
|
||||
|
||||
@@ -2,14 +2,14 @@ import { Box, Button, DialogActions, DialogContent } from "@mui/material";
|
||||
import { Stack } from "@mui/system";
|
||||
import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
|
||||
|
||||
const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
|
||||
const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails, specialFilter }) => {
|
||||
return (
|
||||
<>
|
||||
<DialogContent dividers>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Stack spacing={3}>
|
||||
<Stack spacing={2}>
|
||||
<MachineMissionsList row={row} />
|
||||
<MachineMissionsList specialFilter={specialFilter} row={row} />
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
|
||||
import { useState } from "react";
|
||||
import MachineMissionsDetailsTable from "./Form";
|
||||
|
||||
const MissionDetails = ({ row }) => {
|
||||
const MissionDetails = ({ row, specialFilter }) => {
|
||||
const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
|
||||
|
||||
return (
|
||||
@@ -36,6 +36,7 @@ const MissionDetails = ({ row }) => {
|
||||
<DialogTitle>ریز گزارشات خودرو</DialogTitle>
|
||||
{openMachineMissionsDetails && (
|
||||
<MachineMissionsDetailsTable
|
||||
specialFilter={specialFilter}
|
||||
row={row.original}
|
||||
setOpenMachineMissionsDetails={setOpenMachineMissionsDetails}
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import MissionDetails from "./MissionDitails";
|
||||
|
||||
const RowActions = ({ row }) => {
|
||||
return <MissionDetails row={row} />;
|
||||
const RowActions = ({ row, specialFilter }) => {
|
||||
return <MissionDetails specialFilter={specialFilter} row={row} />;
|
||||
};
|
||||
export default RowActions;
|
||||
|
||||
@@ -27,8 +27,8 @@ const MachinesReportsPage = () => {
|
||||
};
|
||||
const defaultFilter = [
|
||||
{ value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
||||
{ value: `${defaultValues.from_date}`, datatype: "date", id: "from_date", fn: "between" },
|
||||
{ value: `${defaultValues.date_to}`, datatype: "date", id: "date_to", fn: "between" },
|
||||
{ value: `${defaultValues.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" },
|
||||
{ value: `${defaultValues.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" },
|
||||
];
|
||||
const [specialFilter, setSpecialFilter] = useState(defaultFilter);
|
||||
|
||||
@@ -38,8 +38,8 @@ const MachinesReportsPage = () => {
|
||||
params.set("date_to", `${data.date_to} 23:59:59`);
|
||||
setSpecialFilter([
|
||||
{ value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
|
||||
{ value: `${data.from_date}`, datatype: "date", id: "from_date", fn: "between" },
|
||||
{ value: `${data.date_to}`, datatype: "date", id: "date_to", fn: "between" },
|
||||
{ value: `${data.from_date} 00:00:00`, datatype: "date", id: "start_time", fn: "greaterThan" },
|
||||
{ value: `${data.date_to} 23:59:59`, datatype: "date", id: "finish_time", fn: "lessThan" },
|
||||
]);
|
||||
if (data.province_id === "-1") {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user