diff --git a/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx
index 587205ad6..0135cb756 100644
--- a/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx
+++ b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx
@@ -1,5 +1,5 @@
import { Form, Modal, notification } from "antd";
-import React from "react";
+import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
@@ -13,48 +13,51 @@ import { useMutation } from "@apollo/react-hooks";
const mapStateToProps = createStructuredSelector({
courtesyCarReturnModal: selectCourtesyCarReturn,
- bodyshop: selectBodyshop
+ bodyshop: selectBodyshop,
});
-const mapDispatchToProps = dispatch => ({
- toggleModalVisible: () => dispatch(toggleModalVisible("courtesyCarReturn"))
+const mapDispatchToProps = (dispatch) => ({
+ toggleModalVisible: () => dispatch(toggleModalVisible("courtesyCarReturn")),
});
export function InvoiceEnterModalContainer({
courtesyCarReturnModal,
toggleModalVisible,
- bodyshop
+ bodyshop,
}) {
+ const [loading, setLoading] = useState(false);
const { visible, context, actions } = courtesyCarReturnModal;
const { t } = useTranslation();
const [form] = Form.useForm();
const [updateContract] = useMutation(RETURN_CONTRACT);
- const handleFinish = values => {
+ const handleFinish = (values) => {
+ setLoading(true);
updateContract({
variables: {
contractId: context.contractId,
cccontract: {
kmend: values.kmend,
actualreturn: values.actualreturn,
- status: "contracts.status.returned"
+ status: "contracts.status.returned",
},
courtesycarid: context.courtesyCarId,
courtesycar: {
status: "courtesycars.status.in",
fuel: values.fuel,
- mileage: values.kmend
- }
- }
+ mileage: values.kmend,
+ },
+ },
})
- .then(r => {
+ .then((r) => {
if (actions.refetch) actions.refetch();
toggleModalVisible();
})
- .catch(error => {
+ .catch((error) => {
notification["error"]({
- message: t("contracts.errors.returning", { error: error })
+ message: t("contracts.errors.returning", { error: error }),
});
});
+ setLoading(false);
};
return (
@@ -65,7 +68,7 @@ export function InvoiceEnterModalContainer({
width={"90%"}
okText={t("general.actions.save")}
onOk={() => form.submit()}
- okButtonProps={{ htmlType: "submit" }}
+ okButtonProps={{ htmlType: "submit", loading: loading }}
>
);
}
diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
index 338d5d8bf..e0db322dd 100644
--- a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
+++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
@@ -7,7 +7,8 @@ export default function JobLinesUpsertModalComponent({
visible,
jobLine,
handleCancel,
- handleFinish
+ handleFinish,
+ loading,
}) {
const { t } = useTranslation();
const [form] = Form.useForm();
@@ -32,6 +33,7 @@ export default function JobLinesUpsertModalComponent({
visible={visible}
okText={t("general.actions.save")}
onOk={() => form.submit()}
+ okButtonProps={{ loading: loading }}
onCancel={handleCancel}
>
diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
index e3e47a6b2..8db6c5182 100644
--- a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
+++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
@@ -1,73 +1,78 @@
import { notification } from "antd";
-import React from "react";
+import React, { useState } from "react";
import { useMutation } from "@apollo/react-hooks";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
-import { INSERT_NEW_JOB_LINE, UPDATE_JOB_LINE } from "../../graphql/jobs-lines.queries";
+import {
+ INSERT_NEW_JOB_LINE,
+ UPDATE_JOB_LINE,
+} from "../../graphql/jobs-lines.queries";
import { toggleModalVisible } from "../../redux/modals/modals.actions";
import { selectJobLineEditModal } from "../../redux/modals/modals.selectors";
import JobLinesUpdsertModal from "./job-lines-upsert-modal.component";
const mapStateToProps = createStructuredSelector({
- jobLineEditModal: selectJobLineEditModal
+ jobLineEditModal: selectJobLineEditModal,
});
-const mapDispatchToProps = dispatch => ({
- toggleModalVisible: () => dispatch(toggleModalVisible("jobLineEdit"))
+const mapDispatchToProps = (dispatch) => ({
+ toggleModalVisible: () => dispatch(toggleModalVisible("jobLineEdit")),
});
function JobLinesUpsertModalContainer({
jobLineEditModal,
- toggleModalVisible
+ toggleModalVisible,
}) {
const { t } = useTranslation();
const [insertJobLine] = useMutation(INSERT_NEW_JOB_LINE);
const [updateJobLine] = useMutation(UPDATE_JOB_LINE);
-
- const handleFinish = values => {
+ const [loading, setLoading] = useState(false);
+ const handleFinish = (values) => {
+ setLoading(true);
if (!jobLineEditModal.context.id) {
insertJobLine({
variables: {
- lineInput: [{ jobid: jobLineEditModal.context.jobid, ...values }]
- }
+ lineInput: [{ jobid: jobLineEditModal.context.jobid, ...values }],
+ },
})
- .then(r => {
+ .then((r) => {
if (jobLineEditModal.actions.refetch)
jobLineEditModal.actions.refetch();
toggleModalVisible();
notification["success"]({
- message: t("joblines.successes.created")
+ message: t("joblines.successes.created"),
});
})
- .catch(error => {
+ .catch((error) => {
notification["error"]({
message: t("joblines.errors.creating", {
- message: error.message
- })
+ message: error.message,
+ }),
});
});
} else {
updateJobLine({
variables: {
lineId: jobLineEditModal.context.id,
- line: values
- }
+ line: values,
+ },
})
- .then(r => {
+ .then((r) => {
notification["success"]({
- message: t("joblines.successes.updated")
+ message: t("joblines.successes.updated"),
});
})
- .catch(error => {
+ .catch((error) => {
notification["success"]({
message: t("joblines.errors.updating", {
- message: error.message
- })
+ message: error.message,
+ }),
});
});
if (jobLineEditModal.actions.refetch) jobLineEditModal.actions.refetch();
toggleModalVisible();
}
+ setLoading(false);
};
const handleCancel = () => {
@@ -80,6 +85,7 @@ function JobLinesUpsertModalContainer({
jobLine={jobLineEditModal.context}
handleFinish={handleFinish}
handleCancel={handleCancel}
+ loading={loading}
/>
);
}
diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx
index bab8a4849..7142170f0 100644
--- a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx
+++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx
@@ -1,5 +1,5 @@
import { Button, notification } from "antd";
-import React from "react";
+import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import axios from "axios";
import { useMutation } from "@apollo/react-hooks";
@@ -13,9 +13,10 @@ export default function JobsDocumentsDeleteButton({
const { t } = useTranslation();
const [deleteDocument] = useMutation(DELETE_DOCUMENT);
const imagesToDelete = galleryImages.filter((image) => image.isSelected);
+ const [loading, setLoading] = useState(false);
const handleDelete = () => {
logImEXEvent("job_documents_delete", { count: imagesToDelete.length });
-
+ setLoading(true);
imagesToDelete.forEach((image) => {
let timestamp = Math.floor(Date.now() / 1000);
let public_id = image.key;
@@ -65,10 +66,15 @@ export default function JobsDocumentsDeleteButton({
});
});
});
+ setLoading(false);
};
return (
-
({ ...item }))}
- rowKey='id'
+ rowKey="id"
dataSource={data}
/>