@optifye/dashboard-core 6.12.25 → 6.12.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{automation-C3vudVDH.d.mts → automation-pIVo1XWk.d.mts} +23 -1
- package/dist/{automation-C3vudVDH.d.ts → automation-pIVo1XWk.d.ts} +23 -1
- package/dist/automation.d.mts +1 -1
- package/dist/automation.d.ts +1 -1
- package/dist/index.css +0 -15
- package/dist/index.d.mts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.js +406 -192
- package/dist/index.mjs +404 -194
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -16,7 +16,7 @@ import { BarChart as BarChart$1, CartesianGrid, XAxis, YAxis, ReferenceLine, Too
|
|
|
16
16
|
import { Slot } from '@radix-ui/react-slot';
|
|
17
17
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
18
18
|
import { DayPicker, useNavigation as useNavigation$1 } from 'react-day-picker';
|
|
19
|
-
import { AdjustmentsHorizontalIcon, ClockIcon, UsersIcon, UserCircleIcon, TicketIcon, CurrencyDollarIcon, QuestionMarkCircleIcon, XMarkIcon, ArrowRightIcon, Bars3Icon,
|
|
19
|
+
import { AdjustmentsHorizontalIcon, ClockIcon, UsersIcon, UserCircleIcon, TicketIcon, CurrencyDollarIcon, QuestionMarkCircleIcon, XMarkIcon, ArrowRightIcon, Bars3Icon, VideoCameraIcon, TrophyIcon, ChartBarIcon, LightBulbIcon, CubeIcon, HeartIcon, Cog6ToothIcon, ChevronRightIcon, ArrowRightStartOnRectangleIcon, ExclamationCircleIcon, ExclamationTriangleIcon, CalendarIcon, ChevronDownIcon, ChevronLeftIcon, EnvelopeIcon, DocumentTextIcon, ChevronUpIcon, ArrowDownTrayIcon, CheckCircleIcon, ChatBubbleLeftRightIcon, XCircleIcon, FunnelIcon, EyeIcon, InformationCircleIcon, ArrowLeftIcon, PlayCircleIcon } from '@heroicons/react/24/outline';
|
|
20
20
|
import { CheckIcon } from '@heroicons/react/24/solid';
|
|
21
21
|
import html2canvas from 'html2canvas';
|
|
22
22
|
import jsPDF, { jsPDF as jsPDF$1 } from 'jspdf';
|
|
@@ -22046,14 +22046,87 @@ var toNumber = (value) => {
|
|
|
22046
22046
|
}
|
|
22047
22047
|
return 0;
|
|
22048
22048
|
};
|
|
22049
|
+
var toOptionalNumber = (value) => {
|
|
22050
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
22051
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
22052
|
+
const parsed = Number(value);
|
|
22053
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
22054
|
+
}
|
|
22055
|
+
return null;
|
|
22056
|
+
};
|
|
22049
22057
|
var EFFICIENCY_ON_TRACK_THRESHOLD = 100;
|
|
22050
22058
|
var isEfficiencyOnTrack = (efficiency) => toNumber(efficiency) >= EFFICIENCY_ON_TRACK_THRESHOLD;
|
|
22059
|
+
var KPI_SIGNAL_LABELS = {
|
|
22060
|
+
stable: "Stable",
|
|
22061
|
+
warning: "Warning",
|
|
22062
|
+
attention: "Attention"
|
|
22063
|
+
};
|
|
22064
|
+
var normalizeLineSignalSource = (source) => source === "recent_flow" ? "recent_flow" : "efficiency";
|
|
22065
|
+
var normalizeLineSignal = (lineSignal, fallbackEfficiency, fallbackWeight) => {
|
|
22066
|
+
if (lineSignal && typeof lineSignal === "object") {
|
|
22067
|
+
const raw = lineSignal;
|
|
22068
|
+
return {
|
|
22069
|
+
source: normalizeLineSignalSource(raw.source),
|
|
22070
|
+
percent: toOptionalNumber(raw.percent),
|
|
22071
|
+
weight: toOptionalNumber(raw.weight),
|
|
22072
|
+
mode: raw.mode === "unavailable" ? "unavailable" : "computed",
|
|
22073
|
+
reason: typeof raw.reason === "string" ? raw.reason : raw.reason ?? null,
|
|
22074
|
+
effectiveEndAt: raw.effective_end_at ?? raw.effectiveEndAt ?? null,
|
|
22075
|
+
computedAt: raw.computed_at ?? raw.computedAt ?? null
|
|
22076
|
+
};
|
|
22077
|
+
}
|
|
22078
|
+
const percent2 = toOptionalNumber(fallbackEfficiency);
|
|
22079
|
+
if (percent2 === null) return null;
|
|
22080
|
+
return {
|
|
22081
|
+
source: "efficiency",
|
|
22082
|
+
percent: percent2,
|
|
22083
|
+
weight: toOptionalNumber(fallbackWeight),
|
|
22084
|
+
mode: "computed",
|
|
22085
|
+
reason: "fallback_efficiency",
|
|
22086
|
+
effectiveEndAt: null,
|
|
22087
|
+
computedAt: null
|
|
22088
|
+
};
|
|
22089
|
+
};
|
|
22090
|
+
var getKpiSignalStatus = (signal, legend = DEFAULT_EFFICIENCY_LEGEND) => {
|
|
22091
|
+
const percent2 = toOptionalNumber(signal?.percent);
|
|
22092
|
+
if (percent2 === null) return null;
|
|
22093
|
+
const color2 = getEfficiencyColor(percent2, legend);
|
|
22094
|
+
if (color2 === "green") return "stable";
|
|
22095
|
+
if (color2 === "yellow") return "warning";
|
|
22096
|
+
return "attention";
|
|
22097
|
+
};
|
|
22098
|
+
var getKpiSignalLabel = (signal, legend = DEFAULT_EFFICIENCY_LEGEND) => {
|
|
22099
|
+
const status = getKpiSignalStatus(signal, legend);
|
|
22100
|
+
return status ? KPI_SIGNAL_LABELS[status] : null;
|
|
22101
|
+
};
|
|
22102
|
+
var aggregateLineSignals = (signals) => {
|
|
22103
|
+
const numericSignals = signals.filter(
|
|
22104
|
+
(signal) => signal !== null && signal !== void 0 && toOptionalNumber(signal.percent) !== null
|
|
22105
|
+
);
|
|
22106
|
+
if (numericSignals.length === 0) return null;
|
|
22107
|
+
const percent2 = numericSignals.reduce(
|
|
22108
|
+
(sum, signal) => sum + (toOptionalNumber(signal.percent) ?? 0),
|
|
22109
|
+
0
|
|
22110
|
+
) / numericSignals.length;
|
|
22111
|
+
const signalSources = new Set(numericSignals.map((signal) => signal.source));
|
|
22112
|
+
const source = signalSources.size === 1 ? numericSignals[0].source : "mixed";
|
|
22113
|
+
return {
|
|
22114
|
+
source,
|
|
22115
|
+
percent: percent2,
|
|
22116
|
+
weight: null,
|
|
22117
|
+
mode: "computed",
|
|
22118
|
+
reason: "average",
|
|
22119
|
+
effectiveEndAt: null,
|
|
22120
|
+
computedAt: null
|
|
22121
|
+
};
|
|
22122
|
+
};
|
|
22051
22123
|
var createDefaultKPIs = () => ({
|
|
22052
22124
|
underperformingWorkers: { current: 0, total: 0, change: 0 },
|
|
22053
22125
|
efficiency: { value: 0, change: 0 },
|
|
22054
22126
|
outputProgress: { current: 0, target: 0, idealOutput: 0, change: 0 },
|
|
22055
22127
|
avgCycleTime: { value: 0, change: 0 },
|
|
22056
|
-
qualityCompliance: { value: 95, change: 0 }
|
|
22128
|
+
qualityCompliance: { value: 95, change: 0 },
|
|
22129
|
+
lineSignal: null
|
|
22057
22130
|
});
|
|
22058
22131
|
var buildKPIsFromLineMetricsRow = (row) => {
|
|
22059
22132
|
if (!row) return createDefaultKPIs();
|
|
@@ -22087,15 +22160,28 @@ var buildKPIsFromLineMetricsRow = (row) => {
|
|
|
22087
22160
|
qualityCompliance: {
|
|
22088
22161
|
value: 95,
|
|
22089
22162
|
change: 0
|
|
22090
|
-
}
|
|
22163
|
+
},
|
|
22164
|
+
lineSignal: normalizeLineSignal(row.line_signal, avgEfficiency, idealOutput || lineThreshold)
|
|
22091
22165
|
};
|
|
22092
22166
|
};
|
|
22093
22167
|
var aggregateKPIsFromLineMetricsRows = (rows) => {
|
|
22094
22168
|
if (!rows || rows.length === 0) return createDefaultKPIs();
|
|
22169
|
+
const lineSignal = aggregateLineSignals(
|
|
22170
|
+
rows.map((row) => normalizeLineSignal(
|
|
22171
|
+
row?.line_signal,
|
|
22172
|
+
row?.avg_efficiency,
|
|
22173
|
+
row?.ideal_output ?? row?.line_threshold
|
|
22174
|
+
))
|
|
22175
|
+
);
|
|
22095
22176
|
const eligibleRows = rows.filter(
|
|
22096
22177
|
(row) => isValidAggregateEfficiency(row?.monitoring_mode ?? row?.monitoringMode, row?.avg_efficiency)
|
|
22097
22178
|
);
|
|
22098
|
-
if (eligibleRows.length === 0)
|
|
22179
|
+
if (eligibleRows.length === 0) {
|
|
22180
|
+
return {
|
|
22181
|
+
...createDefaultKPIs(),
|
|
22182
|
+
lineSignal
|
|
22183
|
+
};
|
|
22184
|
+
}
|
|
22099
22185
|
const currentOutputSum = eligibleRows.reduce((sum, row) => sum + toNumber(row.current_output), 0);
|
|
22100
22186
|
const lineThresholdSum = eligibleRows.reduce(
|
|
22101
22187
|
(sum, row) => sum + (row?.output_target_recalculated !== void 0 && row?.output_target_recalculated !== null ? toNumber(row.output_target_recalculated) : toNumber(row.line_threshold)),
|
|
@@ -22142,7 +22228,8 @@ var aggregateKPIsFromLineMetricsRows = (rows) => {
|
|
|
22142
22228
|
qualityCompliance: {
|
|
22143
22229
|
value: 95,
|
|
22144
22230
|
change: 0
|
|
22145
|
-
}
|
|
22231
|
+
},
|
|
22232
|
+
lineSignal
|
|
22146
22233
|
};
|
|
22147
22234
|
};
|
|
22148
22235
|
|
|
@@ -34696,19 +34783,19 @@ var SkuRow = ({ sku, isSelected, isLive, onSelect }) => {
|
|
|
34696
34783
|
onClick: () => onSelect?.(isSelected ? null : sku.sku_id),
|
|
34697
34784
|
"data-testid": `sku-progress-row-${sku.sku_id}`,
|
|
34698
34785
|
children: [
|
|
34699
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-
|
|
34700
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-
|
|
34786
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
34787
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 flex-1 min-w-0", children: [
|
|
34701
34788
|
/* @__PURE__ */ jsx(
|
|
34702
34789
|
"span",
|
|
34703
34790
|
{
|
|
34704
|
-
className: "text-sm font-semibold text-gray-800
|
|
34791
|
+
className: "text-xs sm:text-sm font-semibold text-gray-800 break-words line-clamp-2",
|
|
34705
34792
|
title: skuLabel,
|
|
34706
34793
|
children: skuLabel
|
|
34707
34794
|
}
|
|
34708
34795
|
),
|
|
34709
|
-
isLive && /* @__PURE__ */ jsx("div", { className: "w-2 h-2 rounded-full bg-green-500 shrink-0 shadow-[0_0_4px_rgba(34,197,94,0.6)]", title: "Currently running" })
|
|
34796
|
+
isLive && /* @__PURE__ */ jsx("div", { className: "w-2 h-2 rounded-full bg-green-500 shrink-0 shadow-[0_0_4px_rgba(34,197,94,0.6)] mt-1.5", title: "Currently running" })
|
|
34710
34797
|
] }),
|
|
34711
|
-
/* @__PURE__ */ jsxs("span", { className: "text-xs text-gray-500 font-medium tabular-nums shrink-0", children: [
|
|
34798
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xs text-gray-500 font-medium tabular-nums shrink-0 pt-0.5", children: [
|
|
34712
34799
|
Math.round(current),
|
|
34713
34800
|
" / ",
|
|
34714
34801
|
Math.round(target)
|
|
@@ -36117,6 +36204,37 @@ var interpretIdleValue = (value) => {
|
|
|
36117
36204
|
if (value === "x" || value === null || value === void 0) return "unknown";
|
|
36118
36205
|
return "unknown";
|
|
36119
36206
|
};
|
|
36207
|
+
var timeToMinutes = (value) => {
|
|
36208
|
+
const parsed = parseTime(value);
|
|
36209
|
+
if (!parsed) return null;
|
|
36210
|
+
return parsed.hour * 60 + parsed.minute;
|
|
36211
|
+
};
|
|
36212
|
+
var normalizeBreaksOnShiftTimeline2 = (shiftStart, shiftBreaks) => {
|
|
36213
|
+
const shiftStartMinutes = timeToMinutes(shiftStart);
|
|
36214
|
+
if (shiftStartMinutes === null || !Array.isArray(shiftBreaks)) {
|
|
36215
|
+
return [];
|
|
36216
|
+
}
|
|
36217
|
+
return shiftBreaks.flatMap((entry) => {
|
|
36218
|
+
const startRaw = timeToMinutes(entry?.startTime ?? entry?.start);
|
|
36219
|
+
const endRaw = timeToMinutes(entry?.endTime ?? entry?.end);
|
|
36220
|
+
if (startRaw === null || endRaw === null) return [];
|
|
36221
|
+
let start = startRaw;
|
|
36222
|
+
let end = endRaw;
|
|
36223
|
+
if (end <= start) {
|
|
36224
|
+
end += 24 * 60;
|
|
36225
|
+
}
|
|
36226
|
+
if (start < shiftStartMinutes) {
|
|
36227
|
+
start += 24 * 60;
|
|
36228
|
+
end += 24 * 60;
|
|
36229
|
+
}
|
|
36230
|
+
return [{ start, end }];
|
|
36231
|
+
});
|
|
36232
|
+
};
|
|
36233
|
+
var isBreakMinute = (minuteIndex, shiftStartMinutes, normalizedBreaks) => {
|
|
36234
|
+
if (!normalizedBreaks.length) return false;
|
|
36235
|
+
const absoluteMinute = shiftStartMinutes + minuteIndex;
|
|
36236
|
+
return normalizedBreaks.some((entry) => entry.start <= absoluteMinute && absoluteMinute < entry.end);
|
|
36237
|
+
};
|
|
36120
36238
|
var getShiftDurationMinutes = (shiftStart, shiftEnd) => {
|
|
36121
36239
|
const start = parseTime(shiftStart);
|
|
36122
36240
|
const end = parseTime(shiftEnd);
|
|
@@ -36127,6 +36245,29 @@ var getShiftDurationMinutes = (shiftStart, shiftEnd) => {
|
|
|
36127
36245
|
}
|
|
36128
36246
|
return duration > 0 ? duration : null;
|
|
36129
36247
|
};
|
|
36248
|
+
var getBreakExcludedShiftMinutes = ({
|
|
36249
|
+
shiftStart,
|
|
36250
|
+
shiftEnd,
|
|
36251
|
+
elapsedMinutes,
|
|
36252
|
+
shiftBreaks
|
|
36253
|
+
}) => {
|
|
36254
|
+
const shiftMinutes = getShiftDurationMinutes(shiftStart, shiftEnd);
|
|
36255
|
+
if (shiftMinutes === null) return null;
|
|
36256
|
+
const elapsedLimit = Number.isFinite(elapsedMinutes) ? Math.min(Math.max(Math.floor(elapsedMinutes ?? 0), 0), shiftMinutes) : shiftMinutes;
|
|
36257
|
+
if (elapsedLimit <= 0) return 0;
|
|
36258
|
+
const startTime = parseTime(shiftStart);
|
|
36259
|
+
if (!startTime) return elapsedLimit;
|
|
36260
|
+
const shiftStartMinutes = startTime.hour * 60 + startTime.minute;
|
|
36261
|
+
const normalizedBreaks = normalizeBreaksOnShiftTimeline2(shiftStart, shiftBreaks);
|
|
36262
|
+
if (!normalizedBreaks.length) return elapsedLimit;
|
|
36263
|
+
let workingMinutes = 0;
|
|
36264
|
+
for (let minuteIndex = 0; minuteIndex < elapsedLimit; minuteIndex += 1) {
|
|
36265
|
+
if (!isBreakMinute(minuteIndex, shiftStartMinutes, normalizedBreaks)) {
|
|
36266
|
+
workingMinutes += 1;
|
|
36267
|
+
}
|
|
36268
|
+
}
|
|
36269
|
+
return workingMinutes;
|
|
36270
|
+
};
|
|
36130
36271
|
var getShiftElapsedMinutes = ({
|
|
36131
36272
|
shiftStart,
|
|
36132
36273
|
shiftEnd,
|
|
@@ -36191,7 +36332,8 @@ var buildUptimeSeries = ({
|
|
|
36191
36332
|
shiftEnd,
|
|
36192
36333
|
shiftDate,
|
|
36193
36334
|
timezone,
|
|
36194
|
-
elapsedMinutes
|
|
36335
|
+
elapsedMinutes,
|
|
36336
|
+
shiftBreaks
|
|
36195
36337
|
}) => {
|
|
36196
36338
|
const normalizedIdle = normalizeIdleTimeHourly(idleTimeHourly || {});
|
|
36197
36339
|
const hasIdleData = Object.keys(normalizedIdle).length > 0;
|
|
@@ -36246,6 +36388,8 @@ var buildUptimeSeries = ({
|
|
|
36246
36388
|
const points = [];
|
|
36247
36389
|
let activeMinutes = 0;
|
|
36248
36390
|
let idleMinutes = 0;
|
|
36391
|
+
const shiftStartMinutes = startTime.hour * 60 + startTime.minute;
|
|
36392
|
+
const normalizedBreaks = normalizeBreaksOnShiftTimeline2(shiftStart, shiftBreaks);
|
|
36249
36393
|
for (let minuteIndex = 0; minuteIndex < shiftMinutes; minuteIndex += 1) {
|
|
36250
36394
|
const minuteDate = addMinutes(shiftStartDate, minuteIndex);
|
|
36251
36395
|
const timeLabel = formatInTimeZone(minuteDate, timezone, "h:mm a");
|
|
@@ -36258,6 +36402,15 @@ var buildUptimeSeries = ({
|
|
|
36258
36402
|
});
|
|
36259
36403
|
continue;
|
|
36260
36404
|
}
|
|
36405
|
+
if (isBreakMinute(minuteIndex, shiftStartMinutes, normalizedBreaks)) {
|
|
36406
|
+
points.push({
|
|
36407
|
+
minuteIndex,
|
|
36408
|
+
timeLabel,
|
|
36409
|
+
uptime: null,
|
|
36410
|
+
status: "break"
|
|
36411
|
+
});
|
|
36412
|
+
continue;
|
|
36413
|
+
}
|
|
36261
36414
|
const hourKey = formatInTimeZone(minuteDate, timezone, "H");
|
|
36262
36415
|
const minuteKey = Number.parseInt(formatInTimeZone(minuteDate, timezone, "m"), 10);
|
|
36263
36416
|
const hourBucket = normalizedIdle[hourKey] || [];
|
|
@@ -39418,6 +39571,7 @@ var HourlyUptimeChartComponent = ({
|
|
|
39418
39571
|
shiftDate,
|
|
39419
39572
|
timezone,
|
|
39420
39573
|
elapsedMinutes,
|
|
39574
|
+
shiftBreaks,
|
|
39421
39575
|
className = ""
|
|
39422
39576
|
}) => {
|
|
39423
39577
|
const containerRef = React144__default.useRef(null);
|
|
@@ -39429,8 +39583,9 @@ var HourlyUptimeChartComponent = ({
|
|
|
39429
39583
|
shiftEnd,
|
|
39430
39584
|
shiftDate,
|
|
39431
39585
|
timezone,
|
|
39432
|
-
elapsedMinutes
|
|
39433
|
-
|
|
39586
|
+
elapsedMinutes,
|
|
39587
|
+
shiftBreaks
|
|
39588
|
+
}), [idleTimeHourly, shiftStart, shiftEnd, shiftDate, timezone, elapsedMinutes, shiftBreaks]);
|
|
39434
39589
|
const hasAggregateData = Boolean(hourlyAggregates && hourlyAggregates.length > 0);
|
|
39435
39590
|
const shiftStartTime = React144__default.useMemo(
|
|
39436
39591
|
() => getTimeFromTimeString(shiftStart),
|
|
@@ -44978,7 +45133,7 @@ var FileManagerFilters = ({
|
|
|
44978
45133
|
onClick: () => {
|
|
44979
45134
|
onIdleClipSortChange?.(idleClipSort === "latest" ? "idle_duration_desc" : "latest");
|
|
44980
45135
|
},
|
|
44981
|
-
className: `p-2 rounded-xl transition-all duration-200 ${idleClipSort === "idle_duration_desc" ? "bg-
|
|
45136
|
+
className: `p-2 rounded-xl transition-all duration-200 ${idleClipSort === "idle_duration_desc" ? "bg-blue-100 text-blue-600 hover:bg-blue-200 shadow-sm" : "bg-slate-100 text-slate-600 hover:bg-slate-200"}`,
|
|
44982
45137
|
title: idleClipSort === "idle_duration_desc" ? "Sort by newest first" : "Sort by longest idle first",
|
|
44983
45138
|
"aria-label": idleClipSort === "idle_duration_desc" ? "Sort idle clips by newest first" : "Sort idle clips by longest idle first",
|
|
44984
45139
|
children: /* @__PURE__ */ jsx(ArrowDownWideNarrow, { className: "h-5 w-5" })
|
|
@@ -45045,7 +45200,7 @@ var FileManagerFilters = ({
|
|
|
45045
45200
|
}
|
|
45046
45201
|
)
|
|
45047
45202
|
] }),
|
|
45048
|
-
activeFilter === "idle_time" && idleClipSort === "idle_duration_desc" && /* @__PURE__ */ jsxs("div", { className: "inline-flex w-fit items-center gap-2 rounded-full border border-
|
|
45203
|
+
activeFilter === "idle_time" && idleClipSort === "idle_duration_desc" && /* @__PURE__ */ jsxs("div", { className: "inline-flex w-fit items-center gap-2 rounded-full border border-blue-100 bg-blue-50/70 px-2.5 py-1 text-xs text-blue-700 shadow-sm", children: [
|
|
45049
45204
|
/* @__PURE__ */ jsx(ArrowDownWideNarrow, { className: "h-3.5 w-3.5" }),
|
|
45050
45205
|
/* @__PURE__ */ jsx("span", { className: "font-medium", children: "Longest idle first" }),
|
|
45051
45206
|
/* @__PURE__ */ jsx(
|
|
@@ -45055,7 +45210,7 @@ var FileManagerFilters = ({
|
|
|
45055
45210
|
e.stopPropagation();
|
|
45056
45211
|
onIdleClipSortChange?.("latest");
|
|
45057
45212
|
},
|
|
45058
|
-
className: "rounded-full p-0.5 transition-colors hover:bg-
|
|
45213
|
+
className: "rounded-full p-0.5 transition-colors hover:bg-blue-100",
|
|
45059
45214
|
title: "Clear idle sort",
|
|
45060
45215
|
children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5" })
|
|
45061
45216
|
}
|
|
@@ -51622,7 +51777,8 @@ var LineMonthlyPdfGenerator = ({
|
|
|
51622
51777
|
};
|
|
51623
51778
|
var LineWhatsAppShareButton = ({
|
|
51624
51779
|
lineInfo,
|
|
51625
|
-
className
|
|
51780
|
+
className,
|
|
51781
|
+
shiftBreaks = []
|
|
51626
51782
|
}) => {
|
|
51627
51783
|
const handleShare = () => {
|
|
51628
51784
|
trackCoreEvent("Line WhatsApp Share Clicked", {
|
|
@@ -51636,7 +51792,8 @@ var LineWhatsAppShareButton = ({
|
|
|
51636
51792
|
shiftStart: lineInfo.metrics.shift_start,
|
|
51637
51793
|
shiftEnd: lineInfo.metrics.shift_end,
|
|
51638
51794
|
shiftDate: lineInfo.date,
|
|
51639
|
-
timezone: "Asia/Kolkata"
|
|
51795
|
+
timezone: "Asia/Kolkata",
|
|
51796
|
+
shiftBreaks
|
|
51640
51797
|
}) : null;
|
|
51641
51798
|
const efficiencyValue = Number.isFinite(lineInfo.metrics.avg_efficiency) ? Number(lineInfo.metrics.avg_efficiency) : null;
|
|
51642
51799
|
const utilization = efficiencyValue !== null ? efficiencyValue : uptimeSeries && uptimeSeries.availableMinutes > 0 ? uptimeSeries.activeMinutes / uptimeSeries.availableMinutes * 100 : 0;
|
|
@@ -51805,16 +51962,24 @@ var LinePdfGenerator = ({
|
|
|
51805
51962
|
shiftStart,
|
|
51806
51963
|
shiftEnd,
|
|
51807
51964
|
shiftDate,
|
|
51808
|
-
timezone: effectiveUptimeTimezone
|
|
51965
|
+
timezone: effectiveUptimeTimezone,
|
|
51966
|
+
shiftBreaks
|
|
51809
51967
|
});
|
|
51810
51968
|
let activeMinutes = uptimeSeries.activeMinutes;
|
|
51811
51969
|
let idleMinutes = uptimeSeries.idleMinutes;
|
|
51812
51970
|
let availableMinutes = uptimeSeries.availableMinutes;
|
|
51813
51971
|
let hasData = uptimeSeries.hasData;
|
|
51814
|
-
|
|
51972
|
+
const hasIdleHourlyPayload = Boolean(
|
|
51973
|
+
workspace.idle_time_hourly && typeof workspace.idle_time_hourly === "object" && Object.keys(workspace.idle_time_hourly).length > 0
|
|
51974
|
+
);
|
|
51975
|
+
if (!hasData && !hasIdleHourlyPayload) {
|
|
51815
51976
|
const idleTimeValue = workspace.idle_time;
|
|
51816
51977
|
const hasIdleTimeValue = Number.isFinite(idleTimeValue);
|
|
51817
|
-
const fallbackDuration =
|
|
51978
|
+
const fallbackDuration = getBreakExcludedShiftMinutes({
|
|
51979
|
+
shiftStart,
|
|
51980
|
+
shiftEnd,
|
|
51981
|
+
shiftBreaks
|
|
51982
|
+
}) ?? shiftDurationMinutes;
|
|
51818
51983
|
if (hasIdleTimeValue && idleTimeValue > 0 && fallbackDuration > 0) {
|
|
51819
51984
|
const idleFromAggregate = Math.min(Math.max(Number(idleTimeValue) / 60, 0), fallbackDuration);
|
|
51820
51985
|
idleMinutes = idleFromAggregate;
|
|
@@ -51886,7 +52051,8 @@ var LinePdfGenerator = ({
|
|
|
51886
52051
|
shiftStart: lineShiftStart,
|
|
51887
52052
|
shiftEnd: lineShiftEnd,
|
|
51888
52053
|
shiftDate: lineInfo.date,
|
|
51889
|
-
timezone: effectiveUptimeTimezone
|
|
52054
|
+
timezone: effectiveUptimeTimezone,
|
|
52055
|
+
shiftBreaks
|
|
51890
52056
|
});
|
|
51891
52057
|
hourlyData = buildHourlyFromSeries(lineUptimeSeries);
|
|
51892
52058
|
}
|
|
@@ -53825,7 +53991,8 @@ var WorkspaceMonthlyHistory = ({
|
|
|
53825
53991
|
};
|
|
53826
53992
|
var WorkspaceWhatsAppShareButton = ({
|
|
53827
53993
|
workspace,
|
|
53828
|
-
className
|
|
53994
|
+
className,
|
|
53995
|
+
shiftBreaks = []
|
|
53829
53996
|
}) => {
|
|
53830
53997
|
const handleShare = () => {
|
|
53831
53998
|
trackCoreEvent("Workspace WhatsApp Share Clicked", {
|
|
@@ -53841,7 +54008,11 @@ var WorkspaceWhatsAppShareButton = ({
|
|
|
53841
54008
|
timeZone: "Asia/Kolkata"
|
|
53842
54009
|
});
|
|
53843
54010
|
const isUptimeMode = workspace.monitoring_mode === "uptime";
|
|
53844
|
-
const shiftMinutes =
|
|
54011
|
+
const shiftMinutes = getBreakExcludedShiftMinutes({
|
|
54012
|
+
shiftStart: workspace.shift_start,
|
|
54013
|
+
shiftEnd: workspace.shift_end,
|
|
54014
|
+
shiftBreaks
|
|
54015
|
+
}) ?? getShiftDurationMinutes(workspace.shift_start, workspace.shift_end);
|
|
53845
54016
|
const shiftSeconds = shiftMinutes ? shiftMinutes * 60 : 0;
|
|
53846
54017
|
const idleSeconds = Math.max(workspace.idle_time || 0, 0);
|
|
53847
54018
|
const clampedIdleSeconds = shiftSeconds > 0 ? Math.min(idleSeconds, shiftSeconds) : idleSeconds;
|
|
@@ -53931,7 +54102,11 @@ var WorkspacePdfGenerator = ({
|
|
|
53931
54102
|
try {
|
|
53932
54103
|
const isUptimeMode = workspace.monitoring_mode === "uptime";
|
|
53933
54104
|
const isAssemblyCycleMode = !isUptimeMode && shouldUseAssemblyCycleTimeLayout(workspace);
|
|
53934
|
-
const shiftMinutes =
|
|
54105
|
+
const shiftMinutes = getBreakExcludedShiftMinutes({
|
|
54106
|
+
shiftStart: workspace.shift_start,
|
|
54107
|
+
shiftEnd: workspace.shift_end,
|
|
54108
|
+
shiftBreaks
|
|
54109
|
+
}) ?? getShiftDurationMinutes(workspace.shift_start, workspace.shift_end);
|
|
53935
54110
|
const shiftSeconds = shiftMinutes ? shiftMinutes * 60 : 0;
|
|
53936
54111
|
const idleSeconds = Math.max(workspace.idle_time || 0, 0);
|
|
53937
54112
|
const clampedIdleSeconds = shiftSeconds > 0 ? Math.min(idleSeconds, shiftSeconds) : idleSeconds;
|
|
@@ -54101,7 +54276,8 @@ var WorkspacePdfGenerator = ({
|
|
|
54101
54276
|
shiftStart: workspace.shift_start,
|
|
54102
54277
|
shiftEnd: workspace.shift_end,
|
|
54103
54278
|
shiftDate: workspace.date,
|
|
54104
|
-
timezone: reportTimezone
|
|
54279
|
+
timezone: reportTimezone,
|
|
54280
|
+
shiftBreaks
|
|
54105
54281
|
}) : null;
|
|
54106
54282
|
const hourlyUptime = uptimeSeries?.points?.length ? Array.from({ length: Math.ceil(uptimeSeries.shiftMinutes / 60) }, (_, index) => {
|
|
54107
54283
|
const start = index * 60;
|
|
@@ -57496,7 +57672,7 @@ var SideNavBar = memo$1(({
|
|
|
57496
57672
|
const role = user?.role_level;
|
|
57497
57673
|
const roleNavPaths = useMemo(() => getRoleNavPaths(role), [role]);
|
|
57498
57674
|
const showLiveMonitorLink = roleNavPaths.includes("/live-monitor");
|
|
57499
|
-
const rootDashboardSurface = useMemo(() =>
|
|
57675
|
+
const rootDashboardSurface = useMemo(() => "monitor", []);
|
|
57500
57676
|
const getBasePath = useCallback((path) => {
|
|
57501
57677
|
const firstSegment = path.split("?")[0].split("/").filter(Boolean)[0];
|
|
57502
57678
|
return firstSegment ? `/${firstSegment}` : "/";
|
|
@@ -57547,12 +57723,6 @@ var SideNavBar = memo$1(({
|
|
|
57547
57723
|
dashboard_surface: dashboardSurface
|
|
57548
57724
|
}
|
|
57549
57725
|
}), []);
|
|
57550
|
-
const handleHomeClick = useCallback(() => {
|
|
57551
|
-
navigate("/", {
|
|
57552
|
-
trackingEvent: buildDashboardSurfaceTrackingEvent("side_nav", "/", rootDashboardSurface)
|
|
57553
|
-
});
|
|
57554
|
-
onMobileMenuClose?.();
|
|
57555
|
-
}, [navigate, onMobileMenuClose, buildDashboardSurfaceTrackingEvent, rootDashboardSurface]);
|
|
57556
57726
|
const handleLeaderboardClick = useCallback(() => {
|
|
57557
57727
|
navigate(`/leaderboard`, {
|
|
57558
57728
|
trackingEvent: {
|
|
@@ -57858,7 +58028,6 @@ var SideNavBar = memo$1(({
|
|
|
57858
58028
|
});
|
|
57859
58029
|
onMobileMenuClose?.();
|
|
57860
58030
|
}, [navigate, onMobileMenuClose, buildDashboardSurfaceTrackingEvent, rootDashboardSurface]);
|
|
57861
|
-
const homeButtonClasses = useMemo(() => getButtonClasses("/"), [getButtonClasses]);
|
|
57862
58031
|
const liveButtonClasses = useMemo(() => getButtonClasses("/live-monitor"), [getButtonClasses]);
|
|
57863
58032
|
const leaderboardButtonClasses = useMemo(() => getButtonClasses("/leaderboard"), [getButtonClasses]);
|
|
57864
58033
|
const kpisButtonClasses = useMemo(() => getButtonClasses("/kpis"), [getButtonClasses]);
|
|
@@ -57889,118 +58058,99 @@ var SideNavBar = memo$1(({
|
|
|
57889
58058
|
children: /* @__PURE__ */ jsx(Logo, { className: "w-12 h-12 object-contain cursor-pointer" })
|
|
57890
58059
|
}
|
|
57891
58060
|
) }),
|
|
57892
|
-
/* @__PURE__ */
|
|
57893
|
-
|
|
57894
|
-
|
|
57895
|
-
|
|
57896
|
-
|
|
57897
|
-
|
|
57898
|
-
|
|
57899
|
-
|
|
57900
|
-
|
|
57901
|
-
|
|
57902
|
-
|
|
57903
|
-
|
|
57904
|
-
|
|
57905
|
-
|
|
57906
|
-
|
|
57907
|
-
|
|
57908
|
-
|
|
57909
|
-
|
|
57910
|
-
|
|
57911
|
-
|
|
57912
|
-
|
|
57913
|
-
|
|
57914
|
-
|
|
57915
|
-
|
|
57916
|
-
|
|
57917
|
-
|
|
57918
|
-
|
|
57919
|
-
|
|
57920
|
-
|
|
57921
|
-
|
|
57922
|
-
|
|
57923
|
-
|
|
57924
|
-
|
|
57925
|
-
|
|
57926
|
-
|
|
57927
|
-
|
|
57928
|
-
|
|
57929
|
-
|
|
57930
|
-
|
|
57931
|
-
|
|
57932
|
-
|
|
57933
|
-
|
|
57934
|
-
"
|
|
57935
|
-
|
|
57936
|
-
|
|
57937
|
-
|
|
57938
|
-
|
|
57939
|
-
|
|
57940
|
-
|
|
57941
|
-
|
|
57942
|
-
|
|
57943
|
-
|
|
57944
|
-
|
|
57945
|
-
|
|
57946
|
-
|
|
57947
|
-
|
|
57948
|
-
|
|
57949
|
-
"
|
|
57950
|
-
|
|
57951
|
-
|
|
57952
|
-
|
|
57953
|
-
|
|
57954
|
-
|
|
57955
|
-
|
|
57956
|
-
|
|
57957
|
-
|
|
57958
|
-
|
|
57959
|
-
|
|
57960
|
-
|
|
57961
|
-
|
|
57962
|
-
|
|
57963
|
-
|
|
57964
|
-
|
|
57965
|
-
children:
|
|
57966
|
-
|
|
57967
|
-
|
|
57968
|
-
|
|
57969
|
-
|
|
57970
|
-
|
|
57971
|
-
|
|
57972
|
-
|
|
57973
|
-
|
|
57974
|
-
|
|
57975
|
-
|
|
57976
|
-
|
|
57977
|
-
|
|
57978
|
-
|
|
57979
|
-
|
|
57980
|
-
"
|
|
57981
|
-
|
|
57982
|
-
|
|
57983
|
-
|
|
57984
|
-
|
|
57985
|
-
}
|
|
57986
|
-
),
|
|
57987
|
-
canAccessPath("/health") && /* @__PURE__ */ jsxs(
|
|
57988
|
-
"button",
|
|
57989
|
-
{
|
|
57990
|
-
onClick: handleHealthClick,
|
|
57991
|
-
className: healthButtonClasses,
|
|
57992
|
-
"aria-label": "System Health",
|
|
57993
|
-
tabIndex: 0,
|
|
57994
|
-
role: "tab",
|
|
57995
|
-
"aria-selected": isPathActive("/health"),
|
|
57996
|
-
children: [
|
|
57997
|
-
/* @__PURE__ */ jsx(HeartIcon, { className: "w-5 h-5 mb-1" }),
|
|
57998
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "Health" })
|
|
57999
|
-
]
|
|
58000
|
-
}
|
|
58001
|
-
)
|
|
58002
|
-
] })
|
|
58003
|
-
] }),
|
|
58061
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 w-full py-6 px-4 overflow-y-auto", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
58062
|
+
showLiveMonitorLink && canAccessPath("/live-monitor") && /* @__PURE__ */ jsxs(
|
|
58063
|
+
"button",
|
|
58064
|
+
{
|
|
58065
|
+
onClick: handleLiveClick,
|
|
58066
|
+
className: liveButtonClasses,
|
|
58067
|
+
"aria-label": "Monitor",
|
|
58068
|
+
tabIndex: 0,
|
|
58069
|
+
role: "tab",
|
|
58070
|
+
"aria-selected": isPathActive("/live-monitor"),
|
|
58071
|
+
children: [
|
|
58072
|
+
/* @__PURE__ */ jsx(VideoCameraIcon, { className: "w-5 h-5 mb-1" }),
|
|
58073
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "Monitor" })
|
|
58074
|
+
]
|
|
58075
|
+
}
|
|
58076
|
+
),
|
|
58077
|
+
canAccessPath("/leaderboard") && /* @__PURE__ */ jsxs(
|
|
58078
|
+
"button",
|
|
58079
|
+
{
|
|
58080
|
+
onClick: handleLeaderboardClick,
|
|
58081
|
+
className: leaderboardButtonClasses,
|
|
58082
|
+
"aria-label": "Leaderboard",
|
|
58083
|
+
tabIndex: 0,
|
|
58084
|
+
role: "tab",
|
|
58085
|
+
"aria-selected": isPathActive("/leaderboard"),
|
|
58086
|
+
children: [
|
|
58087
|
+
/* @__PURE__ */ jsx(TrophyIcon, { className: "w-5 h-5 mb-1" }),
|
|
58088
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "Leaders" })
|
|
58089
|
+
]
|
|
58090
|
+
}
|
|
58091
|
+
),
|
|
58092
|
+
canAccessPath("/kpis") && /* @__PURE__ */ jsxs(
|
|
58093
|
+
"button",
|
|
58094
|
+
{
|
|
58095
|
+
onClick: handleKPIsClick,
|
|
58096
|
+
className: kpisButtonClasses,
|
|
58097
|
+
"aria-label": "Lines",
|
|
58098
|
+
tabIndex: 0,
|
|
58099
|
+
role: "tab",
|
|
58100
|
+
"aria-selected": isPathActive("/kpis"),
|
|
58101
|
+
children: [
|
|
58102
|
+
/* @__PURE__ */ jsx(ChartBarIcon, { className: "w-5 h-5 mb-1" }),
|
|
58103
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "Lines" })
|
|
58104
|
+
]
|
|
58105
|
+
}
|
|
58106
|
+
),
|
|
58107
|
+
canAccessPath("/improvement-center") && /* @__PURE__ */ jsxs(
|
|
58108
|
+
"button",
|
|
58109
|
+
{
|
|
58110
|
+
onClick: handleImprovementClick,
|
|
58111
|
+
className: improvementButtonClasses,
|
|
58112
|
+
"aria-label": "Improvement Center",
|
|
58113
|
+
tabIndex: 0,
|
|
58114
|
+
role: "tab",
|
|
58115
|
+
"aria-selected": isPathActive("/improvement-center"),
|
|
58116
|
+
children: [
|
|
58117
|
+
/* @__PURE__ */ jsx(LightBulbIcon, { className: "w-5 h-5 mb-1" }),
|
|
58118
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight text-center", children: "Improve" })
|
|
58119
|
+
]
|
|
58120
|
+
}
|
|
58121
|
+
),
|
|
58122
|
+
showSupervisorManagement,
|
|
58123
|
+
skuEnabled && canAccessPath("/skus") && /* @__PURE__ */ jsxs(
|
|
58124
|
+
"button",
|
|
58125
|
+
{
|
|
58126
|
+
onClick: handleSKUsClick,
|
|
58127
|
+
className: skusButtonClasses,
|
|
58128
|
+
"aria-label": "SKU Management",
|
|
58129
|
+
tabIndex: 0,
|
|
58130
|
+
role: "tab",
|
|
58131
|
+
"aria-selected": isPathActive("/skus"),
|
|
58132
|
+
children: [
|
|
58133
|
+
/* @__PURE__ */ jsx(CubeIcon, { className: "w-5 h-5 mb-1" }),
|
|
58134
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "SKUs" })
|
|
58135
|
+
]
|
|
58136
|
+
}
|
|
58137
|
+
),
|
|
58138
|
+
canAccessPath("/health") && /* @__PURE__ */ jsxs(
|
|
58139
|
+
"button",
|
|
58140
|
+
{
|
|
58141
|
+
onClick: handleHealthClick,
|
|
58142
|
+
className: healthButtonClasses,
|
|
58143
|
+
"aria-label": "System Health",
|
|
58144
|
+
tabIndex: 0,
|
|
58145
|
+
role: "tab",
|
|
58146
|
+
"aria-selected": isPathActive("/health"),
|
|
58147
|
+
children: [
|
|
58148
|
+
/* @__PURE__ */ jsx(HeartIcon, { className: "w-5 h-5 mb-1" }),
|
|
58149
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs sm:text-[10px] font-medium leading-tight", children: "Health" })
|
|
58150
|
+
]
|
|
58151
|
+
}
|
|
58152
|
+
)
|
|
58153
|
+
] }) }),
|
|
58004
58154
|
/* @__PURE__ */ jsx("div", { className: "w-full py-4 px-4 border-t border-gray-100 flex-shrink-0 flex flex-col gap-2", children: settingsItems.length > 0 && /* @__PURE__ */ jsxs(
|
|
58005
58155
|
"button",
|
|
58006
58156
|
{
|
|
@@ -58037,23 +58187,11 @@ var SideNavBar = memo$1(({
|
|
|
58037
58187
|
};
|
|
58038
58188
|
};
|
|
58039
58189
|
return /* @__PURE__ */ jsxs("nav", { className: "px-5 py-6", children: [
|
|
58040
|
-
canAccessPath("/") && /* @__PURE__ */ jsxs(
|
|
58041
|
-
"button",
|
|
58042
|
-
{
|
|
58043
|
-
onClick: handleMobileNavClick(handleHomeClick),
|
|
58044
|
-
className: getMobileButtonClass("/"),
|
|
58045
|
-
"aria-label": "Home",
|
|
58046
|
-
children: [
|
|
58047
|
-
/* @__PURE__ */ jsx(HomeIcon, { className: getIconClass("/") }),
|
|
58048
|
-
/* @__PURE__ */ jsx("span", { className: "text-base font-medium", children: "Home" })
|
|
58049
|
-
]
|
|
58050
|
-
}
|
|
58051
|
-
),
|
|
58052
58190
|
showLiveMonitorLink && canAccessPath("/live-monitor") && /* @__PURE__ */ jsxs(
|
|
58053
58191
|
"button",
|
|
58054
58192
|
{
|
|
58055
58193
|
onClick: handleMobileNavClick(handleLiveClick),
|
|
58056
|
-
className:
|
|
58194
|
+
className: getMobileButtonClass("/live-monitor"),
|
|
58057
58195
|
"aria-label": "Monitor",
|
|
58058
58196
|
children: [
|
|
58059
58197
|
/* @__PURE__ */ jsx(VideoCameraIcon, { className: getIconClass("/live-monitor") }),
|
|
@@ -67896,6 +68034,7 @@ var UptimeBottomSection = memo$1(({
|
|
|
67896
68034
|
shiftDate,
|
|
67897
68035
|
timezone,
|
|
67898
68036
|
elapsedMinutes,
|
|
68037
|
+
shiftBreaks,
|
|
67899
68038
|
urlDate,
|
|
67900
68039
|
urlShift,
|
|
67901
68040
|
navigate
|
|
@@ -67983,7 +68122,8 @@ var UptimeBottomSection = memo$1(({
|
|
|
67983
68122
|
shiftEnd,
|
|
67984
68123
|
shiftDate,
|
|
67985
68124
|
timezone,
|
|
67986
|
-
elapsedMinutes
|
|
68125
|
+
elapsedMinutes,
|
|
68126
|
+
shiftBreaks
|
|
67987
68127
|
}
|
|
67988
68128
|
) })
|
|
67989
68129
|
] })
|
|
@@ -68301,7 +68441,8 @@ var KPIDetailView = ({
|
|
|
68301
68441
|
shiftStart: resolvedShiftStart || void 0,
|
|
68302
68442
|
shiftEnd: resolvedShiftEnd || void 0,
|
|
68303
68443
|
shiftDate: metric.date,
|
|
68304
|
-
timezone: configuredTimezone
|
|
68444
|
+
timezone: configuredTimezone,
|
|
68445
|
+
shiftBreaks: shiftConfig?.shifts?.find((shift) => shift.shiftId === metric.shift_id)?.breaks || []
|
|
68305
68446
|
}) : null;
|
|
68306
68447
|
const idleTimeSeconds = isUptimeMode ? hasBackendUptimeSeconds ? metricIdleTimeSeconds ?? 0 : (uptimeSeries2?.idleMinutes || 0) * 60 : 0;
|
|
68307
68448
|
const activeTimeSeconds = isUptimeMode ? hasBackendUptimeSeconds ? metricActiveTimeSeconds ?? 0 : (uptimeSeries2?.activeMinutes || 0) * 60 : 0;
|
|
@@ -68481,6 +68622,10 @@ var KPIDetailView = ({
|
|
|
68481
68622
|
end: chartMetrics.shift_end || fallback.end
|
|
68482
68623
|
};
|
|
68483
68624
|
}, [chartMetrics?.shift_start, chartMetrics?.shift_end, chartMetrics?.shift_id, resolveShiftTimes]);
|
|
68625
|
+
const resolvedShiftBreaks = useMemo(
|
|
68626
|
+
() => shiftConfig?.shifts?.find((shift) => shift.shiftId === chartMetrics?.shift_id)?.breaks || [],
|
|
68627
|
+
[shiftConfig?.shifts, chartMetrics?.shift_id]
|
|
68628
|
+
);
|
|
68484
68629
|
const lineSkuBreakdown = useMemo(
|
|
68485
68630
|
() => resolvedLineInfo?.metrics.sku_breakdown ?? [],
|
|
68486
68631
|
[resolvedLineInfo]
|
|
@@ -68614,7 +68759,8 @@ var KPIDetailView = ({
|
|
|
68614
68759
|
shiftEnd: null,
|
|
68615
68760
|
shiftDate: null,
|
|
68616
68761
|
timezone: configuredTimezone,
|
|
68617
|
-
elapsedMinutes: null
|
|
68762
|
+
elapsedMinutes: null,
|
|
68763
|
+
shiftBreaks: resolvedShiftBreaks
|
|
68618
68764
|
});
|
|
68619
68765
|
}
|
|
68620
68766
|
return buildUptimeSeries({
|
|
@@ -68623,9 +68769,10 @@ var KPIDetailView = ({
|
|
|
68623
68769
|
shiftEnd: resolvedShiftTimes.end,
|
|
68624
68770
|
shiftDate: chartMetrics.date,
|
|
68625
68771
|
timezone: configuredTimezone,
|
|
68626
|
-
elapsedMinutes: elapsedShiftMinutes
|
|
68772
|
+
elapsedMinutes: elapsedShiftMinutes,
|
|
68773
|
+
shiftBreaks: resolvedShiftBreaks
|
|
68627
68774
|
});
|
|
68628
|
-
}, [chartMetrics, resolvedShiftTimes.start, resolvedShiftTimes.end, configuredTimezone, elapsedShiftMinutes]);
|
|
68775
|
+
}, [chartMetrics, resolvedShiftTimes.start, resolvedShiftTimes.end, configuredTimezone, elapsedShiftMinutes, resolvedShiftBreaks]);
|
|
68629
68776
|
const lineUtilizationFromLine = useMemo(() => {
|
|
68630
68777
|
const efficiencyValue = Number.isFinite(chartMetrics?.avg_efficiency) ? Number(chartMetrics?.avg_efficiency) : null;
|
|
68631
68778
|
if (efficiencyValue !== null) return efficiencyValue;
|
|
@@ -68652,7 +68799,8 @@ var KPIDetailView = ({
|
|
|
68652
68799
|
shiftEnd,
|
|
68653
68800
|
shiftDate,
|
|
68654
68801
|
timezone: configuredTimezone,
|
|
68655
|
-
elapsedMinutes: workspaceElapsedMinutes
|
|
68802
|
+
elapsedMinutes: workspaceElapsedMinutes,
|
|
68803
|
+
shiftBreaks: resolvedShiftBreaks
|
|
68656
68804
|
});
|
|
68657
68805
|
let activeMinutes = uptimeSeries2.activeMinutes;
|
|
68658
68806
|
let idleMinutes = uptimeSeries2.idleMinutes;
|
|
@@ -68664,7 +68812,12 @@ var KPIDetailView = ({
|
|
|
68664
68812
|
);
|
|
68665
68813
|
const idleTimeValue = workspace.idle_time;
|
|
68666
68814
|
const hasIdleTimeValue = Number.isFinite(idleTimeValue);
|
|
68667
|
-
const fallbackDuration =
|
|
68815
|
+
const fallbackDuration = getBreakExcludedShiftMinutes({
|
|
68816
|
+
shiftStart,
|
|
68817
|
+
shiftEnd,
|
|
68818
|
+
elapsedMinutes: workspaceElapsedMinutes,
|
|
68819
|
+
shiftBreaks: resolvedShiftBreaks
|
|
68820
|
+
}) ?? workspaceElapsedMinutes ?? shiftMinutes;
|
|
68668
68821
|
if (!hasIdleHourlyPayload && hasIdleTimeValue && idleTimeValue > 0 && fallbackDuration > 0) {
|
|
68669
68822
|
const idleSeconds = Number(idleTimeValue);
|
|
68670
68823
|
const idleFromAggregate = Math.min(Math.max(idleSeconds / 60, 0), fallbackDuration);
|
|
@@ -68694,7 +68847,8 @@ var KPIDetailView = ({
|
|
|
68694
68847
|
resolvedShiftTimes.end,
|
|
68695
68848
|
chartMetrics?.date,
|
|
68696
68849
|
configuredTimezone,
|
|
68697
|
-
isCurrentShiftView
|
|
68850
|
+
isCurrentShiftView,
|
|
68851
|
+
resolvedShiftBreaks
|
|
68698
68852
|
]);
|
|
68699
68853
|
const lineUptimeStats = useMemo(() => {
|
|
68700
68854
|
if (!isUptimeMode) {
|
|
@@ -69381,6 +69535,7 @@ var KPIDetailView = ({
|
|
|
69381
69535
|
shiftDate: chartMetrics?.date,
|
|
69382
69536
|
timezone: configuredTimezone,
|
|
69383
69537
|
elapsedMinutes: elapsedShiftMinutes,
|
|
69538
|
+
shiftBreaks: resolvedShiftBreaks,
|
|
69384
69539
|
urlDate,
|
|
69385
69540
|
urlShift,
|
|
69386
69541
|
navigate
|
|
@@ -69495,6 +69650,7 @@ var KPIDetailView = ({
|
|
|
69495
69650
|
shiftDate: chartMetrics?.date,
|
|
69496
69651
|
timezone: configuredTimezone,
|
|
69497
69652
|
elapsedMinutes: elapsedShiftMinutes,
|
|
69653
|
+
shiftBreaks: resolvedShiftBreaks,
|
|
69498
69654
|
urlDate,
|
|
69499
69655
|
urlShift,
|
|
69500
69656
|
navigate
|
|
@@ -69601,6 +69757,19 @@ var formatDateKey2 = (dateKey, timezone, options) => {
|
|
|
69601
69757
|
return dateKey;
|
|
69602
69758
|
}
|
|
69603
69759
|
};
|
|
69760
|
+
var getFirstName = (displayName) => {
|
|
69761
|
+
const trimmedName = displayName.trim();
|
|
69762
|
+
if (!trimmedName) return "";
|
|
69763
|
+
return trimmedName.split(/\s+/)[0];
|
|
69764
|
+
};
|
|
69765
|
+
var formatSupervisorFirstNames = (supervisors, fallbackSupervisorNames) => {
|
|
69766
|
+
const firstNames = supervisors.map((supervisor) => getFirstName(supervisor.displayName)).filter((name) => name.length > 0);
|
|
69767
|
+
if (firstNames.length > 0) {
|
|
69768
|
+
return Array.from(new Set(firstNames)).join(", ");
|
|
69769
|
+
}
|
|
69770
|
+
const fallbackFirstNames = fallbackSupervisorNames.flatMap((names) => names.split(",")).map(getFirstName).filter((name) => name.length > 0);
|
|
69771
|
+
return fallbackFirstNames.length > 0 ? Array.from(new Set(fallbackFirstNames)).join(", ") : "Unassigned";
|
|
69772
|
+
};
|
|
69604
69773
|
var LeaderboardCountdown = ({ targetDate, format: format10, finishedLabel = "Finished", placeholder = "--", onFinished }) => {
|
|
69605
69774
|
const [time2, setTime] = useState("");
|
|
69606
69775
|
const hasFinishedRef = useRef(false);
|
|
@@ -69726,7 +69895,7 @@ var LinesLeaderboard = ({
|
|
|
69726
69895
|
});
|
|
69727
69896
|
const supervisors = Array.from(supervisorByUserId.values());
|
|
69728
69897
|
const primarySupervisor = supervisors[0];
|
|
69729
|
-
const supervisorName = supervisors
|
|
69898
|
+
const supervisorName = formatSupervisorFirstNames(supervisors, fallbackSupervisorNames);
|
|
69730
69899
|
const supervisorImage = primarySupervisor?.profilePhotoUrl || null;
|
|
69731
69900
|
return {
|
|
69732
69901
|
...row,
|
|
@@ -69986,21 +70155,49 @@ var LinesLeaderboard = ({
|
|
|
69986
70155
|
] }) }) }) })
|
|
69987
70156
|
] });
|
|
69988
70157
|
};
|
|
70158
|
+
var SIGNAL_PILL_STYLES = {
|
|
70159
|
+
stable: {
|
|
70160
|
+
container: "bg-emerald-100 text-emerald-700 border border-emerald-200",
|
|
70161
|
+
dot: "bg-emerald-500"
|
|
70162
|
+
},
|
|
70163
|
+
warning: {
|
|
70164
|
+
container: "bg-amber-100 text-amber-700 border border-amber-200",
|
|
70165
|
+
dot: "bg-amber-500"
|
|
70166
|
+
},
|
|
70167
|
+
attention: {
|
|
70168
|
+
container: "bg-red-100 text-red-700 border border-red-200",
|
|
70169
|
+
dot: "bg-red-500"
|
|
70170
|
+
}
|
|
70171
|
+
};
|
|
70172
|
+
var KpiSignalPill = ({ signal, efficiencyLegend }) => {
|
|
70173
|
+
const status = getKpiSignalStatus(signal, efficiencyLegend);
|
|
70174
|
+
const label = getKpiSignalLabel(signal, efficiencyLegend);
|
|
70175
|
+
if (!status || !label) return null;
|
|
70176
|
+
const styles2 = SIGNAL_PILL_STYLES[status];
|
|
70177
|
+
return /* @__PURE__ */ jsxs(
|
|
70178
|
+
"div",
|
|
70179
|
+
{
|
|
70180
|
+
className: `flex items-center gap-1.5 px-2.5 sm:px-3 py-1 sm:py-1.5 rounded-full text-xs font-medium flex-shrink-0 ${styles2.container}`,
|
|
70181
|
+
style: { minWidth: "fit-content" },
|
|
70182
|
+
children: [
|
|
70183
|
+
/* @__PURE__ */ jsx("div", { className: `w-2 h-2 rounded-full ${styles2.dot} animate-pulse` }),
|
|
70184
|
+
/* @__PURE__ */ jsx("span", { children: label })
|
|
70185
|
+
]
|
|
70186
|
+
}
|
|
70187
|
+
);
|
|
70188
|
+
};
|
|
69989
70189
|
var LineCard = ({
|
|
69990
70190
|
line,
|
|
69991
70191
|
kpis,
|
|
69992
70192
|
isLoading,
|
|
69993
70193
|
error,
|
|
69994
70194
|
onClick,
|
|
70195
|
+
efficiencyLegend,
|
|
69995
70196
|
supervisorEnabled = false,
|
|
69996
70197
|
supervisorName,
|
|
69997
70198
|
supervisors
|
|
69998
70199
|
}) => {
|
|
69999
70200
|
const isUptimeLine = (line.monitoring_mode ?? "output") === "uptime";
|
|
70000
|
-
const isOnTrack = React144__default.useMemo(() => {
|
|
70001
|
-
if (!kpis) return null;
|
|
70002
|
-
return isEfficiencyOnTrack(kpis.efficiency.value);
|
|
70003
|
-
}, [kpis]);
|
|
70004
70201
|
return /* @__PURE__ */ jsxs(
|
|
70005
70202
|
motion.div,
|
|
70006
70203
|
{
|
|
@@ -70072,10 +70269,7 @@ var LineCard = ({
|
|
|
70072
70269
|
] })
|
|
70073
70270
|
] })
|
|
70074
70271
|
] }),
|
|
70075
|
-
!isUptimeLine && kpis &&
|
|
70076
|
-
/* @__PURE__ */ jsx("div", { className: `w-2 h-2 rounded-full ${isOnTrack ? "bg-emerald-500" : "bg-red-500"} animate-pulse` }),
|
|
70077
|
-
/* @__PURE__ */ jsx("span", { children: isOnTrack ? "On Track" : "Behind" })
|
|
70078
|
-
] })
|
|
70272
|
+
!isUptimeLine && kpis && /* @__PURE__ */ jsx(KpiSignalPill, { signal: kpis.lineSignal, efficiencyLegend })
|
|
70079
70273
|
] }) }),
|
|
70080
70274
|
isLoading && !kpis && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
70081
70275
|
/* @__PURE__ */ jsxs("div", { className: "animate-pulse", children: [
|
|
@@ -70143,12 +70337,9 @@ var KpiGroupCard = ({
|
|
|
70143
70337
|
isLoading,
|
|
70144
70338
|
error,
|
|
70145
70339
|
isUptimeMode,
|
|
70340
|
+
efficiencyLegend,
|
|
70146
70341
|
onClick
|
|
70147
70342
|
}) => {
|
|
70148
|
-
const isOnTrack = React144__default.useMemo(() => {
|
|
70149
|
-
if (!kpis) return null;
|
|
70150
|
-
return isEfficiencyOnTrack(kpis.efficiency.value);
|
|
70151
|
-
}, [kpis]);
|
|
70152
70343
|
const outputTarget = Number(kpis?.outputProgress?.target ?? 0);
|
|
70153
70344
|
const outputCurrent = Number(kpis?.outputProgress?.current ?? 0);
|
|
70154
70345
|
const progressPercent = outputTarget > 0 ? Math.min(outputCurrent / outputTarget * 100, 100) : 0;
|
|
@@ -70172,10 +70363,7 @@ var KpiGroupCard = ({
|
|
|
70172
70363
|
),
|
|
70173
70364
|
/* @__PURE__ */ jsx("p", { className: "mt-1 text-xs font-medium text-gray-500", children: subtitle })
|
|
70174
70365
|
] }),
|
|
70175
|
-
!isUptimeMode && kpis &&
|
|
70176
|
-
/* @__PURE__ */ jsx("div", { className: `w-2 h-2 rounded-full ${isOnTrack ? "bg-emerald-500" : "bg-red-500"} animate-pulse` }),
|
|
70177
|
-
/* @__PURE__ */ jsx("span", { children: isOnTrack ? "On Track" : "Behind" })
|
|
70178
|
-
] })
|
|
70366
|
+
!isUptimeMode && kpis && /* @__PURE__ */ jsx(KpiSignalPill, { signal: kpis.lineSignal, efficiencyLegend })
|
|
70179
70367
|
] }) }),
|
|
70180
70368
|
isLoading && !kpis && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
70181
70369
|
/* @__PURE__ */ jsxs("div", { className: "animate-pulse", children: [
|
|
@@ -70492,7 +70680,8 @@ var KPIsOverviewView = ({
|
|
|
70492
70680
|
const {
|
|
70493
70681
|
lineMetrics,
|
|
70494
70682
|
isLoading: metricsLoading,
|
|
70495
|
-
error: metricsError
|
|
70683
|
+
error: metricsError,
|
|
70684
|
+
efficiencyLegend
|
|
70496
70685
|
} = useDashboardMetrics({
|
|
70497
70686
|
lineId: factoryViewId,
|
|
70498
70687
|
userAccessibleLineIds: metricsLineIds
|
|
@@ -70836,7 +71025,11 @@ var KPIsOverviewView = ({
|
|
|
70836
71025
|
trackProps.output_current = kpis.outputProgress?.current;
|
|
70837
71026
|
trackProps.output_target = kpis.outputProgress?.target;
|
|
70838
71027
|
trackProps.underperforming_workers = kpis.underperformingWorkers?.current;
|
|
70839
|
-
|
|
71028
|
+
const signalLabel = getKpiSignalLabel(kpis.lineSignal, efficiencyLegend);
|
|
71029
|
+
if (signalLabel) {
|
|
71030
|
+
trackProps.status = signalLabel;
|
|
71031
|
+
trackProps.signal_source = kpis.lineSignal?.source ?? null;
|
|
71032
|
+
}
|
|
70840
71033
|
}
|
|
70841
71034
|
trackCoreEvent("Line Card Clicked", trackProps);
|
|
70842
71035
|
if (activeTab === "leaderboard" && timeRange === "today" && isHistoricalLeaderboardDaily) {
|
|
@@ -70922,6 +71115,7 @@ var KPIsOverviewView = ({
|
|
|
70922
71115
|
isLoading: metricsLoading,
|
|
70923
71116
|
error: metricsError,
|
|
70924
71117
|
onClick: (kpis) => handleLineClick(line, kpis),
|
|
71118
|
+
efficiencyLegend,
|
|
70925
71119
|
supervisorEnabled,
|
|
70926
71120
|
supervisorName: supervisorNamesByLineId.get(line.id) || null,
|
|
70927
71121
|
supervisors: supervisorsByLineId?.get(line.id)
|
|
@@ -70943,6 +71137,7 @@ var KPIsOverviewView = ({
|
|
|
70943
71137
|
isLoading: metricsLoading,
|
|
70944
71138
|
error: metricsError,
|
|
70945
71139
|
isUptimeMode: viewType === "machine",
|
|
71140
|
+
efficiencyLegend,
|
|
70946
71141
|
onClick
|
|
70947
71142
|
},
|
|
70948
71143
|
key
|
|
@@ -76980,6 +77175,10 @@ var WorkspaceDetailView = ({
|
|
|
76980
77175
|
timezone
|
|
76981
77176
|
});
|
|
76982
77177
|
}, [isCurrentShiftView, workspace?.shift_start, workspace?.shift_end, idleClipDate, timezone]);
|
|
77178
|
+
const workspaceShiftBreaks = useMemo(
|
|
77179
|
+
() => shiftConfig?.shifts?.find((shift2) => shift2.shiftId === workspace?.shift_id)?.breaks || [],
|
|
77180
|
+
[shiftConfig?.shifts, workspace?.shift_id]
|
|
77181
|
+
);
|
|
76983
77182
|
const uptimeSeries = useMemo(
|
|
76984
77183
|
() => buildUptimeSeries({
|
|
76985
77184
|
idleTimeHourly: workspace?.idle_time_hourly,
|
|
@@ -76987,17 +77186,26 @@ var WorkspaceDetailView = ({
|
|
|
76987
77186
|
shiftEnd: workspace?.shift_end,
|
|
76988
77187
|
shiftDate: idleClipDate,
|
|
76989
77188
|
timezone,
|
|
76990
|
-
elapsedMinutes: elapsedShiftMinutes
|
|
77189
|
+
elapsedMinutes: elapsedShiftMinutes,
|
|
77190
|
+
shiftBreaks: workspaceShiftBreaks
|
|
76991
77191
|
}),
|
|
76992
|
-
[workspace?.idle_time_hourly, workspace?.shift_start, workspace?.shift_end, idleClipDate, timezone, elapsedShiftMinutes]
|
|
77192
|
+
[workspace?.idle_time_hourly, workspace?.shift_start, workspace?.shift_end, idleClipDate, timezone, elapsedShiftMinutes, workspaceShiftBreaks]
|
|
76993
77193
|
);
|
|
76994
77194
|
const uptimePieData = useMemo(() => {
|
|
76995
77195
|
if (!isUptimeMode) return [];
|
|
76996
77196
|
let activeMinutes = uptimeSeries.activeMinutes;
|
|
76997
77197
|
let idleMinutes = uptimeSeries.idleMinutes;
|
|
76998
77198
|
let totalMinutes = uptimeSeries.availableMinutes;
|
|
76999
|
-
const fallbackDuration =
|
|
77000
|
-
|
|
77199
|
+
const fallbackDuration = getBreakExcludedShiftMinutes({
|
|
77200
|
+
shiftStart: workspace?.shift_start,
|
|
77201
|
+
shiftEnd: workspace?.shift_end,
|
|
77202
|
+
elapsedMinutes: elapsedShiftMinutes,
|
|
77203
|
+
shiftBreaks: workspaceShiftBreaks
|
|
77204
|
+
}) ?? elapsedShiftMinutes ?? shiftDurationMinutes;
|
|
77205
|
+
const hasIdleHourlyPayload = Boolean(
|
|
77206
|
+
workspace?.idle_time_hourly && typeof workspace.idle_time_hourly === "object" && Object.keys(workspace.idle_time_hourly).length > 0
|
|
77207
|
+
);
|
|
77208
|
+
if (!uptimeSeries.hasData && !hasIdleHourlyPayload && fallbackDuration !== null && fallbackDuration !== void 0) {
|
|
77001
77209
|
const idleSeconds = Number(workspace?.idle_time || 0);
|
|
77002
77210
|
const idleFromAggregate = Math.min(Math.max(Math.round(idleSeconds / 60), 0), fallbackDuration);
|
|
77003
77211
|
const activeFromAggregate = Math.max(fallbackDuration - idleFromAggregate, 0);
|
|
@@ -77010,7 +77218,7 @@ var WorkspaceDetailView = ({
|
|
|
77010
77218
|
{ name: "Productive", value: activeMinutes },
|
|
77011
77219
|
{ name: "Idle", value: idleMinutes }
|
|
77012
77220
|
];
|
|
77013
|
-
}, [isUptimeMode, uptimeSeries, shiftDurationMinutes, elapsedShiftMinutes, workspace?.idle_time]);
|
|
77221
|
+
}, [isUptimeMode, uptimeSeries, shiftDurationMinutes, elapsedShiftMinutes, workspace?.idle_time, workspace?.shift_start, workspace?.shift_end, workspaceShiftBreaks]);
|
|
77014
77222
|
const overviewTabLabel = isUptimeMode ? "Utilization" : "Efficiency";
|
|
77015
77223
|
const idleClipFetchEnabled = Boolean(
|
|
77016
77224
|
workspaceId && idleClipDate && idleClipShiftId !== void 0 && activeTab === "overview" && idleTimeVlmEnabled && isOutputLayout
|
|
@@ -77489,7 +77697,8 @@ var WorkspaceDetailView = ({
|
|
|
77489
77697
|
shiftEnd: workspace.shift_end,
|
|
77490
77698
|
shiftDate: idleClipDate,
|
|
77491
77699
|
timezone,
|
|
77492
|
-
elapsedMinutes: elapsedShiftMinutes
|
|
77700
|
+
elapsedMinutes: elapsedShiftMinutes,
|
|
77701
|
+
shiftBreaks: workspaceShiftBreaks
|
|
77493
77702
|
}
|
|
77494
77703
|
) : isAssemblyCycleLayout ? shouldShowCycleTimeUnavailableState ? cycleTimeUnavailableView : shouldShowCycleTimeChart ? /* @__PURE__ */ jsx(
|
|
77495
77704
|
CycleTimeOverTimeChart,
|
|
@@ -77642,7 +77851,8 @@ var WorkspaceDetailView = ({
|
|
|
77642
77851
|
shiftEnd: workspace.shift_end,
|
|
77643
77852
|
shiftDate: idleClipDate,
|
|
77644
77853
|
timezone,
|
|
77645
|
-
elapsedMinutes: elapsedShiftMinutes
|
|
77854
|
+
elapsedMinutes: elapsedShiftMinutes,
|
|
77855
|
+
shiftBreaks: workspaceShiftBreaks
|
|
77646
77856
|
}
|
|
77647
77857
|
) : isAssemblyCycleLayout ? shouldShowCycleTimeUnavailableState ? cycleTimeUnavailableView : shouldShowCycleTimeChart ? /* @__PURE__ */ jsx(
|
|
77648
77858
|
CycleTimeOverTimeChart,
|
|
@@ -87006,4 +87216,4 @@ var RecentFlowSnapshotGrid = ({
|
|
|
87006
87216
|
);
|
|
87007
87217
|
};
|
|
87008
87218
|
|
|
87009
|
-
export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLineLeaderboardRows, buildLineSkuBreakdown, buildShiftGroupsKey, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
|
|
87219
|
+
export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPI_SIGNAL_LABELS, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, aggregateLineSignals, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLineLeaderboardRows, buildLineSkuBreakdown, buildShiftGroupsKey, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getKpiSignalLabel, getKpiSignalStatus, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
|