From 307c196046e9ac959b766cc8b3baea9e9ddede9d Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 3 Jul 2024 11:19:41 +0200 Subject: [PATCH] #1174 - include translated device type name in dropdown --- interface/src/project/Customization.tsx | 12 ++++++----- interface/src/project/Devices.tsx | 4 ++-- interface/src/project/types.ts | 3 ++- mock-api/rest_server.ts | 27 ++++++++++++++++--------- src/web/WebCustomizationService.cpp | 9 +++++---- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/interface/src/project/Customization.tsx b/interface/src/project/Customization.tsx index c30054b4d..be34f04bf 100644 --- a/interface/src/project/Customization.tsx +++ b/interface/src/project/Customization.tsx @@ -83,7 +83,8 @@ const Customization: FC = () => { const [selectedDevice, setSelectedDevice] = useState( Number(useLocation().state) || -1 ); - const [selectedDeviceTypeName, setSelectedDeviceTypeName] = useState(''); // needed for API URL + const [selectedDeviceTypeNameURL, setSelectedDeviceTypeNameURL] = + useState(''); // needed for API URL const [selectedDeviceName, setSelectedDeviceName] = useState(''); const { send: resetCustomizations } = useRequest(EMSESP.resetCustomizations(), { @@ -234,9 +235,9 @@ const Customization: FC = () => { const id = devices.devices.findIndex((d) => d.i === selectedDevice); if (id === -1) { setSelectedDevice(-1); - setSelectedDeviceTypeName(''); + setSelectedDeviceTypeNameURL(''); } else { - setSelectedDeviceTypeName(devices.devices[id].tn || ''); + setSelectedDeviceTypeNameURL(devices.devices[id].url || ''); setSelectedDeviceName(devices.devices[id].s); setNumChanges(0); setRestartNeeded(false); @@ -439,6 +440,7 @@ const Customization: FC = () => { disabled={numChanges !== 0} onChange={(e) => setSelectedDevice(parseInt(e.target.value))} margin="normal" + style={{ minWidth: '50%' }} select > @@ -446,7 +448,7 @@ const Customization: FC = () => { {devices.devices.map((device: DeviceShort) => ( - {device.s} + {device.s} ({device.tn}) ))} @@ -612,7 +614,7 @@ const Customization: FC = () => { {formatName(de, false)} ( {de.id} diff --git a/interface/src/project/Devices.tsx b/interface/src/project/Devices.tsx index 3af36dc59..a744e35b8 100644 --- a/interface/src/project/Devices.tsx +++ b/interface/src/project/Devices.tsx @@ -646,8 +646,8 @@ const Devices: FC = () => { > - {coreData.devices[deviceIndex].tn} |  - {coreData.devices[deviceIndex].n} + {coreData.devices[deviceIndex].n} ( + {coreData.devices[deviceIndex].tn}) diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 06319facb..82e5f55e8 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -113,7 +113,8 @@ export interface DeviceShort { p?: number; // productid s: string; // shortname t?: number; // device type id - tn?: string; // device type internal name + tn?: string; // device type internal name (translated) + url?: string; // lowercase type name used in API URL } export interface Devices { diff --git a/mock-api/rest_server.ts b/mock-api/rest_server.ts index 514f85ae0..8ab02df4a 100644 --- a/mock-api/rest_server.ts +++ b/mock-api/rest_server.ts @@ -642,55 +642,64 @@ const emsesp_devices = { i: 2, s: 'RC20', t: 5, - tn: 'thermostat' + tn: 'Thermostat', + url: 'thermostat' }, { i: 3, s: 'GB125', t: 5, - tn: 'boiler' + tn: 'Boiler', + url: 'boiler' }, { i: 4, s: 'Moduline 1000', t: 5, - tn: 'thermostat' + tn: 'Thermostat', + url: 'thermostat' }, { i: 5, s: 'MM10', t: 7, - tn: 'mixer' + tn: 'Mixer Module', + url: 'mixer' }, { i: 6, s: 'SM10', t: 8, - tn: 'solar' + tn: 'Solar Module', + url: 'solar' }, { i: 7, s: 'Trendline HRC30', t: 4, - tn: 'boiler' + tn: 'Boiler', + url: 'boiler' }, { i: 8, s: 'Bosch Compress 7000i AW Heat Pump', t: 5, - tn: 'boiler' + tn: 'Boiler', + url: 'boiler' }, { i: 9, s: 'RC100H', t: 6, - tn: 'thermostat' + tn: 'Thermostat', + url: 'thermostat' }, { i: 10, s: 'RC310', t: 6, - tn: 'thermostat' + tn: 'Thermostat', + url: 'thermostat' }, ] }; diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp index a701d9e77..407acbbf4 100644 --- a/src/web/WebCustomizationService.cpp +++ b/src/web/WebCustomizationService.cpp @@ -171,10 +171,11 @@ void WebCustomizationService::devices(AsyncWebServerRequest * request) { for (const auto & emsdevice : EMSESP::emsdevices) { if (emsdevice->has_entities()) { JsonObject obj = devices.add(); - obj["i"] = emsdevice->unique_id(); // its unique id - obj["s"] = emsdevice->name(); // custom name - obj["tn"] = emsdevice->device_type_name(); // non-translated, lower-case - obj["t"] = emsdevice->device_type(); // internal device type ID + obj["i"] = emsdevice->unique_id(); // its unique id + obj["s"] = emsdevice->name(); // custom name + obj["t"] = emsdevice->device_type(); // internal device type ID + obj["tn"] = std::string(emsdevice->device_type_2_device_name_translated()); // translated device type name + obj["url"] = emsdevice->device_type_name(); // non-translated, lower-case, used for API URL } }