From 423119299179a9f2c09d96362ffcb38569868c16 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 7 Aug 2026 13:44:47 +0200 Subject: [PATCH] ui changes to dialog boxes --- interface/src/app/main/Commands.tsx | 32 ++---------------- interface/src/app/main/CommandsDialog.tsx | 8 ++--- interface/src/app/main/Dashboard.tsx | 7 ++-- interface/src/app/main/Devices.tsx | 1 + interface/src/app/main/DevicesDialog.tsx | 40 +++++++++++++---------- interface/src/app/main/types.ts | 12 +++++++ interface/src/i18n/cs/index.ts | 5 ++- interface/src/i18n/de/index.ts | 5 ++- interface/src/i18n/en/index.ts | 5 ++- interface/src/i18n/fr/index.ts | 5 ++- interface/src/i18n/it/index.ts | 5 ++- interface/src/i18n/nl/index.ts | 5 ++- interface/src/i18n/no/index.ts | 5 ++- interface/src/i18n/pl/index.ts | 5 ++- interface/src/i18n/sk/index.ts | 5 ++- interface/src/i18n/sv/index.ts | 5 ++- interface/src/i18n/tr/index.ts | 5 ++- 17 files changed, 69 insertions(+), 86 deletions(-) diff --git a/interface/src/app/main/Commands.tsx b/interface/src/app/main/Commands.tsx index 43cf2e380..bb3771d16 100644 --- a/interface/src/app/main/Commands.tsx +++ b/interface/src/app/main/Commands.tsx @@ -3,11 +3,9 @@ import { useBlocker } from 'react-router'; import AddIcon from '@mui/icons-material/Add'; import CancelIcon from '@mui/icons-material/Cancel'; -import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import WarningIcon from '@mui/icons-material/Warning'; -import { Box, Button, IconButton, Typography } from '@mui/material'; +import { Box, Button, Typography } from '@mui/material'; -import { callAction } from '@/api/app'; import { Body, Cell, @@ -48,7 +46,7 @@ const DEFAULT_COMMAND_ITEM: Omit = { const commandsTheme = { Table: ` - --data-table-library_grid-template-columns: repeat(1, minmax(100px, 1fr)) repeat(1, minmax(100px, 1fr)) 160px 32px; + --data-table-library_grid-template-columns: repeat(1, minmax(100px, 1fr)) repeat(1, minmax(100px, 1fr)) 160px; `, BaseRow: ` font-size: 14px; @@ -143,21 +141,6 @@ const Commands = () => { } }; - const { send: executeCommand } = useRequest( - (id: string) => callAction({ action: 'executeCommand', param: id }), - { immediate: false } - ) - .onSuccess(() => { - toast.success(LL.EXECUTE_COMMAND_SENT()); - }) - .onError((error) => { - toast.error(String(error.error?.message || 'An error occurred')); - }); - - const execute = async (name: string) => { - await executeCommand(name); - }; - const editItem = (ci: CommandItem) => { setCreating(false); setSelectedItem(ci); @@ -222,7 +205,6 @@ const Commands = () => { {LL.COMMAND(0)} {LL.VALUE(0)} {LL.NAME(0)} - @@ -231,16 +213,6 @@ const Commands = () => { {ci.cmd} {ci.value} {ci.name} - - {numChanges === 0 && ( - execute(ci.name)} - style={{ backgroundColor: 'transparent' }} - > - - - )} - ))} diff --git a/interface/src/app/main/CommandsDialog.tsx b/interface/src/app/main/CommandsDialog.tsx index 5e7c7bc80..cd4c93faf 100644 --- a/interface/src/app/main/CommandsDialog.tsx +++ b/interface/src/app/main/CommandsDialog.tsx @@ -95,7 +95,7 @@ const CommandsDialog = ({ { immediate: false } ) .onSuccess(() => { - toast.success(LL.EXECUTE_COMMAND_SENT()); + toast.success(LL.COMMAND_SENT()); }) .onError((error) => { toast.error(String(error.error?.message || 'An error occurred')); @@ -121,8 +121,8 @@ const CommandsDialog = ({ return ( - {creating ? `${LL.ADD(1)} ${LL.NEW(0)}` : LL.EDIT()}  - {LL.COMMAND(1)} + {creating ? `${LL.ADD(1)} ` : LL.UPDATE() + '/' + LL.RUN()}  + {LL.COMMAND(0)} - {LL.EXECUTE()} + {LL.RUN()} )} diff --git a/interface/src/app/main/Dashboard.tsx b/interface/src/app/main/Dashboard.tsx index 2bbcebcea..7c531c15e 100644 --- a/interface/src/app/main/Dashboard.tsx +++ b/interface/src/app/main/Dashboard.tsx @@ -334,7 +334,7 @@ const Dashboard = memo(() => { (di.dv.v === '' || di.dv.v === undefined ? ( editDashboardValue(di)} style={{ backgroundColor: 'transparent' }} > @@ -402,7 +402,10 @@ const Dashboard = memo(() => { {selectedDashboardItem && selectedDashboardItem.dv && ( setDeviceValueDialogOpen(false)} + onClose={() => { + setDeviceValueDialogOpen(false); + setSelectedDashboardItem(undefined); + }} onSave={deviceValueDialogSave} selectedItem={selectedDashboardItem.dv} writeable={true} diff --git a/interface/src/app/main/Devices.tsx b/interface/src/app/main/Devices.tsx index 9916d2ea7..9d53d0429 100644 --- a/interface/src/app/main/Devices.tsx +++ b/interface/src/app/main/Devices.tsx @@ -592,6 +592,7 @@ const Devices = memo(() => { const deviceValueDialogClose = () => { setDeviceValueDialogOpen(false); + setSelectedDeviceValue(undefined); if (selectedDevice !== undefined) { void sendDeviceData(selectedDevice); } diff --git a/interface/src/app/main/DevicesDialog.tsx b/interface/src/app/main/DevicesDialog.tsx index 96d095ad6..1feb0ee30 100644 --- a/interface/src/app/main/DevicesDialog.tsx +++ b/interface/src/app/main/DevicesDialog.tsx @@ -30,7 +30,7 @@ import { ValidationError, validate } from 'validators'; import type Schema from 'validators/schema'; import type { ValidateFieldsError } from 'validators/schema'; -import { DeviceValueUOM, DeviceValueUOM_s } from './types'; +import { DeviceValueUOM, DeviceValueUOM_s, getDeviceValueKind } from './types'; import type { DeviceValue } from './types'; interface DevicesDialogProps { @@ -70,7 +70,7 @@ const DevicesDialog = ({ { immediate: false } ) .onSuccess(() => { - toast.success(LL.EXECUTE_COMMAND_SENT()); + toast.success(LL.COMMAND_SENT()); }) .onError((error) => { toast.error(String(error.error?.message || 'An error occurred')); @@ -119,18 +119,20 @@ const DevicesDialog = ({ return undefined; }; - const isCommand = - (selectedItem.v === '' || selectedItem.v === undefined) && - Boolean(selectedItem.c); - const isSchedulerImmediate = selectedItem.v === undefined; - const dialogTitle = isCommand - ? isSchedulerImmediate - ? LL.EXECUTE() + ' ' + LL.SCHEDULE(0) - : LL.RUN_COMMAND() - : writeable - ? LL.CHANGE_VALUE() - : LL.VALUE(0); - const buttonLabel = isCommand ? LL.EXECUTE() : LL.UPDATE(); + const kind = getDeviceValueKind(selectedItem); + + const dialogTitle = + kind === 'command' || kind === 'deviceCommand' + ? LL.RUN() + ' ' + LL.COMMAND(0) + : kind === 'scheduler' + ? LL.UPDATE() + ' ' + LL.SCHEDULE(0) + : writeable + ? LL.CHANGE_VALUE() + : LL.VALUE(0); + + const buttonLabel = + kind === 'command' || kind === 'deviceCommand' ? LL.RUN() : LL.UPDATE(); + const helperText = showHelperText(editItem); const valueLabel = LL.VALUE(0); @@ -142,7 +144,7 @@ const DevicesDialog = ({ {editItem.id.slice(2)} - {!isSchedulerImmediate && ( + {kind !== 'command' && ( {editItem.l ? ( @@ -227,11 +229,15 @@ const DevicesDialog = ({ diff --git a/interface/src/app/main/types.ts b/interface/src/app/main/types.ts index 1281ee90a..70d91b29d 100644 --- a/interface/src/app/main/types.ts +++ b/interface/src/app/main/types.ts @@ -210,6 +210,18 @@ export enum DeviceValueUOM { HERTZ } +export type DeviceValueKind = + 'value' | 'scheduler' | 'command' | 'deviceCommand' | 'deviceEntity'; + +export function getDeviceValueKind(item: DeviceValue): DeviceValueKind { + if (!item.c) return 'value'; + if (item.v !== undefined && item.l !== undefined && item.u === undefined) + return 'scheduler'; + if (item.v === undefined && item.l === undefined) return 'command'; + if (item.u === DeviceValueUOM.NONE) return 'deviceCommand'; + return 'deviceEntity'; +} + export const DeviceValueUOM_s = [ '', '°C', diff --git a/interface/src/i18n/cs/index.ts b/interface/src/i18n/cs/index.ts index 7879115bd..cb79ed473 100644 --- a/interface/src/i18n/cs/index.ts +++ b/interface/src/i18n/cs/index.ts @@ -37,13 +37,11 @@ const cs: Translation = { VALUE: '{{value|Value}}', DEVICES: 'Zařízení', SENSORS: 'Senzory', - RUN_COMMAND: 'Zavolat příkaz', CHANGE_VALUE: 'Změnit hodnotu', CANCEL: 'Zrušit', REMOVE_ALL: 'Odebrat vše', APPLY_CHANGES: 'Použít změny ({0})', UPDATE: 'Aktualizovat', - EXECUTE: 'Provést', REMOVE: 'Odebrat', PROBLEM_UPDATING: 'Problém s aktualizací', PROBLEM_LOADING: 'Problém s načítáním', @@ -368,7 +366,8 @@ const cs: Translation = { COMMANDS: 'Příkazy', COMMANDS_UPDATED: 'Příkazy byly aktualizovány', COMMANDS_HELP_1: 'Definujte vlastní příkazy pro magistrali EMS', - EXECUTE_COMMAND_SENT: 'Příkaz odeslán', + COMMAND_SENT: 'Příkaz odeslán', + RUN: 'Spustit příkaz' }; export default cs; diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 27e58a5ce..223afbf59 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -37,13 +37,11 @@ const de: Translation = { VALUE: '{{wert|Wert}}', DEVICES: 'Geräte', SENSORS: 'Sensoren', - RUN_COMMAND: 'Befehl ausführen', CHANGE_VALUE: 'Wert ändern', CANCEL: 'Abbrechen', REMOVE_ALL: 'Alles entfernen', APPLY_CHANGES: 'Änderungen anwenden ({0})', UPDATE: 'Aktualisieren', - EXECUTE: 'Ausführen', REMOVE: 'Entfernen', PROBLEM_UPDATING: 'Problem beim Aktualisieren', PROBLEM_LOADING: 'Problem beim Laden', @@ -368,7 +366,8 @@ const de: Translation = { COMMANDS: 'Befehle', COMMANDS_UPDATED: 'Befehle wurden aktualisiert', COMMANDS_HELP_1: 'Definieren Sie eigene Befehle für die EMS-Magistral', - EXECUTE_COMMAND_SENT: 'Befehl gesendet', + COMMAND_SENT: 'Befehl gesendet', + RUN: 'Befehl ausführen' }; export default de; diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index a8860affb..d140dea12 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -37,13 +37,11 @@ const en: Translation = { VALUE: '{{value|Value}}', DEVICES: 'Devices', SENSORS: 'Sensors', - RUN_COMMAND: 'Call Command', CHANGE_VALUE: 'Change Value', CANCEL: 'Cancel', REMOVE_ALL: 'Remove All', APPLY_CHANGES: 'Apply Changes ({0})', UPDATE: 'Update', - EXECUTE: 'Execute', REMOVE: 'Remove', PROBLEM_UPDATING: 'Problem updating', PROBLEM_LOADING: 'Problem loading', @@ -368,7 +366,8 @@ const en: Translation = { COMMANDS: 'Commands', COMMANDS_UPDATED: 'Commands updated', COMMANDS_HELP_1: 'Define reusable named commands below. These can be executed from the console, API/MQTT, or referenced by the Scheduler', - EXECUTE_COMMAND_SENT: 'Command sent', + COMMAND_SENT: 'Command sent', + RUN: 'Run' }; export default en; diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index 29209ec39..b61ac6828 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -37,13 +37,11 @@ const fr: Translation = { VALUE: 'Valeur', DEVICES: 'Appareils', SENSORS: 'Capteurs', - RUN_COMMAND: 'Lancer une commande', CHANGE_VALUE: 'Changer la valeur', CANCEL: 'Annuler', REMOVE_ALL: 'Supprimer tout', APPLY_CHANGES: 'Appliquer les changements ({0})', UPDATE: 'Update', - EXECUTE: 'Execute', REMOVE: 'Enlever', PROBLEM_UPDATING: 'Problème lors de la mise à jour', PROBLEM_LOADING: 'Problème lors du chargement', @@ -368,7 +366,8 @@ const fr: Translation = { COMMANDS: 'Commandes', COMMANDS_UPDATED: 'Commandes mises à jour', COMMANDS_HELP_1: 'Définir des commandes personnalisées pour la magistral EMS', - EXECUTE_COMMAND_SENT: 'Commande envoyée', + COMMAND_SENT: 'Commande envoyée', + RUN: 'Exécuter une commande' }; export default fr; diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 0e63ea8b1..34d510e0d 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -37,13 +37,11 @@ const it: Translation = { VALUE: '{{valore|Valore}}', DEVICES: 'Dispositivi', SENSORS: 'Sensori', - RUN_COMMAND: 'Esegui', CHANGE_VALUE: 'Cambia Valore', CANCEL: 'Annulla', REMOVE_ALL: 'Rimuovi tutto', APPLY_CHANGES: 'Applica Cambiamenti ({0})', UPDATE: 'Update', - EXECUTE: 'Execute', REMOVE: 'Elimina', PROBLEM_UPDATING: 'Problema aggiornamento', PROBLEM_LOADING: 'Problema caricamento', @@ -368,7 +366,8 @@ const it: Translation = { COMMANDS: 'Comandi', COMMANDS_UPDATED: 'Comandi aggiornati', COMMANDS_HELP_1: 'Definisci comandi personalizzati per la magistrali EMS', - EXECUTE_COMMAND_SENT: 'Comando inviato', + COMMAND_SENT: 'Comando inviato', + RUN: 'Esegui comando' }; export default it; diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 27f2fad10..35db7369b 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -37,13 +37,11 @@ const nl: Translation = { VALUE: '{{waarde|Waarde}}', DEVICES: 'Apparaten', SENSORS: 'Sensoren', - RUN_COMMAND: 'Call commando', CHANGE_VALUE: 'Wijzig waarde', CANCEL: 'Annuleren', REMOVE_ALL: 'Verwijderen alles', APPLY_CHANGES: 'Aanpassen ({0})', UPDATE: 'Update', - EXECUTE: 'Uitvoeren', REMOVE: 'Verwijderen', PROBLEM_UPDATING: 'Probleem met updaten', PROBLEM_LOADING: 'Probleem met laden', @@ -368,7 +366,8 @@ const nl: Translation = { COMMANDS: 'Commando\'s', COMMANDS_UPDATED: 'Commando\'s bijgewerkt', COMMANDS_HELP_1: 'Definieer hergebruikbare benoemde commando\'s hieronder. Deze kunnen worden uitgevoerd vanuit de console, API/MQTT, of worden aangeroepen door de Scheduler', - EXECUTE_COMMAND_SENT: 'Commando verzonden', + COMMAND_SENT: 'Commando verzonden', + RUN: 'Commando uitvoeren' }; export default nl; diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 8c9dbc723..506781527 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -37,13 +37,11 @@ const no: Translation = { VALUE: '{{verdi|Verdi}}', DEVICES: 'Enheter', SENSORS: 'Sensorer', - RUN_COMMAND: 'Kjør kommando', CHANGE_VALUE: 'Endre Verdi', CANCEL: 'Avbryt', REMOVE_ALL: 'Fjern alles', APPLY_CHANGES: 'Utfør endringer({0})', UPDATE: 'Oppdater', - EXECUTE: 'Utfør', REMOVE: 'Fjern', PROBLEM_UPDATING: 'Problem med oppdatering', PROBLEM_LOADING: 'Problem med opplasting', @@ -368,7 +366,8 @@ const no: Translation = { COMMANDS: 'Kommandoer', COMMANDS_UPDATED: 'Kommandoer oppdatert', COMMANDS_HELP_1: 'Definer egne kommandoer for EMS-Magistral', - EXECUTE_COMMAND_SENT: 'Kommando sendt', + COMMAND_SENT: 'Kommando sendt', + RUN: 'Kjør' }; export default no; diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index fa434ef57..bdb22f3fe 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -37,13 +37,11 @@ const pl: BaseTranslation = { VALUE: '{{W|w|w}}artość', DEVICES: 'Urządzenia', SENSORS: 'Czujniki', - RUN_COMMAND: 'Wykonaj komendę', CHANGE_VALUE: 'Zmiana wartości', CANCEL: 'Anuluj', REMOVE_ALL: 'Usuń wszystko', APPLY_CHANGES: 'Zapisz zmiany ({0})', UPDATE: 'Zmień', - EXECUTE: 'Wykonaj', REMOVE: 'Usuń', PROBLEM_UPDATING: 'Problem z uaktualnieniem!', PROBLEM_LOADING: 'Problem z załadowaniem!', @@ -368,7 +366,8 @@ const pl: BaseTranslation = { COMMANDS: 'Komendy', COMMANDS_UPDATED: 'Komendy zostały zaktualizowane', COMMANDS_HELP_1: 'Zdefiniuj niestandardowe komendy dla magistrali EMS', - EXECUTE_COMMAND_SENT: 'Komenda wysłana', + COMMAND_SENT: 'Komenda wysłana', + RUN: 'Wykonaj' }; export default pl; diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index fc8ead5a2..5a65edf9f 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -37,13 +37,11 @@ const sk: Translation = { VALUE: '{{hodnota|Hodnota}}', DEVICES: 'Zariadenia', SENSORS: 'Snímače', - RUN_COMMAND: 'Volať príkaz', CHANGE_VALUE: 'Zmena hodnoty', CANCEL: 'Zrušiť', REMOVE_ALL: 'Odstrániť všetko', APPLY_CHANGES: 'Aplikovať zmeny ({0})', UPDATE: 'Aktualizovať', - EXECUTE: 'Spustiť', REMOVE: 'Odstrániť', PROBLEM_UPDATING: 'Problém s aktualizáciou', PROBLEM_LOADING: 'Problém s načítaním', @@ -368,7 +366,8 @@ const sk: Translation = { COMMANDS: 'Príkazy', COMMANDS_UPDATED: 'Príkazy aktualizované', COMMANDS_HELP_1: 'Definujte vlastné príkazy pre magistrali EMS', - EXECUTE_COMMAND_SENT: 'Príkaz odoslaný', + COMMAND_SENT: 'Príkaz odoslaný', + RUN: 'Volať príkaz' }; export default sk; diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index d67f7328e..c933d48cd 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -37,13 +37,11 @@ const sv: Translation = { VALUE: '{{värde|Värde}}', DEVICES: 'Enheter', SENSORS: 'Sensorer', - RUN_COMMAND: 'Kör kommando', CHANGE_VALUE: 'Ändra värde', CANCEL: 'Avbryt', REMOVE_ALL: 'Ta bort allt', APPLY_CHANGES: 'Utför ändringar ({0})', UPDATE: 'Uppdatera', - EXECUTE: 'Utför', REMOVE: 'Ta bort', PROBLEM_UPDATING: 'Problem vid uppdatering', PROBLEM_LOADING: 'Problem vid hämtning', @@ -368,7 +366,8 @@ const sv: Translation = { COMMANDS: 'Kommandon', COMMANDS_UPDATED: 'Kommandon uppdaterade', COMMANDS_HELP_1: 'Definiera egna kommandon för EMS-Magistral', - EXECUTE_COMMAND_SENT: 'Kommando skickat', + COMMAND_SENT: 'Kommando skickat', + RUN: 'Kör kommando' }; export default sv; diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 0a9000979..bfa15079e 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -37,13 +37,11 @@ const tr: Translation = { VALUE: '{{değer|Değer}}', DEVICES: 'Cihazlar', SENSORS: 'Sensörler', - RUN_COMMAND: 'Çalıştırma Komutu', CHANGE_VALUE: 'Değeri Değiştir', CANCEL: 'İptal', REMOVE_ALL: 'Tümünü Kaldır', APPLY_CHANGES: 'Değişiklikleri Uygula ({0})', UPDATE: 'Update', - EXECUTE: 'Uygulamak', REMOVE: 'Kaldır', PROBLEM_UPDATING: 'Güncelleme Sorunu', PROBLEM_LOADING: 'Yükleme Sorunu', @@ -368,7 +366,8 @@ const tr: Translation = { COMMANDS: 'Komutlar', COMMANDS_UPDATED: 'Komutlar güncellendi', COMMANDS_HELP_1: 'Özel komutları EMS hattına tanımlayın', - EXECUTE_COMMAND_SENT: 'Komut gönderildi', + COMMAND_SENT: 'Komut gönderildi', + RUN: 'Komutu çalıştır' }; export default tr;