From 53e9a062e8cd62248026fc762f5ac0be2b2f8488 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 22 Jul 2024 14:46:22 +0200 Subject: [PATCH 1/5] refactor web file structure and seperate settings from status --- .gitignore | 1 + interface/src/AuthenticatedRouting.tsx | 74 +++++++++++-------- .../{project => app/main}/CustomEntities.tsx | 0 .../main}/CustomEntitiesDialog.tsx | 0 .../{project => app/main}/Customization.tsx | 2 +- .../main}/CustomizationDialog.tsx | 0 .../src/{project => app/main}/DeviceIcon.tsx | 0 .../src/{project => app/main}/Devices.tsx | 0 .../{project => app/main}/DevicesDialog.tsx | 0 .../main}/EntityMaskToggle.tsx | 0 interface/src/{project => app/main}/Help.tsx | 2 +- .../src/{project => app/main}/Modules.tsx | 0 .../{project => app/main}/ModulesDialog.tsx | 0 .../src/{project => app/main}/OptionIcon.tsx | 0 .../src/{project => app/main}/Scheduler.tsx | 0 .../{project => app/main}/SchedulerDialog.tsx | 0 .../src/{project => app/main}/Sensors.tsx | 0 .../main}/SensorsAnalogDialog.tsx | 0 .../main}/SensorsTemperatureDialog.tsx | 0 interface/src/{project => app/main}/api.ts | 0 .../src/{project => app/main}/deviceValue.ts | 0 interface/src/{project => app/main}/types.ts | 0 .../src/{project => app/main}/validators.ts | 0 .../ap => app/settings}/APSettings.tsx | 5 +- .../settings}/ApplicationSettings.tsx | 12 +-- .../mqtt => app/settings}/MqttSettings.tsx | 4 +- .../ntp => app/settings}/NTPSettings.tsx | 4 +- .../{framework => app/settings}/Settings.tsx | 14 ++-- .../{framework/ntp => app/settings}/TZ.tsx | 0 .../settings}/UploadDownload.tsx | 6 +- .../settings}/network/Network.tsx | 5 +- .../settings}/network/NetworkSettings.tsx | 2 +- .../network/WiFiConnectionContext.tsx | 0 .../settings}/network/WiFiNetworkScanner.tsx | 0 .../settings}/network/WiFiNetworkSelector.tsx | 0 .../settings}/security/GenerateToken.tsx | 0 .../settings}/security/ManageUsers.tsx | 0 .../settings}/security/Security.tsx | 2 +- .../settings}/security/SecuritySettings.tsx | 0 .../settings}/security/User.tsx | 0 .../{framework/ap => app/status}/APStatus.tsx | 3 +- .../status/Activity.tsx} | 6 +- .../status/HardwareStatus.tsx} | 2 +- .../mqtt => app/status}/MqttStatus.tsx | 3 +- .../ntp => app/status}/NTPStatus.tsx | 3 +- .../network => app/status}/NetworkStatus.tsx | 3 +- .../system => app/status}/RestartMonitor.tsx | 0 .../status/Status.tsx} | 67 ++++++++++++----- .../system => app/status}/SystemLog.tsx | 2 +- .../src/{project => app/status}/bbqkees.svg | 0 .../src/components/layout/LayoutAppBar.tsx | 6 +- .../src/components/layout/LayoutMenu.tsx | 6 +- .../src/components/layout/ListMenuItem.tsx | 10 +-- interface/src/framework/ap/AccessPoint.tsx | 34 --------- interface/src/framework/mqtt/Mqtt.tsx | 34 --------- interface/src/framework/ntp/NetworkTime.tsx | 33 --------- interface/src/framework/system/System.tsx | 50 ------------- interface/src/types/system.ts | 2 +- interface/src/validators/ap.ts | 2 +- mock-api/rest_server.ts | 1 + 60 files changed, 149 insertions(+), 251 deletions(-) rename interface/src/{project => app/main}/CustomEntities.tsx (100%) rename interface/src/{project => app/main}/CustomEntitiesDialog.tsx (100%) rename interface/src/{project => app/main}/Customization.tsx (99%) rename interface/src/{project => app/main}/CustomizationDialog.tsx (100%) rename interface/src/{project => app/main}/DeviceIcon.tsx (100%) rename interface/src/{project => app/main}/Devices.tsx (100%) rename interface/src/{project => app/main}/DevicesDialog.tsx (100%) rename interface/src/{project => app/main}/EntityMaskToggle.tsx (100%) rename interface/src/{project => app/main}/Help.tsx (99%) rename interface/src/{project => app/main}/Modules.tsx (100%) rename interface/src/{project => app/main}/ModulesDialog.tsx (100%) rename interface/src/{project => app/main}/OptionIcon.tsx (100%) rename interface/src/{project => app/main}/Scheduler.tsx (100%) rename interface/src/{project => app/main}/SchedulerDialog.tsx (100%) rename interface/src/{project => app/main}/Sensors.tsx (100%) rename interface/src/{project => app/main}/SensorsAnalogDialog.tsx (100%) rename interface/src/{project => app/main}/SensorsTemperatureDialog.tsx (100%) rename interface/src/{project => app/main}/api.ts (100%) rename interface/src/{project => app/main}/deviceValue.ts (100%) rename interface/src/{project => app/main}/types.ts (100%) rename interface/src/{project => app/main}/validators.ts (100%) rename interface/src/{framework/ap => app/settings}/APSettings.tsx (98%) rename interface/src/{project => app/settings}/ApplicationSettings.tsx (98%) rename interface/src/{framework/mqtt => app/settings}/MqttSettings.tsx (99%) rename interface/src/{framework/ntp => app/settings}/NTPSettings.tsx (98%) rename interface/src/{framework => app/settings}/Settings.tsx (93%) rename interface/src/{framework/ntp => app/settings}/TZ.tsx (100%) rename interface/src/{framework/system => app/settings}/UploadDownload.tsx (98%) rename interface/src/{framework => app/settings}/network/Network.tsx (88%) rename interface/src/{framework => app/settings}/network/NetworkSettings.tsx (99%) rename interface/src/{framework => app/settings}/network/WiFiConnectionContext.tsx (100%) rename interface/src/{framework => app/settings}/network/WiFiNetworkScanner.tsx (100%) rename interface/src/{framework => app/settings}/network/WiFiNetworkSelector.tsx (100%) rename interface/src/{framework => app/settings}/security/GenerateToken.tsx (100%) rename interface/src/{framework => app/settings}/security/ManageUsers.tsx (100%) rename interface/src/{framework => app/settings}/security/Security.tsx (94%) rename interface/src/{framework => app/settings}/security/SecuritySettings.tsx (100%) rename interface/src/{framework => app/settings}/security/User.tsx (100%) rename interface/src/{framework/ap => app/status}/APStatus.tsx (96%) rename interface/src/{project/SystemActivity.tsx => app/status/Activity.tsx} (96%) rename interface/src/{framework/system/ESPSystemStatus.tsx => app/status/HardwareStatus.tsx} (99%) rename interface/src/{framework/mqtt => app/status}/MqttStatus.tsx (97%) rename interface/src/{framework/ntp => app/status}/NTPStatus.tsx (98%) rename interface/src/{framework/network => app/status}/NetworkStatus.tsx (98%) rename interface/src/{framework/system => app/status}/RestartMonitor.tsx (100%) rename interface/src/{framework/system/SystemStatus.tsx => app/status/Status.tsx} (90%) rename interface/src/{framework/system => app/status}/SystemLog.tsx (99%) rename interface/src/{project => app/status}/bbqkees.svg (100%) delete mode 100644 interface/src/framework/ap/AccessPoint.tsx delete mode 100644 interface/src/framework/mqtt/Mqtt.tsx delete mode 100644 interface/src/framework/ntp/NetworkTime.tsx delete mode 100644 interface/src/framework/system/System.tsx diff --git a/.gitignore b/.gitignore index 81f72621f..2eb46fa12 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ yarn.lock analyse.html interface/vite.config.ts.timestamp* *.local + # i18n generated files interface/src/i18n/i18n-react.tsx interface/src/i18n/i18n-types.ts diff --git a/interface/src/AuthenticatedRouting.tsx b/interface/src/AuthenticatedRouting.tsx index 4be4fcd42..3e9a619e2 100644 --- a/interface/src/AuthenticatedRouting.tsx +++ b/interface/src/AuthenticatedRouting.tsx @@ -1,26 +1,32 @@ import { type FC, useContext } from 'react'; import { Navigate, Route, Routes } from 'react-router-dom'; +import CustomEntities from 'app/main/CustomEntities'; +import Customization from 'app/main/Customization'; +import Devices from 'app/main/Devices'; +import Modules from 'app/main/Modules'; +import Scheduler from 'app/main/Scheduler'; +import Sensors from 'app/main/Sensors'; +import APSettings from 'app/settings/APSettings'; +import ApplicationSettings from 'app/settings/ApplicationSettings'; +import MqttSettings from 'app/settings/MqttSettings'; +import NTPSettings from 'app/settings/NTPSettings'; +import Settings from 'app/settings/Settings'; +import UploadDownload from 'app/settings/UploadDownload'; +import Network from 'app/settings/network/Network'; +import Security from 'app/settings/security/Security'; +import APStatus from 'app/status/APStatus'; +import Activity from 'app/status/Activity'; +import HardwareStatus from 'app/status/HardwareStatus'; +import MqttStatus from 'app/status/MqttStatus'; +import NTPStatus from 'app/status/NTPStatus'; +import NetworkStatus from 'app/status/NetworkStatus'; +import Status from 'app/status/Status'; +import SystemLog from 'app/status/SystemLog'; import { Layout } from 'components'; import { AuthenticatedContext } from 'contexts/authentication'; -import Settings from 'framework/Settings'; -import AccessPoint from 'framework/ap/AccessPoint'; -import Mqtt from 'framework/mqtt/Mqtt'; -import Network from 'framework/network/Network'; -import NetworkTime from 'framework/ntp/NetworkTime'; -import Security from 'framework/security/Security'; -import ESPSystemStatus from 'framework/system/ESPSystemStatus'; -import System from 'framework/system/System'; -import UploadDownload from 'framework/system/UploadDownload'; -import ApplicationSettings from 'project/ApplicationSettings'; -import CustomEntities from 'project/CustomEntities'; -import Customization from 'project/Customization'; -import Devices from 'project/Devices'; -import Modules from 'project/Modules'; -import Scheduler from 'project/Scheduler'; -import Sensors from 'project/Sensors'; -import Help from './project/Help'; +import Help from './app/main/Help'; const AuthenticatedRouting: FC = () => { const { me } = useContext(AuthenticatedContext); @@ -29,24 +35,34 @@ const AuthenticatedRouting: FC = () => { } /> } /> - } /> + } /> } /> } /> + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + {me.admin && ( <> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> - } /> - } /> - } /> - } /> } /> - } /> - } /> - } /> + + } /> + } /> + } /> )} diff --git a/interface/src/project/CustomEntities.tsx b/interface/src/app/main/CustomEntities.tsx similarity index 100% rename from interface/src/project/CustomEntities.tsx rename to interface/src/app/main/CustomEntities.tsx diff --git a/interface/src/project/CustomEntitiesDialog.tsx b/interface/src/app/main/CustomEntitiesDialog.tsx similarity index 100% rename from interface/src/project/CustomEntitiesDialog.tsx rename to interface/src/app/main/CustomEntitiesDialog.tsx diff --git a/interface/src/project/Customization.tsx b/interface/src/app/main/Customization.tsx similarity index 99% rename from interface/src/project/Customization.tsx rename to interface/src/app/main/Customization.tsx index be34f04bf..00e3905ea 100644 --- a/interface/src/project/Customization.tsx +++ b/interface/src/app/main/Customization.tsx @@ -41,6 +41,7 @@ import { import { useTheme } from '@table-library/react-table-library/theme'; import { dialogStyle } from 'CustomTheme'; import { useRequest } from 'alova'; +import RestartMonitor from 'app/status/RestartMonitor'; import { BlockNavigation, ButtonRow, @@ -48,7 +49,6 @@ import { SectionContent, useLayoutTitle } from 'components'; -import RestartMonitor from 'framework/system/RestartMonitor'; import { useI18nContext } from 'i18n/i18n-react'; import * as EMSESP from './api'; diff --git a/interface/src/project/CustomizationDialog.tsx b/interface/src/app/main/CustomizationDialog.tsx similarity index 100% rename from interface/src/project/CustomizationDialog.tsx rename to interface/src/app/main/CustomizationDialog.tsx diff --git a/interface/src/project/DeviceIcon.tsx b/interface/src/app/main/DeviceIcon.tsx similarity index 100% rename from interface/src/project/DeviceIcon.tsx rename to interface/src/app/main/DeviceIcon.tsx diff --git a/interface/src/project/Devices.tsx b/interface/src/app/main/Devices.tsx similarity index 100% rename from interface/src/project/Devices.tsx rename to interface/src/app/main/Devices.tsx diff --git a/interface/src/project/DevicesDialog.tsx b/interface/src/app/main/DevicesDialog.tsx similarity index 100% rename from interface/src/project/DevicesDialog.tsx rename to interface/src/app/main/DevicesDialog.tsx diff --git a/interface/src/project/EntityMaskToggle.tsx b/interface/src/app/main/EntityMaskToggle.tsx similarity index 100% rename from interface/src/project/EntityMaskToggle.tsx rename to interface/src/app/main/EntityMaskToggle.tsx diff --git a/interface/src/project/Help.tsx b/interface/src/app/main/Help.tsx similarity index 99% rename from interface/src/project/Help.tsx rename to interface/src/app/main/Help.tsx index 85be550ce..129db407d 100644 --- a/interface/src/project/Help.tsx +++ b/interface/src/app/main/Help.tsx @@ -18,7 +18,7 @@ import { Typography } from '@mui/material'; -import * as EMSESP from 'project/api'; +import * as EMSESP from 'app/main/api'; import { useRequest } from 'alova'; import { SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; diff --git a/interface/src/project/Modules.tsx b/interface/src/app/main/Modules.tsx similarity index 100% rename from interface/src/project/Modules.tsx rename to interface/src/app/main/Modules.tsx diff --git a/interface/src/project/ModulesDialog.tsx b/interface/src/app/main/ModulesDialog.tsx similarity index 100% rename from interface/src/project/ModulesDialog.tsx rename to interface/src/app/main/ModulesDialog.tsx diff --git a/interface/src/project/OptionIcon.tsx b/interface/src/app/main/OptionIcon.tsx similarity index 100% rename from interface/src/project/OptionIcon.tsx rename to interface/src/app/main/OptionIcon.tsx diff --git a/interface/src/project/Scheduler.tsx b/interface/src/app/main/Scheduler.tsx similarity index 100% rename from interface/src/project/Scheduler.tsx rename to interface/src/app/main/Scheduler.tsx diff --git a/interface/src/project/SchedulerDialog.tsx b/interface/src/app/main/SchedulerDialog.tsx similarity index 100% rename from interface/src/project/SchedulerDialog.tsx rename to interface/src/app/main/SchedulerDialog.tsx diff --git a/interface/src/project/Sensors.tsx b/interface/src/app/main/Sensors.tsx similarity index 100% rename from interface/src/project/Sensors.tsx rename to interface/src/app/main/Sensors.tsx diff --git a/interface/src/project/SensorsAnalogDialog.tsx b/interface/src/app/main/SensorsAnalogDialog.tsx similarity index 100% rename from interface/src/project/SensorsAnalogDialog.tsx rename to interface/src/app/main/SensorsAnalogDialog.tsx diff --git a/interface/src/project/SensorsTemperatureDialog.tsx b/interface/src/app/main/SensorsTemperatureDialog.tsx similarity index 100% rename from interface/src/project/SensorsTemperatureDialog.tsx rename to interface/src/app/main/SensorsTemperatureDialog.tsx diff --git a/interface/src/project/api.ts b/interface/src/app/main/api.ts similarity index 100% rename from interface/src/project/api.ts rename to interface/src/app/main/api.ts diff --git a/interface/src/project/deviceValue.ts b/interface/src/app/main/deviceValue.ts similarity index 100% rename from interface/src/project/deviceValue.ts rename to interface/src/app/main/deviceValue.ts diff --git a/interface/src/project/types.ts b/interface/src/app/main/types.ts similarity index 100% rename from interface/src/project/types.ts rename to interface/src/app/main/types.ts diff --git a/interface/src/project/validators.ts b/interface/src/app/main/validators.ts similarity index 100% rename from interface/src/project/validators.ts rename to interface/src/app/main/validators.ts diff --git a/interface/src/framework/ap/APSettings.tsx b/interface/src/app/settings/APSettings.tsx similarity index 98% rename from interface/src/framework/ap/APSettings.tsx rename to interface/src/app/settings/APSettings.tsx index 21a8d49ae..d2a9accb4 100644 --- a/interface/src/framework/ap/APSettings.tsx +++ b/interface/src/app/settings/APSettings.tsx @@ -15,7 +15,8 @@ import { FormLoader, SectionContent, ValidatedPasswordField, - ValidatedTextField + ValidatedTextField, + useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { range } from 'lodash-es'; @@ -47,6 +48,8 @@ const APSettings: FC = () => { const { LL } = useI18nContext(); + useLayoutTitle(LL.SETTINGS_OF(LL.ACCESS_POINT(0))); + const [fieldErrors, setFieldErrors] = useState(); const updateFormValue = updateValueDirty( diff --git a/interface/src/project/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx similarity index 98% rename from interface/src/project/ApplicationSettings.tsx rename to interface/src/app/settings/ApplicationSettings.tsx index 069863994..b419aa9b7 100644 --- a/interface/src/project/ApplicationSettings.tsx +++ b/interface/src/app/settings/ApplicationSettings.tsx @@ -20,6 +20,7 @@ import { import * as SystemApi from 'api/system'; import { useRequest } from 'alova'; +import RestartMonitor from 'app/status/RestartMonitor'; import type { ValidateFieldsError } from 'async-validator'; import { BlockFormControlLabel, @@ -31,15 +32,14 @@ import { ValidatedTextField, useLayoutTitle } from 'components'; -import RestartMonitor from 'framework/system/RestartMonitor'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValueDirty, useRest } from 'utils'; import { validate } from 'validators'; -import * as EMSESP from './api'; -import { BOARD_PROFILES } from './types'; -import type { Settings } from './types'; -import { createSettingsValidator } from './validators'; +import * as EMSESP from '../main/api'; +import { BOARD_PROFILES } from '../main/types'; +import type { Settings } from '../main/types'; +import { createSettingsValidator } from '../main/validators'; export function boardProfileSelectItems() { return Object.keys(BOARD_PROFILES).map((code) => ( @@ -115,7 +115,7 @@ const ApplicationSettings: FC = () => { }); }; - useLayoutTitle(LL.APPLICATION()); + useLayoutTitle(LL.SETTINGS_OF(LL.APPLICATION())); const content = () => { if (!data) { diff --git a/interface/src/framework/mqtt/MqttSettings.tsx b/interface/src/app/settings/MqttSettings.tsx similarity index 99% rename from interface/src/framework/mqtt/MqttSettings.tsx rename to interface/src/app/settings/MqttSettings.tsx index ce59362c5..6ccf77680 100644 --- a/interface/src/framework/mqtt/MqttSettings.tsx +++ b/interface/src/app/settings/MqttSettings.tsx @@ -23,7 +23,8 @@ import { FormLoader, SectionContent, ValidatedPasswordField, - ValidatedTextField + ValidatedTextField, + useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { MqttSettingsType } from 'types'; @@ -48,6 +49,7 @@ const MqttSettings: FC = () => { }); const { LL } = useI18nContext(); + useLayoutTitle(LL.SETTINGS_OF('MQTT')); const [fieldErrors, setFieldErrors] = useState(); diff --git a/interface/src/framework/ntp/NTPSettings.tsx b/interface/src/app/settings/NTPSettings.tsx similarity index 98% rename from interface/src/framework/ntp/NTPSettings.tsx rename to interface/src/app/settings/NTPSettings.tsx index b24f22633..ae8ef094a 100644 --- a/interface/src/framework/ntp/NTPSettings.tsx +++ b/interface/src/app/settings/NTPSettings.tsx @@ -15,7 +15,8 @@ import { ButtonRow, FormLoader, SectionContent, - ValidatedTextField + ValidatedTextField, + useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { NTPSettingsType } from 'types'; @@ -43,6 +44,7 @@ const NTPSettings: FC = () => { }); const { LL } = useI18nContext(); + useLayoutTitle(LL.SETTINGS_OF('NTP')); const updateFormValue = updateValueDirty( origData, diff --git a/interface/src/framework/Settings.tsx b/interface/src/app/settings/Settings.tsx similarity index 93% rename from interface/src/framework/Settings.tsx rename to interface/src/app/settings/Settings.tsx index 1d17db0fb..a9e49f8ca 100644 --- a/interface/src/framework/Settings.tsx +++ b/interface/src/app/settings/Settings.tsx @@ -79,15 +79,15 @@ const Settings: FC = () => { @@ -95,7 +95,7 @@ const Settings: FC = () => { @@ -103,7 +103,7 @@ const Settings: FC = () => { @@ -111,14 +111,14 @@ const Settings: FC = () => { diff --git a/interface/src/framework/ntp/TZ.tsx b/interface/src/app/settings/TZ.tsx similarity index 100% rename from interface/src/framework/ntp/TZ.tsx rename to interface/src/app/settings/TZ.tsx diff --git a/interface/src/framework/system/UploadDownload.tsx b/interface/src/app/settings/UploadDownload.tsx similarity index 98% rename from interface/src/framework/system/UploadDownload.tsx rename to interface/src/app/settings/UploadDownload.tsx index 8c159ef4e..6c49d6842 100644 --- a/interface/src/framework/system/UploadDownload.tsx +++ b/interface/src/app/settings/UploadDownload.tsx @@ -6,8 +6,9 @@ import { Box, Button, Divider, Link, Typography } from '@mui/material'; import * as SystemApi from 'api/system'; -import * as EMSESP from 'project/api'; +import * as EMSESP from 'app/main/api'; import { useRequest } from 'alova'; +import type { APIcall } from 'app/main/types'; import { FormLoader, SectionContent, @@ -15,9 +16,8 @@ import { useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; -import type { APIcall } from 'project/types'; -import RestartMonitor from './RestartMonitor'; +import RestartMonitor from '../status/RestartMonitor'; const UploadDownload: FC = () => { const { LL } = useI18nContext(); diff --git a/interface/src/framework/network/Network.tsx b/interface/src/app/settings/network/Network.tsx similarity index 88% rename from interface/src/framework/network/Network.tsx rename to interface/src/app/settings/network/Network.tsx index 2d524c63a..0088a93b8 100644 --- a/interface/src/framework/network/Network.tsx +++ b/interface/src/app/settings/network/Network.tsx @@ -9,13 +9,12 @@ import { useI18nContext } from 'i18n/i18n-react'; import type { WiFiNetwork } from 'types'; import NetworkSettings from './NetworkSettings'; -import NetworkStatus from './NetworkStatus'; import { WiFiConnectionContext } from './WiFiConnectionContext'; import WiFiNetworkScanner from './WiFiNetworkScanner'; const Network: FC = () => { const { LL } = useI18nContext(); - useLayoutTitle(LL.NETWORK(0)); + useLayoutTitle(LL.SETTINGS_OF(LL.NETWORK(0))); const { routerTab } = useRouterTab(); @@ -45,11 +44,9 @@ const Network: FC = () => { > - - } /> } /> } /> } /> diff --git a/interface/src/framework/network/NetworkSettings.tsx b/interface/src/app/settings/network/NetworkSettings.tsx similarity index 99% rename from interface/src/framework/network/NetworkSettings.tsx rename to interface/src/app/settings/network/NetworkSettings.tsx index 16d173f2b..cc1d8386a 100644 --- a/interface/src/framework/network/NetworkSettings.tsx +++ b/interface/src/app/settings/network/NetworkSettings.tsx @@ -44,7 +44,7 @@ import { updateValueDirty, useRest } from 'utils'; import { validate } from 'validators'; import { createNetworkSettingsValidator } from 'validators/network'; -import RestartMonitor from '../system/RestartMonitor'; +import RestartMonitor from '../../status/RestartMonitor'; import { WiFiConnectionContext } from './WiFiConnectionContext'; import { isNetworkOpen, networkSecurityMode } from './WiFiNetworkSelector'; diff --git a/interface/src/framework/network/WiFiConnectionContext.tsx b/interface/src/app/settings/network/WiFiConnectionContext.tsx similarity index 100% rename from interface/src/framework/network/WiFiConnectionContext.tsx rename to interface/src/app/settings/network/WiFiConnectionContext.tsx diff --git a/interface/src/framework/network/WiFiNetworkScanner.tsx b/interface/src/app/settings/network/WiFiNetworkScanner.tsx similarity index 100% rename from interface/src/framework/network/WiFiNetworkScanner.tsx rename to interface/src/app/settings/network/WiFiNetworkScanner.tsx diff --git a/interface/src/framework/network/WiFiNetworkSelector.tsx b/interface/src/app/settings/network/WiFiNetworkSelector.tsx similarity index 100% rename from interface/src/framework/network/WiFiNetworkSelector.tsx rename to interface/src/app/settings/network/WiFiNetworkSelector.tsx diff --git a/interface/src/framework/security/GenerateToken.tsx b/interface/src/app/settings/security/GenerateToken.tsx similarity index 100% rename from interface/src/framework/security/GenerateToken.tsx rename to interface/src/app/settings/security/GenerateToken.tsx diff --git a/interface/src/framework/security/ManageUsers.tsx b/interface/src/app/settings/security/ManageUsers.tsx similarity index 100% rename from interface/src/framework/security/ManageUsers.tsx rename to interface/src/app/settings/security/ManageUsers.tsx diff --git a/interface/src/framework/security/Security.tsx b/interface/src/app/settings/security/Security.tsx similarity index 94% rename from interface/src/framework/security/Security.tsx rename to interface/src/app/settings/security/Security.tsx index 94e306b22..32d452af2 100644 --- a/interface/src/framework/security/Security.tsx +++ b/interface/src/app/settings/security/Security.tsx @@ -11,7 +11,7 @@ import SecuritySettings from './SecuritySettings'; const Security: FC = () => { const { LL } = useI18nContext(); - useLayoutTitle(LL.SECURITY(0)); + useLayoutTitle(LL.SETTINGS_OF(LL.SECURITY(0))); const { routerTab } = useRouterTab(); diff --git a/interface/src/framework/security/SecuritySettings.tsx b/interface/src/app/settings/security/SecuritySettings.tsx similarity index 100% rename from interface/src/framework/security/SecuritySettings.tsx rename to interface/src/app/settings/security/SecuritySettings.tsx diff --git a/interface/src/framework/security/User.tsx b/interface/src/app/settings/security/User.tsx similarity index 100% rename from interface/src/framework/security/User.tsx rename to interface/src/app/settings/security/User.tsx diff --git a/interface/src/framework/ap/APStatus.tsx b/interface/src/app/status/APStatus.tsx similarity index 96% rename from interface/src/framework/ap/APStatus.tsx rename to interface/src/app/status/APStatus.tsx index 9c3e0cbe7..de43be859 100644 --- a/interface/src/framework/ap/APStatus.tsx +++ b/interface/src/app/status/APStatus.tsx @@ -19,7 +19,7 @@ import type { Theme } from '@mui/material'; import * as APApi from 'api/ap'; import { useRequest } from 'alova'; -import { ButtonRow, FormLoader, SectionContent } from 'components'; +import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { APStatusType } from 'types'; import { APNetworkStatus } from 'types'; @@ -41,6 +41,7 @@ const APStatus: FC = () => { const { data: data, send: loadData, error } = useRequest(APApi.readAPStatus); const { LL } = useI18nContext(); + useLayoutTitle(LL.STATUS_OF(LL.ACCESS_POINT(0))); const theme = useTheme(); diff --git a/interface/src/project/SystemActivity.tsx b/interface/src/app/status/Activity.tsx similarity index 96% rename from interface/src/project/SystemActivity.tsx rename to interface/src/app/status/Activity.tsx index ade2e653c..84c5199be 100644 --- a/interface/src/project/SystemActivity.tsx +++ b/interface/src/app/status/Activity.tsx @@ -19,15 +19,15 @@ import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'component import { useI18nContext } from 'i18n/i18n-react'; import type { Translation } from 'i18n/i18n-types'; -import * as EMSESP from './api'; -import type { Stat } from './types'; +import * as EMSESP from '../main/api'; +import type { Stat } from '../main/types'; const SystemActivity: FC = () => { const { data: data, send: loadData, error } = useRequest(EMSESP.readActivity); const { LL } = useI18nContext(); - useLayoutTitle(LL.SYSTEM(0)); + useLayoutTitle(LL.EMS_BUS_STATUS()); const stats_theme = tableTheme({ Table: ` diff --git a/interface/src/framework/system/ESPSystemStatus.tsx b/interface/src/app/status/HardwareStatus.tsx similarity index 99% rename from interface/src/framework/system/ESPSystemStatus.tsx rename to interface/src/app/status/HardwareStatus.tsx index 5cdc61bbf..e97d77a55 100644 --- a/interface/src/framework/system/ESPSystemStatus.tsx +++ b/interface/src/app/status/HardwareStatus.tsx @@ -26,7 +26,7 @@ import { useRequest } from 'alova'; import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; -import BBQKeesIcon from '../../project/bbqkees.svg'; +import BBQKeesIcon from './bbqkees.svg'; function formatNumber(num: number) { return new Intl.NumberFormat().format(num); diff --git a/interface/src/framework/mqtt/MqttStatus.tsx b/interface/src/app/status/MqttStatus.tsx similarity index 97% rename from interface/src/framework/mqtt/MqttStatus.tsx rename to interface/src/app/status/MqttStatus.tsx index f171b5cee..81475b481 100644 --- a/interface/src/framework/mqtt/MqttStatus.tsx +++ b/interface/src/app/status/MqttStatus.tsx @@ -20,7 +20,7 @@ import type { Theme } from '@mui/material'; import * as MqttApi from 'api/mqtt'; import { useRequest } from 'alova'; -import { ButtonRow, FormLoader, SectionContent } from 'components'; +import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { MqttStatusType } from 'types'; import { MqttDisconnectReason } from 'types'; @@ -61,6 +61,7 @@ const MqttStatus: FC = () => { const { data: data, send: loadData, error } = useRequest(MqttApi.readMqttStatus); const { LL } = useI18nContext(); + useLayoutTitle(LL.STATUS_OF('MQTT')); const theme = useTheme(); diff --git a/interface/src/framework/ntp/NTPStatus.tsx b/interface/src/app/status/NTPStatus.tsx similarity index 98% rename from interface/src/framework/ntp/NTPStatus.tsx rename to interface/src/app/status/NTPStatus.tsx index d1a9af611..a07753f8e 100644 --- a/interface/src/framework/ntp/NTPStatus.tsx +++ b/interface/src/app/status/NTPStatus.tsx @@ -31,7 +31,7 @@ import * as NTPApi from 'api/ntp'; import { dialogStyle } from 'CustomTheme'; import { useRequest } from 'alova'; -import { ButtonRow, FormLoader, SectionContent } from 'components'; +import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { NTPStatusType, Time } from 'types'; import { NTPSyncStatus } from 'types'; @@ -45,6 +45,7 @@ const NTPStatus: FC = () => { const [processing, setProcessing] = useState(false); const { LL } = useI18nContext(); + useLayoutTitle(LL.STATUS_OF('NTP')); const { send: updateTime } = useRequest( (local_time: Time) => NTPApi.updateTime(local_time), diff --git a/interface/src/framework/network/NetworkStatus.tsx b/interface/src/app/status/NetworkStatus.tsx similarity index 98% rename from interface/src/framework/network/NetworkStatus.tsx rename to interface/src/app/status/NetworkStatus.tsx index b189bbc91..683ed0727 100644 --- a/interface/src/framework/network/NetworkStatus.tsx +++ b/interface/src/app/status/NetworkStatus.tsx @@ -23,7 +23,7 @@ import type { Theme } from '@mui/material'; import * as NetworkApi from 'api/network'; import { useRequest } from 'alova'; -import { ButtonRow, FormLoader, SectionContent } from 'components'; +import { ButtonRow, FormLoader, SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { NetworkStatusType } from 'types'; import { NetworkConnectionStatus } from 'types'; @@ -91,6 +91,7 @@ const NetworkStatus: FC = () => { } = useRequest(NetworkApi.readNetworkStatus); const { LL } = useI18nContext(); + useLayoutTitle(LL.STATUS_OF(LL.NETWORK(1))); const theme = useTheme(); diff --git a/interface/src/framework/system/RestartMonitor.tsx b/interface/src/app/status/RestartMonitor.tsx similarity index 100% rename from interface/src/framework/system/RestartMonitor.tsx rename to interface/src/app/status/RestartMonitor.tsx diff --git a/interface/src/framework/system/SystemStatus.tsx b/interface/src/app/status/Status.tsx similarity index 90% rename from interface/src/framework/system/SystemStatus.tsx rename to interface/src/app/status/Status.tsx index 7c115c495..d5a637225 100644 --- a/interface/src/framework/system/SystemStatus.tsx +++ b/interface/src/app/status/Status.tsx @@ -1,4 +1,5 @@ import { type FC, useContext, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import { toast } from 'react-toastify'; import AccessTimeIcon from '@mui/icons-material/AccessTime'; @@ -6,6 +7,7 @@ import BuildIcon from '@mui/icons-material/Build'; import CancelIcon from '@mui/icons-material/Cancel'; import DeviceHubIcon from '@mui/icons-material/DeviceHub'; import DirectionsBusIcon from '@mui/icons-material/DirectionsBus'; +import LogoDevIcon from '@mui/icons-material/LogoDev'; import MemoryIcon from '@mui/icons-material/Memory'; import PermScanWifiIcon from '@mui/icons-material/PermScanWifi'; import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew'; @@ -13,6 +15,7 @@ import RefreshIcon from '@mui/icons-material/Refresh'; import RouterIcon from '@mui/icons-material/Router'; import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna'; import TimerIcon from '@mui/icons-material/Timer'; +import UpgradeIcon from '@mui/icons-material/Upgrade'; import WifiIcon from '@mui/icons-material/Wifi'; import { Avatar, @@ -32,14 +35,14 @@ import { import * as SystemApi from 'api/system'; -import * as EMSESP from 'project/api'; +import * as EMSESP from 'app/main/api'; import { dialogStyle } from 'CustomTheme'; import { useRequest } from 'alova'; +import { busConnectionStatus } from 'app/main/types'; import { FormLoader, SectionContent, useLayoutTitle } from 'components'; import ListMenuItem from 'components/layout/ListMenuItem'; import { AuthenticatedContext } from 'contexts/authentication'; import { useI18nContext } from 'i18n/i18n-react'; -import { busConnectionStatus } from 'project/types'; import { NTPSyncStatus, NetworkConnectionStatus } from 'types'; import RestartMonitor from './RestartMonitor'; @@ -47,7 +50,9 @@ import RestartMonitor from './RestartMonitor'; const SystemStatus: FC = () => { const { LL } = useI18nContext(); - useLayoutTitle(LL.SYSTEM(0)); + const navigate = useNavigate(); + + useLayoutTitle(LL.STATUS_OF('')); const { me } = useContext(AuthenticatedContext); @@ -313,7 +318,7 @@ const SystemStatus: FC = () => { return ( <> - + @@ -336,6 +341,16 @@ const SystemStatus: FC = () => { )} + + + @@ -366,14 +381,27 @@ const SystemStatus: FC = () => { - + + + + + + + + {me.admin && ( + + )} + { bgcolor={busStatusHighlight()} label={LL.EMS_BUS_STATUS()} text={busStatus()} - to="/system/activity" + to="/status/activity" /> @@ -392,7 +420,7 @@ const SystemStatus: FC = () => { bgcolor="#68374d" label={LL.STATUS_OF(LL.HARDWARE())} text={formatNumber(data.free_heap) + ' KB' + ' ' + LL.FREE_MEMORY()} - to="/system/espsystemstatus" + to="/status/hardwarestatus" /> @@ -406,7 +434,7 @@ const SystemStatus: FC = () => { bgcolor={networkStatusHighlight()} label={LL.STATUS_OF(LL.NETWORK(1))} text={networkStatus()} - to="/settings/network/status" + to="/status/network" /> @@ -416,7 +444,7 @@ const SystemStatus: FC = () => { bgcolor={activeHighlight(data.mqtt_status)} label={LL.STATUS_OF('MQTT')} text={data.mqtt_status ? LL.ACTIVE() : LL.INACTIVE(0)} - to="/settings/mqtt/status" + to="/status/mqtt" /> @@ -426,7 +454,7 @@ const SystemStatus: FC = () => { bgcolor={ntpStatusHighlight()} label={LL.STATUS_OF('NTP')} text={ntpStatus()} - to="/settings/ntp/status" + to="/status/ntp" /> @@ -434,11 +462,10 @@ const SystemStatus: FC = () => { disabled={!me.admin} icon={SettingsInputAntennaIcon} bgcolor={activeHighlight(data.ap_status)} - label={LL.ACCESS_POINT(0)} + label={LL.STATUS_OF(LL.ACCESS_POINT(0))} text={data.ap_status ? LL.ACTIVE() : LL.INACTIVE(0)} - to="/settings/ap/status" + to="/status/ap" /> - {renderScanDialog()} diff --git a/interface/src/framework/system/SystemLog.tsx b/interface/src/app/status/SystemLog.tsx similarity index 99% rename from interface/src/framework/system/SystemLog.tsx rename to interface/src/app/status/SystemLog.tsx index 8ee65396a..bf2ba5f48 100644 --- a/interface/src/framework/system/SystemLog.tsx +++ b/interface/src/app/status/SystemLog.tsx @@ -75,7 +75,7 @@ const levelLabel = (level: LogLevel) => { const SystemLog: FC = () => { const { LL } = useI18nContext(); - useLayoutTitle(LL.SYSTEM(0)); + useLayoutTitle(LL.LOG_OF(LL.SYSTEM(0))); const { loadData, diff --git a/interface/src/project/bbqkees.svg b/interface/src/app/status/bbqkees.svg similarity index 100% rename from interface/src/project/bbqkees.svg rename to interface/src/app/status/bbqkees.svg diff --git a/interface/src/components/layout/LayoutAppBar.tsx b/interface/src/components/layout/LayoutAppBar.tsx index 3d1a5c433..06e43e798 100644 --- a/interface/src/components/layout/LayoutAppBar.tsx +++ b/interface/src/components/layout/LayoutAppBar.tsx @@ -16,11 +16,9 @@ const LayoutAppBar: FC = ({ title, onToggleDrawer }) => { const pathnames = useLocation() .pathname.split('/') .filter((x) => x); + const show_back = pathnames.length > 1; + const navigate = useNavigate(); - let show_back = false; - if (pathnames.length > 1) { - show_back = pathnames[0] !== 'system' || pathnames[1] === 'espsystemstatus'; - } return ( { - + = ({ } > - + ) : ( - + )} diff --git a/interface/src/framework/ap/AccessPoint.tsx b/interface/src/framework/ap/AccessPoint.tsx deleted file mode 100644 index 08e55ca1f..000000000 --- a/interface/src/framework/ap/AccessPoint.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import type { FC } from 'react'; -import { Navigate, Route, Routes } from 'react-router-dom'; - -import { Tab } from '@mui/material'; - -import { RouterTabs, useLayoutTitle, useRouterTab } from 'components'; -import { useI18nContext } from 'i18n/i18n-react'; - -import APSettings from './APSettings'; -import APStatus from './APStatus'; - -const AccessPoint: FC = () => { - const { LL } = useI18nContext(); - - useLayoutTitle(LL.ACCESS_POINT(0)); - - const { routerTab } = useRouterTab(); - - return ( - <> - - - - - - } /> - } /> - } /> - - - ); -}; - -export default AccessPoint; diff --git a/interface/src/framework/mqtt/Mqtt.tsx b/interface/src/framework/mqtt/Mqtt.tsx deleted file mode 100644 index c4e2c9d56..000000000 --- a/interface/src/framework/mqtt/Mqtt.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import type { FC } from 'react'; -import { Navigate, Route, Routes } from 'react-router-dom'; - -import { Tab } from '@mui/material'; - -import { RouterTabs, useLayoutTitle, useRouterTab } from 'components'; -import { useI18nContext } from 'i18n/i18n-react'; - -import MqttSettings from './MqttSettings'; -import MqttStatus from './MqttStatus'; - -const Mqtt: FC = () => { - const { LL } = useI18nContext(); - - useLayoutTitle('MQTT'); - - const { routerTab } = useRouterTab(); - - return ( - <> - - - - - - } /> - } /> - } /> - - - ); -}; - -export default Mqtt; diff --git a/interface/src/framework/ntp/NetworkTime.tsx b/interface/src/framework/ntp/NetworkTime.tsx deleted file mode 100644 index b34f09699..000000000 --- a/interface/src/framework/ntp/NetworkTime.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import type { FC } from 'react'; -import { Navigate, Route, Routes } from 'react-router-dom'; - -import { Tab } from '@mui/material'; - -import { RouterTabs, useLayoutTitle, useRouterTab } from 'components'; -import { useI18nContext } from 'i18n/i18n-react'; - -import NTPSettings from './NTPSettings'; -import NTPStatus from './NTPStatus'; - -const NetworkTime: FC = () => { - const { LL } = useI18nContext(); - useLayoutTitle('NTP'); - - const { routerTab } = useRouterTab(); - - return ( - <> - - - - - - } /> - } /> - } /> - - - ); -}; - -export default NetworkTime; diff --git a/interface/src/framework/system/System.tsx b/interface/src/framework/system/System.tsx deleted file mode 100644 index 0cc0c28d6..000000000 --- a/interface/src/framework/system/System.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { type FC, useContext } from 'react'; -import { Navigate, Route, Routes } from 'react-router-dom'; - -import { Tab } from '@mui/material'; - -import { RequireAdmin, RouterTabs, useLayoutTitle, useRouterTab } from 'components'; -import { AuthenticatedContext } from 'contexts/authentication'; -import { useI18nContext } from 'i18n/i18n-react'; -import SystemActivity from 'project/SystemActivity'; - -import SystemLog from './SystemLog'; -import SystemStatus from './SystemStatus'; - -const System: FC = () => { - const { LL } = useI18nContext(); - - useLayoutTitle(LL.SYSTEM(0)); - - const { routerTab } = useRouterTab(); - const { me } = useContext(AuthenticatedContext); - - return ( - <> - - - - - - - } /> - } /> - - - - } - /> - } /> - - - ); -}; - -export default System; diff --git a/interface/src/types/system.ts b/interface/src/types/system.ts index 8bdfdddff..5dfca23c3 100644 --- a/interface/src/types/system.ts +++ b/interface/src/types/system.ts @@ -1,4 +1,4 @@ -import type { busConnectionStatus } from 'project/types'; +import type { busConnectionStatus } from 'app/main/types'; import type { NetworkConnectionStatus } from './network'; diff --git a/interface/src/validators/ap.ts b/interface/src/validators/ap.ts index f67c830e4..5a1514909 100644 --- a/interface/src/validators/ap.ts +++ b/interface/src/validators/ap.ts @@ -1,5 +1,5 @@ +import { isAPEnabled } from 'app/settings/APSettings'; import Schema from 'async-validator'; -import { isAPEnabled } from 'framework/ap/APSettings'; import type { APSettingsType } from 'types'; import { IP_ADDRESS_VALIDATOR } from './shared'; diff --git a/mock-api/rest_server.ts b/mock-api/rest_server.ts index 4da77f457..9b860c338 100644 --- a/mock-api/rest_server.ts +++ b/mock-api/rest_server.ts @@ -411,6 +411,7 @@ const guest_signin = { access_token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imd1ZXN0IiwiYWRtaW4iOmZhbHNlfQ.E_lylR_vGIQFZUGNwcl5F6OkHoaELGsC5zqhi0pAiJE' }; + // modify here to simulate admin and guest logins const signin = admin_signin; // const signin = guest_signin; From 77e5c6bf2ce37816e8f0b415ec4c650d8a8a0052 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 22 Jul 2024 15:01:20 +0200 Subject: [PATCH 2/5] add message to log menu option --- interface/src/app/status/Status.tsx | 28 +++++++++------------------- interface/src/i18n/de/index.ts | 3 ++- interface/src/i18n/en/index.ts | 3 ++- interface/src/i18n/fr/index.ts | 3 ++- interface/src/i18n/it/index.ts | 3 ++- interface/src/i18n/nl/index.ts | 3 ++- interface/src/i18n/no/index.ts | 3 ++- interface/src/i18n/pl/index.ts | 3 ++- interface/src/i18n/sk/index.ts | 3 ++- interface/src/i18n/sv/index.ts | 3 ++- interface/src/i18n/tr/index.ts | 3 ++- 11 files changed, 29 insertions(+), 29 deletions(-) diff --git a/interface/src/app/status/Status.tsx b/interface/src/app/status/Status.tsx index d5a637225..0a2db86cf 100644 --- a/interface/src/app/status/Status.tsx +++ b/interface/src/app/status/Status.tsx @@ -25,7 +25,6 @@ import { DialogActions, DialogContent, DialogTitle, - Divider, List, ListItem, ListItemAvatar, @@ -341,17 +340,6 @@ const SystemStatus: FC = () => { )} - - - - @@ -380,7 +368,6 @@ const SystemStatus: FC = () => { )} - @@ -403,7 +390,6 @@ const SystemStatus: FC = () => { )} - { to="/status/activity" /> - { to="/status/hardwarestatus" /> - { to="/status/network" /> - { to="/status/mqtt" /> - { to="/status/ntp" /> - { text={data.ap_status ? LL.ACTIVE() : LL.INACTIVE(0)} to="/status/ap" /> + + {renderScanDialog()} diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index fe2113107..095e75bbe 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -333,7 +333,8 @@ const de: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Modbus aktivieren' + ENABLE_MODBUS: 'Modbus aktivieren', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default de; diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 42df7e815..6cf6791bd 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -333,7 +333,8 @@ const en: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', MODULES_NONE: 'No external modules detected', RENAME: 'Rename', - ENABLE_MODBUS: 'Enable Modbus' + ENABLE_MODBUS: 'Enable Modbus', + VIEW_LOG: 'View log to diagnose issues' }; export default en; diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index bca5d1ecd..91eba1fc2 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -333,7 +333,8 @@ const fr: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Activer Modbus' + ENABLE_MODBUS: 'Activer Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default fr; diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 0b0e05bf8..f7d4b5866 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -333,7 +333,8 @@ const it: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Abilita Modbus' + ENABLE_MODBUS: 'Abilita Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default it; diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index ef82e4596..cbdf41b41 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -333,7 +333,8 @@ const nl: Translation = { MODULES_DESCRIPTION: 'Klik op de module om EMS-ESP library modules te activeren of te deactiveren', MODULES_NONE: 'Geen externe modules gedetecteerd', RENAME: 'Hernoemen', - ENABLE_MODBUS: 'Activeer Modbus' + ENABLE_MODBUS: 'Activeer Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default nl; diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index af78ba486..315043a67 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -333,7 +333,8 @@ const no: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Aktiver Modbus' + ENABLE_MODBUS: 'Aktiver Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default no; diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index a9ac4803a..834b60b25 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -333,7 +333,8 @@ const pl: BaseTranslation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Aktywuj Modbus' + ENABLE_MODBUS: 'Aktywuj Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default pl; diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index 19e4dc097..df5ce744d 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -333,7 +333,8 @@ const sk: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Povoliť Modbus' + ENABLE_MODBUS: 'Povoliť Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default sk; diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index afd865a7b..ec06fb2cf 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -333,7 +333,8 @@ const sv: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Aktivera Modbus' + ENABLE_MODBUS: 'Aktivera Modbus', + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default sv; diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index bd968418d..1616a09c6 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -333,7 +333,8 @@ const tr: Translation = { MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate RENAME: 'Rename', // TODO translate - ENABLE_MODBUS: 'Enable Modbus' // TODO translate + ENABLE_MODBUS: 'Enable Modbus', // TODO translate + VIEW_LOG: 'View log to diagnose issues' // TODO translate }; export default tr; From 641b4e5bf06093fa795ee4592df71f321ee43d4c Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 22 Jul 2024 17:08:11 +0200 Subject: [PATCH 3/5] remove scan --- interface/src/app/main/api.ts | 3 - interface/src/app/status/Activity.tsx | 2 +- interface/src/app/status/Status.tsx | 134 +++++++------------------- interface/src/i18n/de/index.ts | 7 +- interface/src/i18n/en/index.ts | 7 +- interface/src/i18n/fr/index.ts | 7 +- interface/src/i18n/it/index.ts | 7 +- interface/src/i18n/nl/index.ts | 7 +- interface/src/i18n/no/index.ts | 7 +- interface/src/i18n/pl/index.ts | 7 +- interface/src/i18n/sk/index.ts | 7 +- interface/src/i18n/sv/index.ts | 7 +- interface/src/i18n/tr/index.ts | 7 +- mock-api/rest_server.ts | 3 - src/web/WebDataService.cpp | 12 --- src/web/WebDataService.h | 2 - src/web/WebStatusService.cpp | 1 + 17 files changed, 45 insertions(+), 182 deletions(-) diff --git a/interface/src/app/main/api.ts b/interface/src/app/main/api.ts index 7f123c7b6..b2c4bd0d0 100644 --- a/interface/src/app/main/api.ts +++ b/interface/src/app/main/api.ts @@ -50,9 +50,6 @@ export const writeAnalogSensor = (as: WriteAnalogSensor) => // Activity export const readActivity = () => alovaInstance.Get('/rest/activity'); -// Scan devices -export const scanDevices = () => alovaInstance.Post('/rest/scanDevices'); - // API, used in HelpInformation export const API = (apiCall: APIcall) => alovaInstance.Post('/api', apiCall); diff --git a/interface/src/app/status/Activity.tsx b/interface/src/app/status/Activity.tsx index 84c5199be..1caf3ee86 100644 --- a/interface/src/app/status/Activity.tsx +++ b/interface/src/app/status/Activity.tsx @@ -27,7 +27,7 @@ const SystemActivity: FC = () => { const { LL } = useI18nContext(); - useLayoutTitle(LL.EMS_BUS_STATUS()); + useLayoutTitle(LL.DATA_TRAFFIC()); const stats_theme = tableTheme({ Table: ` diff --git a/interface/src/app/status/Status.tsx b/interface/src/app/status/Status.tsx index 0a2db86cf..e3e1f679a 100644 --- a/interface/src/app/status/Status.tsx +++ b/interface/src/app/status/Status.tsx @@ -56,7 +56,6 @@ const SystemStatus: FC = () => { const { me } = useContext(AuthenticatedContext); const [confirmRestart, setConfirmRestart] = useState(false); - const [confirmScan, setConfirmScan] = useState(false); const [processing, setProcessing] = useState(false); const [restarting, setRestarting] = useState(); @@ -74,10 +73,6 @@ const SystemStatus: FC = () => { error } = useRequest(SystemApi.readSystemStatus, { force: true }); - const { send: scanDevices } = useRequest(EMSESP.scanDevices, { - immediate: false - }); - const theme = useTheme(); const formatDurationSec = (duration_sec: number) => { @@ -108,14 +103,20 @@ const SystemStatus: FC = () => { if (data) { switch (data.status) { case busConnectionStatus.BUS_STATUS_CONNECTED: - return LL.CONNECTED(0) + ' (' + formatDurationSec(data.bus_uptime) + ')'; + return ( + 'EMS ' + + LL.CONNECTED(0) + + ' (' + + formatDurationSec(data.bus_uptime) + + ')' + ); case busConnectionStatus.BUS_STATUS_TX_ERRORS: - return LL.TX_ISSUES(); + return 'EMS ' + LL.TX_ISSUES(); case busConnectionStatus.BUS_STATUS_OFFLINE: - return LL.DISCONNECTED(); + return 'EMS ' + LL.DISCONNECTED(); } } - return 'Unknown'; + return 'EMS state unknown'; }; const busStatusHighlight = () => { @@ -200,46 +201,6 @@ const SystemStatus: FC = () => { const activeHighlight = (value: boolean) => value ? theme.palette.success.main : theme.palette.info.main; - const scan = async () => { - await scanDevices() - .then(() => { - toast.info(LL.SCANNING() + '...'); - }) - .catch((error: Error) => { - toast.error(error.message); - }); - setConfirmScan(false); - }; - - const renderScanDialog = () => ( - setConfirmScan(false)} - > - {LL.SCAN_DEVICES()} - {LL.EMS_SCAN()} - - - - - - ); - const restart = async () => { setProcessing(true); await restartCommand() @@ -318,56 +279,6 @@ const SystemStatus: FC = () => { return ( <> - - - - - - - - {me.admin && ( - - )} - - - - - - - - - - {me.admin && ( - - )} - - @@ -390,11 +301,33 @@ const SystemStatus: FC = () => { )} + + + + + + + + {me.admin && ( + + )} + + @@ -458,7 +391,6 @@ const SystemStatus: FC = () => { /> - {renderScanDialog()} {renderRestartDialog()} diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 095e75bbe..f0405f0a3 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -71,13 +71,11 @@ const de: Translation = { TX_ISSUES: 'Tx-Probleme - versuchen Sie einen anderen Tx-Modus', DISCONNECTED: 'Getrennt', EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?', - EMS_BUS_STATUS: 'EMS-Busstatus', - ACTIVE_DEVICES: 'Aktive Geräte und Sensoren', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS Gerät', SUCCESS: 'ERFOLG', FAIL: 'FEHLER', QUALITY: 'QUALITÄT', - SCAN_DEVICES: 'Nach neuen Geräten suchen', SCAN: 'Suche', STATUS_NAMES: [ 'EMS-Telegramme empfangen (Rx)', @@ -89,9 +87,6 @@ const de: Translation = { 'API-Aufrufe', 'Syslog-Mitteilungen' ], - NUM_DEVICES: '{num} Gerät{{e}}', - NUM_TEMP_SENSORS: '{num} Temperatursensor{{en}}', - NUM_ANALOG_SENSORS: '{num} Analogsensor{{en}}', NUM_DAYS: '{num} Tag{{e}}', NUM_SECONDS: '{num} Sekunde{{n}}', NUM_HOURS: '{num} Stunde{{n}}', diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 6cf6791bd..78086b8ff 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -71,13 +71,11 @@ const en: Translation = { TX_ISSUES: 'Tx issues - check Tx Mode', DISCONNECTED: 'Disconnected', EMS_SCAN: 'Are you sure you want to initiate a full device scan of the EMS bus?', - EMS_BUS_STATUS: 'EMS Bus Status', - ACTIVE_DEVICES: 'Active Devices & Sensors', + DATA_TRAFFIC: 'Data Traffic', EMS_DEVICE: 'EMS Device', SUCCESS: 'SUCCESS', FAIL: 'FAIL', QUALITY: 'QUALITY', - SCAN_DEVICES: 'Scan for new devices', SCAN: 'Scan', STATUS_NAMES: [ 'EMS Telegrams Received (Rx)', @@ -89,9 +87,6 @@ const en: Translation = { 'API Calls', 'Syslog Messages' ], - NUM_DEVICES: '{num} Device{{s}}', - NUM_TEMP_SENSORS: '{num} Temperature Sensor{{s}}', - NUM_ANALOG_SENSORS: '{num} Analog Sensor{{s}}', NUM_DAYS: '{num} day{{s}}', NUM_SECONDS: '{num} second{{s}}', NUM_HOURS: '{num} hour{{s}}', diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index 91eba1fc2..7a6d8c7fa 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -71,13 +71,11 @@ const fr: Translation = { TX_ISSUES: 'Problèmes de transmission (Tx) - Essayez un autre mode Tx', DISCONNECTED: 'Déconnecté', EMS_SCAN: 'Etes-vous sûr de vouloir lancer un scan complet du bus EMS ?', - EMS_BUS_STATUS: 'Statut du bus EMS', - ACTIVE_DEVICES: 'Appareils et capteurs actifs', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'Appareils EMS', SUCCESS: 'SUCCÈS', FAIL: 'ÉCHEC', QUALITY: 'QUALITÉ', - SCAN_DEVICES: 'Rechercher de nouveaux appareils', SCAN: 'Scan', STATUS_NAMES: [ 'Télégrammes EMS reçus (Rx)', @@ -89,9 +87,6 @@ const fr: Translation = { "Appels à l'API", 'Messages Syslog' ], - NUM_DEVICES: '{num} Appareil{{s}}', - NUM_TEMP_SENSORS: '{num} Capteur{{s}} de température', - NUM_ANALOG_SENSORS: '{num} Capteur{{s}} analogique{{s}}', NUM_DAYS: '{num} jour{{s}}', NUM_SECONDS: '{num} seconde{{s}}', NUM_HOURS: '{num} heure{{s}}', diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index f7d4b5866..ac0b40a65 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -71,13 +71,11 @@ const it: Translation = { TX_ISSUES: 'Problema di Tx - prova una modalità differente', DISCONNECTED: 'Disconnesso', EMS_SCAN: 'Sei sicuro di voler iniziare una scansione completa del bus EMS ?', - EMS_BUS_STATUS: 'Stato Bus EMS', - ACTIVE_DEVICES: 'Dispositivi & sensori attivi', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'Dispositivo EMS ', SUCCESS: 'SUCCESSO', FAIL: 'FALLITO', QUALITY: 'QUALITÂ', - SCAN_DEVICES: 'Scansione per nuovi dispositivi', SCAN: 'Scansione', STATUS_NAMES: [ 'Telegrammi EMS Ricevuti (Rx)', @@ -89,9 +87,6 @@ const it: Translation = { 'Chiamate API', 'Messaggi Syslog' ], - NUM_DEVICES: '{num} Dispositivi {{s}}', - NUM_TEMP_SENSORS: '{num} Sensori Temperatura {{s}}', - NUM_ANALOG_SENSORS: '{num} Sensori Analogici {{s}}', NUM_DAYS: '{num} giorni {{s}}', NUM_SECONDS: '{num} secondi {{s}}', NUM_HOURS: '{num} ore {{s}}', diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index cbdf41b41..68f7a7f0e 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -71,13 +71,11 @@ const nl: Translation = { TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus', DISCONNECTED: 'Niet verbonden', EMS_SCAN: 'Weet je zeker dat je een volledige EMS bus scan uit wilt voeren?', - EMS_BUS_STATUS: 'EMS busstatus', - ACTIVE_DEVICES: 'Actieve Apparaten & Sensoren', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS Apparaat', SUCCESS: 'SUCCESS', FAIL: 'MISLUKT', QUALITY: 'QUALITEIT', - SCAN_DEVICES: 'Scannen naar nieuwe apparaten', SCAN: 'Scan', STATUS_NAMES: [ 'EMS Telegrammen ontvangen (Rx)', @@ -89,9 +87,6 @@ const nl: Translation = { 'API calls', 'Syslog berichten' ], - NUM_DEVICES: '{num} Apparaat{{en}}', - NUM_TEMP_SENSORS: '{num} Temperatuursensor{{en}}', - NUM_ANALOG_SENSORS: '{num} Analoge sensor{{en}}', NUM_DAYS: '{num} dag{{en}}', NUM_SECONDS: '{num} second{{en}}', NUM_HOURS: '{num} {{uur|uren}}', diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 315043a67..64b213371 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -71,13 +71,11 @@ const no: Translation = { TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus', DISCONNECTED: 'Frakoblet', EMS_SCAN: 'Er du sikker på du vil starte full søking av EMS bussen?', - EMS_BUS_STATUS: 'EMS Buss Status', - ACTIVE_DEVICES: 'Aktive Enheter og Sensorer', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS Enhet', SUCCESS: 'VELLYKKET', FAIL: 'MISLYKKET', QUALITY: 'KVALITET', - SCAN_DEVICES: 'Søk etter nye enheter', SCAN: 'Søk', STATUS_NAMES: [ 'EMS Telegrammer Mottatt (Rx)', @@ -89,9 +87,6 @@ const no: Translation = { 'API Anrop', 'Syslog Meldinger' ], - NUM_DEVICES: '{num} Enhet{{er}}', - NUM_TEMP_SENSORS: '{num} Temperatursensor{{er}}', - NUM_ANALOG_SENSORS: '{num} Analogsensor{{er}}', NUM_DAYS: '{num} Dag{{er}}', NUM_SECONDS: '{num} Sekund{{er}}', NUM_HOURS: '{num} Time{{r}}', diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 834b60b25..1801513ab 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -71,13 +71,11 @@ const pl: BaseTranslation = { TX_ISSUES: 'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"', DISCONNECTED: 'brak połączenia', EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?', - EMS_BUS_STATUS: 'Status magistrali EMS', - ACTIVE_DEVICES: 'Aktywne urządzenia i czujniki', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'Urządzenie EMS', SUCCESS: 'Udane', FAIL: 'Nieudane', QUALITY: 'Jakość', - SCAN_DEVICES: 'Wyszukiwanie nowych urządzeń', SCAN: 'Skanuj', STATUS_NAMES: [ 'EMS, telegramy odebrane (Rx)', @@ -89,9 +87,6 @@ const pl: BaseTranslation = { 'Wywołania API', 'Wpisy w SysLog' ], - NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS', - NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury', - NUM_ANALOG_SENSORS: '{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP', NUM_DAYS: '{num} d{{ni|zień|ni|ni|ni}}', NUM_SECONDS: '{num} sekun{{d|da|dy|dy|d}}', NUM_HOURS: '{num} godzi{{n|na|ny|ny|n}}', diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index df5ce744d..62c991461 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -71,13 +71,11 @@ const sk: Translation = { TX_ISSUES: 'Problémy s Tx – skontrolujte Tx režim', DISCONNECTED: 'Odpojené', EMS_SCAN: 'Naozaj chcete spustiť úplnú kontrolu zariadenia zbernice EMS?', - EMS_BUS_STATUS: 'Stav zbernice EMS', - ACTIVE_DEVICES: 'Aktívne zariadenia a snímače', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS zariadenie', SUCCESS: 'ÚSPEŠNÉ', FAIL: 'ZLÝHANIE', QUALITY: 'KVALITA', - SCAN_DEVICES: 'Scan pre nové zariadenia', SCAN: 'Scan', STATUS_NAMES: [ 'EMS Telegramy prijaté (Rx)', @@ -89,9 +87,6 @@ const sk: Translation = { 'Externé API volania', 'Syslog správy' ], - NUM_DEVICES: '{num} Zariaden{{í|ie|ia|ia|í|í}}', - NUM_TEMP_SENSORS: '{num} Teplotn{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}', - NUM_ANALOG_SENSORS: '{num} Analogov{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}', NUM_DAYS: '{num} d{{ní|eň|ní|ní|ní|ní}}', NUM_SECONDS: '{num} sek{{únd|unda|undy|undy|únd|únd}}', NUM_HOURS: '{num} hod{{ín|ina|iny|iny|ín|ín}}', diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index ec06fb2cf..6026de769 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -71,13 +71,11 @@ const sv: Translation = { TX_ISSUES: 'Sändfel - Prova ett annat TX-läge', DISCONNECTED: 'Nedkopplad', EMS_SCAN: 'Är du säker att du vill initiera en full genomsökning av EMS-bussen?', - EMS_BUS_STATUS: 'Status', - ACTIVE_DEVICES: 'Aktiva Enheter', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS Enhet', SUCCESS: 'Lyckades', FAIL: 'Misslyckades', QUALITY: 'Kvalitet', - SCAN_DEVICES: 'Sök efter nya enheter', SCAN: 'Sök', STATUS_NAMES: [ 'EMS-telegram (Rx)', @@ -89,9 +87,6 @@ const sv: Translation = { 'API-anrop', 'Syslog-meddelanden' ], - NUM_DEVICES: '{num} Enhet{{er}}', - NUM_TEMP_SENSORS: '{num} Temperatur-sensor{{er}}', - NUM_ANALOG_SENSORS: '{num} Analoga Sensor{{er}}', NUM_DAYS: '{num} dag{{ar}}', NUM_SECONDS: '{num} sekund{{er}}', NUM_HOURS: '{num} timmar', diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 1616a09c6..07c7b1f84 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -71,13 +71,11 @@ const tr: Translation = { TX_ISSUES: 'Tx sorunu - başka bir Tx Modu deneyin', DISCONNECTED: 'Bağlantı kesildi', EMS_SCAN: 'EMS Hattında tam bir cihaz taraması başlatmak istediğinizden emin misiniz?', - EMS_BUS_STATUS: 'EMS Hattı Durumu', - ACTIVE_DEVICES: 'Aktif Cihazlar ve Sensörler', + DATA_TRAFFIC: 'Data Traffic', // TODO Translate EMS_DEVICE: 'EMS Cihazı', SUCCESS: 'BAŞARILI', FAIL: 'HATA', QUALITY: 'KALİTE', - SCAN_DEVICES: 'Yeni cihaz taraması', SCAN: 'Tara', STATUS_NAMES: [ 'EMS Telegramlar Alındı (Rx)', @@ -89,9 +87,6 @@ const tr: Translation = { 'API Aramaları', 'Sistem Kayıt Mesajları' ], - NUM_DEVICES: '{num} Cihaz{{ları}}', - NUM_TEMP_SENSORS: '{num} Sıcaklık Sensör{{leri}}', - NUM_ANALOG_SENSORS: '{num} Analog Sensör{{ler}}', NUM_DAYS: '{num} gün{{ler}}', NUM_SECONDS: '{num} saniye{{ler}}', NUM_HOURS: '{num} saat{{ler}}', diff --git a/mock-api/rest_server.ts b/mock-api/rest_server.ts index 9b860c338..a79e400a6 100644 --- a/mock-api/rest_server.ts +++ b/mock-api/rest_server.ts @@ -425,7 +425,6 @@ const EMSESP_SETTINGS_ENDPOINT = REST_ENDPOINT_ROOT + 'settings'; const EMSESP_CORE_DATA_ENDPOINT = REST_ENDPOINT_ROOT + 'coreData'; const EMSESP_SENSOR_DATA_ENDPOINT = REST_ENDPOINT_ROOT + 'sensorData'; const EMSESP_DEVICES_ENDPOINT = REST_ENDPOINT_ROOT + 'devices'; -const EMSESP_SCANDEVICES_ENDPOINT = REST_ENDPOINT_ROOT + 'scanDevices'; const EMSESP_DEVICEDATA_ENDPOINT1 = REST_ENDPOINT_ROOT + 'deviceData'; const EMSESP_DEVICEDATA_ENDPOINT2 = REST_ENDPOINT_ROOT + 'deviceData/:id?'; @@ -4325,8 +4324,6 @@ router return { devices: sorted_devices }; }) - .post(EMSESP_SCANDEVICES_ENDPOINT, () => status(200)) - .get(EMSESP_DEVICEDATA_ENDPOINT1, (request) => request.query.id ? deviceData(Number(request.query.id)) : status(404) ) diff --git a/src/web/WebDataService.cpp b/src/web/WebDataService.cpp index 46c2d26a1..7cfb6b2f0 100644 --- a/src/web/WebDataService.cpp +++ b/src/web/WebDataService.cpp @@ -43,18 +43,6 @@ WebDataService::WebDataService(AsyncWebServer * server, SecurityManager * securi server->on(SENSOR_DATA_SERVICE_PATH, HTTP_GET, securityManager->wrapRequest([this](AsyncWebServerRequest * request) { sensor_data(request); }, AuthenticationPredicates::IS_AUTHENTICATED)); - - // POST's - server->on(SCAN_DEVICES_SERVICE_PATH, - HTTP_POST, - securityManager->wrapRequest([this](AsyncWebServerRequest * request) { scan_devices(request); }, AuthenticationPredicates::IS_ADMIN)); -} - -// scan devices service -void WebDataService::scan_devices(AsyncWebServerRequest * request) { - EMSESP::logger().info("Scanning devices..."); - EMSESP::scan_devices(); - request->send(200); } // this is used in the dashboard and contains all ems device information diff --git a/src/web/WebDataService.h b/src/web/WebDataService.h index f85fbe358..390cb80e9 100644 --- a/src/web/WebDataService.h +++ b/src/web/WebDataService.h @@ -28,7 +28,6 @@ #define WRITE_DEVICE_VALUE_SERVICE_PATH "/rest/writeDeviceValue" #define WRITE_TEMPERATURE_SENSOR_SERVICE_PATH "/rest/writeTemperatureSensor" #define WRITE_ANALOG_SENSOR_SERVICE_PATH "/rest/writeAnalogSensor" -#define SCAN_DEVICES_SERVICE_PATH "/rest/scanDevices" namespace emsesp { @@ -50,7 +49,6 @@ class WebDataService { void write_device_value(AsyncWebServerRequest * request, JsonVariant json); void write_temperature_sensor(AsyncWebServerRequest * request, JsonVariant json); void write_analog_sensor(AsyncWebServerRequest * request, JsonVariant json); - void scan_devices(AsyncWebServerRequest * request); // command }; } // namespace emsesp diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 929ec0f97..63cbd1766 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -24,6 +24,7 @@ namespace emsesp { +// /rest/ESPSystemStatus WebStatusService::WebStatusService(AsyncWebServer * server, SecurityManager * securityManager) { server->on(ESPSYSTEM_STATUS_SERVICE_PATH, HTTP_GET, [this](AsyncWebServerRequest * request) { ESPsystemStatus(request); }); server->on(SYSTEM_STATUS_SERVICE_PATH, HTTP_GET, [this](AsyncWebServerRequest * request) { systemStatus(request); }); From e98264d1a6378a4e1773898e46f8da6c9714a189 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 23 Jul 2024 10:07:25 +0200 Subject: [PATCH 4/5] go back to local copy of ArduinoJson as a single header --- {lib_standalone => lib/ArduinoJson}/ArduinoJson.h | 0 lib/ArduinoJson/README.txt | 7 +++++++ pio_local.ini_example | 1 - platformio.ini | 4 ++-- 4 files changed, 9 insertions(+), 3 deletions(-) rename {lib_standalone => lib/ArduinoJson}/ArduinoJson.h (100%) create mode 100644 lib/ArduinoJson/README.txt diff --git a/lib_standalone/ArduinoJson.h b/lib/ArduinoJson/ArduinoJson.h similarity index 100% rename from lib_standalone/ArduinoJson.h rename to lib/ArduinoJson/ArduinoJson.h diff --git a/lib/ArduinoJson/README.txt b/lib/ArduinoJson/README.txt new file mode 100644 index 000000000..78892cf61 --- /dev/null +++ b/lib/ArduinoJson/README.txt @@ -0,0 +1,7 @@ +Version 7.1.0 + +From https://github.com/bblanchon/ArduinoJson/releases + +MIT License (MIT) + +Copyright © 2014-2024, Benoit BLANCHON diff --git a/pio_local.ini_example b/pio_local.ini_example index 28a01c6c9..d99543c7d 100644 --- a/pio_local.ini_example +++ b/pio_local.ini_example @@ -38,7 +38,6 @@ custom_password = admin ; rm -rf .pio/libdeps/native/EMS-ESP-Modules; pio run -e native -t clean; pio run -e native -t exec ; lib_deps = ; file://../modules/EMS-ESP-Modules -; bblanchon/ArduinoJson@^7.0.4 [env:native] extra_scripts = diff --git a/platformio.ini b/platformio.ini index 05fd80548..97f4d732a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -81,7 +81,6 @@ check_flags = lib_ldf_mode = chain+ lib_deps = https://github.com/emsesp/EMS-ESP-Modules.git - bblanchon/ArduinoJson@7.1.0 ; build for GitHub Actions CI ; the Web interface is built seperately, so is skipped in extra_scripts @@ -229,6 +228,7 @@ build_src_flags = -I./lib/uuid-log/src -I./lib/semver -I./lib/PButton + -I./lib/ArduinoJson -I./lib/espMqttClient/src -I./lib/espMqttClient/src/Transport build_src_filter = @@ -244,4 +244,4 @@ build_src_filter = +<../lib/espMqttClient/src/Transport> lib_compat_mode = off lib_ldf_mode = off -lib_ignore = ArduinoJson +lib_ignore = Module EMS-ESP-Modules From 914b84de7d3134231cb5f99283de97c3d570ee73 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 23 Jul 2024 10:07:49 +0200 Subject: [PATCH 5/5] include local copy of module library for native compiling without dependencies --- lib_standalone/ModuleLibrary.cpp | 31 +++++++++++++++++++++++++++++++ lib_standalone/ModuleLibrary.h | 10 ++++------ 2 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 lib_standalone/ModuleLibrary.cpp diff --git a/lib_standalone/ModuleLibrary.cpp b/lib_standalone/ModuleLibrary.cpp new file mode 100644 index 000000000..eae248dd4 --- /dev/null +++ b/lib_standalone/ModuleLibrary.cpp @@ -0,0 +1,31 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2024 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include + +void ModuleLibrary::list(JsonObject output) {}; + +void ModuleLibrary::loop() {}; + +void ModuleLibrary::start(emsesp::EMSESP * emsesp_main, bool test_mode) {}; + +bool ModuleLibrary::enable(const char * key, const char * license, bool enable) { + return true; +}; diff --git a/lib_standalone/ModuleLibrary.h b/lib_standalone/ModuleLibrary.h index 8d77f0e6e..e1d27f236 100644 --- a/lib_standalone/ModuleLibrary.h +++ b/lib_standalone/ModuleLibrary.h @@ -38,12 +38,10 @@ class ModuleLibrary { std::unique_ptr module; }; - void start(emsesp::EMSESP * emsesp_main, bool test_mode = false) {}; - void loop() {}; - void list(JsonObject output) {}; - bool enable(const char * key, const char * license, bool enable) { - return true; - }; + void start(emsesp::EMSESP * emsesp_main, bool test_mode = false); + void loop(); + void list(JsonObject output); + bool enable(const char * key, const char * license, bool enable); static uuid::log::Logger logger_;