From 36d567ee548a18b96d4a897f60d827bee533a064 Mon Sep 17 00:00:00 2001 From: Max Hauser Date: Fri, 26 Jul 2024 09:51:05 +0200 Subject: [PATCH] started working on devices design optimizations (#48) * started working on devices design optimizations * apply new lines correctly * rework the two add buttons on the devices tab to a single one with a dialog to select further options * make the add buttons in primary color * format the pairing code * added info text on qr code dialog * fix build * fix rest of types imports * another * show only one + button for bridges too - fix problem that auto detect and from state was reverted * do not limit bridges/devices list to 600px * move re-announce button for devices and bridges into qr code dialog --- src-admin/src/Tabs/Bridges.tsx | 174 ++++++++++++--------- src-admin/src/Tabs/BridgesAndDevices.tsx | 64 +++++++- src-admin/src/Tabs/Controller.tsx | 2 +- src-admin/src/Tabs/Devices.tsx | 143 +++++++++-------- src-admin/src/Tabs/Options.tsx | 2 +- src-admin/src/Utils.tsx | 9 ++ src-admin/src/components/ConfigHandler.tsx | 2 +- src-admin/src/i18n/de.json | 2 + src-admin/src/i18n/en.json | 2 + src-admin/src/i18n/es.json | 2 + src-admin/src/i18n/fr.json | 2 + src-admin/src/i18n/it.json | 2 + src-admin/src/i18n/nl.json | 2 + src-admin/src/i18n/pl.json | 2 + src-admin/src/i18n/pt.json | 2 + src-admin/src/i18n/ru.json | 2 + src-admin/src/i18n/uk.json | 2 + src-admin/src/i18n/zh-cn.json | 2 + src-admin/tsconfig.json | 5 - 19 files changed, 272 insertions(+), 151 deletions(-) diff --git a/src-admin/src/Tabs/Bridges.tsx b/src-admin/src/Tabs/Bridges.tsx index 4ad99259..6151b93f 100644 --- a/src-admin/src/Tabs/Bridges.tsx +++ b/src-admin/src/Tabs/Bridges.tsx @@ -4,15 +4,16 @@ import { v4 as uuidv4 } from 'uuid'; import { Add, + AutoMode, Close, Delete, DomainDisabled, Edit, + FormatListBulleted, KeyboardArrowDown, KeyboardArrowUp, QuestionMark, Save, - SettingsInputAntenna, UnfoldLess, UnfoldMore, } from '@mui/icons-material'; @@ -41,6 +42,7 @@ import { import { I18n, SelectID, type IobTheme } from '@iobroker/adapter-react-v5'; +import DeviceDialog, { DEVICE_ICONS, SUPPORTED_DEVICES } from '../components/DeviceDialog'; import type { BridgeDescription, BridgeDeviceDescription, @@ -48,8 +50,7 @@ import type { DetectedRoom, DeviceDescription, MatterConfig, -} from '@/types'; -import DeviceDialog, { DEVICE_ICONS, SUPPORTED_DEVICES } from '../components/DeviceDialog'; +} from '../types'; import { clone, detectDevices, getText } from '../Utils'; import BridgesAndDevices, { STYLES, @@ -129,6 +130,21 @@ interface BridgesProps extends BridgesAndDevicesProps { } interface BridgesState extends BridgesAndDevicesState { + /** Open Dialog to select further options to add a device */ + addDevicePreDialog: + | { + /** If dialog open */ + open: true; + bridge: { + name: string; + bridgeIndex: number; + devices: BridgeDeviceDescription[]; + }; + } + | { + /** If dialog open */ + open: false; + }; editBridgeDialog: { type: 'bridge'; name: string; @@ -199,6 +215,7 @@ export class Bridges extends BridgesAndDevices { } Object.assign(this.state, { + addDevicePreDialog: { open: false }, addDeviceDialog: null, editBridgeDialog: null, editDeviceDialog: null, @@ -729,6 +746,69 @@ export class Bridges extends BridgesAndDevices { ); } + /** + * Render dialog to select if devices should be added from state or detected automatically + */ + renderAddDevicesPreDialog(): React.JSX.Element { + if (!this.state.addDevicePreDialog.open) { + return null; + } + + return ( + this.setState({ addDevicePreDialog: { open: false } })}> + {I18n.t('Add device')} + + + + + + ); + } + renderAddCustomDeviceDialog() { if (!this.state.addCustomDeviceDialog) { return null; @@ -1083,6 +1163,14 @@ export class Bridges extends BridgesAndDevices { > {I18n.t('Devices')} + { opacity: bridge.enabled ? 1 : 0.5, }} sx={styles.devicesHeader} - > - {this.props.alive && - bridge.enabled && - this.props.nodeStates[bridge.uuid]?.status === 'waitingForCommissioning' ? ( - - { - this.props.socket - .sendTo(`matter.${this.props.instance}`, 'deviceReAnnounce', { - uuid: bridge.uuid, - }) - .then(result => { - if (result.error) { - window.alert(`Cannot re-announce: ${result.error}`); - } else { - this.props.updateNodeStates({ - [bridge.uuid]: result.result, - }); - } - }); - }} - > - - - - ) : null} - + /> { sx={styles.devicesHeader} > - { - const isLicenseOk = await this.props.checkLicenseOnAdd('addDeviceToBridge'); - if (!isLicenseOk) { - this.props.alive && - this.props.showToast( - I18n.t( - 'You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge', - ), - ); - return; - } - this.setState({ - addDeviceDialog: { - noAutoDetect: false, - name: getText(bridge.name), - bridgeIndex, - devices: bridge.list, - }, - }); - }} - > - - - - - - { const isLicenseOk = await this.props.checkLicenseOnAdd('addDeviceToBridge'); if (!isLicenseOk) { @@ -1201,11 +1225,9 @@ export class Bridges extends BridgesAndDevices { return; } this.setState({ - addDeviceDialog: { - noAutoDetect: true, - name: getText(bridge.name), - bridgeIndex, - devices: bridge.list, + addDevicePreDialog: { + open: true, + bridge: { devices: bridge.list, name: bridge.name, bridgeIndex }, }, }); }} @@ -1228,6 +1250,7 @@ export class Bridges extends BridgesAndDevices { return (
{this.renderAddDeviceDialog()} + {this.renderAddDevicesPreDialog()} {this.renderAddCustomDeviceDialog()} {this.renderDeleteDialog()} {this.renderBridgeEditDialog()} @@ -1237,6 +1260,7 @@ export class Bridges extends BridgesAndDevices { {this.renderResetDialog()} { const isLicenseOk = await this.props.checkLicenseOnAdd('addBridge'); @@ -1316,7 +1340,7 @@ export class Bridges extends BridgesAndDevices { ) : ( I18n.t('No bridges created. Create one, by clicking on the "+" button in the bottom right corner.') )} - +
{this.props.matter.bridges.map((bridge, bridgeIndex) => this.renderBridge(bridge, bridgeIndex))} diff --git a/src-admin/src/Tabs/BridgesAndDevices.tsx b/src-admin/src/Tabs/BridgesAndDevices.tsx index 3169d258..7ec9a1dc 100644 --- a/src-admin/src/Tabs/BridgesAndDevices.tsx +++ b/src-admin/src/Tabs/BridgesAndDevices.tsx @@ -5,13 +5,16 @@ import { Close, ContentCopy, Delete, + Info, QrCode, QuestionMark, + SettingsInputAntenna, SignalWifiStatusbarNull, Wifi, WifiOff, } from '@mui/icons-material'; import { + Box, Button, Dialog, DialogActions, @@ -25,6 +28,7 @@ import { TableRow, TextField, Tooltip, + Typography, } from '@mui/material'; import { SiAmazonalexa, SiApple, SiGoogleassistant, SiSmartthings } from 'react-icons/si'; @@ -37,7 +41,8 @@ import type { MatterConfig, NodeStateResponse, NodeStates, -} from '@/types'; +} from '../types'; +import { formatPairingCode } from '../Utils'; export const STYLES: Record = { vendorIcon: { @@ -47,7 +52,17 @@ export const STYLES: Record = { tooltip: { pointerEvents: 'none', }, -}; + infoBox: { + display: 'flex', + gap: 1, + alignItems: 'center', + borderWidth: 1, + borderStyle: 'solid', + padding: 1, + borderRadius: 5, + marginBottom: 1, + }, +} as const; export interface BridgesAndDevicesProps { alive: boolean; @@ -310,8 +325,12 @@ class BridgesAndDevices this.setState({ showQrCode: null })} open={!0} maxWidth="md"> {I18n.t('QR Code to connect')} + + + + {I18n.t( + 'Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.', + )} + +
{nodeState.qrPairingCode ? : null}
+ + + + + ); + } + renderAddDevicesDialog() { if (!this.state.addDeviceDialog) { return null; @@ -689,10 +746,16 @@ class Devices extends BridgesAndDevices { ); } + /** + * Render a single device in a table + * @param device the device description + * @param index table index + */ renderDevice(device: DeviceDescription, index: number): React.JSX.Element | null { if (device.deleted) { return null; } + return ( @@ -746,8 +809,8 @@ class Devices extends BridgesAndDevices { originalProductID: device.productID || '', originalNoComposed: !!device.noComposed, noComposed: !!device.noComposed, - dimmerOnLevel: parseFloat(device.dimmerOnLevel as any as string) || 0, - originalDimmerOnLevel: parseFloat(device.dimmerOnLevel as any as string) || 0, + dimmerOnLevel: Number(device.dimmerOnLevel) || 0, + originalDimmerOnLevel: Number(device.dimmerOnLevel) || 0, dimmerUseLastLevelForOn: !!device.dimmerUseLastLevelForOn, originalDimmerUseLastLevelForOn: !!device.dimmerUseLastLevelForOn, actionAllowedByIdentify: !!device.actionAllowedByIdentify, @@ -779,31 +842,7 @@ class Devices extends BridgesAndDevices { ) : null} - - {this.props.alive && this.props.nodeStates[device.uuid]?.status === 'waitingForCommissioning' ? ( - - { - this.props.socket - .sendTo(`matter.${this.props.instance}`, 'deviceReAnnounce', { - uuid: device.uuid, - }) - .then(result => { - if (result.error) { - window.alert(`Cannot re-announce: ${result.error}`); - } else { - this.props.updateNodeStates({ - [device.uuid]: result.result, - }); - } - }); - }} - > - - - - ) : null} - + {
{this.renderDeleteDialog()} {this.renderEditDeviceDialog()} + {this.renderAddDevicesPreDialog()} {this.renderAddDevicesDialog()} {this.renderAddCustomDeviceDialog()} {this.renderDebugDialog()} {this.renderQrCodeDialog()} {this.renderResetDialog()} - - - this.setState({ - addDeviceDialog: { - devices: this.props.matter.devices, - noAutoDetect: false, - }, - }) - } - style={{ - position: 'absolute', - right: 64, - bottom: 10, - }} - > - - - - + + + + {I18n.t( + 'Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.', + )} + + + this.setState({ - addDeviceDialog: { - devices: this.props.matter.devices, - noAutoDetect: true, - }, + addDevicePreDialog: true, }) } style={{ - opacity: 0.6, position: 'absolute', right: 15, bottom: 10, @@ -887,7 +906,7 @@ class Devices extends BridgesAndDevices { 'No one device created. Create one, by clicking on the "+" button in the bottom right corner.', ) ) : ( -
+
{this.props.matter.devices.map((device, index) => this.renderDevice(device, index))} diff --git a/src-admin/src/Tabs/Options.tsx b/src-admin/src/Tabs/Options.tsx index 484ded31..7f28ecac 100644 --- a/src-admin/src/Tabs/Options.tsx +++ b/src-admin/src/Tabs/Options.tsx @@ -20,7 +20,7 @@ import { Check, Close, LayersClear } from '@mui/icons-material'; import { type AdminConnection, I18n, Logo } from '@iobroker/adapter-react-v5'; -import type { MatterAdapterConfig, MatterConfig } from '@/types'; +import type { MatterAdapterConfig, MatterConfig } from '../types'; const styles: Record = { address: { diff --git a/src-admin/src/Utils.tsx b/src-admin/src/Utils.tsx index 4ce96d2b..f26f2448 100644 --- a/src-admin/src/Utils.tsx +++ b/src-admin/src/Utils.tsx @@ -297,3 +297,12 @@ export function getText(text: ioBroker.StringOrTranslated): string { export function clone>(obj: TObject): TObject { return JSON.parse(JSON.stringify(obj)); } + +/** + * Format a pairing code like 1234-567-8911 + * + * @param pairingCode the pairing code + */ +export function formatPairingCode(pairingCode: string): string { + return `${pairingCode.substring(0, 4)}-${pairingCode.substring(4, 7)}-${pairingCode.substring(7)}`; +} diff --git a/src-admin/src/components/ConfigHandler.tsx b/src-admin/src/components/ConfigHandler.tsx index a030b791..23631d02 100644 --- a/src-admin/src/components/ConfigHandler.tsx +++ b/src-admin/src/components/ConfigHandler.tsx @@ -2,7 +2,7 @@ import type { AdminConnection } from '@iobroker/adapter-react-v5'; import { I18n } from '@iobroker/adapter-react-v5'; import { v4 as uuidv4 } from 'uuid'; -import type { BridgeDescription, CommissioningInfo, DeviceDescription, MatterConfig } from '@/types'; +import type { BridgeDescription, CommissioningInfo, DeviceDescription, MatterConfig } from '../types'; import { clone } from '../Utils'; class ConfigHandler { diff --git a/src-admin/src/i18n/de.json b/src-admin/src/i18n/de.json index d0bf470b..1536874b 100644 --- a/src-admin/src/i18n/de.json +++ b/src-admin/src/i18n/de.json @@ -8,6 +8,7 @@ "Add device from one state": "Gerät aus einem State hinzufügen", "Add device with auto-detection": "Gerät mit automatischer Erkennung hinzufügen", "Add devices": "Geräte hinzufügen", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Zusätzlich zu Bridges können Sie ioBroker-Zustände auch als eigenständige Matter-Geräte verfügbar machen.\nSie können alle einzeln gepaart werden.\nSie sollten vorzugsweise Bridges verwenden.", "All devices": "Alle Geräte", "All interfaces": "Alle Schnittstellen", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Alle Statusinformationen des Matter-Controllers und der Geräte werden gelöscht. Sie können es nicht rückgängig machen.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Nur erforderlich, wenn Sie Bridge- oder Geräteoptionen mit mehr als 5 Geräten nutzen möchten", "Options": "Optionen", "Please confirm": "Bitte bestätigen", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Bitte scannen Sie diesen QR-Code mit der App des Ökosystems, mit dem Sie es koppeln möchten, oder verwenden Sie den unten aufgedruckten Setup-Code.", "Product ID": "Produkt ID", "Provide your Thread or BLE information or both!": "Geben Sie Ihre Thread- oder BLE-Informationen oder beides an!", "QR Code to connect": "QR-Code zum Verbinden", diff --git a/src-admin/src/i18n/en.json b/src-admin/src/i18n/en.json index a58943cc..a5e2af51 100644 --- a/src-admin/src/i18n/en.json +++ b/src-admin/src/i18n/en.json @@ -8,6 +8,7 @@ "Add device from one state": "Add device from one state", "Add device with auto-detection": "Add device with auto-detection", "Add devices": "Add devices", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Additionally to bridges you can also expose ioBroker states as stand alone matter devices.\nThey can all be paired individually.\nYou should prefer to use bridges.", "All devices": "All devices", "All interfaces": "All interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "All state information of matter controller and devices will be deleted. You cannot undo it.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Only required if you want to use bridge or device options with more than 5 devices", "Options": "Options", "Please confirm": "Please confirm", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.", "Product ID": "Product ID", "Provide your Thread or BLE information or both!": "Provide your Thread or BLE information or both!", "QR Code to connect": "QR Code to connect", diff --git a/src-admin/src/i18n/es.json b/src-admin/src/i18n/es.json index f3490e10..82769ef1 100644 --- a/src-admin/src/i18n/es.json +++ b/src-admin/src/i18n/es.json @@ -8,6 +8,7 @@ "Add device from one state": "Agregar dispositivo desde un estado", "Add device with auto-detection": "Agregar dispositivo con detección automática", "Add devices": "Agregar dispositivos", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Además de los puentes, también puede exponer los estados de ioBroker como dispositivos independientes.\nTodos ellos se pueden emparejar individualmente.\nDeberías preferir utilizar puentes.", "All devices": "Todos los dispositivos", "All interfaces": "Todas las interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Se eliminará toda la información de estado del controlador de materia y los dispositivos. No puedes deshacerlo.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Solo es necesario si desea utilizar opciones de puente o dispositivo con más de 5 dispositivos", "Options": "Opciones", "Please confirm": "Por favor confirmar", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Escanee este código QR con la aplicación del ecosistema con el que desea vincularlo o utilice el código de configuración impreso a continuación.", "Product ID": "ID del Producto", "Provide your Thread or BLE information or both!": "¡Proporcione su información Thread o BLE o ambos!", "QR Code to connect": "Código QR para conectarse", diff --git a/src-admin/src/i18n/fr.json b/src-admin/src/i18n/fr.json index 84c1def4..2ae5e90a 100644 --- a/src-admin/src/i18n/fr.json +++ b/src-admin/src/i18n/fr.json @@ -8,6 +8,7 @@ "Add device from one state": "Ajouter un appareil à partir d'un état", "Add device with auto-detection": "Ajouter un appareil avec détection automatique", "Add devices": "Ajouter des appareils", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "En plus des ponts, vous pouvez également exposer les états ioBroker en tant que dispositifs autonomes.\nIls peuvent tous être jumelés individuellement.\nVous devriez préférer utiliser des ponts.", "All devices": "Tous les dispositifs", "All interfaces": "Toutes les interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Toutes les informations d'état du contrôleur de matière et des appareils seront supprimées. Vous ne pouvez pas l'annuler.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Uniquement requis si vous souhaitez utiliser les options de pont ou d'appareil avec plus de 5 appareils", "Options": "Possibilités", "Please confirm": "Veuillez confirmer", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Veuillez scanner ce QR-Code avec l'application de l'écosystème auquel vous souhaitez le coupler ou utiliser le code de configuration imprimé ci-dessous.", "Product ID": "Identifiant du produit", "Provide your Thread or BLE information or both!": "Fournissez vos informations Thread ou BLE ou les deux !", "QR Code to connect": "QR Code pour se connecter", diff --git a/src-admin/src/i18n/it.json b/src-admin/src/i18n/it.json index 565925a2..35019d80 100644 --- a/src-admin/src/i18n/it.json +++ b/src-admin/src/i18n/it.json @@ -8,6 +8,7 @@ "Add device from one state": "Aggiungi dispositivo da uno stato", "Add device with auto-detection": "Aggiungi dispositivo con rilevamento automatico", "Add devices": "Aggiungi dispositivi", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Oltre ai bridge puoi anche esporre gli stati di ioBroker come dispositivi di questione autonomi.\nPossono essere tutti accoppiati individualmente.\nDovresti preferire usare i bridge.", "All devices": "Tutti i dispositivi", "All interfaces": "Tutte le interfacce", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Tutte le informazioni sullo stato del controller e dei dispositivi verranno eliminate. Non puoi annullarlo.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Necessario solo se desideri utilizzare le opzioni bridge o dispositivo con più di 5 dispositivi", "Options": "Opzioni", "Please confirm": "Per favore conferma", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Scansiona questo codice QR con l'app dell'ecosistema a cui desideri associarlo o utilizza il codice di configurazione stampato di seguito.", "Product ID": "Codice prodotto", "Provide your Thread or BLE information or both!": "Fornisci le informazioni sul tuo thread o BLE o entrambi!", "QR Code to connect": "Codice QR per connettersi", diff --git a/src-admin/src/i18n/nl.json b/src-admin/src/i18n/nl.json index f25d0e08..a275d1ca 100644 --- a/src-admin/src/i18n/nl.json +++ b/src-admin/src/i18n/nl.json @@ -8,6 +8,7 @@ "Add device from one state": "Voeg apparaat toe vanuit één staat", "Add device with auto-detection": "Apparaat toevoegen met automatische detectie", "Add devices": "Apparaten toevoegen", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Naast bruggen kunt u ioBroker-statussen ook blootstellen als zelfstandige zakenapparaten.\nZe kunnen allemaal afzonderlijk worden gekoppeld.\nGebruik bij voorkeur bruggen.", "All devices": "Alle apparaten", "All interfaces": "Alle interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Alle statusinformatie van de materiecontroller en apparaten wordt verwijderd. Je kunt het niet ongedaan maken.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Alleen vereist als u bridge- of apparaatopties wilt gebruiken met meer dan 5 apparaten", "Options": "Opties", "Please confirm": "Bevestig alstublieft", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Scan deze QR-code met de app van het ecosysteem waaraan u deze wilt koppelen of gebruik de hieronder afgedrukte installatiecode.", "Product ID": "Product-ID", "Provide your Thread or BLE information or both!": "Geef uw Thread- of BLE-informatie op, of beide!", "QR Code to connect": "QR-code om verbinding te maken", diff --git a/src-admin/src/i18n/pl.json b/src-admin/src/i18n/pl.json index 5cc1e8d5..dcd2ae39 100644 --- a/src-admin/src/i18n/pl.json +++ b/src-admin/src/i18n/pl.json @@ -8,6 +8,7 @@ "Add device from one state": "Dodaj urządzenie z jednego stanu", "Add device with auto-detection": "Dodaj urządzenie z funkcją automatycznego wykrywania", "Add devices": "Dodaj urządzenia", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Oprócz mostów możesz także udostępniać stany ioBroker jako samodzielne urządzenia materii.\nWszystkie można łączyć indywidualnie.\nPowinieneś preferować korzystanie z mostów.", "All devices": "Wszystkie urządzenia", "All interfaces": "Wszystkie interfejsy", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Wszystkie informacje o stanie kontrolera materii i urządzeń zostaną usunięte. Nie możesz tego cofnąć.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Wymagane tylko wtedy, gdy chcesz używać opcji mostka lub urządzenia z więcej niż 5 urządzeniami", "Options": "Opcje", "Please confirm": "Proszę potwierdzić", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Zeskanuj ten kod QR za pomocą aplikacji ekosystemu, z którym chcesz go sparować, lub użyj poniższego wydrukowanego kodu konfiguracyjnego.", "Product ID": "ID produktu", "Provide your Thread or BLE information or both!": "Podaj informacje o swoim wątku lub BLE, albo jedno i drugie!", "QR Code to connect": "Kod QR do połączenia", diff --git a/src-admin/src/i18n/pt.json b/src-admin/src/i18n/pt.json index a1ae2104..1b22f88a 100644 --- a/src-admin/src/i18n/pt.json +++ b/src-admin/src/i18n/pt.json @@ -8,6 +8,7 @@ "Add device from one state": "Adicionar dispositivo de um estado", "Add device with auto-detection": "Adicionar dispositivo com detecção automática", "Add devices": "Adicionar dispositivos", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "Além das pontes, você também pode expor os estados do ioBroker como dispositivos independentes.\nTodos eles podem ser emparelhados individualmente.\nVocê deve preferir usar pontes.", "All devices": "Todos os dispositivos", "All interfaces": "Todas as interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Todas as informações de estado do controlador e dos dispositivos serão excluídas. Você não pode desfazer isso.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Necessário apenas se você quiser usar opções de ponte ou dispositivo com mais de 5 dispositivos", "Options": "Opções", "Please confirm": "Por favor confirme", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Digitalize este código QR com o aplicativo do ecossistema ao qual deseja emparelhá-lo ou use o código de configuração impresso abaixo.", "Product ID": "ID do produto", "Provide your Thread or BLE information or both!": "Forneça suas informações de Thread ou BLE ou ambos!", "QR Code to connect": "QR Code para conectar", diff --git a/src-admin/src/i18n/ru.json b/src-admin/src/i18n/ru.json index d240a15b..e6b04ca4 100644 --- a/src-admin/src/i18n/ru.json +++ b/src-admin/src/i18n/ru.json @@ -8,6 +8,7 @@ "Add device from one state": "Добавить устройство из одного штата", "Add device with auto-detection": "Добавить устройство с автоопределением", "Add devices": "Добавить устройства", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "В дополнение к мостам вы также можете предоставлять состояния ioBroker как автономные материальные устройства.\nВсе они могут быть соединены индивидуально.\nВы должны предпочесть использовать мосты.", "All devices": "Все устройства", "All interfaces": "Все интерфейсы", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Вся информация о состоянии контроллера материи и устройств будет удалена. Вы не можете отменить это.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Требуется только в том случае, если вы хотите использовать параметры моста или устройства с более чем 5 устройствами.", "Options": "Параметры", "Please confirm": "Пожалуйста подтвердите", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Отсканируйте этот QR-код с помощью приложения той экосистемы, к которой вы хотите его подключить, или используйте распечатанный ниже код настройки.", "Product ID": "Код товара", "Provide your Thread or BLE information or both!": "Предоставьте информацию о своей теме или BLE, или и то, и другое!", "QR Code to connect": "QR-код для подключения", diff --git a/src-admin/src/i18n/uk.json b/src-admin/src/i18n/uk.json index a1bb4ce8..3b2f655c 100644 --- a/src-admin/src/i18n/uk.json +++ b/src-admin/src/i18n/uk.json @@ -8,6 +8,7 @@ "Add device from one state": "Додати пристрій з одного стану", "Add device with auto-detection": "Додати пристрій з автовизначенням", "Add devices": "Додайте пристрої", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "На додаток до мостів ви також можете виставляти стани ioBroker як самостійні матеріальні пристрої.\nЇх усіх можна поєднати окремо.\nКраще використовувати мости.", "All devices": "Всі пристрої", "All interfaces": "Всі інтерфейси", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Уся інформація про стан контролера матерії та пристроїв буде видалена. Ви не можете скасувати це.", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "Потрібно, лише якщо ви хочете використовувати параметри моста або пристрою з більш ніж 5 пристроями", "Options": "Опції", "Please confirm": "Будь-ласка підтвердіть", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Будь ласка, відскануйте цей QR-код за допомогою програми екосистеми, до якої ви хочете підключити його, або скористайтеся надрукованим нижче кодом налаштування.", "Product ID": "ID продукту", "Provide your Thread or BLE information or both!": "Надайте інформацію про свій ланцюжок або BLE або обидва!", "QR Code to connect": "QR-код для підключення", diff --git a/src-admin/src/i18n/zh-cn.json b/src-admin/src/i18n/zh-cn.json index 9e40348b..42034576 100644 --- a/src-admin/src/i18n/zh-cn.json +++ b/src-admin/src/i18n/zh-cn.json @@ -8,6 +8,7 @@ "Add device from one state": "从一种状态添加设备", "Add device with auto-detection": "添加自动检测设备", "Add devices": "添加设备", + "Additionally to bridges you can also expose ioBroker states as stand alone matter devices. They can all be paired individually. You should prefer to use bridges.": "除了桥接器之外,您还可以将 ioBroker 状态公开为独立的物质设备。\n它们都可以单独配对。\n您应该更喜欢使用桥接器。", "All devices": "所有设备", "All interfaces": "所有接口", "All state information of matter controller and devices will be deleted. You cannot undo it.": "所有物质控制器和设备的状态信息都将被删除。您无法撤消它。", @@ -69,6 +70,7 @@ "Only required if you want to use bridge or device options with more than 5 devices": "仅当您想要对超过 5 个设备使用桥接或设备选项时才需要", "Options": "选项", "Please confirm": "请确认", + "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "请使用您想要配对的生态系统的应用程序扫描此二维码,或使用下面打印的设置代码。", "Product ID": "产品编号", "Provide your Thread or BLE information or both!": "提供您的线程或 BLE 信息或两者!", "QR Code to connect": "二维码连接", diff --git a/src-admin/tsconfig.json b/src-admin/tsconfig.json index a5cf9448..ab5634ca 100644 --- a/src-admin/tsconfig.json +++ b/src-admin/tsconfig.json @@ -36,11 +36,6 @@ "types": [ "@iobroker/types" ], - "paths": { - "@/*": [ - "./src/*" - ], - } }, "include": [ "./src/**/*.ts",