@iobroker/adapter-react-v5
Version:
React components to develop ioBroker interfaces with react.
1,996 lines (1,995 loc) • 57.3 kB
JavaScript
import React, { Component } from 'react';
import { Dialog, DialogTitle, DialogActions, DialogContent, Button, IconButton, TextField, Tooltip, CircularProgress, } from '@mui/material';
import { Close as CloseIcon, Clear as ClearIcon } from '@mui/icons-material';
import { Icon } from './Icon';
import { Utils } from './Utils';
import devicesIcons from '../assets/devices.json';
import roomsIcons from '../assets/rooms.json';
// import devices from '../assets/devices/list.json';
const devices = [
{
_id: 'hood',
name: {
en: 'Hood',
ru: 'Вытяжка',
de: 'Abzugshaube',
fr: 'Capot',
it: 'Cappe',
nl: 'Hood',
pl: 'Okapy',
pt: 'Hood',
es: 'Campana',
'zh-cn': '抽油烟机',
},
icon: 'Hoods.svg',
},
{
_id: 'alarm_system',
name: {
en: 'Alarm System',
ru: 'Сигнализация',
de: 'Alarmanlage',
fr: "Systèmes D'Alarme",
it: 'Sistemi Di Allarme',
nl: 'Alarm Systems',
pl: 'Systemy Alarmowe',
pt: 'Sistemas De Alarme',
es: 'Sistemas De Alarma',
'zh-cn': '报警系统',
},
icon: 'Alarm Systems.svg',
},
{
_id: 'battery_status',
name: {
en: 'Battery Status',
ru: 'Заряд батареи',
de: 'Batteriestatus',
fr: 'État De La Batterie',
it: 'Stato Della Batteria',
nl: 'Batterij Status',
pl: 'Stan Baterii',
pt: 'Estado Da Bateria',
es: 'Estado De La Batería',
'zh-cn': '电池状态',
},
icon: 'Battery Status.svg',
},
{
_id: 'lighting',
name: {
en: 'Lighting',
ru: 'Светильник',
de: 'Beleuchtung',
fr: 'Éclairages',
it: 'Illuminazione',
nl: 'Verlichting',
pl: 'Oprawy Oświetleniowe',
pt: 'Iluminações',
es: 'Iluminaciones',
'zh-cn': '照明',
},
icon: 'Lightings.svg',
},
{
_id: 'shading',
name: {
en: 'Shading',
ru: 'Затенение',
de: 'Beschattungen',
fr: 'Ombres',
it: 'Ombreggiatura',
nl: 'Shading',
pl: 'Zacienienie',
pt: 'Shading',
es: 'Sombreado',
'zh-cn': '底纹',
},
icon: 'Shading.svg',
},
{
_id: 'irrigation',
name: {
en: 'Irrigation',
ru: 'Орошение',
de: 'Bewässerung',
fr: 'Irrigation',
it: 'Irrigazione',
nl: 'Irrigatie',
pl: 'Nawadnianie',
pt: 'Irrigação',
es: 'Irrigación',
'zh-cn': '灌溉',
},
icon: 'Irrigation.svg',
},
{
_id: 'iron',
name: {
en: 'Iron',
ru: 'Утюг',
de: 'Bügeleisen',
fr: 'Le Fer',
it: 'Ferro',
nl: 'Ijzer',
pl: 'Żelazo',
pt: 'Ferro',
es: 'Hierro',
'zh-cn': '铁',
},
icon: 'Iron.svg',
},
{
_id: 'computer',
name: {
en: 'Computer',
ru: 'Компьютер',
de: 'Rechner',
fr: "L'Ordinateur",
it: 'Computer',
nl: 'Computer',
pl: 'Komputer',
pt: 'Computador',
es: 'Ordenador',
'zh-cn': '电脑',
},
icon: 'Computer.svg',
},
{
_id: 'ceiling_spotlight',
name: {
en: 'Ceiling Spotlight',
ru: 'Потолочный прожектор',
de: 'Deckenspot',
fr: 'Plafond Spotlight',
it: 'Faretti A Soffitto',
nl: 'Plafond Spotlight',
pl: 'Reflektory Sufitowe',
pt: 'Tecto Foco',
es: 'Focos De Techo',
'zh-cn': '天花射灯',
},
icon: 'Ceiling Spotlights.svg',
},
{
_id: 'printer',
name: {
en: 'Printer',
de: 'Drucker',
ru: 'Принтер',
pt: 'Impressora',
nl: 'Printer',
fr: 'Imprimante',
it: 'Stampante',
es: 'Impresora',
pl: 'Drukarka',
'zh-cn': '打印机',
},
icon: 'Printer.svg',
},
{
_id: 'power_consumption',
name: {
en: 'Power Consumption',
ru: 'Потребляемая мощность',
de: 'Stromverbrauch',
fr: "Consommation D'Énergie",
it: 'Consumo Di Energia',
nl: 'Energieverbruik',
pl: 'Pobór Energii',
pt: 'Consumo De Energia',
es: 'El Consumo De Energía',
'zh-cn': '能量消耗',
},
icon: 'Power Consumption.svg',
},
{
_id: 'window',
name: {
en: 'Window',
ru: 'Окно',
de: 'Fenster',
fr: 'La Fenêtre',
it: 'Finestra',
nl: 'Venster',
pl: 'Okno',
pt: 'Janela',
es: 'Ventana',
'zh-cn': '窗户',
},
icon: 'Window.svg',
},
{
_id: 'garage_door',
name: {
en: 'Garage Door',
ru: 'Гаражные Ворота',
de: 'Garagentor',
fr: 'Portes De Garage',
it: 'Garage Door',
nl: 'Garage Door',
pl: 'Bramy Garażowe',
pt: 'Portas De Garagem',
es: 'Las Puertas De Garaje',
'zh-cn': '车库门',
},
icon: 'Garage Doors.svg',
},
{
_id: 'hairdryer',
name: {
en: 'Hairdryer',
ru: 'Фен',
de: 'Haartrockner',
fr: 'Sèche-Cheveux',
it: 'Asciugacapelli',
nl: 'Haardroger',
pl: 'Suszarka Do Włosów',
pt: 'Secador De Cabelo',
es: 'Secador De Pelo',
'zh-cn': '电吹风',
},
icon: 'Hairdryer.svg',
},
{
_id: 'hanging_lamp',
name: {
en: 'Hanging Lamp',
ru: 'Подвесной светильник',
de: 'Hängelampe',
fr: 'Lampes Suspendues',
it: 'Lampade A Sospensione',
nl: 'Opknoping Lampen',
pl: 'Lampy Wiszące',
pt: 'Lâmpadas De Suspensão',
es: 'Lámparas Colgantes',
'zh-cn': '挂灯',
},
icon: 'Hanging Lamps.svg',
},
{
_id: 'doorstep',
name: {
en: 'Enterance',
ru: 'Входная дверь',
de: 'Haustür',
fr: 'Seuil De Porte',
it: 'Gradino Della Porta',
nl: 'Drempel',
pl: 'Próg',
pt: 'Porta',
es: 'Peldaño',
'zh-cn': '门阶',
},
icon: 'Doorstep.svg',
},
{
_id: 'hot_water',
name: {
en: 'Hot Water',
ru: 'Горячая вода',
de: 'Heißwasser',
fr: 'Eau Chaude',
it: 'Acqua Calda',
nl: 'Heet Water',
pl: 'Gorąca Woda',
pt: 'Água Quente',
es: 'Agua Caliente',
'zh-cn': '热水',
},
icon: 'Hot Water.svg',
},
{
_id: 'heating',
name: {
en: 'Heating',
ru: 'Отопление',
de: 'Heizung',
fr: 'Chauffe-Eau',
it: 'Riscaldatore',
nl: 'Verwarmer',
pl: 'Podgrzewacz',
pt: 'Aquecedor',
es: 'Calentador',
'zh-cn': '加热器',
},
icon: 'Heater.svg',
},
{
_id: 'stove',
name: {
en: 'Stove',
ru: 'Печь',
de: 'Herd',
fr: 'Le Fourneau',
it: 'Stufa',
nl: 'Fornuis',
pl: 'Kuchenka',
pt: 'Forno',
es: 'Cocina',
'zh-cn': '火炉',
},
icon: 'Stove.svg',
},
{
_id: 'louvre',
name: {
en: 'Louvre',
ru: 'Жалюзи',
de: 'Jalousie',
fr: 'Persienne',
it: 'Persiana Di Ventilazione',
nl: 'Louvre',
pl: 'Żaluzja',
pt: 'Trapeira',
es: 'Lumbrera',
'zh-cn': '卢浮宫',
},
icon: 'Louvre.svg',
},
{
_id: 'coffee_maker',
name: {
en: 'Coffee Maker',
ru: 'Кофеварка',
de: 'Kaffemaschine',
fr: 'Cafetière',
it: 'Macchine Da Caffè',
nl: 'Koffie Maker',
pl: 'Ekspresy Do Kawy',
pt: 'Cafeteira',
es: 'Cafetera',
'zh-cn': '咖啡壶',
},
icon: 'Coffee Makers.svg',
},
{
_id: 'cold_water',
name: {
en: 'Cold Water',
ru: 'Холодная вода',
de: 'Kaltwasser',
fr: 'Eau Froide',
it: 'Acqua Fredda',
nl: 'Koud Water',
pl: 'Zimna Woda',
pt: 'Água Fria',
es: 'Agua Fría',
'zh-cn': '冷水',
},
icon: 'Cold Water.svg',
},
{
_id: 'climate',
name: {
en: 'Climate',
ru: 'Климат',
de: 'Klima',
fr: 'Climat',
it: 'Clima',
nl: 'Klimaat',
pl: 'Klimat',
pt: 'Clima',
es: 'Clima',
'zh-cn': '气候',
},
icon: 'Climate.svg',
},
{
_id: 'speaker',
name: {
en: 'Speaker',
ru: 'Звуковая система',
de: 'Lautsprecher',
fr: 'Orateur',
it: 'Altoparlante',
nl: 'Spreker',
pl: 'Głośnik',
pt: 'Palestrante',
es: 'Altavoz',
'zh-cn': '扬声器',
},
icon: 'Speaker.svg',
},
{
_id: 'led_strip',
name: {
en: 'Led Strip',
ru: 'Светодиодная лента',
de: 'LED Leiste',
fr: 'Led Strip',
it: 'Led Strip',
nl: 'Loden Strip',
pl: 'Pasek Ledowy',
pt: 'Led Faixa',
es: 'Tira Llevada',
'zh-cn': '灯带',
},
icon: 'Led Strip.svg',
},
{
_id: 'light',
name: {
en: 'Light',
ru: 'Свет',
de: 'Licht',
fr: 'Lumière',
it: 'Leggero',
nl: 'Licht',
pl: 'Lekki',
pt: 'Luz',
es: 'Luz',
'zh-cn': '光',
},
icon: 'Light.svg',
},
{
_id: 'fan',
name: {
en: 'Fan',
ru: 'Вентилятор',
de: 'Lüfter',
fr: 'Ventilateur',
it: 'Fan',
nl: 'Ventilator',
pl: 'Wentylator',
pt: 'Ventilador',
es: 'Ventilador',
'zh-cn': '扇子',
},
icon: 'Fan.svg',
},
{
_id: 'humidity',
name: {
en: 'Humidity',
ru: 'Влажность',
de: 'Luftfeuchtigkeit',
fr: 'Humidité',
it: 'Umidità',
nl: 'Vochtigheid',
pl: 'Wilgotność',
pt: 'Umidade',
es: 'Humedad',
'zh-cn': '湿度',
},
icon: 'Humidity.svg',
},
{
_id: 'ventilation',
name: {
en: 'Ventilation',
ru: 'Вентиляция',
de: 'Lüftung',
fr: 'Ventilation',
it: 'Ventilazione',
nl: 'Ventilatie',
pl: 'Wentylacja',
pt: 'Ventilação',
es: 'Ventilación',
'zh-cn': '通风',
},
icon: 'Ventilation.svg',
},
{
_id: 'chandelier',
name: {
en: 'Chandelier',
ru: 'Люстра',
de: 'Kronleuchter',
fr: 'Lustre',
it: 'Lampadario',
nl: 'Kroonluchter',
pl: 'Żyrandol',
pt: 'Lustre',
es: 'Candelabro',
'zh-cn': '枝形吊灯',
},
icon: 'Chandelier.svg',
},
{
_id: 'awning',
name: {
en: 'Awning',
ru: 'Маркиза',
de: 'Markise',
fr: 'Auvents',
it: 'Tende',
nl: 'Luifels',
pl: 'Okrycia',
pt: 'Toldos',
es: 'Toldos',
'zh-cn': '遮阳篷',
},
icon: 'Awnings.svg',
},
{
_id: 'music',
name: {
en: 'Music',
ru: 'Музыка',
de: 'Musik',
fr: 'Musique',
it: 'Musica',
nl: 'Muziek',
pl: 'Muzyka',
pt: 'Música',
es: 'Música',
'zh-cn': '音乐',
},
icon: 'Music.svg',
},
{
_id: 'people',
name: {
en: 'People',
ru: 'Люди',
de: 'Personen',
fr: 'Gens',
it: 'Persone',
nl: 'Mensen',
pl: 'Ludzie',
pt: 'Pessoas',
es: 'Personas',
'zh-cn': '人们',
},
icon: 'People.svg',
},
{
_id: 'pool',
name: {
en: 'Pool',
ru: 'Бассейн',
de: 'Pool',
fr: 'Piscine',
it: 'Piscina',
nl: 'Zwembad',
pl: 'Basen',
pt: 'Piscina',
es: 'Piscina',
'zh-cn': '水池',
},
icon: 'Pool.svg',
},
{
_id: 'pump',
name: {
en: 'Pump',
ru: 'Насос',
de: 'Pumpe',
fr: 'Pompe',
it: 'Pompa',
nl: 'Pomp',
pl: 'Pompa',
pt: 'Bombear',
es: 'Bomba',
'zh-cn': '泵',
},
icon: 'Pump.svg',
},
{
_id: 'outdoor_blinds',
name: {
en: 'Outdoor Blinds',
ru: 'Внещгте жалюзи',
de: 'Raffstore',
fr: 'Volets',
it: 'Tende Da Esterni',
nl: 'Outdoor Blinds',
pl: 'Rolety Zewnętrzne',
pt: 'Estores Exteriores',
es: 'Persianas Exteriores',
'zh-cn': '室外百叶窗',
},
icon: 'Outdoor Blinds.svg',
},
{
_id: 'mowing_machine',
name: {
en: 'Mowing Machine',
ru: 'Газонокосилка',
de: 'Rasenmäher',
fr: 'Machine De Fauchage',
it: 'Macchina Di Falciatura',
nl: 'Maaimachine',
pl: 'Kosiarka',
pt: 'Roçada Máquina',
es: 'Segadora',
'zh-cn': '割草机',
},
icon: 'Mowing Machine.svg',
},
{
_id: 'receiver',
name: {
en: 'Receiver',
ru: 'Приставка',
de: 'Receiver',
fr: 'Destinataire',
it: 'Ricevitore',
nl: 'Ontvanger',
pl: 'Odbiorca',
pt: 'Recebedor',
es: 'Receptor',
'zh-cn': '接收者',
},
icon: 'Receiver.svg',
},
{
_id: 'shutters',
name: {
en: 'Shutters',
ru: 'Ставни',
de: 'Rollladen',
fr: 'Volets',
it: 'Persiane',
nl: 'Shutters',
pl: 'Żaluzje',
pt: 'Persianas',
es: 'Persianas',
'zh-cn': '百叶窗',
},
icon: 'Shutters.svg',
},
{
_id: 'smoke_detector',
name: {
en: 'Smoke detector',
de: 'Rauchmelder',
ru: 'Детектор дыма',
pt: 'Detector de fumaça',
nl: 'Rookdetector',
fr: 'Détecteur de fumée',
it: 'Rilevatore di fumo',
es: 'Detector de humo',
pl: 'Wykrywacz dymu',
'zh-cn': '烟雾探测器',
},
icon: 'SmokeDetector.svg',
},
{
_id: 'lock',
name: {
en: 'Lock',
ru: 'Замок',
de: 'Schloß',
fr: 'Fermer À Clé',
it: 'Serratura',
nl: 'Slot',
pl: 'Zamek',
pt: 'Trancar',
es: 'Cerrar Con Llave',
'zh-cn': '锁',
},
icon: 'Lock.svg',
},
{
_id: 'security',
name: {
en: 'Security',
ru: 'Безопасность',
de: 'Sicherheit',
fr: 'Sécurité',
it: 'Sicurezza',
nl: 'Veiligheid',
pl: 'Bezpieczeństwo',
pt: 'Segurança',
es: 'Seguridad',
'zh-cn': '安全',
},
icon: 'Security.svg',
},
{
_id: 'dishwasher',
name: {
en: 'Dishwasher',
ru: 'Посудомоечная машина',
de: 'Spülmaschine',
fr: 'Lave-Vaisselles',
it: 'Lavastoviglie',
nl: 'Vaatwassers',
pl: 'Zmywarki',
pt: 'Máquinas De Lavar Louça',
es: 'Lavaplatos',
'zh-cn': '洗碗机',
},
icon: 'Dishwashers.svg',
},
{
_id: 'vacuum_cleaner',
name: {
en: 'Vacuum Cleaner',
ru: 'Пылесос',
de: 'Staubsauger',
fr: 'Aspirateur',
it: 'Aspirapolvere',
nl: 'Stofzuiger',
pl: 'Odkurzacz',
pt: 'Aspirador De Pó',
es: 'Aspiradora',
'zh-cn': '吸尘器',
},
icon: 'Vacuum Cleaner.svg',
},
{
_id: 'socket',
name: {
en: 'Socket',
ru: 'Розетка',
de: 'Steckdose',
fr: 'Prise',
it: 'Socket',
nl: 'Socket',
pl: 'Gniazdka',
pt: 'Tomada',
es: 'Zócalo',
'zh-cn': '套接字',
},
icon: 'Sockets.svg',
},
{
_id: 'floor_lamp',
name: {
en: 'Floor Lamp',
ru: 'Торшер',
de: 'Stehlampe',
fr: 'Lampes Pour Plancher',
it: 'Lampade A Stelo',
nl: 'Vloerlampen',
pl: 'Lampy Podłogowe',
pt: 'Lâmpadas Chão',
es: 'Lámparas De Pie',
'zh-cn': '落地灯',
},
icon: 'Floor Lamps.svg',
},
{
_id: 'power_consumption',
name: {
en: 'Power Consumption',
ru: 'Потребляемая мощность',
de: 'Stromverbrauch',
fr: "Consommation D'Énergie",
it: 'Consumo Di Energia',
nl: 'Energieverbruik',
pl: 'Pobór Energii',
pt: 'Consumo De Energia',
es: 'El Consumo De Energía',
'zh-cn': '能量消耗',
},
icon: 'Power Consumption.svg',
},
{
_id: 'temperature_sensor',
name: {
en: 'Temperature Sensor',
ru: 'Температурный датчик',
de: 'Temperatur-Sensor',
fr: 'Capteur De Température',
it: 'Sensori Di Temperatura',
nl: 'Temperatuursensor',
pl: 'Czujniki Temperatury',
pt: 'Sensores De Temperatura',
es: 'Sensores De Temperatura',
'zh-cn': '温度传感器',
},
icon: 'Temperature Sensors.svg',
},
{
_id: 'table_lamp',
name: {
en: 'Table Lamp',
ru: 'Настольная лампа',
de: 'Tischlampe',
fr: 'Lampe De Chevet',
it: 'Lampade Da Tavolo',
nl: 'Tafellampen',
pl: 'Lampy Stołowe',
pt: 'Lâmpadas De Mesa',
es: 'Lámparas De Mesa',
'zh-cn': '台灯',
},
icon: 'Table Lamps.svg',
},
{
_id: 'gate',
name: {
en: 'Gate',
ru: 'Ворота',
de: 'Tor',
fr: 'Porte',
it: 'Gate',
nl: 'Gate',
pl: 'Bramy',
pt: 'Portões',
es: 'Puertas',
'zh-cn': '盖茨',
},
icon: 'Gates.svg',
},
{
_id: 'dryer',
name: {
en: 'Dryer',
ru: 'Сушилка',
de: 'Trockner',
fr: 'Séchoir',
it: 'Asciugatrice',
nl: 'Droger',
pl: 'Suszarka',
pt: 'Secador',
es: 'Secadora',
'zh-cn': '烘干机',
},
icon: 'Dryer.svg',
},
{
_id: 'door',
name: {
en: 'Door',
ru: 'Дверь',
de: 'Tür',
fr: 'Des Portes',
it: 'Porte',
nl: 'Deuren',
pl: 'Drzwi',
pt: 'Portas',
es: 'Puertas',
'zh-cn': '门',
},
icon: 'Doors.svg',
},
{
_id: 'tv',
name: {
en: 'Tv',
ru: 'Телевизор',
de: 'TV',
fr: 'La Télé',
it: 'Tv',
nl: 'Tv',
pl: 'Telewizja',
pt: 'Televisão',
es: 'Televisor',
'zh-cn': '电视',
},
icon: 'Tv.svg',
},
{
_id: 'consumption',
name: {
en: 'Consumption',
ru: 'Потребление',
de: 'Verbrauch',
fr: 'Consommation',
it: 'Consumo',
nl: 'Consumptie',
pl: 'Konsumpcja',
pt: 'Consumo',
es: 'Consumo',
'zh-cn': '消费',
},
icon: 'Consumption.svg',
},
{
_id: 'amplifier',
name: {
en: 'Amplifier',
ru: 'Усилитель звука',
de: 'Verstärker',
fr: 'Amplificateur',
it: 'Amplificatore',
nl: 'Versterker',
pl: 'Wzmacniacz',
pt: 'Amplificador',
es: 'Amplificador',
'zh-cn': '放大器',
},
icon: 'Amplifier.svg',
},
{
_id: 'curtains',
name: {
en: 'Curtains',
ru: 'Шторы',
de: 'Vorhänge',
fr: 'Des Rideaux',
it: 'Le Tende',
nl: 'Gordijnen',
pl: 'Zasłony',
pt: 'Cortinas',
es: 'Cortinas',
'zh-cn': '窗帘',
},
icon: 'Curtains.svg',
},
{
_id: 'sconce',
name: {
en: 'Sconce',
ru: 'Настенный светильник',
de: 'Wandlampe',
fr: 'Sconce',
it: 'Sconce',
nl: 'Sconce',
pl: 'Kinkiety',
pt: 'Arandelas',
es: 'Los Apliques',
'zh-cn': '壁灯',
},
icon: 'Sconces.svg',
},
{
_id: 'washing_machine',
name: {
en: 'Washing Machine',
ru: 'Стиральная машина',
de: 'Waschmaschine',
fr: 'Machines À Laver',
it: 'Lavatrici',
nl: 'Wasmachines',
pl: 'Pralki',
pt: 'Máquinas De Lavar Roupas',
es: 'Lavadoras',
'zh-cn': '洗衣机',
},
icon: 'Washing Machines.svg',
},
{
_id: 'water',
name: {
en: 'Water',
ru: 'Вода',
de: 'Wasser',
fr: "L'Eau",
it: 'Acqua',
nl: 'Water',
pl: 'Woda',
pt: 'Água',
es: 'Agua',
'zh-cn': '水',
},
icon: 'Water.svg',
},
{
_id: 'water_heater',
name: {
en: 'Water Heater',
ru: 'Нагреватель воды',
de: 'Wasserkocher',
fr: 'Chauffe-Eau',
it: 'Scaldabagno',
nl: 'Waterkoker',
pl: 'Podgrzewacz Wody',
pt: 'Aquecedor De Água',
es: 'Calentador De Agua',
'zh-cn': '热水器',
},
icon: 'Water Heater.svg',
},
{
_id: 'water_consumption',
name: {
en: 'Water Consumption',
ru: 'Потребление воды',
de: 'Wasserverbrauch',
fr: "Consommation D'Eau",
it: "Consumo D'Acqua",
nl: 'Waterverbruik',
pl: 'Konsumpcja Wody',
pt: 'Consumo De Água',
es: 'Consumo De Agua',
'zh-cn': '耗水量',
},
icon: 'Water Consumption.svg',
},
{
_id: 'weather',
name: {
en: 'Weather',
ru: 'Погода',
de: 'Wetter',
fr: 'La Météo',
it: 'Tempo Metereologico',
nl: 'Weer',
pl: 'Pogoda',
pt: 'Clima',
es: 'Tiempo',
'zh-cn': '天气',
},
icon: 'Weather.svg',
},
];
// import rooms from '../assets/rooms/list.json';
const rooms = [
{
_id: 'storeroom',
name: {
en: 'Storeroom',
ru: 'Кладовая',
de: 'Abstellraum',
fr: 'Débarras',
it: 'Dispensa',
nl: 'Bergplaats',
pl: 'Magazyn',
pt: 'Despensa',
es: 'Trastero',
'zh-cn': '库房',
},
icon: 'Storeroom.svg',
},
{
_id: 'second_floor',
name: {
en: 'Second floor',
ru: 'Второй этаж',
de: 'Erster OG',
pt: 'Primeiro andar',
nl: 'Eerste verdieping',
fr: 'Premier étage',
it: 'Primo piano',
es: 'Primer piso',
pl: 'Pierwsze piętro',
'zh-cn': '第一层',
},
icon: 'Second Floor.svg',
},
{
_id: 'dressing_room',
name: {
en: 'Dressing Room',
ru: 'Гардеробная',
de: 'Ankleide',
fr: 'Vestiaire',
it: 'Camerino',
nl: 'Kleedkamer',
pl: 'Przebieralnia',
pt: 'Provador',
es: 'Vestidor',
'zh-cn': '更衣室',
},
icon: 'Dressing Room.svg',
},
{
_id: 'workspace',
name: {
en: 'Workspace',
ru: 'Рабочая Среда',
de: 'Arbeitszimmer',
fr: 'Espace De Travail',
it: 'Area Di Lavoro',
nl: 'Workspace',
pl: 'Workspace',
pt: 'Área De Trabalho',
es: 'Espacio De Trabajo',
'zh-cn': '工作区',
},
icon: 'Workspace.svg',
},
{
_id: 'driveway',
name: {
en: 'Driveway',
ru: 'Дорога',
de: 'Auffahrt',
fr: 'Allée',
it: 'Viale',
nl: 'Pad',
pl: 'Podjazd',
pt: 'Entrada Da Garagem',
es: 'Entrada De Coches',
'zh-cn': '车道',
},
icon: 'Driveway.svg',
},
{
_id: 'outdoors',
name: {
en: 'Outdoors',
ru: 'На Улице',
de: 'Außenbereich',
fr: 'En Plein Air',
it: "All'Aperto",
nl: 'Buitenshuis',
pl: 'Na Dworze',
pt: 'Ao Ar Livre',
es: 'Al Aire Libre',
'zh-cn': '户外',
},
icon: 'Outdoors.svg',
},
{
_id: 'bathroom',
name: {
en: 'Bathroom',
ru: 'Ванная Комната',
de: 'Badezimmer',
fr: 'Salle De Bains',
it: 'Bagno',
nl: 'Badkamer',
pl: 'Łazienka',
pt: 'Banheiro',
es: 'Baño',
'zh-cn': '浴室',
},
icon: 'Bathroom.svg',
},
{
_id: 'balcony',
name: {
en: 'Balcony',
ru: 'Балкон',
de: 'Balkon',
fr: 'Balcon',
it: 'Balcone',
nl: 'Balkon',
pl: 'Balkon',
pt: 'Sacada',
es: 'Balcón',
'zh-cn': '阳台',
},
icon: 'Balcony.svg',
},
{
_id: 'office',
name: {
en: 'Office',
ru: 'Офис',
de: 'Office',
fr: 'Bureau',
it: 'Ufficio',
nl: 'Kantoor',
pl: 'Gabinet',
pt: 'Escritório',
es: 'Oficina',
'zh-cn': '办公室',
},
icon: 'Office.svg',
},
{
_id: 'carport',
name: {
en: 'Carport',
ru: 'Навес',
de: 'Carport',
fr: 'Carport',
it: 'Posto Auto Coperto',
nl: 'Carport',
pl: 'Wiata',
pt: 'Telheiro',
es: 'Cochera',
'zh-cn': '车棚',
},
icon: 'Carport.svg',
},
{
_id: 'attic',
name: {
en: 'Attic',
ru: 'Чердак',
de: 'Dachgeschoss',
fr: 'Grenier',
it: 'Attico',
nl: 'Zolder',
pl: 'Poddasze',
pt: 'Sótão',
es: 'Ático',
'zh-cn': '阁楼',
},
icon: 'Attic.svg',
},
{
_id: 'hall',
name: {
en: 'Hall',
ru: 'Зал',
de: 'Diele',
fr: 'Salle',
it: 'Sala',
nl: 'Hal',
pl: 'Sala',
pt: 'Corredor',
es: 'Sala',
'zh-cn': '大厅',
},
icon: 'Hall.svg',
},
{
_id: 'entrance',
name: {
en: 'Entrance',
ru: 'Вход',
de: 'Eingang',
fr: 'Entrée',
it: 'Ingresso',
nl: 'Ingang',
pl: 'Wejście',
pt: 'Entrada',
es: 'Entrada',
'zh-cn': '入口',
},
icon: 'Entrance.svg',
},
{
_id: 'ground_floor',
name: {
en: 'Ground Floor',
ru: 'Первый Этаж',
de: 'Erdgeschoss',
fr: 'Rez-De-Chaussée',
it: 'Piano Terra',
nl: 'Begane Grond',
pl: 'Parter',
pt: 'Térreo',
es: 'Planta Baja',
'zh-cn': '一楼',
},
icon: 'Ground Floor.svg',
},
{
_id: 'dining_area',
name: {
en: 'Dining Area',
ru: 'Столовая',
de: 'Essbereich',
fr: 'Salle À Manger',
it: 'Zona Pranzo',
nl: 'Eethoek',
pl: 'Jadalnia',
pt: 'Área De Refeições',
es: 'Comedor',
'zh-cn': '用餐区',
},
icon: 'Dining Area.svg',
},
{
_id: 'dining_room',
name: {
en: 'Dining Room',
ru: 'Столовая',
de: 'Esszimmer',
fr: 'Salle À Manger',
it: 'Sala Da Pranzo',
nl: 'Eetkamer',
pl: 'Jadalnia',
pt: 'Sala De Jantar',
es: 'Comedor',
'zh-cn': '饭厅',
},
icon: 'Dining Room.svg',
},
{
_id: 'gym',
name: {
en: 'Gym',
ru: 'Спортзал',
de: 'Fitnessraum',
fr: 'Gym',
it: 'Palestra',
nl: 'Sportschool',
pl: 'Siłownia',
pt: 'Ginásio',
es: 'Gimnasio',
'zh-cn': '健身房',
},
icon: 'Gym.svg',
},
{
_id: 'gallery',
name: {
en: 'Gallery',
ru: 'Галерея',
de: 'Galerie',
fr: 'Galerie',
it: 'Galleria',
nl: 'Galerij',
pl: 'Galeria',
pt: 'Galeria',
es: 'Galería',
'zh-cn': '画廊',
},
icon: 'Gallery.svg',
},
{
_id: 'garage',
name: {
en: 'Garage',
ru: 'Гараж',
de: 'Garage',
fr: 'Garage',
it: 'Box Auto',
nl: 'Garage',
pl: 'Garaż',
pt: 'Garagem',
es: 'Garaje',
'zh-cn': '车库',
},
icon: 'Garage.svg',
},
{
_id: 'wardrobe',
name: {
en: 'Wardrobe',
ru: 'Гардероб',
de: 'Garderobe',
fr: 'Penderie',
it: 'Armadio',
nl: 'Garderobe',
pl: 'Szafa',
pt: 'Guarda Roupa',
es: 'Armario',
'zh-cn': '衣柜',
},
icon: 'Wardrobe.svg',
},
{
_id: 'garden',
name: {
en: 'Garden',
ru: 'Сад',
de: 'Garten',
fr: 'Jardin',
it: 'Giardino',
nl: 'Tuin',
pl: 'Ogród',
pt: 'Jardim',
es: 'Jardín',
'zh-cn': '花园',
},
icon: 'Garden.svg',
},
{
_id: 'summer_house',
name: {
en: 'Summer House',
ru: 'Дача',
de: 'Gartenhaus',
fr: "Maison D'Été",
it: 'Casa Estiva',
nl: 'Zomerhuis',
pl: 'Domek Letniskowy',
pt: 'Summer House',
es: 'Casa De Verano',
'zh-cn': '凉亭',
},
icon: 'Summer House.svg',
},
{
_id: 'guest_bathroom',
name: {
en: 'Guest Bathroom',
ru: 'Гостевая Комната',
de: 'Gäste-WC',
fr: 'Salle De Bains Invité',
it: 'Guest Bathroom',
nl: 'Gastenbadkamer',
pl: 'Łazienka Gościnna',
pt: 'Banheiro De Hóspedes',
es: 'Baño De Visitas',
'zh-cn': '客用浴室',
},
icon: 'Guest Bathroom.svg',
},
{
_id: 'guest_room',
name: {
en: 'Guest Room',
ru: 'Гостевая Комната',
de: 'Gästezimmer',
fr: "Chambre D'Amis",
it: 'Stanza Degli Ospiti',
nl: 'Guest Room',
pl: 'Pokój Gościnny',
pt: 'Quarto De Hóspedes',
es: 'Habitación De Huéspedes',
'zh-cn': '客房',
},
icon: 'Guest Room.svg',
},
{
_id: 'laundry_room',
name: {
en: 'Laundry Room',
ru: 'Прачечная',
de: 'Hauswirtschaftsraum',
fr: 'Buanderie',
it: 'Lavanderia',
nl: 'Wasruimte',
pl: 'Pralnia',
pt: 'Lavandaria',
es: 'Cuarto De Lavado',
'zh-cn': '洗衣房',
},
icon: 'Laundry Room.svg',
},
{
_id: 'home_theater',
name: {
en: 'Home Theater',
ru: 'Домашний Театр',
de: 'Heimkino',
fr: 'Cinéma Maison',
it: 'Home Theater',
nl: 'Thuisbioscoop',
pl: 'Kino Domowe',
pt: 'Cinema Em Casa',
es: 'Cine En Casa',
'zh-cn': '家庭电影院',
},
icon: 'Home Theater.svg',
},
{
_id: 'boiler_room',
name: {
en: 'Boiler Room',
ru: 'Бойлерная',
de: 'Heizungsraum',
fr: 'Chaufferie',
it: 'Locale Caldaia',
nl: 'Boiler Room',
pl: 'Kotłownia',
pt: 'Sala Da Caldeira',
es: 'Sala De Calderas',
'zh-cn': '锅炉房',
},
icon: 'Boiler Room.svg',
},
{
_id: 'chamber',
name: {
en: 'Chamber',
ru: 'Камера',
de: 'Kammer',
fr: 'Chambre',
it: 'Camera',
nl: 'Kamer',
pl: 'Izba',
pt: 'Câmara',
es: 'Cámara',
'zh-cn': '商会',
},
icon: 'Chamber.svg',
},
{
_id: 'basement,_cellar',
name: {
en: 'Basement, Cellar',
ru: 'Подвал, Погреб',
de: 'Keller',
fr: 'Sous-Sol, Cave',
it: 'Taverna, Cantina',
nl: 'Kelder, Kelder',
pl: 'Piwnica, Piwnica',
pt: 'Porão, Adega',
es: 'Sótano, Bodega',
'zh-cn': '地下室,地窖',
},
icon: 'Basement.svg',
},
{
_id: 'nursery',
name: {
en: 'Nursery',
ru: 'Питомник',
de: 'Kinderzimmer',
fr: 'Garderie',
it: 'Asilo',
nl: 'Kinderkamer',
pl: 'Żłobek',
pt: 'Berçário',
es: 'Guardería',
'zh-cn': '苗圃',
},
icon: 'Nursery.svg',
},
{
_id: 'corridor',
name: {
en: 'Corridor',
ru: 'Коридор',
de: 'Korridor',
fr: 'Couloir',
it: 'Corridoio',
nl: 'Gang',
pl: 'Korytarz',
pt: 'Corredor',
es: 'Corredor',
'zh-cn': '走廊',
},
icon: 'Corridor.svg',
},
{
_id: 'kitchen',
name: {
en: 'Kitchen',
ru: 'Кухня',
de: 'Küche',
fr: 'Cuisine',
it: 'Cucina',
nl: 'Keuken',
pl: 'Kuchnia',
pt: 'Cozinha',
es: 'Cocina',
'zh-cn': '厨房',
},
icon: 'Kitchen.svg',
},
{
_id: 'upstairs',
name: {
en: 'Upstairs',
ru: 'Вверх По Лестнице',
de: 'Obergeschoss',
fr: 'En Haut',
it: 'Di Sopra',
nl: 'Boven',
pl: 'Na Górę',
pt: 'Andar De Cima',
es: 'Piso Superior',
'zh-cn': '楼上',
},
icon: 'Upstairs.svg',
},
{
_id: 'office',
name: {
en: 'Office',
ru: 'Офис',
de: 'Office',
fr: 'Bureau',
it: 'Ufficio',
nl: 'Kantoor',
pl: 'Gabinet',
pt: 'Escritório',
es: 'Oficina',
'zh-cn': '办公室',
},
icon: 'Office.svg',
},
{
_id: 'pool',
name: {
en: 'Pool',
ru: 'Бассейн',
de: 'Pool',
fr: 'Piscine',
it: 'Piscina',
nl: 'Zwembad',
pl: 'Basen',
pt: 'Piscina',
es: 'Piscina',
'zh-cn': '水池',
},
icon: 'Pool.svg',
},
{
_id: 'rear_wall',
name: {
en: 'Rear Wall',
ru: 'Задняя Стенка',
de: 'Rückwand',
fr: 'Paroi Arrière',
it: 'Parete Posteriore',
nl: 'Achterwand',
pl: 'Tylna Ściana',
pt: 'Parede Traseira',
es: 'Pared Posterior',
'zh-cn': '后墙',
},
icon: 'Rear Wall.svg',
},
{
_id: 'barn',
name: {
en: 'Barn',
ru: 'Амбар',
de: 'Scheune',
fr: 'Grange',
it: 'Fienile',
nl: 'Schuur',
pl: 'Stodoła',
pt: 'Celeiro',
es: 'Granero',
'zh-cn': '谷仓',
},
icon: 'Barn.svg',
},
{
_id: 'sleeping_area',
name: {
en: 'Sleeping Area',
ru: 'Спальное Место',
de: 'Schlafbereich',
fr: 'Coin Montagne',
it: 'Area Sleeping',
nl: 'Sleeping Area',
pl: 'Powierzchnia Spania',
pt: 'Sleeping Area',
es: 'Área De Dormir',
'zh-cn': '睡眠区',
},
icon: 'Sleeping Area.svg',
},
{
_id: 'bedroom',
name: {
en: 'Bedroom',
ru: 'Спальная Комната',
de: 'Schlafzimmer',
fr: 'Chambre',
it: 'Camera Da Letto',
nl: 'Slaapkamer',
pl: 'Sypialnia',
pt: 'Quarto',
es: 'Cuarto',
'zh-cn': '卧室',
},
icon: 'Bedroom.svg',
},
{
_id: 'shed',
name: {
en: 'Shed',
ru: 'Сбрасывать',
de: 'Schuppen',
fr: 'Hangar',
it: 'Capannone',
nl: 'Schuur',
pl: 'Budka',
pt: 'Cabana',
es: 'Cobertizo',
'zh-cn': '棚',
},
icon: 'Shed.svg',
},
{
_id: 'swimming_pool',
name: {
en: 'Swimming Pool',
ru: 'Плавательный Бассейн',
de: 'Schwimmbad',
fr: 'Piscine',
it: 'Piscina',
nl: 'Zwembad',
pl: 'Basen',
pt: 'Piscina',
es: 'Piscina',
'zh-cn': '游泳池',
},
icon: 'Swimming Pool.svg',
},
{
_id: 'dining',
name: {
en: 'Dining',
ru: 'Обеденный',
de: 'Speis',
fr: 'À Manger',
it: 'Cenare',
nl: 'Dining',
pl: 'Jadalnia',
pt: 'Jantar',
es: 'Comida',
'zh-cn': '用餐',
},
icon: 'Dining.svg',
},
{
_id: 'playroom',
name: {
en: 'Playroom',
ru: 'Игровая Комната',
de: 'Spielzimmer',
fr: 'Salle De Jeux',
it: 'Stanza Dei Giochi',
nl: 'Speelkamer',
pl: 'Pokój Zabaw',
pt: 'Sala De Jogos',
es: 'Cuarto De Jugar',
'zh-cn': '游戏室',
},
icon: 'Playroom.svg',
},
{
_id: 'stairway',
name: {
en: 'Stairway',
ru: 'Лестница',
de: 'Treppe',
fr: 'Escalier',
it: 'Scala',
nl: 'Trap',
pl: 'Klatka Schodowa',
pt: 'Escada',
es: 'Escalera',
'zh-cn': '楼梯',
},
icon: 'Stairway.svg',
},
{
_id: 'equipment_room',
name: {
en: 'Equipment Room',
ru: 'Оборудование Номера',
de: 'Technikraum',
fr: "Salle D'Équipement",
it: 'Stanza Degli Attrezzi',
nl: 'Technische Ruimte',
pl: 'Wyposażenie Pokoi',
pt: 'Sala De Equipamentos',
es: 'Cuarto De Equipos',
'zh-cn': '机房',
},
icon: 'Equipment Room.svg',
},
{
_id: 'terrace',
name: {
en: 'Terrace',
ru: 'Терраса',
de: 'Terrasse',
fr: 'Terrasse',
it: 'Terrazza',
nl: 'Terras',
pl: 'Taras',
pt: 'Terraço',
es: 'Terraza',
'zh-cn': '阳台',
},
icon: 'Terrace.svg',
},
{
_id: 'toilet',
name: {
en: 'Toilet',
ru: 'Туалет',
de: 'Toilette',
fr: 'Toilette',
it: 'Gabinetto',
nl: 'Toilet',
pl: 'Toaleta',
pt: 'Banheiro',
es: 'Inodoro',
'zh-cn': '洗手间',
},
icon: 'Toilet.svg',
},
{
_id: 'stairwell',
name: {
en: 'Stairwell',
ru: 'Лестничная клетка',
de: 'Treppenhaus',
fr: "Cage D'Escalier",
it: 'Tromba Delle Scale',
nl: 'Trappenhuis',
pl: 'Klatka Schodowa',
pt: 'Caixa De Escada',
es: 'Hueco De Escalera',
'zh-cn': '楼梯间',
},
icon: 'Stairwell.svg',
},
{
_id: 'locker_room',
name: {
en: 'Locker Room',
ru: 'Камера Хранения',
de: 'Umkleideraum',
fr: 'Vestiaire',
it: 'Spogliatoio',
nl: 'Kleedkamer',
pl: 'Szatnia',
pt: 'Vestiário',
es: 'Vestuario',
'zh-cn': '更衣室',
},
icon: 'Locker Room.svg',
},
{
_id: 'basement',
name: {
en: 'Basement',
ru: 'Подвал',
de: 'Untergeschoss',
fr: 'Sous-Sol',
it: 'Seminterrato',
nl: 'Kelder',
pl: 'Piwnica',
pt: 'Porão',
es: 'Sótano',
'zh-cn': '地下室',
},
icon: 'Basement.svg',
},
{
_id: 'front_yard',
name: {
en: 'Front Yard',
ru: 'Передний Двор',
de: 'Vorgarten',
fr: 'Front Yard',
it: 'Cortile',
nl: 'Voortuin',
pl: 'Podwórko',
pt: 'Jardim Da Frente',
es: 'Patio Delantero',
'zh-cn': '前院',
},
icon: 'Front Yard.svg',
},
{
_id: 'anteroom',
name: {
en: 'Anteroom',
ru: 'Передняя',
de: 'Vorraum',
fr: 'Antichambre',
it: 'Anticamera',
nl: 'Voorkamer',
pl: 'Przedpokój',
pt: 'Ante-Sala',
es: 'Antesala',
'zh-cn': '接待室',
},
icon: 'Anteroom.svg',
},
{
_id: 'washroom',
name: {
en: 'Washroom',
ru: 'Уборная',
de: 'Waschraum',
fr: 'Toilettes',
it: 'Bagno',
nl: 'Waskamer',
pl: 'Umywalnia',
pt: 'Banheiro',
es: 'Baño',
'zh-cn': '卫生间',
},
icon: 'Washroom.svg',
},
{
_id: 'wc',
name: {
en: 'Wc',
ru: 'Туалет',
de: 'WC',
fr: 'Toilettes',
it: 'Bagno',
nl: 'Wc',
pl: 'Toaleta',
pt: 'Banheiro',
es: 'Wc',
'zh-cn': '厕所',
},
icon: 'Wc.svg',
},
{
_id: 'workshop',
name: {
en: 'Workshop',
ru: 'Мастерская',
de: 'Werkstatt',
fr: 'Atelier',
it: 'Laboratorio',
nl: 'Werkplaats',
pl: 'Warsztat',
pt: 'Oficina',
es: 'Taller',
'zh-cn': '作坊',
},
icon: 'Workshop.svg',
},
{
_id: 'windscreen',
name: {
en: 'Windscreen',
ru: 'Ветровое Стекло',
de: 'Windfang',
fr: 'Pare-Brise',
it: 'Parabrezza',
nl: 'Voorruit',
pl: 'Szyba Przednia',
pt: 'Pára-Brisas',
es: 'Parabrisas',
'zh-cn': '风档',
},
icon: 'Windscreen.svg',
},
{
_id: 'living_area',
name: {
en: 'Living Area',
ru: 'Жилая Площадь',
de: 'Wohnbereich',
fr: 'Salon',
it: 'Zona Giorno',
nl: 'Living Area',
pl: 'Powierzchnia Mieszkalna',
pt: 'Sala-De-Estar',
es: 'Sala De Estar',
'zh-cn': '生活区域',
},
icon: 'Living Area.svg',
},
{
_id: 'living_room',
name: {
en: 'Living Room',
ru: 'Гостинная',
de: 'Wohnzimmer',
fr: 'Le Salon',
it: 'Soggiorno',
nl: 'Woonkamer',
pl: 'Salon',
pt: 'Sala De Estar',
es: 'Sala De Estar',
'zh-cn': '客厅',
},
icon: 'Living Room.svg',
},
{
_id: 'living_room',
name: {
en: 'Living Room',
ru: 'Гостинная',
de: 'Wohnzimmer',
fr: 'Le Salon',
it: 'Soggiorno',
nl: 'Woonkamer',
pl: 'Salon',
pt: 'Sala De Estar',
es: 'Sala De Estar',
'zh-cn': '客厅',
},
icon: 'Living Room.svg',
},
];
export class IconSelector extends Component {
constructor(props) {
super(props);
this.state = {
opened: false,
names: [],
filter: '',
icons: null,
loading: false,
isAnyName: false,
};
}
loadAllIcons() {
if (this.state.loading || this.state.icons) {
return;
}
this.setState({ loading: true }, () => {
const icons = [];
const names = [];
if (!this.props.icons) {
// load rooms
let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;
if (templates) {
templates.forEach(item => {
if (item.name && typeof item.name === 'object') {
item.name = item.name[this.props.lang] || item.name.en || item._id;
}
item.name = item.name || item._id;
});
templates = templates.filter((item, i) => !templates?.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));
templates.forEach((template, i) => {
names[i] = template.name;
icons[i] =
`data:image/svg+xml;base64,${roomsIcons[template.icon.replace(/\.svg$/, '')]}`;
});
}
// load devices
templates =
this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;
if (templates) {
const offset = icons.length;
templates &&
templates.forEach(item => {
if (item.name && typeof item.name === 'object') {
item.name = item.name[this.props.lang] || item.name.en || item._id;
}