@iobroker/adapter-react-v5 7.2.4 → 7.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/README.md +6 -6
  2. package/build/AdminConnection.d.ts +1 -0
  3. package/build/AdminConnection.js +2 -0
  4. package/build/AdminConnection.js.map +1 -0
  5. package/{src/Components/404.tsx → build/Components/404.js} +14 -39
  6. package/build/Components/404.js.map +1 -0
  7. package/{Components → build/Components}/ColorPicker.d.ts +2 -2
  8. package/{Components → build/Components}/ColorPicker.js +50 -65
  9. package/build/Components/ColorPicker.js.map +1 -0
  10. package/{Components → build/Components}/ComplexCron.d.ts +2 -2
  11. package/{Components → build/Components}/ComplexCron.js +43 -71
  12. package/build/Components/ComplexCron.js.map +1 -0
  13. package/{Components → build/Components}/CopyToClipboard.d.ts +1 -2
  14. package/{src/Components/CopyToClipboard.tsx → build/Components/CopyToClipboard.js} +20 -38
  15. package/build/Components/CopyToClipboard.js.map +1 -0
  16. package/{Components → build/Components}/CustomModal.d.ts +3 -3
  17. package/build/Components/CustomModal.js +60 -0
  18. package/build/Components/CustomModal.js.map +1 -0
  19. package/{Components → build/Components}/FileBrowser.d.ts +2 -2
  20. package/{Components → build/Components}/FileBrowser.js +229 -236
  21. package/build/Components/FileBrowser.js.map +1 -0
  22. package/build/Components/FileViewer.d.ts +48 -0
  23. package/build/Components/FileViewer.js +277 -0
  24. package/build/Components/FileViewer.js.map +1 -0
  25. package/{Components → build/Components}/Icon.d.ts +1 -1
  26. package/build/Components/Icon.js +140 -0
  27. package/build/Components/Icon.js.map +1 -0
  28. package/{Components → build/Components}/IconPicker.d.ts +2 -2
  29. package/build/Components/IconPicker.js +73 -0
  30. package/build/Components/IconPicker.js.map +1 -0
  31. package/{Components → build/Components}/IconSelector.d.ts +3 -3
  32. package/{Components → build/Components}/IconSelector.js +29 -57
  33. package/build/Components/IconSelector.js.map +1 -0
  34. package/{Components → build/Components}/Image.d.ts +2 -2
  35. package/{Components → build/Components}/Image.js +16 -22
  36. package/build/Components/Image.js.map +1 -0
  37. package/{Components → build/Components}/Loader.d.ts +2 -2
  38. package/{Components → build/Components}/Loader.js +15 -40
  39. package/build/Components/Loader.js.map +1 -0
  40. package/{Components → build/Components}/Loaders/MV.d.ts +2 -2
  41. package/build/Components/Loaders/MV.js +61 -0
  42. package/build/Components/Loaders/MV.js.map +1 -0
  43. package/{Components → build/Components}/Loaders/PT.d.ts +2 -2
  44. package/{Components → build/Components}/Loaders/PT.js +10 -35
  45. package/build/Components/Loaders/PT.js.map +1 -0
  46. package/{Components → build/Components}/Loaders/Vendor.d.ts +2 -2
  47. package/build/Components/Loaders/Vendor.js +52 -0
  48. package/build/Components/Loaders/Vendor.js.map +1 -0
  49. package/{Components → build/Components}/Logo.d.ts +2 -2
  50. package/build/Components/Logo.js +108 -0
  51. package/build/Components/Logo.js.map +1 -0
  52. package/{Components → build/Components}/MDUtils.d.ts +1 -2
  53. package/{Components → build/Components}/MDUtils.js +4 -9
  54. package/build/Components/MDUtils.js.map +1 -0
  55. package/{Components → build/Components}/ObjectBrowser.d.ts +4 -4
  56. package/{Components → build/Components}/ObjectBrowser.js +1152 -1116
  57. package/build/Components/ObjectBrowser.js.map +1 -0
  58. package/{Components → build/Components}/Router.d.ts +1 -2
  59. package/{Components → build/Components}/Router.js +6 -7
  60. package/build/Components/Router.js.map +1 -0
  61. package/{Components → build/Components}/SaveCloseButtons.d.ts +2 -2
  62. package/build/Components/SaveCloseButtons.js +65 -0
  63. package/build/Components/SaveCloseButtons.js.map +1 -0
  64. package/{Components → build/Components}/Schedule.d.ts +2 -2
  65. package/{Components → build/Components}/Schedule.js +242 -257
  66. package/build/Components/Schedule.js.map +1 -0
  67. package/{Components → build/Components}/SelectWithIcon.d.ts +2 -2
  68. package/build/Components/SelectWithIcon.js +135 -0
  69. package/build/Components/SelectWithIcon.js.map +1 -0
  70. package/build/Components/SimpleCron/cronText.js +15 -0
  71. package/build/Components/SimpleCron/cronText.js.map +1 -0
  72. package/{Components → build/Components}/SimpleCron/index.d.ts +2 -2
  73. package/{Components → build/Components}/SimpleCron/index.js +55 -58
  74. package/build/Components/SimpleCron/index.js.map +1 -0
  75. package/{Components → build/Components}/TabContainer.d.ts +2 -2
  76. package/build/Components/TabContainer.js +23 -0
  77. package/build/Components/TabContainer.js.map +1 -0
  78. package/{Components → build/Components}/TabContent.d.ts +3 -2
  79. package/build/Components/TabContent.js +20 -0
  80. package/build/Components/TabContent.js.map +1 -0
  81. package/build/Components/TabHeader.d.ts +6 -0
  82. package/build/Components/TabHeader.js +6 -0
  83. package/build/Components/TabHeader.js.map +1 -0
  84. package/{Components → build/Components}/TableResize.d.ts +2 -2
  85. package/{src/Components/TableResize.tsx → build/Components/TableResize.js} +64 -134
  86. package/build/Components/TableResize.js.map +1 -0
  87. package/{Components → build/Components}/TextWithIcon.d.ts +2 -2
  88. package/{src/Components/TextWithIcon.tsx → build/Components/TextWithIcon.js} +30 -75
  89. package/build/Components/TextWithIcon.js.map +1 -0
  90. package/{Components → build/Components}/ToggleThemeMenu.d.ts +1 -1
  91. package/build/Components/ToggleThemeMenu.js +13 -0
  92. package/build/Components/ToggleThemeMenu.js.map +1 -0
  93. package/{Components → build/Components}/TreeTable.d.ts +3 -3
  94. package/{Components → build/Components}/TreeTable.js +87 -99
  95. package/build/Components/TreeTable.js.map +1 -0
  96. package/{Components → build/Components}/UploadImage.d.ts +2 -2
  97. package/{Components → build/Components}/UploadImage.js +46 -69
  98. package/build/Components/UploadImage.js.map +1 -0
  99. package/{Components → build/Components}/Utils.d.ts +2 -2
  100. package/{Components → build/Components}/Utils.js +47 -60
  101. package/build/Components/Utils.js.map +1 -0
  102. package/build/Components/withWidth.d.ts +2 -0
  103. package/build/Components/withWidth.js +22 -0
  104. package/build/Components/withWidth.js.map +1 -0
  105. package/build/Connection.d.ts +1 -0
  106. package/build/Connection.js +2 -0
  107. package/build/Connection.js.map +1 -0
  108. package/{Dialogs → build/Dialogs}/ComplexCron.d.ts +2 -2
  109. package/build/Dialogs/ComplexCron.js +85 -0
  110. package/build/Dialogs/ComplexCron.js.map +1 -0
  111. package/{Dialogs → build/Dialogs}/Confirm.d.ts +2 -2
  112. package/build/Dialogs/Confirm.js +83 -0
  113. package/build/Dialogs/Confirm.js.map +1 -0
  114. package/{Dialogs → build/Dialogs}/Cron.d.ts +2 -2
  115. package/build/Dialogs/Cron.js +72 -0
  116. package/build/Dialogs/Cron.js.map +1 -0
  117. package/{Dialogs → build/Dialogs}/Error.d.ts +2 -2
  118. package/build/Dialogs/Error.js +27 -0
  119. package/build/Dialogs/Error.js.map +1 -0
  120. package/{Dialogs → build/Dialogs}/Message.d.ts +2 -2
  121. package/build/Dialogs/Message.js +29 -0
  122. package/build/Dialogs/Message.js.map +1 -0
  123. package/{Dialogs → build/Dialogs}/SelectFile.d.ts +2 -2
  124. package/build/Dialogs/SelectFile.js +116 -0
  125. package/build/Dialogs/SelectFile.js.map +1 -0
  126. package/{Dialogs → build/Dialogs}/SelectID.d.ts +3 -3
  127. package/{Dialogs → build/Dialogs}/SelectID.js +28 -53
  128. package/build/Dialogs/SelectID.js.map +1 -0
  129. package/{Dialogs → build/Dialogs}/SimpleCron.d.ts +2 -2
  130. package/build/Dialogs/SimpleCron.js +46 -0
  131. package/build/Dialogs/SimpleCron.js.map +1 -0
  132. package/build/Dialogs/TextInput.d.ts +2 -0
  133. package/build/Dialogs/TextInput.js +31 -0
  134. package/build/Dialogs/TextInput.js.map +1 -0
  135. package/{GenericApp.d.ts → build/GenericApp.d.ts} +2 -3
  136. package/{GenericApp.js → build/GenericApp.js} +162 -176
  137. package/build/GenericApp.js.map +1 -0
  138. package/{LegacyConnection.d.ts → build/LegacyConnection.d.ts} +69 -4
  139. package/{LegacyConnection.js → build/LegacyConnection.js} +106 -99
  140. package/build/LegacyConnection.js.map +1 -0
  141. package/{Prompt.d.ts → build/Prompt.d.ts} +1 -1
  142. package/{Prompt.js → build/Prompt.js} +3 -4
  143. package/build/Prompt.js.map +1 -0
  144. package/build/Theme.d.ts +5 -0
  145. package/{Theme.js → build/Theme.js} +37 -32
  146. package/build/Theme.js.map +1 -0
  147. package/build/assets/devices/parseNames.d.ts +0 -0
  148. package/build/assets/devices/parseNames.js +35 -0
  149. package/build/assets/devices/parseNames.js.map +1 -0
  150. package/build/assets/rooms/parseNames.d.ts +0 -0
  151. package/build/assets/rooms/parseNames.js +35 -0
  152. package/build/assets/rooms/parseNames.js.map +1 -0
  153. package/build/dictionary.d.ts +1 -0
  154. package/build/dictionary.js +25 -0
  155. package/build/dictionary.js.map +1 -0
  156. package/build/i18n/de.json +449 -0
  157. package/build/i18n/en.json +449 -0
  158. package/build/i18n/es.json +449 -0
  159. package/build/i18n/fr.json +449 -0
  160. package/build/i18n/it.json +449 -0
  161. package/build/i18n/nl.json +449 -0
  162. package/build/i18n/pl.json +449 -0
  163. package/build/i18n/pt.json +449 -0
  164. package/build/i18n/ru.json +449 -0
  165. package/build/i18n/uk.json +449 -0
  166. package/build/i18n/zh-cn.json +449 -0
  167. package/{i18n.d.ts → build/i18n.d.ts} +2 -2
  168. package/{i18n.js → build/i18n.js} +9 -11
  169. package/build/i18n.js.map +1 -0
  170. package/build/icons/IconAdapter.d.ts +3 -0
  171. package/build/icons/IconAdapter.js +6 -0
  172. package/build/icons/IconAdapter.js.map +1 -0
  173. package/build/icons/IconAlias.d.ts +3 -0
  174. package/build/icons/IconAlias.js +6 -0
  175. package/build/icons/IconAlias.js.map +1 -0
  176. package/build/icons/IconChannel.d.ts +3 -0
  177. package/build/icons/IconChannel.js +9 -0
  178. package/build/icons/IconChannel.js.map +1 -0
  179. package/build/icons/IconClearFilter.d.ts +3 -0
  180. package/build/icons/IconClearFilter.js +7 -0
  181. package/build/icons/IconClearFilter.js.map +1 -0
  182. package/build/icons/IconClosed.d.ts +3 -0
  183. package/build/icons/IconClosed.js +6 -0
  184. package/build/icons/IconClosed.js.map +1 -0
  185. package/build/icons/IconCopy.d.ts +3 -0
  186. package/build/icons/IconCopy.js +5 -0
  187. package/build/icons/IconCopy.js.map +1 -0
  188. package/build/icons/IconDevice.d.ts +3 -0
  189. package/build/icons/IconDevice.js +15 -0
  190. package/build/icons/IconDevice.js.map +1 -0
  191. package/build/icons/IconDocument.d.ts +3 -0
  192. package/build/icons/IconDocument.js +6 -0
  193. package/build/icons/IconDocument.js.map +1 -0
  194. package/build/icons/IconDocumentReadOnly.d.ts +3 -0
  195. package/build/icons/IconDocumentReadOnly.js +7 -0
  196. package/build/icons/IconDocumentReadOnly.js.map +1 -0
  197. package/build/icons/IconExpert.d.ts +3 -0
  198. package/build/icons/IconExpert.js +6 -0
  199. package/build/icons/IconExpert.js.map +1 -0
  200. package/build/icons/IconFx.d.ts +3 -0
  201. package/build/icons/IconFx.js +5 -0
  202. package/build/icons/IconFx.js.map +1 -0
  203. package/build/icons/IconInstance.d.ts +3 -0
  204. package/build/icons/IconInstance.js +6 -0
  205. package/build/icons/IconInstance.js.map +1 -0
  206. package/build/icons/IconLogout.d.ts +3 -0
  207. package/build/icons/IconLogout.js +6 -0
  208. package/build/icons/IconLogout.js.map +1 -0
  209. package/build/icons/IconNoIcon.d.ts +3 -0
  210. package/build/icons/IconNoIcon.js +5 -0
  211. package/build/icons/IconNoIcon.js.map +1 -0
  212. package/build/icons/IconOpen.d.ts +3 -0
  213. package/build/icons/IconOpen.js +6 -0
  214. package/build/icons/IconOpen.js.map +1 -0
  215. package/{icons → build/icons}/IconProps.d.ts +1 -1
  216. package/build/icons/IconProps.js +2 -0
  217. package/build/icons/IconProps.js.map +1 -0
  218. package/build/icons/IconState.d.ts +3 -0
  219. package/build/icons/IconState.js +6 -0
  220. package/build/icons/IconState.js.map +1 -0
  221. package/build/index.d.ts +67 -0
  222. package/build/index.js +67 -0
  223. package/build/index.js.map +1 -0
  224. package/{types.d.ts → build/types.d.ts} +1 -1
  225. package/package.json +84 -48
  226. package/AdminConnection.d.ts +0 -2
  227. package/AdminConnection.js +0 -4
  228. package/Components/404.js +0 -101
  229. package/Components/CopyToClipboard.js +0 -163
  230. package/Components/CustomModal.js +0 -88
  231. package/Components/FileViewer.d.ts +0 -10
  232. package/Components/FileViewer.js +0 -305
  233. package/Components/Icon.js +0 -148
  234. package/Components/IconPicker.js +0 -98
  235. package/Components/Loaders/MV.js +0 -66
  236. package/Components/Loaders/Vendor.js +0 -77
  237. package/Components/Logo.js +0 -117
  238. package/Components/SaveCloseButtons.js +0 -69
  239. package/Components/SelectWithIcon.js +0 -168
  240. package/Components/SimpleCron/cronText.js +0 -19
  241. package/Components/TabContainer.js +0 -25
  242. package/Components/TabContent.js +0 -21
  243. package/Components/TabHeader.d.ts +0 -6
  244. package/Components/TabHeader.js +0 -11
  245. package/Components/TableResize.js +0 -226
  246. package/Components/TextWithIcon.js +0 -119
  247. package/Components/ToggleThemeMenu.js +0 -18
  248. package/Components/withWidth.d.ts +0 -3
  249. package/Components/withWidth.js +0 -27
  250. package/Connection.d.ts +0 -3
  251. package/Connection.js +0 -8
  252. package/Dialogs/ComplexCron.js +0 -90
  253. package/Dialogs/Confirm.js +0 -111
  254. package/Dialogs/Cron.js +0 -100
  255. package/Dialogs/Error.js +0 -55
  256. package/Dialogs/Message.js +0 -57
  257. package/Dialogs/SelectFile.js +0 -119
  258. package/Dialogs/SimpleCron.js +0 -51
  259. package/Dialogs/TextInput.d.ts +0 -3
  260. package/Dialogs/TextInput.js +0 -35
  261. package/Theme.d.ts +0 -6
  262. package/i18n/de.json +0 -449
  263. package/i18n/en.json +0 -449
  264. package/i18n/es.json +0 -449
  265. package/i18n/fr.json +0 -449
  266. package/i18n/it.json +0 -449
  267. package/i18n/nl.json +0 -449
  268. package/i18n/pl.json +0 -449
  269. package/i18n/pt.json +0 -449
  270. package/i18n/ru.json +0 -449
  271. package/i18n/uk.json +0 -449
  272. package/i18n/zh-cn.json +0 -449
  273. package/icons/IconAdapter.d.ts +0 -4
  274. package/icons/IconAdapter.js +0 -10
  275. package/icons/IconAlias.d.ts +0 -4
  276. package/icons/IconAlias.js +0 -10
  277. package/icons/IconChannel.d.ts +0 -4
  278. package/icons/IconChannel.js +0 -13
  279. package/icons/IconClearFilter.d.ts +0 -4
  280. package/icons/IconClearFilter.js +0 -11
  281. package/icons/IconClosed.d.ts +0 -4
  282. package/icons/IconClosed.js +0 -10
  283. package/icons/IconCopy.d.ts +0 -4
  284. package/icons/IconCopy.js +0 -9
  285. package/icons/IconDevice.d.ts +0 -4
  286. package/icons/IconDevice.js +0 -19
  287. package/icons/IconDocument.d.ts +0 -4
  288. package/icons/IconDocument.js +0 -10
  289. package/icons/IconDocumentReadOnly.d.ts +0 -4
  290. package/icons/IconDocumentReadOnly.js +0 -11
  291. package/icons/IconExpert.d.ts +0 -4
  292. package/icons/IconExpert.js +0 -10
  293. package/icons/IconFx.d.ts +0 -4
  294. package/icons/IconFx.js +0 -9
  295. package/icons/IconInstance.d.ts +0 -4
  296. package/icons/IconInstance.js +0 -10
  297. package/icons/IconLogout.d.ts +0 -4
  298. package/icons/IconLogout.js +0 -10
  299. package/icons/IconNoIcon.d.ts +0 -4
  300. package/icons/IconNoIcon.js +0 -9
  301. package/icons/IconOpen.d.ts +0 -4
  302. package/icons/IconOpen.js +0 -10
  303. package/icons/IconProps.js +0 -2
  304. package/icons/IconState.d.ts +0 -4
  305. package/icons/IconState.js +0 -10
  306. package/index.d.ts +0 -128
  307. package/index.js +0 -215
  308. package/src/AdminConnection.tsx +0 -3
  309. package/src/Components/ColorPicker.tsx +0 -343
  310. package/src/Components/ComplexCron.tsx +0 -561
  311. package/src/Components/CustomModal.tsx +0 -170
  312. package/src/Components/FileBrowser.tsx +0 -2560
  313. package/src/Components/FileViewer.tsx +0 -412
  314. package/src/Components/Icon.tsx +0 -238
  315. package/src/Components/IconPicker.tsx +0 -165
  316. package/src/Components/IconSelector.tsx +0 -2220
  317. package/src/Components/Image.tsx +0 -193
  318. package/src/Components/Loader.tsx +0 -328
  319. package/src/Components/Logo.tsx +0 -176
  320. package/src/Components/MDUtils.tsx +0 -104
  321. package/src/Components/ObjectBrowser.tsx +0 -8947
  322. package/src/Components/Router.tsx +0 -90
  323. package/src/Components/SaveCloseButtons.tsx +0 -117
  324. package/src/Components/Schedule.tsx +0 -1998
  325. package/src/Components/SelectWithIcon.tsx +0 -239
  326. package/src/Components/TabContainer.tsx +0 -57
  327. package/src/Components/TabContent.tsx +0 -38
  328. package/src/Components/TabHeader.tsx +0 -20
  329. package/src/Components/ToggleThemeMenu.tsx +0 -52
  330. package/src/Components/TreeTable.tsx +0 -1002
  331. package/src/Components/UploadImage.tsx +0 -643
  332. package/src/Components/Utils.tsx +0 -1802
  333. package/src/Components/loader.css +0 -231
  334. package/src/Components/withWidth.tsx +0 -32
  335. package/src/Connection.tsx +0 -5
  336. package/src/Dialogs/ComplexCron.tsx +0 -163
  337. package/src/Dialogs/Confirm.tsx +0 -185
  338. package/src/Dialogs/Cron.tsx +0 -192
  339. package/src/Dialogs/Error.tsx +0 -67
  340. package/src/Dialogs/Message.tsx +0 -73
  341. package/src/Dialogs/SelectFile.tsx +0 -280
  342. package/src/Dialogs/SelectID.tsx +0 -310
  343. package/src/Dialogs/SimpleCron.tsx +0 -101
  344. package/src/Dialogs/TextInput.tsx +0 -99
  345. package/src/GenericApp.tsx +0 -1076
  346. package/src/LegacyConnection.tsx +0 -3720
  347. package/src/Prompt.tsx +0 -22
  348. package/src/Theme.tsx +0 -472
  349. package/src/icons/IconAdapter.tsx +0 -22
  350. package/src/icons/IconAlias.tsx +0 -22
  351. package/src/icons/IconChannel.tsx +0 -60
  352. package/src/icons/IconClearFilter.tsx +0 -24
  353. package/src/icons/IconClosed.tsx +0 -22
  354. package/src/icons/IconCopy.tsx +0 -21
  355. package/src/icons/IconDevice.tsx +0 -126
  356. package/src/icons/IconDocument.tsx +0 -22
  357. package/src/icons/IconDocumentReadOnly.tsx +0 -27
  358. package/src/icons/IconExpert.tsx +0 -26
  359. package/src/icons/IconFx.tsx +0 -38
  360. package/src/icons/IconInstance.tsx +0 -22
  361. package/src/icons/IconLogout.tsx +0 -32
  362. package/src/icons/IconNoIcon.tsx +0 -21
  363. package/src/icons/IconOpen.tsx +0 -22
  364. package/src/icons/IconProps.tsx +0 -16
  365. package/src/icons/IconState.tsx +0 -38
  366. package/src/index.css +0 -56
  367. /package/{Components → build/Components}/404.d.ts +0 -0
  368. /package/{Components → build/Components}/SimpleCron/cronText.d.ts +0 -0
  369. /package/{assets → build/assets}/devices.json +0 -0
  370. /package/{assets → build/assets}/lamp_ceiling.svg +0 -0
  371. /package/{assets → build/assets}/lamp_table.svg +0 -0
  372. /package/{assets → build/assets}/no_icon.svg +0 -0
  373. /package/{assets → build/assets}/rooms.json +0 -0
  374. /package/{index.css → build/index.css} +0 -0
  375. /package/{tasks.js → tasksExample.js} +0 -0
