diff --git a/app/src/components/SimulationDashboard/AnalyzerManager.tsx b/app/src/components/SimulationDashboard/AnalyzerManager.tsx index ef3ec35..2ebbab4 100644 --- a/app/src/components/SimulationDashboard/AnalyzerManager.tsx +++ b/app/src/components/SimulationDashboard/AnalyzerManager.tsx @@ -109,14 +109,14 @@ const AnalyzerManager: React.FC = () => { const assetAnalysis = getAssetAnalysis(assetId); if (assetAnalysis) { - let newGraphData: any[] = []; + let newGraphData: GraphDataPoint[] = []; if (element.graphType === "line") { - const history = lineChartHistory.current.get(element.elementUuid) || []; + const history: GraphDataPoint[] = lineChartHistory.current.get(element.elementUuid) || []; const now = new Date(); const timeStr = now.toLocaleTimeString([], { hour12: false }); - const dataPoint: any = { name: timeStr }; + const dataPoint: GraphDataPoint = { name: timeStr, value: 0 }; dataKeys.forEach((key) => { const val = resolvePath(assetAnalysis, key); dataPoint[key] = typeof val === "number" ? val : 0; diff --git a/app/src/components/SimulationDashboard/components/element/ElementContent.tsx b/app/src/components/SimulationDashboard/components/element/ElementContent.tsx index f6fe995..9371858 100644 --- a/app/src/components/SimulationDashboard/components/element/ElementContent.tsx +++ b/app/src/components/SimulationDashboard/components/element/ElementContent.tsx @@ -34,14 +34,33 @@ const ElementContent: React.FC = ({ element, resolvedData } const chartData = isPlaying || !resolvedData.graphData ? resolvedData.graphData ?? [] - : [ - { name: "Jan", value: 400 }, - { name: "Feb", value: 300 }, - { name: "Mar", value: 600 }, - { name: "Apr", value: 800 }, - { name: "May", value: 500 }, - { name: "Jun", value: 900 }, - ]; + : (() => { + const defaultData = [ + { name: "Jan", value: 400 }, + { name: "Feb", value: 300 }, + { name: "Mar", value: 600 }, + { name: "Apr", value: 800 }, + { name: "May", value: 500 }, + { name: "Jun", value: 900 }, + ]; + + if (element.dataBinding?.dataType === "single-machine" && element.dataBinding.dataValue) { + const keys = Array.isArray(element.dataBinding.dataValue) ? element.dataBinding.dataValue : [element.dataBinding.dataValue as string]; + return defaultData.map((item, i) => { + const newItem: any = { ...item }; + keys.forEach((key, k) => { + // Create distinct variations for each line so they don't just look like parallel copies + // Even keys follow the trend, Odd keys invert it. + const baseValue = k % 2 === 0 ? item.value : 1200 - item.value; + // Add some index-based "noise" and vertical offset + const variation = Math.sin(i + k) * 100; + newItem[key] = baseValue + variation + k * 50; + }); + return newItem; + }); + } + return defaultData; + })(); const tooltipStyle = { contentStyle: {