@iobroker/adapter-react-v5 3.4.0 → 3.4.2
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/JsonConfigComponent/ChipInput.js +5 -0
- package/Components/JsonConfigComponent/ChipInput.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCheckLicense.d.ts +3 -0
- package/Components/JsonConfigComponent/ConfigCheckLicense.js +592 -0
- package/Components/JsonConfigComponent/ConfigCheckLicense.js.map +1 -0
- package/Components/JsonConfigComponent/ConfigColor.js +5 -4
- package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCustom.js +14 -3
- package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.js +20 -10
- package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigNumber.js +5 -1
- package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +11 -7
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.js +7 -2
- package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +29 -6
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js +5 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +44 -38
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +74 -22
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigUUID.d.ts +13 -0
- package/Components/JsonConfigComponent/ConfigUUID.js +97 -0
- package/Components/JsonConfigComponent/ConfigUUID.js.map +1 -0
- package/Components/JsonConfigComponent/index.js +29 -7
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/Dialogs/Message.d.ts +1 -0
- package/Dialogs/Message.js +7 -2
- package/Dialogs/Message.js.map +1 -1
- package/README.md +7 -1
- package/i18n/de.json +10 -1
- package/i18n/en.json +10 -1
- package/i18n/es.json +10 -1
- package/i18n/fr.json +10 -1
- package/i18n/it.json +10 -1
- package/i18n/nl.json +10 -1
- package/i18n/pl.json +10 -1
- package/i18n/pt.json +10 -1
- package/i18n/ru.json +10 -1
- package/i18n/uk.json +10 -1
- package/i18n/zh-cn.json +10 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styles","theme","root","width","height","JsonConfigComponent","props","commandRunning","setState","id","state","val","alive","data","value","cb","saveConfig","onValueChange","newState","_data","Object","keys","forEach","attr","startsWith","changed","JSON","stringify","originalData","onChange","error","errors","parse","onError","length","forceUpdate","Array","isArray","a","forceUpdateHandlers","updateData","systemConfig","schema","buildDependencies","readData","custom","common","Promise","resolve","socket","getObject","adapterName","instance","then","obj","readSettings","getCompactSystemConfig","getState","subscribeState","onAlive","_list","items","flatten","attrs","confirm","alsoDependsOn","dep","console","warn","replace","confirmDependsOn","depObj","cancel","push","onChangeDependsOn","hidden","hiddenDependsOn","label","labelDependsOn","help","helpDependsOn","item","type","onCommandRunning","themeType","themeName","customs","dateFormat","isFloatComma","multiEdit","imagePrefix","customObj","instanceObj","changeLanguage","forceAttrUpdate","registerOnForceUpdate","classes","renderItem","i18n","lang","I18n","getLanguage","path","fileExists","exists","fileName","readFile","json","file","undefined","extendTranslations","e","Component","propTypes","PropTypes","object","isRequired","string","number","bool","style","className","func","withStyles"],"sources":["JsonConfigComponent/index.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport I18n from '../../i18n';\n\nimport ConfigTabs from './ConfigTabs';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n height: '100%'\n }\n});\n\nclass JsonConfigComponent extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n originalData: JSON.stringify(this.props.data),\n changed: false,\n errors: {\n\n },\n updateData: this.props.updateData,\n systemConfig: null,\n alive: false,\n commandRunning: false,\n schema: JSON.parse(JSON.stringify(this.props.schema))\n };\n\n this.forceUpdateHandlers = {};\n\n this.buildDependencies(this.state.schema);\n\n this.readData();\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.updateData !== state.updateData) {\n return {\n updateData: props.updateData,\n originalData: JSON.stringify(props.data),\n schema: JSON.parse(JSON.stringify(props.schema)),\n };\n } else {\n return null;\n }\n }\n\n static loadI18n(socket, i18n, adapterName) {\n if (i18n === true || (i18n && typeof i18n === 'string')) {\n const lang = I18n.getLanguage();\n const path = typeof i18n === 'string' ? i18n : 'i18n';\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}.json`)\n .then(exists => {\n if (exists) {\n return `${path}/${lang}.json`;\n } else {\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}/translations.json`)\n .then(exists =>\n exists ? `${path}/${lang}/translations.json` : '')\n }\n })\n .then(fileName => {\n if (fileName) {\n return socket.readFile(adapterName + '.admin', fileName)\n .then(json => {\n if (json.file !== undefined) {\n json = json.file;\n }\n try {\n json = JSON.parse(json);\n // apply file to I18n\n I18n.extendTranslations(json, lang);\n } catch (e) {\n console.error(`Cannot parse language file \"${adapterName}.admin/${fileName}: ${e}`);\n }\n })\n } else {\n console.warn(`Cannot find i18n for ${adapterName} / ${fileName}`);\n return Promise.resolve();\n }\n });\n } else if (i18n && typeof i18n === 'object') {\n I18n.extendTranslations(i18n);\n return Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n\n onCommandRunning = commandRunning => this.setState( {commandRunning});\n\n readSettings() {\n if ((this.props.custom || this.props.common) && this.props.data) {\n return Promise.resolve();\n } else {\n return this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`)\n .then(obj => this.setState({common: obj.common, data: this.props.data || obj.native}));\n }\n }\n\n readData() {\n this.readSettings()\n .then(() => this.props.socket.getCompactSystemConfig())\n .then(systemConfig =>\n this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`)\n .then(state => {\n if (this.props.custom) {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)});\n } else {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)}, () =>\n this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`, this.onAlive));\n }\n }));\n }\n\n onAlive = (id, state) => {\n if ((state?.val || false) !== this.state.alive) {\n this.setState({alive: state?.val || false});\n }\n }\n\n onChange = (data, value, cb, saveConfig) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(data, value, saveConfig);\n cb && cb();\n } else {\n if (data) {\n const newState = { data };\n\n const _data = {};\n // remove all attributes starting with \"_\"\n Object.keys(data).forEach(attr => !attr.startsWith('_') && (_data[attr] = data[attr]));\n\n newState.changed = JSON.stringify(_data) !== this.state.originalData;\n\n this.setState(newState, () => {\n this.props.onChange(_data, newState.changed, saveConfig);\n cb && cb();\n });\n } else if (saveConfig) {\n this.props.onChange(null, null, saveConfig);\n }\n }\n }\n\n onError = (attr, error) => {\n const errors = JSON.parse(JSON.stringify(this.state.errors));\n if (error) {\n errors[attr] = error;\n } else {\n delete errors[attr];\n }\n\n if (JSON.stringify(errors) !== JSON.parse(JSON.stringify(this.state.errors))) {\n this.setState({errors}, () =>\n this.props.onError(!!Object.keys(this.state.errors).length));\n }\n }\n\n flatten(schema, _list) {\n _list = _list || {};\n if (schema.items) {\n Object.keys(schema.items).forEach(attr => {\n _list[attr] = schema.items[attr];\n this.flatten(schema.items[attr], _list);\n });\n }\n\n return _list;\n }\n\n buildDependencies(schema) {\n const attrs = this.flatten(schema);\n Object.keys(attrs).forEach(attr => {\n if (attrs[attr].confirm?.alsoDependsOn) {\n attrs[attr].confirm?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].confirmDependsOn = attrs[dep].confirmDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n if (depObj.confirm) {\n depObj.confirm.cancel = 'Undo';\n }\n\n attrs[dep].confirmDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].onChange?.alsoDependsOn) {\n attrs[attr].onChange?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].onChangeDependsOn = attrs[dep].onChangeDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].onChangeDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].hidden?.alsoDependsOn) {\n attrs[attr].hidden?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].hiddenDependsOn = attrs[dep].hiddenDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].hiddenDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].label?.alsoDependsOn) {\n attrs[attr].label?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].labelDependsOn = attrs[dep].labelDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].labelDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].help?.alsoDependsOn) {\n attrs[attr].help?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].helpDependsOn = attrs[dep].helpDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].helpDependsOn.push(depObj);\n }\n });\n }\n });\n }\n\n renderItem(item) {\n if (item.type === 'tabs') {\n return <ConfigTabs\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n } else if (item.type === 'panel' || !item.type) {\n return <ConfigPanel\n index={1000}\n isParentTab\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n }\n }\n\n changeLanguage = () => {\n this.forceUpdate();\n }\n\n forceAttrUpdate = (attr, data) => {\n if (Array.isArray(attr)) {\n attr.forEach(a =>\n this.forceUpdateHandlers[a] && this.forceUpdateHandlers[a](data));\n } else {\n if (this.forceUpdateHandlers[attr]) {\n this.forceUpdateHandlers[attr](data);\n }\n }\n }\n\n registerOnForceUpdate = (attr, cb) => {\n if (cb) {\n this.forceUpdateHandlers[attr] = cb;\n } else if (this.forceUpdateHandlers[attr]) {\n delete this.forceUpdateHandlers[attr];\n }\n }\n\n render() {\n if (!this.state.systemConfig) {\n return <LinearProgress />;\n }\n\n return <div className={this.props.classes.root}>\n {this.renderItem(this.state.schema)}\n </div>;\n }\n}\n\nJsonConfigComponent.propTypes = {\n socket: PropTypes.object.isRequired,\n\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n common: PropTypes.object,\n customs: PropTypes.object, // custom components\n\n custom: PropTypes.bool, // is the customs settings must be shown\n customObj: PropTypes.object,\n multiEdit: PropTypes.bool, // set if user edits more than one object simultaneously\n instanceObj: PropTypes.object,\n dateFormat: PropTypes.string,\n isFloatComma: PropTypes.bool,\n imagePrefix: PropTypes.string,\n\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n updateData: PropTypes.number,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n onValueChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(JsonConfigComponent);"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["styles","theme","root","width","height","JsonConfigComponent","props","commandRunning","setState","id","state","val","alive","data","value","cb","saveConfig","onValueChange","newState","_data","Object","keys","forEach","attr","startsWith","changed","JSON","stringify","originalData","onChange","error","errorChached","parse","errors","errorTimeout","clearTimeout","setTimeout","onError","length","forceUpdate","Array","isArray","a","forceUpdateHandlers","updateData","systemConfig","schema","buildDependencies","readData","custom","common","Promise","resolve","socket","getObject","adapterName","instance","then","obj","readSettings","getCompactSystemConfig","getState","subscribeState","onAlive","_list","items","flatten","attrs","confirm","alsoDependsOn","dep","console","warn","replace","confirmDependsOn","depObj","cancel","push","onChangeDependsOn","hidden","hiddenDependsOn","label","labelDependsOn","help","helpDependsOn","item","type","onCommandRunning","themeType","themeName","customs","dateFormat","isFloatComma","multiEdit","imagePrefix","customObj","instanceObj","changeLanguage","forceAttrUpdate","registerOnForceUpdate","classes","renderItem","i18n","lang","I18n","getLanguage","path","fileExists","exists","fileName","readFile","json","file","undefined","extendTranslations","e","Component","propTypes","PropTypes","object","isRequired","string","number","bool","style","className","func","withStyles"],"sources":["JsonConfigComponent/index.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport I18n from '../../i18n';\n\nimport ConfigTabs from './ConfigTabs';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n height: '100%'\n }\n});\n\nclass JsonConfigComponent extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n originalData: JSON.stringify(this.props.data),\n changed: false,\n errors: {},\n updateData: this.props.updateData,\n systemConfig: null,\n alive: false,\n commandRunning: false,\n schema: JSON.parse(JSON.stringify(this.props.schema))\n };\n\n this.forceUpdateHandlers = {};\n\n this.buildDependencies(this.state.schema);\n\n this.readData();\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.updateData !== state.updateData) {\n return {\n updateData: props.updateData,\n originalData: JSON.stringify(props.data),\n schema: JSON.parse(JSON.stringify(props.schema)),\n };\n } else {\n return null;\n }\n }\n\n static loadI18n(socket, i18n, adapterName) {\n if (i18n === true || (i18n && typeof i18n === 'string')) {\n const lang = I18n.getLanguage();\n const path = typeof i18n === 'string' ? i18n : 'i18n';\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}.json`)\n .then(exists => {\n if (exists) {\n return `${path}/${lang}.json`;\n } else {\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}/translations.json`)\n .then(exists => exists ? `${path}/${lang}/translations.json` : '')\n .then(fileName => {\n if (!fileName && lang !== 'en') {\n // fallback to english\n return socket.fileExists(adapterName + '.admin', `${path}/en.json`)\n .then(exists => {\n if (exists) {\n return `${path}/en.json`;\n } else {\n return socket.fileExists(adapterName + '.admin', `${path}/en/translations.json`)\n .then(exists => exists ? `${path}/en/translations.json` : '');\n }\n });\n }\n return fileName;\n });\n }\n })\n .then(fileName => {\n if (fileName) {\n return socket.readFile(adapterName + '.admin', fileName)\n .then(json => {\n if (json.file !== undefined) {\n json = json.file;\n }\n try {\n json = JSON.parse(json);\n // apply file to I18n\n I18n.extendTranslations(json, lang);\n } catch (e) {\n console.error(`Cannot parse language file \"${adapterName}.admin/${fileName}: ${e}`);\n }\n });\n } else {\n console.warn(`Cannot find i18n for ${adapterName} / ${fileName}`);\n return Promise.resolve();\n }\n });\n } else if (i18n && typeof i18n === 'object') {\n I18n.extendTranslations(i18n);\n return Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n\n onCommandRunning = commandRunning => this.setState( { commandRunning });\n\n readSettings() {\n if ((this.props.custom || this.props.common) && this.props.data) {\n return Promise.resolve();\n } else {\n return this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`)\n .then(obj => this.setState({common: obj.common, data: this.props.data || obj.native}));\n }\n }\n\n readData() {\n this.readSettings()\n .then(() => this.props.socket.getCompactSystemConfig())\n .then(systemConfig =>\n this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`)\n .then(state => {\n if (this.props.custom) {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)});\n } else {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)}, () =>\n this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`, this.onAlive));\n }\n }));\n }\n\n onAlive = (id, state) => {\n if ((state?.val || false) !== this.state.alive) {\n this.setState({alive: state?.val || false});\n }\n }\n\n onChange = (data, value, cb, saveConfig) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(data, value, saveConfig);\n cb && cb();\n } else {\n if (data) {\n const newState = { data };\n\n const _data = {};\n // remove all attributes starting with \"_\"\n Object.keys(data).forEach(attr => !attr.startsWith('_') && (_data[attr] = data[attr]));\n\n newState.changed = JSON.stringify(_data) !== this.state.originalData;\n\n this.setState(newState, () => {\n this.props.onChange(_data, newState.changed, saveConfig);\n cb && cb();\n });\n } else if (saveConfig) {\n this.props.onChange(null, null, saveConfig);\n }\n }\n }\n\n onError = (attr, error) => {\n this.errorChached = this.errorChached || JSON.parse(JSON.stringify(this.state.errors));\n const errors = this.errorChached;\n if (error) {\n errors[attr] = error;\n } else {\n delete errors[attr];\n }\n\n this.errorTimeout && clearTimeout(this.errorTimeout);\n if (JSON.stringify(errors) !== JSON.stringify(this.state.errors)) {\n this.errorTimeout = setTimeout(() =>\n this.setState({ errors: this.errorChached }, () => {\n this.errorTimeout = null;\n this.errorChached = null;\n this.props.onError(!!Object.keys(this.state.errors).length);\n }), 50);\n } else {\n this.errorChached = null;\n }\n }\n\n flatten(schema, _list) {\n _list = _list || {};\n if (schema.items) {\n Object.keys(schema.items).forEach(attr => {\n _list[attr] = schema.items[attr];\n this.flatten(schema.items[attr], _list);\n });\n }\n\n return _list;\n }\n\n buildDependencies(schema) {\n const attrs = this.flatten(schema);\n Object.keys(attrs).forEach(attr => {\n if (attrs[attr].confirm?.alsoDependsOn) {\n attrs[attr].confirm?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].confirmDependsOn = attrs[dep].confirmDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n if (depObj.confirm) {\n depObj.confirm.cancel = 'Undo';\n }\n\n attrs[dep].confirmDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].onChange?.alsoDependsOn) {\n attrs[attr].onChange?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].onChangeDependsOn = attrs[dep].onChangeDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].onChangeDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].hidden?.alsoDependsOn) {\n attrs[attr].hidden?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].hiddenDependsOn = attrs[dep].hiddenDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].hiddenDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].label?.alsoDependsOn) {\n attrs[attr].label?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].labelDependsOn = attrs[dep].labelDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].labelDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].help?.alsoDependsOn) {\n attrs[attr].help?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].helpDependsOn = attrs[dep].helpDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].helpDependsOn.push(depObj);\n }\n });\n }\n });\n }\n\n renderItem(item) {\n if (item.type === 'tabs') {\n return <ConfigTabs\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n } else if (item.type === 'panel' || !item.type) {\n return <ConfigPanel\n index={1000}\n isParentTab\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n }\n }\n\n changeLanguage = () => {\n this.forceUpdate();\n }\n\n forceAttrUpdate = (attr, data) => {\n if (Array.isArray(attr)) {\n attr.forEach(a =>\n this.forceUpdateHandlers[a] && this.forceUpdateHandlers[a](data));\n } else {\n if (this.forceUpdateHandlers[attr]) {\n this.forceUpdateHandlers[attr](data);\n }\n }\n }\n\n registerOnForceUpdate = (attr, cb) => {\n if (cb) {\n this.forceUpdateHandlers[attr] = cb;\n } else if (this.forceUpdateHandlers[attr]) {\n delete this.forceUpdateHandlers[attr];\n }\n }\n\n render() {\n if (!this.state.systemConfig) {\n return <LinearProgress />;\n }\n\n return <div className={this.props.classes.root}>\n {this.renderItem(this.state.schema)}\n </div>;\n }\n}\n\nJsonConfigComponent.propTypes = {\n socket: PropTypes.object.isRequired,\n\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n common: PropTypes.object,\n customs: PropTypes.object, // custom components\n\n custom: PropTypes.bool, // is the customs settings must be shown\n customObj: PropTypes.object,\n multiEdit: PropTypes.bool, // set if user edits more than one object simultaneously\n instanceObj: PropTypes.object,\n dateFormat: PropTypes.string,\n isFloatComma: PropTypes.bool,\n imagePrefix: PropTypes.string,\n\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n updateData: PropTypes.number,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n onValueChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(JsonConfigComponent);"],"mappings":"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"}
|
package/Dialogs/Message.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ declare namespace DialogMessage {
|
|
|
33
33
|
const onClose: PropTypes.Validator<(...args: any[]) => any>;
|
|
34
34
|
const title: PropTypes.Requireable<string>;
|
|
35
35
|
const text: PropTypes.Requireable<string>;
|
|
36
|
+
const ok: PropTypes.Requireable<string>;
|
|
36
37
|
const icon: PropTypes.Requireable<object>;
|
|
37
38
|
}
|
|
38
39
|
}
|
package/Dialogs/Message.js
CHANGED
|
@@ -59,7 +59,11 @@ var DialogMessage = /*#__PURE__*/function (_React$Component) {
|
|
|
59
59
|
id: "message-dialog-title"
|
|
60
60
|
}, this.props.title || _i18n["default"].t('ra_Message')), /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], null, /*#__PURE__*/_react["default"].createElement(_DialogContentText["default"], {
|
|
61
61
|
id: "message-dialog-description"
|
|
62
|
-
},
|
|
62
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
63
|
+
style: {
|
|
64
|
+
marginRight: this.props.icon ? 8 : 0
|
|
65
|
+
}
|
|
66
|
+
}, this.props.icon || null), this.props.text)), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
63
67
|
variant: "contained",
|
|
64
68
|
onClick: function onClick() {
|
|
65
69
|
return _this.handleOk();
|
|
@@ -67,7 +71,7 @@ var DialogMessage = /*#__PURE__*/function (_React$Component) {
|
|
|
67
71
|
color: "primary",
|
|
68
72
|
autoFocus: true,
|
|
69
73
|
startIcon: /*#__PURE__*/_react["default"].createElement(_Close["default"], null)
|
|
70
|
-
}, _i18n["default"].t('ra_Close'))));
|
|
74
|
+
}, this.props.ok || _i18n["default"].t('ra_Close'))));
|
|
71
75
|
}
|
|
72
76
|
}]);
|
|
73
77
|
return DialogMessage;
|
|
@@ -77,6 +81,7 @@ DialogMessage.propTypes = {
|
|
|
77
81
|
onClose: _propTypes["default"].func.isRequired,
|
|
78
82
|
title: _propTypes["default"].string,
|
|
79
83
|
text: _propTypes["default"].string,
|
|
84
|
+
ok: _propTypes["default"].string,
|
|
80
85
|
icon: _propTypes["default"].object
|
|
81
86
|
};
|
|
82
87
|
var _default = DialogMessage;
|
package/Dialogs/Message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","names":["DialogMessage","props","onClose","fullWidth","undefined","handleOk","title","I18n","t","text","React","Component","propTypes","PropTypes","bool","func","isRequired","string","
|
|
1
|
+
{"version":3,"file":"Message.js","names":["DialogMessage","props","onClose","fullWidth","undefined","handleOk","title","I18n","t","marginRight","icon","text","ok","React","Component","propTypes","PropTypes","bool","func","isRequired","string","object"],"sources":["Message.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\n\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport IconClose from '@mui/icons-material/Close';\n\nimport I18n from '../i18n';\n\n/**\n * @typedef {object} DialogMessageProps\n * @property {string} [title] The dialog title; default: Message (translated)\n * @property {string} text The dialog text.\n * @property {() => void} [onClose] Close handler.\n *\n * @extends {React.Component<DialogMessageProps>}\n */\nclass DialogMessage extends React.Component {\n handleOk() {\n this.props.onClose && this.props.onClose();\n };\n\n render() {\n return <Dialog\n open={!0}\n maxWidth=\"sm\"\n fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}\n onClose={() => this.handleOk()}\n aria-labelledby=\"message-dialog-title\"\n aria-describedby=\"message-dialog-description\"\n >\n <DialogTitle id=\"message-dialog-title\">{this.props.title || I18n.t('ra_Message')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"message-dialog-description\">\n <span style={{ marginRight: this.props.icon ? 8 : 0 }}>{this.props.icon || null}</span>{this.props.text}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => this.handleOk()} color=\"primary\" autoFocus startIcon={<IconClose />}>{this.props.ok || I18n.t('ra_Close')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogMessage.propTypes = {\n fullWidth: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n title: PropTypes.string,\n text: PropTypes.string,\n ok: PropTypes.string,\n icon: PropTypes.object\n};\n\nexport default DialogMessage;\n"],"mappings":";;;;;;;;;;;;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAA2B;AAAA;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,IAQMA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OACf,oBAAW;MACP,IAAI,CAACC,KAAK,CAACC,OAAO,IAAI,IAAI,CAACD,KAAK,CAACC,OAAO,EAAE;IAC9C;EAAC;IAAA;IAAA,OAED,kBAAS;MAAA;MACL,oBAAO,gCAAC,kBAAM;QACV,IAAI,EAAE,CAAC,CAAE;QACT,QAAQ,EAAC,IAAI;QACb,SAAS,EAAE,IAAI,CAACD,KAAK,CAACE,SAAS,KAAKC,SAAS,GAAG,IAAI,CAACH,KAAK,CAACE,SAAS,GAAG,IAAK;QAC5E,OAAO,EAAE;UAAA,OAAM,KAAI,CAACE,QAAQ,EAAE;QAAA,CAAC;QAC/B,mBAAgB,sBAAsB;QACtC,oBAAiB;MAA4B,gBAE7C,gCAAC,uBAAW;QAAC,EAAE,EAAC;MAAsB,GAAE,IAAI,CAACJ,KAAK,CAACK,KAAK,IAAIC,gBAAI,CAACC,CAAC,CAAC,YAAY,CAAC,CAAe,eAC/F,gCAAC,yBAAa,qBACV,gCAAC,6BAAiB;QAAC,EAAE,EAAC;MAA4B,gBAC9C;QAAM,KAAK,EAAE;UAAEC,WAAW,EAAE,IAAI,CAACR,KAAK,CAACS,IAAI,GAAG,CAAC,GAAG;QAAE;MAAE,GAAE,IAAI,CAACT,KAAK,CAACS,IAAI,IAAI,IAAI,CAAQ,EAAC,IAAI,CAACT,KAAK,CAACU,IAAI,CACvF,CACR,eAChB,gCAAC,yBAAa,qBACV,gCAAC,kBAAM;QAAC,OAAO,EAAC,WAAW;QAAC,OAAO,EAAE;UAAA,OAAM,KAAI,CAACN,QAAQ,EAAE;QAAA,CAAC;QAAC,KAAK,EAAC,SAAS;QAAC,SAAS;QAAC,SAAS,eAAE,gCAAC,iBAAS;MAAI,GAAE,IAAI,CAACJ,KAAK,CAACW,EAAE,IAAIL,gBAAI,CAACC,CAAC,CAAC,UAAU,CAAC,CAAU,CAClJ,CACX;IACb;EAAC;EAAA;AAAA,EAxBuBK,iBAAK,CAACC,SAAS;AA2B3Cd,aAAa,CAACe,SAAS,GAAG;EACtBZ,SAAS,EAAEa,qBAAS,CAACC,IAAI;EACzBf,OAAO,EAAEc,qBAAS,CAACE,IAAI,CAACC,UAAU;EAClCb,KAAK,EAAEU,qBAAS,CAACI,MAAM;EACvBT,IAAI,EAAEK,qBAAS,CAACI,MAAM;EACtBR,EAAE,EAAEI,qBAAS,CAACI,MAAM;EACpBV,IAAI,EAAEM,qBAAS,CAACK;AACpB,CAAC;AAAC,eAEarB,aAAa;AAAA"}
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ If you want to create the configuration page with react:
|
|
|
10
10
|
- Change `name` from `src` to `ADAPTERNAME-admin` (Of course replace `ADAPTERNAME` with yours)
|
|
11
11
|
- Add to devDependencies:
|
|
12
12
|
```
|
|
13
|
-
"@iobroker/adapter-react": "^3.4.
|
|
13
|
+
"@iobroker/adapter-react": "^3.4.2",
|
|
14
14
|
```
|
|
15
15
|
Versions can be higher.
|
|
16
16
|
So your src/package.json should look like:
|
|
@@ -643,6 +643,12 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
643
643
|
-->
|
|
644
644
|
|
|
645
645
|
## Changelog
|
|
646
|
+
### 3.4.2 (2022-11-30)
|
|
647
|
+
* (bluefox) updated json config component
|
|
648
|
+
|
|
649
|
+
### 3.4.1 (2022-11-29)
|
|
650
|
+
* (bluefox) Added button text for message dialog
|
|
651
|
+
|
|
646
652
|
### 3.4.0 (2022-11-29)
|
|
647
653
|
* (bluefox) Added file selector
|
|
648
654
|
|
package/i18n/de.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_fileType_code": "Code/JSON",
|
|
343
343
|
"ra_fileType_images": "Bilder",
|
|
344
344
|
"ra_fileType_txt": "Text",
|
|
345
|
-
"ra_fileType_video,": "Video"
|
|
345
|
+
"ra_fileType_video,": "Video",
|
|
346
|
+
"ra_Cannot decode license": "Lizenz kann nicht entschlüsselt werden",
|
|
347
|
+
"ra_Invalid answer from server": "Ungültige Antwort vom Server",
|
|
348
|
+
"ra_License %s": "Lizenz %s",
|
|
349
|
+
"ra_License does not exist": "Lizenz existiert nicht",
|
|
350
|
+
"ra_License expired on %s": "Lizenz am %s abgelaufen",
|
|
351
|
+
"ra_License for other product \"%s\"": "Lizenz für anderes Produkt „%s“",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "Lizenz ist für Version %s, aber erforderliche Version ist %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.",
|
|
354
|
+
"ra_Serial number (UUID)": "Seriennummer (UUID)"
|
|
346
355
|
}
|
package/i18n/en.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_fileType_audio": "Audio",
|
|
343
343
|
"ra_fileType_video,": "Video",
|
|
344
344
|
"ra_Filter files": "Filter files",
|
|
345
|
-
"ra_Please select file...": "Please select file..."
|
|
345
|
+
"ra_Please select file...": "Please select file...",
|
|
346
|
+
"ra_License %s": "License %s",
|
|
347
|
+
"ra_License expired on %s": "License expired on %s",
|
|
348
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Serial number (UUID) \"%s\" in license is for other device.",
|
|
349
|
+
"ra_License is for version %s, but required version is %s.": "License is for version %s, but required version is %s.",
|
|
350
|
+
"ra_License for other product \"%s\"": "License for other product \"%s\"",
|
|
351
|
+
"ra_Invalid answer from server": "Invalid answer from server",
|
|
352
|
+
"ra_License does not exist": "License does not exist",
|
|
353
|
+
"ra_Cannot decode license": "Cannot decode license",
|
|
354
|
+
"ra_Serial number (UUID)": "Serial number (UUID)"
|
|
346
355
|
}
|
package/i18n/es.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "Mar",
|
|
343
343
|
"ra_months_Nov": "Nov",
|
|
344
344
|
"ra_months_Oct": "Oct",
|
|
345
|
-
"ra_months_Sep": "Sep"
|
|
345
|
+
"ra_months_Sep": "Sep",
|
|
346
|
+
"ra_Cannot decode license": "No se puede decodificar la licencia",
|
|
347
|
+
"ra_Invalid answer from server": "Respuesta inválida del servidor",
|
|
348
|
+
"ra_License %s": "Licencia %s",
|
|
349
|
+
"ra_License does not exist": "La licencia no existe",
|
|
350
|
+
"ra_License expired on %s": "La licencia venció el %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licencia para otro producto \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "La licencia es para la versión %s, pero la versión requerida es %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "El número de serie (UUID) \"%s\" en la licencia es para otro dispositivo.",
|
|
354
|
+
"ra_Serial number (UUID)": "Número de serie (UUID)"
|
|
346
355
|
}
|
package/i18n/fr.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "Mar",
|
|
343
343
|
"ra_months_Nov": "Nov",
|
|
344
344
|
"ra_months_Oct": "Oct",
|
|
345
|
-
"ra_months_Sep": "Sep"
|
|
345
|
+
"ra_months_Sep": "Sep",
|
|
346
|
+
"ra_Cannot decode license": "Impossible de décoder la licence",
|
|
347
|
+
"ra_Invalid answer from server": "Réponse invalide du serveur",
|
|
348
|
+
"ra_License %s": "Licence %s",
|
|
349
|
+
"ra_License does not exist": "La licence n'existe pas",
|
|
350
|
+
"ra_License expired on %s": "Licence expirée le %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licence pour un autre produit \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "La licence est pour la version %s, mais la version requise est %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Le numéro de série (UUID) \"%s\" dans la licence est pour un autre appareil.",
|
|
354
|
+
"ra_Serial number (UUID)": "Numéro de série (UUID)"
|
|
346
355
|
}
|
package/i18n/it.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "marzo",
|
|
343
343
|
"ra_months_Nov": "nov",
|
|
344
344
|
"ra_months_Oct": "ottobre",
|
|
345
|
-
"ra_months_Sep": "Sett"
|
|
345
|
+
"ra_months_Sep": "Sett",
|
|
346
|
+
"ra_Cannot decode license": "Impossibile decodificare la licenza",
|
|
347
|
+
"ra_Invalid answer from server": "Risposta non valida dal server",
|
|
348
|
+
"ra_License %s": "Licenza %s",
|
|
349
|
+
"ra_License does not exist": "La licenza non esiste",
|
|
350
|
+
"ra_License expired on %s": "Licenza scaduta il %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licenza per altro prodotto \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "La licenza è per la versione %s, ma la versione richiesta è %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Il numero di serie (UUID) \"%s\" nella licenza è per un altro dispositivo.",
|
|
354
|
+
"ra_Serial number (UUID)": "Numero di serie (UUID)"
|
|
346
355
|
}
|
package/i18n/nl.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "mrt",
|
|
343
343
|
"ra_months_Nov": "nov",
|
|
344
344
|
"ra_months_Oct": "Okt",
|
|
345
|
-
"ra_months_Sep": "sept"
|
|
345
|
+
"ra_months_Sep": "sept",
|
|
346
|
+
"ra_Cannot decode license": "Kan licentie niet decoderen",
|
|
347
|
+
"ra_Invalid answer from server": "Ongeldig antwoord van de server",
|
|
348
|
+
"ra_License %s": "Licentie %s",
|
|
349
|
+
"ra_License does not exist": "Licentie bestaat niet",
|
|
350
|
+
"ra_License expired on %s": "Licentie verlopen op %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licentie voor ander product \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "Licentie is voor versie %s, maar vereiste versie is %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Serienummer (UUID) \"%s\" in licentie is voor ander apparaat.",
|
|
354
|
+
"ra_Serial number (UUID)": "Serienummer (UUID)"
|
|
346
355
|
}
|
package/i18n/pl.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "Zniszczyć",
|
|
343
343
|
"ra_months_Nov": "listopad",
|
|
344
344
|
"ra_months_Oct": "październik",
|
|
345
|
-
"ra_months_Sep": "wrzesień"
|
|
345
|
+
"ra_months_Sep": "wrzesień",
|
|
346
|
+
"ra_Cannot decode license": "Nie można zdekodować licencji",
|
|
347
|
+
"ra_Invalid answer from server": "Nieprawidłowa odpowiedź z serwera",
|
|
348
|
+
"ra_License %s": "Licencja %s",
|
|
349
|
+
"ra_License does not exist": "Licencja nie istnieje",
|
|
350
|
+
"ra_License expired on %s": "Licencja wygasła w dniu %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licencja na inny produkt „%s”",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "Licencja dotyczy wersji %s, ale wymagana wersja to %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.",
|
|
354
|
+
"ra_Serial number (UUID)": "Numer seryjny (UUID)"
|
|
346
355
|
}
|
package/i18n/pt.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "março",
|
|
343
343
|
"ra_months_Nov": "novembro",
|
|
344
344
|
"ra_months_Oct": "outubro",
|
|
345
|
-
"ra_months_Sep": "setembro"
|
|
345
|
+
"ra_months_Sep": "setembro",
|
|
346
|
+
"ra_Cannot decode license": "Não é possível decodificar a licença",
|
|
347
|
+
"ra_Invalid answer from server": "Resposta inválida do servidor",
|
|
348
|
+
"ra_License %s": "Licença %s",
|
|
349
|
+
"ra_License does not exist": "A licença não existe",
|
|
350
|
+
"ra_License expired on %s": "A licença expirou em %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Licença para outro produto \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "A licença é para a versão %s, mas a versão necessária é %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "O número de série (UUID) \"%s\" na licença é para outro dispositivo.",
|
|
354
|
+
"ra_Serial number (UUID)": "Número de série (UUID)"
|
|
346
355
|
}
|
package/i18n/ru.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_fileType_code": "Код/JSON",
|
|
343
343
|
"ra_fileType_images": "Картинки",
|
|
344
344
|
"ra_fileType_txt": "Текст",
|
|
345
|
-
"ra_fileType_video,": "видео"
|
|
345
|
+
"ra_fileType_video,": "видео",
|
|
346
|
+
"ra_Cannot decode license": "Не могу декодировать лицензию",
|
|
347
|
+
"ra_Invalid answer from server": "Неверный ответ от сервера",
|
|
348
|
+
"ra_License %s": "Лицензия %s",
|
|
349
|
+
"ra_License does not exist": "Лицензия не существует",
|
|
350
|
+
"ra_License expired on %s": "Срок действия лицензии истек %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Лицензия на другой продукт \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "Лицензия предназначена для версии %s, но необходима версия %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.",
|
|
354
|
+
"ra_Serial number (UUID)": "Серийный номер (UUID)"
|
|
346
355
|
}
|
package/i18n/uk.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_month_Mar": "березень",
|
|
343
343
|
"ra_month_Nov": "Листопад",
|
|
344
344
|
"ra_month_Oct": "жовт",
|
|
345
|
-
"ra_month_Sep": "вер"
|
|
345
|
+
"ra_month_Sep": "вер",
|
|
346
|
+
"ra_Cannot decode license": "Неможливо розшифрувати ліцензію",
|
|
347
|
+
"ra_Invalid answer from server": "Недійсна відповідь від сервера",
|
|
348
|
+
"ra_License %s": "Ліцензія %s",
|
|
349
|
+
"ra_License does not exist": "Ліцензії не існує",
|
|
350
|
+
"ra_License expired on %s": "Термін дії ліцензії закінчився %s",
|
|
351
|
+
"ra_License for other product \"%s\"": "Ліцензія на інший продукт \"%s\"",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "Ліцензія для версії %s, але потрібна версія %s.",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "Серійний номер (UUID) \"%s\" у ліцензії призначений для іншого пристрою.",
|
|
354
|
+
"ra_Serial number (UUID)": "Серійний номер (UUID)"
|
|
346
355
|
}
|
package/i18n/zh-cn.json
CHANGED
|
@@ -342,5 +342,14 @@
|
|
|
342
342
|
"ra_months_Mar": "三月",
|
|
343
343
|
"ra_months_Nov": "十一月",
|
|
344
344
|
"ra_months_Oct": "十月",
|
|
345
|
-
"ra_months_Sep": "九月"
|
|
345
|
+
"ra_months_Sep": "九月",
|
|
346
|
+
"ra_Cannot decode license": "无法解码许可证",
|
|
347
|
+
"ra_Invalid answer from server": "来自服务器的无效答案",
|
|
348
|
+
"ra_License %s": "许可证 %s",
|
|
349
|
+
"ra_License does not exist": "许可证不存在",
|
|
350
|
+
"ra_License expired on %s": "许可证已于 %s 过期",
|
|
351
|
+
"ra_License for other product \"%s\"": "其他产品“%s”的许可证",
|
|
352
|
+
"ra_License is for version %s, but required version is %s.": "许可证适用于版本 %s,但所需版本为 %s。",
|
|
353
|
+
"ra_Serial number (UUID) \"%s\" in license is for other device.": "许可证中的序列号 (UUID)“%s”用于其他设备。",
|
|
354
|
+
"ra_Serial number (UUID)": "序列号 (UUID)"
|
|
346
355
|
}
|