diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index 984cfa2..77ea8bf 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -2,6 +2,7 @@ import React, {useState, useEffect} from "react"; import {configAtom} from "../store/store.ts"; import {useAtom} from "jotai/index"; import {DefaultBootNotification} from "../cp/OcppTypes.ts"; +import {useNavigate} from "react-router-dom"; const Settings: React.FC = () => { const [wsURL, setWsURL] = useState(""); @@ -21,7 +22,7 @@ const Settings: React.FC = () => { const [experimental, setExperimental] = useState(null); const [bootNotification, setBootNotification] = useState(JSON.stringify(DefaultBootNotification)); const [config, setConfig] = useAtom(configAtom); - + const navigate = useNavigate(); useEffect(() => { if (config) { @@ -62,10 +63,10 @@ const Settings: React.FC = () => { interval: autoMeterValueInterval, value: autoMeterValue }, - Experimental: experimental !== "" ? experimental && JSON.parse(experimental) : null, - BootNotification: bootNotification !== "" ? bootNotification && JSON.parse(bootNotification) : null, - }); - // navigate(`/${location.hash}`) + Experimental: experimental && experimental !== "" ? JSON.parse(experimental) : null, + BootNotification: bootNotification && bootNotification !== "" ? JSON.parse(bootNotification) : null, + } as Config); + navigate("/"); }; return ( diff --git a/src/components/TopPage.tsx b/src/components/TopPage.tsx index 7bca3f4..eb9ada3 100644 --- a/src/components/TopPage.tsx +++ b/src/components/TopPage.tsx @@ -6,43 +6,45 @@ import {ChargePoint as OCPPChargePoint} from "../cp/ChargePoint.ts"; import {useAtom} from 'jotai' import {configAtom} from "../store/store.ts"; import {BootNotification, DefaultBootNotification} from "../cp/OcppTypes.ts"; - +import {useNavigate} from "react-router-dom"; const TopPage: React.FC = () => { const [cps, setCps] = useState([]); - const [connectorNumber, setConnectorNumber] = useState(2); const [config] = useAtom(configAtom); const [tagIDs, setTagIDs] = useState([]); + const navigate = useNavigate(); useEffect(() => { - console.log(`Connector Number: ${config?.connectorNumber} WSURL: ${config?.wsURL} CPID: ${config?.ChargePointID} TagID: ${config?.tagID}`); - if (config?.Experimental === null) { - setConnectorNumber(config?.connectorNumber || 2); - setCps([ - NewChargePoint(connectorNumber, config.ChargePointID, config.BootNotification ?? DefaultBootNotification, config.wsURL, config.basicAuthSettings,config.autoMeterValueSetting) - ]); - } else { - const cps = config?.Experimental?.ChargePointIDs.map((cp) => - NewChargePoint(cp.ConnectorNumber, cp.ChargePointID, config.BootNotification ?? DefaultBootNotification, config.wsURL,config.basicAuthSettings,config.autoMeterValueSetting) + if (!config) { + navigate('/settings'); + return; + } + console.log(`Connector Number: ${config.connectorNumber} WSURL: ${config.wsURL} CPID: ${config.ChargePointID} TagID: ${config.tagID}`); + if (config.Experimental) { + const cps = config.Experimental.ChargePointIDs.map((cp) => + NewChargePoint(cp.ConnectorNumber, cp.ChargePointID, config.BootNotification ?? DefaultBootNotification, config.wsURL, config.basicAuthSettings, config.autoMeterValueSetting) ) setCps(cps ?? []); - const tagIDs = config?.Experimental?.TagIDs; + const tagIDs = config.Experimental.TagIDs; setTagIDs(tagIDs ?? []); + } else { + setCps([ + NewChargePoint(config.connectorNumber, config.ChargePointID, config.BootNotification ?? DefaultBootNotification, config.wsURL, config.basicAuthSettings, config.autoMeterValueSetting) + ]); } - }, []); - + }, [config, navigate]); return (
{ - cps.length === 1 ? ( - <> - - + config?.Experimental || cps.length !== 1 ? ( + <> + + ) : ( - <> - - + <> + + ) }