Troubleshooting unsaved changes indicator BOD-172
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user