@iobroker/adapter-react-v5 3.1.2 → 3.1.5
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.
- package/Components/FileBrowser.js +277 -237
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +3 -1
- package/Components/FileViewer.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigAutocomplete.js +5 -3
- package/Components/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js +5 -3
- package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCertificateSelect.js +16 -2
- package/Components/JsonConfigComponent/ConfigCertificateSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCustom.js +148 -25
- package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.js +105 -20
- package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js +132 -46
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js +25 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigNumber.js +5 -4
- package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigObjectId.js +3 -2
- package/Components/JsonConfigComponent/ConfigObjectId.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +51 -40
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPattern.js +1 -1
- package/Components/JsonConfigComponent/ConfigPattern.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.js +4 -2
- package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +2 -2
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSetState.js +2 -2
- package/Components/JsonConfigComponent/ConfigSetState.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticHeader.js +31 -8
- package/Components/JsonConfigComponent/ConfigStaticHeader.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticImage.js +1 -1
- package/Components/JsonConfigComponent/ConfigStaticImage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTabs.js +12 -3
- package/Components/JsonConfigComponent/ConfigTabs.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +4 -2
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTopic.js.map +1 -1
- package/Components/JsonConfigComponent/index.js +12 -4
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/Components/ObjectBrowser.js +464 -261
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/TableResize.js +323 -0
- package/Components/TableResize.js.map +1 -0
- package/Components/TreeTable.js +2 -2
- package/Components/TreeTable.js.map +1 -1
- package/Components/Utils.js +5 -5
- package/Components/Utils.js.map +1 -1
- package/Dialogs/Confirm.js +3 -3
- package/Dialogs/Confirm.js.map +1 -1
- package/Dialogs/FileSelect.js +259 -0
- package/Dialogs/FileSelect.js.map +1 -0
- package/Dialogs/SelectID.js +15 -16
- package/Dialogs/SelectID.js.map +1 -1
- package/GenericApp.js +3 -3
- package/GenericApp.js.map +1 -1
- package/README.md +6 -0
- package/i18n/de.json +4 -3
- package/i18n/en.json +2 -1
- package/i18n/es.json +2 -1
- package/i18n/fr.json +2 -1
- package/i18n/it.json +2 -1
- package/i18n/nl.json +2 -1
- package/i18n/pl.json +2 -1
- package/i18n/pt.json +2 -1
- package/i18n/ru.json +2 -1
- package/i18n/zh-cn.json +2 -1
- package/package.json +1 -1
package/GenericApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericApp.js","names":["cssStyle","window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","printPrompt","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","parent","$iframeDialog","postMessage","propTypes","PropTypes","string","func","object","array","bool"],"sources":["GenericApp.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, { PROGRESS } from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\n\nimport printPrompt from './Prompt';\nimport theme from './Theme';\nimport Loader from './Components/Loader';\nimport Router from './Components/Router';\nimport Utils from './Components/Utils';\nimport SaveCloseButtons from './Components/SaveCloseButtons';\nimport I18n from './i18n';\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab = location.tab || window.localStorage.getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: window.localStorage.getItem(this.adapterName + '-adapter') || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: progress => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({connected: false});\n } else if (progress === PROGRESS.READY) {\n this.setState({connected: true});\n } else {\n this.setState({connected: true});\n }\n },\n onReady: (objects, scripts) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState({native: instanceObj.native, loaded: true, expertMode: this.getExpertMode()}, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({native: {}, loaded: true, expertMode: this.getExpertMode()}, () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({expertMode: this.getExpertMode()});\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({width: GenericApp.getWidth()});\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged() {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n window.localStorage[this.adapterName + '-adapter'] = tab;\n this.setState({selectedTab: tab, selectedTabNum: index})\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows.filter(item => item.value.common.webExtendable).map(item => item.value));\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - ' + I18n.t('ra_Listen on all IPs'), address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] ::', address: '::', family: 'ipv6'}];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv4'});\n } else {\n IPs6.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv6'});\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({errorText: this.state.isConfigurationError});\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n oldObj.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n this.setState({changed: false});\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) {\n return null;\n }\n\n return <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({toast: ''})}\n ContentProps={{\n 'aria-describedby': 'message-id',\n }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n className={this.props.classes.close}\n onClick={() => this.setState({toast: ''})}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />;\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({errorText: ''})}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n if(isChanged) {\n globalThis.changed = true;\n } else {\n globalThis.changed = false;\n }\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({native: newNative, changed: this.getIsChanged(newNative)})\n }\n }\n\n /**\n * Sets the configuration error.\n * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({isConfigurationError: errorText});\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (this.state.bottomButtons) {\n return <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={(isClose) => this.onSave(isClose)}\n onClose={() => GenericApp.onClose()}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = attrs.shift();\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error('attribute ' + attr + ' is no object, but ' + typeof obj[attr]);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n }\n\n /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n this.setState({native, changed}, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({errorText: text});\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({toast});\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GenericApp.js","names":["cssStyle","window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","printPrompt","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","_localStorage","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","parent","$iframeDialog","postMessage","propTypes","PropTypes","string","func","object","array","bool"],"sources":["GenericApp.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, { PROGRESS } from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\n\nimport printPrompt from './Prompt';\nimport theme from './Theme';\nimport Loader from './Components/Loader';\nimport Router from './Components/Router';\nimport Utils from './Components/Utils';\nimport SaveCloseButtons from './Components/SaveCloseButtons';\nimport I18n from './i18n';\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab = location.tab || (window._localStorage || window.localStorage).getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: (window._localStorage || window.localStorage).getItem(this.adapterName + '-adapter') || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: progress => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({connected: false});\n } else if (progress === PROGRESS.READY) {\n this.setState({connected: true});\n } else {\n this.setState({connected: true});\n }\n },\n onReady: (objects, scripts) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState({native: instanceObj.native, loaded: true, expertMode: this.getExpertMode()}, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({native: {}, loaded: true, expertMode: this.getExpertMode()}, () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({expertMode: this.getExpertMode()});\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({width: GenericApp.getWidth()});\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged() {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n (window._localStorage || window.localStorage)[this.adapterName + '-adapter'] = tab;\n this.setState({selectedTab: tab, selectedTabNum: index})\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows.filter(item => item.value.common.webExtendable).map(item => item.value));\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - ' + I18n.t('ra_Listen on all IPs'), address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] ::', address: '::', family: 'ipv6'}];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv4'});\n } else {\n IPs6.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv6'});\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({errorText: this.state.isConfigurationError});\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n oldObj.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n this.setState({changed: false});\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) {\n return null;\n }\n\n return <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({toast: ''})}\n ContentProps={{\n 'aria-describedby': 'message-id',\n }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n className={this.props.classes.close}\n onClick={() => this.setState({toast: ''})}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />;\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({errorText: ''})}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n if(isChanged) {\n globalThis.changed = true;\n } else {\n globalThis.changed = false;\n }\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({native: newNative, changed: this.getIsChanged(newNative)})\n }\n }\n\n /**\n * Sets the configuration error.\n * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({isConfigurationError: errorText});\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (this.state.bottomButtons) {\n return <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={(isClose) => this.onSave(isClose)}\n onClose={() => GenericApp.onClose()}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = attrs.shift();\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error('attribute ' + attr + ' is no object, but ' + typeof obj[attr]);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n }\n\n /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n this.setState({native, changed}, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({errorText: text});\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({toast});\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -641,6 +641,12 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
641
641
|
-->
|
|
642
642
|
|
|
643
643
|
## Changelog
|
|
644
|
+
### 3.1.5 (2022-06-19)
|
|
645
|
+
* (bluefox) Added file select dialog
|
|
646
|
+
|
|
647
|
+
### 3.1.3 (2022-06-13)
|
|
648
|
+
* (bluefox) Added table with resized headers
|
|
649
|
+
|
|
644
650
|
### 3.1.2 (2022-06-09)
|
|
645
651
|
* (bluefox) Added new document icon (read only)
|
|
646
652
|
|
package/i18n/de.json
CHANGED
|
@@ -264,8 +264,8 @@
|
|
|
264
264
|
"ra_Folder → State": "Ordner → Zustand",
|
|
265
265
|
"ra_Folder → Channel → State": "Ordner → Kanal → Zustand",
|
|
266
266
|
"ra_Folder → Device → Channel → State": "Ordner → Gerät → Kanal → Zustand",
|
|
267
|
-
"ra_Device → Channel → State": "Gerät → Kanal →
|
|
268
|
-
"ra_Channel → State": "Kanal →
|
|
267
|
+
"ra_Device → Channel → State": "Gerät → Kanal → Zustand",
|
|
268
|
+
"ra_Channel → State": "Kanal → Zustand",
|
|
269
269
|
"ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".": "Nicht-Experten dürfen neue Objekte nur in \"0_userdata.0\" oder \"alias.0\" erstellen.",
|
|
270
270
|
"ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").": "Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. \"vis.0\" oder \"javascript.0\").",
|
|
271
271
|
"ra_expertMode": "Expertenmodus",
|
|
@@ -310,5 +310,6 @@
|
|
|
310
310
|
"ra_Move up": "Nach oben",
|
|
311
311
|
"ra_Move down": "Nach unten",
|
|
312
312
|
"ra_Delete current row": "Aktuelle Zeile löschen",
|
|
313
|
-
"ra_All items are filtered out": "Alle Elemente werden herausgefiltert"
|
|
313
|
+
"ra_All items are filtered out": "Alle Elemente werden herausgefiltert",
|
|
314
|
+
"ra_Double click to reset table layout": "Doppelklicken, um das Tabellenlayout zurückzusetzen"
|
|
314
315
|
}
|
package/i18n/en.json
CHANGED
|
@@ -310,5 +310,6 @@
|
|
|
310
310
|
"ra_Move up": "Move up",
|
|
311
311
|
"ra_Move down": "Move down",
|
|
312
312
|
"ra_Delete current row": "Delete current row",
|
|
313
|
-
"ra_All items are filtered out": "All items are filtered out"
|
|
313
|
+
"ra_All items are filtered out": "All items are filtered out",
|
|
314
|
+
"ra_Double click to reset table layout": "Double click to reset table layout"
|
|
314
315
|
}
|
package/i18n/es.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Ascender",
|
|
298
298
|
"ra_Move down": "Mover hacia abajo",
|
|
299
299
|
"ra_Delete current row": "Eliminar fila actual",
|
|
300
|
-
"ra_All items are filtered out": "Todos los elementos se filtran"
|
|
300
|
+
"ra_All items are filtered out": "Todos los elementos se filtran",
|
|
301
|
+
"ra_Double click to reset table layout": "Haga doble clic para restablecer el diseño de la tabla"
|
|
301
302
|
}
|
package/i18n/fr.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Déplacer vers le haut",
|
|
298
298
|
"ra_Move down": "Descendre",
|
|
299
299
|
"ra_Delete current row": "Supprimer la ligne actuelle",
|
|
300
|
-
"ra_All items are filtered out": "Tous les éléments sont filtrés"
|
|
300
|
+
"ra_All items are filtered out": "Tous les éléments sont filtrés",
|
|
301
|
+
"ra_Double click to reset table layout": "Double-cliquez pour réinitialiser la disposition du tableau"
|
|
301
302
|
}
|
package/i18n/it.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Andare avanti",
|
|
298
298
|
"ra_Move down": "Abbassati",
|
|
299
299
|
"ra_Delete current row": "Elimina la riga corrente",
|
|
300
|
-
"ra_All items are filtered out": "Tutti gli elementi vengono filtrati"
|
|
300
|
+
"ra_All items are filtered out": "Tutti gli elementi vengono filtrati",
|
|
301
|
+
"ra_Double click to reset table layout": "Fare doppio clic per ripristinare il layout della tabella"
|
|
301
302
|
}
|
package/i18n/nl.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Omhoog gaan",
|
|
298
298
|
"ra_Move down": "Naar beneden verplaatsen",
|
|
299
299
|
"ra_Delete current row": "Huidige rij verwijderen",
|
|
300
|
-
"ra_All items are filtered out": "Alle items zijn uitgefilterd"
|
|
300
|
+
"ra_All items are filtered out": "Alle items zijn uitgefilterd",
|
|
301
|
+
"ra_Double click to reset table layout": "Dubbelklik om de tafelindeling te resetten"
|
|
301
302
|
}
|
package/i18n/pl.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Podnieść",
|
|
298
298
|
"ra_Move down": "Padnij",
|
|
299
299
|
"ra_Delete current row": "Usuń bieżący wiersz",
|
|
300
|
-
"ra_All items are filtered out": "Wszystkie pozycje są odfiltrowane"
|
|
300
|
+
"ra_All items are filtered out": "Wszystkie pozycje są odfiltrowane",
|
|
301
|
+
"ra_Double click to reset table layout": "Kliknij dwukrotnie, aby zresetować układ tabeli"
|
|
301
302
|
}
|
package/i18n/pt.json
CHANGED
|
@@ -297,5 +297,6 @@
|
|
|
297
297
|
"ra_Move up": "Subir",
|
|
298
298
|
"ra_Move down": "Mover para baixo",
|
|
299
299
|
"ra_Delete current row": "Excluir linha atual",
|
|
300
|
-
"ra_All items are filtered out": "Todos os itens são filtrados"
|
|
300
|
+
"ra_All items are filtered out": "Todos os itens são filtrados",
|
|
301
|
+
"ra_Double click to reset table layout": "Clique duas vezes para redefinir o layout da tabela"
|
|
301
302
|
}
|
package/i18n/ru.json
CHANGED
|
@@ -310,5 +310,6 @@
|
|
|
310
310
|
"ra_Move up": "Вверх",
|
|
311
311
|
"ra_Move down": "Вниз",
|
|
312
312
|
"ra_Delete current row": "Удалить текущую строку",
|
|
313
|
-
"ra_All items are filtered out": "Все элементы отфильтрованы"
|
|
313
|
+
"ra_All items are filtered out": "Все элементы отфильтрованы",
|
|
314
|
+
"ra_Double click to reset table layout": "Дважды щелкните, чтобы сбросить макет таблицы"
|
|
314
315
|
}
|
package/i18n/zh-cn.json
CHANGED