iobroker.admin 6.2.0 → 6.2.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["assets/sentryNo.svg","components/Instances/InstanceInfo.jsx","components/Instances/LinksDialog.jsx","components/Instances/InstanceCard.jsx","components/Instances/InstanceRow.jsx","assets/filter.svg","components/Instances/InstanceFilterDialog.jsx","components/Instances/InstanceCategory.jsx","tabs/Instances.jsx"],"names":[],"mappings":"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,YAAa,CACT,YAAa,QACb,SAAU,IACV,OAAQ,CACJ,WAAY,SACZ,SAAU,SACV,aAAc,UAClB,CACJ,EACA,MAAO,CACH,QAAS,OACT,SAAU,OACV,eAAgB,QACpB,EACA,OAAQ,CACJ,MAAO,GACP,OAAQ,GACR,UAAW,OACX,OAAQ,yFACZ,EACA,WAAY,CACR,QAAS,OACT,MAAO,IACP,WAAY,SACZ,SAAU,SACV,aAAc,UAClB,EACA,YAAa,CACT,QAAS,OACT,MAAO,IACP,WAAY,SACZ,SAAU,SACV,aAAc,UAClB,EACA,YAAa,CACT,QAAS,MACb,EACA,WAAY,CACR,QAAS,MACb,EACA,UAAW,CACP,QAAS,MACb,EACA,WAAY,CACR,QAAS,MACb,EACA,UAAW,CACP,QAAS,MACb,EACA,WAAY,CACR,QAAS,MACb,EACA,wCAAyC,CACrC,WAAY,CACR,QAAS,iBACb,EACA,YAAa,CACT,QAAS,iBACb,CACJ,EACA,wCAAyC,CACrC,WAAY,CACR,QAAS,iBACb,CACJ,EACA,wCAAyC,CACrC,WAAY,CACR,QAAS,iBACb,EACA,YAAa,CACT,QAAS,iBACb,CACJ,EACA,uCAAwC,CACpC,UAAW,CACP,QAAS,iBACb,EACA,WAAY,CACR,QAAS,iBACb,EACA,aAAc,CACV,OAAQ,GACR,MAAO,GACP,WAAY,EACZ,UAAW,CACf,CACJ,EACA,UAAW,CACP,QAAS,MACb,EACA,uCAAwC,CACpC,UAAW,CACP,QAAS,iBACb,EACA,WAAY,CACR,QAAS,iBACb,CACJ,EACA,uCAAwC,CACpC,UAAW,CACP,QAAS,iBACb,EACA,WAAY,CACR,MAAO,kBACP,SAAU,iBACd,CACJ,EACA,uCAAwC,CACpC,UAAW,CACP,SAAU,kBACV,WAAY,EAChB,EACA,WAAY,CACR,MAAO,GACX,EACA,YAAa,CACT,MAAO,kBACX,CACJ,EACA,uCAAwC,CACpC,UAAW,CACP,WAAY,CAChB,CACJ,EACA,YAAa,CACT,QAAS,MACb,EACA,iBAAkB,CACd,SAAU,IACV,SAAU,EACd,EACA,oBAAqB,CACjB,QAAS,OACT,WAAY,SACZ,MAAO,GACX,EACA,uBAAwB,CACpB,WAAY,SACZ,SAAU,SACV,QAAS,EACT,aAAc,WACd,SAAU,GACd,EAWA,YAAa,CACT,MAAO,OACP,aAAc,CAClB,EACA,aAAc,CACV,aAAc,EACd,UAAW,EACX,MAAO,MACX,EACA,UAAW,CACP,QAAS,OACT,SAAU,IACV,WAAY,OACZ,eAAgB,cACpB,EACA,cAAe,CACX,SAAU,GACd,EACA,WAAY,CACR,SAAU,SACV,UAAW,SACX,SAAU,GACV,WAAY,EACZ,SAAU,IACV,SAAU,IACV,WAAY,SACZ,aAAc,WACd,SAAU,CACd,EACA,WAAY,CACR,WAAY,CAChB,EACA,YAAa,CACT,YAAa,CACjB,EACA,YAAa,CACT,QAAS,OACT,OAAQ,EACR,eAAgB,cACpB,EACA,cAAe,CACX,QAAS,OACT,WAAY,UAChB,EACA,aAAc,CACV,MAAO,SACX,EACA,IAAK,CACD,MAAO,SACX,EACA,UAAW,CACP,OAAQ,cACZ,EACA,gBAAiB,CAEjB,EACA,yBAA0B,CACtB,gBAAiB,0BACrB,EACA,yBAA0B,CACtB,gBAAiB,2BACrB,EACA,uBAAwB,CACpB,gBAAiB,qBACrB,EACA,uBAAwB,CACpB,gBAAiB,uBACrB,EACA,gCAAiC,CAC7B,gBAAiB,wBACrB,EACA,gCAAiC,CAC7B,gBAAiB,yBACrB,EACA,gCAAiC,CAC7B,gBAAiB,sBACrB,EACA,gCAAiC,CAC7B,gBAAiB,uBACrB,EACA,YAAa,CACT,MAAO,GACX,EACA,SAAU,CACN,MAAO,GACX,EACA,SAAU,CACN,SAAU,WACV,WAAY,CACR,QAAS,KACT,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,OACP,OAAQ,OACR,OAAQ,IACR,QAAS,gBACT,WAAY,0EAChB,CACJ,EACA,WAAY,CACR,UAAW,CACf,EACA,YAAa,CACT,OAAQ,GACR,MAAO,GACP,UAAW,CACf,EACA,kBAAmB,CACf,UAAW,EACX,aAAc,CAClB,EACA,cAAe,CACX,aAAc,GACd,WAAY,EACZ,cAAe,EACf,YAAa,CACjB,EACA,YAAa,CACT,UAAW,EACf,E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","file":"static/js/7397.acb3d9d7.chunk.js","sourcesContent":["var _path, _line, _line2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSentryNo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 256,\n height: 230,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.22 187.856c5.785 10.045 6.345 20.608 1.538 28.958-4.8 8.357-14.192 13.143-25.768 13.143h-21.816c.259-4.068.431-8.17.431-12.302 0-4.628-.215-9.198-.531-13.754l14.35-.014c3.528 0 6.38-2.867 6.38-6.403a6.46 6.46 0 0 0-.768-3.053l-91.46-158.97a6.349 6.349 0 0 0-5.54-3.24 6.374 6.374 0 0 0-5.461 3.09l-14.522 25.243c44.134 33.27 73.804 84.813 77.864 143.333.316 4.548.531 9.119.531 13.753 0 4.132-.172 8.228-.424 12.302h-71.246c.388-4.053.611-8.148.611-12.302 0-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003 17.376c17.54 16.325 29.512 38.558 32.767 63.514.59 4.505.92 9.09.92 13.753 0 4.154-.273 8.264-.74 12.302H29.01c-11.576 0-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905 1.538-28.958l13.56-23.238a79.42 79.42 0 0 1 20.715 16.052l-8.083 13.768a6.523 6.523 0 0 0-.77 3.054 6.383 6.383 0 0 0 6.382 6.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427 151.427 0 0 1 21.564 14.624c30.827 25.013 51.644 61.955 55.416 103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205 171.205 0 0 0-21.672-14.457l30.532-53.045C109.583 5.77 118.42 0 128.036 0c9.607 0 18.438 5.77 24.223 15.823l98.961 172.033z\",\n fill: \"#FB2D26\"\n })), _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 33,\n y2: 223,\n x2: 250.40002,\n y1: 8,\n x1: 6.40002,\n stroke: \"#FB2D26\",\n fill: \"none\"\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 32,\n y2: 224,\n x2: 8.40002,\n y1: 7,\n x1: 247.40002,\n stroke: \"#FB2D26\",\n fill: \"none\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSentryNo);\nexport default __webpack_public_path__ + \"static/media/sentryNo.40627b40a3bc6107ca445e9a6cec8601.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport {\n Grid,\n Tooltip,\n Typography\n} from '@mui/material';\nconst styles = theme => ({\n nowrap:{\n flexFlow: 'nowrap',\n overflow: 'hidden'\n },\n width:{\n width:'100%',\n overflow: 'hidden'\n\n }\n})\nconst InstanceInfo = props => {\n return <Grid\n item\n container\n title={props.icon ? '' : props.tooltip || ''}\n alignItems=\"center\"\n direction=\"row\"\n spacing={ 1 }\n className={props.classes.nowrap}\n >\n <Grid item>\n { props.icon &&\n <Tooltip title={ props.tooltip || '' }>\n { props.icon }\n </Tooltip>\n }\n </Grid>\n <Grid \n className={props.classes.width}\n item>\n <Tooltip title={ props.tooltip || '' }>\n <Typography component=\"div\">\n { props.children }\n </Typography>\n </Tooltip>\n </Grid>\n </Grid>;\n}\n\nInstanceInfo.propTypes = {\n children: PropTypes.node,\n icon: PropTypes.node,\n tooltip: PropTypes.string\n};\n\nexport default withStyles(styles)(InstanceInfo);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\nimport Avatar from '@mui/material/Avatar';\n\nimport Utils from '../Utils';\n\nconst styles = theme => ({\n img: {\n width: '100%',\n height: '100%',\n }\n});\n\nclass LinksDialog extends Component {\n render() {\n if (!this.props.links || !this.props.links.length) {\n return null;\n }\n const firstPort = this.props.links[0].port;\n const showPort = this.props.links.find(item => item.port !== firstPort);\n\n return <Dialog onClose={() => this.props.onClose()} open={true}>\n <DialogTitle>{this.props.t('Links')}</DialogTitle>\n <List>\n {this.props.links.map(link => <ListItemButton\n style={link.color ? {\n backgroundColor: link.color,\n color: Utils.getInvertedColor(link.color, this.props.themeType, true)\n } : {}}\n onClick={e => {\n e.stopPropagation();\n // replace IPv6 Address with [ipv6]:port\n let url = link.link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n window.open(url, this.props.instanceId);\n this.props.onClose();\n }}\n key={link.name}\n >\n <ListItemAvatar>\n <Avatar variant=\"rounded\">\n <img className={this.props.classes.img} src={this.props.image} alt={this.props.instanceId}/>\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary={link.name + (showPort ? ` [:${link.port}]` : '')} />\n </ListItemButton>)}\n </List>\n </Dialog>;\n }\n}\n\nLinksDialog.propTypes = {\n links: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n t: PropTypes.func.isRequired,\n instanceId: PropTypes.string.isRequired,\n image: PropTypes.string,\n themeType: PropTypes.string,\n};\n\nexport default withStyles(styles)(LinksDialog);","import React, { memo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport clsx from 'clsx';\n\nimport {\n Button,\n Card,\n CardContent,\n CardMedia, Checkbox,\n Fab,\n FormControl,\n FormControlLabel, FormHelperText,\n Hidden,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Tooltip,\n Typography\n} from '@mui/material';\n\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport BuildIcon from '@mui/icons-material/Build';\nimport InputIcon from '@mui/icons-material/Input';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LowPriorityIcon from '@mui/icons-material/LowPriority';\nimport MemoryIcon from '@mui/icons-material/Memory';\nimport ScheduleIcon from '@mui/icons-material/Schedule';\nimport ViewCompactIcon from '@mui/icons-material/ViewCompact';\nimport EditIcon from '@mui/icons-material/Edit';\nimport PauseIcon from '@mui/icons-material/Pause';\nimport PlayArrowIcon from '@mui/icons-material/PlayArrow';\nimport ImportExportIcon from '@mui/icons-material/ImportExport';\nimport HostIcon from '@mui/icons-material/Storage';\n\nimport { green, red } from '@mui/material/colors';\n\nimport ComplexCron from '@iobroker/adapter-react-v5/Dialogs/ComplexCron';\nimport I18n from '@iobroker/adapter-react-v5/i18n';\nimport ConfirmDialog from '@iobroker/adapter-react-v5/Dialogs/Confirm';\nimport TextWithIcon from '@iobroker/adapter-react-v5/Components/TextWithIcon';\nimport SelectWithIcon from '@iobroker/adapter-react-v5/Components/SelectWithIcon';\n\nimport sentry from '../../assets/sentry.svg';\nimport noSentry from '../../assets/sentryNo.svg';\nimport InstanceInfo from './InstanceInfo';\nimport State from '../State';\nimport CustomModal from '../CustomModal';\nimport LinksDialog from './LinksDialog';\nimport IsVisible from '../IsVisible';\n\nconst boxShadow = '0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)';\nconst boxShadowHover = '0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)';\n\nconst styles = theme => ({\n root: {\n position: 'relative',\n margin: 10,\n width: 300,\n minHeight: 200,\n background: theme.palette.background.default,\n boxShadow,\n display: 'flex',\n flexDirection: 'column',\n transition: 'box-shadow 0.5s',\n '&:hover': {\n boxShadow: boxShadowHover\n }\n },\n imageBlock: {\n background: 'silver',\n minHeight: 60,\n display: 'flex',\n padding: '0 10px 0 10px',\n position: 'relative',\n justifyContent: 'space-between',\n transition: 'background 0.5s',\n },\n img: {\n width: 45,\n height: 45,\n margin: 'auto 0',\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n zIndex: 2,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: 'url(\"img/no-image.png\") 100% 100% no-repeat',\n backgroundSize: 'cover',\n backgroundColor: '#fff',\n }\n },\n installed: {\n background: '#77c7ff8c'\n },\n /*update: {\n background: '#10ff006b'\n },*/\n fab: {\n position: 'absolute',\n bottom: -20,\n width: 40,\n height: 40,\n right: 20,\n },\n greenText: {\n color: theme.palette.success.dark,\n },\n\n collapse: {\n height: '100%',\n backgroundColor: theme.palette.mode === 'dark' ? '#4a4a4a' : '#d4d4d4',\n position: 'absolute',\n width: '100%',\n zIndex: 3,\n marginTop: 'auto',\n bottom: 0,\n transition: 'height 0.3s',\n justifyContent: 'space-between',\n display: 'flex',\n flexDirection: 'column'\n },\n collapseOff: {\n height: 0\n },\n close: {\n width: '20px',\n height: '20px',\n opacity: '0.9',\n cursor: 'pointer',\n position: 'relative',\n marginLeft: 'auto',\n marginBottom: 10,\n transition: 'all 0.6s ease',\n '&:hover': {\n transform: 'rotate(90deg)'\n },\n '&:before': {\n position: 'absolute',\n left: '9px',\n content: '\"\"',\n height: '20px',\n width: '3px',\n backgroundColor: '#ff4f4f',\n transform: 'rotate(45deg)'\n },\n '&:after': {\n position: 'absolute',\n left: '9px',\n content: '\"\"',\n height: '20px',\n width: '3px',\n backgroundColor: '#ff4f4f',\n transform: 'rotate(-45deg)'\n },\n },\n footerBlock: {\n background: theme.palette.background.default,\n padding: 10,\n display: 'flex',\n justifyContent: 'space-between'\n },\n hidden: {\n display: 'none'\n },\n buttonUpdate: {\n border: '1px solid',\n padding: '0px 7px',\n borderRadius: 5,\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n transition: 'background 0.5s',\n '&:hover': {\n background: '#00800026'\n }\n },\n versionDate: {\n alignSelf: 'center'\n },\n adapter: {\n width: '100%',\n fontWeight: 'bold',\n fontSize: 16,\n verticalAlign: 'middle',\n paddingLeft: 8,\n paddingTop: 16,\n color: theme.palette.mode === 'dark' ? '#333' : '#555'\n },\n hide: {\n visibility: 'hidden'\n },\n button: {\n padding: '5px',\n transition: 'opacity 0.2s',\n height: 34,\n },\n hiddenOpacity: {\n opacity: 0,\n cursor: 'default',\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200]\n }\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200]\n }\n },\n cardContent: {\n marginTop: 16,\n paddingTop: 0\n },\n sentry: {\n width: 24,\n height: 24,\n objectFit: 'fill',\n filter: 'invert(0%) sepia(90%) saturate(1267%) hue-rotate(-260deg) brightness(99%) contrast(97%)'\n },\n cardContentH5: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between'\n },\n marginTop10: {\n marginTop: 10\n },\n memoryIcon: {\n color: '#dc8e00',\n },\n displayFlex: {\n display: 'flex',\n },\n logLevel: {\n width: '100%',\n marginBottom: 5\n },\n hostInfo: {\n width: '100%'\n },\n overflowAuto: {\n overflow: 'auto'\n },\n collapseIcon: {\n position: 'sticky',\n right: 0,\n top: 0,\n background: theme.palette.mode === 'dark' ? '#4a4a4a' : '#d4d4d4',\n zIndex: 2\n },\n addCompact: {\n width: '100%',\n marginBottom: 5\n },\n addCompactButton: {\n display: 'flex',\n margin: 5,\n justifyContent: 'space-around'\n },\n scheduleIcon: {\n color: '#dc8e00'\n },\n marginRight5: {\n marginRight: 5\n },\n marginLeft5: {\n marginLeft: 5\n },\n enableButton: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n instanceStateNotAlive1: {\n backgroundColor: 'rgba(192, 192, 192, 0.7)'\n },\n /*instanceStateNotAlive2: {\n backgroundColor: 'rgb(192 192 192 / 15%)'\n },*/\n instanceStateAliveNotConnected1: {\n backgroundColor: 'rgba(255, 177, 0, 0.4)'\n },\n /*instanceStateAliveNotConnected2: {\n backgroundColor: 'rgb(255 177 0 / 14%)'\n },*/\n instanceStateAliveAndConnected1: {\n backgroundColor: 'rgba(0, 255, 0, 0.4)'\n },\n instanceName: {\n fontSize: 16,\n padding: 4,\n paddingBottom: 15,\n fontWeight: 'bold'\n },\n deleting: {\n position: 'relative',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 100,\n opacity: '.3 !important',\n background: 'repeating-linear-gradient(135deg, #333, #333 10px, #888 10px, #888 20px)',\n }\n },\n tooltip: {\n pointerEvents: 'none',\n },\n /*instanceStateAliveAndConnected2: {\n backgroundColor: 'rgb(0 255 0 / 14%)'\n }*/\n});\n\nconst arrayLogLevel = ['silly', 'debug', 'info', 'warn', 'error'];\nconst arrayTier = [{ value: 1, desc: '1: Logic adapters' }, { value: 2, desc: '2: Data provider adapters' }, { value: 3, desc: '3: Other adapters' }];\n\nconst InstanceCard = memo(({\n adminInstance,\n classes,\n maxCompactGroupNumber,\n onDeleteInstance,\n deleteCustomSupported,\n expertMode,\n extendObject,\n getMemory,\n getRestartSchedule,\n getSchedule,\n hidden,\n hosts,\n id,\n instance,\n key,\n lang,\n openConfig,\n setCompact,\n setCompactGroup,\n setHost,\n setLogLevel,\n setMemoryLimitMB,\n setName,\n setRestartSchedule,\n setSchedule,\n setSentry,\n setTier,\n t,\n themeType,\n deleting,\n item,\n}) => {\n const [mouseOver, setMouseOver] = useState(false);\n\n const [openCollapse, setCollapse] = useState(false);\n const [openSelectCompactGroup, setOpenSelectCompactGroup] = useState(false);\n const [openDialogCron, setOpenDialogCron] = useState(false);\n const [openDialogSchedule, setOpenDialogSchedule] = useState(false);\n const [openDialogText, setOpenDialogText] = useState(false);\n const [openDialogLogLevel, setOpenDialogLogLevel] = useState(false);\n const [openDialogDelete, setOpenDialogDelete] = useState(false);\n const [openDialogMemoryLimit, setOpenDialogMemoryLimit] = useState(false);\n const [openDialogHost, setOpenDialogHost] = useState(false);\n const [openDialogCompact, setOpenDialogCompact] = useState(false);\n const [openDialogTier, setOpenDialogTier] = useState(false);\n\n const [showLinks, setShowLinks] = useState(false);\n const [showStopAdminDialog, setShowStopAdminDialog] = useState(false);\n\n const [logLevelValue, setLogLevelValue] = useState(item.logLevel);\n const [logOnTheFlyValue, setLogOnTheFlyValue] = useState(false);\n const [compactValue, setCompactValue] = useState(item.compactGroup || 0);\n const [maxCompactGroupNumberValue, setCompactGroupCountValue] = useState(maxCompactGroupNumber);\n const [tierValue, setTierValue] = useState(item.tier);\n const [hostValue, setHostValue] = useState(instance.host);\n const [deleteCustomValue, setDeleteCustom] = useState(false);\n\n const [visibleEdit, handlerEdit] = useState(false);\n\n let showModal = false;\n let title;\n let help = '';\n if (openDialogText) {\n title = t('Enter title for %s', instance.id);\n showModal = true;\n } else if (openDialogLogLevel) {\n title = t('Edit log level rule for %s', instance.id);\n showModal = true;\n } else if (openDialogDelete) {\n title = t('Please confirm');\n showModal = true;\n } else if (openDialogMemoryLimit) {\n title = t('Edit memory limit rule for %s', instance.id);\n help = t('Default V8 has a memory limit of 512mb on 32-bit systems, and 1gb on 64-bit systems. The limit can be raised by setting --max-old-space-size to a maximum of ~1gb (32-bit) and ~1.7gb (64-bit)');\n showModal = true;\n } else if (openDialogHost) {\n title = t('Edit host for %s', instance.id);\n showModal = true;\n } else if (openDialogCompact) {\n title = t('Edit compact groups for %s', instance.id);\n showModal = true;\n } else if (openDialogTier) {\n title = t('Set tier for %s', instance.id);\n help = t('Tiers define the order of adapters when the system starts.');\n showModal = true;\n }\n\n const customModal = showModal ? <CustomModal\n title={title}\n help={help}\n open={true}\n applyDisabled={openDialogText || openDialogMemoryLimit}\n textInput={openDialogText || openDialogMemoryLimit}\n defaultValue={openDialogText ? item.name : openDialogMemoryLimit ? item.memoryLimitMB : ''}\n onApply={value => {\n if (openDialogLogLevel) {\n setLogLevel(instance, logLevelValue, logOnTheFlyValue);\n setOpenDialogLogLevel(false);\n } else if (openDialogText) {\n setName(instance, value);\n setOpenDialogText(false);\n } else if (openDialogDelete) {\n setOpenDialogDelete(false);\n onDeleteInstance(instance, deleteCustomValue);\n setDeleteCustom(false);\n } else if (openDialogMemoryLimit) {\n setMemoryLimitMB(instance, value)\n setOpenDialogMemoryLimit(false);\n } else if (openDialogCompact) {\n setCompactGroup(instance, compactValue);\n setOpenDialogCompact(false);\n } else if (openDialogTier) {\n setTier(instance, tierValue);\n setOpenDialogTier(false);\n } else if (openDialogHost) {\n setHost(instance, hostValue);\n setOpenDialogHost(false);\n }\n }}\n onClose={() => {\n if (openDialogLogLevel) {\n setLogLevelValue(item.logLevel);\n setLogOnTheFlyValue(false);\n setOpenDialogLogLevel(false);\n } else if (openDialogText) {\n setOpenDialogText(false);\n } else if (openDialogDelete) {\n setOpenDialogDelete(false);\n } else if (openDialogMemoryLimit) {\n setOpenDialogMemoryLimit(false);\n } else if (openDialogCompact) {\n setCompactValue(item.compactGroup);\n setCompactGroupCountValue(maxCompactGroupNumber);\n setOpenDialogCompact(false);\n } else if (openDialogTier) {\n setTierValue(item.tier);\n setOpenDialogTier(false);\n } else if (openDialogHost) {\n setHostValue(instance.host);\n setOpenDialogHost(false);\n }\n }}\n >\n {openDialogLogLevel && <FormControl className={classes.logLevel} variant=\"outlined\" >\n <InputLabel>{t('log level')}</InputLabel>\n <Select\n variant=\"standard\"\n value={logLevelValue}\n fullWidth\n onChange={el => setLogLevelValue(el.target.value)}\n >\n {arrayLogLevel.map(el => <MenuItem key={el} value={el}>\n {t(el)}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogLogLevel && <FormControl className={classes.formControl} variant=\"outlined\" >\n <FormControlLabel\n control={<Checkbox checked={logOnTheFlyValue} onChange={e => setLogOnTheFlyValue(e.target.checked)} />}\n label={t('Without restart')}\n />\n <FormHelperText>{logOnTheFlyValue ? t('Will be reset to the saved log level after restart of adapter') : t('Log level will be saved permanently')}</FormHelperText>\n </FormControl>}\n {openDialogCompact && <FormControl className={classes.addCompact} variant=\"outlined\" >\n <InputLabel>{t('compact groups')}</InputLabel>\n <Select\n variant=\"standard\"\n autoWidth\n onClose={e => setOpenSelectCompactGroup(false)}\n onOpen={e => setOpenSelectCompactGroup(true)}\n open={openSelectCompactGroup}\n value={compactValue === 1 ? 'default' : compactValue === '0' ? \"controller\" : !compactValue ? 'default' : compactValue || 'default'}\n onChange={el => setCompactValue(el.target.value)}\n >\n <div onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n className={classes.selectStyle}>\n <Button color=\"grey\" onClick={() => {\n setOpenSelectCompactGroup(false);\n setCompactValue(maxCompactGroupNumberValue + 1);\n setCompactGroupCountValue(maxCompactGroupNumberValue + 1);\n }} variant=\"outlined\" stylevariable='outlined'>{t('Add compact group')}</Button>\n </div>\n <MenuItem value=\"controller\">\n {t('with controller')}\n </MenuItem>\n <MenuItem value=\"default\">\n {t('default group')}\n </MenuItem>\n {Array(maxCompactGroupNumberValue - 1).fill().map((_, idx) => <MenuItem key={idx} value={idx + 2}>\n {idx + 2}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogTier && <FormControl className={classes.logLevel} variant=\"outlined\" >\n <InputLabel>{t('Tiers')}</InputLabel>\n <Select\n variant=\"standard\"\n value={tierValue}\n fullWidth\n onChange={el => setTierValue(el.target.value)}\n >\n {arrayTier.map(el => <MenuItem key={el.value} value={el.value}>\n {t(el.desc)}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogDelete && t('Are you sure you want to delete the instance %s?', instance.id)}\n {openDialogDelete && deleteCustomSupported && instance.obj.common.supportCustoms && <br />}\n {openDialogDelete && deleteCustomSupported && instance.obj.common.supportCustoms && <FormControlLabel\n control={<Checkbox checked={deleteCustomValue} onChange={e => setDeleteCustom(e.target.checked)} />}\n label={t('Delete all custom object settings of this adapter too')}\n />}\n {openDialogHost && <SelectWithIcon\n themeType={themeType}\n value={hostValue}\n list={hosts}\n removePrefix=\"system.host.\"\n fullWidth\n className={classes.hostInfo}\n onChange={el => setHostValue(el)}\n />}\n </CustomModal>\n : null;\n\n const stopAdminDialog = showStopAdminDialog ? <ConfirmDialog\n title={t('Please confirm')}\n text={t('stop_admin', adminInstance)}\n ok={t('Stop admin')}\n onClose={result => {\n result && extendObject(showStopAdminDialog, { common: { enabled: false } });\n setShowStopAdminDialog(false);\n }}\n /> : null;\n\n const secondCardInfo = (openCollapse || mouseOver) && !deleting ?\n <div className={clsx(classes.collapse, !openCollapse ? classes.collapseOff : '', deleting && classes.deleting)}>\n <CardContent classes={{ root: classes.cardContent }} className={classes.overflowAuto}>\n <div className={classes.collapseIcon}>\n <div className={classes.close} onClick={() => setCollapse(false)} />\n </div>\n <Typography gutterBottom component={'span'} variant={'body2'}>\n <span className={classes.instanceName}>{instance.id}</span>\n {item.stoppedWhenWebExtension !== undefined && <State state={item.stoppedWhenWebExtension} >{t('Runs as web-extension')}</State>}\n {item.running && instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined && <State state={item.connectedToHost} >{t('Connected to host')}</State>}\n {item.running && instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined && <State state={item.alive} >{t('Heartbeat')}</State>}\n {item.running && item.connected !== null && item.stoppedWhenWebExtension === undefined &&\n <State state={!!item.connected}>\n {typeof item.connected === 'string' ? `${t('Connected:')} ${item.connected || '-'}` : t('Connected to device or service')}\n </State>\n }\n\n <InstanceInfo tooltip={t('Installed')}>\n v{instance.version}\n </InstanceInfo>\n\n {item.running && <InstanceInfo icon={<MemoryIcon />} tooltip={t('RAM usage')}>\n {(instance.mode === 'daemon' && item.running ? getMemory(id) : '-.--') + ' MB'}\n </InstanceInfo>}\n\n {item.running && expertMode &&\n <div className={classes.displayFlex}>\n <InstanceInfo icon={<ImportExportIcon />} tooltip={t('events')}>\n <div className={classes.displayFlex}>\n <Tooltip title={t('input events')}>\n <div className={classes.marginRight5}>⇥{item.inputOutput.stateInput}</div>\n </Tooltip>\n /\n <Tooltip title={t('output events')}>\n <div className={classes.marginLeft5}>↦{item.inputOutput.stateOutput}</div>\n </Tooltip>\n </div>\n </InstanceInfo>\n </div>\n }\n\n {expertMode && <div className={classes.displayFlex}>\n <InstanceInfo\n icon={<MemoryIcon className={classes.memoryIcon} />}\n tooltip={t('RAM limit')}\n >\n {(item.memoryLimitMB ? item.memoryLimitMB : '-.--') + ' MB'}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setOpenDialogMemoryLimit(true)}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n\n {expertMode && <div className={classes.displayFlex}>\n <InstanceInfo icon={item.loglevelIcon} tooltip={item.logLevelObject === item.logLevel ? `${t('loglevel')} ${item.logLevel}` : `${t('saved:')} ${item.logLevelObject} / ${t('actual:')} ${item.logLevel}`}>\n {item.logLevelObject === item.logLevel ? item.logLevel : `${item.logLevelObject} / ${item.logLevel}`}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setOpenDialogLogLevel(true)}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n\n {item.modeSchedule && <div className={classes.displayFlex}>\n <InstanceInfo icon={<ScheduleIcon />} tooltip={t('schedule_group')}>\n {getSchedule(id) || '-'}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setOpenDialogSchedule(true)}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n\n {expertMode && (instance.mode === 'daemon') &&\n <div className={classes.displayFlex}>\n <InstanceInfo\n icon={<ScheduleIcon className={classes.scheduleIcon} />}\n tooltip={t('restart')}\n >\n {getRestartSchedule(id) || '-'}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setOpenDialogCron(true)}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n }\n\n {expertMode && item.checkCompact && item.compact && item.supportCompact &&\n <div className={classes.displayFlex}>\n <InstanceInfo icon={<ViewCompactIcon className={classes.marginRight} color=\"inherit\" />} tooltip={t('compact groups')}>\n {item.compactGroup === 1 ? 'default' : item.compactGroup === '0' ? \"controller\" : !item.compactGroup ? 'default' : item.compactGroup || 'default'}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={e => {\n setOpenDialogCompact(true);\n e.stopPropagation();\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n\n {expertMode && <div className={classes.displayFlex}>\n <InstanceInfo icon={<LowPriorityIcon className={classes.marginRight} color=\"inherit\" />} tooltip={t('Start order (tier)')}>\n {instance.adapter === 'admin' ? t('Always first') : t(arrayTier.find(el => el.value === item.tier)?.desc || arrayTier[2])}\n </InstanceInfo>\n {instance.adapter !== 'admin' ? <Tooltip title={t('Edit start order (tier)')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={e => {\n setOpenDialogTier(true);\n e.stopPropagation();\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip> : null}\n </div>}\n\n {hosts.length > 1 || (hosts.length && hosts[0].common?.name !== instance.host) ? <div className={clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={<HostIcon className={classes.marginRight} />} tooltip={t('Host for this instance')}>\n {<TextWithIcon value={instance.host} list={hosts} removePrefix=\"system.host.\" themeType={themeType} t={t} lang={lang}/>}\n </InstanceInfo>\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n setOpenDialogHost(true);\n event.stopPropagation();\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div> : null}\n\n <IsVisible config={item} name=\"allowInstanceSettings\">\n <Hidden smUp>\n <IconButton\n disabled={!instance.config}\n size=\"small\"\n className={clsx(classes.button, !instance.config && classes.hiddenOpacity)}\n onClick={() => openConfig(id)}\n >\n <BuildIcon />\n </IconButton>\n </Hidden>\n </IsVisible>\n </Typography>\n </CardContent>\n\n <div className={classes.footerBlock}>\n <IsVisible config={item} name=\"allowInstanceDelete\">\n <div className={classes.displayFlex}>\n <Tooltip title={t('Delete')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setOpenDialogDelete(true)}\n >\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n </div>\n </IsVisible>\n\n {expertMode && item.checkSentry && <div className={classes.displayFlex}>\n <Tooltip title=\"sentry\">\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setSentry(instance)}\n >\n <CardMedia\n className={clsx(classes.sentry, !item.sentry && classes.contrast0)}\n component=\"img\"\n image={item.sentry ? sentry : noSentry}\n />\n </IconButton>\n </Tooltip>\n </div>}\n\n {item.supportCompact && expertMode && item.checkCompact && <div className={classes.displayFlex}>\n <Tooltip title={t('compact groups')}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => setCompact(instance)}\n >\n <ViewCompactIcon color={!!item.compact ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n </div>}\n </div>\n </div> : null;\n\n const linksDialog = showLinks ? <LinksDialog\n image={instance.image}\n instanceId={instance.id}\n links={instance.links}\n onClose={() => setShowLinks(false)}\n t={t}\n themeType={themeType}\n /> : null;\n\n const cronDialog = (openDialogCron || openDialogSchedule) &&\n <ComplexCron\n title={\n (openDialogCron && t('Edit restart rule for %s', instance.id)) ||\n (openDialogSchedule && t('Edit schedule rule for %s', instance.id))\n }\n clearButton={true}\n cron={openDialogCron ? getRestartSchedule(id) : getSchedule(id)}\n language={I18n.getLanguage()}\n onOk={cron => {\n if (openDialogCron) {\n setRestartSchedule(instance, cron);\n } else if (openDialogSchedule) {\n setSchedule(instance, cron);\n }\n }}\n onClose={() => {\n if (openDialogCron) {\n setOpenDialogCron(false);\n } else if (openDialogSchedule) {\n setOpenDialogSchedule(false);\n }\n }}\n />;\n\n return <Card key={key} className={clsx(classes.root, hidden ? classes.hidden : '')}>\n {customModal}\n {stopAdminDialog}\n {cronDialog}\n {secondCardInfo}\n {linksDialog}\n\n <div className={clsx(\n classes.imageBlock,\n (!item.connectedToHost || !item.alive) && classes.instanceStateNotAlive1,\n item.connectedToHost && item.alive && item.connected === false && classes.instanceStateAliveNotConnected1,\n item.connectedToHost && item.alive && item.connected !== false && classes.instanceStateAliveAndConnected1\n )}>\n <CardMedia className={classes.img} component=\"img\" image={instance.image || 'img/no-image.png'} />\n <div className={classes.adapter}>{instance.id}</div>\n <div className={classes.versionDate}>\n {/* {expertMode && item.checkCompact && <Tooltip title={t('compact groups')}>\n <ViewCompactIcon color=\"action\" style={{ margin: 10 }} />\n </Tooltip>} */}\n </div>\n <Fab\n onMouseOver={() => setMouseOver(true)}\n onMouseOut={() => setMouseOver(false)}\n onClick={() => setCollapse(true)}\n className={classes.fab}\n color=\"primary\"\n aria-label=\"add\"\n >\n <MoreVertIcon />\n </Fab>\n </div>\n\n <CardContent className={classes.cardContentH5}>\n <Typography gutterBottom variant=\"h5\" component=\"h5\">\n <div\n onMouseMove={() => handlerEdit(true)}\n onMouseEnter={() => handlerEdit(true)}\n onMouseLeave={() => handlerEdit(false)}\n className={classes.displayFlex}>\n {item.name}\n <Tooltip title={t('Edit')}>\n <IconButton\n size=\"small\"\n className={clsx(classes.button, !visibleEdit && classes.hiddenOpacity)}\n onClick={() => setOpenDialogText(true)}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n </Typography>\n\n <div className={classes.marginTop10}>\n <Typography component={'span'} className={classes.enableButton}>\n <Tooltip title={t('Start/stop')}>\n <div><IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n if (!item.running || instance.id !== adminInstance) {\n extendObject('system.adapter.' + instance.id, { common: { enabled: !item.running } });\n }\n }}\n onFocus={event => event.stopPropagation()}\n className={clsx(classes.button, instance.canStart ? (item.running ? classes.enabled : classes.disabled) : classes.hide)}\n >\n {item.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </div>\n </Tooltip>\n <Hidden xsDown>\n <Tooltip title={instance.config ? t('Settings') : ''}>\n <div>\n <IconButton\n disabled={!instance.config}\n size=\"small\"\n className={clsx(classes.button, !instance.config && classes.hiddenOpacity)}\n onClick={() => openConfig(id)}\n >\n <BuildIcon />\n </IconButton>\n </div>\n </Tooltip>\n </Hidden>\n <Tooltip title={t('Restart')}>\n <div>\n <IconButton\n size=\"small\"\n onClick={event => {\n extendObject('system.adapter.' + instance.id, {});\n event.stopPropagation();\n }}\n onFocus={event => event.stopPropagation()}\n className={clsx(classes.button, !instance.canStart && classes.hide)}\n disabled={!item.running}\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n <IsVisible config={item} name=\"allowInstanceLink\">\n <Tooltip title={t('Instance link %s', instance.id)}>\n <div>\n <IconButton\n size=\"small\"\n className={clsx(classes.button, (!instance.links || !instance.links[0]) && classes.hide)}\n disabled={!item.running}\n onClick={event => {\n event.stopPropagation()\n if (instance.links.length === 1) {\n // replace http://fe80::ed18:8dyy:f65:cexx:8087/get/ with http://[fe80::ed18:8dyy:f65:cexx]:8087/get/\n let url = instance.links[0].link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//$1$2/');\n window.open(url, instance.id);\n } else {\n setShowLinks(true);\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n </IsVisible>\n </Typography>\n </div>\n </CardContent>\n </Card>\n})\n\nInstanceCard.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n themeType: PropTypes.string,\n adminInstance: PropTypes.string,\n hosts: PropTypes.array,\n setHost: PropTypes.func,\n deleting: PropTypes.bool,\n item: PropTypes.object,\n deleteCustomSupported: PropTypes.bool,\n};\n\nexport default withStyles(styles)(InstanceCard);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport parser from 'cron-parser';\nimport cronstrue from 'cronstrue';\n\nimport 'cronstrue/locales/en';\nimport 'cronstrue/locales/de';\nimport 'cronstrue/locales/es';\nimport 'cronstrue/locales/fr';\nimport 'cronstrue/locales/it';\nimport 'cronstrue/locales/nl';\nimport 'cronstrue/locales/pl';\nimport 'cronstrue/locales/pt_BR';\nimport 'cronstrue/locales/ru';\nimport 'cronstrue/locales/zh_CN';\n\nimport {\n Accordion, AccordionDetails, AccordionSummary, Avatar,\n Button, CardMedia, FormControl, Grid, Hidden, IconButton,\n InputLabel, MenuItem, Select, Tooltip, Typography,\n FormControlLabel, Checkbox, FormHelperText\n} from '@mui/material';\nimport { amber, blue, green, grey, red, orange } from '@mui/material/colors';\n\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport BuildIcon from '@mui/icons-material/Build';\nimport InputIcon from '@mui/icons-material/Input';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LowPriorityIcon from '@mui/icons-material/LowPriority';\nimport HostIcon from '@mui/icons-material/Storage';\nimport MemoryIcon from '@mui/icons-material/Memory';\nimport ScheduleIcon from '@mui/icons-material/Schedule';\nimport ViewCompactIcon from '@mui/icons-material/ViewCompact';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport sentry from '../../assets/sentry.svg';\nimport noSentry from '../../assets/sentryNo.svg';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ImportExportIcon from '@mui/icons-material/ImportExport';\nimport PauseIcon from '@mui/icons-material/Pause';\nimport PlayArrowIcon from '@mui/icons-material/PlayArrow';\n\nimport I18n from '@iobroker/adapter-react-v5/i18n';\nimport ComplexCron from '@iobroker/adapter-react-v5/Dialogs/ComplexCron';\nimport ConfirmDialog from '@iobroker/adapter-react-v5/Dialogs/Confirm';\nimport TextWithIcon from '@iobroker/adapter-react-v5/Components/TextWithIcon';\nimport SelectWithIcon from '@iobroker/adapter-react-v5/Components/SelectWithIcon';\nimport Utils from '@iobroker/adapter-react-v5/Components/Utils';\n\nimport InstanceInfo from './InstanceInfo';\nimport State from '../State';\nimport CustomModal from '../CustomModal';\nimport LinksDialog from './LinksDialog';\nimport IsVisible from '../IsVisible';\n\nconst boxShadow = '0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)';\nconst boxShadowHover = '0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)';\n\nconst styles = theme => ({\n root: {\n position: 'relative',\n margin: 10,\n width: 300,\n minHeight: 200,\n background: theme.palette.background.default,\n boxShadow,\n display: 'flex',\n flexDirection: 'column',\n transition: 'box-shadow 0.5s',\n '&:hover': {\n boxShadow: boxShadowHover\n }\n },\n row: {\n paddingLeft: 8,\n paddingRight: 16,\n padding: 0\n },\n imageBlock: {\n background: 'silver',\n minHeight: 60,\n display: 'flex',\n padding: '0 10px 0 10px',\n position: 'relative',\n justifyContent: 'space-between',\n transition: 'background 0.5s',\n },\n img: {\n width: 45,\n height: 45,\n margin: 'auto 0',\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n zIndex: 2,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: 'url(\"img/no-image.png\") 100% 100% no-repeat',\n backgroundSize: 'cover',\n backgroundColor: '#fff',\n }\n },\n installed: {\n background: '#77c7ff8c'\n },\n update: {\n background: '#10ff006b'\n },\n fab: {\n position: 'absolute',\n bottom: -20,\n width: 40,\n height: 40,\n right: 20,\n },\n greenText: {\n color: theme.palette.success.dark,\n },\n\n collapse: {\n height: '100%',\n backgroundColor: 'silver',\n position: 'absolute',\n width: '100%',\n zIndex: 3,\n marginTop: 'auto',\n bottom: 0,\n transition: 'height 0.3s',\n justifyContent: 'space-between',\n display: 'flex',\n flexDirection: 'column'\n },\n collapseOff: {\n height: 0\n },\n close: {\n width: '20px',\n height: '20px',\n opacity: '0.9',\n cursor: 'pointer',\n position: 'relative',\n marginLeft: 'auto',\n marginBottom: 10,\n transition: 'all 0.6s ease',\n '&:hover': {\n transform: 'rotate(90deg)'\n },\n '&:before': {\n position: 'absolute',\n left: '9px',\n content: '\"\"',\n height: '20px',\n width: '3px',\n backgroundColor: '#ff4f4f',\n transform: 'rotate(45deg)'\n },\n '&:after': {\n position: 'absolute',\n left: '9px',\n content: '\"\"',\n height: '20px',\n width: '3px',\n backgroundColor: '#ff4f4f',\n transform: 'rotate(-45deg)'\n },\n },\n footerBlock: {\n background: theme.palette.background.default,\n padding: 10,\n display: 'flex',\n justifyContent: 'space-between'\n },\n hidden: {\n display: 'none'\n },\n invisible: {\n opacity: 0,\n },\n buttonUpdate: {\n border: '1px solid',\n padding: '0px 7px',\n borderRadius: 5,\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n transition: 'background 0.5s',\n '&:hover': {\n background: '#00800026'\n }\n },\n versionDate: {\n alignSelf: 'center'\n },\n adapter: {\n width: '100%',\n fontWeight: 'bold',\n fontSize: 16,\n verticalAlign: 'middle',\n paddingLeft: 8,\n paddingTop: 16,\n color: theme.palette.mode === 'dark' ? '#333' : '#555'\n },\n hide: {\n visibility: 'hidden'\n },\n button: {\n padding: 5,\n transition: 'opacity 0.2s',\n height: 34\n },\n hiddenOpacity: {\n opacity: 0,\n cursor: 'default',\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200]\n }\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200]\n }\n },\n instanceName: {\n fontSize: 16,\n paddingLeft: 32,\n paddingBottom: 5,\n fontWeight: 'bold'\n },\n cardContent: {\n marginTop: 16,\n paddingTop: 0\n },\n smallAvatar: {\n width: 24,\n height: 24\n },\n statusIndicator: {\n marginTop: 12,\n },\n statusIcon_green: { // square\n border: '2px solid grey',\n borderRadius: 2,\n },\n statusIcon_red: { // circle\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_orange: { // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_orangeDevice: { // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_blue: { // watch\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_gray: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_grey: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n instanceIcon: {\n height: 42,\n width: 42,\n },\n table: {\n minWidth: 650,\n },\n tableRow: {\n '&:nth-of-type(odd)': {\n backgroundColor: grey[300],\n },\n '&:nth-of-type(even)': {\n backgroundColor: grey[200],\n }\n },\n state: {\n width: theme.spacing(2),\n height: theme.spacing(2),\n borderRadius: '100%'\n },\n\n green: {\n //backgroundColor: green[700]\n color: green[700]\n },\n red: {\n //backgroundColor: red[700]\n color: red[700]\n },\n grey: {\n //backgroundColor: grey[700]\n color: grey[700]\n },\n blue: {\n //backgroundColor: blue[700]\n color: '#0055a9'//blue[700]\n },\n orange: {\n //backgroundColor: orange[700]\n color: orange[400]\n },\n orangeDevice: {\n //backgroundColor: orange[700]\n color: orange[300]\n },\n transparent: {\n color: 'transparent',\n backgroundColor: 'transparent'\n },\n paper: {\n height: '100%'\n },\n iframe: {\n height: '100%',\n width: '100%',\n border: 0\n },\n silly: {\n\n },\n debug: {\n backgroundColor: grey[700]\n },\n info: {\n backgroundColor: blue[700]\n },\n warn: {\n backgroundColor: amber[700]\n },\n error: {\n backgroundColor: red[700]\n },\n grow: {\n flexGrow: 1\n },\n tableRender: {\n tableLayout: 'fixed',\n minWidth: 960,\n '& td': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n },\n cards: {\n display: 'flex',\n flexFlow: 'wrap',\n justifyContent: 'center',\n },\n sentry: {\n width: 24,\n height: 24,\n objectFit: 'fill',\n filter: 'invert(0%) sepia(90%) saturate(1267%) hue-rotate(-260deg) brightness(99%) contrast(97%)'\n },\n hidden1250: {\n display: 'flex',\n width: 200,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n visible1250: {\n display: 'flex',\n width: 200,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n visible1050: {\n display: 'none'\n },\n hidden1050: {\n display: 'flex'\n },\n hidden800: {\n display: 'flex',\n },\n visible800: {\n display: 'none'\n },\n hidden570: {\n display: 'flex',\n },\n visible570: {\n display: 'none'\n },\n '@media screen and (max-width: 1500px)': {\n hidden1250: {\n display: 'none !important'\n },\n visible1250: {\n display: 'flex !important'\n },\n },\n '@media screen and (max-width: 1300px)': {\n hidden1230: {\n display: 'none !important'\n }\n },\n '@media screen and (max-width: 1120px)': {\n hidden1050: {\n display: 'none !important'\n },\n visible1050: {\n display: 'flex !important'\n },\n },\n '@media screen and (max-width: 800px)': {\n hidden800: {\n display: 'none !important'\n },\n visible800: {\n display: 'flex !important'\n },\n instanceIcon: {\n height: 28,\n width: 28,\n marginLeft: 4,\n marginTop: 8,\n },\n },\n hidden380: {\n display: 'flex'\n },\n '@media screen and (max-width: 650px)': {\n hidden570: {\n display: 'none !important'\n },\n visible570: {\n display: 'flex !important'\n },\n },\n '@media screen and (max-width: 380px)': {\n hidden380: {\n display: 'none !important'\n },\n instanceId: {\n width: '70px !important',\n minWidth: '70px !important'\n },\n },\n '@media screen and (max-width: 480px)': {\n gridStyle: {\n minWidth: 'auto !important',\n marginLeft: 10\n },\n instanceId: {\n width: 100,\n },\n maxWidth300: {\n width: `250px !important`\n }\n },\n '@media screen and (max-width: 335px)': {\n gridStyle: {\n marginLeft: 0\n }\n },\n displayFlex: {\n display: 'flex',\n },\n secondaryHeading: {\n maxWidth: 200,\n fontSize: 12,\n },\n secondaryHeadingDiv: {\n display: 'flex',\n alignItems: 'center',\n width: 200\n },\n secondaryHeadingDivDiv: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n padding: 5,\n textOverflow: 'ellipsis',\n maxWidth: 200\n },\n /*summaryText: {\n display: 'flex',\n minWidth: 200,\n justifyContent: 'space-around'\n },\n summaryInstanceId: {\n minWidth: 100,\n marginLeft: 5,\n alignSelf: 'center'\n },*/\n formControl: {\n width: '100%',\n marginBottom: 5\n },\n formControl2: {\n marginBottom: 5,\n marginTop: 5,\n width: '100%',\n },\n gridStyle: {\n display: 'flex',\n minWidth: 270,\n lineHeight: '34px',\n justifyContent: 'space-around'\n },\n wrapperAvatar: {\n maxWidth: 130\n },\n instanceId: {\n overflow: 'hidden',\n alignSelf: 'center',\n fontSize: 16,\n marginLeft: 5,\n maxWidth: 150,\n minWidth: 100,\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n flexGrow: 2,\n },\n marginLeft: {\n marginLeft: 5\n },\n marginRight: {\n marginRight: 5\n },\n selectStyle: {\n display: 'flex',\n margin: 5,\n justifyContent: 'space-around'\n },\n selectWrapper: {\n display: 'flex',\n alignItems: 'flex-end'\n },\n scheduleIcon: {\n color: '#dc8e00'\n },\n ram: {\n color: '#dc8e00'\n },\n contrast0: {\n filter: 'contrast(0%)'\n },\n paddingRight200: {\n // paddingRight: 200\n },\n instanceStateNotEnabled1: {\n backgroundColor: 'rgba(192, 192, 192, 0.2)'\n },\n instanceStateNotEnabled2: {\n backgroundColor: 'rgba(192, 192, 192, 0.15)'\n },\n instanceStateNotAlive1: {\n backgroundColor: 'rgba(255,14,14,0.2)'\n },\n instanceStateNotAlive2: {\n backgroundColor: 'rgba(255,14,14, 0.15)'\n },\n instanceStateAliveNotConnected1: {\n backgroundColor: 'rgba(255, 177, 0, 0.1)'\n },\n instanceStateAliveNotConnected2: {\n backgroundColor: 'rgba(255, 177, 0, 0.15)'\n },\n instanceStateAliveAndConnected1: {\n backgroundColor: 'rgba(0, 255, 0, 0.1)'\n },\n instanceStateAliveAndConnected2: {\n backgroundColor: 'rgba(0, 255, 0, 0.15)'\n },\n maxWidth300: {\n width: 300\n },\n width150: {\n width: 150\n },\n deleting: {\n position: 'relative',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 100,\n opacity: '.3 !important',\n background: 'repeating-linear-gradient(135deg, #333, #333 10px, #888 10px, #888 20px)',\n }\n },\n desktopRow: {\n minHeight: 0\n },\n desktopIcon: {\n height: 32,\n width: 32,\n marginTop: 8\n },\n desktopRowContent: {\n marginTop: 2,\n marginBottom: 2,\n },\n desktopButton: {\n paddingRight: 12,\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n },\n rowGridLine: {\n marginTop: -2,\n },\n tooltip: {\n pointerEvents: 'none',\n },\n});\n\nconst arrayLogLevel = ['silly', 'debug', 'info', 'warn', 'error'];\nconst arrayTier = [{ value: 1, desc: '1: Logic adapters' }, { value: 2, desc: '2: Data provider adapters' }, { value: 3, desc: '3: Other adapters' }];\n\nconst InstanceRow = ({\n adminInstance,\n classes,\n maxCompactGroupNumber,\n onDeleteInstance,\n deleteCustomSupported,\n expanded,\n expertMode,\n extendObject,\n getInstanceStatus,\n getMemory,\n getModeIcon,\n getRestartSchedule,\n getSchedule,\n onExpandRow,\n hosts,\n id,\n idx,\n instance,\n key,\n lang,\n openConfig,\n setCompact,\n setCompactGroup,\n setHost,\n setLogLevel,\n setMemoryLimitMB,\n setName,\n setRestartSchedule,\n setSchedule,\n setSentry,\n setTier,\n t,\n themeType,\n deleting,\n item,\n}) => {\n const [openSelectCompactGroup, setOpenSelectCompactGroup] = useState(false);\n const [openDialogCron, setOpenDialogCron] = useState(false);\n const [openDialogSchedule, setOpenDialogSchedule] = useState(false);\n const [openDialogText, setOpenDialogText] = useState(false);\n const [openDialogLogLevel, setOpenDialogLogLevel] = useState(false);\n const [openDialogDelete, setOpenDialogDelete] = useState(false);\n const [openDialogMemoryLimit, setOpenDialogMemoryLimit] = useState(false);\n const [openDialogHost, setOpenDialogHost] = useState(false);\n const [openDialogCompact, setOpenDialogCompact] = useState(false);\n const [openDialogTier, setOpenDialogTier] = useState(false);\n\n const [showStopAdminDialog, setShowStopAdminDialog] = useState(false);\n const [showLinks, setShowLinks] = useState(false);\n\n const [logLevelValue, setLogLevelValue] = useState(item.logLevel);\n const [logOnTheFlyValue, setLogOnTheFlyValue] = useState(false);\n const [compactValue, setCompactValue] = useState(item.compactGroup || 0);\n const [maxCompactGroupNumberValue, setCompactGroupCountValue] = useState(maxCompactGroupNumber);\n const [tierValue, setTierValue] = useState(item.tier);\n const [hostValue, setHostValue] = useState(instance.host);\n const [deleteCustomValue, setDeleteCustom] = useState(false);\n\n const [visibleEdit, handlerEdit] = useState(false);\n const desktop = window.innerWidth > 1000;\n\n let showModal = false;\n let title;\n let help = '';\n if (openDialogText) {\n title = t('Enter title for %s', instance.id);\n showModal = true;\n } else if (openDialogLogLevel) {\n title = t('Edit log level rule for %s', instance.id);\n showModal = true;\n } else if (openDialogDelete) {\n title = t('Please confirm');\n showModal = true;\n } else if (openDialogMemoryLimit) {\n title = t('Edit memory limit rule for %s', instance.id);\n help = t('Default V8 has a memory limit of 512mb on 32-bit systems, and 1gb on 64-bit systems. The limit can be raised by setting --max-old-space-size to a maximum of ~1gb (32-bit) and ~1.7gb (64-bit)');\n showModal = true;\n } else if (openDialogHost) {\n title = t('Edit host for %s', instance.id);\n showModal = true;\n } else if (openDialogCompact) {\n title = t('Edit compact groups for %s', instance.id);\n showModal = true;\n } else if (openDialogTier) {\n title = t('Set tier for %s', instance.id);\n help = t('Tiers define the order of adapters when the system starts.');\n showModal = true;\n }\n\n const customModal = showModal ? <CustomModal\n title={title}\n help={help}\n open={true}\n applyDisabled={openDialogText || openDialogMemoryLimit}\n textInput={openDialogText || openDialogMemoryLimit}\n defaultValue={openDialogText ? item.name : openDialogMemoryLimit ? item.memoryLimitMB : ''}\n onApply={value => {\n if (openDialogLogLevel) {\n setLogLevel(instance, logLevelValue, logOnTheFlyValue);\n setOpenDialogLogLevel(false);\n } else if (openDialogText) {\n setName(instance, value);\n setOpenDialogText(false);\n } else if (openDialogDelete) {\n onDeleteInstance(instance, deleteCustomValue);\n setDeleteCustom(false);\n } else if (openDialogMemoryLimit) {\n setMemoryLimitMB(instance, value);\n setOpenDialogMemoryLimit(false);\n } else if (openDialogCompact) {\n setCompactGroup(instance, compactValue);\n setOpenDialogCompact(false);\n } else if (openDialogTier) {\n setTier(instance, tierValue);\n setOpenDialogTier(false);\n } else if (openDialogHost) {\n setHost(instance, hostValue);\n setOpenDialogHost(false);\n }\n }}\n onClose={() => {\n if (openDialogLogLevel) {\n setLogLevelValue(item.logLevel);\n setLogOnTheFlyValue(false);\n setOpenDialogLogLevel(false);\n } else if (openDialogText) {\n setOpenDialogText(false);\n } else if (openDialogDelete) {\n setOpenDialogDelete(false);\n } else if (openDialogMemoryLimit) {\n setOpenDialogMemoryLimit(false);\n } else if (openDialogCompact) {\n setCompactValue(item.compactGroup);\n setCompactGroupCountValue(maxCompactGroupNumber);\n setOpenDialogCompact(false);\n } else if (openDialogTier) {\n setTierValue(item.tier);\n setOpenDialogTier(false);\n } else if (openDialogHost) {\n setHostValue(instance.host);\n setOpenDialogHost(false);\n }\n }}>\n {openDialogLogLevel && <FormControl className={classes.formControl} variant=\"outlined\">\n <InputLabel>{t('log level')}</InputLabel>\n <Select\n variant=\"standard\"\n value={logLevelValue}\n fullWidth\n onChange={el => setLogLevelValue(el.target.value)}\n >\n {arrayLogLevel.map(el => <MenuItem key={el} value={el}>\n {t(el)}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogLogLevel && <FormControl className={classes.formControl} variant=\"outlined\" >\n <FormControlLabel\n control={<Checkbox checked={logOnTheFlyValue} onChange={e => setLogOnTheFlyValue(e.target.checked)} />}\n label={t('Without restart')}\n />\n <FormHelperText>{logOnTheFlyValue ? t('Will be reset to the saved log level after restart of adapter') : t('Log level will be saved permanently')}</FormHelperText>\n </FormControl>}\n {openDialogCompact && <FormControl className={classes.formControl2} variant=\"outlined\" >\n <InputLabel>{t('compact groups')}</InputLabel>\n <Select\n variant=\"standard\"\n autoWidth\n onClose={e => setOpenSelectCompactGroup(false)}\n onOpen={e => setOpenSelectCompactGroup(true)}\n open={openSelectCompactGroup}\n value={compactValue === 1 ? 'default' : compactValue === '0' || compactValue === 0 ? 'controller' : !compactValue ? 'default' : compactValue || 'default'}\n onChange={el => setCompactValue(el.target.value)}\n >\n <div onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n className={classes.selectStyle}>\n <Button color=\"grey\" onClick={() => {\n setOpenSelectCompactGroup(false);\n setCompactValue(maxCompactGroupNumberValue + 1);\n setCompactGroupCountValue(maxCompactGroupNumberValue + 1);\n }} variant=\"outlined\" stylevariable='outlined'>{t('Add compact group')}</Button>\n </div>\n <MenuItem value=\"controller\">{t('with controller')}</MenuItem>\n <MenuItem value=\"default\">{t('default group')}</MenuItem>\n {Array(maxCompactGroupNumberValue - 1).fill().map((_, idx) => <MenuItem key={idx} value={idx + 2}>\n {idx + 2}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogTier && <FormControl className={classes.formControl} variant=\"outlined\" >\n <InputLabel>{t('Tiers')}</InputLabel>\n <Select\n variant=\"standard\"\n value={tierValue}\n fullWidth\n onChange={el => setTierValue(el.target.value)}\n >\n {arrayTier.map(el => <MenuItem key={el.value} value={el.value}>\n {t(el.desc)}\n </MenuItem>)}\n </Select>\n </FormControl>}\n {openDialogDelete && t('Are you sure you want to delete the instance %s?', instance.id)}\n {openDialogDelete && deleteCustomSupported && instance.obj.common.supportCustoms && <br />}\n {openDialogDelete && deleteCustomSupported && instance.obj.common.supportCustoms && <FormControlLabel\n control={<Checkbox checked={deleteCustomValue} onChange={e => setDeleteCustom(e.target.checked)} />}\n label={t('Delete all custom object settings of this adapter too')}\n />}\n {openDialogHost && <SelectWithIcon\n themeType={themeType}\n value={hostValue}\n list={hosts}\n removePrefix=\"system.host.\"\n fullWidth\n className={classes.formControl}\n onChange={el => setHostValue(el)}\n />}\n </CustomModal> : null;\n\n const status = getInstanceStatus(id);\n\n const linksDialog = showLinks ? <LinksDialog\n image={instance.image}\n instanceId={instance.id}\n links={instance.links}\n onClose={() => setShowLinks(false)}\n t={t}\n themeType={themeType}\n /> : null;\n\n const stopAdminDialog = showStopAdminDialog ? <ConfirmDialog\n title={t('Please confirm')}\n text={t('stop_admin', adminInstance)}\n ok={t('Stop admin')}\n onClose={result => {\n if (result) {\n extendObject(showStopAdminDialog, { common: { enabled: false } });\n }\n setShowStopAdminDialog(false);\n }}\n /> : null;\n\n let next;\n let prev;\n let cronText;\n if (instance.mode === 'schedule' && instance.schedule) {\n try {\n cronText = cronstrue.toString(instance.schedule, { locale: lang });\n } catch (e) {\n cronText = instance.schedule;\n }\n\n if (instance.enabled) {\n try {\n next = new Date(parser.parseExpression(instance.schedule).next());\n prev = new Date(parser.parseExpression(instance.schedule).prev());\n } catch (e) {\n next = null;\n prev = null;\n }\n }\n }\n\n const stateTooltip = [\n item.stoppedWhenWebExtension !== undefined ? <State key={1} state={true} >{t('Runs as web-extension')}</State> : '',\n instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined ? <State key={2} state={item.connectedToHost} >{t('Connected to host')}</State> : '',\n instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined ? <State key={3} state={item.alive} >{t('Heartbeat')}</State> : '',\n item.connected !== null && item.stoppedWhenWebExtension === undefined ? <State key={4} state={!!item.connected}>\n {typeof item.connected === 'string' ? t('Connected:') + ' ' + (item.connected || '-') : t('Connected to device or service')}\n </State> : '',\n cronText ? <State key={5} state={instance.enabled}>CRON: {cronText}</State> : null,\n next ? <State key={6} state={true} >{t('Next start: %s', next.toLocaleDateString(lang) + ' ' + next.toLocaleTimeString(lang))}</State> : null,\n prev ? <State key={7} state={true} >{t('Last start: %s', prev.toLocaleDateString(lang) + ' ' + prev.toLocaleTimeString(lang))}</State> : null\n ].filter(el => el);\n\n const modeIcon = <div\n className={Utils.clsx(\n classes.smallAvatar,\n classes.statusIndicator,\n instance.mode === 'daemon' || instance.mode === 'schedule' ? classes[status] : classes.transparent,\n item.connectedToHost && item.alive && item.connected === false && classes.orangeDevice\n )}>\n {getModeIcon(instance.mode, status, classes['statusIcon_' + status], item.stoppedWhenWebExtension)}\n </div>;\n\n return <Accordion\n key={key}\n square\n classes={{ root: deleting ? classes.deleting : '' }}\n expanded={expanded === instance.id && !deleting}\n onChange={() => {\n if (openDialogCron ||\n openDialogSchedule ||\n openDialogLogLevel ||\n openDialogText ||\n openDialogDelete ||\n openDialogMemoryLimit ||\n openDialogCompact ||\n openDialogTier ||\n openDialogHost) {\n return;\n }\n onExpandRow(instance.id);\n }}>\n {linksDialog}\n <AccordionSummary\n classes={{\n root: classes.row,\n content: desktop ? classes.desktopRowContent : undefined,\n expandIcon: desktop ? classes.desktopButton : undefined,\n }}\n className={Utils.clsx(\n (!item.running || instance.mode !== 'daemon' || item.stoppedWhenWebExtension !== undefined) && (idx % 2 === 0 ? classes.instanceStateNotEnabled1 : classes.instanceStateNotEnabled2),\n item.running && instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined && (!item.connectedToHost || !item.alive) && (idx % 2 === 0 ? classes.instanceStateNotAlive1 : classes.instanceStateNotAlive2),\n item.running && item.connectedToHost && item.alive && item.connected === false && (idx % 2 === 0 ? classes.instanceStateAliveNotConnected1 : classes.instanceStateAliveNotConnected2),\n item.running && item.connectedToHost && item.alive && item.connected !== false && (idx % 2 === 0 ? classes.instanceStateAliveAndConnected1 : classes.instanceStateAliveAndConnected1),\n desktop && classes.desktopRow\n )}\n expandIcon={<ExpandMoreIcon/>}>\n {customModal}\n {stopAdminDialog}\n {(openDialogCron || openDialogSchedule) && <ComplexCron\n title={\n (openDialogCron && t('Edit restart rule for %s', instance.id)) ||\n (openDialogSchedule && t('Edit schedule rule for %s', instance.id))\n }\n clearButton={true}\n cron={openDialogCron ? getRestartSchedule(id) : getSchedule(id)}\n language={I18n.getLanguage()}\n onOk={cron => {\n if (openDialogCron) {\n setRestartSchedule(instance, cron);\n } else if (openDialogSchedule) {\n setSchedule(instance, cron);\n }\n }}\n onClose={() => {\n if (openDialogCron) {\n setOpenDialogCron(false);\n } else if (openDialogSchedule) {\n setOpenDialogSchedule(false);\n }\n }}\n />}\n <Grid container spacing={1} alignItems=\"center\" direction=\"row\" wrap=\"nowrap\" className={classes.rowGridLine}>\n <div className={classes.gridStyle}>\n {stateTooltip.length ?\n <Tooltip title={<span style={{ display: 'flex', flexDirection: 'column' }} classes={{ popper: classes.tooltip }}>{stateTooltip}</span>}>\n {modeIcon}\n </Tooltip>\n : modeIcon}\n <Avatar\n variant=\"square\"\n alt={instance.id}\n src={instance.image}\n className={Utils.clsx(classes.instanceIcon, desktop && classes.desktopIcon)}\n />\n <div className={classes.instanceId}>{instance.id}</div>\n </div>\n <Tooltip title={t('Start/stop')} classes={{ popper: classes.tooltip }}>\n <div>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (item.running && instance.id === adminInstance) {\n setShowStopAdminDialog('system.adapter.' + instance.id);\n } else {\n extendObject('system.adapter.' + instance.id, { common: { enabled: !item.running } });\n }\n }}\n onFocus={event => event.stopPropagation()}\n className={Utils.clsx(classes.button, instance.canStart ?\n (item.running ? classes.enabled : classes.disabled) : classes.hide)}\n >\n {item.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </div>\n </Tooltip>\n <IsVisible config={item} name=\"allowInstanceSettings\">\n <Hidden xsDown>\n <div>\n <Tooltip title={instance.config ? t('Settings') : ''} classes={{ popper: classes.tooltip }}>\n <div>\n <IconButton\n disabled={!instance.config}\n size=\"small\"\n className={Utils.clsx(classes.button, !instance.config && classes.hiddenOpacity)}\n onClick={event => {\n event.stopPropagation();\n openConfig(id);\n }}\n >\n <BuildIcon />\n </IconButton>\n </div>\n </Tooltip>\n </div>\n </Hidden>\n </IsVisible>\n <Tooltip title={t('Restart')} classes={{ popper: classes.tooltip }}>\n <div>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n extendObject('system.adapter.' + instance.id, {});\n }}\n onFocus={event => event.stopPropagation()}\n className={Utils.clsx(classes.button, !instance.canStart && classes.hide)}\n disabled={!item.running}\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n <IsVisible config={item} name=\"allowInstanceLink\">\n <Tooltip title={t('Instance link %s', instance.id)} classes={{ popper: classes.tooltip }}>\n <div>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, (!instance.links || !instance.links[0]) && classes.hide)}\n disabled={!item.running}\n onClick={event => {\n event.stopPropagation();\n if (instance.links.length === 1) {\n // replace IPv6 Address with [ipv6]:port\n let url = instance.links[0].link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n window.open(url, instance.id);\n } else {\n setShowLinks(true);\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n </IsVisible>\n\n <Typography className={Utils.clsx(classes.secondaryHeading, classes.hidden800)} component=\"div\">\n <div\n onMouseMove={() => handlerEdit(true)}\n onMouseEnter={() => handlerEdit(true)}\n onMouseLeave={() => handlerEdit(false)}\n className={classes.secondaryHeadingDiv}>\n <div className={classes.secondaryHeadingDivDiv}>{item.name}</div>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, !visibleEdit && classes.hiddenOpacity)}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogText(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n </Typography>\n {expertMode &&\n <div className={Utils.clsx(classes.hidden1250, (instance.mode !== 'daemon' || !item.running) && classes.invisible)} >\n <InstanceInfo\n icon={<ImportExportIcon />}\n tooltip={t('events')}\n >\n <div className={classes.displayFlex}>\n <Tooltip title={t('input events')} classes={{ popper: classes.tooltip }}>\n <div className={classes.marginRight}>⇥{item.inputOutput.stateInput}</div>\n </Tooltip>\n /\n <Tooltip title={t('output events')} classes={{ popper: classes.tooltip }}>\n <div className={classes.marginLeft}>↦{item.inputOutput.stateOutput}</div>\n </Tooltip>\n </div>\n </InstanceInfo>\n </div>\n }\n {expertMode &&\n <Tooltip title={item.logLevelObject === item.logLevel ? `${t('loglevel')} ${item.logLevel}` : `${t('saved:')} ${item.logLevelObject} / ${t('actual:')} ${item.logLevel}`} classes={{ popper: classes.tooltip }}>\n <Avatar className={Utils.clsx(classes.smallAvatar, classes.hidden380, classes[item.logLevel])}>\n {item.loglevelIcon}\n </Avatar>\n </Tooltip>\n }\n <Grid item className={Utils.clsx(classes.hidden1050, classes.width150, (instance.mode !== 'daemon' || !item.running) && classes.invisible)}>\n <InstanceInfo\n icon={<MemoryIcon />}\n tooltip={t('RAM usage')}\n >\n {(instance.mode === 'daemon' && item.running ? getMemory(id) : '-.--') + ' MB'}\n </InstanceInfo>\n </Grid>\n {hosts.length > 1 || (hosts.length && hosts[0].common?.name !== instance.host) ? <Grid item className={Utils.clsx(classes.hidden1230)}>\n {<TextWithIcon value={instance.host} list={hosts} removePrefix=\"system.host.\" themeType={themeType} t={t} lang={lang}/>}\n </Grid> : null}\n </Grid>\n <div className={classes.hidden570}>\n <Tooltip title=\"sentry\" classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, expertMode && item.checkSentry ? null : classes.hide)}\n onClick={e => {\n e.stopPropagation();\n setSentry(instance);\n }}\n >\n <CardMedia\n className={Utils.clsx(classes.sentry, !item.sentry && classes.contrast0)}\n component=\"img\"\n image={item.sentry ? sentry : noSentry}\n />\n </IconButton>\n </Tooltip>\n </div>\n {item.supportCompact ?\n <div className={classes.hidden570}>\n <Tooltip title={t('compact groups')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, expertMode && item.checkCompact ? null : classes.hide)}\n onClick={e => {\n e.stopPropagation();\n setCompact(instance);\n }}\n >\n <ViewCompactIcon color={!!item.compact ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n </div> : null}\n </AccordionSummary>\n <AccordionDetails>\n <Grid container direction=\"row\">\n <Grid item container direction=\"row\" xs={10}>\n <Grid item container direction=\"column\" xs={12} sm={6} md={4}>\n <span className={classes.instanceName}>{instance.id}</span>\n {item.stoppedWhenWebExtension !== undefined && <State state={item.stoppedWhenWebExtension} >{t('Runs as web-extension')}</State>}\n {item.running && instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined && <State state={item.connectedToHost} >{t('Connected to host')}</State>}\n {item.running && instance.mode === 'daemon' && item.stoppedWhenWebExtension === undefined && <State state={item.alive} >{t('Heartbeat')}</State>}\n {item.running && item.connected !== null && item.stoppedWhenWebExtension === undefined &&\n <State state={!!item.connected}>\n {typeof item.connected === 'string' ? `${t('Connected:')} ${item.connected || '-'}` : t('Connected to device or service')}\n </State>\n }\n </Grid>\n <Grid container item direction=\"column\" xs={12} sm={6} md={4}>\n <InstanceInfo tooltip={t('Installed')}>\n v{instance.version}\n </InstanceInfo>\n </Grid>\n <Grid container item direction=\"column\" xs={12} sm={6} md={4} className={classes.paddingRight200}>\n {expertMode && <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={item.loglevelIcon} tooltip={item.logLevelObject === item.logLevel ? `${t('loglevel')} ${item.logLevel}` : `${t('saved:')} ${item.logLevelObject} / ${t('actual:')} ${item.logLevel}`}>\n {item.logLevelObject === item.logLevel ? item.logLevel : `${item.logLevelObject} / ${item.logLevel}`}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogLogLevel(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n {item.running && expertMode &&\n <div className={classes.visible1250}>\n <InstanceInfo icon={<ImportExportIcon />} tooltip={t('events')}>\n <div className={classes.displayFlex}>\n <Tooltip title={t('input events')} classes={{ popper: classes.tooltip }}>\n <div className={classes.marginRight}>⇥{item.inputOutput.stateInput}</div>\n </Tooltip>\n /\n <Tooltip title={t('output events')} classes={{ popper: classes.tooltip }}>\n <div className={classes.marginLeft}>↦{item.inputOutput.stateOutput}</div>\n </Tooltip>\n </div>\n </InstanceInfo>\n </div>\n }\n <Grid item className={classes.visible1050}>\n <InstanceInfo icon={<MemoryIcon />} tooltip={t('RAM usage')}>\n {(instance.mode === 'daemon' && item.running ? getMemory(id) : '-.--') + ' MB'}\n </InstanceInfo>\n </Grid>\n {item.modeSchedule && <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={<ScheduleIcon />} tooltip={t('schedule_group')}>\n {getSchedule(id) || '-'}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogSchedule(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>}\n {expertMode && (instance.mode === 'daemon') &&\n <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo\n icon={<ScheduleIcon className={classes.scheduleIcon} />}\n tooltip={t('restart')}\n >\n {getRestartSchedule(id) || '-'}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={(event) => {\n event.stopPropagation();\n setOpenDialogCron(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n }\n {expertMode &&\n <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo\n icon={<MemoryIcon className={classes.ram} />}\n tooltip={t('RAM limit')}\n >\n {(item.memoryLimitMB ? item.memoryLimitMB : '-.--') + ' MB'}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={e => {\n e.stopPropagation();\n setOpenDialogMemoryLimit(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n }\n {expertMode && item.checkCompact && item.compact && item.supportCompact &&\n <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={<ViewCompactIcon className={classes.marginRight} color=\"inherit\" />} tooltip={t('compact groups')}>\n {item.compactGroup === 1 ? 'default' : item.compactGroup === '0' ? \"controller\" : !item.compactGroup ? 'default' : item.compactGroup || 'default'}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={e => {\n e.stopPropagation();\n setOpenDialogCompact(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n }\n {expertMode && <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={<LowPriorityIcon className={classes.marginRight} color=\"inherit\" />} tooltip={t('Start order (tier)')}>\n {instance.adapter === 'admin' ? t('Always first') : t(arrayTier.find(el => el.value === item.tier)?.desc || arrayTier[2])}\n </InstanceInfo>\n {instance.adapter !== 'admin' ? <Tooltip title={t('Edit start order (tier)')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={e => {\n e.stopPropagation();\n setOpenDialogTier(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip> : null}\n </div>}\n <div className={Utils.clsx(classes.maxWidth300, classes.visible800)}>\n <InstanceInfo >\n {item.name}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogText(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div>\n {hosts.length > 1 || (hosts.length && hosts[0].common?.name !== instance.host) ? <div className={Utils.clsx(classes.displayFlex, classes.maxWidth300)}>\n <InstanceInfo icon={<HostIcon className={classes.marginRight} />} tooltip={t('Host for this instance')}>\n {<TextWithIcon value={instance.host} list={hosts} removePrefix=\"system.host.\" themeType={themeType} t={t} lang={lang}/>}\n </InstanceInfo>\n <Tooltip title={t('Edit')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogHost(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </div> : null}\n </Grid>\n </Grid>\n <div className={classes.displayFlex}>\n <IsVisible config={item} name=\"allowInstanceDelete\">\n <Hidden smUp>\n <Tooltip title={t('Settings')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n openConfig(id);\n }}\n >\n <BuildIcon />\n </IconButton>\n </Tooltip>\n </Hidden>\n </IsVisible>\n <IsVisible config={item} name=\"allowInstanceDelete\">\n <Tooltip title={t('Delete')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={event => {\n event.stopPropagation();\n setOpenDialogDelete(true);\n }}\n >\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n </IsVisible>\n <div className={classes.visible570}>\n <Tooltip title=\"sentry\" classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, expertMode && item.checkSentry ? null : classes.hide)}\n onClick={e => {\n e.stopPropagation();\n setSentry(instance);\n }}\n >\n <CardMedia\n className={Utils.clsx(classes.sentry, !item.sentry && classes.contrast0)}\n component=\"img\"\n image={sentry}\n />\n </IconButton>\n </Tooltip>\n </div>\n {item.supportCompact ?\n <div className={classes.visible570}>\n <Tooltip title={t('compact groups')} classes={{ popper: classes.tooltip }}>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.button, expertMode && item.checkCompact ? null : classes.hide)}\n onClick={e => {\n e.stopPropagation();\n setCompact(instance);\n }}\n >\n <ViewCompactIcon color={!!item.compact ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n </div> : null}\n </div>\n </Grid>\n </AccordionDetails>\n </Accordion>;\n}\n\nInstanceRow.propTypes = {\n t: PropTypes.func,\n themeType: PropTypes.string,\n adminInstance: PropTypes.string,\n hosts: PropTypes.array,\n setHost: PropTypes.func,\n instanceId: PropTypes.string,\n deleting: PropTypes.bool,\n onExpandRow: PropTypes.func,\n item: PropTypes.object,\n deleteCustomSupported: PropTypes.bool,\n};\n\n\nexport default withStyles(styles)(InstanceRow);\n","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFilter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"#FB2D26\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0h24 M24,24H0\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.25,5.61C6.27,8.2,10,13,10,13v6c0,0.55,0.45,1,1,1h2c0.55,0,1-0.45,1-1v-6c0,0,3.72-4.8,5.74-7.39 C20.25,4.95,19.78,4,18.95,4H5.04C4.21,4,3.74,4.95,4.25,5.61z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0h24v24H0V0z\",\n fill: \"none\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilter);\nexport default __webpack_public_path__ + \"static/media/filter.ddf40c28bbf1e138937e53be53e56274.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport { createRoot } from 'react-dom/client';\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 { Avatar, Card, Checkbox, DialogTitle, FormControlLabel, MenuItem, Select } from '@mui/material';\nimport { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';\nimport { makeStyles } from '@mui/styles';\n\nimport WarningIcon from '@mui/icons-material/Warning';\nimport ScheduleIcon from '@mui/icons-material/Schedule';\nimport SettingsIcon from '@mui/icons-material/Lens';\nimport IconCheck from '@mui/icons-material/Check';\nimport IconClose from '@mui/icons-material/Close';\n\nimport { green, grey, orange, red } from '@mui/material/colors';\n\nimport I18n from '@iobroker/adapter-react-v5/i18n';\n\nimport filterIcon from '../../assets/filter.svg';\n\nlet node = null;\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n padding: 10\n },\n paper: {\n // maxWidth: 1000,\n width: '100%',\n maxHeight: 800,\n // height: 'calc(100% - 32px)',\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden'\n },\n pre: {\n overflow: 'auto',\n whiteSpace: 'pre-wrap',\n margin: 0\n },\n rowBlock: {\n display: 'flex',\n width: '100%',\n justifyContent: 'space-between',\n margin: '10px 0'\n },\n select: {\n minWidth: 200\n },\n checkbox: {\n minWidth: 160\n },\n statusIcon_1: { // circle\n border: '2px solid grey',\n borderRadius: 20,\n color: 'grey'\n },\n statusIcon_2: { // square\n border: '2px solid grey',\n borderRadius: 20,\n color: '#d32f2f'\n },\n statusIcon_3: { // triangle\n border: 0,\n borderRadius: 0,\n color: '#ffa726'\n },\n statusIcon_4: { // watch\n border: '2px solid grey',\n borderRadius: 20,\n color: '#0055a9'\n },\n statusIcon_5: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_6: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n menuWrapper: {\n display: 'flex',\n alignItems: 'center'\n },\n iconWrapper: {\n marginRight: 10\n },\n textWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n square: {\n width: 24,\n height: 24,\n marginRight: 10,\n filter: 'invert(0%) sepia(90%) saturate(300%) hue-rotate(-537deg) brightness(99%) contrast(97%)'\n },\n statusIcon_green: { // square\n border: '2px solid grey',\n borderRadius: 2,\n },\n statusIcon_red: { // circle\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_orange: { // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_orangeDevice: { // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_blue: { // watch\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_gray: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_grey: { // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n green: {\n color: green[700]\n },\n red: {\n color: red[700]\n },\n grey: {\n color: grey[700]\n },\n blue: {\n color: '#0055a9'\n },\n orange: {\n color: orange[400],\n },\n orangeDevice: {\n color: orange[300],\n },\n icon: {\n width: 18,\n height: 18,\n marginRight: theme.spacing(1),\n display: 'inline-block'\n },\n menuValue: {\n whiteSpace: 'nowrap'\n }\n}));\n\nconst modeArray = ['none', 'daemon', 'schedule', 'once'];\n// const statusArray = [\n// 'none',\n// 'disabled',\n// 'enabled, but not alive',\n// 'enabled, alive, but not connected to controller',\n// 'enabled, alive, connected, but not connected to device or service',\n// 'enabled and OK'\n// ];\n\nconst getModeIcon = (idx, className) => {\n if (idx === 1) {\n return <SettingsIcon className={className} />;\n } else if (idx === 2) {\n return <SettingsIcon className={className} />;\n } else if (idx === 3) {\n return <WarningIcon className={className} />;\n } else if (idx === 4) {\n return <ScheduleIcon className={className} />\n } else if (idx === 5) {\n return <div style={{\n width: 20,\n height: 20,\n margin: 2,\n borderRadius: 2,\n }} className={className}><div style={{\n width: 'calc(100% - 2px)',\n height: 'calc(100% - 2px)',\n borderRadius: 2,\n margin: 1,\n backgroundColor: '#66bb6a',\n }} /></div>;\n }\n return null;\n}\n\nconst statusArray = {\n none: { text: 'none', _class: '', status: '' },\n disabled: { text: 'disabled', _class: 'statusIcon_grey', status: 'grey' },\n not_alive: { text: 'enabled, but not alive', _class: 'statusIcon_red', status: 'red' },\n alive_not_connected: { text: 'enabled, alive, but not connected to controller', _class: 'statusIcon_orange', status: 'orange' },\n alive_no_device: { text: 'enabled, alive, but not connected to device or service', _class: 'statusIcon_orangeDevice', status: 'orange' },\n ok: { text: 'enabled and OK', _class: 'statusIcon_green', status: 'green' }\n};\n\nconst InstanceFilterDialog = ({ cb, filterMode, filterStatus, theme }) => {\n const classes = useStyles();\n const [open, setOpen] = useState(true);\n\n const [modeCheck, setModeCheck] = useState(filterMode);\n const [statusCheck, setStatusCheck] = useState(filterStatus);\n\n const onClose = () => {\n setOpen(false);\n if (node) {\n document.body.removeChild(node);\n node = null;\n }\n }\n\n return <ThemeProvider theme={theme}>\n <Dialog\n onClose={onClose}\n open={open}\n classes={{ paper: classes.paper }}\n >\n <DialogTitle style={{ display: 'flex' }}>\n <div style={{ display: 'flex' }}>\n <Avatar variant=\"square\" className={classes.square} src={filterIcon} />\n {I18n.t('Filter instances')}\n </div>\n </DialogTitle>\n <DialogContent className={classes.overflowHidden} dividers>\n <Card className={classes.root}>\n <div className={classes.rowBlock}>\n <FormControlLabel\n className={classes.checkbox}\n control={\n <Checkbox\n checked={!!modeCheck}\n onChange={(e) => e.target.checked ? setModeCheck('daemon') : setModeCheck(null)}\n />\n }\n label={I18n.t('Filter by mode')}\n />\n <Select\n disabled={!modeCheck}\n variant=\"standard\"\n value={modeCheck || 'none'}\n className={classes.select}\n onChange={el => {\n if (el.target.value === 'none') {\n setModeCheck(null);\n } else {\n setModeCheck(el.target.value);\n }\n }}\n >\n {modeArray.map(el => <MenuItem key={el} value={el}>\n {I18n.t(el)}\n </MenuItem>)}\n </Select>\n </div>\n <div className={classes.rowBlock}>\n <FormControlLabel\n className={classes.checkbox}\n control={\n <Checkbox\n checked={!!statusCheck}\n onChange={e => e.target.checked ? setStatusCheck('ok') : setStatusCheck(null)}\n />\n }\n label={I18n.t('Filter by status')}\n />\n <Select\n disabled={!statusCheck}\n variant=\"standard\"\n value={statusCheck || 'none'}\n className={classes.select}\n onChange={el => {\n if (el.target.value === 'none') {\n setStatusCheck(null);\n } else {\n setStatusCheck(el.target.value);\n }\n }}\n >\n {Object.keys(statusArray).map((name, idx) => <MenuItem key={name} value={name}>\n <div className={classes.menuWrapper}>\n {statusArray[name].status ? <div className={classes.iconWrapper}>{getModeIcon(idx, classes[`statusIcon_${idx}`])}</div> : null}\n <div className={classes.textWrapper}>{I18n.t(statusArray[name].text)}</div>\n </div>\n </MenuItem>)}\n </Select>\n </div>\n </Card>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n autoFocus\n disabled={modeCheck === filterMode && filterStatus === statusCheck}\n onClick={() => {\n onClose();\n cb && cb({\n filterMode: modeCheck,\n filterStatus: statusCheck\n });\n }}\n color=\"primary\"\n startIcon={<IconCheck />}\n >\n {I18n.t('Apply')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => {\n onClose();\n cb && cb(false);\n }}\n startIcon={<IconClose />}\n >\n {I18n.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>\n </ThemeProvider>;\n}\n\nexport const instanceFilterDialogCallback = (cb, filterMode, filterStatus, getModeIcon, theme) => {\n if (!node) {\n node = document.createElement('div');\n node.id = 'renderModal';\n document.body.appendChild(node);\n }\n const root = createRoot(node);\n\n return root.render(<StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <InstanceFilterDialog cb={cb} getModeIcon={getModeIcon} filterMode={filterMode} theme={theme} filterStatus={filterStatus} />\n </ThemeProvider>\n </StyledEngineProvider>);\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport {\n Accordion, AccordionDetails, AccordionSummary,\n} from '@mui/material';\n\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\n\nconst boxShadow = '0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)';\nconst boxShadowHover = '0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)';\n\nconst styles = theme => ({\n root: {\n position: 'relative',\n margin: 10,\n width: 300,\n minHeight: 200,\n background: theme.palette.background.default,\n boxShadow,\n display: 'flex',\n flexDirection: 'column',\n transition: 'box-shadow 0.5s',\n '&:hover': {\n boxShadow: boxShadowHover\n }\n },\n row: {\n paddingLeft: 8,\n flexDirection: 'row-reverse',\n minHeight: '48px !important',\n height: 48,\n fontWeight: 'bold',\n fontSize: 16\n },\n iconStyle: {\n marginRight: 10\n },\n wrapperName: {\n margin: '0 10px',\n display: 'flex',\n alignItems: 'center'\n },\n wrapperChildren: {\n width: '100%'\n },\n accordionDetails: {\n padding: 0\n },\n accordion: {\n margin: '1px 0 !important'\n }\n});\n\nconst InstanceCategory = ({\n name,\n key,\n children,\n classes,\n expanded,\n onExpand,\n}) => {\n return <Accordion\n expanded={!!expanded}\n onChange={() => onExpand(!expanded)}\n classes={{ root: classes.accordion }} key={key} square>\n <AccordionSummary\n classes={{ root: classes.row }}\n expandIcon={<ExpandMoreIcon />}>\n <div className={classes.wrapperName}>\n <MaterialDynamicIcon objIconBool iconName={name} className={classes.iconStyle} />{name}\n </div>\n </AccordionSummary>\n <AccordionDetails className={classes.accordionDetails}>\n <div className={classes.wrapperChildren}>\n {children}\n </div>\n </AccordionDetails>\n </Accordion>;\n}\n\nInstanceCategory.propTypes = {\n t: PropTypes.func,\n themeType: PropTypes.string,\n adminInstance: PropTypes.string,\n hosts: PropTypes.array,\n setHost: PropTypes.func,\n host: PropTypes.string,\n instanceId: PropTypes.string,\n};\n\n\nexport default withStyles(styles)(InstanceCategory);","import { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { withStyles } from '@mui/styles';\n\nimport IconButton from '@mui/material/IconButton';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport TableCell from '@mui/material/TableCell';\nimport Tooltip from '@mui/material/Tooltip';\nimport Paper from '@mui/material/Paper';\nimport { Hidden, InputAdornment, TextField } from '@mui/material';\n\nimport PlayArrowIcon from '@mui/icons-material/PlayArrow';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport BugReportIcon from '@mui/icons-material/BugReport';\nimport InfoIcon from '@mui/icons-material/Info';\nimport WarningIcon from '@mui/icons-material/Warning';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport DevicesIcon from '@mui/icons-material/Devices';\nimport ViewListIcon from '@mui/icons-material/ViewList';\nimport ViewModuleIcon from '@mui/icons-material/ViewModule';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ViewCompactIcon from '@mui/icons-material/ViewCompact';\nimport ScheduleIcon from '@mui/icons-material/Schedule';\nimport SettingsIcon from '@mui/icons-material/Lens';\nimport FolderIcon from '@mui/icons-material/Folder';\nimport FolderOpenIcon from '@mui/icons-material/FolderOpen';\nimport ListIcon from '@mui/icons-material/List';\nimport { FaFilter as FilterListIcon } from 'react-icons/fa';\n\nimport amber from '@mui/material/colors/amber';\nimport blue from '@mui/material/colors/blue';\nimport green from '@mui/material/colors/green';\nimport grey from '@mui/material/colors/grey';\nimport red from '@mui/material/colors/red';\n\nimport Router from '@iobroker/adapter-react-v5/Components/Router';\nimport withWidth from '@iobroker/adapter-react-v5/Components/withWidth';\n\nimport Config from './Config';\nimport Utils from '../Utils';\nimport TabContainer from '../components/TabContainer';\nimport TabContent from '../components/TabContent';\nimport TabHeader from '../components/TabHeader';\nimport InstanceCard from '../components/Instances/InstanceCard';\nimport InstanceRow from '../components/Instances/InstanceRow';\nimport CustomSelectButton from '../components/CustomSelectButton';\nimport { instanceFilterDialogCallback } from '../components/Instances/InstanceFilterDialog';\nimport InstanceCategory from '../components/Instances/InstanceCategory';\n\nconst styles = theme => ({\n table: {\n minWidth: 650,\n },\n tableRow: {\n '&:nth-of-type(odd)': {\n backgroundColor: grey[300],\n },\n '&:nth-of-type(even)': {\n backgroundColor: grey[200],\n }\n },\n smallAvatar: {\n width: theme.spacing(3),\n height: theme.spacing(3)\n },\n button: {\n padding: '5px'\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200]\n }\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200]\n }\n },\n hide: {\n visibility: 'hidden'\n },\n state: {\n width: theme.spacing(2),\n height: theme.spacing(2),\n borderRadius: '100%'\n },\n green: {\n backgroundColor: green[700]\n },\n red: {\n backgroundColor: red[700]\n },\n grey: {\n backgroundColor: grey[700]\n },\n blue: {\n backgroundColor: blue[700]\n },\n transparent: {\n color: 'transparent',\n backgroundColor: 'transparent'\n },\n paper: {\n height: '100%'\n },\n iframe: {\n height: '100%',\n width: '100%',\n //backgroundColor: '#FFF',\n color: '#000',\n borderRadius: 4,\n boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)',\n border: '0px solid #888'\n },\n silly: {\n\n },\n debug: {\n backgroundColor: grey[700]\n },\n info: {\n backgroundColor: blue[700]\n },\n warn: {\n backgroundColor: amber[700]\n },\n error: {\n backgroundColor: red[700]\n },\n grow: {\n flexGrow: 1\n },\n tableRender: {\n tableLayout: 'fixed',\n minWidth: 960,\n '& td': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n },\n cards: {\n display: 'flex',\n flexFlow: 'wrap',\n justifyContent: 'center',\n },\n sentry: {\n width: 24,\n height: 24,\n objectFit: 'fill',\n filter: 'invert(0%) sepia(90%) saturate(1267%) hue-rotate(-539deg) brightness(99%) contrast(97%)'\n },\n contrast0: {\n filter: 'contrast(0%)'\n },\n compactButtons: {\n display: 'inline-block',\n borderRadius: 4,\n border: '1px gray dotted'\n },\n okSymbol: {\n width: 20,\n height: 20,\n margin: 2,\n borderRadius: 2,\n //border: '2px solid #00000000',\n },\n okSymbolInner: {\n width: 'calc(100% - 2px)',\n height: 'calc(100% - 2px)',\n borderRadius: 2,\n margin: 1,\n backgroundColor: '#66bb6a',\n },\n square: {\n width: 24,\n height: 24,\n filter: theme.palette.mode === 'dark' ? 'brightness(0) invert(1)' : 'grayscale(100%)',\n opacity: theme.palette.mode === 'dark' ? 1 : 0.8\n },\n primary: {\n filter: 'invert(0%) sepia(90%) saturate(300%) hue-rotate(-537deg) brightness(99%) contrast(97%)'\n },\n filterActive: {\n color: theme.palette.primary.main\n }\n});\n\n// every tab should get their data itself from server\nclass Instances extends Component {\n constructor(props) {\n super(props);\n\n let expandedFolder = [];\n if ((window._localStorage || window.localStorage).getItem('Instances.expandedFolder')) {\n try {\n expandedFolder = JSON.parse((window._localStorage || window.localStorage).getItem('Instances.expandedFolder'))\n } catch (e) {\n\n }\n }\n\n this.state = {\n expertMode: this.props.expertMode,\n runningInstances: false,\n dialog: null,\n instances: null,\n dialogProp: null,\n states: null,\n playArrow: false,\n onlyCurrentHost: false,\n viewMode: false,\n viewCategory: false,\n folderOpen: false,\n hostData: null,\n processes: null,\n mem: null,\n percent: null,\n memFree: null,\n filterText: (window._localStorage || window.localStorage).getItem('instances.filter') || '',\n compact: false,\n maxCompactGroupNumber: 1,\n filterCompactGroup: 'All',\n sentry: false,\n deleting: null,\n deleteCustomSupported: false,\n currentHost: this.props.currentHost,\n\n expandedFolder,\n\n //filter\n filterMode: (window._localStorage || window.localStorage).getItem('Instances.filterMode') ?\n (window._localStorage || window.localStorage).getItem('Instances.filterMode') === 'null' ?\n null :\n (window._localStorage || window.localStorage).getItem('Instances.filterMode') : null,\n filterStatus: (window._localStorage || window.localStorage).getItem('Instances.filterStatus') ?\n (window._localStorage || window.localStorage).getItem('Instances.filterStatus') === 'null' ?\n null :\n (window._localStorage || window.localStorage).getItem('Instances.filterStatus') : null,\n };\n\n this.columns = {\n instance: { onlyExpert: false },\n actions: { onlyExpert: false },\n title: { onlyExpert: false },\n schedule: { onlyExpert: false },\n restart: { onlyExpert: true },\n log: { onlyExpert: true },\n ramLimit: { onlyExpert: true },\n events: { onlyExpert: true },\n ram: { onlyExpert: false }\n };\n\n this.promises = {};\n this.states = {};\n this.adapters = [];\n this.statesUpdateTimer = null;\n this.wordCache = {};\n this.oneReload = false;\n\n this.t = this.translate;\n this.inputRef = createRef();\n }\n\n translate = (word, arg1, arg2) => {\n if (arg1 !== undefined) {\n return this.props.t(word, arg1, arg2);\n }\n\n if (!this.wordCache[word]) {\n this.wordCache[word] = this.props.t(word);\n }\n\n return this.wordCache[word];\n }\n\n async componentDidMount() {\n this.props.instancesWorker.registerHandler(this.getInstances);\n await this.updateData();\n const deleteCustomSupported = await this.props.socket.checkFeatureSupported('DEL_INSTANCE_CUSTOM');\n deleteCustomSupported && this.setState({deleteCustomSupported});\n }\n\n async updateData() {\n await this.getParamsLocalAndPanel();\n await this.getData();\n await this.getHostsData();\n await this.getInstances();\n }\n\n async componentWillUnmount() {\n this.subscribeStates(true);\n this.props.instancesWorker.unregisterHandler(this.getInstances);\n }\n\n getStates(update) {\n if (update) {\n this.promises.states = null;\n }\n this.promises.states = this.promises.states || this.props.socket.getForeignStates('system.adapter.*');\n\n return this.promises.states;\n }\n\n static getDerivedStateFromProps(props, state) {\n const location = Router.getLocation();\n\n const newState = {\n dialog: location.dialog,\n dialogProp: location.id\n };\n\n if (props.expertMode !== state.expertMode) {\n newState.expertMode = props.expertMode;\n }\n\n return newState;\n }\n\n getInstances = async () => {\n const start = Date.now();\n let instances = [];\n let instancesWorker = await this.props.instancesWorker.getInstances();\n\n if (!instancesWorker) {\n window.alert('Cannot read instances!');\n return;\n }\n\n instances = Object.values(instancesWorker);\n\n let memRssId = `${this.state.currentHost}.memRss`;\n this.states[memRssId] = this.states[memRssId] || (await this.props.socket.getState(memRssId));\n\n const host = this.states[memRssId];\n let processes = 1;\n let mem = host ? host.val : 0;\n for (let i = 0; i < instances.length; i++) {\n let inst = instances[i];\n if (!inst || !inst.common || inst.common.host !== this.props.currentHostName) {\n continue;\n }\n if (inst.common.enabled && inst.common.mode === 'daemon') {\n memRssId = inst._id + '.memRss';\n this.states[memRssId] = this.states[memRssId] || (await this.props.socket.getState(memRssId));\n const m = this.states[memRssId];\n mem += m ? m.val : 0;\n processes++;\n }\n }\n\n const formatted = {};\n\n instances.sort((a, b) => {\n const pA = a._id.split('.');\n const pB = b._id.split('.');\n const numA = parseInt(pA[pA.length - 1], 10);\n const numB = parseInt(pB[pB.length - 1], 10);\n const nameA = pA[pA.length - 2];\n const nameB = pB[pB.length - 2];\n\n if (nameA === nameB) {\n return numA > numB ? 1 : (numA < numB ? -1 : 0);\n } else {\n return nameA > nameB ? 1 : (nameA < nameB ? -1 : 0);\n }\n });\n\n let maxCompactGroupNumber = 1;\n const newState = {};\n\n // Do not make here Object.keys, as we have got invalid order in this case\n for (let i = 0; i < instances.length; i++) {\n const obj = instances[i];\n const common = obj ? obj.common : null;\n const objId = obj._id.split('.');\n const instanceId = objId[objId.length - 1];\n\n if (common.compactGroup && typeof common.compactGroup === 'number' && maxCompactGroupNumber < common.compactGroup) {\n maxCompactGroupNumber = common.compactGroup;\n }\n\n const instance = {};\n instance.id = obj._id.replace('system.adapter.', '');\n instance.obj = obj;\n instance.compact = !!common.compact;\n instance.host = common.host;\n instance.name = common.titleLang ? common.titleLang[this.props.lang] || common.titleLang.en || common.title || '' : common.title;\n instance.image = common.icon ? `adapter/${common.name}/${common.icon}` : 'img/no-image.png';\n instance.enabled = common.enabled;\n\n if (instance.name && typeof instance.name === 'object') {\n instance.name = instance.name[this.props.lang] || instance.name.en || '';\n }\n\n let links = common.localLinks || common.localLink || '';\n if (links && typeof links === 'string') {\n links = { _default: links };\n }\n\n const names = links ? Object.keys(links) : [];\n\n names.forEach(linkName => {\n instance.links = instance.links || [];\n let link = links[linkName];\n if (typeof link === 'string') {\n link = { link };\n }\n\n const urls = Utils.replaceLink(link.link, common.name, instanceId, {\n objects: instancesWorker,\n hostname: this.props.hostname,\n protocol: this.props.protocol,\n port: this.props.port,\n hosts: this.props.hosts,\n adminInstance: this.props.adminInstance,\n }) || [];\n\n if (urls.length === 1) {\n instance.links.push({\n name: linkName === '_default' ? (names.length === 1 ? '' : this.t('default')) : this.t(linkName),\n link: urls[0].url,\n port: urls[0].port,\n color: link.color,\n });\n } else if (urls.length > 1) {\n urls.forEach(item => {\n instance.links.push({\n name: linkName === '_default' ? (names.length === 1 ? '' : this.t('default')) : this.t(linkName),\n link: item.url,\n port: item.port,\n color: link.color,\n });\n });\n }\n });\n\n instance.canStart = !common.onlyWWW;\n instance.config = common.adminUI.config !== 'none';\n instance.jsonConfig = common.adminUI.config === 'json';\n instance.materialize = common.adminUI.config === 'materialize';\n instance.compactMode = common.runAsCompactMode || false;\n instance.mode = common.mode || null;\n instance.schedule = common.schedule || null;\n instance.loglevel = common.loglevel || null;\n instance.adapter = common.name || null;\n instance.version = common.version || null;\n instance.stoppedWhenWebExtension = instance.obj.common.mode === 'daemon' ? instance.obj.common.webExtension : undefined;\n\n if (instance.stoppedWhenWebExtension) {\n const eId = this.states[instance.id + '.info.extension'] || (await this.props.socket.getState(instance.id + '.info.extension'));\n instance.stoppedWhenWebExtension = eId ? eId.val : undefined;\n }\n\n console.log(obj._id);\n formatted[obj._id] = instance;\n }\n\n console.log('getInstances: ' + (Date.now() - start));\n\n if (this.state.deleting && !formatted['system.adapter.' + this.state.deleting]) {\n newState.deleting = null;\n }\n\n newState.maxCompactGroupNumber = maxCompactGroupNumber;\n newState.processes = processes;\n newState.mem = Math.round(mem);\n newState.instances = formatted;\n\n this._cacheList = null;\n this.setState(newState);\n }\n\n getParamsLocalAndPanel = async () => {\n const compact = await this.props.socket.readBaseSettings(this.state.currentHost)\n .then(e => !!e.config?.system?.compact)\n .catch(e => window.alert(`Cannot read compact mode by host \"${this.state.currentHost}\": ${e}`));\n\n let playArrow = false;\n let filterCompactGroup = 'All';\n try {\n playArrow = JSON.parse((window._localStorage || window.localStorage).getItem('Instances.playArrow'));\n filterCompactGroup = JSON.parse((window._localStorage || window.localStorage).getItem('Instances.filterCompactGroup'));\n } catch (error) {\n // ignore\n }\n\n const onlyCurrentHost = (window._localStorage || window.localStorage).getItem('Instances.onlyCurrentHost') === 'true';\n const viewMode = (window._localStorage || window.localStorage).getItem('Instances.viewMode') === 'true';\n const viewCategory = (window._localStorage || window.localStorage).getItem('Instances.viewCategory') === 'true';\n\n if (!filterCompactGroup && filterCompactGroup !== 0) {\n filterCompactGroup = 'All';\n }\n\n this._cacheList = null;\n this.setState({\n filterCompactGroup,\n compact,\n onlyCurrentHost,\n playArrow,\n viewMode,\n viewCategory\n });\n }\n\n async getData(update) {\n try {\n const adapters = this.props.socket.getAdapters(update);\n const statesProm = this.getStates();\n\n const [states, _adapters] = await Promise.all(\n [\n statesProm,\n adapters\n ]\n );\n this.adapters = _adapters || []\n this.states = states || [];\n\n } catch (error) {\n console.log(error)\n }\n\n if (!this.states) {\n return;\n }\n\n if (!this.subscribed) {\n this.subscribed = true;\n this.subscribeStates();\n }\n }\n\n onStateChange = (id, state) => {\n const oldState = this.states[id];\n this.states[id] = state;\n if ((!oldState && state) || (oldState && !state) || (oldState && state && oldState.val !== state.val)) {\n if (this.state.dialog === 'config' && this.state.dialogProp) {\n this.statesUpdateTimer && clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n this.shouldUpdateAfterDialogClosed = true;\n } else {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this._cacheList = null;\n this.forceUpdate();\n }, 1000);\n }\n }\n }\n };\n\n subscribeStates(isUnsubscribe) {\n const func = isUnsubscribe ? this.props.socket.unsubscribeState : this.props.socket.subscribeState;\n // func('system.adapter.*', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.alive', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.connected', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.inputCount', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.memRss', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.outputCount', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.logLevel', this.onStateChange);\n //func('system.host.*', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskFree', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskSize', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskWarning', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.freemem', this.onStateChange);\n func.call(this.props.socket, '*.info.connection', this.onStateChange);\n func.call(this.props.socket, '*.info.extension', this.onStateChange);\n }\n\n extendObject = (id, data) => {\n return this.props.socket.extendObject(id, data)\n .catch(error => window.alert(error));\n }\n\n openConfig = instance => {\n Router.doNavigate('tab-instances', 'config', instance);\n }\n\n // returns:\n // grey - daemon / disabled\n // green - daemon / run,connected,alive\n // blue - schedule\n // orangeDevice - daemon / run, connected to controller, not connected to device\n // orange - daemon / run,not connected\n // red - daemon / not run, not connected\n getInstanceStatus = obj => {\n const common = obj ? obj.common : null;\n const mode = common?.mode || '';\n let status = mode === 'daemon' ? 'green' : 'blue';\n\n if (common && common.enabled && (!common.webExtension || !obj.native.webInstance || mode === 'daemon')) {\n const alive = this.states[obj._id + '.alive'];\n const connected = this.states[obj._id + '.connected'];\n const connection = this.states[(obj._id).replace('system.adapter.', '') + '.info.connection'];\n if (common.webExtension && obj.native.webInstance) {\n const extension = this.states[(obj._id).replace('system.adapter.', '') + '.info.extension'];\n if (extension) {\n return extension.val ? 'green' : 'red';\n }\n }\n\n if (!connected?.val || !alive?.val) {\n status = mode === 'daemon' ? 'red' : 'orangeDevice';\n }\n if (connection && !connection?.val && status !== 'red') {\n status = 'orange';\n }\n } else {\n status = mode === 'daemon' ? 'grey' : 'blue';\n }\n\n return status;\n }\n\n isRunning = obj => {\n return obj?.common?.onlyWWW || obj?.common?.enabled;\n }\n\n isCompactGroup = obj => {\n return obj?.common?.compactGroup || null;\n }\n\n isCompact = obj => {\n return obj?.common?.runAsCompactMode || false;\n }\n\n isCompactGroupCheck = id => {\n const obj = this.adapters.find(({ _id }) => _id === `system.adapter.${id}`);\n return obj?.common?.compact || false;\n }\n\n getSentrySettings = obj => {\n return !!obj?.common?.plugins?.sentry || false;\n }\n\n isSentry = obj => {\n return (!!obj?.common?.plugins?.sentry && !obj?.common?.disableDataReporting) || false;\n }\n\n getSchedule = obj => {\n return obj?.common?.schedule ? obj.common.schedule : '';\n }\n\n getName = obj => {\n if (!obj || !obj.common) {\n return '';\n }\n if (obj.common.titleLang) {\n if (typeof obj.common.titleLang === 'string') {\n return obj.common.titleLang;\n } else {\n return obj.common.titleLang[this.props.lang] || obj.common.titleLang.en || '';\n }\n } else {\n if (obj.common.title && typeof obj.common.title === 'object') {\n return obj.common.title[this.props.lang] || obj.common.title.en || '';\n } else {\n return obj.common.title || '';\n }\n }\n }\n\n isModeSchedule = obj => {\n return (obj?.common?.mode && obj?.common?.mode === 'schedule') || false;\n }\n\n getMemoryLimitMB = obj => {\n return obj?.common?.memoryLimitMB;\n }\n\n getInstanceHost = obj => {\n return obj?.common?.host;\n }\n\n getRestartSchedule = obj => {\n return obj?.common?.restartSchedule ? obj.common.restartSchedule : '';\n }\n\n getMemory = id => {\n const state = this.states[id + '.memRss'];\n return state ? state?.val : 0;\n }\n\n getInputOutput = id => {\n const stateInput = this.states[id + '.inputCount'];\n const stateOutput = this.states[id + '.outputCount'];\n return {\n stateInput: stateInput?.val ? stateInput.val : 0,\n stateOutput: stateOutput?.val ? stateOutput.val : 0\n }\n }\n\n isAlive = id => {\n const state = this.states[id + '.alive'];\n return state ? state.val : false;\n }\n\n isConnectedToHost = id => {\n const state = this.states[id + '.connected'];\n return state ? state.val : false;\n }\n\n isConnected = id => {\n const instance = this.state.instances[id];\n return this.states[instance.id + '.info.connection'] ? this.states[instance.id + '.info.connection'].val : null;\n }\n\n getHeaders() {\n const headers = [];\n Object.keys(this.columns).forEach((column, index) => {\n if (!column.onlyExpert || column.onlyExpert === this.state.expertMode) {\n headers.push(<TableCell key={index}>{index}</TableCell>);\n }\n });\n\n return headers;\n }\n\n getModeIcon = (mode, status, className, stoppedWhenWebExtension) => {\n if (mode === 'daemon') {\n if (stoppedWhenWebExtension) {\n return <div className={clsx(className, this.props.classes.okSymbol)}><div className={this.props.classes.okSymbolInner}/></div>;\n } else\n if (status === 'orange') {\n return <WarningIcon className={className}/>;\n } else if (status === 'green') {\n return <div className={clsx(className, this.props.classes.okSymbol)}><div className={this.props.classes.okSymbolInner}/></div>;\n } else {\n return <SettingsIcon className={className} />;\n }\n } else if (mode === 'schedule') {\n return <ScheduleIcon className={className} />\n }\n return null;\n }\n\n getStatusFilter = value => {\n switch (value){\n case 'not_alive':\n return 'red';\n\n case 'alive_no_device':\n return 'orangeDevice';\n\n case 'alive_not_connected':\n return 'orange';\n\n case 'ok':\n return 'green';\n\n case 'disabled':\n default:\n return 'grey';\n }\n };\n\n getLogLevelIcon(level) {\n if (level === 'debug') {\n return <BugReportIcon />;\n } else if (level === 'info') {\n return <InfoIcon />;\n } else if (level === 'warn') {\n return <WarningIcon />;\n } else if (level === 'error') {\n return <ErrorIcon />;\n }\n return null;\n }\n\n setSentry = instance => {\n const disableDataReporting = !!this.isSentry(instance.obj)\n this.extendObject('system.adapter.' + instance.id, { common: { disableDataReporting } })\n .then(() => this.props.socket.setState(`system.adapter.${instance.id}.plugins.sentry.enabled`, {val: !disableDataReporting, ack: true}));\n };\n\n setTier = (instance, value) =>\n this.extendObject('system.adapter.' + instance.id, { common: { tier: value } });\n\n setName = (instance, value) =>\n this.extendObject('system.adapter.' + instance.id, { common: { titleLang: value } });\n\n setLogLevel = (instance, value, logOnTheFlyValue) => {\n if (logOnTheFlyValue) {\n this.props.socket.setState(`system.adapter.${instance.id}.logLevel`, value);\n } else {\n this.extendObject('system.adapter.' + instance.id, { common: { loglevel: value } });\n }\n };\n\n setSchedule = (instance, value) => {\n if (value) {\n this.extendObject('system.adapter.' + instance.id, { common: { schedule: value } });\n } else {\n this.props.socket.getObject('system.adapter.' + instance.id)\n .then(obj => {\n if (obj.common.schedule) {\n delete obj.common.schedule;\n return this.props.socket.setObject(obj._id, obj);\n }\n });\n }\n };\n\n setMemoryLimitMB = (instance, value) =>\n this.extendObject('system.adapter.' + instance.id, { common: { memoryLimitMB: value } });\n\n onDeleteInstance = (instance, deleteCustom) => {\n this.setState({ deleting: instance.id }, () =>\n this.props.executeCommand(`del ${instance.id}${deleteCustom ? ' --custom' : ''}${this.props.expertMode ? ' --debug' : ''}`));\n }\n\n setCompact = instance =>\n this.extendObject('system.adapter.' + instance.id, { common: { runAsCompactMode: !this.isCompact(instance.obj) } });\n\n setRestartSchedule = (instance, value) => {\n if (value) {\n this.extendObject('system.adapter.' + instance.id, { common: { restartSchedule: value } });\n } else {\n this.props.socket.getObject('system.adapter.' + instance.id)\n .then(obj => {\n if (obj.common.restartSchedule) {\n obj.common.restartSchedule = '';\n return this.props.socket.setObject(obj._id, obj);\n }\n });\n }\n };\n\n setHost = (instance, value) =>\n this.extendObject('system.adapter.' + instance.id, { common: { host: value } });\n\n setCompactGroup = (instance, value) => {\n this.extendObject('system.adapter.' + instance.id, {\n common: {\n compactGroup: value === 'controller' ? 0 :\n value === 'default' ? 1 : parseInt(value, 10)\n }\n });\n\n if (this.state.maxCompactGroupNumber < value) {\n this._cacheList = null;\n this.setState({ maxCompactGroupNumber: value });\n }\n }\n\n cacheInstances() {\n const currentHostNoPrefix = this.state.currentHost.replace(/^system.host./, '');\n\n this._cacheList = Object.keys(this.state.instances).map(id => {\n const instance = this.state.instances[id];\n const running = this.isRunning(instance.obj);\n const compactGroup = this.isCompactGroup(instance.obj);\n const checkCompact = this.isCompactGroupCheck(instance.adapter) && this.state.compact;\n const compact = this.isCompact(instance.obj);\n const supportCompact = instance.compact || false;\n const alive = this.isAlive(id);\n const connectedToHost = this.isConnectedToHost(id);\n const connected = this.isConnected(id);\n const name = this.getName(instance.obj);\n const logLevel = this.states[`${id}.logLevel`]?.val || instance.loglevel;\n const logLevelObject = instance.loglevel;\n const tier = instance?.obj?.common?.tier || 3;\n const loglevelIcon = this.getLogLevelIcon(logLevel);\n const inputOutput = this.getInputOutput(id);\n const modeSchedule = this.isModeSchedule(instance.obj);\n const memoryLimitMB = this.getMemoryLimitMB(instance.obj);\n\n const checkSentry = this.getSentrySettings(instance.obj); // is it possible to enable/disable sentry for this adapter\n const currentSentry = this.isSentry(instance.obj);\n\n return {\n id,\n running,\n host: instance.host,\n nameId: instance.id,\n compactGroup,\n checkCompact,\n mode: instance.mode,\n sentry: currentSentry,\n category: instance.obj.common.type || 'other',\n status: this.getInstanceStatus(instance.obj),\n alive,\n compact,\n supportCompact,\n connectedToHost,\n connected,\n name,\n logLevel,\n logLevelObject,\n tier,\n loglevelIcon,\n inputOutput,\n modeSchedule,\n checkSentry,\n memoryLimitMB,\n stoppedWhenWebExtension: instance.stoppedWhenWebExtension,\n allowInstanceSettings: this.props.repository[instance.adapter] ? this.props.repository[instance.adapter].allowInstanceSettings : true,\n allowInstanceDelete: this.props.repository[instance.adapter] ? this.props.repository[instance.adapter].allowInstanceDelete : true,\n allowInstanceLink: this.props.repository[instance.adapter] ? this.props.repository[instance.adapter].allowInstanceLink : true,\n }\n });\n\n if (this.state.playArrow) {\n this._cacheList = this._cacheList.filter(({ running }) => this.state.playArrow < 2 ? running : !running);\n }\n\n if (this.state.onlyCurrentHost) {\n this._cacheList = this._cacheList.filter(({ host }) => host === currentHostNoPrefix);\n }\n\n if (this.state.filterText) {\n const filterText = this.state.filterText.toLowerCase();\n this._cacheList = this._cacheList.filter(({ name, nameId }) => name.toLowerCase().includes(filterText) || nameId.toLowerCase().includes(filterText));\n }\n\n if (this.props.expertMode && (this.state.filterCompactGroup || this.state.filterCompactGroup === 0) && this.state.compact) {\n this._cacheList = this._cacheList.filter(({ compactGroup }) => compactGroup === this.state.filterCompactGroup ||\n this.state.filterCompactGroup === 'All' ||\n (this.state.filterCompactGroup === 'default' && (compactGroup === null || compactGroup === 1)) ||\n (this.state.filterCompactGroup === 'controller' && compactGroup === '0'))\n }\n if (this.state.filterMode) {\n this._cacheList = this._cacheList.filter(item => item.mode === this.state.filterMode);\n }\n if (this.state.filterStatus) {\n const status = this.getStatusFilter(this.state.filterStatus)\n this._cacheList = this._cacheList.filter(item => status === item.status);\n }\n\n return this._cacheList;\n }\n\n clearAllFilters() {\n const state = {\n playArrow: false,\n onlyCurrentHost: false,\n filterCompactGroup: 'All',\n filterMode: null,\n filterStatus: null,\n filterText: ''\n };\n\n (window._localStorage || window.localStorage).removeItem('instances.filter');\n (window._localStorage || window.localStorage).removeItem(`Instances.playArrow`);\n (window._localStorage || window.localStorage).removeItem('Instances.onlyCurrentHost');\n (window._localStorage || window.localStorage).removeItem('Instances.filterCompactGroup');\n (window._localStorage || window.localStorage).removeItem('Instances.filterMode');\n (window._localStorage || window.localStorage).removeItem('Instances.filterStatus');\n\n this._cacheList = null;\n this.setState(state, () => {\n if (this.inputRef.current) {\n this.inputRef.current.value = '';\n }\n this.cacheInstances();\n });\n }\n\n getPanels() {\n if (!this._cacheList) {\n this.cacheInstances();\n }\n\n let list = this._cacheList.map((item, idx) => {\n const id = item.id;\n const instance = this.state.instances[id];\n\n if (this.state.viewMode) {\n return {\n category: item.category,\n render: <InstanceCard\n deleting={this.state.deleting === instance.id}\n adminInstance={this.props.adminInstance}\n maxCompactGroupNumber={this.state.maxCompactGroupNumber}\n onDeleteInstance={this.onDeleteInstance}\n expertMode={this.props.expertMode}\n extendObject={this.extendObject}\n getMemory={this.getMemory}\n getRestartSchedule={() => this.getRestartSchedule(instance.obj)}\n getSchedule={() => this.getSchedule(instance.obj)}\n hosts={this.props.hosts}\n id={id}\n deleteCustomSupported={this.state.deleteCustomSupported}\n\n instance={instance}\n key={instance.id}\n openConfig={this.openConfig}\n setCompact={this.setCompact}\n setCompactGroup={this.setCompactGroup}\n setHost={this.setHost}\n setLogLevel={this.setLogLevel}\n setMemoryLimitMB={this.setMemoryLimitMB}\n setName={this.setName}\n setRestartSchedule={this.setRestartSchedule}\n setSchedule={this.setSchedule}\n setSentry={this.setSentry}\n setTier={this.setTier}\n t={this.t}\n lang={this.props.lang}\n themeType={this.props.themeType}\n item={item}\n />\n };\n } else {\n return {\n category: item.category,\n render: <InstanceRow\n deleting={this.state.deleting === instance.id}\n deleteCustomSupported={this.state.deleteCustomSupported}\n adminInstance={this.props.adminInstance}\n maxCompactGroupNumber={this.state.maxCompactGroupNumber}\n onDeleteInstance={this.onDeleteInstance}\n expanded={this.state.expanded}\n expertMode={this.props.expertMode}\n extendObject={this.extendObject}\n getInstanceStatus={() => this.getInstanceStatus(instance.obj)}\n getMemory={this.getMemory}\n getModeIcon={this.getModeIcon}\n getRestartSchedule={() => this.getRestartSchedule(instance.obj)}\n getSchedule={() => this.getSchedule(instance.obj)}\n onExpandRow={this.onExpandRow}\n hosts={this.props.hosts}\n id={id}\n idx={idx}\n\n instance={instance}\n key={instance.id}\n openConfig={this.openConfig}\n setCompact={this.setCompact}\n setCompactGroup={this.setCompactGroup}\n setHost={this.setHost}\n setLogLevel={this.setLogLevel}\n setMemoryLimitMB={this.setMemoryLimitMB}\n setName={this.setName}\n setRestartSchedule={this.setRestartSchedule}\n setSchedule={this.setSchedule}\n setSentry={this.setSentry}\n setTier={this.setTier}\n t={this.t}\n lang={this.props.lang}\n themeType={this.props.themeType}\n item={item}\n />\n };\n }\n });\n\n if (!list.length) {\n return <div\n title={this.t('Click to clear all filters')}\n onClick={() => this.clearAllFilters()}\n style={{\n margin: 20,\n fontSize: 26,\n textAlign: 'center',\n cursor: 'pointer',\n }}\n >{this.t('all items are filtered out')}</div>\n }\n\n if (!this.state.viewMode && this.state.viewCategory) {\n let categoryArray = [];\n\n list.forEach(({ category }) => !categoryArray.includes(category) && categoryArray.push(category));\n\n categoryArray.sort((a, b) => {\n if (a === 'general' && b !== 'general') {\n return -1;\n } else if (a !== 'general' && b === 'general') {\n return 1;\n } else if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else {\n return 0;\n }\n });\n\n return categoryArray.map(name => <InstanceCategory\n key={name}\n name={name}\n expanded={this.state.expandedFolder.includes(name)}\n onExpand={expanded => {\n const expandedFolder = [...this.state.expandedFolder];\n const pos = expandedFolder.indexOf(name);\n if (expanded) {\n if (pos === -1) {\n expandedFolder.push(name);\n expandedFolder.sort();\n }\n } else {\n if (pos !== -1) {\n expandedFolder.splice(pos, 1);\n }\n }\n (window._localStorage || window.localStorage).setItem('Instances.expandedFolder', JSON.stringify(expandedFolder));\n this.setState({expandedFolder});\n }}\n >\n {list.filter(({ category }) => category === name).map(({ render }) => render)}\n </InstanceCategory>);\n }\n\n return list.map(({ render }) => render);\n }\n\n onExpandRow = panel => {\n this.setState(prevState => ({expanded: prevState.expanded !== panel ? panel : null}));\n }\n\n async getHostsData() {\n this.props.socket.getHostInfo(this.state.currentHost, false, 10000)\n .catch(error => {\n if (!error.toString().includes('May not read')) {\n window.alert('Cannot read host information: ' + error);\n }\n return {};\n })\n .then(hostData => {\n this._cacheList = null;\n this.setState({ hostData })\n });\n\n let memState;\n let memAvailable = await this.props.socket.getState(`${this.state.currentHost}.memAvailable`);\n let freemem = await this.props.socket.getState(`${this.state.currentHost}.freemem`);\n let object = await this.props.socket.getObject(`${this.state.currentHost}`);\n\n if (memAvailable) {\n memState = memAvailable;\n } else if (freemem) {\n memState = freemem;\n }\n\n if (memState) {\n const totalmem = (object?.native.hardware.totalmem / (1024 * 1024));\n const percent = Math.round((memState.val / totalmem) * 100);\n this._cacheList = null;\n this.setState({\n percent,\n memFree: memState.val\n });\n }\n }\n\n changeSetStateBool = value =>\n this.setState(state => {\n (window._localStorage || window.localStorage).setItem(`Instances.${value}`, state[value] ? 'false' : 'true');\n return { [value]: !state[value] };\n });\n\n changeSetState = (name, value) =>\n this.setState(state => {\n (window._localStorage || window.localStorage).setItem(`Instances.${name}`, value);\n return { [name]: value };\n });\n\n changeStartedStopped = () => {\n this._cacheList = null;\n this.setState(state => {\n const playArrow = !state.playArrow ? 1 : state.playArrow < 2 ? 2 : false;\n (window._localStorage || window.localStorage).setItem(`Instances.playArrow`, JSON.stringify(playArrow));\n return { playArrow };\n });\n };\n\n changeCompactGroup = filterCompactGroup => {\n this._cacheList = null;\n (window._localStorage || window.localStorage).setItem(`Instances.filterCompactGroup`, JSON.stringify(filterCompactGroup));\n this.setState({ filterCompactGroup });\n };\n\n handleFilterChange(event) {\n this.typingTimer && clearTimeout(this.typingTimer);\n\n this.typingTimer = setTimeout(value => {\n this.typingTimer = null;\n this._cacheList = null;\n this.setState({ filterText: value });\n (window._localStorage || window.localStorage).setItem('instances.filter', value);\n }, 300, event.target.value);\n }\n\n render() {\n if (!this.state.instances) {\n return <LinearProgress />;\n }\n\n const { classes } = this.props;\n\n if (this.props.currentHost !== this.state.currentHost) {\n this.hostsTimer = this.hostsTimer || setTimeout(() => {\n this.hostsTimer = null;\n this.setState({\n currentHost: this.props.currentHost\n }, async () => await this.updateData());\n }, 200);\n }\n\n if (this.state.dialog === 'config' && this.state.dialogProp) {\n const instance = this.state.instances[this.state.dialogProp] || null;\n if (instance) {\n return <Paper className={classes.paper}>\n <Config\n adapter={instance.id.split('.')[0]}\n adminInstance={this.props.adminInstance}\n className={classes.iframe}\n configStored={this.props.configStored}\n dateFormat={this.props.dateFormat}\n icon={instance.image}\n instance={parseInt(instance.id.split('.')[1])}\n isFloatComma={this.props.isFloatComma}\n jsonConfig={instance.jsonConfig}\n lang={this.props.lang}\n materialize={instance.materialize}\n menuPadding={this.props.menuPadding}\n socket={this.props.socket}\n t={this.t}\n theme={this.props.theme}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n width={this.props.width}\n version={instance.version}\n\n onRegisterIframeRef={ref => this.props.onRegisterIframeRef(ref)}\n onUnregisterIframeRef={ref => this.props.onUnregisterIframeRef(ref)}\n />\n </Paper>;\n }\n }\n\n if (this.shouldUpdateAfterDialogClosed) {\n this.shouldUpdateAfterDialogClosed = false;\n if (!this.statesUpdateTimer) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n }\n }\n\n const hostData = this.state.hostData ?\n (this.state.hostData['Disk free'] ? `${this.t('Disk free')}: ${Math.round(this.state.hostData['Disk free'] / (this.state.hostData['Disk size'] / 100))}%, ` : '') +\n `${this.t('Total RAM usage')}: ${this.state.mem} Mb / ` +\n `${this.t('Free')}: ${this.state.percent}% = ${this.state.memFree} Mb ` +\n `[${this.t('Host')}: ${this.props.currentHostName} - ${this.state.processes} ${this.state.processes === 1 ? this.t('process'): this.t('processes')}]` : null;\n\n return <TabContainer>\n <TabHeader>\n <Tooltip title={this.t('Show / hide List')}>\n <IconButton size=\"large\" onClick={() => this.changeSetStateBool('viewMode')}>\n {this.state.viewMode ? <ViewModuleIcon /> : <ViewListIcon />}\n </IconButton>\n </Tooltip>\n\n {!this.state.viewMode && <Tooltip title={this.t('Category')}>\n <IconButton size=\"large\" onClick={() => this.changeSetStateBool('viewCategory')}>\n <ListIcon color={this.state.viewCategory ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>}\n\n {!this.state.viewMode && this.state.viewCategory && <><Tooltip title={this.t('expand all')}>\n <IconButton size=\"large\" onClick={() => {\n // all folders\n let expandedFolder = [];\n this._cacheList.forEach(({ category }) => !expandedFolder.includes(category) && expandedFolder.push(category));\n expandedFolder.sort();\n (window._localStorage || window.localStorage).setItem('Instances.expandedFolder', JSON.stringify(expandedFolder));\n this.setState({ expandedFolder })\n }}>\n <FolderOpenIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title={this.t('collapse all')}>\n <IconButton size=\"large\" onClick={() => {\n (window._localStorage || window.localStorage).removeItem('Instances.expandedFolder');\n this.setState({ expandedFolder: [] })\n }}>\n <FolderIcon />\n </IconButton>\n </Tooltip>\n </>}\n <Tooltip title={this.t('Reload')}>\n <IconButton size=\"large\" onClick={() => this.getData(true)}>\n <RefreshIcon />\n </IconButton>\n </Tooltip>\n {this.props.hosts.length > 1 ? <Tooltip title={this.t('Show instances only for current host')}>\n <IconButton size=\"large\" onClick={() => this.changeSetStateBool('onlyCurrentHost')}>\n <DevicesIcon color={this.state.onlyCurrentHost ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip> : null}\n <Tooltip title={this.t(!this.state.playArrow ?\n 'Show running or stopped instances' :\n this.state.playArrow < 2 ?\n 'Showed only running instances' :\n 'Showed only stopped instances')}>\n <IconButton size=\"large\" onClick={() => this.changeStartedStopped(this.state.playArrow)}>\n <PlayArrowIcon style={this.state.playArrow === 2 ? {color: 'red'} : null}\n color={this.state.playArrow && this.state.playArrow < 2 ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n <Tooltip title={this.t('Filter instances')}>\n <IconButton size=\"large\" onClick={() =>\n instanceFilterDialogCallback(newState => {\n if (newState) {\n this._cacheList = null;\n this.setState(newState);\n this.changeSetState('filterMode', newState.filterMode);\n this.changeSetState('filterStatus', newState.filterStatus);\n }\n }, this.state.filterMode, this.state.filterStatus, this.getModeIcon, this.props.theme)}>\n <FilterListIcon style={{ width: 16, height: 16 }} className={this.state.filterMode || this.state.filterStatus ? classes.filterActive : ''}/>\n </IconButton>\n </Tooltip>\n {/*this.props.expertMode && <Tooltip title=\"sentry\">\n <IconButton\n size=\"small\"\n className={classes.button}\n onClick={() => this.changeSetStateBool('sentry')}\n >\n <CardMedia\n className={clsx(classes.sentry, !this.state.sentry && classes.contrast0)}\n component=\"img\"\n image={sentry}\n />\n </IconButton>\n </Tooltip>*/}\n {this.props.expertMode && this.state.compact ?\n <CustomSelectButton\n title={this.t('Filter specific compact group')}\n t={this.t}\n arrayItem={[\n { name: 'All' },\n { name: 'controller' },\n { name: 'default' },\n ...Array(this.state.maxCompactGroupNumber - 1).fill().map((_, idx) => ({ name: idx + 2 }))\n ]}\n buttonIcon={<ViewCompactIcon style={{ marginRight: 4 }} color=\"primary\" />}\n onClick={value => this.changeCompactGroup(value)}\n value={this.state.filterCompactGroup} />\n : null}\n <div className={classes.grow} />\n <TextField\n variant=\"standard\"\n inputRef={this.inputRef}\n label={this.t('Filter')}\n style={{ margin: '5px 0' }}\n defaultValue={this.state.filterText}\n onChange={event => this.handleFilterChange(event)}\n InputProps={{\n endAdornment: (\n this.state.filterText ? <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n onClick={() => {\n this.inputRef.current.value = '';\n this._cacheList = null;\n this.setState({ filterText: '' });\n (window._localStorage || window.localStorage).setItem('instances.filter', '');\n }}\n >\n <CloseIcon />\n </IconButton>\n </InputAdornment> : null\n ),\n }}\n />\n <div className={classes.grow} />\n <Hidden xsDown>\n {hostData}\n </Hidden>\n </TabHeader>\n <TabContent overflow=\"auto\">\n <div className={this.state.viewMode ? classes.cards : ''}>\n {this.getPanels(classes)}\n </div>\n </TabContent>\n </TabContainer>;\n }\n}\n\nInstances.propTypes = {\n ready: PropTypes.bool,\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n instancesWorker: PropTypes.object,\n\n hostname: PropTypes.string,\n hosts: PropTypes.array,\n protocol: PropTypes.string,\n adminInstance: PropTypes.string,\n repository: PropTypes.object,\n currentHost: PropTypes.string,\n\n socket: PropTypes.object,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n theme: PropTypes.object,\n systemLang: PropTypes.string,\n width: PropTypes.string,\n menuPadding: PropTypes.number,\n isFloatComma: PropTypes.bool,\n dateFormat: PropTypes.string,\n\n onRegisterIframeRef: PropTypes.func,\n onUnregisterIframeRef: PropTypes.func,\n};\n\nexport default withWidth()(withStyles(styles)(Instances));\n"],"sourceRoot":""}