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