From a29c3054277b52b236138545fe92f43560ff1071 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Tue, 19 Jan 2021 16:30:46 -0800 Subject: [PATCH] Updated Print Center & TemplateList Object IO-587 --- client/public/index.html | 5 +- client/public/kavia.png | Bin 13428 -> 0 bytes .../App/registerServiceWorker.component.jsx | 3 +- .../job-checklist-template-list.component.jsx | 17 +--- ...bs-detail-header-actions.csi.component.jsx | 2 +- .../parts-order-list-table.component.jsx | 8 +- .../parts-order-modal.container.jsx | 16 +-- .../payment-modal/payment-modal.container.jsx | 2 +- .../print-center-jobs.component.jsx | 44 +++----- .../print-center-modal.container.jsx | 20 +--- .../print-center-speed-print.component.jsx | 20 ++-- .../schedule-job-modal.container.jsx | 4 +- .../shop-info/shop-info.intake.component.jsx | 17 ++-- .../shop-info.speedprint.component.jsx | 24 +++-- .../shop-template-add.component.jsx | 8 +- ...me-tickets-summary-employees.component.jsx | 1 + client/src/index.js | 14 +-- client/src/utils/TemplateConstants.js | 95 ++++++++++++------ package.json | 2 +- 19 files changed, 152 insertions(+), 150 deletions(-) delete mode 100644 client/public/kavia.png diff --git a/client/public/index.html b/client/public/index.html index f92ac3b35..c24a163ad 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -5,10 +5,7 @@ - + diff --git a/client/public/kavia.png b/client/public/kavia.png deleted file mode 100644 index be947430a4e40cc4dab87b416274e40874740cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13428 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 { - console.log("[RSW] onServiceWorkerUpdate", registration); + console.log("onServiceWorkerUpdate", registration); const key = `open${Date.now()}`; const btn = ( @@ -37,6 +37,5 @@ const onServiceWorkerUpdate = (registration) => { // if (process.env.NODE_ENV === "production") { // console.log("SWR Registering SW..."); -console.log("Registering Service Worker..."); serviceWorker.register({ onUpdate: onServiceWorkerUpdate }); // } diff --git a/client/src/components/job-checklist/components/job-checklist-template-list/job-checklist-template-list.component.jsx b/client/src/components/job-checklist/components/job-checklist-template-list/job-checklist-template-list.component.jsx index 28ecc01bb..382a2781d 100644 --- a/client/src/components/job-checklist/components/job-checklist-template-list/job-checklist-template-list.component.jsx +++ b/client/src/components/job-checklist/components/job-checklist-template-list/job-checklist-template-list.component.jsx @@ -1,23 +1,12 @@ import { Button } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; -import { connect } from "react-redux"; import { useParams } from "react-router-dom"; -import { createStructuredSelector } from "reselect"; import { logImEXEvent } from "../../../../firebase/firebase.utils"; -import { selectBodyshop } from "../../../../redux/user/user.selectors"; import { GenerateDocument } from "../../../../utils/RenderTemplate"; import JobIntakeTemplateItem from "../job-checklist-template-item/job-checklist-template-item.component"; -const mapStateToProps = createStructuredSelector({ - //currentUser: selectCurrentUser - bodyshop: selectBodyshop, -}); -const mapDispatchToProps = (dispatch) => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) -}); - -export function JobIntakeTemplateList({ bodyshop, templates }) { +export default function JobIntakeTemplateList({ templates }) { const { jobId } = useParams(); const { t } = useTranslation(); const renderTemplate = async (templateKey) => { @@ -55,7 +44,3 @@ export function JobIntakeTemplateList({ bodyshop, templates }) { ); } -export default connect( - mapStateToProps, - mapDispatchToProps -)(JobIntakeTemplateList); diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.csi.component.jsx b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.csi.component.jsx index 82cbc4a49..103948668 100644 --- a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.csi.component.jsx +++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.csi.component.jsx @@ -89,7 +89,7 @@ export function JobsDetailHeaderCsi({ replyTo: bodyshop.email, }, template: { - name: TemplateList().csi_invitation.key, + name: TemplateList("job").csi_invitation.key, variables: { id: result.data.insert_csi.returning[0].id, }, diff --git a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx index ca238bff1..8d10749bc 100644 --- a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx +++ b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx @@ -129,8 +129,8 @@ export function PartsOrderListTableComponent({ GenerateDocument( { name: record.isReturn - ? TemplateList().parts_return_confirmation.key - : TemplateList().parts_order_confirmation.key, + ? TemplateList("partsorder").parts_return_confirmation.key + : TemplateList("partsorder").parts_order_confirmation.key, variables: { id: record.id }, }, {}, @@ -143,8 +143,8 @@ export function PartsOrderListTableComponent({ GenerateDocument( { name: record.isReturn - ? TemplateList().parts_return_confirmation.key - : TemplateList().parts_order_confirmation.key, + ? TemplateList("partsorder").parts_return_confirmation.key + : TemplateList("partsorder").parts_order_confirmation.key, variables: { id: record.id }, }, {}, diff --git a/client/src/components/parts-order-modal/parts-order-modal.container.jsx b/client/src/components/parts-order-modal/parts-order-modal.container.jsx index 513c7ca91..2729a89a2 100644 --- a/client/src/components/parts-order-modal/parts-order-modal.container.jsx +++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx @@ -12,12 +12,12 @@ import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries"; import { setEmailOptions } from "../../redux/email/email.actions"; import { setModalContext, - toggleModalVisible + toggleModalVisible, } from "../../redux/modals/modals.actions"; import { selectPartsOrder } from "../../redux/modals/modals.selectors"; import { selectBodyshop, - selectCurrentUser + selectCurrentUser, } from "../../redux/user/user.selectors"; import { GenerateDocument } from "../../utils/RenderTemplate"; import { TemplateList } from "../../utils/TemplateConstants"; @@ -159,8 +159,8 @@ export function PartsOrderModalContainer({ GenerateDocument( { name: isReturn - ? TemplateList().parts_return_confirmation.key - : TemplateList().parts_order_confirmation.key, + ? TemplateList("partsorder").parts_return_confirmation.key + : TemplateList("partsorder").parts_order_confirmation.key, variables: { id: insertResult.data.insert_parts_orders.returning[0].id, }, @@ -168,8 +168,8 @@ export function PartsOrderModalContainer({ { to: matchingVendor ? [matchingVendor.email] : null, replyTo: bodyshop.email, - subject: TemplateList("job", bodyshop.shopname) - .parts_order_confirmation.subject, + subject: TemplateList("partsorder", {}).parts_order_confirmation + .subject, }, "e" ); @@ -177,8 +177,8 @@ export function PartsOrderModalContainer({ GenerateDocument( { name: isReturn - ? TemplateList().parts_return_confirmation.key - : TemplateList().parts_order_confirmation.key, + ? TemplateList("partsorder").parts_return_confirmation.key + : TemplateList("partsorder").parts_order_confirmation.key, variables: { id: insertResult.data.insert_parts_orders.returning[0].id, }, diff --git a/client/src/components/payment-modal/payment-modal.container.jsx b/client/src/components/payment-modal/payment-modal.container.jsx index a480b4415..b73310c4b 100644 --- a/client/src/components/payment-modal/payment-modal.container.jsx +++ b/client/src/components/payment-modal/payment-modal.container.jsx @@ -121,7 +121,7 @@ function BillEnterModalContainer({ GenerateDocument( { - name: TemplateList().payment_receipt.key, + name: TemplateList("payment").payment_receipt.key, variables: { id: newPayment.data.insert_payments.returning[0].id, }, diff --git a/client/src/components/print-center-jobs/print-center-jobs.component.jsx b/client/src/components/print-center-jobs/print-center-jobs.component.jsx index 7fe518540..5b4d7ecc3 100644 --- a/client/src/components/print-center-jobs/print-center-jobs.component.jsx +++ b/client/src/components/print-center-jobs/print-center-jobs.component.jsx @@ -1,40 +1,28 @@ -import { Collapse, Row, Col } from "antd"; +import { Col, Collapse, Row } from "antd"; import React from "react"; +import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; -import { setEmailOptions } from "../../redux/email/email.actions"; -import { toggleModalVisible } from "../../redux/modals/modals.actions"; import { selectPrintCenter } from "../../redux/modals/modals.selectors"; -import { - selectBodyshop, - selectCurrentUser, -} from "../../redux/user/user.selectors"; +import { TemplateList } from "../../utils/TemplateConstants"; import PrintCenterItem from "../print-center-item/print-center-item.component"; import PrintCenterSpeedPrint from "../print-center-speed-print/print-center-speed-print.component"; -import { TemplateList } from "../../utils/TemplateConstants"; -import { useTranslation } from "react-i18next"; const mapStateToProps = createStructuredSelector({ - currentUser: selectCurrentUser, - bodyshop: selectBodyshop, printCenterModal: selectPrintCenter, }); -const mapDispatchToProps = (dispatch) => ({ - setEmailOptions: (e) => dispatch(setEmailOptions(e)), - toggleModalVisible: () => dispatch(toggleModalVisible("printCenter")), -}); +const mapDispatchToProps = (dispatch) => ({}); const colSpan = { md: { span: 24 }, lg: { span: 12 } }; -export function PrintCenterJobsComponent({ bodyshop, printCenterModal }) { +export function PrintCenterJobsComponent({ printCenterModal }) { const { t } = useTranslation(); const { id: jobId } = printCenterModal.context; - const tempList = TemplateList(); + const tempList = TemplateList("job", {}); const JobsReportsList = Object.keys(tempList).map((key) => { return tempList[key]; }); - console.log("PrintCenterJobsComponent -> JobsReportsList", JobsReportsList); return (
@@ -45,17 +33,15 @@ export function PrintCenterJobsComponent({ bodyshop, printCenterModal }) { -
    - {JobsReportsList.filter((t) => t.drivingId === "job").map( - (item) => ( - - ) - )} +
      + {JobsReportsList.map((item) => ( + + ))}
    diff --git a/client/src/components/print-center-modal/print-center-modal.container.jsx b/client/src/components/print-center-modal/print-center-modal.container.jsx index 0d53b1e65..b812e62ef 100644 --- a/client/src/components/print-center-modal/print-center-modal.container.jsx +++ b/client/src/components/print-center-modal/print-center-modal.container.jsx @@ -3,47 +3,37 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; -import { setEmailOptions } from "../../redux/email/email.actions"; import { toggleModalVisible } from "../../redux/modals/modals.actions"; import { selectPrintCenter } from "../../redux/modals/modals.selectors"; -import { - selectBodyshop, - selectCurrentUser, -} from "../../redux/user/user.selectors"; import PrintCenterModalComponent from "./print-center-modal.component"; import "./print-center-modal.styles.scss"; const mapStateToProps = createStructuredSelector({ - currentUser: selectCurrentUser, - bodyshop: selectBodyshop, printCenterModal: selectPrintCenter, }); const mapDispatchToProps = (dispatch) => ({ - setEmailOptions: (e) => dispatch(setEmailOptions(e)), toggleModalVisible: () => dispatch(toggleModalVisible("printCenter")), }); export function PrintCenterModalContainer({ printCenterModal, toggleModalVisible, - currentUser, - bodyshop, - setEmailOptions, }) { const { t } = useTranslation(); const { visible, context } = printCenterModal; - const { type, id } = context; + const { type } = context; // const { refetch } = actions; return ( toggleModalVisible()} - width='90%' - title={` ${t("printcenter.labels.title")} ${type} - ${id}`} - destroyOnClose> + width="90%" + title={` ${t("printcenter.labels.title")} - ${type}`} + destroyOnClose + > ); diff --git a/client/src/components/print-center-speed-print/print-center-speed-print.component.jsx b/client/src/components/print-center-speed-print/print-center-speed-print.component.jsx index 7319e4f3e..ac12718f0 100644 --- a/client/src/components/print-center-speed-print/print-center-speed-print.component.jsx +++ b/client/src/components/print-center-speed-print/print-center-speed-print.component.jsx @@ -66,14 +66,18 @@ export function PrintCenterSpeedPrint({ bodyshop, jobId }) { ); } -const renderTemplateList = (templates) => ( - - {templates.map((template, idx) => { - if (idx === templates.length - 1) return TemplateList()[template].title; - return `${TemplateList()[template].title}, `; - })} - -); +const renderTemplateList = (templates) => { + const TemplateListGenerated = TemplateList(); + return ( + + {templates.map((template, idx) => { + if (idx === templates.length - 1) + return TemplateListGenerated[template].title; + return `${TemplateListGenerated[template].title}, `; + })} + + ); +}; export default connect( mapStateToProps, diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx index 97fca225d..ff051e291 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx @@ -139,10 +139,10 @@ export function ScheduleJobModalContainer({ messageOptions: { to: [values.email], replyTo: bodyshop.email, - subject: TemplateList().appointment_confirmation.subject, + subject: TemplateList("appointment").appointment_confirmation.subject, }, template: { - name: TemplateList().appointment_confirmation.key, + name: TemplateList("appointment").appointment_confirmation.key, variables: { id: appt.data.insert_appointments.returning[0].id, }, diff --git a/client/src/components/shop-info/shop-info.intake.component.jsx b/client/src/components/shop-info/shop-info.intake.component.jsx index d53907020..ef38f181c 100644 --- a/client/src/components/shop-info/shop-info.intake.component.jsx +++ b/client/src/components/shop-info/shop-info.intake.component.jsx @@ -16,6 +16,7 @@ const SelectorDiv = styled.div` export default function ShopInfoIntakeChecklistComponent({ form }) { const { t } = useTranslation(); + const TemplateListGenerated = TemplateList(); return (
    @@ -128,12 +129,12 @@ export default function ShopInfoIntakeChecklistComponent({ form }) { ]} > @@ -250,12 +251,12 @@ export default function ShopInfoIntakeChecklistComponent({ form }) { ]} > diff --git a/client/src/components/shop-info/shop-info.speedprint.component.jsx b/client/src/components/shop-info/shop-info.speedprint.component.jsx index df3bf9201..c754f3abe 100644 --- a/client/src/components/shop-info/shop-info.speedprint.component.jsx +++ b/client/src/components/shop-info/shop-info.speedprint.component.jsx @@ -4,10 +4,12 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { TemplateList } from "../../utils/TemplateConstants"; import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; +import LayoutFormRow from "../layout-form-row/layout-form-row.component"; export default function ShopInfoSpeedPrint({ bodyshop, form }) { const { t } = useTranslation(); - + const TemplateListGenerated = TemplateList(); + console.log("TemplateListGenerated", TemplateListGenerated); return (
    @@ -16,7 +18,7 @@ export default function ShopInfoSpeedPrint({ bodyshop, form }) {
    {fields.map((field, index) => ( -
    + @@ -81,7 +83,7 @@ export default function ShopInfoSpeedPrint({ bodyshop, form }) { index={index} total={fields.length} /> -
    +
    ))} diff --git a/client/src/components/shop-template-add/shop-template-add.component.jsx b/client/src/components/shop-template-add/shop-template-add.component.jsx index 47a071652..619e70f4e 100644 --- a/client/src/components/shop-template-add/shop-template-add.component.jsx +++ b/client/src/components/shop-template-add/shop-template-add.component.jsx @@ -7,14 +7,14 @@ import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { useHistory, useLocation } from "react-router-dom"; import { createStructuredSelector } from "reselect"; +import { logImEXEvent } from "../../firebase/firebase.utils"; import { INSERT_TEMPLATE, QUERY_TEMPLATES_BY_NAME_FOR_DUPE, } from "../../graphql/templates.queries"; import { selectBodyshop } from "../../redux/user/user.selectors"; -import { TemplateList } from "../../utils/TemplateConstants"; -import { logImEXEvent } from "../../firebase/firebase.utils"; import client from "../../utils/GraphQLClient"; +import { TemplateList } from "../../utils/TemplateConstants"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser @@ -67,12 +67,12 @@ export function ShopTemplateAddComponent({ history.push({ search: queryString.stringify(search) }); if (!!refetch) refetch(); }; - + const TemplateListGenerated = TemplateList(); const menu = ( {availableTemplateKeys.length > 0 ? ( availableTemplateKeys.map((tkey) => ( - {TemplateList()[tkey].title} + {TemplateListGenerated[tkey].title} )) ) : (
    {t("bodyshop.labels.notemplatesavailable")}
    diff --git a/client/src/components/time-tickets-summary-employees/time-tickets-summary-employees.component.jsx b/client/src/components/time-tickets-summary-employees/time-tickets-summary-employees.component.jsx index d9a39caa8..e6322f862 100644 --- a/client/src/components/time-tickets-summary-employees/time-tickets-summary-employees.component.jsx +++ b/client/src/components/time-tickets-summary-employees/time-tickets-summary-employees.component.jsx @@ -68,6 +68,7 @@ export function TimeTicketsSummaryEmployees({ }); const handlePrintEmployeeTicket = async (empId) => { + alert("Missing Key!"); const html = await RenderTemplate( { name: TemplateList().time_tickets_by_employee.key, diff --git a/client/src/index.js b/client/src/index.js index 4584a4b5a..5a4a2b851 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -1,16 +1,16 @@ +import Dinero from "dinero.js"; import React from "react"; import ReactDOM from "react-dom"; -import { BrowserRouter } from "react-router-dom"; -import "./translations/i18n"; -//import * as serviceWorker from "./serviceWorker"; import { Provider } from "react-redux"; +import { BrowserRouter } from "react-router-dom"; import { PersistGate } from "redux-persist/integration/react"; -import { store, persistor } from "./redux/store"; import AppContainer from "./App/App.container"; -import "./index.css"; -import LoadingSpinner from "./components/loading-spinner/loading-spinner.component"; import "./App/registerServiceWorker.component"; -import Dinero from "dinero.js"; +import LoadingSpinner from "./components/loading-spinner/loading-spinner.component"; +import "./index.css"; +import { persistor, store } from "./redux/store"; +//import * as serviceWorker from "./serviceWorker"; //This is registered in a separate component to track notifications. +import "./translations/i18n"; require("dotenv").config(); diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js index 68f6afc81..3fa1436bc 100644 --- a/client/src/utils/TemplateConstants.js +++ b/client/src/utils/TemplateConstants.js @@ -1,38 +1,75 @@ import i18n from "i18next"; - +import { store } from "../redux/store"; export const EmailSettings = { fromNameDefault: "ImEX Online", fromAddress: "noreply@imex.online", }; -export const TemplateList = (type, object) => { +export const TemplateList = (type, context) => { + const { bodyshop } = store.getState().user; + return { - appointment_confirmation: { - title: i18n.t("printcenter.appointments.appointment_confirmation"), - description: "Appointment Confirmation", - drivingId: "appointment", - key: "appointment_confirmation", - subject: "Appointment Confirmation", - }, - //Verified Completed items - estimate_detail: { - title: i18n.t("printcenter.jobs.estimate_detail"), - description: "Est Detail", - drivingId: "job", - key: "estimate_detail", - }, - parts_order_confirmation: { - title: i18n.t("printcenter.jobs.parts_order_confirmation"), - description: "Parts Order", - drivingId: "job", - key: "parts_order_confirmation", - subject: "Parts Order", - }, - parts_return_confirmation: { - title: i18n.t("printcenter.jobs.parts_return_confirmation"), - description: "Parts Return", - drivingId: "job", - key: "parts_return_confirmation", - }, + //If there's no type or the type is job, send it back. + ...(!type || type === "job" + ? { + estimate_detail: { + title: i18n.t("printcenter.jobs.estimate_detail"), + description: "Est Detail", + key: "estimate_detail", + disabled: false, + }, + } + : {}), + ...(!type || type === "appointment" + ? { + appointment_confirmation: { + title: i18n.t("printcenter.appointments.appointment_confirmation"), + description: "Appointment Confirmation", + key: "appointment_confirmation", + subject: "Appointment Confirmation", + disabled: false, + }, + } + : {}), + ...(!type || type === "partsorder" + ? { + parts_order_confirmation: { + title: i18n.t("printcenter.jobs.parts_order_confirmation"), + description: "Parts Order", + key: "parts_order_confirmation", + subject: `${bodyshop.shopname} Parts Order ${ + (context && context.job && context.job.ro_number) || "" + }`, + disabled: false, + }, + parts_return_confirmation: { + title: i18n.t("printcenter.jobs.parts_return_confirmation"), + description: "Parts Return", + key: "parts_return_confirmation", + disabled: false, + }, + } + : {}), + ...(!type || type === "payment" + ? { + payment_confirmation: { + title: i18n.t("printcenter.jobs.payment_confirmation"), + description: "Est Detail", + key: "payment_confirmation", + disabled: false, + }, + } + : {}), + ...(!type || type === "csi" + ? { + csi_invitation: { + title: i18n.t("printcenter.jobs.csi_invitation"), + description: "CSI invite", + key: "csi_invitation", + disabled: false, + }, + } + : {}), + ...(!type || type === "job" ? {} : {}), }; }; diff --git a/package.json b/package.json index 4213f4e12..b21d7cad5 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "npm": "6.11.3" }, "scripts": { - "setup": "npm i && cd firebase && npm i && cd .. && cd client && npm i && cd .. && cd admin && npm i", + "setup": "npm i && cd client && npm i", "admin": "cd admin && npm start", "client": "cd client && npm start", "server": "nodemon server.js",