- random cleanup

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-01-12 18:21:21 -05:00
parent d360bcbb71
commit 34c332e077
2 changed files with 142 additions and 126 deletions

View File

@@ -1,102 +1,111 @@
import { useMutation } from "@apollo/client"; import {useMutation} from "@apollo/client";
import { Button, Card, Dropdown, TimePicker } from "antd"; import {Button, Card, Dropdown, TimePicker} from "antd";
import dayjs from "../../utils/day"; import dayjs from "../../utils/day";
import React, { useState } from "react"; import React, {useState} from "react";
import { useTranslation } from "react-i18next"; import {useTranslation} from "react-i18next";
import { logImEXEvent } from "../../firebase/firebase.utils"; import {logImEXEvent} from "../../firebase/firebase.utils";
import { UPDATE_JOB } from "../../graphql/jobs.queries"; import {UPDATE_JOB} from "../../graphql/jobs.queries";
import { DateFormatter } from "../../utils/DateFormatter"; import {DateFormatter} from "../../utils/DateFormatter";
import FormDatePicker from "../form-date-picker/form-date-picker.component"; import FormDatePicker from "../form-date-picker/form-date-picker.component";
export default function ProductionListDate({ export default function ProductionListDate({
record, record,
field, field,
time, time,
pastIndicator, pastIndicator,
}) { }) {
const [updateAlert] = useMutation(UPDATE_JOB); const [updateAlert] = useMutation(UPDATE_JOB);
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const { t } = useTranslation(); const {t} = useTranslation();
const handleChange = (date) => { const handleChange = (date) => {
logImEXEvent("product_toggle_date", { field }); logImEXEvent("product_toggle_date", {field});
// if (date.isSame(record[field] && dayjs(record[field]))) { // if (date.isSame(record[field] && dayjs(record[field]))) {
// return; // return;
// } // }
//e.stopPropagation(); //e.stopPropagation();
updateAlert({ updateAlert({
variables: { variables: {
jobId: record.id, jobId: record.id,
job: { job: {
[field]: date, [field]: date,
}, },
}, },
optimisticResponse: { optimisticResponse: {
update_jobs: { update_jobs: {
[field]: date, [field]: date,
}, },
}, },
}).then(() => { }).then(() => {
if (record.refetch) record.refetch(); if (record.refetch) record.refetch();
if (!time) { if (!time) {
setOpen(false); setOpen(false);
} }
}); });
}; };
let className = ""; let className = "";
if (pastIndicator) { if (pastIndicator) {
className = className =
!!record[field] && !!record[field] &&
((dayjs().isSameOrAfter(dayjs(record[field]), "day") && ((dayjs().isSameOrAfter(dayjs(record[field]), "day") &&
"production-completion-past") || "production-completion-past") ||
(dayjs().add(1, "day").isSame(dayjs(record[field]), "day") && (dayjs().add(1, "day").isSame(dayjs(record[field]), "day") &&
"production-completion-soon")); "production-completion-soon"));
} }
// TODO - Client Update = Why is the overlay a card? // TODO - Client Update = Why is the overlay a card?
return (
<Dropdown const overlayMenu = {
trigger={["click"]} items: [
onOpenChange={(v) => setOpen(v)} {
open={open} key: 'overlayItem1',
style={{ label:
height: "19px", <Card style={{padding: "1rem"}} onClick={(e) => e.stopPropagation()}>
}} <FormDatePicker
overlay={ onClick={(e) => e.stopPropagation()}
<Card style={{ padding: "1rem" }} onClick={(e) => e.stopPropagation()}> value={(record[field] && dayjs(record[field])) || null}
<FormDatePicker onChange={handleChange}
onClick={(e) => e.stopPropagation()} format="MM/DD/YYYY"
value={(record[field] && dayjs(record[field])) || null} isDateOnly={!time}
onChange={handleChange} />
format="MM/DD/YYYY" {time && (
isDateOnly={!time} <TimePicker
/> onClick={(e) => e.stopPropagation()}
{time && ( value={(record[field] && dayjs(record[field])) || null}
<TimePicker onChange={handleChange}
onClick={(e) => e.stopPropagation()} minuteStep={15}
value={(record[field] && dayjs(record[field])) || null} format="hh:mm a"
onChange={handleChange} />
minuteStep={15} )}
format="hh:mm a" <Button onClick={() => setOpen(false)}>
/> {t("general.actions.close")}
)} </Button>
<Button onClick={() => setOpen(false)}> </Card>
{t("general.actions.close")} }
</Button> ]
</Card> }
}
> return (
<div <Dropdown
onClick={() => setOpen(true)} trigger={["click"]}
style={{ onOpenChange={(v) => setOpen(v)}
height: "19px", open={open}
}} style={{
className={className} height: "19px",
> }}
<DateFormatter bordered={false}>{record[field]}</DateFormatter> menu={overlayMenu}
</div> >
</Dropdown> <div
); onClick={() => setOpen(true)}
style={{
height: "19px",
}}
className={className}
>
<DateFormatter bordered={false}>{record[field]}</DateFormatter>
</div>
</Dropdown>
);
} }

View File

@@ -89,7 +89,45 @@ export function ProductionLastContacted({ currentUser, record }) {
} }
}, [open, form, record.date_last_contacted]); }, [open, form, record.date_last_contacted]);
// TODO - Client Update - Why is this a card? const overlayMenu = {
items: [
{
key: 'overlay-item-1',
label:
<Card
style={{ padding: "1rem" }}
onClick={(e) => e.stopPropagation()}
>
<Form form={form} onFinish={handleFinish} layout="vertical">
<Form.Item
name="date_last_contacted"
label={t("jobs.fields.date_last_contacted")}
>
<FormDateTimePickerComponent />
</Form.Item>
<Form.Item
name="date_next_contact"
label={t("jobs.fields.date_next_contact")}
>
<FormDateTimePickerComponent />
</Form.Item>
<Form.Item label={t("notes.labels.notetoadd")} name="note">
<Input.TextArea rows={4} />
</Form.Item>
<Space>
<Button type="primary" htmlType="submit">
{t("general.actions.save")}
</Button>
<Button onClick={() => setOpen(false)}>
{t("general.actions.close")}
</Button>
</Space>
</Form>
</Card>
}
]
}
return ( return (
<div> <div>
<Dropdown <Dropdown
@@ -98,38 +136,7 @@ export function ProductionLastContacted({ currentUser, record }) {
style={{ style={{
height: "19px", height: "19px",
}} }}
overlay={ menu={overlayMenu}
<Card
style={{ padding: "1rem" }}
onClick={(e) => e.stopPropagation()}
>
<Form form={form} onFinish={handleFinish} layout="vertical">
<Form.Item
name="date_last_contacted"
label={t("jobs.fields.date_last_contacted")}
>
<FormDateTimePickerComponent />
</Form.Item>
<Form.Item
name="date_next_contact"
label={t("jobs.fields.date_next_contact")}
>
<FormDateTimePickerComponent />
</Form.Item>
<Form.Item label={t("notes.labels.notetoadd")} name="note">
<Input.TextArea rows={4} />
</Form.Item>
<Space>
<Button type="primary" htmlType="submit">
{t("general.actions.save")}
</Button>
<Button onClick={() => setOpen(false)}>
{t("general.actions.close")}
</Button>
</Space>
</Form>
</Card>
}
> >
<div <div
onClick={() => setOpen(true)} onClick={() => setOpen(true)}