From 4ee1709386bec9152eba2189557e075937cb1d4f Mon Sep 17 00:00:00 2001 From: Sina Blattmann Date: Thu, 29 Jun 2023 08:40:28 +0200 Subject: [PATCH] [WIP] fix graph bugs --- csharp/App/Backend/db.sqlite | Bin 540672 -> 540672 bytes csharp/InnovEnergy.props | 10 +- typescript/Frontend/package-lock.json | 36 - typescript/Frontend/package.json | 1 - .../components/Context/LogContextProvider.tsx | 35 +- .../Installations/Log/CheckboxTree.tsx | 43 +- .../Installations/Log/ScalarGraph.tsx | 647 +++--------------- .../Installations/Log/TopologyBox.tsx | 128 ++-- .../Installations/Log/TopologyFlow.tsx | 1 - .../Frontend/src/dataCache/dataCache.ts | 1 - typescript/Frontend/src/util/graph.util.tsx | 21 +- 11 files changed, 196 insertions(+), 727 deletions(-) diff --git a/csharp/App/Backend/db.sqlite b/csharp/App/Backend/db.sqlite index 7e80aca6324c4a2ab117aa36176067f20102d41f..08f80b97b86b7c8ad38aeee1b3c1dffadbc6d35e 100644 GIT binary patch delta 1043 zcmajdUr19?90&08XKr&F=SPxTg_R4T9?C!D=FA=}SHt-y4HfOB+@IWaPUrGp5h_&c zKUoO32x9cmLq28Uttherr;r#~J!n>t8CVe*Sr$g;Z28hl7w-9R?)me*zjJSQx4FC9 z+_Q?@ik?r|&f6RNd>Pnub0ou>kBj<)b6e~#n=8kbX|2tz&CRvBvfQ<9cXpO1XLFvX zWoOaBgRW4pqM^y@ci5bc#z0eMxuwGHmjabi!REb|!nS59tK3_6#M-A=`|y+H^f$gF zCk)~X_@i=h5O2fyr9ANvm*6CM!y~){Ps@#u@FmL}>u2ZKAm~BGUcneVWOvvs+|^xU zeJsr0!Ib_3q{DhxfMNCnQeh=~0ZGc%$M~MUD}iDxb$|t_-Be96anofnNU6Y1o(m*= zI?hRf4=Hi_5kkkj)F|+f&jP-H)9E8m1RnB0kVozd_LD<`GQI&PiMTn&PB$7AT^|~b zqj1{gvtxJ@6DfRq0pDJBj$zw&9rNQebQA$%b8sE@LN%0w6Ov&F_Ok_e3lne~3Sb5< zLpDE*2N2-JeuYuE0lmOL!#*ncPw^00!O!IrT!o`>7&by4q`^3xffQ(wQ^)ZYJp_;j zMa}F0(kdh4_^Pf87EpbVt_A*j!4Ub*>5#}bK_i(Ggovo1D@1M!{N$7XjgUahVNw}0 zO0tAOvhMHW6~ZQ>7x)S0h^V>=qRaacNTe?eATVlf8dhKM}PxYGVnsj4)enY5qM`%~8tGHozYwdwOQc>HsI#)2m>v46I zwm8~$^7&u(9Bu8@@pu9Q2nJv>cJr1$TDp|A`Ba9gG+KiH_XZ|0>3^}tc-}mMUofv2 z%IGW@RWuQsMDx$!K0c^ZQ6vTtHim=9OfWM_DW%vABUW0Z4D3Ms8v`wEZLL57QHmcx zO}aU=j4j5eOU4=#{epf_BQHyg!@q!kB2l+QJ4NFMqsx|T#>B<2>^u!$_Qm&-_j~uA zn|sbZ?+pwT3=9+u+W6_AZ}U9#Jlzs22J6|0Vpk>HIg|YRlPZV3EaG&y!=+KT(;kXM zf~9UpiPP!+G}^ptb8n=*$K&@pnrZ@p<~4ye4UUe!(E6HGSGl{o+m+h6IbI!e$G!Vq z!>Vf-Zhk0U!}m(gD0~NP>XA`c1+YwyToo6v zkUBOkPs#K0IIhDFA} zj8!DyIZ>8?8^p5hpb|wp;71~#U56fW-W)atTj^ys>0?@bUrbMdIz7b=0VCif!%0l4 z7P~lvTK8LKF{V!x`-@}s$?l%*(LiHKUud^)NA23shK{wVU@Fr1nah~1DD=+v*_T=M zb=rDQLtT|S;j{<0Rr{JeOV)LH+sbRJ%1diDu1bZ&yE}~8&e-0CwJS`N05Hoiiz9Sr zHEC+*QWsPT1=rKi|Go-x7l}G}Us~(Cd~X=O!M{{XK)gWhw=w1F#4Pwnet6.0 true false - $([System.Text.RegularExpressions.Regex]::Match($(MSBuildProjectExtensionsPath), "[/\\]csharp[/\\].*[/\\]obj").ToString().Replace("/",".").Replace("\\",".").Replace(".csharp", $(Company)).Replace(".obj", "")) + Please.reload.the.project.Rider.is.stupid $(Company) Team - - - + + $(Company).$(MSBuildProjectDirectory.Replace($(SolutionDir), "").Replace("/",".").Replace("\",".")) + + + \ No newline at end of file diff --git a/typescript/Frontend/package-lock.json b/typescript/Frontend/package-lock.json index d89f522fe..d36bf3040 100644 --- a/typescript/Frontend/package-lock.json +++ b/typescript/Frontend/package-lock.json @@ -42,7 +42,6 @@ "react-plotly.js": "^2.6.0", "react-router-dom": "^6.8.0", "react-scripts": "5.0.1", - "react-window": "^1.8.9", "reactflow": "^11.5.6", "rxjs": "^7.8.0", "sass": "^1.58.3", @@ -17199,11 +17198,6 @@ "node": ">= 4.0.0" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -20585,22 +20579,6 @@ "react-dom": ">=16.13" } }, - "node_modules/react-window": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.9.tgz", - "integrity": "sha512-+Eqx/fj1Aa5WnhRfj9dJg4VYATGwIUP2ItwItiJ6zboKWA6EX3lYDAXfGF2hyNqplEprhbtjbipiADEcwQ823Q==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - }, - "engines": { - "node": ">8.0.0" - }, - "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/reactflow": { "version": "11.5.6", "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.5.6.tgz", @@ -38023,11 +38001,6 @@ "fs-monkey": "^1.0.3" } }, - "memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -40347,15 +40320,6 @@ "debounce": "^1.2.1" } }, - "react-window": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.9.tgz", - "integrity": "sha512-+Eqx/fj1Aa5WnhRfj9dJg4VYATGwIUP2ItwItiJ6zboKWA6EX3lYDAXfGF2hyNqplEprhbtjbipiADEcwQ823Q==", - "requires": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - } - }, "reactflow": { "version": "11.5.6", "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.5.6.tgz", diff --git a/typescript/Frontend/package.json b/typescript/Frontend/package.json index defbad19b..900de2c7a 100644 --- a/typescript/Frontend/package.json +++ b/typescript/Frontend/package.json @@ -37,7 +37,6 @@ "react-plotly.js": "^2.6.0", "react-router-dom": "^6.8.0", "react-scripts": "5.0.1", - "react-window": "^1.8.9", "reactflow": "^11.5.6", "rxjs": "^7.8.0", "sass": "^1.58.3", diff --git a/typescript/Frontend/src/components/Context/LogContextProvider.tsx b/typescript/Frontend/src/components/Context/LogContextProvider.tsx index 349ed883a..6b09c5672 100644 --- a/typescript/Frontend/src/components/Context/LogContextProvider.tsx +++ b/typescript/Frontend/src/components/Context/LogContextProvider.tsx @@ -1,33 +1,48 @@ -import { createContext, ReactNode, SetStateAction, useState } from "react"; -import { TreeElement, ToggleElement } from "../Installations/Log/CheckboxTree"; +import { createContext, ReactNode, useState } from "react"; +import { TreeElement } from "../Installations/Log/CheckboxTree"; import React from "react"; interface LogContextProviderProps { toggles: TreeElement[] | null; setToggles: (value: TreeElement[]) => void; - checkedToggles: ToggleElement | null; - setCheckedToggles: React.Dispatch>; + checkedToggles: string[]; + setChecked: (newValue: string) => void; + removeChecked: (value: string) => void; } export const LogContext = createContext({ toggles: [], setToggles: () => {}, - checkedToggles: {}, - setCheckedToggles: () => {}, + checkedToggles: [], + setChecked: () => {}, + removeChecked: () => {}, }); const LogContextProvider = ({ children }: { children: ReactNode }) => { const [toggles, setToggles] = useState(null); - const [checkedToggles, setCheckedToggles] = useState( - null - ); + const [checkedToggles, setCheckedToggles] = useState([]); + + const setChecked = (newValue: string) => { + if (checkedToggles.length === 5) { + const removedChecked = checkedToggles.slice(1); + setCheckedToggles([...removedChecked, newValue]); + } else { + setCheckedToggles([...checkedToggles, newValue]); + } + }; + + const removeChecked = (value: string) => { + setCheckedToggles(checkedToggles.filter((toggle) => toggle !== value)); + }; + return ( {children} diff --git a/typescript/Frontend/src/components/Installations/Log/CheckboxTree.tsx b/typescript/Frontend/src/components/Installations/Log/CheckboxTree.tsx index f9d658042..ca46c11ed 100644 --- a/typescript/Frontend/src/components/Installations/Log/CheckboxTree.tsx +++ b/typescript/Frontend/src/components/Installations/Log/CheckboxTree.tsx @@ -20,7 +20,8 @@ export interface TreeElement { } const CheckboxTree = () => { - const { toggles, setCheckedToggles, checkedToggles } = useContext(LogContext); + const { toggles, setChecked, checkedToggles, removeChecked } = + useContext(LogContext); const routeMatch = useRouteMatch([ routes.installations + routes.list + routes.log + ":id", ]); @@ -29,29 +30,17 @@ const CheckboxTree = () => { return element.children.length > 0 ? renderTree(element.children) : null; }; - const handleCheckChildren = (children: TreeElement[], checked?: boolean) => { - if (children.length > 0) { - children.forEach((child) => { - setCheckedToggles((prevState) => { - return { - ...prevState, - [child.id]: !checked, - }; - }); - if (child.children.length > 0) { - handleCheckChildren(child.children, checked); - } - }); - } - }; - const handleClick = ( event: React.MouseEvent, element: TreeElement, - checked?: boolean + checked?: string ) => { - event.stopPropagation(); - handleCheckChildren([element], checked); + if (checked) { + removeChecked(element.id); + } else { + event.stopPropagation(); + setChecked(element.id); + } }; const handleExpandClick = ( @@ -62,7 +51,7 @@ const CheckboxTree = () => { const renderTree = (data: TreeElement[]): ReactNode => { return data.map((element) => { - const checked = checkedToggles?.[element.id]; + const checked = checkedToggles.find((toggle) => element.id === toggle); const splitName = element.name.split("/"); return ( { onClick={handleExpandClick} label={ <> - handleClick(e, element, checked)} - /> + {element.children.length === 0 && ( + handleClick(e, element, checked)} + /> + )} {splitName[splitName.length - 1]} } sx={{ - ".MuiTreeItem-content": { paddingY: "5px" }, + ".MuiTreeItem-content": { paddingY: "5px", minHeight: "52px" }, }} > {getNodes(element)} diff --git a/typescript/Frontend/src/components/Installations/Log/ScalarGraph.tsx b/typescript/Frontend/src/components/Installations/Log/ScalarGraph.tsx index f62a55487..334688921 100644 --- a/typescript/Frontend/src/components/Installations/Log/ScalarGraph.tsx +++ b/typescript/Frontend/src/components/Installations/Log/ScalarGraph.tsx @@ -3,7 +3,6 @@ import { DataRecord, RecordSeries } from "../../../dataCache/data"; import { GraphData, createTimes, - flattenToggles, getTreeElements, isNumeric, parseCsv, @@ -11,21 +10,13 @@ import { transformToBarGraphData, } from "../../../util/graph.util"; import { TimeRange, TimeSpan, UnixTime } from "../../../dataCache/time"; -import { - memo, - useCallback, - useContext, - useEffect, - useMemo, - useState, -} from "react"; +import { useCallback, useContext, useEffect, useMemo, useState } from "react"; import { BehaviorSubject, startWith, throttleTime, withLatestFrom } from "rxjs"; import { S3Access } from "../../../dataCache/S3/S3Access"; import DataCache, { FetchResult } from "../../../dataCache/dataCache"; import { LogContext } from "../../Context/LogContextProvider"; import { isDefined } from "../../../dataCache/utils/maybe"; import { Data, Layout, PlotRelayoutEvent } from "plotly.js"; -import { VariableSizeList as List, areEqual } from "react-window"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import { FormattedMessage } from "react-intl"; import DateRangePicker from "./DateRangePicker"; @@ -34,462 +25,6 @@ import { Alert } from "@mui/material"; const NUMBER_OF_NODES = 100; -export const testData = `/AcDc/SystemControl/Alarms;; -/AcDc/SystemControl/CommunicationTimeout;00:00:10; -/AcDc/SystemControl/SystemConfig;AcDcAndDcDc; -/AcDc/SystemControl/ResetAlarmsAndWarnings;False; -/AcDc/SystemControl/TargetSlave;0; -/AcDc/SystemControl/UseSlaveIdForAddressing;False; -/AcDc/SystemControl/ReferenceFrame;Producer; -/AcDc/SystemControl/SlaveErrorHandling;Relaxed; -/AcDc/SystemControl/SubSlaveErrorHandling;Strict; -/AcDc/SystemControl/PowerSetPointActivation;Immediate; -/AcDc/SystemControl/PowerSetPointTrigger;Wait; -/AcDc/SystemControl/DeviceState;Operation; -/AcDc/SystemControl/NumberOfConnectedSlaves;2; -/AcDc/SystemControl/NumberOfConnectedSubSlaves;0; -/AcDc/SystemControl/Warnings;; -/AcDc/Devices/1/Status/Ac/L1/Voltage;0;V -/AcDc/Devices/1/Status/Ac/L1/Current;0;A -/AcDc/Devices/1/Status/Ac/L1/Power/Apparent;0;VA -/AcDc/Devices/1/Status/Ac/L1/Power/Active;0;W -/AcDc/Devices/1/Status/Ac/L1/Power/Reactive;0;var -/AcDc/Devices/1/Status/Ac/L1/Power/Phi;0;rad -/AcDc/Devices/1/Status/Ac/L1/Power/CosPhi;1; -/AcDc/Devices/1/Status/Ac/L2/Voltage;0;V -/AcDc/Devices/1/Status/Ac/L2/Current;0;A -/AcDc/Devices/1/Status/Ac/L2/Power/Apparent;0;VA -/AcDc/Devices/1/Status/Ac/L2/Power/Active;0;W -/AcDc/Devices/1/Status/Ac/L2/Power/Reactive;0;var -/AcDc/Devices/1/Status/Ac/L2/Power/Phi;0;rad -/AcDc/Devices/1/Status/Ac/L2/Power/CosPhi;1; -/AcDc/Devices/1/Status/Ac/L3/Voltage;0;V -/AcDc/Devices/1/Status/Ac/L3/Current;0;A -/AcDc/Devices/1/Status/Ac/L3/Power/Apparent;0;VA -/AcDc/Devices/1/Status/Ac/L3/Power/Active;0;W -/AcDc/Devices/1/Status/Ac/L3/Power/Reactive;0;var -/AcDc/Devices/1/Status/Ac/L3/Power/Phi;0;rad -/AcDc/Devices/1/Status/Ac/L3/Power/CosPhi;1; -/AcDc/Devices/1/Status/Ac/Power/Apparent;0;VA -/AcDc/Devices/1/Status/Ac/Power/Active;0;W -/AcDc/Devices/1/Status/Ac/Power/Reactive;0;var -/AcDc/Devices/1/Status/Ac/Power/Phi;0;rad -/AcDc/Devices/1/Status/Ac/Power/CosPhi;1; -/AcDc/Devices/1/Status/Ac/Frequency;0;Hz -/AcDc/Devices/1/Status/Dc/Voltage;0;V -/AcDc/Devices/1/Status/Dc/Current;0;A -/AcDc/Devices/1/Status/Dc/Power;0;W -/AcDc/Devices/1/Status/PowerLimitedBy;Nothing; -/AcDc/Devices/1/Status/InverterState/Current;Idle; -/AcDc/Devices/1/Status/InverterState/OnLastAlarm;Idle; -/AcDc/Devices/1/Status/ActiveGridType;GridTied400V50Hz; -/AcDc/Devices/1/Status/Voltage/Intern/DcUpperHalf;0;V -/AcDc/Devices/1/Status/Voltage/Intern/DcLowerHalf;0;V -/AcDc/Devices/1/Status/Voltage/Intern/NToPe;0;V -/AcDc/Devices/1/Status/Voltage/Extern/DcUpperHalf;0;V -/AcDc/Devices/1/Status/Voltage/Extern/DcLowerHalf;0;V -/AcDc/Devices/1/Status/Voltage/Extern/NToPe;0;V -/AcDc/Devices/1/Status/Temperature/InletAir;0;°C -/AcDc/Devices/1/Status/Temperature/IgbtL1;0;°C -/AcDc/Devices/1/Status/Temperature/IgbtL2;0;°C -/AcDc/Devices/1/Status/Temperature/IgbtL3;0;°C -/AcDc/Devices/1/Status/Temperature/IgbtBalancer;0;°C -/AcDc/Devices/1/Status/OverloadCapacity/L1;0;% -/AcDc/Devices/1/Status/OverloadCapacity/L2;0;% -/AcDc/Devices/1/Status/OverloadCapacity/L3;0;% -/AcDc/Devices/1/Status/Nominal/AcFrequency;50;Hz -/AcDc/Devices/1/Status/Nominal/AcVoltage;400;V -/AcDc/Devices/1/Status/Nominal/Power;25000;W -/AcDc/Devices/1/Status/Alarms;; -/AcDc/Devices/1/Status/Warnings;; -/AcDc/Devices/1/Control/Ac/PhaseControl;Symmetric; -/AcDc/Devices/1/Control/Ac/GridType;GridTied400V50Hz; -/AcDc/Devices/1/Control/Ac/IslandMode/FrequencyOffset;0;Hz -/AcDc/Devices/1/Control/Ac/IslandMode/VoltageAdjustmentFactor;100;% -/AcDc/Devices/1/Control/Dc/ReferenceVoltage;750;V -/AcDc/Devices/1/Control/Dc/MinVoltage;730;V -/AcDc/Devices/1/Control/Dc/MaxVoltage;770;V -/AcDc/Devices/1/Control/Dc/PrechargeConfig;PrechargeDcWithSystemCtl; -/AcDc/Devices/1/Control/PowerStageEnable;True; -/AcDc/Devices/1/Control/ResetAlarmsAndWarnings;False; -/AcDc/Devices/2/Status/Ac/L1/Voltage;0;V -/AcDc/Devices/2/Status/Ac/L1/Current;0;A -/AcDc/Devices/2/Status/Ac/L1/Power/Apparent;0;VA -/AcDc/Devices/2/Status/Ac/L1/Power/Active;0;W -/AcDc/Devices/2/Status/Ac/L1/Power/Reactive;0;var -/AcDc/Devices/2/Status/Ac/L1/Power/Phi;0;rad -/AcDc/Devices/2/Status/Ac/L1/Power/CosPhi;1; -/AcDc/Devices/2/Status/Ac/L2/Voltage;0;V -/AcDc/Devices/2/Status/Ac/L2/Current;0;A -/AcDc/Devices/2/Status/Ac/L2/Power/Apparent;0;VA -/AcDc/Devices/2/Status/Ac/L2/Power/Active;0;W -/AcDc/Devices/2/Status/Ac/L2/Power/Reactive;0;var -/AcDc/Devices/2/Status/Ac/L2/Power/Phi;0;rad -/AcDc/Devices/2/Status/Ac/L2/Power/CosPhi;1; -/AcDc/Devices/2/Status/Ac/L3/Voltage;0;V -/AcDc/Devices/2/Status/Ac/L3/Current;0;A -/AcDc/Devices/2/Status/Ac/L3/Power/Apparent;0;VA -/AcDc/Devices/2/Status/Ac/L3/Power/Active;0;W -/AcDc/Devices/2/Status/Ac/L3/Power/Reactive;0;var -/AcDc/Devices/2/Status/Ac/L3/Power/Phi;0;rad -/AcDc/Devices/2/Status/Ac/L3/Power/CosPhi;1; -/AcDc/Devices/2/Status/Ac/Power/Apparent;0;VA -/AcDc/Devices/2/Status/Ac/Power/Active;0;W -/AcDc/Devices/2/Status/Ac/Power/Reactive;0;var -/AcDc/Devices/2/Status/Ac/Power/Phi;0;rad -/AcDc/Devices/2/Status/Ac/Power/CosPhi;1; -/AcDc/Devices/2/Status/Ac/Frequency;0;Hz -/AcDc/Devices/2/Status/Dc/Voltage;0;V -/AcDc/Devices/2/Status/Dc/Current;0;A -/AcDc/Devices/2/Status/Dc/Power;0;W -/AcDc/Devices/2/Status/PowerLimitedBy;Nothing; -/AcDc/Devices/2/Status/InverterState/Current;Idle; -/AcDc/Devices/2/Status/InverterState/OnLastAlarm;Idle; -/AcDc/Devices/2/Status/ActiveGridType;GridTied400V50Hz; -/AcDc/Devices/2/Status/Voltage/Intern/DcUpperHalf;0;V -/AcDc/Devices/2/Status/Voltage/Intern/DcLowerHalf;0;V -/AcDc/Devices/2/Status/Voltage/Intern/NToPe;0;V -/AcDc/Devices/2/Status/Voltage/Extern/DcUpperHalf;0;V -/AcDc/Devices/2/Status/Voltage/Extern/DcLowerHalf;0;V -/AcDc/Devices/2/Status/Voltage/Extern/NToPe;0;V -/AcDc/Devices/2/Status/Temperature/InletAir;0;°C -/AcDc/Devices/2/Status/Temperature/IgbtL1;0;°C -/AcDc/Devices/2/Status/Temperature/IgbtL2;0;°C -/AcDc/Devices/2/Status/Temperature/IgbtL3;0;°C -/AcDc/Devices/2/Status/Temperature/IgbtBalancer;0;°C -/AcDc/Devices/2/Status/OverloadCapacity/L1;0;% -/AcDc/Devices/2/Status/OverloadCapacity/L2;0;% -/AcDc/Devices/2/Status/OverloadCapacity/L3;0;% -/AcDc/Devices/2/Status/Nominal/AcFrequency;50;Hz -/AcDc/Devices/2/Status/Nominal/AcVoltage;400;V -/AcDc/Devices/2/Status/Nominal/Power;25000;W -/AcDc/Devices/2/Status/Alarms;; -/AcDc/Devices/2/Status/Warnings;; -/AcDc/Devices/2/Control/Ac/PhaseControl;Symmetric; -/AcDc/Devices/2/Control/Ac/GridType;GridTied400V50Hz; -/AcDc/Devices/2/Control/Ac/IslandMode/FrequencyOffset;0;Hz -/AcDc/Devices/2/Control/Ac/IslandMode/VoltageAdjustmentFactor;100;% -/AcDc/Devices/2/Control/Dc/ReferenceVoltage;750;V -/AcDc/Devices/2/Control/Dc/MinVoltage;730;V -/AcDc/Devices/2/Control/Dc/MaxVoltage;770;V -/AcDc/Devices/2/Control/Dc/PrechargeConfig;PrechargeDcWithSystemCtl; -/AcDc/Devices/2/Control/PowerStageEnable;True; -/AcDc/Devices/2/Control/ResetAlarmsAndWarnings;False; -/AcDc/Alarms;; -/AcDc/Warnings;; -/AcDc/Ac/L1/Voltage;0;V -/AcDc/Ac/L1/Current;0;A -/AcDc/Ac/L1/Power/Apparent;0;VA -/AcDc/Ac/L1/Power/Active;0;W -/AcDc/Ac/L1/Power/Reactive;0;var -/AcDc/Ac/L1/Power/Phi;0;rad -/AcDc/Ac/L1/Power/CosPhi;1; -/AcDc/Ac/L2/Voltage;0;V -/AcDc/Ac/L2/Current;0;A -/AcDc/Ac/L2/Power/Apparent;0;VA -/AcDc/Ac/L2/Power/Active;0;W -/AcDc/Ac/L2/Power/Reactive;0;var -/AcDc/Ac/L2/Power/Phi;0;rad -/AcDc/Ac/L2/Power/CosPhi;1; -/AcDc/Ac/L3/Voltage;0;V -/AcDc/Ac/L3/Current;0;A -/AcDc/Ac/L3/Power/Apparent;0;VA -/AcDc/Ac/L3/Power/Active;0;W -/AcDc/Ac/L3/Power/Reactive;0;var -/AcDc/Ac/L3/Power/Phi;0;rad -/AcDc/Ac/L3/Power/CosPhi;1; -/AcDc/Ac/Power/Apparent;0;VA -/AcDc/Ac/Power/Active;0;W -/AcDc/Ac/Power/Reactive;0;var -/AcDc/Ac/Power/Phi;0;rad -/AcDc/Ac/Power/CosPhi;1; -/AcDc/Ac/Frequency;0;Hz -/AcDc/Dc/Voltage;0;V -/AcDc/Dc/Current;0;A -/AcDc/Dc/Power;0;W -/DcDc/Dc/Link/Voltage;0;V -/DcDc/Dc/Link/Current;0;A -/DcDc/Dc/Link/Power;0;W -/DcDc/Dc/Battery/Voltage;0;V -/DcDc/Dc/Battery/Current;0;A -/DcDc/Dc/Battery/Power;0;W -/DcDc/SystemControl/Alarms;; -/DcDc/SystemControl/CommunicationTimeout;00:00:10; -/DcDc/SystemControl/SystemConfig;DcDcOnly; -/DcDc/SystemControl/ResetAlarmsAndWarnings;False; -/DcDc/SystemControl/TargetSlave;0; -/DcDc/SystemControl/UseSlaveIdForAddressing;False; -/DcDc/SystemControl/ReferenceFrame;Producer; -/DcDc/SystemControl/SlaveErrorHandling;Relaxed; -/DcDc/SystemControl/SubSlaveErrorHandling;Strict; -/DcDc/SystemControl/PowerSetPointActivation;Immediate; -/DcDc/SystemControl/PowerSetPointTrigger;Wait; -/DcDc/SystemControl/DeviceState;Operation; -/DcDc/SystemControl/NumberOfConnectedSlaves;2; -/DcDc/SystemControl/NumberOfConnectedSubSlaves;0; -/DcDc/SystemControl/Warnings;; -/DcDc/Devices/1/Status/Dc/Link/Voltage;0;V -/DcDc/Devices/1/Status/Dc/Link/Current;0;A -/DcDc/Devices/1/Status/Dc/Link/Power;0;W -/DcDc/Devices/1/Status/Dc/Battery/Voltage;0;V -/DcDc/Devices/1/Status/Dc/Battery/Current;0;A -/DcDc/Devices/1/Status/Dc/Battery/Power;0;W -/DcDc/Devices/1/Status/OverloadCapacity;0;% -/DcDc/Devices/1/Status/Temperature/InletAir;0;°C -/DcDc/Devices/1/Status/Temperature/HighVoltageModule;0;°C -/DcDc/Devices/1/Status/Temperature/LowVoltageModule;0;°C -/DcDc/Devices/1/Status/PowerLimitedBy;; -/DcDc/Devices/1/Status/Alarms;; -/DcDc/Devices/1/Status/Warnings;; -/DcDc/Devices/1/Control/Vcc/EndPointCurrent;50;A -/DcDc/Devices/1/Control/Vcc/EndPointVoltage;50;V -/DcDc/Devices/1/Control/Vcc/StartPointCurrent;5;A -/DcDc/Devices/1/Control/VoltageLimits/MinBatteryVoltageAlarm;0;V -/DcDc/Devices/1/Control/VoltageLimits/MaxBatteryVoltageAlarm;60;V -/DcDc/Devices/1/Control/VoltageLimits/MinBatteryVoltage;42;V -/DcDc/Devices/1/Control/VoltageLimits/MaxBatteryVoltage;57;V -/DcDc/Devices/1/Control/DroopControl/ReferenceVoltage;750;V -/DcDc/Devices/1/Control/DroopControl/LowerVoltage;55;V -/DcDc/Devices/1/Control/DroopControl/UpperVoltage;55;V -/DcDc/Devices/1/Control/DroopControl/VoltageDeadband;0;V -/DcDc/Devices/1/Control/CurrentControl/CurrentSetpoint;0;A -/DcDc/Devices/1/Control/CurrentControl/MaxCurrentChangePerMs;100;A -/DcDc/Devices/1/Control/MaxDcPower;5;W -/DcDc/Devices/1/Control/ControlMode;VoltageDroop; -/DcDc/Devices/1/Control/ResetAlarmsAndWarnings;False; -/DcDc/Devices/1/Control/PowerStageEnable;True; -/DcDc/Devices/2/Status/Dc/Link/Voltage;0;V -/DcDc/Devices/2/Status/Dc/Link/Current;0;A -/DcDc/Devices/2/Status/Dc/Link/Power;0;W -/DcDc/Devices/2/Status/Dc/Battery/Voltage;0;V -/DcDc/Devices/2/Status/Dc/Battery/Current;0;A -/DcDc/Devices/2/Status/Dc/Battery/Power;0;W -/DcDc/Devices/2/Status/OverloadCapacity;0;% -/DcDc/Devices/2/Status/Temperature/InletAir;0;°C -/DcDc/Devices/2/Status/Temperature/HighVoltageModule;0;°C -/DcDc/Devices/2/Status/Temperature/LowVoltageModule;0;°C -/DcDc/Devices/2/Status/PowerLimitedBy;; -/DcDc/Devices/2/Status/Alarms;; -/DcDc/Devices/2/Status/Warnings;; -/DcDc/Devices/2/Control/Vcc/EndPointCurrent;50;A -/DcDc/Devices/2/Control/Vcc/EndPointVoltage;50;V -/DcDc/Devices/2/Control/Vcc/StartPointCurrent;5;A -/DcDc/Devices/2/Control/VoltageLimits/MinBatteryVoltageAlarm;0;V -/DcDc/Devices/2/Control/VoltageLimits/MaxBatteryVoltageAlarm;60;V -/DcDc/Devices/2/Control/VoltageLimits/MinBatteryVoltage;42;V -/DcDc/Devices/2/Control/VoltageLimits/MaxBatteryVoltage;57;V -/DcDc/Devices/2/Control/DroopControl/ReferenceVoltage;750;V -/DcDc/Devices/2/Control/DroopControl/LowerVoltage;55;V -/DcDc/Devices/2/Control/DroopControl/UpperVoltage;55;V -/DcDc/Devices/2/Control/DroopControl/VoltageDeadband;0;V -/DcDc/Devices/2/Control/CurrentControl/CurrentSetpoint;0;A -/DcDc/Devices/2/Control/CurrentControl/MaxCurrentChangePerMs;100;A -/DcDc/Devices/2/Control/MaxDcPower;5;W -/DcDc/Devices/2/Control/ControlMode;VoltageDroop; -/DcDc/Devices/2/Control/ResetAlarmsAndWarnings;False; -/DcDc/Devices/2/Control/PowerStageEnable;True; -/DcDc/Alarms;; -/DcDc/Warnings;; -/Battery/Dc/Voltage;51.898;V -/Battery/Dc/Current;0.21000000000000002;A -/Battery/Dc/Power;10.898580000000003;W -/Battery/Eoc;True; -/Battery/Warnings;; -/Battery/Alarms;; -/Battery/Soc;99.9;% -/Battery/Devices/1/Dc/Voltage;51.69;V -/Battery/Devices/1/Dc/Current;0.05;A -/Battery/Devices/1/Dc/Power;2.5845000000000002;W -/Battery/Devices/1/Leds/Blue;Off; -/Battery/Devices/1/Leds/Red;Off; -/Battery/Devices/1/Leds/Green;On; -/Battery/Devices/1/Leds/Amber;Off; -/Battery/Devices/1/Temperatures/Heating;True; -/Battery/Devices/1/Temperatures/Board;46.5;°C -/Battery/Devices/1/Temperatures/Cells/Center;249.9;°C -/Battery/Devices/1/Temperatures/Cells/Left;249.5;°C -/Battery/Devices/1/Temperatures/Cells/Right;249.5;°C -/Battery/Devices/1/Temperatures/State;Operation; -/Battery/Devices/1/ConnectedToDcBus;True; -/Battery/Devices/1/Eoc;True; -/Battery/Devices/1/Warnings;; -/Battery/Devices/1/Alarms;; -/Battery/Devices/1/Soc;100;% -/Battery/Devices/1/MaxChargePower;5418.875;W -/Battery/Devices/1/MaxDischargePower;-4668.75;W -/Battery/Devices/2/Dc/Voltage;51.49;V -/Battery/Devices/2/Dc/Current;0.02;A -/Battery/Devices/2/Dc/Power;1.0298;W -/Battery/Devices/2/Leds/Blue;Off; -/Battery/Devices/2/Leds/Red;Off; -/Battery/Devices/2/Leds/Green;On; -/Battery/Devices/2/Leds/Amber;Off; -/Battery/Devices/2/Temperatures/Heating;True; -/Battery/Devices/2/Temperatures/Board;55;°C -/Battery/Devices/2/Temperatures/Cells/Center;251.4;°C -/Battery/Devices/2/Temperatures/Cells/Left;249.8;°C -/Battery/Devices/2/Temperatures/Cells/Right;254.2;°C -/Battery/Devices/2/Temperatures/State;Operation; -/Battery/Devices/2/ConnectedToDcBus;True; -/Battery/Devices/2/Eoc;True; -/Battery/Devices/2/Warnings;; -/Battery/Devices/2/Alarms;; -/Battery/Devices/2/Soc;100;% -/Battery/Devices/2/MaxChargePower;5398.95;W -/Battery/Devices/2/MaxDischargePower;-4648.900000000001;W -/Battery/Devices/3/Dc/Voltage;52.2;V -/Battery/Devices/3/Dc/Current;0.02;A -/Battery/Devices/3/Dc/Power;1.044;W -/Battery/Devices/3/Leds/Blue;Off; -/Battery/Devices/3/Leds/Red;Off; -/Battery/Devices/3/Leds/Green;On; -/Battery/Devices/3/Leds/Amber;Off; -/Battery/Devices/3/Temperatures/Heating;True; -/Battery/Devices/3/Temperatures/Board;47.5;°C -/Battery/Devices/3/Temperatures/Cells/Center;250.5;°C -/Battery/Devices/3/Temperatures/Cells/Left;249.8;°C -/Battery/Devices/3/Temperatures/Cells/Right;251.4;°C -/Battery/Devices/3/Temperatures/State;Operation; -/Battery/Devices/3/ConnectedToDcBus;True; -/Battery/Devices/3/Eoc;True; -/Battery/Devices/3/Warnings;; -/Battery/Devices/3/Alarms;; -/Battery/Devices/3/Soc;100;% -/Battery/Devices/3/MaxChargePower;5469.95;W -/Battery/Devices/3/MaxDischargePower;-4719.900000000001;W -/Battery/Devices/4/Dc/Voltage;51.94;V -/Battery/Devices/4/Dc/Current;0.03;A -/Battery/Devices/4/Dc/Power;1.5581999999999998;W -/Battery/Devices/4/Leds/Blue;Off; -/Battery/Devices/4/Leds/Red;Off; -/Battery/Devices/4/Leds/Green;On; -/Battery/Devices/4/Leds/Amber;Off; -/Battery/Devices/4/Temperatures/Heating;True; -/Battery/Devices/4/Temperatures/Board;47;°C -/Battery/Devices/4/Temperatures/Cells/Center;250;°C -/Battery/Devices/4/Temperatures/Cells/Left;249.8;°C -/Battery/Devices/4/Temperatures/Cells/Right;252.1;°C -/Battery/Devices/4/Temperatures/State;Operation; -/Battery/Devices/4/ConnectedToDcBus;False; -/Battery/Devices/4/Eoc;True; -/Battery/Devices/4/Warnings;; -/Battery/Devices/4/Alarms;; -/Battery/Devices/4/Soc;99.9;% -/Battery/Devices/4/MaxChargePower;5443.925;W -/Battery/Devices/4/MaxDischargePower;-4693.849999999999;W -/Battery/Devices/5/Dc/Voltage;52.17;V -/Battery/Devices/5/Dc/Current;0.09;A -/Battery/Devices/5/Dc/Power;4.6953;W -/Battery/Devices/5/Leds/Blue;Off; -/Battery/Devices/5/Leds/Red;Off; -/Battery/Devices/5/Leds/Green;On; -/Battery/Devices/5/Leds/Amber;Off; -/Battery/Devices/5/Temperatures/Heating;True; -/Battery/Devices/5/Temperatures/Board;48.5;°C -/Battery/Devices/5/Temperatures/Cells/Center;250.6;°C -/Battery/Devices/5/Temperatures/Cells/Left;249.8;°C -/Battery/Devices/5/Temperatures/Cells/Right;250.8;°C -/Battery/Devices/5/Temperatures/State;Operation; -/Battery/Devices/5/ConnectedToDcBus;True; -/Battery/Devices/5/Eoc;True; -/Battery/Devices/5/Warnings;; -/Battery/Devices/5/Alarms;; -/Battery/Devices/5/Soc;100;% -/Battery/Devices/5/MaxChargePower;5466.775;W -/Battery/Devices/5/MaxDischargePower;-4716.55;W -/GridMeter/Ac/L1/Voltage;243;V -/GridMeter/Ac/L1/Current;-12.360750198364258;A -/GridMeter/Ac/L1/Power/Apparent;3009.25;VA -/GridMeter/Ac/L1/Power/Active;-2969;W -/GridMeter/Ac/L1/Power/Reactive;502;var -/GridMeter/Ac/L1/Power/Phi;2.974096306323614;rad -/GridMeter/Ac/L1/Power/CosPhi;-0.9860052513602484; -/GridMeter/Ac/L2/Voltage;243.60000610351562;V -/GridMeter/Ac/L2/Current;-12.548500061035156;A -/GridMeter/Ac/L2/Power/Apparent;3043;VA -/GridMeter/Ac/L2/Power/Active;-3033;W -/GridMeter/Ac/L2/Power/Reactive;351;var -/GridMeter/Ac/L2/Power/Phi;3.026378172298827;rad -/GridMeter/Ac/L2/Power/CosPhi;-0.9933701504473591; -/GridMeter/Ac/L3/Voltage;244.39999389648438;V -/GridMeter/Ac/L3/Current;-13.57349967956543;A -/GridMeter/Ac/L3/Power/Apparent;3317;VA -/GridMeter/Ac/L3/Power/Active;-3313;W -/GridMeter/Ac/L3/Power/Reactive;-73.25;var -/GridMeter/Ac/L3/Power/Phi;-3.1194863851016974;rad -/GridMeter/Ac/L3/Power/CosPhi;-0.9997556663972327; -/GridMeter/Ac/Power/Apparent;9347.579101697936;VA -/GridMeter/Ac/Power/Active;-9315;W -/GridMeter/Ac/Power/Reactive;779.75;var -/GridMeter/Ac/Power/Phi;3.058078286561564;rad -/GridMeter/Ac/Power/CosPhi;-0.9965147016844159; -/GridMeter/Ac/Frequency;50;Hz -/CriticalLoad/Ac/L1/Voltage;244;V -/CriticalLoad/Ac/L1/Current;0;A -/CriticalLoad/Ac/L1/Power/Apparent;0;VA -/CriticalLoad/Ac/L1/Power/Active;0;W -/CriticalLoad/Ac/L1/Power/Reactive;0;var -/CriticalLoad/Ac/L1/Power/Phi;0;rad -/CriticalLoad/Ac/L1/Power/CosPhi;1; -/CriticalLoad/Ac/L2/Voltage;243;V -/CriticalLoad/Ac/L2/Current;0;A -/CriticalLoad/Ac/L2/Power/Apparent;0;VA -/CriticalLoad/Ac/L2/Power/Active;0;W -/CriticalLoad/Ac/L2/Power/Reactive;0;var -/CriticalLoad/Ac/L2/Power/Phi;0;rad -/CriticalLoad/Ac/L2/Power/CosPhi;1; -/CriticalLoad/Ac/L3/Voltage;245.6999969482422;V -/CriticalLoad/Ac/L3/Current;0;A -/CriticalLoad/Ac/L3/Power/Apparent;0;VA -/CriticalLoad/Ac/L3/Power/Active;0;W -/CriticalLoad/Ac/L3/Power/Reactive;0;var -/CriticalLoad/Ac/L3/Power/Phi;0;rad -/CriticalLoad/Ac/L3/Power/CosPhi;1; -/CriticalLoad/Ac/Power/Apparent;0;VA -/CriticalLoad/Ac/Power/Active;0;W -/CriticalLoad/Ac/Power/Reactive;0;var -/CriticalLoad/Ac/Power/Phi;0;rad -/CriticalLoad/Ac/Power/CosPhi;1; -/CriticalLoad/Ac/Frequency;50;Hz -/Relays/K1AcInIsConnectedToGrid;True; -/Relays/K2AcInIsConnectedToAcOut;True; -/Relays/K3Inverter1IsConnectedToAcOut;True; -/Relays/K3Inverter2IsConnectedToAcOut;True; -/Relays/K3Inverter3IsConnectedToAcOut;True; -/Relays/K3Inverter4IsConnectedToAcOut;True; -/Relays/FiWarning;False; -/Relays/FiError;False; -/Relays/K2ConnectAcInToAcOut;True; -/Relays/K3InvertersAreConnectedToAcOut;True; -/Mppt/Dc/Voltage;772.454;V -/Mppt/Dc/Current;10.655000000000001;A -/Mppt/Dc/Power;8230.497370000001;W -/Mppt/Strings/1/Voltage;690.09;V -/Mppt/Strings/1/Current;3.221;A -/Mppt/Strings/1/Power;2222.7798900000003;W -/Mppt/Strings/2/Voltage;599.549;V -/Mppt/Strings/2/Current;3.23;A -/Mppt/Strings/2/Power;1936.54327;W -/Mppt/Strings/3/Voltage;695.46;V -/Mppt/Strings/3/Current;3.371;A -/Mppt/Strings/3/Power;2344.39566;W -/Mppt/Strings/4/Voltage;623.849;V -/Mppt/Strings/4/Current;2.868;A -/Mppt/Strings/4/Power;1789.198932;W -/Config/MinSoc;20; -/Config/LastEoc;0; -/Config/PConstant;0.5; -/Config/ForceChargePower;1000000; -/Config/ForceDischargePower;-1000000; -/Config/MaxInverterPower;32000; -/Config/GridSetPoint;0; -/Config/SelfDischargePower;200; -/Config/HoldSocZone;1; -/Config/ControllerPConstant;0.5; -/SystemState/Message;Panic: Unknown State!; -/SystemState/Id;100; -/LoadOnDc/Power;100;`; - const s3Access = new S3Access( "saliomameiringen", "sos-ch-dk-2", @@ -510,7 +45,6 @@ export const fetchData = ( return Promise.resolve(FetchResult.notAvailable); } else if (r.status === 200) { const text = await r.text(); - console.log("csv", parseCsv(text)); return parseCsv(text); } else { console.error("unexpected status code"); @@ -533,11 +67,9 @@ const ScalarGraph = () => { timeRange[0].toDate(), timeRange[timeRange.length - 1].toDate(), ]); - const [uiRevision, setUiRevision] = useState(Math.random()); const [plotTitles, setPlotTitles] = useState([]); - const { toggles, setToggles, setCheckedToggles, checkedToggles } = - useContext(LogContext); + const { toggles, setToggles, checkedToggles } = useContext(LogContext); const times$ = useMemo(() => new BehaviorSubject(timeRange), []); @@ -556,7 +88,6 @@ const ScalarGraph = () => { if (toggles === null && toggleValues && toggleValues.value) { const treeElements = getTreeElements(toggleValues.value); setToggles(treeElements); - setCheckedToggles(flattenToggles(treeElements)); } }); return () => subscription.unsubscribe(); @@ -628,113 +159,95 @@ const ScalarGraph = () => { const range0 = new Date(xaxisRange0); const range1 = new Date(xaxisRange1); setRange([range0, range1]); - setUiRevision(Math.random()); getCacheSeries(range0, range1); } }, [getCacheSeries] ); - const Row = memo((props: any) => { - const { data, index, style } = props; - const visibleGraphs = Object.keys(data).filter((path) => { - return checkedToggles ? checkedToggles[path] : false; - }); - if (data[visibleGraphs[index]]) { - const isScalar = isNumeric(data[visibleGraphs[index]].y[0]); - const graphData = isScalar - ? [ - { - ...data[visibleGraphs[index]], - type: "scatter", - mode: "lines+markers", - fill: "tozeroy", - }, - ] - : transformToBarGraphData(data[visibleGraphs[index]]); - const barGraphLayout: Partial = !isScalar - ? { - bargap: 0, - barmode: "stack", - barnorm: "percent", + const renderGraphs = () => { + if (checkedToggles.length > 0) { + const coordinateTimeSeries = transformToGraphData(timeSeries); + const visibleGraphs = Object.keys(coordinateTimeSeries).filter((path) => { + console.log('checkedToggles',coordinateTimeSeries, checkedToggles) + return checkedToggles.find((toggle) => toggle === path) } - : {}; - return ( -
- -
); + console.log('visibleGraphs', visibleGraphs) + if (visibleGraphs.length > 0) { + return ( +
+ + + + {visibleGraphs.map((path) => { + const isScalar = isNumeric(coordinateTimeSeries[path].y[0]); + const data = isScalar + ? [ + { + ...coordinateTimeSeries[path], + type: "scatter", + mode: "lines", + fill: "tozeroy", + }, + ] + : transformToBarGraphData(coordinateTimeSeries[path]); + const barGraphLayout: Partial = !isScalar + ? { + bargap: 0, + barmode: "stack", + barnorm: "percent", + } + : {}; + console.log("graphdata", coordinateTimeSeries); + return ( + + ); + })} +
+ ); + } } - return null; - }, areEqual); - - if ( - checkedToggles && - Object.keys(checkedToggles).find((toggle) => { - return checkedToggles[toggle]; - }) - ) { - const coordinateTimeSeries = transformToGraphData(timeSeries); return ( -
- - - - checkedToggles[toggle] - ).length - 1 - } - itemSize={() => 500} - width="100%" - itemData={coordinateTimeSeries} - > - {Row} - -
+ + + ); - } + }; - return ( - - - - ); + return <>{renderGraphs()}; }; export default ScalarGraph; diff --git a/typescript/Frontend/src/components/Installations/Log/TopologyBox.tsx b/typescript/Frontend/src/components/Installations/Log/TopologyBox.tsx index c73b9e3ea..3eb85a039 100644 --- a/typescript/Frontend/src/components/Installations/Log/TopologyBox.tsx +++ b/typescript/Frontend/src/components/Installations/Log/TopologyBox.tsx @@ -1,79 +1,79 @@ -import { Box } from "@mui/material"; -import { getBoxColor } from "../../../util/graph.util"; +import {Box} from "@mui/material"; +import {getBoxColor} from "../../../util/graph.util"; export type BoxData = { - label: string; - values: (string | number)[]; - unit: string; + label: string; + values: (string | number)[]; + unit: string; }; export type TopologyBoxProps = { - title?: string; - data?: BoxData; + title?: string; + data?: BoxData; }; const isInt = (value: number) => { - return value % 1 === 0; + return value % 1 === 0; }; export const BOX_SIZE = 85; const TopologyBox = (props: TopologyBoxProps) => { - const { titleColor, boxColor } = getBoxColor(props.title); - if (props.title === "Battery") console.log(props.data?.values, "data"); - return ( - -

- {props.title} -

-
- {props.data && ( - <> - {props.data.values.map((value, index) => { - return ( -

{`${ - props.data && props.data.values.length === 3 - ? "L" + (index + 1) + " " - : "" - }${ - !isInt(Number(value)) ? Number(value).toPrecision(4) : value - }${props.data?.unit}`}

- ); - })} - - )} -
-
- ); + const {titleColor, boxColor} = getBoxColor(props.title); + return ( + +

+ {props.title} +

+
+ {props.data && ( + <> + {props.data.values.map((value, index) => { + return ( +

{`${ + props.data && props.data.values.length === 3 + ? "L" + (index + 1) + " " + : "" + }${ + !isInt(Number(value)) ? Number(value).toPrecision(4) : value + }${props.data?.unit}`}

+ ); + })} + + )} +
+
+ ); }; export default TopologyBox; diff --git a/typescript/Frontend/src/components/Installations/Log/TopologyFlow.tsx b/typescript/Frontend/src/components/Installations/Log/TopologyFlow.tsx index d3def8fb3..4f3912382 100644 --- a/typescript/Frontend/src/components/Installations/Log/TopologyFlow.tsx +++ b/typescript/Frontend/src/components/Installations/Log/TopologyFlow.tsx @@ -9,7 +9,6 @@ export type TopologyFlowProps = { hidden?: boolean; }; const TopologyFlow = (props: TopologyFlowProps) => { - console.log("amount", props.amount, props.data?.values); const length = Math.abs((props.amount ?? 1) * BOX_SIZE); const values = props.data?.values; return ( diff --git a/typescript/Frontend/src/dataCache/dataCache.ts b/typescript/Frontend/src/dataCache/dataCache.ts index c23a1966d..3bfeda572 100644 --- a/typescript/Frontend/src/dataCache/dataCache.ts +++ b/typescript/Frontend/src/dataCache/dataCache.ts @@ -109,7 +109,6 @@ export default class DataCache> { //What about string nodes? like Alarms for (const k of Object.keys(dataBefore)) { const beforeData = dataBefore[k].value; - console.log(dataAfter[k]); const afterData = Number(dataAfter[k].value); let foo = interpolated[k]; if (foo) { diff --git a/typescript/Frontend/src/util/graph.util.tsx b/typescript/Frontend/src/util/graph.util.tsx index 34f5cde19..9df5afb52 100644 --- a/typescript/Frontend/src/util/graph.util.tsx +++ b/typescript/Frontend/src/util/graph.util.tsx @@ -1,7 +1,6 @@ import { Datum, TypedArray } from "plotly.js"; import { TreeElement, - ToggleElement, } from "../components/Installations/Log/CheckboxTree"; import { TimeRange, UnixTime } from "../dataCache/time"; import { DataPoint, DataRecord } from "../dataCache/data"; @@ -143,7 +142,6 @@ export const extractTopologyValues = ( const values = topologyPaths[topologyKey as keyof TopologyValues].map( (topologyPath) => timeSeriesValue[topologyPath] ); - console.log("values", values, topologyKey); switch (topologyKey as keyof TopologyValues) { case "gridToAcInConnection": topologyValues = [ @@ -153,7 +151,6 @@ export const extractTopologyValues = ( default: topologyValues = values.map((element) => element.value); } - console.log("topologyValues", topologyValues); return { ...acc, [topologyKey]: { @@ -200,8 +197,9 @@ export const parseCsv = (text: string): DataRecord => { }); const x = y .map((fields) => { - if (isNaN(Number(fields[1]))) { - console.log("fields", fields[1]); + if (fields[0] === "/AcDc/Warnings") + console.log("warnings", fields[1], isNaN(+fields[1])); + if (isNaN(Number(fields[1])) || fields[1] === "") { return { [fields[0]]: { value: fields[1], unit: fields[2] } }; } return { [fields[0]]: { value: parseFloat(fields[1]), unit: fields[2] } }; @@ -210,17 +208,6 @@ export const parseCsv = (text: string): DataRecord => { return x; }; -export const flattenToggles = (toggles: TreeElement[]): ToggleElement => { - return toggles.reduce((acc, current) => { - if (current.children.length > 0) { - acc[current.id] = false; - return { ...acc, ...flattenToggles(current.children) }; - } - acc[current.id] = false; - return acc; - }, {} as ToggleElement); -}; - export const insertTreeElements = ( children: TreeElement[] = [], [head, ...tail]: string[] @@ -291,7 +278,7 @@ export const transformToBarGraphData = (data: GraphCoordinates) => { marker: { color: stringToColor(split) }, type: "bar", name: split, - showlegend: !foundName, + showlegend: split.length > 0 ? !foundName : false, } as any; }); }