@iobroker/adapter-react-v5 4.6.7 → 4.6.8
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 +1 -22
- package/Components/JsonConfigComponent/ChipInput.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCheckLicense.js +1 -1
- package/Components/JsonConfigComponent/ConfigCheckLicense.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigFileSelector.js +15 -29
- package/Components/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigFunc.js +5 -9
- package/Components/JsonConfigComponent/ConfigFunc.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js +3 -2
- package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigImageUpload.js +4 -6
- package/Components/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigInstanceSelect.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js +45 -18
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js +5 -9
- package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigObjectId.js +2 -4
- package/Components/JsonConfigComponent/ConfigObjectId.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +13 -15
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPassword.js +10 -13
- package/Components/JsonConfigComponent/ConfigPassword.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPattern.js +3 -4
- package/Components/JsonConfigComponent/ConfigPattern.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigRoom.js +5 -9
- package/Components/JsonConfigComponent/ConfigRoom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +0 -26
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js +0 -33
- package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +149 -79
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTabs.js +2 -0
- package/Components/JsonConfigComponent/ConfigTabs.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigUUID.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigUser.js +3 -2
- package/Components/JsonConfigComponent/ConfigUser.js.map +1 -1
- package/Components/ObjectBrowser.d.ts +24 -1
- package/Components/ObjectBrowser.js +223 -94
- package/Components/ObjectBrowser.js.map +1 -1
- package/README.md +3 -0
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigUser.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_material","_Icon","_i18n","_Utils","_ConfigGeneric2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","icon","height","marginRight","ConfigUser","_ConfigGeneric","_inherits2","_super","_classCallCheck2","_createClass2","key","value","componentDidMount","_this","_get2","props","socket","getUsers","then","users","_users","lang","I18n","getLanguage","schema","forEach","user","_user$common","_user$common2","_id","color","common","name","Utils","getObjectNameFromObj","_user$common3","_user$common4","replace","setState","renderItem","error","disabled","_this2","_this$state$users$val","_this$state$users$val2","ConfigGeneric","getValue","data","attr","createElement","FormControl","variant","className","classes","label","InputLabel","getText","state","TextField","onChange","target","Select","renderValue","val","_this2$state$users$va","_this2$state$users$va2","_this2$state$users$va3","src","style","undefined","backgroundColor","getInvertedColor","themeType","Object","keys","map","id","MenuItem","help","FormHelperText","renderHelp","helpLink","noTranslation","propTypes","PropTypes","object","isRequired","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigUser.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport {\n InputLabel,\n TextField,\n MenuItem,\n FormHelperText,\n FormControl,\n Select,\n} from '@mui/material';\n\nimport Icon from './wrapper/Components/Icon';\nimport I18n from './wrapper/i18n';\nimport Utils from './wrapper/Components/Utils';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n icon: {\n width: 16,\n height: 16,\n marginRight: 8,\n },\n});\n\nclass ConfigUser extends ConfigGeneric {\n componentDidMount() {\n super.componentDidMount();\n this.props.socket.getUsers()\n .then(users => {\n const _users = {};\n const lang = I18n.getLanguage();\n\n if (this.props.schema.short) {\n users.forEach(user => _users[user._id] = {\n color: user.common?.color,\n icon: user.common?.icon,\n name: Utils.getObjectNameFromObj(user, lang),\n });\n } else {\n users.forEach(user => _users[user._id.replace(/^system\\.user\\./, '')] = {\n color: user.common?.color,\n icon: user.common?.icon,\n name: Utils.getObjectNameFromObj(user, lang),\n });\n }\n\n this.setState({ users: _users });\n });\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n\n return <FormControl variant=\"standard\" className={this.props.classes.fullWidth}>\n {this.props.schema.label ? <InputLabel>{this.getText(this.props.schema.label)}</InputLabel> : null}\n {!this.state.users ?\n <TextField\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={value}\n onChange={e => this.onChange(this.props.attr, e.target.value)}\n />\n :\n <Select\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={value}\n renderValue={val => <span>\n {this.state.users && this.state.users[val]?.icon ? <Icon src={this.state.users && this.state.users[val]?.icon} className={this.props.classes.icon} /> : null}\n {(this.state.users && this.state.users[val]?.name) || val || ''}\n </span>}\n style={{ color: (this.state.users && this.state.users[value]?.color) || undefined, backgroundColor: Utils.getInvertedColor(this.state.users && this.state.users[value]?.color, this.props.themeType) }}\n onChange={e => this.onChange(this.props.attr, e.target.value)}\n >\n {this.state.users && Object.keys(this.state.users).map(id => <MenuItem style={{ color: this.state.users[id].color || undefined, backgroundColor: Utils.getInvertedColor(this.state.users[id].color, this.props.themeType) }} key={id} value={id}>\n {this.state.users[id].icon ? <Icon src={this.state.users[id].icon} className={this.props.classes.icon} /> : null}\n {this.state.users[id].name}\n </MenuItem>)}\n </Select>}\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n </FormControl>;\n }\n}\n\nConfigUser.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigUser);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConfigUser.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_material","_Icon","_i18n","_Utils","_ConfigGeneric2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","icon","height","marginRight","ConfigUser","_ConfigGeneric","_inherits2","_super","_classCallCheck2","_createClass2","key","value","componentDidMount","_this","_get2","props","socket","getUsers","then","users","_users","lang","I18n","getLanguage","schema","forEach","user","_user$common","_user$common2","_id","color","common","name","Utils","getObjectNameFromObj","_user$common3","_user$common4","replace","setState","renderItem","error","disabled","_this2","_this$state$users$val","_this$state$users$val2","ConfigGeneric","getValue","data","attr","createElement","FormControl","variant","className","classes","state","label","InputLabel","getText","TextField","onChange","target","Select","renderValue","val","_this2$state$users$va","_this2$state$users$va2","_this2$state$users$va3","src","style","undefined","backgroundColor","getInvertedColor","themeType","Object","keys","map","id","MenuItem","help","FormHelperText","renderHelp","helpLink","noTranslation","propTypes","PropTypes","object","isRequired","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigUser.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport {\n InputLabel,\n TextField,\n MenuItem,\n FormHelperText,\n FormControl,\n Select,\n} from '@mui/material';\n\nimport Icon from './wrapper/Components/Icon';\nimport I18n from './wrapper/i18n';\nimport Utils from './wrapper/Components/Utils';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n icon: {\n width: 16,\n height: 16,\n marginRight: 8,\n },\n});\n\nclass ConfigUser extends ConfigGeneric {\n componentDidMount() {\n super.componentDidMount();\n this.props.socket.getUsers()\n .then(users => {\n const _users = {};\n const lang = I18n.getLanguage();\n\n if (this.props.schema.short) {\n users.forEach(user => _users[user._id] = {\n color: user.common?.color,\n icon: user.common?.icon,\n name: Utils.getObjectNameFromObj(user, lang),\n });\n } else {\n users.forEach(user => _users[user._id.replace(/^system\\.user\\./, '')] = {\n color: user.common?.color,\n icon: user.common?.icon,\n name: Utils.getObjectNameFromObj(user, lang),\n });\n }\n\n this.setState({ users: _users });\n });\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n\n return <FormControl variant=\"standard\" className={this.props.classes.fullWidth}>\n {this.state.users && this.props.schema.label ? <InputLabel>{this.getText(this.props.schema.label)}</InputLabel> : null}\n {!this.state.users ?\n <TextField\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={value}\n onChange={e => this.onChange(this.props.attr, e.target.value)}\n label={this.getText(this.props.schema.label)}\n />\n :\n <Select\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={value}\n renderValue={val => <span>\n {this.state.users && this.state.users[val]?.icon ? <Icon src={this.state.users && this.state.users[val]?.icon} className={this.props.classes.icon} /> : null}\n {(this.state.users && this.state.users[val]?.name) || val || ''}\n </span>}\n style={{ color: (this.state.users && this.state.users[value]?.color) || undefined, backgroundColor: Utils.getInvertedColor(this.state.users && this.state.users[value]?.color, this.props.themeType) }}\n onChange={e => this.onChange(this.props.attr, e.target.value)}\n >\n {this.state.users && Object.keys(this.state.users).map(id => <MenuItem style={{ color: this.state.users[id].color || undefined, backgroundColor: Utils.getInvertedColor(this.state.users[id].color, this.props.themeType) }} key={id} value={id}>\n {this.state.users[id].icon ? <Icon src={this.state.users[id].icon} className={this.props.classes.icon} /> : null}\n {this.state.users[id].name}\n </MenuItem>)}\n </Select>}\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n </FormControl>;\n }\n}\n\nConfigUser.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigUser);\n"],"mappings":"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"}
|
|
@@ -99,6 +99,9 @@ declare class ObjectBrowser extends React.Component<import("./types").ObjectBrow
|
|
|
99
99
|
showDescription: boolean;
|
|
100
100
|
showContextMenu: any;
|
|
101
101
|
noStatesByExportImport: boolean;
|
|
102
|
+
beautifyJsonExport: boolean;
|
|
103
|
+
excludeSystemRepositoriesFromExport: boolean;
|
|
104
|
+
excludeTranslations: boolean;
|
|
102
105
|
};
|
|
103
106
|
edit: {};
|
|
104
107
|
texts: {
|
|
@@ -281,6 +284,16 @@ declare class ObjectBrowser extends React.Component<import("./types").ObjectBrow
|
|
|
281
284
|
* @param {ioBroker.Object} obj
|
|
282
285
|
*/
|
|
283
286
|
onObjectChange: (id: string, obj: ioBroker.Object) => void;
|
|
287
|
+
/**
|
|
288
|
+
* Processes a single element in regard to certain filters, columns for admin and updates object dict
|
|
289
|
+
* @param id The id of the object
|
|
290
|
+
* @param obj The object itself
|
|
291
|
+
* @returns {{filtered: boolean, newState: null}} Returns an object containing the new state (if any) and whether the object was filtered.
|
|
292
|
+
*/
|
|
293
|
+
processOnObjectChangeElement(id: any, obj: any): {
|
|
294
|
+
filtered: boolean;
|
|
295
|
+
newState: null;
|
|
296
|
+
};
|
|
284
297
|
/**
|
|
285
298
|
* @private
|
|
286
299
|
* @param {string} id
|
|
@@ -381,7 +394,17 @@ declare class ObjectBrowser extends React.Component<import("./types").ObjectBrow
|
|
|
381
394
|
*/
|
|
382
395
|
private loadObjects;
|
|
383
396
|
_getSelectedIdsForExport(): string[];
|
|
384
|
-
|
|
397
|
+
/**
|
|
398
|
+
* Exports the selected objects based on the given options and triggers file generation
|
|
399
|
+
* @param options Options to filter/reduce the output
|
|
400
|
+
* @param options.isAll {boolean} Whether all objects should be exported or only the selected ones
|
|
401
|
+
* @param options.beautify {boolean} Whether the output should be beautified
|
|
402
|
+
* @param options.excludeSystemRepositories {boolean} Whether "system.repositories" should be excluded
|
|
403
|
+
* @param options.excludeTranslations {boolean} Whether translations should be reduced to only the english value
|
|
404
|
+
* @returns {Promise<void>}
|
|
405
|
+
* @private
|
|
406
|
+
*/
|
|
407
|
+
private _exportObjects;
|
|
385
408
|
renderExportDialog(): React.JSX.Element;
|
|
386
409
|
/**
|
|
387
410
|
* @private
|
|
@@ -751,9 +751,73 @@ var styles = function styles(theme) {
|
|
|
751
751
|
}
|
|
752
752
|
};
|
|
753
753
|
};
|
|
754
|
-
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Function that walks through all keys of an object or array and applies a function to each key.
|
|
757
|
+
* @returns {unknown} The copied object
|
|
758
|
+
*/
|
|
759
|
+
function walkThrough(object, iteratee) {
|
|
760
|
+
if (Array.isArray(object)) {
|
|
761
|
+
var _copiedObject = [];
|
|
762
|
+
for (var index = 0; index < object.length; index++) {
|
|
763
|
+
iteratee(_copiedObject, object[index], index);
|
|
764
|
+
}
|
|
765
|
+
return _copiedObject;
|
|
766
|
+
}
|
|
767
|
+
var copiedObject = {};
|
|
768
|
+
for (var key in object) {
|
|
769
|
+
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
770
|
+
iteratee(copiedObject, object[key], key);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
return copiedObject;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* Function to reduce an object primarily by a given list of keys
|
|
778
|
+
* @param obj The object which should be filtered
|
|
779
|
+
* @param filterKeys The keys which should be excluded
|
|
780
|
+
* @param excludeTranslations Whether translations should be reduced to only the english value
|
|
781
|
+
* @returns {unknown} The filtered object
|
|
782
|
+
*/
|
|
783
|
+
function filterObject(obj, filterKeys, excludeTranslations) {
|
|
784
|
+
return walkThrough(obj, function (result, value, key) {
|
|
785
|
+
if (value === undefined || value === null) {
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
if (typeof key === 'string' && filterKeys.includes(key)) {
|
|
789
|
+
return;
|
|
790
|
+
}
|
|
791
|
+
// if the key is an object, run it through the inner function - omitFromObject
|
|
792
|
+
var isObject = (0, _typeof2["default"])(value) === 'object';
|
|
793
|
+
if (excludeTranslations && isObject) {
|
|
794
|
+
if (typeof value.en === 'string' && typeof value.de === 'string') {
|
|
795
|
+
result[key] = value.en;
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Function to generate a json-file for an object and trigger download it
|
|
805
|
+
* @param filename {string} The desired filename
|
|
806
|
+
* @param obj {unknown} The obj which should be downloaded
|
|
807
|
+
* @param options Options to filter/reduce the output
|
|
808
|
+
* @param options.beautify {boolean} Whether the output should be beautified
|
|
809
|
+
* @param options.excludeSystemRepositories {boolean} Whether "system.repositories" should be excluded
|
|
810
|
+
* @param options.excludeTranslations {boolean} Whether translations should be reduced to only the english value
|
|
811
|
+
*/
|
|
812
|
+
function generateFile(filename, obj, options) {
|
|
755
813
|
var el = document.createElement('a');
|
|
756
|
-
|
|
814
|
+
var filterKeys = [];
|
|
815
|
+
if (options.excludeSystemRepositories) {
|
|
816
|
+
filterKeys.push('system.repositories');
|
|
817
|
+
}
|
|
818
|
+
var filteredObject = filterKeys.length > 0 || options.excludeTranslations ? filterObject(obj, filterKeys, options.excludeTranslations) : obj;
|
|
819
|
+
var data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);
|
|
820
|
+
el.setAttribute('href', "data:application/json;charset=utf-8,".concat(encodeURIComponent(data)));
|
|
757
821
|
el.setAttribute('download', filename);
|
|
758
822
|
el.style.display = 'none';
|
|
759
823
|
document.body.appendChild(el);
|
|
@@ -1891,50 +1955,24 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
1891
1955
|
var newState;
|
|
1892
1956
|
if (Array.isArray(id)) {
|
|
1893
1957
|
id.forEach(function (event) {
|
|
1894
|
-
|
|
1895
|
-
|
|
1958
|
+
var _this$processOnObject = _this.processOnObjectChangeElement(event.id, event.obj),
|
|
1959
|
+
newInnerState = _this$processOnObject.newInnerState,
|
|
1960
|
+
filtered = _this$processOnObject.filtered;
|
|
1961
|
+
if (filtered) {
|
|
1896
1962
|
return;
|
|
1897
1963
|
}
|
|
1898
|
-
if (
|
|
1899
|
-
|
|
1900
|
-
_this.parseObjectForAdmins(columnsForAdmin, event.obj);
|
|
1901
|
-
if (JSON.stringify(_this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {
|
|
1902
|
-
newState = {
|
|
1903
|
-
columnsForAdmin: columnsForAdmin
|
|
1904
|
-
};
|
|
1905
|
-
}
|
|
1906
|
-
}
|
|
1907
|
-
_this.objects = _this.objects || [];
|
|
1908
|
-
if (_this.objects[event.id]) {
|
|
1909
|
-
if (event.obj) {
|
|
1910
|
-
_this.objects[event.id] = event.obj;
|
|
1911
|
-
} else {
|
|
1912
|
-
delete _this.objects[event.id];
|
|
1913
|
-
}
|
|
1964
|
+
if (newInnerState) {
|
|
1965
|
+
newState = newInnerState;
|
|
1914
1966
|
}
|
|
1915
1967
|
});
|
|
1916
1968
|
} else {
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1969
|
+
var _this$processOnObject2 = _this.processOnObjectChangeElement(id, obj),
|
|
1970
|
+
newInnerState = _this$processOnObject2.newInnerState,
|
|
1971
|
+
filtered = _this$processOnObject2.filtered;
|
|
1972
|
+
if (filtered) {
|
|
1920
1973
|
return;
|
|
1921
1974
|
}
|
|
1922
|
-
|
|
1923
|
-
var columnsForAdmin = JSON.parse(JSON.stringify(_this.state.columnsForAdmin));
|
|
1924
|
-
_this.parseObjectForAdmins(columnsForAdmin, obj);
|
|
1925
|
-
if (JSON.stringify(_this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {
|
|
1926
|
-
newState = {
|
|
1927
|
-
columnsForAdmin: columnsForAdmin
|
|
1928
|
-
};
|
|
1929
|
-
}
|
|
1930
|
-
}
|
|
1931
|
-
if (_this.objects[id]) {
|
|
1932
|
-
if (obj) {
|
|
1933
|
-
_this.objects[id] = obj;
|
|
1934
|
-
} else {
|
|
1935
|
-
delete _this.objects[id];
|
|
1936
|
-
}
|
|
1937
|
-
}
|
|
1975
|
+
newState = newInnerState;
|
|
1938
1976
|
}
|
|
1939
1977
|
newState && _this.setState(newState);
|
|
1940
1978
|
if (!_this.objectsUpdateTimer && _this.objects) {
|
|
@@ -2091,12 +2129,6 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
2091
2129
|
}
|
|
2092
2130
|
if (obj.val) {
|
|
2093
2131
|
val = obj.val;
|
|
2094
|
-
try {
|
|
2095
|
-
val = JSON.parse(val);
|
|
2096
|
-
} catch (e) {
|
|
2097
|
-
console.log("Cannot parse value: ".concat(e));
|
|
2098
|
-
val = null;
|
|
2099
|
-
}
|
|
2100
2132
|
delete obj.val;
|
|
2101
2133
|
}
|
|
2102
2134
|
if (obj.ack !== undefined) {
|
|
@@ -2226,12 +2258,6 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
2226
2258
|
}
|
|
2227
2259
|
if (json.val) {
|
|
2228
2260
|
val = json.val;
|
|
2229
|
-
try {
|
|
2230
|
-
val = JSON.parse(val);
|
|
2231
|
-
} catch (err) {
|
|
2232
|
-
console.log("Cannot parse value: ".concat(err));
|
|
2233
|
-
val = null;
|
|
2234
|
-
}
|
|
2235
2261
|
delete json.val;
|
|
2236
2262
|
}
|
|
2237
2263
|
if (json.ack !== undefined) {
|
|
@@ -2701,7 +2727,10 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
2701
2727
|
linesEnabled: (window._localStorage || window.localStorage).getItem("".concat(props.dialogName || 'App', ".lines")) === 'true',
|
|
2702
2728
|
showDescription: (window._localStorage || window.localStorage).getItem("".concat(props.dialogName || 'App', ".desc")) !== 'false',
|
|
2703
2729
|
showContextMenu: null,
|
|
2704
|
-
noStatesByExportImport: false
|
|
2730
|
+
noStatesByExportImport: false,
|
|
2731
|
+
beautifyJsonExport: true,
|
|
2732
|
+
excludeSystemRepositoriesFromExport: true,
|
|
2733
|
+
excludeTranslations: false
|
|
2705
2734
|
};
|
|
2706
2735
|
_this.edit = {};
|
|
2707
2736
|
_this.texts = {
|
|
@@ -3502,13 +3531,51 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
3502
3531
|
return columnsForAdmin;
|
|
3503
3532
|
}
|
|
3504
3533
|
}, {
|
|
3505
|
-
key: "
|
|
3534
|
+
key: "processOnObjectChangeElement",
|
|
3506
3535
|
value:
|
|
3536
|
+
/**
|
|
3537
|
+
* Processes a single element in regard to certain filters, columns for admin and updates object dict
|
|
3538
|
+
* @param id The id of the object
|
|
3539
|
+
* @param obj The object itself
|
|
3540
|
+
* @returns {{filtered: boolean, newState: null}} Returns an object containing the new state (if any) and whether the object was filtered.
|
|
3541
|
+
*/
|
|
3542
|
+
function processOnObjectChangeElement(id, obj) {
|
|
3543
|
+
console.log("> objectChange ".concat(id));
|
|
3544
|
+
var newState = null;
|
|
3545
|
+
if (obj && typeof this.props.filterFunc === 'function' && !this.props.filterFunc(obj)) {
|
|
3546
|
+
return {
|
|
3547
|
+
newState: newState,
|
|
3548
|
+
filtered: true
|
|
3549
|
+
};
|
|
3550
|
+
}
|
|
3551
|
+
if (id.startsWith('system.adapter.') && obj && obj.type === 'adapter') {
|
|
3552
|
+
var columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));
|
|
3553
|
+
this.parseObjectForAdmins(columnsForAdmin, obj);
|
|
3554
|
+
if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {
|
|
3555
|
+
newState = {
|
|
3556
|
+
columnsForAdmin: columnsForAdmin
|
|
3557
|
+
};
|
|
3558
|
+
}
|
|
3559
|
+
}
|
|
3560
|
+
this.objects = this.objects || [];
|
|
3561
|
+
if (obj) {
|
|
3562
|
+
this.objects[id] = obj;
|
|
3563
|
+
} else if (this.objects[id]) {
|
|
3564
|
+
delete this.objects[id];
|
|
3565
|
+
}
|
|
3566
|
+
return {
|
|
3567
|
+
newState: newState,
|
|
3568
|
+
filtered: false
|
|
3569
|
+
};
|
|
3570
|
+
}
|
|
3571
|
+
|
|
3507
3572
|
/**
|
|
3508
3573
|
* @private
|
|
3509
3574
|
* @param {string} id
|
|
3510
3575
|
*/
|
|
3511
|
-
|
|
3576
|
+
}, {
|
|
3577
|
+
key: "subscribe",
|
|
3578
|
+
value: function subscribe(id) {
|
|
3512
3579
|
if (!this.subscribes.includes(id)) {
|
|
3513
3580
|
this.subscribes.push(id);
|
|
3514
3581
|
console.log("+ subscribe ".concat(id));
|
|
@@ -3990,52 +4057,66 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
3990
4057
|
}
|
|
3991
4058
|
return [];
|
|
3992
4059
|
}
|
|
4060
|
+
|
|
4061
|
+
/**
|
|
4062
|
+
* Exports the selected objects based on the given options and triggers file generation
|
|
4063
|
+
* @param options Options to filter/reduce the output
|
|
4064
|
+
* @param options.isAll {boolean} Whether all objects should be exported or only the selected ones
|
|
4065
|
+
* @param options.beautify {boolean} Whether the output should be beautified
|
|
4066
|
+
* @param options.excludeSystemRepositories {boolean} Whether "system.repositories" should be excluded
|
|
4067
|
+
* @param options.excludeTranslations {boolean} Whether translations should be reduced to only the english value
|
|
4068
|
+
* @returns {Promise<void>}
|
|
4069
|
+
* @private
|
|
4070
|
+
*/
|
|
3993
4071
|
}, {
|
|
3994
4072
|
key: "_exportObjects",
|
|
3995
4073
|
value: function () {
|
|
3996
|
-
var _exportObjects2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(
|
|
3997
|
-
var result, id, ids,
|
|
4074
|
+
var _exportObjects2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(options) {
|
|
4075
|
+
var result, id, ids, _iterator2, _step2, _result$key, key, state, enums;
|
|
3998
4076
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
3999
4077
|
while (1) switch (_context5.prev = _context5.next) {
|
|
4000
4078
|
case 0:
|
|
4001
|
-
if (!isAll) {
|
|
4002
|
-
_context5.next =
|
|
4079
|
+
if (!options.isAll) {
|
|
4080
|
+
_context5.next = 3;
|
|
4003
4081
|
break;
|
|
4004
4082
|
}
|
|
4005
|
-
generateFile('allObjects.json', this.objects);
|
|
4006
|
-
_context5.
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
_context5.next = 24;
|
|
4083
|
+
generateFile('allObjects.json', this.objects, options);
|
|
4084
|
+
return _context5.abrupt("return");
|
|
4085
|
+
case 3:
|
|
4086
|
+
if (this.state.selected.length || this.state.selectedNonObject) {
|
|
4087
|
+
_context5.next = 6;
|
|
4011
4088
|
break;
|
|
4012
4089
|
}
|
|
4090
|
+
window.alert(this.props.t('ra_Save of objects-tree is not possible'));
|
|
4091
|
+
return _context5.abrupt("return");
|
|
4092
|
+
case 6:
|
|
4013
4093
|
result = {};
|
|
4014
4094
|
id = this.state.selected[0] || this.state.selectedNonObject;
|
|
4015
4095
|
ids = this._getSelectedIdsForExport();
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4096
|
+
_iterator2 = _createForOfIteratorHelper(ids);
|
|
4097
|
+
_context5.prev = 10;
|
|
4098
|
+
_iterator2.s();
|
|
4099
|
+
case 12:
|
|
4100
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
4101
|
+
_context5.next = 23;
|
|
4020
4102
|
break;
|
|
4021
4103
|
}
|
|
4022
|
-
key =
|
|
4104
|
+
key = _step2.value;
|
|
4023
4105
|
result[key] = JSON.parse(JSON.stringify(this.objects[key]));
|
|
4024
|
-
|
|
4025
4106
|
// read states values
|
|
4026
|
-
if (!(((_result$key = result[key]) === null || _result$key === void 0 ? void 0 : _result$key.type) === 'state' && !noStatesByExportImport)) {
|
|
4027
|
-
_context5.next =
|
|
4107
|
+
if (!(((_result$key = result[key]) === null || _result$key === void 0 ? void 0 : _result$key.type) === 'state' && !options.noStatesByExportImport)) {
|
|
4108
|
+
_context5.next = 20;
|
|
4028
4109
|
break;
|
|
4029
4110
|
}
|
|
4030
|
-
_context5.next =
|
|
4111
|
+
_context5.next = 18;
|
|
4031
4112
|
return this.props.socket.getState(key);
|
|
4032
|
-
case
|
|
4113
|
+
case 18:
|
|
4033
4114
|
state = _context5.sent;
|
|
4034
4115
|
if (state) {
|
|
4035
4116
|
result[key].val = state.val;
|
|
4036
4117
|
result[key].ack = state.ack;
|
|
4037
4118
|
}
|
|
4038
|
-
case
|
|
4119
|
+
case 20:
|
|
4039
4120
|
// add enum information
|
|
4040
4121
|
if (result[key].common) {
|
|
4041
4122
|
enums = this.getEnumsForId(key);
|
|
@@ -4043,23 +4124,29 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
4043
4124
|
result[key].common.enums = enums;
|
|
4044
4125
|
}
|
|
4045
4126
|
}
|
|
4046
|
-
case 18:
|
|
4047
|
-
i++;
|
|
4048
|
-
_context5.next = 9;
|
|
4049
|
-
break;
|
|
4050
4127
|
case 21:
|
|
4051
|
-
|
|
4052
|
-
|
|
4128
|
+
_context5.next = 12;
|
|
4129
|
+
break;
|
|
4130
|
+
case 23:
|
|
4131
|
+
_context5.next = 28;
|
|
4053
4132
|
break;
|
|
4054
|
-
case 24:
|
|
4055
|
-
window.alert(this.props.t('ra_Save of objects-tree is not possible'));
|
|
4056
4133
|
case 25:
|
|
4134
|
+
_context5.prev = 25;
|
|
4135
|
+
_context5.t0 = _context5["catch"](10);
|
|
4136
|
+
_iterator2.e(_context5.t0);
|
|
4137
|
+
case 28:
|
|
4138
|
+
_context5.prev = 28;
|
|
4139
|
+
_iterator2.f();
|
|
4140
|
+
return _context5.finish(28);
|
|
4141
|
+
case 31:
|
|
4142
|
+
generateFile("".concat(id, ".json"), result, options);
|
|
4143
|
+
case 32:
|
|
4057
4144
|
case "end":
|
|
4058
4145
|
return _context5.stop();
|
|
4059
4146
|
}
|
|
4060
|
-
}, _callee5, this);
|
|
4147
|
+
}, _callee5, this, [[10, 25, 28, 31]]);
|
|
4061
4148
|
}));
|
|
4062
|
-
function _exportObjects(_x5
|
|
4149
|
+
function _exportObjects(_x5) {
|
|
4063
4150
|
return _exportObjects2.apply(this, arguments);
|
|
4064
4151
|
}
|
|
4065
4152
|
return _exportObjects;
|
|
@@ -4073,7 +4160,7 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
4073
4160
|
}
|
|
4074
4161
|
return /*#__PURE__*/_react["default"].createElement(_material.Dialog, {
|
|
4075
4162
|
open: !0
|
|
4076
|
-
}, /*#__PURE__*/_react["default"].createElement(_material.DialogTitle, null, this.props.t('
|
|
4163
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.DialogTitle, null, this.props.t('ra_Select type of export')), /*#__PURE__*/_react["default"].createElement(_material.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_material.DialogContentText, null, this.props.t('ra_You can export all objects or just the selected branch.'), /*#__PURE__*/_react["default"].createElement("br", null), this.props.t('ra_Selected %s object(s)', this.state.showExportDialog), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_material.FormControlLabel, {
|
|
4077
4164
|
control: /*#__PURE__*/_react["default"].createElement(_material.Checkbox, {
|
|
4078
4165
|
checked: this.state.noStatesByExportImport,
|
|
4079
4166
|
onChange: function onChange(e) {
|
|
@@ -4083,6 +4170,36 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
4083
4170
|
}
|
|
4084
4171
|
}),
|
|
4085
4172
|
label: this.props.t('ra_Do not export values of states')
|
|
4173
|
+
}), /*#__PURE__*/_react["default"].createElement("br", null), this.props.t('These options can reduce the size of the export file:'), /*#__PURE__*/_react["default"].createElement(_material.FormControlLabel, {
|
|
4174
|
+
control: /*#__PURE__*/_react["default"].createElement(_material.Checkbox, {
|
|
4175
|
+
checked: this.state.beautifyJsonExport,
|
|
4176
|
+
onChange: function onChange(e) {
|
|
4177
|
+
return _this24.setState({
|
|
4178
|
+
beautifyJsonExport: e.target.checked
|
|
4179
|
+
});
|
|
4180
|
+
}
|
|
4181
|
+
}),
|
|
4182
|
+
label: this.props.t('Beautify JSON output')
|
|
4183
|
+
}), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_material.FormControlLabel, {
|
|
4184
|
+
control: /*#__PURE__*/_react["default"].createElement(_material.Checkbox, {
|
|
4185
|
+
checked: this.state.excludeSystemRepositoriesFromExport,
|
|
4186
|
+
onChange: function onChange(e) {
|
|
4187
|
+
return _this24.setState({
|
|
4188
|
+
excludeSystemRepositoriesFromExport: e.target.checked
|
|
4189
|
+
});
|
|
4190
|
+
}
|
|
4191
|
+
}),
|
|
4192
|
+
label: this.props.t('Exclude system repositories from export JSON')
|
|
4193
|
+
}), /*#__PURE__*/_react["default"].createElement(_material.FormControlLabel, {
|
|
4194
|
+
control: /*#__PURE__*/_react["default"].createElement(_material.Checkbox, {
|
|
4195
|
+
checked: this.state.excludeTranslations,
|
|
4196
|
+
onChange: function onChange(e) {
|
|
4197
|
+
return _this24.setState({
|
|
4198
|
+
excludeTranslations: e.target.checked
|
|
4199
|
+
});
|
|
4200
|
+
}
|
|
4201
|
+
}),
|
|
4202
|
+
label: this.props.t('Exclude translations (except english) from export JSON')
|
|
4086
4203
|
}))), /*#__PURE__*/_react["default"].createElement(_material.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_material.Button, {
|
|
4087
4204
|
color: "grey",
|
|
4088
4205
|
variant: "outlined",
|
|
@@ -4090,7 +4207,13 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
4090
4207
|
return _this24.setState({
|
|
4091
4208
|
showExportDialog: false
|
|
4092
4209
|
}, function () {
|
|
4093
|
-
return _this24._exportObjects(
|
|
4210
|
+
return _this24._exportObjects({
|
|
4211
|
+
isAll: true,
|
|
4212
|
+
noStatesByExportImport: _this24.state.noStatesByExportImport,
|
|
4213
|
+
beautify: _this24.state.beautifyJsonExport,
|
|
4214
|
+
excludeSystemRepositories: _this24.state.excludeSystemRepositoriesFromExport,
|
|
4215
|
+
excludeTranslations: _this24.state.excludeTranslations
|
|
4216
|
+
});
|
|
4094
4217
|
});
|
|
4095
4218
|
}
|
|
4096
4219
|
}, this.props.t('ra_All objects'), ' ', "(", Object.keys(this.objects).length, ")"), /*#__PURE__*/_react["default"].createElement(_material.Button, {
|
|
@@ -4101,7 +4224,13 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
4101
4224
|
return _this24.setState({
|
|
4102
4225
|
showExportDialog: false
|
|
4103
4226
|
}, function () {
|
|
4104
|
-
return _this24._exportObjects(
|
|
4227
|
+
return _this24._exportObjects({
|
|
4228
|
+
isAll: false,
|
|
4229
|
+
noStatesByExportImport: _this24.state.noStatesByExportImport,
|
|
4230
|
+
beautify: _this24.state.beautifyJsonExport,
|
|
4231
|
+
excludeSystemRepositories: _this24.state.excludeSystemRepositoriesFromExport,
|
|
4232
|
+
excludeTranslations: _this24.state.excludeTranslations
|
|
4233
|
+
});
|
|
4105
4234
|
});
|
|
4106
4235
|
}
|
|
4107
4236
|
}, this.props.t('ra_Only selected'), ' ', "(", this.state.showExportDialog, ")"), /*#__PURE__*/_react["default"].createElement(_material.Button, {
|
|
@@ -5839,20 +5968,20 @@ var ObjectBrowser = /*#__PURE__*/function (_Component) {
|
|
|
5839
5968
|
value: function getItemFromRoot(root, id) {
|
|
5840
5969
|
var idArr = id.split('.');
|
|
5841
5970
|
var currId = '';
|
|
5842
|
-
var
|
|
5843
|
-
|
|
5971
|
+
var _iterator3 = _createForOfIteratorHelper(idArr),
|
|
5972
|
+
_step3;
|
|
5844
5973
|
try {
|
|
5845
|
-
for (
|
|
5846
|
-
var idEntry =
|
|
5974
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
5975
|
+
var idEntry = _step3.value;
|
|
5847
5976
|
currId = currId ? "".concat(currId, ".").concat(idEntry) : idEntry;
|
|
5848
5977
|
root = root.children.find(function (item) {
|
|
5849
5978
|
return item.data.id === currId;
|
|
5850
5979
|
});
|
|
5851
5980
|
}
|
|
5852
5981
|
} catch (err) {
|
|
5853
|
-
|
|
5982
|
+
_iterator3.e(err);
|
|
5854
5983
|
} finally {
|
|
5855
|
-
|
|
5984
|
+
_iterator3.f();
|
|
5856
5985
|
}
|
|
5857
5986
|
return root;
|
|
5858
5987
|
}
|