fix NTP icons, add AP

This commit is contained in:
proddy
2024-03-23 17:16:45 +01:00
parent 2ab50bd0a2
commit 0deaafb9ce
14 changed files with 73 additions and 70 deletions

View File

@@ -32,7 +32,7 @@
"@types/imagemin": "^8.0.5",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.30",
"@types/react": "^18.2.67",
"@types/react": "^18.2.69",
"@types/react-dom": "^18.2.22",
"@types/react-router-dom": "^5.3.3",
"alova": "^2.18.0",
@@ -66,11 +66,11 @@
"eslint-plugin-prettier": "alpha",
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0",
"preact": "^10.20.0",
"preact": "^10.20.1",
"prettier": "^3.2.5",
"rollup-plugin-visualizer": "^5.12.0",
"terser": "^5.29.2",
"vite": "^5.2.3",
"vite": "^5.2.4",
"vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^4.3.2"
},

View File

@@ -8,6 +8,7 @@ import MemoryIcon from '@mui/icons-material/Memory';
import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';
import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore';
import SettingsEthernetIcon from '@mui/icons-material/SettingsEthernet';
import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna';
import TuneIcon from '@mui/icons-material/Tune';
import { List, Button, Dialog, DialogActions, DialogContent, DialogTitle, Box } from '@mui/material';
@@ -171,7 +172,7 @@ const Settings: FC = () => {
/>
<ListMenuItem
icon={AccessTimeIcon}
icon={SettingsInputAntennaIcon}
bgcolor="#5f9a5f"
label={LL.ACCESS_POINT(0)}
text={LL.CONFIGURE(LL.ACCESS_POINT(0))}

View File

@@ -4,7 +4,7 @@ import { Navigate, Routes, Route } from 'react-router-dom';
import APSettings from './APSettings';
import APStatus from './APStatus';
import type { FC } from 'react';
import { RequireAdmin, RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { useI18nContext } from 'i18n/i18n-react';
@@ -23,14 +23,7 @@ const AccessPoint: FC = () => {
</RouterTabs>
<Routes>
<Route path="status" element={<APStatus />} />
<Route
path="settings"
element={
<RequireAdmin>
<APSettings />
</RequireAdmin>
}
/>
<Route path="settings" element={<APSettings />} />
<Route path="*" element={<Navigate replace to="settings" />} />
</Routes>
</>

View File

@@ -4,7 +4,7 @@ import MqttSettings from './MqttSettings';
import MqttStatus from './MqttStatus';
import type { FC } from 'react';
import { RequireAdmin, RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { useI18nContext } from 'i18n/i18n-react';
@@ -23,14 +23,7 @@ const Mqtt: FC = () => {
</RouterTabs>
<Routes>
<Route path="status" element={<MqttStatus />} />
<Route
path="settings"
element={
<RequireAdmin>
<MqttSettings />
</RequireAdmin>
}
/>
<Route path="settings" element={<MqttSettings />} />
<Route path="*" element={<Navigate replace to="settings" />} />
</Routes>
</>

View File

@@ -8,7 +8,7 @@ import WiFiNetworkScanner from './WiFiNetworkScanner';
import type { FC } from 'react';
import type { WiFiNetwork } from 'types';
import { RequireAdmin, RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { useI18nContext } from 'i18n/i18n-react';
const Network: FC = () => {
@@ -48,22 +48,8 @@ const Network: FC = () => {
</RouterTabs>
<Routes>
<Route path="status" element={<NetworkStatus />} />
<Route
path="scan"
element={
<RequireAdmin>
<WiFiNetworkScanner />
</RequireAdmin>
}
/>
<Route
path="settings"
element={
<RequireAdmin>
<NetworkSettings />
</RequireAdmin>
}
/>
<Route path="scan" element={<WiFiNetworkScanner />} />
<Route path="settings" element={<NetworkSettings />} />
<Route path="*" element={<Navigate replace to="settings" />} />
</Routes>
</WiFiConnectionContext.Provider>

View File

@@ -4,7 +4,7 @@ import NTPSettings from './NTPSettings';
import NTPStatus from './NTPStatus';
import type { FC } from 'react';
import { RequireAdmin, RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { RouterTabs, useLayoutTitle, useRouterTab } from 'components';
import { useI18nContext } from 'i18n/i18n-react';
@@ -22,14 +22,7 @@ const NetworkTime: FC = () => {
</RouterTabs>
<Routes>
<Route path="status" element={<NTPStatus />} />
<Route
path="settings"
element={
<RequireAdmin>
<NTPSettings />
</RequireAdmin>
}
/>
<Route path="settings" element={<NTPSettings />} />
<Route path="*" element={<Navigate replace to="settings" />} />
</Routes>
</>

View File

@@ -1,11 +1,12 @@
import { Tab } from '@mui/material';
import { useContext, type FC } from 'react';
import { Navigate, Routes, Route } from 'react-router-dom';
import SystemLog from './SystemLog';
import SystemStatus from './SystemStatus';
import type { FC } from 'react';
import { useRouterTab, RouterTabs, useLayoutTitle } from 'components';
import { useRouterTab, RouterTabs, useLayoutTitle, RequireAdmin } from 'components';
import { AuthenticatedContext } from 'contexts/authentication';
import { useI18nContext } from 'i18n/i18n-react';
import SystemActivity from 'project/SystemActivity';
@@ -15,18 +16,26 @@ const System: FC = () => {
useLayoutTitle(LL.SYSTEM(0));
const { routerTab } = useRouterTab();
const { me } = useContext(AuthenticatedContext);
return (
<>
<RouterTabs value={routerTab}>
<Tab value="status" label={LL.STATUS_OF('')} />
<Tab value="activity" label={LL.ACTIVITY()} />
<Tab value="log" label={LL.LOG_OF('')} />
<Tab disabled={!me.admin} value="log" label={me.admin ? LL.LOG_OF('') : ''} />
</RouterTabs>
<Routes>
<Route path="status" element={<SystemStatus />} />
<Route path="activity" element={<SystemActivity />} />
<Route path="log" element={<SystemLog />} />
<Route
path="log"
element={
<RequireAdmin>
<SystemLog />
</RequireAdmin>
}
/>
<Route path="*" element={<Navigate replace to="status" />} />
</Routes>
</>

View File

@@ -1,3 +1,4 @@
import AccessTimeIcon from '@mui/icons-material/AccessTime';
import BuildIcon from '@mui/icons-material/Build';
import CancelIcon from '@mui/icons-material/Cancel';
import CastIcon from '@mui/icons-material/Cast';
@@ -6,6 +7,7 @@ import DirectionsBusIcon from '@mui/icons-material/DirectionsBus';
import MemoryIcon from '@mui/icons-material/Memory';
import PermScanWifiIcon from '@mui/icons-material/PermScanWifi';
import RefreshIcon from '@mui/icons-material/Refresh';
import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna';
import TimerIcon from '@mui/icons-material/Timer';
import {
@@ -249,7 +251,7 @@ const SystemStatus: FC = () => {
<ListMenuItem
disabled={!me.admin}
icon={DeviceHubIcon}
icon={AccessTimeIcon}
bgcolor={ntpStatusHighlight()}
label={LL.STATUS_OF('NTP')}
text={ntpStatus()}
@@ -266,6 +268,16 @@ const SystemStatus: FC = () => {
to="/settings/ota"
/>
<Divider variant="inset" component="li" />
<ListMenuItem
disabled={!me.admin}
icon={SettingsInputAntennaIcon}
bgcolor={activeHighlight(data.ota_status)}
label={LL.ACCESS_POINT(0)}
text={data.ap_status ? LL.ACTIVE() : LL.INACTIVE(0)}
to="/settings/ap/status"
/>
<Divider variant="inset" component="li" />
</List>
{renderScanDialog()}

View File

@@ -37,6 +37,7 @@ export interface SystemStatus {
ntp_status: number;
ota_status: boolean;
mqtt_status: boolean;
ap_status: boolean;
}
export interface OTASettingsType {

View File

@@ -1595,14 +1595,14 @@ __metadata:
languageName: node
linkType: hard
"@types/react@npm:^18.2.67":
version: 18.2.67
resolution: "@types/react@npm:18.2.67"
"@types/react@npm:^18.2.69":
version: 18.2.69
resolution: "@types/react@npm:18.2.69"
dependencies:
"@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10/d7e248dbe8d9d3b05f0d8e128d615fc9c85aa2c5d15634271d20cb9b343dbeffb0875f31a44e7ac63b42afc25949bd4c3633b7ebee45ee4666591ca934a8dffb
checksum: 10/5cc185f00ad5a4c2261e127ad25241448492f391e2206738b0477cbdba6aa75692e18ece5e75854ed513342d95c9ee83315744cb6b1470d488772cef1f8b40c8
languageName: node
linkType: hard
@@ -1784,7 +1784,7 @@ __metadata:
"@types/imagemin": "npm:^8.0.5"
"@types/lodash-es": "npm:^4.17.12"
"@types/node": "npm:^20.11.30"
"@types/react": "npm:^18.2.67"
"@types/react": "npm:^18.2.69"
"@types/react-dom": "npm:^18.2.22"
"@types/react-router-dom": "npm:^5.3.3"
"@typescript-eslint/eslint-plugin": "npm:^7.3.1"
@@ -1805,7 +1805,7 @@ __metadata:
jwt-decode: "npm:^4.0.0"
lodash-es: "npm:^4.17.21"
mime-types: "npm:^2.1.35"
preact: "npm:^10.20.0"
preact: "npm:^10.20.1"
prettier: "npm:^3.2.5"
react: "npm:latest"
react-dom: "npm:latest"
@@ -1818,7 +1818,7 @@ __metadata:
terser: "npm:^5.29.2"
typesafe-i18n: "npm:^5.26.2"
typescript: "npm:^5.4.3"
vite: "npm:^5.2.3"
vite: "npm:^5.2.4"
vite-plugin-imagemin: "npm:^0.6.1"
vite-tsconfig-paths: "npm:^4.3.2"
languageName: unknown
@@ -6795,10 +6795,10 @@ __metadata:
languageName: node
linkType: hard
"preact@npm:^10.20.0":
version: 10.20.0
resolution: "preact@npm:10.20.0"
checksum: 10/fb8cfc1ab1b4b8f2bd483b9fdd2f8614cc7e099d741ec33f41d95d9056aefbe3fe5897201ef0f37c76238e7657ecd38afdef377e171cb1477068aae1dcf020d6
"preact@npm:^10.20.1":
version: 10.20.1
resolution: "preact@npm:10.20.1"
checksum: 10/894ac14b3ec6f8ca308b53fb14e12e57678248fd1faa24ae857f5e37d9c11b34833e6dd1ba8210a34de4d6d523462923b1f9c93d35ce433874affd056f2d0998
languageName: node
linkType: hard
@@ -8491,9 +8491,9 @@ __metadata:
languageName: node
linkType: hard
"vite@npm:^5.2.3":
version: 5.2.3
resolution: "vite@npm:5.2.3"
"vite@npm:^5.2.4":
version: 5.2.4
resolution: "vite@npm:5.2.4"
dependencies:
esbuild: "npm:^0.20.1"
fsevents: "npm:~2.3.3"
@@ -8527,7 +8527,7 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
checksum: 10/5033a989462bc3127cb937ae5138024af68ec1b67accad07e07e116254b84fc6888a18d7a0358e3d3ce19fe160d72b6622259edc93e7fba47b84d042dcbe1e4e
checksum: 10/ed3d4fa2023642dd578e90eb02876e01729fda0af196304bb1c3a7f037b457f1a505bfa36c10f28d0466945b9da7d7972219716554d43ff3c025f26ed3d89e11
languageName: node
linkType: hard

View File

@@ -60,10 +60,19 @@ class ESP8266React {
return _mqttSettingsService.getMqttClient();
}
//
// special functions needed outside scope
//
void setWill(const char * will_topic) {
_mqttSettingsService.setWill(will_topic);
}
// true if AP is active
bool apStatus() {
return _apSettingsService.getAPNetworkStatus() == APNetworkStatus::ACTIVE;
}
#ifndef EMSESP_STANDALONE
void factoryReset() {
_factoryResetService.factoryReset();

View File

@@ -119,6 +119,10 @@ class ESP8266React {
return _mqttClient;
}
bool apStatus() {
return false;
}
void setWill(const char * will_topic) {
}
void onMessage(espMqttClientTypes::OnMessageCallback callback) {

View File

@@ -400,7 +400,6 @@ const ESPsystem_status = {
arduino_version: 'ESP32 Arduino v2.0.14'
};
// TODO fix this
const system_status = {
emsesp_version: '3.6-demo',
esp_platform: 'ESP32',
@@ -414,7 +413,8 @@ const system_status = {
free_heap: 143,
ntp_status: 2,
ota_status: false,
mqtt_status: true
mqtt_status: true,
ap_status: false
};
let security_settings = {

View File

@@ -69,6 +69,8 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) {
}();
#endif
root["ap_status"] = EMSESP::esp8266React.apStatus();
response->setLength();
request->send(response);
}