parent
8188dab2b4
commit
e782c49e4b
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug React in Chrome",
|
||||||
|
"type": "pwa-chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"url": "http://localhost:3000",
|
||||||
|
"webRoot": "${workspaceFolder}/src/",
|
||||||
|
"breakOnLoad": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,232 @@
|
|||||||
|
import { Modal, Form, Input, DatePicker, Switch } from "antd";
|
||||||
|
import { useState } from "react";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import { TTask } from "../../types/Tasks/TTasks";
|
||||||
|
|
||||||
|
interface ShiftAndCoDriverModalProps {
|
||||||
|
open: boolean;
|
||||||
|
onOk: (values: any) => void;
|
||||||
|
onCancel: () => void;
|
||||||
|
recordTask?: TTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ShiftAndCoDriverModal: React.FC<ShiftAndCoDriverModalProps> = ({
|
||||||
|
open,
|
||||||
|
onOk,
|
||||||
|
onCancel,
|
||||||
|
recordTask,
|
||||||
|
}) => {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const [needsCycle, setNeedsCycle] = useState(false);
|
||||||
|
const [needsDriver, setNeedsDriver] = useState(false);
|
||||||
|
const [needsPickUp, setNeedsPickUp] = useState(false);
|
||||||
|
|
||||||
|
const handleOk = async () => {
|
||||||
|
try {
|
||||||
|
const values = await form.validateFields();
|
||||||
|
|
||||||
|
const formattedValues = Object.fromEntries(
|
||||||
|
Object.entries(values).map(([key, value]) => [
|
||||||
|
key,
|
||||||
|
dayjs.isDayjs(value) ? value.format("YYYY-MM-DD HH:mm:ss") : value,
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
onOk(formattedValues);
|
||||||
|
form.resetFields();
|
||||||
|
} catch (err) {
|
||||||
|
console.log("Validation error:", err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title="Shift and Cycle & Co-Driver Info"
|
||||||
|
open={open}
|
||||||
|
onOk={handleOk}
|
||||||
|
onCancel={onCancel}
|
||||||
|
width={700}
|
||||||
|
>
|
||||||
|
<Form
|
||||||
|
form={form}
|
||||||
|
layout="vertical"
|
||||||
|
initialValues={{
|
||||||
|
driver_name: recordTask?.customer?.name,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* SHIFT INFO */}
|
||||||
|
<Form.Item
|
||||||
|
label="Shift Date"
|
||||||
|
name="shift_date"
|
||||||
|
rules={[{ required: true, message: "Please select date" }]}
|
||||||
|
>
|
||||||
|
<DatePicker
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
format="DD MMM YYYY HH:mm:ss"
|
||||||
|
showTime={{ format: "HH:mm:ss" }}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Shift Location"
|
||||||
|
name="shift_location"
|
||||||
|
rules={[{ required: true, message: "Please enter location" }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="Enter location" />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
{/* Pick Up */}
|
||||||
|
|
||||||
|
<Form.Item label="Pick Up Info">
|
||||||
|
<Switch
|
||||||
|
checked={needsPickUp}
|
||||||
|
onChange={(checked) => {
|
||||||
|
setNeedsPickUp(checked);
|
||||||
|
if (!checked) {
|
||||||
|
form.resetFields(["pickup_date", "cycle_location"]);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
{needsPickUp && (
|
||||||
|
<>
|
||||||
|
<Form.Item
|
||||||
|
label="Pick Up Date"
|
||||||
|
name="pickup_date"
|
||||||
|
rules={[{ required: true, message: "Please select date" }]}
|
||||||
|
>
|
||||||
|
<DatePicker
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
format="DD MMM YYYY HH:mm:ss"
|
||||||
|
showTime={{ format: "HH:mm:ss" }}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Pick Up Location"
|
||||||
|
name="cycle_location"
|
||||||
|
rules={[{ required: true, message: "Please enter location" }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="Enter location" />
|
||||||
|
</Form.Item>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{/* Cycle info */}
|
||||||
|
|
||||||
|
<Form.Item label="Cycle Info">
|
||||||
|
<Switch
|
||||||
|
checked={needsCycle}
|
||||||
|
onChange={(checked) => {
|
||||||
|
setNeedsCycle(checked);
|
||||||
|
if (!checked) {
|
||||||
|
form.resetFields(["cycle_date", "cycle_location"]);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
{needsCycle && (
|
||||||
|
<>
|
||||||
|
<Form.Item
|
||||||
|
label="Cycle Date"
|
||||||
|
name="cycle_date"
|
||||||
|
rules={[{ required: true, message: "Please select date" }]}
|
||||||
|
>
|
||||||
|
<DatePicker
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
format="DD MMM YYYY HH:mm:ss"
|
||||||
|
showTime={{ format: "HH:mm:ss" }}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Cycle Location"
|
||||||
|
name="cycle_location"
|
||||||
|
rules={[{ required: true, message: "Please enter location" }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="Enter location" />
|
||||||
|
</Form.Item>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{/* DRIVER INFO */}
|
||||||
|
|
||||||
|
<Form.Item label="CO-Driver Info">
|
||||||
|
<Switch
|
||||||
|
checked={needsDriver}
|
||||||
|
onChange={(checked) => {
|
||||||
|
setNeedsDriver(checked);
|
||||||
|
if (!checked) {
|
||||||
|
form.resetFields([
|
||||||
|
"driver_name",
|
||||||
|
"co_driver_name",
|
||||||
|
"co_driver_pickup_date",
|
||||||
|
"co_driver_pickup_location",
|
||||||
|
"co_driver_drop_date",
|
||||||
|
"co_driver_drop_location",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
{needsDriver && (
|
||||||
|
<>
|
||||||
|
<Form.Item label="Driver Name" name="driver_name">
|
||||||
|
<Input placeholder="Driver name" />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label="Co-Driver Name" name="co_driver_name">
|
||||||
|
<Input placeholder="Co-driver name" />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Co-Driver Pick Up Date"
|
||||||
|
name="co_driver_pickup_date"
|
||||||
|
rules={[{ required: true, message: "Please select pickup date" }]}
|
||||||
|
>
|
||||||
|
<DatePicker
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
format="DD MMM YYYY HH:mm:ss"
|
||||||
|
showTime={{ format: "HH:mm:ss" }}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Co-Driver Pick Up Location"
|
||||||
|
name="co_driver_pickup_location"
|
||||||
|
rules={[
|
||||||
|
{ required: true, message: "Please enter pickup location" },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Input placeholder="Enter pickup location" />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="Co-Driver Drop Date"
|
||||||
|
name="co_driver_drop_date"
|
||||||
|
rules={[{ required: true, message: "Please select date" }]}
|
||||||
|
>
|
||||||
|
<DatePicker
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
format="DD MMM YYYY HH:mm:ss"
|
||||||
|
showTime={{ format: "HH:mm:ss" }}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label="Co-Driver Drop Location"
|
||||||
|
name="co_driver_drop_location"
|
||||||
|
rules={[{ required: true, message: "Please enter location" }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="Drop location" />
|
||||||
|
</Form.Item>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</Form>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ShiftAndCoDriverModal;
|
Loading…
Reference in new issue