-
-
Asset usage
-
{throughputData.assetUsage}%
-
-
+
+ {/* Dynamic Progress Bar */}
+
+ {[...Array(totalBars)].map((_, i) => (
+
+ {i < barsToFill ? (
+
+ ) : i === barsToFill ? (
+
+ ) : null}
+
+ ))}
-
-
Energy Consumption
-
-
-
-
{energyConsumption.energyConsumed}
-
{energyConsumption.unit}
-
-
+
+
+ Avg. Process Time
+ {avgProcessTime}
-
-
Shift Utilization
-
-
{throughputData.assetUsage}%
-
-
- {/* Dynamically create progress bars based on shiftUtilization array */}
- {shiftUtilization.map((shift, index) => (
-
- ))}
-
-
-
- {/* Dynamically create shift indicators with random colors */}
- {shiftUtilization.map((shift, index) => (
-
-
-
-
- ))}
-
-
+
+ Machine Utilization
+ {machineUtilization}
@@ -175,4 +65,4 @@ const ThroughputSummary = () => {
);
};
-export default ThroughputSummary;
+export default ProductionCapacity;
diff --git a/app/src/components/ui/log/logger.ts b/app/src/components/ui/log/logger.ts
deleted file mode 100644
index 1781e26..0000000
--- a/app/src/components/ui/log/logger.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-type LogType = 'log' | 'info' | 'warning' | 'error';
-
-interface LogEntry {
- type: LogType;
- message: string;
- timestamp: Date;
- context?: string;
-}
-
-class Logger {
- private static instance: Logger;
- private logs: LogEntry[] = [];
- private subscribers: Array<(log: LogEntry) => void> = [];
-
- private constructor() {}
-
- public static getInstance(): Logger {
- if (!Logger.instance) {
- Logger.instance = new Logger();
- }
- return Logger.instance;
- }
-
- private notifySubscribers(log: LogEntry) {
- this.subscribers.forEach(callback => callback(log));
- }
-
- private addLog(type: LogType, message: string, context?: string) {
- const log: LogEntry = { type, message, timestamp: new Date(), context };
- this.logs.push(log);
- this.notifySubscribers(log);
-
- if (process.env.NODE_ENV === 'development') {
- const logMessage = context ? `[${context}] ${message}` : message;
- console[type === 'warning' ? 'warn' : type](logMessage);
- }
- }
-
- public log(message: string, context?: string) {
- this.addLog('log', message, context);
- }
-
- public info(message: string, context?: string) {
- this.addLog('info', message, context);
- }
-
- public warning(message: string, context?: string) {
- this.addLog('warning', message, context);
- }
-
- public error(message: string, context?: string) {
- this.addLog('error', message, context);
- }
-
- public getLogs(): LogEntry[] {
- return [...this.logs];
- }
-
- public clear() {
- this.logs = [];
- }
-
- public subscribe(callback: (log: LogEntry) => void) {
- this.subscribers.push(callback);
- return () => {
- this.subscribers = this.subscribers.filter(sub => sub !== callback);
- };
- }
-}
-
-export const logger = Logger.getInstance();
diff --git a/app/src/components/ui/simulation/simulationPlayer.tsx b/app/src/components/ui/simulation/simulationPlayer.tsx
index e569250..a41447a 100644
--- a/app/src/components/ui/simulation/simulationPlayer.tsx
+++ b/app/src/components/ui/simulation/simulationPlayer.tsx
@@ -19,8 +19,8 @@ import {
} from "../../icons/ExportCommonIcons";
import { getAvatarColor } from "../../../modules/collaboration/functions/getAvatarColor";
import { useSubModuleStore } from "../../../store/useModuleStore";
-import ProductionCapacity from "../analysis/ProductionCapacity";
-import ThroughputSummary from "../analysis/ThroughputSummary";
+import ProductionCapacity from "../analysis/ThroughputSummary";
+import ThroughputSummary from "../analysis/ProductionCapacity";
import ROISummary from "../analysis/ROISummary";
const SimulationPlayer: React.FC = () => {
diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx
index d367493..eb0d341 100644
--- a/app/src/modules/builder/builder.tsx
+++ b/app/src/modules/builder/builder.tsx
@@ -56,7 +56,7 @@ import ZoneGroup from "./groups/zoneGroup";
import useModuleStore from "../../store/useModuleStore";
import MeasurementTool from "../scene/tools/measurementTool";
import NavMesh from "../simulation/vehicle/navMesh/navMesh";
-import ProductionCapacity from "../../components/ui/analysis/ProductionCapacity";
+import ProductionCapacity from "../../components/ui/analysis/ThroughputSummary";
export default function Builder() {
const state = useThree
(); // Importing the state from the useThree hook, which contains the scene, camera, and other Three.js elements.
diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx
index 83e4497..c314a38 100644
--- a/app/src/pages/Project.tsx
+++ b/app/src/pages/Project.tsx
@@ -86,7 +86,7 @@ const Project: React.FC = () => {
{!selectedUser && (
<>
- {loadingProgress > 0 && }
+ {/* {loadingProgress > 0 && } */}
{!isPlaying && (
<>
{toggleThreeD && }
@@ -122,7 +122,7 @@ const Project: React.FC = () => {
}
onDragOver={(event) => event.preventDefault()}
>
-
+ {/* */}
{selectedUser &&
}
{isLogListVisible && (
diff --git a/app/src/styles/components/analysis/analysis.scss b/app/src/styles/components/analysis/analysis.scss
index 00a9c32..e71a25f 100644
--- a/app/src/styles/components/analysis/analysis.scss
+++ b/app/src/styles/components/analysis/analysis.scss
@@ -16,6 +16,7 @@
flex-direction: column;
gap: 12px;
}
+
.analysis-card {
min-width: 333px;
background: var(--background-color);
@@ -42,9 +43,14 @@
align-items: center;
.main-header {
- line-height: 20px;
+ color: var(--text-color);
font-size: var(--font-size-regular);
}
+
+ .sub-header {
+ color: var(--input-text-color);
+ font-size: var(--font-size-tiny);
+ }
}
.process-container {
@@ -114,6 +120,7 @@
}
}
}
+
.throughoutSummary-wrapper {
.process-container {
display: flex;
@@ -166,7 +173,7 @@
padding: 8px;
display: flex;
flex-direction: column;
- gap: 6px;
+ gap: 16px;
&:first-child {
width: 85%;
@@ -182,6 +189,21 @@
align-items: center;
justify-content: end;
gap: 6px;
+
+ .progress-indicator {
+ padding-top: 10px;
+ }
+
+ .value-wrapper {
+ .value {
+ font-size: var(--font-size-xlarge);
+ }
+
+ .unit {
+ font-size: var(--font-size-small);
+
+ }
+ }
}
}
@@ -266,4 +288,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/styles/pages/realTimeViz.scss b/app/src/styles/pages/realTimeViz.scss
index abc626a..e0b31c6 100644
--- a/app/src/styles/pages/realTimeViz.scss
+++ b/app/src/styles/pages/realTimeViz.scss
@@ -67,8 +67,8 @@
min-width: 150px;
z-index: 3;
transform: translate(-50%, -10%);
- transition: transform 0.5s linear;
pointer-events: all;
+ transition: all 0.3s linear;
&::-webkit-scrollbar {
display: none;
@@ -243,6 +243,7 @@
&:hover {
background: var(--highlight-accent-color);
width: 100%;
+
.label {
color: var(--accent-color);
}
@@ -619,6 +620,7 @@
.label {
color: var(--accent-color);
}
+
background: var(--highlight-accent-color);
width: 100%;
@@ -933,4 +935,4 @@
opacity: 0;
transform: scaleY(0);
}
-}
+}
\ No newline at end of file