From 4d475e25fa73bc9fc53139c9cc9d69e652c9b19c Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Mon, 11 Aug 2025 14:27:48 -0400 Subject: [PATCH] release/2025-08-15 - Add LogImexEvent for Theme toggling / remove Tooltip with translations (no longer necessary) --- .../components/header/buildLeftMenuItems.jsx | 5 +- .../redux/application/application.reducer.js | 6 +- .../redux/application/application.sagas.js | 73 ++++++++----------- 3 files changed, 34 insertions(+), 50 deletions(-) diff --git a/client/src/components/header/buildLeftMenuItems.jsx b/client/src/components/header/buildLeftMenuItems.jsx index e742d33d0..474315970 100644 --- a/client/src/components/header/buildLeftMenuItems.jsx +++ b/client/src/components/header/buildLeftMenuItems.jsx @@ -33,7 +33,6 @@ import { RiSurveyLine } from "react-icons/ri"; import { IoBusinessOutline } from "react-icons/io5"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import LockWrapper from "../../components/lock-wrapper/lock-wrapper.component.jsx"; -import { Tooltip } from "antd"; const buildLeftMenuItems = ({ t, @@ -338,9 +337,7 @@ const buildLeftMenuItems = ({ key: "darkmode-toggle", id: "header-darkmode-toggle", label: darkMode ? t("user.actions.light_theme") : t("user.actions.dark_theme"), - icon: ( - {darkMode ? : } - ), + icon: darkMode ? : , onClick: handleDarkModeToggle }, { diff --git a/client/src/redux/application/application.reducer.js b/client/src/redux/application/application.reducer.js index e531a7d39..1641dddfc 100644 --- a/client/src/redux/application/application.reducer.js +++ b/client/src/redux/application/application.reducer.js @@ -105,11 +105,13 @@ const applicationReducer = (state = INITIAL_STATE, action) => { alerts: newAlertsMap }; } - case ApplicationActionTypes.TOGGLE_DARK_MODE: + case ApplicationActionTypes.TOGGLE_DARK_MODE: { + const newDarkModeState = !state.darkMode; return { ...state, - darkMode: !state.darkMode + darkMode: newDarkModeState }; + } case ApplicationActionTypes.SET_DARK_MODE: return { ...state, diff --git a/client/src/redux/application/application.sagas.js b/client/src/redux/application/application.sagas.js index a07c5a244..a37475325 100644 --- a/client/src/redux/application/application.sagas.js +++ b/client/src/redux/application/application.sagas.js @@ -6,6 +6,7 @@ import client from "../../utils/GraphQLClient"; import { CalculateLoad, CheckJobBucket } from "../../utils/SSSUtils"; import { scheduleLoadFailure, scheduleLoadSuccess, setProblemJobs } from "./application.actions"; import ApplicationActionTypes from "./application.types"; +import { logImEXEvent } from "../../firebase/firebase.utils"; export function* onCalculateScheduleLoad() { yield takeLatest(ApplicationActionTypes.CALCULATE_SCHEDULE_LOAD, calculateScheduleLoad); @@ -106,17 +107,14 @@ export function* calculateScheduleLoad({ payload: end }) { const AddJobForSchedulingCalc = !item.inproduction; - if (!!load[itemDate]) { + if (load[itemDate]) { load[itemDate].allHoursIn = (load[itemDate].allHoursIn || 0) + item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs; - load[itemDate].allHoursInBody = - (load[itemDate].allHoursInBody || 0) + - item.labhrs.aggregate.sum.mod_lb_hrs; + load[itemDate].allHoursInBody = (load[itemDate].allHoursInBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs; load[itemDate].allHoursInRefinish = - (load[itemDate].allHoursInRefinish || 0) + - item.larhrs.aggregate.sum.mod_lb_hrs; + (load[itemDate].allHoursInRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs; //If the job hasn't already arrived, add it to the jobs in list. // Make sure it also hasn't already been completed, or isn't an in and out job. //This prevents the duplicate counting. @@ -124,15 +122,9 @@ export function* calculateScheduleLoad({ payload: end }) { if (AddJobForSchedulingCalc) { load[itemDate].jobsIn.push(item); load[itemDate].hoursIn = - (load[itemDate].hoursIn || 0) + - item.labhrs.aggregate.sum.mod_lb_hrs + - item.larhrs.aggregate.sum.mod_lb_hrs; - load[itemDate].hoursInBody = - (load[itemDate].hoursInBody || 0) + - item.labhrs.aggregate.sum.mod_lb_hrs; - load[itemDate].hoursInRefinish = - (load[itemDate].hoursInRefinish || 0) + - item.larhrs.aggregate.sum.mod_lb_hrs; + (load[itemDate].hoursIn || 0) + item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs; + load[itemDate].hoursInBody = (load[itemDate].hoursInBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs; + load[itemDate].hoursInRefinish = (load[itemDate].hoursInRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs; } } else { load[itemDate] = { @@ -140,21 +132,14 @@ export function* calculateScheduleLoad({ payload: end }) { jobsIn: AddJobForSchedulingCalc ? [item] : [], //Same as above, only add it if it isn't already in production. jobsOut: [], allJobsOut: [], - allHoursIn: - item.labhrs.aggregate.sum.mod_lb_hrs + - item.larhrs.aggregate.sum.mod_lb_hrs, + allHoursIn: item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs, allHoursInBody: item.labhrs.aggregate.sum.mod_lb_hrs, allHoursInRefinish: item.larhrs.aggregate.sum.mod_lb_hrs, hoursIn: AddJobForSchedulingCalc - ? item.labhrs.aggregate.sum.mod_lb_hrs + - item.larhrs.aggregate.sum.mod_lb_hrs - : 0, - hoursInBody: AddJobForSchedulingCalc - ? item.labhrs.aggregate.sum.mod_lb_hrs - : 0, - hoursInRefinish: AddJobForSchedulingCalc - ? item.larhrs.aggregate.sum.mod_lb_hrs + ? item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs : 0, + hoursInBody: AddJobForSchedulingCalc ? item.labhrs.aggregate.sum.mod_lb_hrs : 0, + hoursInRefinish: AddJobForSchedulingCalc ? item.larhrs.aggregate.sum.mod_lb_hrs : 0 }; } }); @@ -170,17 +155,14 @@ export function* calculateScheduleLoad({ payload: end }) { const itemDate = dayjs(item.actual_completion || item.scheduled_completion).format("YYYY-MM-DD"); //Skip it, it's already completed. - if (!!load[itemDate]) { + if (load[itemDate]) { load[itemDate].allHoursOut = (load[itemDate].allHoursOut || 0) + item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs; - load[itemDate].allHoursOutBody = - (load[itemDate].allHoursOutBody || 0) + - item.labhrs.aggregate.sum.mod_lb_hrs; + load[itemDate].allHoursOutBody = (load[itemDate].allHoursOutBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs; load[itemDate].allHoursOutRefinish = - (load[itemDate].allHoursOutRefinish || 0) + - item.larhrs.aggregate.sum.mod_lb_hrs; + (load[itemDate].allHoursOutRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs; //Add only the jobs that are still in production to get rid of. //If it's not in production, we'd subtract unnecessarily. load[itemDate].allJobsOut.push(item); @@ -191,12 +173,9 @@ export function* calculateScheduleLoad({ payload: end }) { (load[itemDate].hoursOut || 0) + item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs; - load[itemDate].hoursOutBody = - (load[itemDate].hoursOutBody || 0) + - item.labhrs.aggregate.sum.mod_lb_hrs; + load[itemDate].hoursOutBody = (load[itemDate].hoursOutBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs; load[itemDate].hoursOutRefinish = - (load[itemDate].hoursOutRefinish || 0) + - item.larhrs.aggregate.sum.mod_lb_hrs; + (load[itemDate].hoursOutRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs; } } else { load[itemDate] = { @@ -205,11 +184,9 @@ export function* calculateScheduleLoad({ payload: end }) { hoursOut: AddJobForSchedulingCalc ? item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs : 0, - allHoursOut: - item.labhrs.aggregate.sum.mod_lb_hrs + - item.larhrs.aggregate.sum.mod_lb_hrs, + allHoursOut: item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs, allHoursOutBody: item.labhrs.aggregate.sum.mod_lb_hrs, - allHoursOutRefinish: item.larhrs.aggregate.sum.mod_lb_hrs, + allHoursOutRefinish: item.larhrs.aggregate.sum.mod_lb_hrs }; } }); @@ -222,7 +199,7 @@ export function* calculateScheduleLoad({ payload: end }) { const prev = dayjs(today) .add(day - 1, "day") .format("YYYY-MM-DD"); - if (!!!load[current]) { + if (!load[current]) { load[current] = {}; } @@ -298,6 +275,14 @@ export function* insertAuditTrailSaga({ payload: { jobid, billid, operation, typ }); } -export function* applicationSagas() { - yield all([call(onCalculateScheduleLoad), call(onInsertAuditTrail)]); +export function* onToggleDarkMode() { + yield takeLatest(ApplicationActionTypes.TOGGLE_DARK_MODE, function* () { + const state = yield select(); + const darkMode = state.application.darkMode; + logImEXEvent("dark_mode_toggled", { darkMode }); + }); +} + +export function* applicationSagas() { + yield all([call(onCalculateScheduleLoad), call(onInsertAuditTrail), call(onToggleDarkMode)]); }