Merge remote-tracking branch 'origin/release/2025-08-15' into feature/IO-3255-simplified-part-management

This commit is contained in:
Dave Richer
2025-08-11 14:28:19 -04:00
3 changed files with 34 additions and 50 deletions

View File

@@ -33,7 +33,6 @@ import { RiSurveyLine } from "react-icons/ri";
import { IoBusinessOutline } from "react-icons/io5"; import { IoBusinessOutline } from "react-icons/io5";
import InstanceRenderManager from "../../utils/instanceRenderMgr"; import InstanceRenderManager from "../../utils/instanceRenderMgr";
import LockWrapper from "../../components/lock-wrapper/lock-wrapper.component.jsx"; import LockWrapper from "../../components/lock-wrapper/lock-wrapper.component.jsx";
import { Tooltip } from "antd";
const buildLeftMenuItems = ({ const buildLeftMenuItems = ({
t, t,
@@ -338,9 +337,7 @@ const buildLeftMenuItems = ({
key: "darkmode-toggle", key: "darkmode-toggle",
id: "header-darkmode-toggle", id: "header-darkmode-toggle",
label: darkMode ? t("user.actions.light_theme") : t("user.actions.dark_theme"), label: darkMode ? t("user.actions.light_theme") : t("user.actions.dark_theme"),
icon: ( icon: darkMode ? <FaSun /> : <FaMoon />,
<Tooltip title={darkMode ? t("Light mode") : t("Dark mode")}>{darkMode ? <FaSun /> : <FaMoon />}</Tooltip>
),
onClick: handleDarkModeToggle onClick: handleDarkModeToggle
}, },
{ {

View File

@@ -105,11 +105,13 @@ const applicationReducer = (state = INITIAL_STATE, action) => {
alerts: newAlertsMap alerts: newAlertsMap
}; };
} }
case ApplicationActionTypes.TOGGLE_DARK_MODE: case ApplicationActionTypes.TOGGLE_DARK_MODE: {
const newDarkModeState = !state.darkMode;
return { return {
...state, ...state,
darkMode: !state.darkMode darkMode: newDarkModeState
}; };
}
case ApplicationActionTypes.SET_DARK_MODE: case ApplicationActionTypes.SET_DARK_MODE:
return { return {
...state, ...state,

View File

@@ -6,6 +6,7 @@ import client from "../../utils/GraphQLClient";
import { CalculateLoad, CheckJobBucket } from "../../utils/SSSUtils"; import { CalculateLoad, CheckJobBucket } from "../../utils/SSSUtils";
import { scheduleLoadFailure, scheduleLoadSuccess, setProblemJobs } from "./application.actions"; import { scheduleLoadFailure, scheduleLoadSuccess, setProblemJobs } from "./application.actions";
import ApplicationActionTypes from "./application.types"; import ApplicationActionTypes from "./application.types";
import { logImEXEvent } from "../../firebase/firebase.utils";
export function* onCalculateScheduleLoad() { export function* onCalculateScheduleLoad() {
yield takeLatest(ApplicationActionTypes.CALCULATE_SCHEDULE_LOAD, calculateScheduleLoad); yield takeLatest(ApplicationActionTypes.CALCULATE_SCHEDULE_LOAD, calculateScheduleLoad);
@@ -106,17 +107,14 @@ export function* calculateScheduleLoad({ payload: end }) {
const AddJobForSchedulingCalc = !item.inproduction; const AddJobForSchedulingCalc = !item.inproduction;
if (!!load[itemDate]) { if (load[itemDate]) {
load[itemDate].allHoursIn = load[itemDate].allHoursIn =
(load[itemDate].allHoursIn || 0) + (load[itemDate].allHoursIn || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs + item.labhrs.aggregate.sum.mod_lb_hrs +
item.larhrs.aggregate.sum.mod_lb_hrs; item.larhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].allHoursInBody = load[itemDate].allHoursInBody = (load[itemDate].allHoursInBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs;
(load[itemDate].allHoursInBody || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].allHoursInRefinish = load[itemDate].allHoursInRefinish =
(load[itemDate].allHoursInRefinish || 0) + (load[itemDate].allHoursInRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs;
item.larhrs.aggregate.sum.mod_lb_hrs;
//If the job hasn't already arrived, add it to the jobs in list. //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. // Make sure it also hasn't already been completed, or isn't an in and out job.
//This prevents the duplicate counting. //This prevents the duplicate counting.
@@ -124,15 +122,9 @@ export function* calculateScheduleLoad({ payload: end }) {
if (AddJobForSchedulingCalc) { if (AddJobForSchedulingCalc) {
load[itemDate].jobsIn.push(item); load[itemDate].jobsIn.push(item);
load[itemDate].hoursIn = load[itemDate].hoursIn =
(load[itemDate].hoursIn || 0) + (load[itemDate].hoursIn || 0) + item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs;
item.labhrs.aggregate.sum.mod_lb_hrs + load[itemDate].hoursInBody = (load[itemDate].hoursInBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs;
item.larhrs.aggregate.sum.mod_lb_hrs; load[itemDate].hoursInRefinish = (load[itemDate].hoursInRefinish || 0) + 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 { } else {
load[itemDate] = { 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. jobsIn: AddJobForSchedulingCalc ? [item] : [], //Same as above, only add it if it isn't already in production.
jobsOut: [], jobsOut: [],
allJobsOut: [], allJobsOut: [],
allHoursIn: allHoursIn: item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs,
item.labhrs.aggregate.sum.mod_lb_hrs +
item.larhrs.aggregate.sum.mod_lb_hrs,
allHoursInBody: item.labhrs.aggregate.sum.mod_lb_hrs, allHoursInBody: item.labhrs.aggregate.sum.mod_lb_hrs,
allHoursInRefinish: item.larhrs.aggregate.sum.mod_lb_hrs, allHoursInRefinish: item.larhrs.aggregate.sum.mod_lb_hrs,
hoursIn: AddJobForSchedulingCalc hoursIn: AddJobForSchedulingCalc
? item.labhrs.aggregate.sum.mod_lb_hrs + ? item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.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, : 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"); const itemDate = dayjs(item.actual_completion || item.scheduled_completion).format("YYYY-MM-DD");
//Skip it, it's already completed. //Skip it, it's already completed.
if (!!load[itemDate]) { if (load[itemDate]) {
load[itemDate].allHoursOut = load[itemDate].allHoursOut =
(load[itemDate].allHoursOut || 0) + (load[itemDate].allHoursOut || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs + item.labhrs.aggregate.sum.mod_lb_hrs +
item.larhrs.aggregate.sum.mod_lb_hrs; item.larhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].allHoursOutBody = load[itemDate].allHoursOutBody = (load[itemDate].allHoursOutBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs;
(load[itemDate].allHoursOutBody || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].allHoursOutRefinish = load[itemDate].allHoursOutRefinish =
(load[itemDate].allHoursOutRefinish || 0) + (load[itemDate].allHoursOutRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs;
item.larhrs.aggregate.sum.mod_lb_hrs;
//Add only the jobs that are still in production to get rid of. //Add only the jobs that are still in production to get rid of.
//If it's not in production, we'd subtract unnecessarily. //If it's not in production, we'd subtract unnecessarily.
load[itemDate].allJobsOut.push(item); load[itemDate].allJobsOut.push(item);
@@ -191,12 +173,9 @@ export function* calculateScheduleLoad({ payload: end }) {
(load[itemDate].hoursOut || 0) + (load[itemDate].hoursOut || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs + item.labhrs.aggregate.sum.mod_lb_hrs +
item.larhrs.aggregate.sum.mod_lb_hrs; item.larhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].hoursOutBody = load[itemDate].hoursOutBody = (load[itemDate].hoursOutBody || 0) + item.labhrs.aggregate.sum.mod_lb_hrs;
(load[itemDate].hoursOutBody || 0) +
item.labhrs.aggregate.sum.mod_lb_hrs;
load[itemDate].hoursOutRefinish = load[itemDate].hoursOutRefinish =
(load[itemDate].hoursOutRefinish || 0) + (load[itemDate].hoursOutRefinish || 0) + item.larhrs.aggregate.sum.mod_lb_hrs;
item.larhrs.aggregate.sum.mod_lb_hrs;
} }
} else { } else {
load[itemDate] = { load[itemDate] = {
@@ -205,11 +184,9 @@ export function* calculateScheduleLoad({ payload: end }) {
hoursOut: AddJobForSchedulingCalc hoursOut: AddJobForSchedulingCalc
? item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs ? item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs
: 0, : 0,
allHoursOut: allHoursOut: item.labhrs.aggregate.sum.mod_lb_hrs + item.larhrs.aggregate.sum.mod_lb_hrs,
item.labhrs.aggregate.sum.mod_lb_hrs +
item.larhrs.aggregate.sum.mod_lb_hrs,
allHoursOutBody: item.labhrs.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) const prev = dayjs(today)
.add(day - 1, "day") .add(day - 1, "day")
.format("YYYY-MM-DD"); .format("YYYY-MM-DD");
if (!!!load[current]) { if (!load[current]) {
load[current] = {}; load[current] = {};
} }
@@ -298,6 +275,14 @@ export function* insertAuditTrailSaga({ payload: { jobid, billid, operation, typ
}); });
} }
export function* applicationSagas() { export function* onToggleDarkMode() {
yield all([call(onCalculateScheduleLoad), call(onInsertAuditTrail)]); 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)]);
} }