Troubleshooting unsaved changes indicator BOD-172

This commit is contained in:
Patrick Fic
2020-06-25 14:30:57 -07:00
parent 7305994a05
commit 288e5e4c02
2 changed files with 43 additions and 21 deletions

View File

@@ -6,14 +6,17 @@ import { Prompt, useLocation } from "react-router-dom";
export default function FormsFieldChanged({ form }) { export default function FormsFieldChanged({ form }) {
const { t } = useTranslation(); const { t } = useTranslation();
const handleReset = () => { const handleReset = () => {
form.resetFields(); form.resetFields();
}; };
const loc = useLocation(); const loc = useLocation();
return ( return (
<Form.Item shouldUpdate style={{ margin: 0, padding: 0 }}> <Form.Item shouldUpdate style={{ margin: 0, padding: 0 }}>
{() => { {() => {
console.log("Render", form.isFieldsTouched());
if (form.isFieldsTouched()) if (form.isFieldsTouched())
return ( return (
<div> <div>
@@ -26,7 +29,7 @@ export default function FormsFieldChanged({ form }) {
}} }}
/> />
<AlertComponent <AlertComponent
type='warning' type="warning"
message={ message={
<div> <div>
<span>{t("general.messages.unsavedchanges")}</span> <span>{t("general.messages.unsavedchanges")}</span>
@@ -35,7 +38,8 @@ export default function FormsFieldChanged({ form }) {
style={{ style={{
cursor: "pointer", cursor: "pointer",
textDecoration: "underline", textDecoration: "underline",
}}> }}
>
{t("general.actions.reset")} {t("general.actions.reset")}
</span> </span>
</div> </div>

View File

@@ -101,9 +101,10 @@ export function JobsDetailPage({
// size: "small", // size: "small",
}; };
const handleFinish = (values) => { const handleFinish = async (values) => {
const newTotals = CalculateJob({ ...job, ...values }, bodyshop.shoprates); const newTotals = CalculateJob({ ...job, ...values }, bodyshop.shoprates);
mutationUpdateJob({
const result = await mutationUpdateJob({
variables: { variables: {
jobId: job.id, jobId: job.id,
job: { job: {
@@ -113,30 +114,36 @@ export function JobsDetailPage({
job_totals: JSON.stringify(newTotals), job_totals: JSON.stringify(newTotals),
}, },
}, },
}).then((r) => { });
if (!!!result.errors) {
notification["success"]({ notification["success"]({
message: t("jobs.successes.savetitle"), message: t("jobs.successes.savetitle"),
}); });
refetch().then((r) => form.resetFields()); await refetch();
}); form.resetFields();
form.resetFields();
}
}; };
return ( return (
<Suspense <Suspense
fallback={<LoadingSpinner message={t("general.labels.loadingapp")} />}> fallback={<LoadingSpinner message={t("general.labels.loadingapp")} />}
>
<ScheduleJobModalContainer /> <ScheduleJobModalContainer />
<JobReconciliationModal /> <JobReconciliationModal />
<JobLineUpsertModalContainer /> <JobLineUpsertModalContainer />
<Form <Form
form={form} form={form}
name='JobDetailForm' name="JobDetailForm"
onFinish={handleFinish} onFinish={handleFinish}
{...formItemLayout} {...formItemLayout}
autoComplete={"off"} autoComplete={"off"}
initialValues={{ initialValues={{
...job, ...job,
loss_date: job.loss_date ? moment(job.loss_date) : null, loss_date: job.loss_date ? moment(job.loss_date) : null,
}}> }}
>
<FormFieldsChanged form={form} /> <FormFieldsChanged form={form} />
<JobsDetailHeader <JobsDetailHeader
@@ -148,7 +155,8 @@ export function JobsDetailPage({
/> />
<Tabs <Tabs
defaultActiveKey={search.tab} defaultActiveKey={search.tab}
onChange={(key) => history.push({ search: `?tab=${key}` })}> onChange={(key) => history.push({ search: `?tab=${key}` })}
>
<Tabs.TabPane <Tabs.TabPane
tab={ tab={
<span> <span>
@@ -156,7 +164,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.claimdetail")} {t("menus.jobsdetail.claimdetail")}
</span> </span>
} }
key='claimdetail'> key="claimdetail"
>
<JobsDetailClaims job={job} /> <JobsDetailClaims job={job} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -166,7 +175,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.insurance")} {t("menus.jobsdetail.insurance")}
</span> </span>
} }
key='insurance'> key="insurance"
>
<JobsDetailInsurance job={job} form={form} /> <JobsDetailInsurance job={job} form={form} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -176,7 +186,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.repairdata")} {t("menus.jobsdetail.repairdata")}
</span> </span>
} }
key='repairdata'> key="repairdata"
>
<JobsLinesContainer jobId={job.id} /> <JobsLinesContainer jobId={job.id} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -186,7 +197,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.financials")} {t("menus.jobsdetail.financials")}
</span> </span>
} }
key='financials'> key="financials"
>
<JobsDetailFinancials job={job} /> <JobsDetailFinancials job={job} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -196,7 +208,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.partssublet")} {t("menus.jobsdetail.partssublet")}
</span> </span>
} }
key='partssublet'> key="partssublet"
>
<JobsDetailPliContainer job={job} /> <JobsDetailPliContainer job={job} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -206,7 +219,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.labor")} {t("menus.jobsdetail.labor")}
</span> </span>
} }
key='labor'> key="labor"
>
<JobsDetailLaborContainer jobId={job.id} /> <JobsDetailLaborContainer jobId={job.id} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -216,7 +230,8 @@ export function JobsDetailPage({
{t("menus.jobsdetail.dates")} {t("menus.jobsdetail.dates")}
</span> </span>
} }
key='dates'> key="dates"
>
<JobsDetailDatesComponent job={job} /> <JobsDetailDatesComponent job={job} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -226,7 +241,8 @@ export function JobsDetailPage({
{t("jobs.labels.documents")} {t("jobs.labels.documents")}
</span> </span>
} }
key='documents'> key="documents"
>
<JobsDocumentsGalleryContainer jobId={job.id} /> <JobsDocumentsGalleryContainer jobId={job.id} />
</Tabs.TabPane> </Tabs.TabPane>
<Tabs.TabPane <Tabs.TabPane
@@ -236,7 +252,8 @@ export function JobsDetailPage({
{t("jobs.labels.notes")} {t("jobs.labels.notes")}
</span> </span>
} }
key='notes'> key="notes"
>
<JobNotesContainer jobId={job.id} /> <JobNotesContainer jobId={job.id} />
</Tabs.TabPane> </Tabs.TabPane>
@@ -247,7 +264,8 @@ export function JobsDetailPage({
{t("jobs.labels.audit")} {t("jobs.labels.audit")}
</span> </span>
} }
key='audit'> key="audit"
>
<JobsDetailAuditContainer recordId={job.id} /> <JobsDetailAuditContainer recordId={job.id} />
</Tabs.TabPane> </Tabs.TabPane>
</Tabs> </Tabs>