feat: add AnalyzerManager to process simulation analysis data and ElementContent to render dashboard elements.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -34,14 +34,33 @@ const ElementContent: React.FC<ElementContentProps> = ({ 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: {
|
||||
|
||||
Reference in New Issue
Block a user