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