@@ -1,2220 +0,0 @@
1
- import React, { Component } from 'react';
2
-
3
- import {
4
- Dialog,
5
- DialogTitle,
6
- DialogActions,
7
- DialogContent,
8
- Button,
9
- IconButton,
10
- TextField,
11
- Tooltip,
12
- CircularProgress,
13
- } from '@mui/material';
14
-
15
- import { Close as CloseIcon, Clear as ClearIcon } from '@mui/icons-material';
16
-
17
- import Icon from './Icon';
18
- import Utils from './Utils';
19
- import devicesIcons from '../assets/devices.json';
20
- import roomsIcons from '../assets/rooms.json';
21
- import { type Translate } from '../types';
22
-
23
- // import devices from '../assets/devices/list.json';
24
- const devices: { _id: string; name: ioBroker.StringOrTranslated; icon: string }[] = [
25
- {
26
- _id: 'hood',
27
- name: {
28
- en: 'Hood',
29
- ru: 'Вытяжка',
30
- de: 'Abzugshaube',
31
- fr: 'Capot',
32
- it: 'Cappe',
33
- nl: 'Hood',
34
- pl: 'Okapy',
35
- pt: 'Hood',
36
- es: 'Campana',
37
- 'zh-cn': '抽油烟机',
38
- },
39
- icon: 'Hoods.svg',
40
- },
41
- {
42
- _id: 'alarm_system',
43
- name: {
44
- en: 'Alarm System',
45
- ru: 'Сигнализация',
46
- de: 'Alarmanlage',
47
- fr: "Systèmes D'Alarme",
48
- it: 'Sistemi Di Allarme',
49
- nl: 'Alarm Systems',
50
- pl: 'Systemy Alarmowe',
51
- pt: 'Sistemas De Alarme',
52
- es: 'Sistemas De Alarma',
53
- 'zh-cn': '报警系统',
54
- },
55
- icon: 'Alarm Systems.svg',
56
- },
57
- {
58
- _id: 'battery_status',
59
- name: {
60
- en: 'Battery Status',
61
- ru: 'Заряд батареи',
62
- de: 'Batteriestatus',
63
- fr: 'État De La Batterie',
64
- it: 'Stato Della Batteria',
65
- nl: 'Batterij Status',
66
- pl: 'Stan Baterii',
67
- pt: 'Estado Da Bateria',
68
- es: 'Estado De La Batería',
69
- 'zh-cn': '电池状态',
70
- },
71
- icon: 'Battery Status.svg',
72
- },
73
- {
74
- _id: 'lighting',
75
- name: {
76
- en: 'Lighting',
77
- ru: 'Светильник',
78
- de: 'Beleuchtung',
79
- fr: 'Éclairages',
80
- it: 'Illuminazione',
81
- nl: 'Verlichting',
82
- pl: 'Oprawy Oświetleniowe',
83
- pt: 'Iluminações',
84
- es: 'Iluminaciones',
85
- 'zh-cn': '照明',
86
- },
87
- icon: 'Lightings.svg',
88
- },
89
- {
90
- _id: 'shading',
91
- name: {
92
- en: 'Shading',
93
- ru: 'Затенение',
94
- de: 'Beschattungen',
95
- fr: 'Ombres',
96
- it: 'Ombreggiatura',
97
- nl: 'Shading',
98
- pl: 'Zacienienie',
99
- pt: 'Shading',
100
- es: 'Sombreado',
101
- 'zh-cn': '底纹',
102
- },
103
- icon: 'Shading.svg',
104
- },
105
- {
106
- _id: 'irrigation',
107
- name: {
108
- en: 'Irrigation',
109
- ru: 'Орошение',
110
- de: 'Bewässerung',
111
- fr: 'Irrigation',
112
- it: 'Irrigazione',
113
- nl: 'Irrigatie',
114
- pl: 'Nawadnianie',
115
- pt: 'Irrigação',
116
- es: 'Irrigación',
117
- 'zh-cn': '灌溉',
118
- },
119
- icon: 'Irrigation.svg',
120
- },
121
- {
122
- _id: 'iron',
123
- name: {
124
- en: 'Iron',
125
- ru: 'Утюг',
126
- de: 'Bügeleisen',
127
- fr: 'Le Fer',
128
- it: 'Ferro',
129
- nl: 'Ijzer',
130
- pl: 'Żelazo',
131
- pt: 'Ferro',
132
- es: 'Hierro',
133
- 'zh-cn': '铁',
134
- },
135
- icon: 'Iron.svg',
136
- },
137
- {
138
- _id: 'computer',
139
- name: {
140
- en: 'Computer',
141
- ru: 'Компьютер',
142
- de: 'Rechner',
143
- fr: "L'Ordinateur",
144
- it: 'Computer',
145
- nl: 'Computer',
146
- pl: 'Komputer',
147
- pt: 'Computador',
148
- es: 'Ordenador',
149
- 'zh-cn': '电脑',
150
- },
151
- icon: 'Computer.svg',
152
- },
153
- {
154
- _id: 'ceiling_spotlight',
155
- name: {
156
- en: 'Ceiling Spotlight',
157
- ru: 'Потолочный прожектор',
158
- de: 'Deckenspot',
159
- fr: 'Plafond Spotlight',
160
- it: 'Faretti A Soffitto',
161
- nl: 'Plafond Spotlight',
162
- pl: 'Reflektory Sufitowe',
163
- pt: 'Tecto Foco',
164
- es: 'Focos De Techo',
165
- 'zh-cn': '天花射灯',
166
- },
167
- icon: 'Ceiling Spotlights.svg',
168
- },
169
- {
170
- _id: 'printer',
171
- name: {
172
- en: 'Printer',
173
- de: 'Drucker',
174
- ru: 'Принтер',
175
- pt: 'Impressora',
176
- nl: 'Printer',
177
- fr: 'Imprimante',
178
- it: 'Stampante',
179
- es: 'Impresora',
180
- pl: 'Drukarka',
181
- 'zh-cn': '打印机',
182
- },
183
- icon: 'Printer.svg',
184
- },
185
- {
186
- _id: 'power_consumption',
187
- name: {
188
- en: 'Power Consumption',
189
- ru: 'Потребляемая мощность',
190
- de: 'Stromverbrauch',
191
- fr: "Consommation D'Énergie",
192
- it: 'Consumo Di Energia',
193
- nl: 'Energieverbruik',
194
- pl: 'Pobór Energii',
195
- pt: 'Consumo De Energia',
196
- es: 'El Consumo De Energía',
197
- 'zh-cn': '能量消耗',
198
- },
199
- icon: 'Power Consumption.svg',
200
- },
201
- {
202
- _id: 'window',
203
- name: {
204
- en: 'Window',
205
- ru: 'Окно',
206
- de: 'Fenster',
207
- fr: 'La Fenêtre',
208
- it: 'Finestra',
209
- nl: 'Venster',
210
- pl: 'Okno',
211
- pt: 'Janela',
212
- es: 'Ventana',
213
- 'zh-cn': '窗户',
214
- },
215
- icon: 'Window.svg',
216
- },
217
- {
218
- _id: 'garage_door',
219
- name: {
220
- en: 'Garage Door',
221
- ru: 'Гаражные Ворота',
222
- de: 'Garagentor',
223
- fr: 'Portes De Garage',
224
- it: 'Garage Door',
225
- nl: 'Garage Door',
226
- pl: 'Bramy Garażowe',
227
- pt: 'Portas De Garagem',
228
- es: 'Las Puertas De Garaje',
229
- 'zh-cn': '车库门',
230
- },
231
- icon: 'Garage Doors.svg',
232
- },
233
- {
234
- _id: 'hairdryer',
235
- name: {
236
- en: 'Hairdryer',
237
- ru: 'Фен',
238
- de: 'Haartrockner',
239
- fr: 'Sèche-Cheveux',
240
- it: 'Asciugacapelli',
241
- nl: 'Haardroger',
242
- pl: 'Suszarka Do Włosów',
243
- pt: 'Secador De Cabelo',
244
- es: 'Secador De Pelo',
245
- 'zh-cn': '电吹风',
246
- },
247
- icon: 'Hairdryer.svg',
248
- },
249
- {
250
- _id: 'hanging_lamp',
251
- name: {
252
- en: 'Hanging Lamp',
253
- ru: 'Подвесной светильник',
254
- de: 'Hängelampe',
255
- fr: 'Lampes Suspendues',
256
- it: 'Lampade A Sospensione',
257
- nl: 'Opknoping Lampen',
258
- pl: 'Lampy Wiszące',
259
- pt: 'Lâmpadas De Suspensão',
260
- es: 'Lámparas Colgantes',
261
- 'zh-cn': '挂灯',
262
- },
263
- icon: 'Hanging Lamps.svg',
264
- },
265
- {
266
- _id: 'doorstep',
267
- name: {
268
- en: 'Enterance',
269
- ru: 'Входная дверь',
270
- de: 'Haustür',
271
- fr: 'Seuil De Porte',
272
- it: 'Gradino Della Porta',
273
- nl: 'Drempel',
274
- pl: 'Próg',
275
- pt: 'Porta',
276
- es: 'Peldaño',
277
- 'zh-cn': '门阶',
278
- },
279
- icon: 'Doorstep.svg',
280
- },
281
- {
282
- _id: 'hot_water',
283
- name: {
284
- en: 'Hot Water',
285
- ru: 'Горячая вода',
286
- de: 'Heißwasser',
287
- fr: 'Eau Chaude',
288
- it: 'Acqua Calda',
289
- nl: 'Heet Water',
290
- pl: 'Gorąca Woda',
291
- pt: 'Água Quente',
292
- es: 'Agua Caliente',
293
- 'zh-cn': '热水',
294
- },
295
- icon: 'Hot Water.svg',
296
- },
297
- {
298
- _id: 'heating',
299
- name: {
300
- en: 'Heating',
301
- ru: 'Отопление',
302
- de: 'Heizung',
303
- fr: 'Chauffe-Eau',
304
- it: 'Riscaldatore',
305
- nl: 'Verwarmer',
306
- pl: 'Podgrzewacz',
307
- pt: 'Aquecedor',
308
- es: 'Calentador',
309
- 'zh-cn': '加热器',
310
- },
311
- icon: 'Heater.svg',
312
- },
313
- {
314
- _id: 'stove',
315
- name: {
316
- en: 'Stove',
317
- ru: 'Печь',
318
- de: 'Herd',
319
- fr: 'Le Fourneau',
320
- it: 'Stufa',
321
- nl: 'Fornuis',
322
- pl: 'Kuchenka',
323
- pt: 'Forno',
324
- es: 'Cocina',
325
- 'zh-cn': '火炉',
326
- },
327
- icon: 'Stove.svg',
328
- },
329
- {
330
- _id: 'louvre',
331
- name: {
332
- en: 'Louvre',
333
- ru: 'Жалюзи',
334
- de: 'Jalousie',
335
- fr: 'Persienne',
336
- it: 'Persiana Di Ventilazione',
337
- nl: 'Louvre',
338
- pl: 'Żaluzja',
339
- pt: 'Trapeira',
340
- es: 'Lumbrera',
341
- 'zh-cn': '卢浮宫',
342
- },
343
- icon: 'Louvre.svg',
344
- },
345
- {
346
- _id: 'coffee_maker',
347
- name: {
348
- en: 'Coffee Maker',
349
- ru: 'Кофеварка',
350
- de: 'Kaffemaschine',
351
- fr: 'Cafetière',
352
- it: 'Macchine Da Caffè',
353
- nl: 'Koffie Maker',
354
- pl: 'Ekspresy Do Kawy',
355
- pt: 'Cafeteira',
356
- es: 'Cafetera',
357
- 'zh-cn': '咖啡壶',
358
- },
359
- icon: 'Coffee Makers.svg',
360
- },
361
- {
362
- _id: 'cold_water',
363
- name: {
364
- en: 'Cold Water',
365
- ru: 'Холодная вода',
366
- de: 'Kaltwasser',
367
- fr: 'Eau Froide',
368
- it: 'Acqua Fredda',
369
- nl: 'Koud Water',
370
- pl: 'Zimna Woda',
371
- pt: 'Água Fria',
372
- es: 'Agua Fría',
373
- 'zh-cn': '冷水',
374
- },
375
- icon: 'Cold Water.svg',
376
- },
377
- {
378
- _id: 'climate',
379
- name: {
380
- en: 'Climate',
381
- ru: 'Климат',
382
- de: 'Klima',
383
- fr: 'Climat',
384
- it: 'Clima',
385
- nl: 'Klimaat',
386
- pl: 'Klimat',
387
- pt: 'Clima',
388
- es: 'Clima',
389
- 'zh-cn': '气候',
390
- },
391
- icon: 'Climate.svg',
392
- },
393
- {
394
- _id: 'speaker',
395
- name: {
396
- en: 'Speaker',
397
- ru: 'Звуковая система',
398
- de: 'Lautsprecher',
399
- fr: 'Orateur',
400
- it: 'Altoparlante',
401
- nl: 'Spreker',
402
- pl: 'Głośnik',
403
- pt: 'Palestrante',
404
- es: 'Altavoz',
405
- 'zh-cn': '扬声器',
406
- },
407
- icon: 'Speaker.svg',
408
- },
409
- {
410
- _id: 'led_strip',
411
- name: {
412
- en: 'Led Strip',
413
- ru: 'Светодиодная лента',
414
- de: 'LED Leiste',
415
- fr: 'Led Strip',
416
- it: 'Led Strip',
417
- nl: 'Loden Strip',
418
- pl: 'Pasek Ledowy',
419
- pt: 'Led Faixa',
420
- es: 'Tira Llevada',
421
- 'zh-cn': '灯带',
422
- },
423
- icon: 'Led Strip.svg',
424
- },
425
- {
426
- _id: 'light',
427
- name: {
428
- en: 'Light',
429
- ru: 'Свет',
430
- de: 'Licht',
431
- fr: 'Lumière',
432
- it: 'Leggero',
433
- nl: 'Licht',
434
- pl: 'Lekki',
435
- pt: 'Luz',
436
- es: 'Luz',
437
- 'zh-cn': '光',
438
- },
439
- icon: 'Light.svg',
440
- },
441
- {
442
- _id: 'fan',
443
- name: {
444
- en: 'Fan',
445
- ru: 'Вентилятор',
446
- de: 'Lüfter',
447
- fr: 'Ventilateur',
448
- it: 'Fan',
449
- nl: 'Ventilator',
450
- pl: 'Wentylator',
451
- pt: 'Ventilador',
452
- es: 'Ventilador',
453
- 'zh-cn': '扇子',
454
- },
455
- icon: 'Fan.svg',
456
- },
457
- {
458
- _id: 'humidity',
459
- name: {
460
- en: 'Humidity',
461
- ru: 'Влажность',
462
- de: 'Luftfeuchtigkeit',
463
- fr: 'Humidité',
464
- it: 'Umidità',
465
- nl: 'Vochtigheid',
466
- pl: 'Wilgotność',
467
- pt: 'Umidade',
468
- es: 'Humedad',
469
- 'zh-cn': '湿度',
470
- },
471
- icon: 'Humidity.svg',
472
- },
473
- {
474
- _id: 'ventilation',
475
- name: {
476
- en: 'Ventilation',
477
- ru: 'Вентиляция',
478
- de: 'Lüftung',
479
- fr: 'Ventilation',
480
- it: 'Ventilazione',
481
- nl: 'Ventilatie',
482
- pl: 'Wentylacja',
483
- pt: 'Ventilação',
484
- es: 'Ventilación',
485
- 'zh-cn': '通风',
486
- },
487
- icon: 'Ventilation.svg',
488
- },
489
- {
490
- _id: 'chandelier',
491
- name: {
492
- en: 'Chandelier',
493
- ru: 'Люстра',
494
- de: 'Kronleuchter',
495
- fr: 'Lustre',
496
- it: 'Lampadario',
497
- nl: 'Kroonluchter',
498
- pl: 'Żyrandol',
499
- pt: 'Lustre',
500
- es: 'Candelabro',
501
- 'zh-cn': '枝形吊灯',
502
- },
503
- icon: 'Chandelier.svg',
504
- },
505
- {
506
- _id: 'awning',
507
- name: {
508
- en: 'Awning',
509
- ru: 'Маркиза',
510
- de: 'Markise',
511
- fr: 'Auvents',
512
- it: 'Tende',
513
- nl: 'Luifels',
514
- pl: 'Okrycia',
515
- pt: 'Toldos',
516
- es: 'Toldos',
517
- 'zh-cn': '遮阳篷',
518
- },
519
- icon: 'Awnings.svg',
520
- },
521
- {
522
- _id: 'music',
523
- name: {
524
- en: 'Music',
525
- ru: 'Музыка',
526
- de: 'Musik',
527
- fr: 'Musique',
528
- it: 'Musica',
529
- nl: 'Muziek',
530
- pl: 'Muzyka',
531
- pt: 'Música',
532
- es: 'Música',
533
- 'zh-cn': '音乐',
534
- },
535
- icon: 'Music.svg',
536
- },
537
- {
538
- _id: 'people',
539
- name: {
540
- en: 'People',
541
- ru: 'Люди',
542
- de: 'Personen',
543
- fr: 'Gens',
544
- it: 'Persone',
545
- nl: 'Mensen',
546
- pl: 'Ludzie',
547
- pt: 'Pessoas',
548
- es: 'Personas',
549
- 'zh-cn': '人们',
550
- },
551
- icon: 'People.svg',
552
- },
553
- {
554
- _id: 'pool',
555
- name: {
556
- en: 'Pool',
557
- ru: 'Бассейн',
558
- de: 'Pool',
559
- fr: 'Piscine',
560
- it: 'Piscina',
561
- nl: 'Zwembad',
562
- pl: 'Basen',
563
- pt: 'Piscina',
564
- es: 'Piscina',
565
- 'zh-cn': '水池',
566
- },
567
- icon: 'Pool.svg',
568
- },
569
- {
570
- _id: 'pump',
571
- name: {
572
- en: 'Pump',
573
- ru: 'Насос',
574
- de: 'Pumpe',
575
- fr: 'Pompe',
576
- it: 'Pompa',
577
- nl: 'Pomp',
578
- pl: 'Pompa',
579
- pt: 'Bombear',
580
- es: 'Bomba',
581
- 'zh-cn': '泵',
582
- },
583
- icon: 'Pump.svg',
584
- },
585
- {
586
- _id: 'outdoor_blinds',
587
- name: {
588
- en: 'Outdoor Blinds',
589
- ru: 'Внещгте жалюзи',
590
- de: 'Raffstore',
591
- fr: 'Volets',
592
- it: 'Tende Da Esterni',
593
- nl: 'Outdoor Blinds',
594
- pl: 'Rolety Zewnętrzne',
595
- pt: 'Estores Exteriores',
596
- es: 'Persianas Exteriores',
597
- 'zh-cn': '室外百叶窗',
598
- },
599
- icon: 'Outdoor Blinds.svg',
600
- },
601
- {
602
- _id: 'mowing_machine',
603
- name: {
604
- en: 'Mowing Machine',
605
- ru: 'Газонокосилка',
606
- de: 'Rasenmäher',
607
- fr: 'Machine De Fauchage',
608
- it: 'Macchina Di Falciatura',
609
- nl: 'Maaimachine',
610
- pl: 'Kosiarka',
611
- pt: 'Roçada Máquina',
612
- es: 'Segadora',
613
- 'zh-cn': '割草机',
614
- },
615
- icon: 'Mowing Machine.svg',
616
- },
617
- {
618
- _id: 'receiver',
619
- name: {
620
- en: 'Receiver',
621
- ru: 'Приставка',
622
- de: 'Receiver',
623
- fr: 'Destinataire',
624
- it: 'Ricevitore',
625
- nl: 'Ontvanger',
626
- pl: 'Odbiorca',
627
- pt: 'Recebedor',
628
- es: 'Receptor',
629
- 'zh-cn': '接收者',
630
- },
631
- icon: 'Receiver.svg',
632
- },
633
- {
634
- _id: 'shutters',
635
- name: {
636
- en: 'Shutters',
637
- ru: 'Ставни',
638
- de: 'Rollladen',
639
- fr: 'Volets',
640
- it: 'Persiane',
641
- nl: 'Shutters',
642
- pl: 'Żaluzje',
643
- pt: 'Persianas',
644
- es: 'Persianas',
645
- 'zh-cn': '百叶窗',
646
- },
647
- icon: 'Shutters.svg',
648
- },
649
- {
650
- _id: 'smoke_detector',
651
- name: {
652
- en: 'Smoke detector',
653
- de: 'Rauchmelder',
654
- ru: 'Детектор дыма',
655
- pt: 'Detector de fumaça',
656
- nl: 'Rookdetector',
657
- fr: 'Détecteur de fumée',
658
- it: 'Rilevatore di fumo',
659
- es: 'Detector de humo',
660
- pl: 'Wykrywacz dymu',
661
- 'zh-cn': '烟雾探测器',
662
- },
663
- icon: 'SmokeDetector.svg',
664
- },
665
- {
666
- _id: 'lock',
667
- name: {
668
- en: 'Lock',
669
- ru: 'Замок',
670
- de: 'Schloß',
671
- fr: 'Fermer À Clé',
672
- it: 'Serratura',
673
- nl: 'Slot',
674
- pl: 'Zamek',
675
- pt: 'Trancar',
676
- es: 'Cerrar Con Llave',
677
- 'zh-cn': '锁',
678
- },
679
- icon: 'Lock.svg',
680
- },
681
- {
682
- _id: 'security',
683
- name: {
684
- en: 'Security',
685
- ru: 'Безопасность',
686
- de: 'Sicherheit',
687
- fr: 'Sécurité',
688
- it: 'Sicurezza',
689
- nl: 'Veiligheid',
690
- pl: 'Bezpieczeństwo',
691
- pt: 'Segurança',
692
- es: 'Seguridad',
693
- 'zh-cn': '安全',
694
- },
695
- icon: 'Security.svg',
696
- },
697
- {
698
- _id: 'dishwasher',
699
- name: {
700
- en: 'Dishwasher',
701
- ru: 'Посудомоечная машина',
702
- de: 'Spülmaschine',
703
- fr: 'Lave-Vaisselles',
704
- it: 'Lavastoviglie',
705
- nl: 'Vaatwassers',
706
- pl: 'Zmywarki',
707
- pt: 'Máquinas De Lavar Louça',
708
- es: 'Lavaplatos',
709
- 'zh-cn': '洗碗机',
710
- },
711
- icon: 'Dishwashers.svg',
712
- },
713
- {
714
- _id: 'vacuum_cleaner',
715
- name: {
716
- en: 'Vacuum Cleaner',
717
- ru: 'Пылесос',
718
- de: 'Staubsauger',
719
- fr: 'Aspirateur',
720
- it: 'Aspirapolvere',
721
- nl: 'Stofzuiger',
722
- pl: 'Odkurzacz',
723
- pt: 'Aspirador De Pó',
724
- es: 'Aspiradora',
725
- 'zh-cn': '吸尘器',
726
- },
727
- icon: 'Vacuum Cleaner.svg',
728
- },
729
- {
730
- _id: 'socket',
731
- name: {
732
- en: 'Socket',
733
- ru: 'Розетка',
734
- de: 'Steckdose',
735
- fr: 'Prise',
736
- it: 'Socket',
737
- nl: 'Socket',
738
- pl: 'Gniazdka',
739
- pt: 'Tomada',
740
- es: 'Zócalo',
741
- 'zh-cn': '套接字',
742
- },
743
- icon: 'Sockets.svg',
744
- },
745
- {
746
- _id: 'floor_lamp',
747
- name: {
748
- en: 'Floor Lamp',
749
- ru: 'Торшер',
750
- de: 'Stehlampe',
751
- fr: 'Lampes Pour Plancher',
752
- it: 'Lampade A Stelo',
753
- nl: 'Vloerlampen',
754
- pl: 'Lampy Podłogowe',
755
- pt: 'Lâmpadas Chão',
756
- es: 'Lámparas De Pie',
757
- 'zh-cn': '落地灯',
758
- },
759
- icon: 'Floor Lamps.svg',
760
- },
761
- {
762
- _id: 'power_consumption',
763
- name: {
764
- en: 'Power Consumption',
765
- ru: 'Потребляемая мощность',
766
- de: 'Stromverbrauch',
767
- fr: "Consommation D'Énergie",
768
- it: 'Consumo Di Energia',
769
- nl: 'Energieverbruik',
770
- pl: 'Pobór Energii',
771
- pt: 'Consumo De Energia',
772
- es: 'El Consumo De Energía',
773
- 'zh-cn': '能量消耗',
774
- },
775
- icon: 'Power Consumption.svg',
776
- },
777
- {
778
- _id: 'temperature_sensor',
779
- name: {
780
- en: 'Temperature Sensor',
781
- ru: 'Температурный датчик',
782
- de: 'Temperatur-Sensor',
783
- fr: 'Capteur De Température',
784
- it: 'Sensori Di Temperatura',
785
- nl: 'Temperatuursensor',
786
- pl: 'Czujniki Temperatury',
787
- pt: 'Sensores De Temperatura',
788
- es: 'Sensores De Temperatura',
789
- 'zh-cn': '温度传感器',
790
- },
791
- icon: 'Temperature Sensors.svg',
792
- },
793
- {
794
- _id: 'table_lamp',
795
- name: {
796
- en: 'Table Lamp',
797
- ru: 'Настольная лампа',
798
- de: 'Tischlampe',
799
- fr: 'Lampe De Chevet',
800
- it: 'Lampade Da Tavolo',
801
- nl: 'Tafellampen',
802
- pl: 'Lampy Stołowe',
803
- pt: 'Lâmpadas De Mesa',
804
- es: 'Lámparas De Mesa',
805
- 'zh-cn': '台灯',
806
- },
807
- icon: 'Table Lamps.svg',
808
- },
809
- {
810
- _id: 'gate',
811
- name: {
812
- en: 'Gate',
813
- ru: 'Ворота',
814
- de: 'Tor',
815
- fr: 'Porte',
816
- it: 'Gate',
817
- nl: 'Gate',
818
- pl: 'Bramy',
819
- pt: 'Portões',
820
- es: 'Puertas',
821
- 'zh-cn': '盖茨',
822
- },
823
- icon: 'Gates.svg',
824
- },
825
- {
826
- _id: 'dryer',
827
- name: {
828
- en: 'Dryer',
829
- ru: 'Сушилка',
830
- de: 'Trockner',
831
- fr: 'Séchoir',
832
- it: 'Asciugatrice',
833
- nl: 'Droger',
834
- pl: 'Suszarka',
835
- pt: 'Secador',
836
- es: 'Secadora',
837
- 'zh-cn': '烘干机',
838
- },
839
- icon: 'Dryer.svg',
840
- },
841
- {
842
- _id: 'door',
843
- name: {
844
- en: 'Door',
845
- ru: 'Дверь',
846
- de: 'Tür',
847
- fr: 'Des Portes',
848
- it: 'Porte',
849
- nl: 'Deuren',
850
- pl: 'Drzwi',
851
- pt: 'Portas',
852
- es: 'Puertas',
853
- 'zh-cn': '门',
854
- },
855
- icon: 'Doors.svg',
856
- },
857
- {
858
- _id: 'tv',
859
- name: {
860
- en: 'Tv',
861
- ru: 'Телевизор',
862
- de: 'TV',
863
- fr: 'La Télé',
864
- it: 'Tv',
865
- nl: 'Tv',
866
- pl: 'Telewizja',
867
- pt: 'Televisão',
868
- es: 'Televisor',
869
- 'zh-cn': '电视',
870
- },
871
- icon: 'Tv.svg',
872
- },
873
- {
874
- _id: 'consumption',
875
- name: {
876
- en: 'Consumption',
877
- ru: 'Потребление',
878
- de: 'Verbrauch',
879
- fr: 'Consommation',
880
- it: 'Consumo',
881
- nl: 'Consumptie',
882
- pl: 'Konsumpcja',
883
- pt: 'Consumo',
884
- es: 'Consumo',
885
- 'zh-cn': '消费',
886
- },
887
- icon: 'Consumption.svg',
888
- },
889
- {
890
- _id: 'amplifier',
891
- name: {
892
- en: 'Amplifier',
893
- ru: 'Усилитель звука',
894
- de: 'Verstärker',
895
- fr: 'Amplificateur',
896
- it: 'Amplificatore',
897
- nl: 'Versterker',
898
- pl: 'Wzmacniacz',
899
- pt: 'Amplificador',
900
- es: 'Amplificador',
901
- 'zh-cn': '放大器',
902
- },
903
- icon: 'Amplifier.svg',
904
- },
905
- {
906
- _id: 'curtains',
907
- name: {
908
- en: 'Curtains',
909
- ru: 'Шторы',
910
- de: 'Vorhänge',
911
- fr: 'Des Rideaux',
912
- it: 'Le Tende',
913
- nl: 'Gordijnen',
914
- pl: 'Zasłony',
915
- pt: 'Cortinas',
916
- es: 'Cortinas',
917
- 'zh-cn': '窗帘',
918
- },
919
- icon: 'Curtains.svg',
920
- },
921
- {
922
- _id: 'sconce',
923
- name: {
924
- en: 'Sconce',
925
- ru: 'Настенный светильник',
926
- de: 'Wandlampe',
927
- fr: 'Sconce',
928
- it: 'Sconce',
929
- nl: 'Sconce',
930
- pl: 'Kinkiety',
931
- pt: 'Arandelas',
932
- es: 'Los Apliques',
933
- 'zh-cn': '壁灯',
934
- },
935
- icon: 'Sconces.svg',
936
- },
937
- {
938
- _id: 'washing_machine',
939
- name: {
940
- en: 'Washing Machine',
941
- ru: 'Стиральная машина',
942
- de: 'Waschmaschine',
943
- fr: 'Machines À Laver',
944
- it: 'Lavatrici',
945
- nl: 'Wasmachines',
946
- pl: 'Pralki',
947
- pt: 'Máquinas De Lavar Roupas',
948
- es: 'Lavadoras',
949
- 'zh-cn': '洗衣机',
950
- },
951
- icon: 'Washing Machines.svg',
952
- },
953
- {
954
- _id: 'water',
955
- name: {
956
- en: 'Water',
957
- ru: 'Вода',
958
- de: 'Wasser',
959
- fr: "L'Eau",
960
- it: 'Acqua',
961
- nl: 'Water',
962
- pl: 'Woda',
963
- pt: 'Água',
964
- es: 'Agua',
965
- 'zh-cn': '水',
966
- },
967
- icon: 'Water.svg',
968
- },
969
- {
970
- _id: 'water_heater',
971
- name: {
972
- en: 'Water Heater',
973
- ru: 'Нагреватель воды',
974
- de: 'Wasserkocher',
975
- fr: 'Chauffe-Eau',
976
- it: 'Scaldabagno',
977
- nl: 'Waterkoker',
978
- pl: 'Podgrzewacz Wody',
979
- pt: 'Aquecedor De Água',
980
- es: 'Calentador De Agua',
981
- 'zh-cn': '热水器',
982
- },
983
- icon: 'Water Heater.svg',
984
- },
985
- {
986
- _id: 'water_consumption',
987
- name: {
988
- en: 'Water Consumption',
989
- ru: 'Потребление воды',
990
- de: 'Wasserverbrauch',
991
- fr: "Consommation D'Eau",
992
- it: "Consumo D'Acqua",
993
- nl: 'Waterverbruik',
994
- pl: 'Konsumpcja Wody',
995
- pt: 'Consumo De Água',
996
- es: 'Consumo De Agua',
997
- 'zh-cn': '耗水量',
998
- },
999
- icon: 'Water Consumption.svg',
1000
- },
1001
- {
1002
- _id: 'weather',
1003
- name: {
1004
- en: 'Weather',
1005
- ru: 'Погода',
1006
- de: 'Wetter',
1007
- fr: 'La Météo',
1008
- it: 'Tempo Metereologico',
1009
- nl: 'Weer',
1010
- pl: 'Pogoda',
1011
- pt: 'Clima',
1012
- es: 'Tiempo',
1013
- 'zh-cn': '天气',
1014
- },
1015
- icon: 'Weather.svg',
1016
- },
1017
- ];
1018
-
1019
- // import rooms from '../assets/rooms/list.json';
1020
- const rooms: { _id: string; name: ioBroker.StringOrTranslated; icon: string }[] = [
1021
- {
1022
- _id: 'storeroom',
1023
- name: {
1024
- en: 'Storeroom',
1025
- ru: 'Кладовая',
1026
- de: 'Abstellraum',
1027
- fr: 'Débarras',
1028
- it: 'Dispensa',
1029
- nl: 'Bergplaats',
1030
- pl: 'Magazyn',
1031
- pt: 'Despensa',
1032
- es: 'Trastero',
1033
- 'zh-cn': '库房',
1034
- },
1035
- icon: 'Storeroom.svg',
1036
- },
1037
- {
1038
- _id: 'second_floor',
1039
- name: {
1040
- en: 'Second floor',
1041
- ru: 'Второй этаж',
1042
- de: 'Erster OG',
1043
- pt: 'Primeiro andar',
1044
- nl: 'Eerste verdieping',
1045
- fr: 'Premier étage',
1046
- it: 'Primo piano',
1047
- es: 'Primer piso',
1048
- pl: 'Pierwsze piętro',
1049
- 'zh-cn': '第一层',
1050
- },
1051
- icon: 'Second Floor.svg',
1052
- },
1053
- {
1054
- _id: 'dressing_room',
1055
- name: {
1056
- en: 'Dressing Room',
1057
- ru: 'Гардеробная',
1058
- de: 'Ankleide',
1059
- fr: 'Vestiaire',
1060
- it: 'Camerino',
1061
- nl: 'Kleedkamer',
1062
- pl: 'Przebieralnia',
1063
- pt: 'Provador',
1064
- es: 'Vestidor',
1065
- 'zh-cn': '更衣室',
1066
- },
1067
- icon: 'Dressing Room.svg',
1068
- },
1069
- {
1070
- _id: 'workspace',
1071
- name: {
1072
- en: 'Workspace',
1073
- ru: 'Рабочая Среда',
1074
- de: 'Arbeitszimmer',
1075
- fr: 'Espace De Travail',
1076
- it: 'Area Di Lavoro',
1077
- nl: 'Workspace',
1078
- pl: 'Workspace',
1079
- pt: 'Área De Trabalho',
1080
- es: 'Espacio De Trabajo',
1081
- 'zh-cn': '工作区',
1082
- },
1083
- icon: 'Workspace.svg',
1084
- },
1085
- {
1086
- _id: 'driveway',
1087
- name: {
1088
- en: 'Driveway',
1089
- ru: 'Дорога',
1090
- de: 'Auffahrt',
1091
- fr: 'Allée',
1092
- it: 'Viale',
1093
- nl: 'Pad',
1094
- pl: 'Podjazd',
1095
- pt: 'Entrada Da Garagem',
1096
- es: 'Entrada De Coches',
1097
- 'zh-cn': '车道',
1098
- },
1099
- icon: 'Driveway.svg',
1100
- },
1101
- {
1102
- _id: 'outdoors',
1103
- name: {
1104
- en: 'Outdoors',
1105
- ru: 'На Улице',
1106
- de: 'Außenbereich',
1107
- fr: 'En Plein Air',
1108
- it: "All'Aperto",
1109
- nl: 'Buitenshuis',
1110
- pl: 'Na Dworze',
1111
- pt: 'Ao Ar Livre',
1112
- es: 'Al Aire Libre',
1113
- 'zh-cn': '户外',
1114
- },
1115
- icon: 'Outdoors.svg',
1116
- },
1117
- {
1118
- _id: 'bathroom',
1119
- name: {
1120
- en: 'Bathroom',
1121
- ru: 'Ванная Комната',
1122
- de: 'Badezimmer',
1123
- fr: 'Salle De Bains',
1124
- it: 'Bagno',
1125
- nl: 'Badkamer',
1126
- pl: 'Łazienka',
1127
- pt: 'Banheiro',
1128
- es: 'Baño',
1129
- 'zh-cn': '浴室',
1130
- },
1131
- icon: 'Bathroom.svg',
1132
- },
1133
- {
1134
- _id: 'balcony',
1135
- name: {
1136
- en: 'Balcony',
1137
- ru: 'Балкон',
1138
- de: 'Balkon',
1139
- fr: 'Balcon',
1140
- it: 'Balcone',
1141
- nl: 'Balkon',
1142
- pl: 'Balkon',
1143
- pt: 'Sacada',
1144
- es: 'Balcón',
1145
- 'zh-cn': '阳台',
1146
- },
1147
- icon: 'Balcony.svg',
1148
- },
1149
- {
1150
- _id: 'office',
1151
- name: {
1152
- en: 'Office',
1153
- ru: 'Офис',
1154
- de: 'Office',
1155
- fr: 'Bureau',
1156
- it: 'Ufficio',
1157
- nl: 'Kantoor',
1158
- pl: 'Gabinet',
1159
- pt: 'Escritório',
1160
- es: 'Oficina',
1161
- 'zh-cn': '办公室',
1162
- },
1163
- icon: 'Office.svg',
1164
- },
1165
- {
1166
- _id: 'carport',
1167
- name: {
1168
- en: 'Carport',
1169
- ru: 'Навес',
1170
- de: 'Carport',
1171
- fr: 'Carport',
1172
- it: 'Posto Auto Coperto',
1173
- nl: 'Carport',
1174
- pl: 'Wiata',
1175
- pt: 'Telheiro',
1176
- es: 'Cochera',
1177
- 'zh-cn': '车棚',
1178
- },
1179
- icon: 'Carport.svg',
1180
- },
1181
- {
1182
- _id: 'attic',
1183
- name: {
1184
- en: 'Attic',
1185
- ru: 'Чердак',
1186
- de: 'Dachgeschoss',
1187
- fr: 'Grenier',
1188
- it: 'Attico',
1189
- nl: 'Zolder',
1190
- pl: 'Poddasze',
1191
- pt: 'Sótão',
1192
- es: 'Ático',
1193
- 'zh-cn': '阁楼',
1194
- },
1195
- icon: 'Attic.svg',
1196
- },
1197
- {
1198
- _id: 'hall',
1199
- name: {
1200
- en: 'Hall',
1201
- ru: 'Зал',
1202
- de: 'Diele',
1203
- fr: 'Salle',
1204
- it: 'Sala',
1205
- nl: 'Hal',
1206
- pl: 'Sala',
1207
- pt: 'Corredor',
1208
- es: 'Sala',
1209
- 'zh-cn': '大厅',
1210
- },
1211
- icon: 'Hall.svg',
1212
- },
1213
- {
1214
- _id: 'entrance',
1215
- name: {
1216
- en: 'Entrance',
1217
- ru: 'Вход',
1218
- de: 'Eingang',
1219
- fr: 'Entrée',
1220
- it: 'Ingresso',
1221
- nl: 'Ingang',
1222
- pl: 'Wejście',
1223
- pt: 'Entrada',
1224
- es: 'Entrada',
1225
- 'zh-cn': '入口',
1226
- },
1227
- icon: 'Entrance.svg',
1228
- },
1229
- {
1230
- _id: 'ground_floor',
1231
- name: {
1232
- en: 'Ground Floor',
1233
- ru: 'Первый Этаж',
1234
- de: 'Erdgeschoss',
1235
- fr: 'Rez-De-Chaussée',
1236
- it: 'Piano Terra',
1237
- nl: 'Begane Grond',
1238
- pl: 'Parter',
1239
- pt: 'Térreo',
1240
- es: 'Planta Baja',
1241
- 'zh-cn': '一楼',
1242
- },
1243
- icon: 'Ground Floor.svg',
1244
- },
1245
- {
1246
- _id: 'dining_area',
1247
- name: {
1248
- en: 'Dining Area',
1249
- ru: 'Столовая',
1250
- de: 'Essbereich',
1251
- fr: 'Salle À Manger',
1252
- it: 'Zona Pranzo',
1253
- nl: 'Eethoek',
1254
- pl: 'Jadalnia',
1255
- pt: 'Área De Refeições',
1256
- es: 'Comedor',
1257
- 'zh-cn': '用餐区',
1258
- },
1259
- icon: 'Dining Area.svg',
1260
- },
1261
- {
1262
- _id: 'dining_room',
1263
- name: {
1264
- en: 'Dining Room',
1265
- ru: 'Столовая',
1266
- de: 'Esszimmer',
1267
- fr: 'Salle À Manger',
1268
- it: 'Sala Da Pranzo',
1269
- nl: 'Eetkamer',
1270
- pl: 'Jadalnia',
1271
- pt: 'Sala De Jantar',
1272
- es: 'Comedor',
1273
- 'zh-cn': '饭厅',
1274
- },
1275
- icon: 'Dining Room.svg',
1276
- },
1277
- {
1278
- _id: 'gym',
1279
- name: {
1280
- en: 'Gym',
1281
- ru: 'Спортзал',
1282
- de: 'Fitnessraum',
1283
- fr: 'Gym',
1284
- it: 'Palestra',
1285
- nl: 'Sportschool',
1286
- pl: 'Siłownia',
1287
- pt: 'Ginásio',
1288
- es: 'Gimnasio',
1289
- 'zh-cn': '健身房',
1290
- },
1291
- icon: 'Gym.svg',
1292
- },
1293
- {
1294
- _id: 'gallery',
1295
- name: {
1296
- en: 'Gallery',
1297
- ru: 'Галерея',
1298
- de: 'Galerie',
1299
- fr: 'Galerie',
1300
- it: 'Galleria',
1301
- nl: 'Galerij',
1302
- pl: 'Galeria',
1303
- pt: 'Galeria',
1304
- es: 'Galería',
1305
- 'zh-cn': '画廊',
1306
- },
1307
- icon: 'Gallery.svg',
1308
- },
1309
- {
1310
- _id: 'garage',
1311
- name: {
1312
- en: 'Garage',
1313
- ru: 'Гараж',
1314
- de: 'Garage',
1315
- fr: 'Garage',
1316
- it: 'Box Auto',
1317
- nl: 'Garage',
1318
- pl: 'Garaż',
1319
- pt: 'Garagem',
1320
- es: 'Garaje',
1321
- 'zh-cn': '车库',
1322
- },
1323
- icon: 'Garage.svg',
1324
- },
1325
- {
1326
- _id: 'wardrobe',
1327
- name: {
1328
- en: 'Wardrobe',
1329
- ru: 'Гардероб',
1330
- de: 'Garderobe',
1331
- fr: 'Penderie',
1332
- it: 'Armadio',
1333
- nl: 'Garderobe',
1334
- pl: 'Szafa',
1335
- pt: 'Guarda Roupa',
1336
- es: 'Armario',
1337
- 'zh-cn': '衣柜',
1338
- },
1339
- icon: 'Wardrobe.svg',
1340
- },
1341
- {
1342
- _id: 'garden',
1343
- name: {
1344
- en: 'Garden',
1345
- ru: 'Сад',
1346
- de: 'Garten',
1347
- fr: 'Jardin',
1348
- it: 'Giardino',
1349
- nl: 'Tuin',
1350
- pl: 'Ogród',
1351
- pt: 'Jardim',
1352
- es: 'Jardín',
1353
- 'zh-cn': '花园',
1354
- },
1355
- icon: 'Garden.svg',
1356
- },
1357
- {
1358
- _id: 'summer_house',
1359
- name: {
1360
- en: 'Summer House',
1361
- ru: 'Дача',
1362
- de: 'Gartenhaus',
1363
- fr: "Maison D'Été",
1364
- it: 'Casa Estiva',
1365
- nl: 'Zomerhuis',
1366
- pl: 'Domek Letniskowy',
1367
- pt: 'Summer House',
1368
- es: 'Casa De Verano',
1369
- 'zh-cn': '凉亭',
1370
- },
1371
- icon: 'Summer House.svg',
1372
- },
1373
- {
1374
- _id: 'guest_bathroom',
1375
- name: {
1376
- en: 'Guest Bathroom',
1377
- ru: 'Гостевая Комната',
1378
- de: 'Gäste-WC',
1379
- fr: 'Salle De Bains Invité',
1380
- it: 'Guest Bathroom',
1381
- nl: 'Gastenbadkamer',
1382
- pl: 'Łazienka Gościnna',
1383
- pt: 'Banheiro De Hóspedes',
1384
- es: 'Baño De Visitas',
1385
- 'zh-cn': '客用浴室',
1386
- },
1387
- icon: 'Guest Bathroom.svg',
1388
- },
1389
- {
1390
- _id: 'guest_room',
1391
- name: {
1392
- en: 'Guest Room',
1393
- ru: 'Гостевая Комната',
1394
- de: 'Gästezimmer',
1395
- fr: "Chambre D'Amis",
1396
- it: 'Stanza Degli Ospiti',
1397
- nl: 'Guest Room',
1398
- pl: 'Pokój Gościnny',
1399
- pt: 'Quarto De Hóspedes',
1400
- es: 'Habitación De Huéspedes',
1401
- 'zh-cn': '客房',
1402
- },
1403
- icon: 'Guest Room.svg',
1404
- },
1405
- {
1406
- _id: 'laundry_room',
1407
- name: {
1408
- en: 'Laundry Room',
1409
- ru: 'Прачечная',
1410
- de: 'Hauswirtschaftsraum',
1411
- fr: 'Buanderie',
1412
- it: 'Lavanderia',
1413
- nl: 'Wasruimte',
1414
- pl: 'Pralnia',
1415
- pt: 'Lavandaria',
1416
- es: 'Cuarto De Lavado',
1417
- 'zh-cn': '洗衣房',
1418
- },
1419
- icon: 'Laundry Room.svg',
1420
- },
1421
- {
1422
- _id: 'home_theater',
1423
- name: {
1424
- en: 'Home Theater',
1425
- ru: 'Домашний Театр',
1426
- de: 'Heimkino',
1427
- fr: 'Cinéma Maison',
1428
- it: 'Home Theater',
1429
- nl: 'Thuisbioscoop',
1430
- pl: 'Kino Domowe',
1431
- pt: 'Cinema Em Casa',
1432
- es: 'Cine En Casa',
1433
- 'zh-cn': '家庭电影院',
1434
- },
1435
- icon: 'Home Theater.svg',
1436
- },
1437
- {
1438
- _id: 'boiler_room',
1439
- name: {
1440
- en: 'Boiler Room',
1441
- ru: 'Бойлерная',
1442
- de: 'Heizungsraum',
1443
- fr: 'Chaufferie',
1444
- it: 'Locale Caldaia',
1445
- nl: 'Boiler Room',
1446
- pl: 'Kotłownia',
1447
- pt: 'Sala Da Caldeira',
1448
- es: 'Sala De Calderas',
1449
- 'zh-cn': '锅炉房',
1450
- },
1451
- icon: 'Boiler Room.svg',
1452
- },
1453
- {
1454
- _id: 'chamber',
1455
- name: {
1456
- en: 'Chamber',
1457
- ru: 'Камера',
1458
- de: 'Kammer',
1459
- fr: 'Chambre',
1460
- it: 'Camera',
1461
- nl: 'Kamer',
1462
- pl: 'Izba',
1463
- pt: 'Câmara',
1464
- es: 'Cámara',
1465
- 'zh-cn': '商会',
1466
- },
1467
- icon: 'Chamber.svg',
1468
- },
1469
- {
1470
- _id: 'basement,_cellar',
1471
- name: {
1472
- en: 'Basement, Cellar',
1473
- ru: 'Подвал, Погреб',
1474
- de: 'Keller',
1475
- fr: 'Sous-Sol, Cave',
1476
- it: 'Taverna, Cantina',
1477
- nl: 'Kelder, Kelder',
1478
- pl: 'Piwnica, Piwnica',
1479
- pt: 'Porão, Adega',
1480
- es: 'Sótano, Bodega',
1481
- 'zh-cn': '地下室,地窖',
1482
- },
1483
- icon: 'Basement.svg',
1484
- },
1485
- {
1486
- _id: 'nursery',
1487
- name: {
1488
- en: 'Nursery',
1489
- ru: 'Питомник',
1490
- de: 'Kinderzimmer',
1491
- fr: 'Garderie',
1492
- it: 'Asilo',
1493
- nl: 'Kinderkamer',
1494
- pl: 'Żłobek',
1495
- pt: 'Berçário',
1496
- es: 'Guardería',
1497
- 'zh-cn': '苗圃',
1498
- },
1499
- icon: 'Nursery.svg',
1500
- },
1501
- {
1502
- _id: 'corridor',
1503
- name: {
1504
- en: 'Corridor',
1505
- ru: 'Коридор',
1506
- de: 'Korridor',
1507
- fr: 'Couloir',
1508
- it: 'Corridoio',
1509
- nl: 'Gang',
1510
- pl: 'Korytarz',
1511
- pt: 'Corredor',
1512
- es: 'Corredor',
1513
- 'zh-cn': '走廊',
1514
- },
1515
- icon: 'Corridor.svg',
1516
- },
1517
- {
1518
- _id: 'kitchen',
1519
- name: {
1520
- en: 'Kitchen',
1521
- ru: 'Кухня',
1522
- de: 'Küche',
1523
- fr: 'Cuisine',
1524
- it: 'Cucina',
1525
- nl: 'Keuken',
1526
- pl: 'Kuchnia',
1527
- pt: 'Cozinha',
1528
- es: 'Cocina',
1529
- 'zh-cn': '厨房',
1530
- },
1531
- icon: 'Kitchen.svg',
1532
- },
1533
- {
1534
- _id: 'upstairs',
1535
- name: {
1536
- en: 'Upstairs',
1537
- ru: 'Вверх По Лестнице',
1538
- de: 'Obergeschoss',
1539
- fr: 'En Haut',
1540
- it: 'Di Sopra',
1541
- nl: 'Boven',
1542
- pl: 'Na Górę',
1543
- pt: 'Andar De Cima',
1544
- es: 'Piso Superior',
1545
- 'zh-cn': '楼上',
1546
- },
1547
- icon: 'Upstairs.svg',
1548
- },
1549
- {
1550
- _id: 'office',
1551
- name: {
1552
- en: 'Office',
1553
- ru: 'Офис',
1554
- de: 'Office',
1555
- fr: 'Bureau',
1556
- it: 'Ufficio',
1557
- nl: 'Kantoor',
1558
- pl: 'Gabinet',
1559
- pt: 'Escritório',
1560
- es: 'Oficina',
1561
- 'zh-cn': '办公室',
1562
- },
1563
- icon: 'Office.svg',
1564
- },
1565
- {
1566
- _id: 'pool',
1567
- name: {
1568
- en: 'Pool',
1569
- ru: 'Бассейн',
1570
- de: 'Pool',
1571
- fr: 'Piscine',
1572
- it: 'Piscina',
1573
- nl: 'Zwembad',
1574
- pl: 'Basen',
1575
- pt: 'Piscina',
1576
- es: 'Piscina',
1577
- 'zh-cn': '水池',
1578
- },
1579
- icon: 'Pool.svg',
1580
- },
1581
- {
1582
- _id: 'rear_wall',
1583
- name: {
1584
- en: 'Rear Wall',
1585
- ru: 'Задняя Стенка',
1586
- de: 'Rückwand',
1587
- fr: 'Paroi Arrière',
1588
- it: 'Parete Posteriore',
1589
- nl: 'Achterwand',
1590
- pl: 'Tylna Ściana',
1591
- pt: 'Parede Traseira',
1592
- es: 'Pared Posterior',
1593
- 'zh-cn': '后墙',
1594
- },
1595
- icon: 'Rear Wall.svg',
1596
- },
1597
- {
1598
- _id: 'barn',
1599
- name: {
1600
- en: 'Barn',
1601
- ru: 'Амбар',
1602
- de: 'Scheune',
1603
- fr: 'Grange',
1604
- it: 'Fienile',
1605
- nl: 'Schuur',
1606
- pl: 'Stodoła',
1607
- pt: 'Celeiro',
1608
- es: 'Granero',
1609
- 'zh-cn': '谷仓',
1610
- },
1611
- icon: 'Barn.svg',
1612
- },
1613
- {
1614
- _id: 'sleeping_area',
1615
- name: {
1616
- en: 'Sleeping Area',
1617
- ru: 'Спальное Место',
1618
- de: 'Schlafbereich',
1619
- fr: 'Coin Montagne',
1620
- it: 'Area Sleeping',
1621
- nl: 'Sleeping Area',
1622
- pl: 'Powierzchnia Spania',
1623
- pt: 'Sleeping Area',
1624
- es: 'Área De Dormir',
1625
- 'zh-cn': '睡眠区',
1626
- },
1627
- icon: 'Sleeping Area.svg',
1628
- },
1629
- {
1630
- _id: 'bedroom',
1631
- name: {
1632
- en: 'Bedroom',
1633
- ru: 'Спальная Комната',
1634
- de: 'Schlafzimmer',
1635
- fr: 'Chambre',
1636
- it: 'Camera Da Letto',
1637
- nl: 'Slaapkamer',
1638
- pl: 'Sypialnia',
1639
- pt: 'Quarto',
1640
- es: 'Cuarto',
1641
- 'zh-cn': '卧室',
1642
- },
1643
- icon: 'Bedroom.svg',
1644
- },
1645
- {
1646
- _id: 'shed',
1647
- name: {
1648
- en: 'Shed',
1649
- ru: 'Сбрасывать',
1650
- de: 'Schuppen',
1651
- fr: 'Hangar',
1652
- it: 'Capannone',
1653
- nl: 'Schuur',
1654
- pl: 'Budka',
1655
- pt: 'Cabana',
1656
- es: 'Cobertizo',
1657
- 'zh-cn': '棚',
1658
- },
1659
- icon: 'Shed.svg',
1660
- },
1661
- {
1662
- _id: 'swimming_pool',
1663
- name: {
1664
- en: 'Swimming Pool',
1665
- ru: 'Плавательный Бассейн',
1666
- de: 'Schwimmbad',
1667
- fr: 'Piscine',
1668
- it: 'Piscina',
1669
- nl: 'Zwembad',
1670
- pl: 'Basen',
1671
- pt: 'Piscina',
1672
- es: 'Piscina',
1673
- 'zh-cn': '游泳池',
1674
- },
1675
- icon: 'Swimming Pool.svg',
1676
- },
1677
- {
1678
- _id: 'dining',
1679
- name: {
1680
- en: 'Dining',
1681
- ru: 'Обеденный',
1682
- de: 'Speis',
1683
- fr: 'À Manger',
1684
- it: 'Cenare',
1685
- nl: 'Dining',
1686
- pl: 'Jadalnia',
1687
- pt: 'Jantar',
1688
- es: 'Comida',
1689
- 'zh-cn': '用餐',
1690
- },
1691
- icon: 'Dining.svg',
1692
- },
1693
- {
1694
- _id: 'playroom',
1695
- name: {
1696
- en: 'Playroom',
1697
- ru: 'Игровая Комната',
1698
- de: 'Spielzimmer',
1699
- fr: 'Salle De Jeux',
1700
- it: 'Stanza Dei Giochi',
1701
- nl: 'Speelkamer',
1702
- pl: 'Pokój Zabaw',
1703
- pt: 'Sala De Jogos',
1704
- es: 'Cuarto De Jugar',
1705
- 'zh-cn': '游戏室',
1706
- },
1707
- icon: 'Playroom.svg',
1708
- },
1709
- {
1710
- _id: 'stairway',
1711
- name: {
1712
- en: 'Stairway',
1713
- ru: 'Лестница',
1714
- de: 'Treppe',
1715
- fr: 'Escalier',
1716
- it: 'Scala',
1717
- nl: 'Trap',
1718
- pl: 'Klatka Schodowa',
1719
- pt: 'Escada',
1720
- es: 'Escalera',
1721
- 'zh-cn': '楼梯',
1722
- },
1723
- icon: 'Stairway.svg',
1724
- },
1725
- {
1726
- _id: 'equipment_room',
1727
- name: {
1728
- en: 'Equipment Room',
1729
- ru: 'Оборудование Номера',
1730
- de: 'Technikraum',
1731
- fr: "Salle D'Équipement",
1732
- it: 'Stanza Degli Attrezzi',
1733
- nl: 'Technische Ruimte',
1734
- pl: 'Wyposażenie Pokoi',
1735
- pt: 'Sala De Equipamentos',
1736
- es: 'Cuarto De Equipos',
1737
- 'zh-cn': '机房',
1738
- },
1739
- icon: 'Equipment Room.svg',
1740
- },
1741
- {
1742
- _id: 'terrace',
1743
- name: {
1744
- en: 'Terrace',
1745
- ru: 'Терраса',
1746
- de: 'Terrasse',
1747
- fr: 'Terrasse',
1748
- it: 'Terrazza',
1749
- nl: 'Terras',
1750
- pl: 'Taras',
1751
- pt: 'Terraço',
1752
- es: 'Terraza',
1753
- 'zh-cn': '阳台',
1754
- },
1755
- icon: 'Terrace.svg',
1756
- },
1757
- {
1758
- _id: 'toilet',
1759
- name: {
1760
- en: 'Toilet',
1761
- ru: 'Туалет',
1762
- de: 'Toilette',
1763
- fr: 'Toilette',
1764
- it: 'Gabinetto',
1765
- nl: 'Toilet',
1766
- pl: 'Toaleta',
1767
- pt: 'Banheiro',
1768
- es: 'Inodoro',
1769
- 'zh-cn': '洗手间',
1770
- },
1771
- icon: 'Toilet.svg',
1772
- },
1773
- {
1774
- _id: 'stairwell',
1775
- name: {
1776
- en: 'Stairwell',
1777
- ru: 'Лестничная клетка',
1778
- de: 'Treppenhaus',
1779
- fr: "Cage D'Escalier",
1780
- it: 'Tromba Delle Scale',
1781
- nl: 'Trappenhuis',
1782
- pl: 'Klatka Schodowa',
1783
- pt: 'Caixa De Escada',
1784
- es: 'Hueco De Escalera',
1785
- 'zh-cn': '楼梯间',
1786
- },
1787
- icon: 'Stairwell.svg',
1788
- },
1789
- {
1790
- _id: 'locker_room',
1791
- name: {
1792
- en: 'Locker Room',
1793
- ru: 'Камера Хранения',
1794
- de: 'Umkleideraum',
1795
- fr: 'Vestiaire',
1796
- it: 'Spogliatoio',
1797
- nl: 'Kleedkamer',
1798
- pl: 'Szatnia',
1799
- pt: 'Vestiário',
1800
- es: 'Vestuario',
1801
- 'zh-cn': '更衣室',
1802
- },
1803
- icon: 'Locker Room.svg',
1804
- },
1805
- {
1806
- _id: 'basement',
1807
- name: {
1808
- en: 'Basement',
1809
- ru: 'Подвал',
1810
- de: 'Untergeschoss',
1811
- fr: 'Sous-Sol',
1812
- it: 'Seminterrato',
1813
- nl: 'Kelder',
1814
- pl: 'Piwnica',
1815
- pt: 'Porão',
1816
- es: 'Sótano',
1817
- 'zh-cn': '地下室',
1818
- },
1819
- icon: 'Basement.svg',
1820
- },
1821
- {
1822
- _id: 'front_yard',
1823
- name: {
1824
- en: 'Front Yard',
1825
- ru: 'Передний Двор',
1826
- de: 'Vorgarten',
1827
- fr: 'Front Yard',
1828
- it: 'Cortile',
1829
- nl: 'Voortuin',
1830
- pl: 'Podwórko',
1831
- pt: 'Jardim Da Frente',
1832
- es: 'Patio Delantero',
1833
- 'zh-cn': '前院',
1834
- },
1835
- icon: 'Front Yard.svg',
1836
- },
1837
- {
1838
- _id: 'anteroom',
1839
- name: {
1840
- en: 'Anteroom',
1841
- ru: 'Передняя',
1842
- de: 'Vorraum',
1843
- fr: 'Antichambre',
1844
- it: 'Anticamera',
1845
- nl: 'Voorkamer',
1846
- pl: 'Przedpokój',
1847
- pt: 'Ante-Sala',
1848
- es: 'Antesala',
1849
- 'zh-cn': '接待室',
1850
- },
1851
- icon: 'Anteroom.svg',
1852
- },
1853
- {
1854
- _id: 'washroom',
1855
- name: {
1856
- en: 'Washroom',
1857
- ru: 'Уборная',
1858
- de: 'Waschraum',
1859
- fr: 'Toilettes',
1860
- it: 'Bagno',
1861
- nl: 'Waskamer',
1862
- pl: 'Umywalnia',
1863
- pt: 'Banheiro',
1864
- es: 'Baño',
1865
- 'zh-cn': '卫生间',
1866
- },
1867
- icon: 'Washroom.svg',
1868
- },
1869
- {
1870
- _id: 'wc',
1871
- name: {
1872
- en: 'Wc',
1873
- ru: 'Туалет',
1874
- de: 'WC',
1875
- fr: 'Toilettes',
1876
- it: 'Bagno',
1877
- nl: 'Wc',
1878
- pl: 'Toaleta',
1879
- pt: 'Banheiro',
1880
- es: 'Wc',
1881
- 'zh-cn': '厕所',
1882
- },
1883
- icon: 'Wc.svg',
1884
- },
1885
- {
1886
- _id: 'workshop',
1887
- name: {
1888
- en: 'Workshop',
1889
- ru: 'Мастерская',
1890
- de: 'Werkstatt',
1891
- fr: 'Atelier',
1892
- it: 'Laboratorio',
1893
- nl: 'Werkplaats',
1894
- pl: 'Warsztat',
1895
- pt: 'Oficina',
1896
- es: 'Taller',
1897
- 'zh-cn': '作坊',
1898
- },
1899
- icon: 'Workshop.svg',
1900
- },
1901
- {
1902
- _id: 'windscreen',
1903
- name: {
1904
- en: 'Windscreen',
1905
- ru: 'Ветровое Стекло',
1906
- de: 'Windfang',
1907
- fr: 'Pare-Brise',
1908
- it: 'Parabrezza',
1909
- nl: 'Voorruit',
1910
- pl: 'Szyba Przednia',
1911
- pt: 'Pára-Brisas',
1912
- es: 'Parabrisas',
1913
- 'zh-cn': '风档',
1914
- },
1915
- icon: 'Windscreen.svg',
1916
- },
1917
- {
1918
- _id: 'living_area',
1919
- name: {
1920
- en: 'Living Area',
1921
- ru: 'Жилая Площадь',
1922
- de: 'Wohnbereich',
1923
- fr: 'Salon',
1924
- it: 'Zona Giorno',
1925
- nl: 'Living Area',
1926
- pl: 'Powierzchnia Mieszkalna',
1927
- pt: 'Sala-De-Estar',
1928
- es: 'Sala De Estar',
1929
- 'zh-cn': '生活区域',
1930
- },
1931
- icon: 'Living Area.svg',
1932
- },
1933
- {
1934
- _id: 'living_room',
1935
- name: {
1936
- en: 'Living Room',
1937
- ru: 'Гостинная',
1938
- de: 'Wohnzimmer',
1939
- fr: 'Le Salon',
1940
- it: 'Soggiorno',
1941
- nl: 'Woonkamer',
1942
- pl: 'Salon',
1943
- pt: 'Sala De Estar',
1944
- es: 'Sala De Estar',
1945
- 'zh-cn': '客厅',
1946
- },
1947
- icon: 'Living Room.svg',
1948
- },
1949
- {
1950
- _id: 'living_room',
1951
- name: {
1952
- en: 'Living Room',
1953
- ru: 'Гостинная',
1954
- de: 'Wohnzimmer',
1955
- fr: 'Le Salon',
1956
- it: 'Soggiorno',
1957
- nl: 'Woonkamer',
1958
- pl: 'Salon',
1959
- pt: 'Sala De Estar',
1960
- es: 'Sala De Estar',
1961
- 'zh-cn': '客厅',
1962
- },
1963
- icon: 'Living Room.svg',
1964
- },
1965
- ];
1966
-
1967
- interface IconSelectorProps {
1968
- icons?: {
1969
- icon?: string;
1970
- src?: string;
1971
- href?: string;
1972
- name?: ioBroker.StringOrTranslated;
1973
- _id?: string;
1974
- }[];
1975
- onlyRooms?: boolean;
1976
- onlyDevices?: boolean;
1977
- onSelect?: (icon: string) => void; // one of onSelect or onChange are required
1978
- onChange?: (icon: string) => void;
1979
- t: Translate;
1980
- lang: ioBroker.Languages;
1981
- }
1982
-
1983
- interface IconSelectorState {
1984
- opened: boolean;
1985
- names: string[];
1986
- filter: string;
1987
- icons: string[] | null;
1988
- loading: boolean;
1989
- isAnyName: boolean;
1990
- }
1991
-
1992
- class IconSelector extends Component<IconSelectorProps, IconSelectorState> {
1993
- constructor(props: IconSelectorProps) {
1994
- super(props);
1995
-
1996
- this.state = {
1997
- opened: false,
1998
- names: [],
1999
- filter: '',
2000
- icons: null,
2001
- loading: false,
2002
- isAnyName: false,
2003
- };
2004
- }
2005
-
2006
- loadAllIcons(): void {
2007
- if (this.state.loading || this.state.icons) {
2008
- return;
2009
- }
2010
- this.setState({ loading: true }, () => {
2011
- const icons: string[] = [];
2012
- const names: string[] = [];
2013
-
2014
- if (!this.props.icons) {
2015
- // load rooms
2016
- let templates =
2017
- this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;
2018
-
2019
- if (templates) {
2020
- templates.forEach(item => {
2021
- if (item.name && typeof item.name === 'object') {
2022
- item.name = item.name[this.props.lang] || item.name.en || item._id;
2023
- }
2024
- item.name = item.name || item._id;
2025
- });
2026
-
2027
- templates = templates.filter(
2028
- (item, i) =>
2029
- !templates?.find(
2030
- (_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name,
2031
- ),
2032
- );
2033
-
2034
- templates.forEach((template, i) => {
2035
- names[i] = template.name as string;
2036
- icons[i] =
2037
- `data:image/svg+xml;base64,${(roomsIcons as Record<string, string>)[template.icon.replace(/\.svg$/, '')]}`;
2038
- });
2039
- }
2040
-
2041
- // load devices
2042
- templates =
2043
- this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;
2044
- if (templates) {
2045
- const offset = icons.length;
2046
- templates &&
2047
- templates.forEach(item => {
2048
- if (item.name && typeof item.name === 'object') {
2049
- item.name = item.name[this.props.lang] || item.name.en || item._id;
2050
- }
2051
- item.name = item.name || item._id;
2052
- });
2053
-
2054
- templates = templates.filter(
2055
- (item, i) =>
2056
- !templates?.find(
2057
- (_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name,
2058
- ),
2059
- );
2060
-
2061
- templates.forEach((template, i) => {
2062
- names[i + offset] = template.name as string;
2063
- icons[i + offset] =
2064
- `data:image/svg+xml;base64,${(devicesIcons as Record<string, string>)[template.icon.replace(/\.svg$/, '')]}`;
2065
- });
2066
- }
2067
- this.setState({
2068
- icons,
2069
- loading: false,
2070
- names,
2071
- isAnyName: !!names.find(i => i),
2072
- });
2073
- } else {
2074
- const promises = this.props.icons.map((item, i) => {
2075
- let href: string;
2076
- if (typeof item === 'object') {
2077
- href = item.icon || item.src || item.href || '';
2078
- names[i] =
2079
- typeof item.name === 'object'
2080
- ? item.name[this.props.lang] || item.name.en || item._id || ''
2081
- : item.name || '';
2082
- if (!names[i]) {
2083
- const parts = href.split('.');
2084
- parts.pop();
2085
- names[i] = parts[parts.length - 1];
2086
- }
2087
- } else {
2088
- href = item;
2089
- }
2090
-
2091
- if (href) {
2092
- if (href.startsWith('data:')) {
2093
- icons[i] = href;
2094
- return Promise.resolve();
2095
- }
2096
- return Utils.getSvg(href).then(icon => (icons[i] = icon));
2097
- }
2098
-
2099
- return Promise.resolve();
2100
- });
2101
-
2102
- void Promise.all(promises)
2103
- .catch((e: Error) => console.error(e))
2104
- .then(() =>
2105
- this.setState({
2106
- icons,
2107
- loading: false,
2108
- names,
2109
- isAnyName: !!names.find(i => i),
2110
- }),
2111
- );
2112
- }
2113
- });
2114
- }
2115
-
2116
- render(): React.JSX.Element {
2117
- if (this.state.loading) {
2118
- return <CircularProgress />;
2119
- }
2120
-
2121
- return (
2122
- <>
2123
- <Button
2124
- color="grey"
2125
- variant="outlined"
2126
- title={this.props.t('ra_Select predefined icon')}
2127
- onClick={() => this.setState({ opened: true }, () => this.loadAllIcons())}
2128
- style={{ minWidth: 40, marginRight: 8 }}
2129
- >
2130
- ...
2131
- </Button>
2132
- {this.state.opened ? (
2133
- <Dialog
2134
- onClose={() => this.setState({ opened: false })}
2135
- open={!0}
2136
- >
2137
- <DialogTitle>
2138
- {this.props.t('ra_Select predefined icon')}
2139
- {this.state.isAnyName ? (
2140
- <TextField
2141
- variant="standard"
2142
- margin="dense"
2143
- style={{ marginLeft: 20 }}
2144
- value={this.state.filter}
2145
- onChange={e => this.setState({ filter: e.target.value.toLowerCase() })}
2146
- placeholder={this.props.t('ra_Filter')}
2147
- slotProps={{
2148
- input: {
2149
- endAdornment: this.state.filter ? (
2150
- <IconButton
2151
- size="small"
2152
- onClick={() => this.setState({ filter: '' })}
2153
- >
2154
- <ClearIcon />
2155
- </IconButton>
2156
- ) : undefined,
2157
- },
2158
- }}
2159
- />
2160
- ) : null}
2161
- </DialogTitle>
2162
- <DialogContent>
2163
- <div style={{ width: '100%', textAlign: 'center' }}>
2164
- {this.state.icons &&
2165
- this.state.icons.map((icon, i) => {
2166
- if (
2167
- !this.state.filter ||
2168
- (this.state.names[i] &&
2169
- this.state.names[i].toLowerCase().includes(this.state.filter))
2170
- ) {
2171
- return (
2172
- <Tooltip
2173
- title={this.state.names[i] || ''}
2174
- key={i}
2175
- slotProps={{ popper: { sx: { pointerEvents: 'none' } } }}
2176
- >
2177
- <IconButton
2178
- onClick={() =>
2179
- this.setState({ opened: false }, () => {
2180
- const onApply: ((_icon: string) => void) | undefined =
2181
- this.props.onSelect || this.props.onChange;
2182
- if (onApply) {
2183
- onApply(icon);
2184
- }
2185
- })
2186
- }
2187
- size="large"
2188
- >
2189
- <Icon
2190
- src={icon}
2191
- alt={i.toString()}
2192
- style={{ width: 32, height: 32, borderRadius: 5 }}
2193
- />
2194
- </IconButton>
2195
- </Tooltip>
2196
- );
2197
- }
2198
-
2199
- return null;
2200
- })}
2201
- </div>
2202
- </DialogContent>
2203
- <DialogActions>
2204
- <Button
2205
- color="grey"
2206
- variant="contained"
2207
- onClick={() => this.setState({ opened: false })}
2208
- startIcon={<CloseIcon />}
2209
- >
2210
- {this.props.t('ra_Close')}
2211
- </Button>
2212
- </DialogActions>
2213
- </Dialog>
2214
- ) : null}
2215
- </>
2216
- );
2217
- }
2218
- }
2219
-
2220
- export default IconSelector;