From 6c2e0dad457c50cbce94b0d43dd25c847ed73e6c Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 23 Sep 2020 08:31:06 -0700 Subject: [PATCH] Added in jobs to schedule header for greater transparency. BOD-403 --- bodyshop_translations.babel | 42 +++++++++ client/src/App/App.container.jsx | 5 +- .../schedule-block-day.component.jsx | 4 +- .../schedule-calendar-header.component.js | 86 +++++++++++++------ .../scheduler-calendar-wrapper.component.jsx | 2 +- .../schedule-event.component.jsx | 18 +++- .../schedule-production-list.component.jsx | 3 + client/src/graphql/appointments.queries.js | 2 + client/src/graphql/jobs.queries.js | 15 ++++ client/src/translations/en_us/common.json | 2 + client/src/translations/es/common.json | 2 + client/src/translations/fr/common.json | 2 + 12 files changed, 150 insertions(+), 33 deletions(-) diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 434678faf..5f3dc9799 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -484,6 +484,27 @@ + + arrivingjobs + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + blocked false @@ -589,6 +610,27 @@ + + noarrivingjobs + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + nocompletingjobs false diff --git a/client/src/App/App.container.jsx b/client/src/App/App.container.jsx index 54c796803..f012f1cb5 100644 --- a/client/src/App/App.container.jsx +++ b/client/src/App/App.container.jsx @@ -136,8 +136,11 @@ export const client = new ApolloClient({ cache, connectToDevTools: process.env.NODE_ENV !== "production", defaultOptions: { + query: { + fetchPolicy: "network-only", + }, watchQuery: { - fetchPolicy: "cache-and-network", + fetchPolicy: "network-only", }, }, }); diff --git a/client/src/components/schedule-block-day/schedule-block-day.component.jsx b/client/src/components/schedule-block-day/schedule-block-day.component.jsx index f604e2681..67d15bf80 100644 --- a/client/src/components/schedule-block-day/schedule-block-day.component.jsx +++ b/client/src/components/schedule-block-day/schedule-block-day.component.jsx @@ -13,9 +13,7 @@ const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, }); -const mapDispatchToProps = (dispatch) => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) -}); +const mapDispatchToProps = (dispatch) => ({}); export function ScheduleBlockDay({ date, children, refetch, bodyshop }) { const { t } = useTranslation(); diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js index 2d62ba78e..de53f065d 100644 --- a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.js @@ -38,7 +38,7 @@ export function ScheduleCalendarHeaderComponent({ const { t } = useTranslation(); const loadData = load[date.toISOString().substr(0, 10)]; - const popContent = () => ( + const jobsOutPopup = () => (
e.stopPropagation()}> @@ -71,34 +71,72 @@ export function ScheduleCalendarHeaderComponent({ ); + const jobsInPopup = () => ( +
e.stopPropagation()}> +
+ + {loadData && loadData.jobsIn ? ( + loadData.jobsIn.map((j) => ( + + + + + + )) + ) : ( + + + + )} + +
+ {j.ro_number} + + {`(${( + j.labhrs.aggregate.sum.mod_lb_hrs + + j.larhrs.aggregate.sum.mod_lb_hrs + ).toFixed(1)} ${t("general.labels.hours")})`} + + {j.scheduled_in} +
{t("appointments.labels.noarrivingjobs")}
+
+ ); + const LoadComponent = loadData ? ( - -
+
+ {(loadData.hoursIn || 0) && loadData.hoursIn.toFixed(2)} + + {(loadData.hoursOut || 0) && loadData.hoursOut.toFixed(2)} - -
- + + +
) : null; return ( diff --git a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx index 156cb5ad2..d13035e1b 100644 --- a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx +++ b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx @@ -62,7 +62,7 @@ export function ScheduleCalendarWrapperComponent({ search.view = view; history.push({ search: queryString.stringify(search) }); }} - step={30} + step={15} timeslots={1} showMultiDayTimes localizer={localizer} diff --git a/client/src/components/schedule-event/schedule-event.component.jsx b/client/src/components/schedule-event/schedule-event.component.jsx index 53f1f71d0..e439852e0 100644 --- a/client/src/components/schedule-event/schedule-event.component.jsx +++ b/client/src/components/schedule-event/schedule-event.component.jsx @@ -107,10 +107,14 @@ export function ScheduleEventComponent({ const RegularEvent = event.isintake ? (
{`${ + event.job.ro_number || event.job.est_number + }`} +
{`${ (event.job && event.job.ownr_fn) || "" } ${(event.job && event.job.ownr_ln) || ""} ${ (event.job && event.job.ownr_co_nm) || "" - }`} + }`}
+
{`${(event.job && event.job.v_model_yr) || ""} ${ (event.job && event.job.v_make_desc) || "" @@ -118,8 +122,10 @@ export function ScheduleEventComponent({
{`(${ - (event.job && event.job.labhrs.aggregate.sum.mod_lb_hrs) || "" - } / ${(event.job && event.job.larhrs.aggregate.sum.mod_lb_hrs) || ""})`} + (event.job && event.job.labhrs.aggregate.sum.mod_lb_hrs) || "0" + } / ${ + (event.job && event.job.larhrs.aggregate.sum.mod_lb_hrs) || "0" + })`}
) : ( @@ -129,7 +135,11 @@ export function ScheduleEventComponent({ ); return ( - + {RegularEvent} ); diff --git a/client/src/components/schedule-production-list/schedule-production-list.component.jsx b/client/src/components/schedule-production-list/schedule-production-list.component.jsx index b9e26e205..1ea723ddc 100644 --- a/client/src/components/schedule-production-list/schedule-production-list.component.jsx +++ b/client/src/components/schedule-production-list/schedule-production-list.component.jsx @@ -42,6 +42,9 @@ export default function ScheduleProductionList() { {`${j.v_model_yr || ""} ${j.v_make_desc || ""} ${ j.v_model_desc || "" }`} + {`${j.labhrs.aggregate.sum.mod_lb_hrs || "0"} / ${ + j.larhrs.aggregate.sum.mod_lb_hrs || "0" + }`} {j.scheduled_completion} diff --git a/client/src/graphql/appointments.queries.js b/client/src/graphql/appointments.queries.js index 294610764..2d3e99a7d 100644 --- a/client/src/graphql/appointments.queries.js +++ b/client/src/graphql/appointments.queries.js @@ -192,6 +192,8 @@ export const QUERY_SCHEDULE_LOAD_DATA = gql` arrJobs: jobs(where: { scheduled_in: { _gte: $start, _lte: $end } }) { id scheduled_in + est_number + ro_number labhrs: joblines_aggregate(where: { mod_lbr_ty: { _eq: "LAB" } }) { aggregate { sum { diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index 71a1a07bc..79e481bfb 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -1016,6 +1016,21 @@ export const QUERY_JOBS_IN_PRODUCTION = gql` v_make_desc v_model_desc scheduled_completion + + labhrs: joblines_aggregate(where: { mod_lbr_ty: { _eq: "LAB" } }) { + aggregate { + sum { + mod_lb_hrs + } + } + } + larhrs: joblines_aggregate(where: { mod_lbr_ty: { _eq: "LAR" } }) { + aggregate { + sum { + mod_lb_hrs + } + } + } } } `; diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 6d3cb5ffe..6eda9d1ff 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -38,11 +38,13 @@ }, "labels": { "arrivedon": "Arrived on: ", + "arrivingjobs": "Arriving Jobs", "blocked": "Blocked", "cancelledappointment": "Canceled appointment for: ", "completingjobs": "Completing Jobs", "history": "History", "inproduction": "Jobs In Production", + "noarrivingjobs": "No jobs are arriving.", "nocompletingjobs": "No jobs scheduled for completion.", "nodateselected": "No date has been selected.", "priorappointments": "Previous Appointments", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 4982f9351..340b968ca 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -38,11 +38,13 @@ }, "labels": { "arrivedon": "Llegado el:", + "arrivingjobs": "", "blocked": "", "cancelledappointment": "Cita cancelada para:", "completingjobs": "", "history": "", "inproduction": "", + "noarrivingjobs": "", "nocompletingjobs": "", "nodateselected": "No se ha seleccionado ninguna fecha.", "priorappointments": "Nombramientos previos", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 93a93132a..e297525ef 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -38,11 +38,13 @@ }, "labels": { "arrivedon": "Arrivé le:", + "arrivingjobs": "", "blocked": "", "cancelledappointment": "Rendez-vous annulé pour:", "completingjobs": "", "history": "", "inproduction": "", + "noarrivingjobs": "", "nocompletingjobs": "", "nodateselected": "Aucune date n'a été sélectionnée.", "priorappointments": "Rendez-vous précédents",