diff --git a/client/src/App/App.container.jsx b/client/src/App/App.container.jsx index ab18d78e2..83d0d098a 100644 --- a/client/src/App/App.container.jsx +++ b/client/src/App/App.container.jsx @@ -14,9 +14,9 @@ import GlobalLoadingBar from "../components/global-loading-bar/global-loading-ba import { auth } from "../firebase/firebase.utils"; import errorLink from "../graphql/apollo-error-handling"; import App from "./App"; - import LogRocket from "logrocket"; -LogRocket.init("gvfvfw/bodyshopapp"); + +if (process.env.NODE_ENV === "production") LogRocket.init("gvfvfw/bodyshopapp"); export default class AppContainer extends Component { constructor() { diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx b/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx index b18b21546..8b66447f5 100644 --- a/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx @@ -16,7 +16,6 @@ export default function JobsAvailableSupplementComponent({ data, refetch, deleteJob, - updateJob, onModalOk, onModalCancel, modalVisible, @@ -27,6 +26,7 @@ export default function JobsAvailableSupplementComponent({ loadEstData, estData, importOptionsState, + modalSearchState, }) { const { t } = useTranslation(); @@ -131,7 +131,7 @@ export default function JobsAvailableSupplementComponent({ { title: t("general.labels.actions"), key: "actions", - render: (text, record) => ( + render: (text, record, index) => ( ), - //width: "12%", - //ellipsis: true }, ]; @@ -186,6 +185,7 @@ export default function JobsAvailableSupplementComponent({ visible={modalVisible} onOk={onModalOk} onCancel={onModalCancel} + modalSearchState={modalSearchState} /> { setModalVisible(false); + modalSearchState[1](""); setSelectedJob(null); }; @@ -159,6 +158,7 @@ export function JobsAvailableSupplementContainer({ loadEstData={loadEstData} estData={estData} importOptionsState={importOptionsState} + modalSearchState={modalSearchState} /> ); diff --git a/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx index df454863e..16df4941a 100644 --- a/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx +++ b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx @@ -1,4 +1,4 @@ -import { Checkbox, Divider, Table } from "antd"; +import { Checkbox, Divider, Table, Input } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; @@ -9,12 +9,13 @@ export default function JobsFindModalComponent({ setSelectedJob, jobsList, jobsListLoading, - importOptionsState + importOptionsState, + modalSearchState, }) { const { t } = useTranslation(); - + const [modalSearch, setModalSearch] = modalSearchState; const [importOptions, setImportOptions] = importOptionsState; - console.log("importOptions", importOptions); + const columns = [ { title: t("jobs.fields.ro_number"), @@ -27,7 +28,7 @@ export default function JobsFindModalComponent({ {record.ro_number ? record.ro_number : "EST-" + record.est_number} - ) + ), }, { title: t("jobs.fields.owner"), @@ -46,7 +47,7 @@ export default function JobsFindModalComponent({ // t("jobs.errors.noowner") {`${record.ownr_fn} ${record.ownr_ln}`} ); - } + }, }, { title: t("jobs.fields.ownr_ph1"), @@ -60,7 +61,7 @@ export default function JobsFindModalComponent({ ) : ( t("general.labels.unknown") ); - } + }, }, { title: t("jobs.fields.status"), @@ -70,7 +71,7 @@ export default function JobsFindModalComponent({ ellipsis: true, render: (text, record) => { return record.status || t("general.labels.na"); - } + }, }, { @@ -82,13 +83,14 @@ export default function JobsFindModalComponent({ render: (text, record) => { return record.vehicle ? ( - {`${record.v_model_yr || ""} ${record.v_make_desc || - ""} ${record.v_model_desc || ""}`} + {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${ + record.v_model_desc || "" + }`} ) : ( t("jobs.errors.novehicle") ); - } + }, }, { title: t("vehicles.fields.plate_no"), @@ -102,7 +104,7 @@ export default function JobsFindModalComponent({ ) : ( t("general.labels.unknown") ); - } + }, }, { title: t("jobs.fields.clm_no"), @@ -116,11 +118,11 @@ export default function JobsFindModalComponent({ ) : ( t("general.labels.unknown") ); - } - } + }, + }, ]; - const handleOnRowClick = record => { + const handleOnRowClick = (record) => { if (record) { if (record.id) { setSelectedJob(record.id); @@ -133,35 +135,45 @@ export default function JobsFindModalComponent({ return (
t("jobs.labels.existing_jobs")} + title={() => ( +
+ {t("jobs.labels.existing_jobs")} + { + setModalSearch(e.target.value); + }} + /> +
+ )} size='small' pagination={{ position: "bottom" }} - columns={columns.map(item => ({ ...item }))} + columns={columns.map((item) => ({ ...item }))} rowKey='id' loading={jobsListLoading} dataSource={jobsList} rowSelection={{ - onSelect: props => { + onSelect: (props) => { setSelectedJob(props.id); }, type: "radio", - selectedRowKeys: [selectedJob] + selectedRowKeys: [selectedJob], }} onRow={(record, rowIndex) => { return { - onClick: event => { + onClick: (event) => { handleOnRowClick(record); - } + }, }; }} /> + onChange={(e) => setImportOptions({ ...importOptions, - overrideHeaders: e.target.checked + overrideHeaders: e.target.checked, }) }> {t("jobs.labels.override_header")} diff --git a/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx b/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx index b05e3b653..4f53ea11d 100644 --- a/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx +++ b/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx @@ -10,7 +10,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; const mapStateToProps = createStructuredSelector({ - bodyshop: selectBodyshop + bodyshop: selectBodyshop, }); export default connect( @@ -23,6 +23,7 @@ export default connect( selectedJob, setSelectedJob, importOptionsState, + modalSearchState, ...modalProps }) { const { t } = useTranslation(); @@ -30,14 +31,54 @@ export default connect( const jobsList = useQuery(QUERY_ALL_ACTIVE_JOBS, { fetchPolicy: "network-only", variables: { - statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] - } + statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"], + }, }); + const modalSearch = modalSearchState[0]; + + const jobsData = + jobsList.data && jobsList.data.jobs + ? modalSearch + ? jobsList.data.jobs.filter( + (j) => + (j.ro_number || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.est_number || "") + .toString() + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.ownr_fn || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.ownr_ln || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.status || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.v_make_desc || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.v_model_desc || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.clm_no || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) || + (j.plate_no || "") + .toLowerCase() + .includes(modalSearch.toLowerCase()) + ) + : jobsList.data.jobs + : null; + return ( {loading ? : null} @@ -48,9 +89,8 @@ export default connect( setSelectedJob={setSelectedJob} importOptionsState={importOptionsState} jobsListLoading={jobsList.loading} - jobsList={ - jobsList.data && jobsList.data.jobs ? jobsList.data.jobs : null - } + jobsList={jobsData} + modalSearchState={modalSearchState} /> ) : null}