@iobroker/adapter-react-v5 3.1.23 → 3.1.24

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectBrowser.js","names":["ICON_SIZE","ROW_HEIGHT","ITEM_LEVEL","SMALL_BUTTON_SIZE","COLOR_NAME_SYSTEM","COLOR_NAME_SYSTEM_ADAPTER","COLOR_NAME_ERROR_DARK","COLOR_NAME_ERROR_LIGHT","COLOR_NAME_CONNECTED_DARK","COLOR_NAME_CONNECTED_LIGHT","COLOR_NAME_DISCONNECTED_DARK","COLOR_NAME_DISCONNECTED_LIGHT","styles","theme","toolbar","minHeight","toolbarButtons","padding","marginLeft","switchColumnAuto","spacing","dialogColumns","transition","dialogColumnsLabel","fontSize","paddingTop","columnCustom","width","display","columnCustomEditable","cursor","columnCustomCenter","textAlign","columnCustomLeft","columnCustomRight","width100","transparent_10","opacity","transparent_20","transparent_30","transparent_40","transparent_50","transparent_60","transparent_70","transparent_80","transparent_90","transparent_100","columnsDialogInputWidth","headerRow","paddingLeft","height","whiteSpace","userSelect","buttonClearFilter","position","buttonClearFilterIcon","zIndex","top","left","color","tableDiv","overflow","tableRow","lineHeight","verticalAlign","background","palette","mode","primary","dark","light","Utils","invertColor","main","flexWrap","tableRowLines","borderBottom","borderRight","tableRowNoDragging","tableRowAlias","tableRowAliasReadWrite","checkBox","cellId","textOverflow","marginTop","cellIdSpan","cellIdIconFolder","marginRight","secondary","cellIdIconDocument","cellIdIconOwn","cellCopyButton","right","cellEditButton","cellName","cellIdAlias","fontStyle","cellIdAliasReadWriteDiv","cellIdAliasAlone","cellIdAliasReadWrite","cellType","cellRole","cellRoom","cellEnumParent","cellFunc","cellValue","cellValueButton","transform","cellValueButtonFalse","cellAdapter","cellValueTooltip","cellValueText","cellValueFile","cellValueTooltipTitle","cellValueTooltipValue","cellValueTooltipBoth","cellValueTooltipBox","cellValueTextUnit","newValue","animation","cellValueTextState","cellValueTooltipCopy","bottom","cellValueTooltipEdit","cellButtons","cellButtonsButton","cellButtonsEmptyButton","cellButtonMinWidth","minWidth","cellButtonsButtonAlone","cellButtonsButtonWithCustoms","cellButtonsButtonWithoutCustoms","cellButtonsValueButton","action","active","cellButtonsValueButtonCopy","cellButtonsValueButtonEdit","parseInt","filteredOut","filteredParentOut","filterInput","marginBottom","selectIcon","selectNone","itemSelected","header","headerCell","headerCellValue","headerCellInput","headerCellSelectItem","visibleButtons","grow","flexGrow","enumIconDiv","borderRadius","enumIcon","enumDialog","enumList","enumButton","enumCheckbox","buttonDiv","alignItems","aclText","rightsObject","rightsState","textCenter","tooltipAccessControl","flexDirection","fontSizeTitle","draggable","nonDraggable","selectClearButton","backgroundColor","iconDeviceConnected","iconDeviceDisconnected","iconDeviceError","resizeHandle","resizeHandleRight","borderColor","borderRightStyle","resizeHandleLeft","borderLeft","borderLeftStyle","generateFile","filename","obj","el","document","createElement","setAttribute","encodeURIComponent","JSON","stringify","style","body","appendChild","click","removeChild","binarySearch","list","find","_start","_end","undefined","length","middle","Math","floor","applyFilter","item","filters","lang","objects","context","counter","customFilter","selectedTypes","_depth","id","toLowerCase","name","type","custom","role","room","common","members","func","data","Array","isArray","includes","startsWith","Object","keys","expertMode","endsWith","expert","fID","fName","getName","visible","hasVisibleChildren","children","forEach","_item","sumVisibility","count","hasVisibleParent","getVisibleItems","_result","push","getSystemIcon","k","imagePrefix","icon","getSelectIdIcon","buildTree","options","ids","sort","a","b","replace","currentPathArr","currentPath","currentPathLen","root","info","funcEnums","roomEnums","roles","types","customs","enums","hasSomeCustoms","croot","i","parts","split","supportCustoms","adminUI","substring","repeat","curPath","_croot","parent","level","generated","title","hasCustoms","button","write","u","move","splice","join","aName","pop","bName","findNode","_parts","_path","_level","found","_id","en","toString","findRoomsForObject","withParentInfo","rooms","per","origin","ownEnums","findEnumsForObjectAsIds","enumName","funcs","findFunctionsForObject","pef","formatValue","state","texts","dateFormat","isFloatComma","states","getStates","isCommon","valText","v","val","match","Date","round","s","valFull","unit","t","value","ack","ts","formatDate","lc","from","user","c","quality","quality2text","q","nbr","src","_id_","aIcon","cIcon","instance","prepareSparkData","values","time","DEFAULT_FILTER","ITEM_IMAGES","channel","device","adapter","meta","chart","config","group","host","schedule","script","folder","StyledBadge","withStyles","badge","border","paper","Badge","SCREEN_WIDTHS","xs","idWidth","fields","widths","sm","md","buttons","lg","changedFrom","qualityCode","timestamp","lastChange","xl","objectsAlreadyLoaded","ObjectBrowser","props","console","log","findItem","pausedSubscribes","statesUpdateTimer","setTimeout","forceUpdate","clearTimeout","oldObj","newState","event","filterFunc","columnsForAdmin","parse","parseObjectForAdmins","setState","objectsUpdateTimer","lastAppliedFilter","result","mobile","objId","e","_enObj","enObj","socket","setObject","objs","hasOwnProperty","_createAllEnums","getState","def","window","alert","evt","f","target","files","r","FileReader","onload","contents","json","len","loadObjects","readAsText","selected","selectedNonObject","filter","acl","check","valueNum","arrayTooltipText","funcRenderStateObject","rights","classes","ownerGroup","ownerUser","owner","map","resizerActiveDiv","widthNext","resizeLeft","resizerOldWidth","clientX","resizerPosition","resizerOldWidthNext","resizerMin","resizerNextMin","resizerCurrentWidths","resizerActiveName","resizerNextName","resizerNextDiv","columnsVisibility","scrollBarWidth","customWidth","resizeTimeout","_localStorage","localStorage","setItem","dialogName","removeEventListener","resizerMouseMove","resizerMouseUp","resizerActiveIndex","storedWidths","parentNode","dataset","previousElementSibling","handle","querySelector","nextElementSibling","min","offsetWidth","addEventListener","calculateColumnsVisibility","removeItem","extendObject","error","lastSelectedItems","getItem","expanded","defaultFilters","assign","_sessionStorage","sessionStorage","tableRef","createRef","filterRefs","selectedFound","subscribes","visibleCols","columns","pos","indexOf","possibleCols","customDialog","router","location","getLocation","dialog","pauseSubscribe","columnsWidths","foldersFirst","statesView","objectStatesView","loaded","filterKey","depth","expandAllVisible","toast","editObjectDialog","viewFileDialog","roleDialog","modalEmptyId","columnsSelectorShow","columnsAuto","columnsDialogTransparent","columnsEditCustomDialog","customColumnDialogValueChanged","showExportDialog","linesEnabled","edit","editObject","deleteObject","customConfig","copyState","editState","close","filter_id","filter_name","filter_type","filter_role","filter_room","filter_func","filter_custom","objectChangedByUser","objectChangedBy","objectChangedFrom","stateChangedBy","stateChangedFrom","deviceError","deviceDisconnected","deviceConnected","aclOwner_read_object","aclOwner_read_state","aclOwner_write_object","aclOwner_write_state","aclGroup_read_object","aclGroup_read_state","aclGroup_write_object","aclGroup_write_state","aclEveryone_read_object","aclEveryone_read_state","aclEveryone_write_object","aclEveryone_write_state","levelPadding","update","Promise","resolve","updating","then","objectsWorker","getObjects","systemConfig","defaultNewAcl","object","defaultHistory","getAdditionalColumns","node","expandAllSelected","onAfterSelect","showError","cb","changed","path","isDouble","getObjectName","language","onSelect","loadAllObjects","registerHandler","onObjectChange","subscribeObject","filterTimer","unregisterHandler","unsubscribeObject","pattern","unsubscribeState","onStateChange","toggleItem","multiSelect","isLast","cols","unshift","underline","clsx","_renderDefinedList","column","getAdapters","instances","recordStates","unsubscribe","_root","_partyId","shift","adminColumns","objTypes","warn","subscribeState","isPause","current","tagName","onFilterChanged","childNodes","someNotEmpty","attr","onFilter","firstChild","hasIcons","newFilter","getFilterSelect","onExpandAll","expandDepth","collapseDepth","idDot","idLen","key","isAll","_getSelectedIdsForExport","getEnumsForId","_exportObjects","allowObjectCreation","refreshComponent","showExpertButton","disableColumnSelector","onCollapseAll","onExpandVisible","onCollapseVisible","onStatesViewVisible","objectAddBoolean","toolTipObjectCreating","modalNewObj","objectImportExport","input","handleJsonUpload","objectBrowserEditObject","objectEditBoolean","doNavigate","text","stopPropagation","preventDefault","copy","onObjectDelete","objectEditOfAccessControl","modalEditOfAccess","modalEditOfAccessObjData","cellButtonsButtonIcon","aclTooltip","renderTooltipAccessControl","aclSystemConfig","isNaN","Number","dontDelete","objectCustomDialog","sparkline","now","setHours","getHours","setMinutes","setSeconds","setMilliseconds","nowMs","getTime","getHistory","start","end","step","addID","aggregate","sparks","getElementsByClassName","subscribe","fill","copyText","onCopy","tooltip","popper","readHistory","enumIds","newArray","enumId","promises","all","_syncEnum","toCheck","itemEnums","enumDialogEnums","enumsOriginal","syncEnum","labelId","objectBrowserEditRole","ObjectBrowserEditRole","isSave","customColumnDialog","parseFloat","getObject","setCustomValue","it","Error","getCustomValue","initValue","keyCode","onColumnsEditCustomDialogClose","checked","pathText","p","notEditable","align","isExpanded","iconFolder","itemType","toggleExpanded","iconItem","typeImg","checkbox","valueEditable","objectBrowserViewFile","enumEditable","checkVisibleObjectType","newValueTitle","readWriteAlias","alias","read","scrollToItem","checkColor","invertBackground","icons","statusStates","colorSet","errorId","themeType","onlineId","offlineId","dragEnabled","adapterColumns","renderCustomValue","updateOpened","renderColumnValue","renderColumnButtons","items","leaf","renderLeaf","DragWrapper","renderItem","WIDTHS","nameHeader","widthSum","newWidth","reduce","accumulator","filterClearInValue","isFilterEmpty","clearFilter","getFilterInput","resizerMouseDown","resizerReset","getFilterSelectType","getFilterSelectRole","getFilterSelectRoom","getFilterSelectFunction","getFilterSelectCustoms","clientWidth","getElementById","scrollIntoView","behavior","block","inline","ObjectCustomDialog","changedIds","themeName","valAck","expire","ObjectBrowserEditObject","ObjectBrowserViewFile","objectBrowserValue","ObjectBrowserValue","res","onUpdate","unsubscribeTimer","jsonFilter","checkUnsubscribes","getToolbar","renderHeader","renderToast","renderColumnsEditCustomDialog","renderColumnsSelectorDialog","renderCustomDialog","renderEditValueDialog","renderEditObjectDialog","renderViewObjectFileDialog","renderEditRoleDialog","renderEnumDialog","renderErrorDialog","renderExportDialog","modalNewObject","modalEditOfAccessControl","Component","defaultProps","propTypes","PropTypes","string","oneOfType","array","bool","isRequired","number","dragSettings","useDrag","_export","withWidth"],"sources":["ObjectBrowser.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport copy from './copy-to-clipboard';\nimport withStyles from '@mui/styles/withStyles';\nimport SVG from 'react-inlinesvg';\n\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select from '@mui/material/Select';\nimport FormControl from '@mui/material/FormControl';\nimport Input from '@mui/material/Input';\nimport Grid from '@mui/material/Grid';\nimport Badge from '@mui/material/Badge';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport Checkbox from '@mui/material/Checkbox';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';\nimport ListItemText from '@mui/material/ListItemText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Fab from '@mui/material/Fab';\nimport TextField from '@mui/material/TextField';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport Slider from '@mui/material/Slider';\nimport Typography from '@mui/material/Typography';\n\n// Icons\nimport IconEdit from '@mui/icons-material/Edit';\nimport IconDelete from '@mui/icons-material/Delete';\nimport IconConfig from '@mui/icons-material/Settings';\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconSchedule from '@mui/icons-material/CalendarToday';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconScript from '@mui/icons-material/Code';\nimport IconChart from '@mui/icons-material/ShowChart';\nimport IconEnum from '@mui/icons-material/ListAlt';\nimport IconColumns from '@mui/icons-material/ViewColumn';\nimport IconClose from '@mui/icons-material/Close';\nimport IconCheck from '@mui/icons-material/Check';\nimport BuildIcon from '@mui/icons-material/Build';\nimport PublishIcon from '@mui/icons-material/Publish';\nimport AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport LooksOneIcon from '@mui/icons-material/LooksOne';\nimport PressButtonIcon from '@mui/icons-material/RoomService';\nimport IconError from '@mui/icons-material/Error';\nimport IconDisconnected from '@mui/icons-material/WifiOff';\n\nimport IconExpert from '../icons/IconExpert';\nimport IconAdapter from '../icons/IconAdapter';\nimport IconAlias from '../icons/IconAlias';\nimport IconChannel from '../icons/IconChannel';\nimport IconCopy from '../icons/IconCopy';\nimport IconDevice from '../icons/IconDevice';\nimport IconDocument from '../icons/IconDocument';\nimport IconDocumentReadOnly from '../icons/IconDocumentReadOnly';\nimport IconInstance from '../icons/IconInstance';\nimport IconState from '../icons/IconState';\nimport IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\nimport IconClearFilter from '../icons/IconClearFilter';\n\n// own\nimport Icon from './Icon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabHeader from './TabHeader';\n\nconst ICON_SIZE = 24;\nconst ROW_HEIGHT = 32;\nconst ITEM_LEVEL = 16;\nconst SMALL_BUTTON_SIZE = 20;\nconst COLOR_NAME_SYSTEM = '#ff6d69';\nconst COLOR_NAME_SYSTEM_ADAPTER = '#5773ff';\nconst COLOR_NAME_ERROR_DARK = '#ff413c';\nconst COLOR_NAME_ERROR_LIGHT = '#86211f';\nconst COLOR_NAME_CONNECTED_DARK = '#57ff45';\nconst COLOR_NAME_CONNECTED_LIGHT = '#098c04';\nconst COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';\nconst COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';\n\nconst styles = theme => ({\n toolbar: {\n minHeight: 38,//Theme.toolbar.height,\n // boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4\n },\n switchColumnAuto: {\n marginLeft: theme.spacing(2),\n },\n dialogColumns: {\n transition: 'opacity 1s'\n },\n dialogColumnsLabel: {\n fontSize: 12,\n paddingTop: theme.spacing(1),\n },\n columnCustom: {\n width: '100%',\n display: 'inline-block',\n },\n columnCustomEditable: {\n cursor: 'text'\n },\n columnCustomCenter: {\n textAlign: 'center',\n },\n columnCustomLeft: {\n textAlign: 'left',\n },\n columnCustomRight: {\n textAlign: 'right',\n },\n width100: {\n width: '100%',\n },\n transparent_10: {\n opacity: 0.1\n },\n transparent_20: {\n opacity: 0.2\n },\n transparent_30: {\n opacity: 0.3\n },\n transparent_40: {\n opacity: 0.4\n },\n transparent_50: {\n opacity: 0.5\n },\n transparent_60: {\n opacity: 0.6\n },\n transparent_70: {\n opacity: 0.7\n },\n transparent_80: {\n opacity: 0.8\n },\n transparent_90: {\n opacity: 0.9\n },\n transparent_100: {\n opacity: 1\n },\n columnsDialogInputWidth: {\n width: 80\n },\n headerRow: {\n paddingLeft: theme.spacing(1),\n height: 38,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n },\n buttonClearFilter: {\n position: 'relative',\n float: 'right',\n padding: 0,\n },\n buttonClearFilterIcon: {\n zIndex: 2,\n position: 'absolute',\n top: 0,\n left: 0,\n color: '#FF0000',\n opacity: 0.7\n },\n\n tableDiv: {\n paddingTop: 0,//theme.spacing(1),\n paddingLeft: 0,\n width: `calc(100% - ${theme.spacing(1)})`,\n height: `calc(100% - 38px)`,\n overflow: 'auto'\n },\n tableRow: {\n paddingLeft: theme.spacing(1),\n height: ROW_HEIGHT,\n lineHeight: ROW_HEIGHT + 'px',\n verticalAlign: 'top',\n userSelect: 'none',\n width: '100%',\n '&:hover': {\n background: `${theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light} !important`,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n },\n tableRowLines: {\n borderBottom: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n '& > div': {\n borderRight: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n }\n },\n tableRowNoDragging: {\n cursor: 'pointer',\n },\n tableRowAlias: {\n height: ROW_HEIGHT + 10,\n },\n tableRowAliasReadWrite: {\n height: ROW_HEIGHT + 22,\n },\n checkBox: {\n padding: 0,\n },\n cellId: {\n position: 'relative',\n fontSize: '1rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n //verticalAlign: 'top',\n //position: 'relative',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n },\n '& .iconOwn': {\n display: 'block',\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n marginTop: 2,\n float: 'right',\n },\n '&:hover .iconOwn': {\n display: 'none'\n },\n '& *': {\n width: 'initial'\n }\n },\n cellIdSpan: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n //display: 'inline-block',\n //verticalAlign: 'top',\n },\n cellIdIconFolder: {\n marginRight: theme.spacing(1),\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n cursor: 'pointer',\n color: theme.palette.secondary.main || '#fbff7d',\n verticalAlign: 'top',\n },\n cellIdIconDocument: {\n verticalAlign: 'middle',\n marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n marginRight: theme.spacing(1),\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n },\n cellIdIconOwn: {\n\n },\n cellCopyButton: {\n // color: 'white',\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n '&:hover': {\n opacity: 1,\n },\n position: 'absolute',\n right: 3,\n },\n cellEditButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n color: 'white',\n position: 'absolute',\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n right: SMALL_BUTTON_SIZE + 3,\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\n },\n },\n cellName: {\n display: 'inline-block',\n verticalAlign: 'top',\n fontSize: 14,\n marginLeft: 5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n }\n },\n cellIdAlias: {\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.7,\n '&:hover': {\n color: theme.palette.mode === 'dark' ? '#009900' : '#007700',\n }\n },\n cellIdAliasReadWriteDiv: {\n height: 24,\n marginTop: -5,\n },\n cellIdAliasAlone: {\n lineHeight: 0,\n },\n cellIdAliasReadWrite: {\n lineHeight: '12px',\n },\n cellType: {\n display: 'inline-block',\n verticalAlign: 'top',\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n '& .itemIconFolder': {\n marginLeft: 3,\n },\n },\n cellRole: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellRoom: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellEnumParent: {\n opacity: 0.4,\n },\n cellFunc: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValue: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValueButton: {\n marginTop: 5,\n '&:active': {\n transform: 'scale(0.8)'\n }\n },\n cellValueButtonFalse: {\n opacity: 0.3\n },\n cellAdapter: {\n display: 'inline-block',\n verticalAlign: 'top'\n },\n cellValueTooltip: {\n fontSize: 12,\n },\n cellValueText: {\n width: '100%',\n height: ROW_HEIGHT,\n fontSize: 16,\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n verticalAlign: 'top',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n }\n },\n cellValueFile: {\n color: '#2837b9'\n },\n cellValueTooltipTitle: {\n fontStyle: 'italic',\n width: 100,\n display: 'inline-block',\n },\n cellValueTooltipValue: {\n width: 120,\n display: 'inline-block',\n //overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n cellValueTooltipBoth: {\n width: 220,\n display: 'inline-block',\n whiteSpace: 'nowrap',\n },\n cellValueTooltipBox: {\n width: 250,\n overflow: 'hidden',\n },\n cellValueTextUnit: {\n marginLeft: theme.spacing(0.5),\n opacity: 0.8\n },\n newValue: {\n animation: '$newValueAnimation 2s ease-in-out'\n },\n '@keyframes newValueAnimation': {\n '0%': {\n color: '#00f900',\n },\n '80%': {\n color: '#008000',\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n }\n },\n cellValueTextState: {\n opacity: 0.7,\n },\n cellValueTooltipCopy: {\n position: 'absolute',\n bottom: 3,\n right: 3,\n },\n cellValueTooltipEdit: {\n position: 'absolute',\n bottom: 3,\n right: 15,\n },\n cellButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellButtonsButton: {\n display: 'inline-block',\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE + 4,\n height: SMALL_BUTTON_SIZE + 4,\n '&:hover': {\n opacity: 1,\n },\n paddingTop: 0,\n paddingLeft: 0,\n marginTop: -2,\n },\n cellButtonsEmptyButton: {\n fontSize: 12,\n },\n cellButtonMinWidth: {\n minWidth: 47,\n },\n cellButtonsButtonAlone: {\n marginLeft: SMALL_BUTTON_SIZE + 4,\n paddingTop: 0,\n marginTop: -2,\n },\n cellButtonsButtonWithCustoms: {\n color: theme.palette.secondary.main,\n },\n cellButtonsButtonWithoutCustoms: {\n opacity: 0.2,\n },\n cellButtonsValueButton: {\n position: 'absolute',\n display: 'inline-block',\n top: SMALL_BUTTON_SIZE / 2 - 2,\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE - 2,\n height: SMALL_BUTTON_SIZE - 2,\n color: theme.palette.action.active,\n '&:hover': {\n opacity: 1,\n }\n },\n cellButtonsValueButtonCopy: {\n right: theme.spacing(1),\n cursor: 'pointer',\n },\n cellButtonsValueButtonEdit: {\n right: SMALL_BUTTON_SIZE / 2 + parseInt(theme.spacing(2), 10),\n },\n\n filteredOut: {\n opacity: 0.5\n },\n filteredParentOut: {\n opacity: 0.3\n },\n filterInput: {\n marginTop: 0,\n marginBottom: 0\n },\n selectIcon: {\n width: 24,\n height: 24,\n marginRight: 4\n },\n selectNone: {\n opacity: 0.5,\n },\n itemSelected: {\n background: `${theme.palette.primary.main} !important`,\n color: `${Utils.invertColor(theme.palette.primary.main, true)} !important`,\n },\n header: {\n width: '100%'\n },\n headerCell: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n headerCellValue: {\n paddingTop: 4,\n // paddingLeft: 5,\n fontSize: 16,\n },\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n paddingTop: 3,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n }\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n marginRight: 5,\n display: 'inline-block'\n }\n },\n visibleButtons: {\n color: '#2196f3',\n opacity: 0.7\n },\n grow: {\n flexGrow: 1\n },\n enumIconDiv: {\n marginRight: theme.spacing(1),\n width: 32,\n height: 32,\n borderRadius: 8,\n background: '#FFFFFF'\n },\n enumIcon: {\n marginTop: 4,\n marginLeft: 4,\n width: 24,\n height: 24\n },\n enumDialog: {\n overflow: 'hidden',\n },\n enumList: {\n minWidth: 250,\n height: 'calc(100% - 50px)',\n overflow: 'auto',\n },\n enumButton: {\n float: 'right'\n },\n enumCheckbox: {\n minWidth: 0,\n },\n buttonDiv: {\n display: 'flex',\n height: '100%',\n alignItems: 'center'\n },\n aclText: {\n fontSize: 13\n },\n rightsObject: {\n color: '#55ff55',\n paddingLeft: 3,\n },\n rightsState: {\n color: '#86b6ff',\n paddingLeft: 3,\n },\n textCenter: {\n padding: 12,\n textAlign: 'center'\n },\n tooltipAccessControl: {\n display: 'flex',\n flexDirection: 'column'\n },\n '@media screen and (max-width: 465px)': {\n columnsDialogInputWidth: {\n width: 50\n },\n fontSizeTitle: {\n '& *': {\n fontSize: 12\n }\n },\n },\n '@media screen and (max-width: 700px)': {\n\n },\n '@media screen and (max-width: 430px)': {\n\n },\n draggable: {\n cursor: 'copy',\n },\n nonDraggable: {\n cursor: 'no-drop',\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 20,\n backgroundColor: theme.palette.background.default\n },\n iconDeviceConnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceDisconnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceError: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 50,\n width: 20,\n },\n resizeHandle: {\n display: 'block',\n position: 'absolute',\n cursor: 'col-resize',\n width: 7,\n top: 2,\n bottom: 2,\n zIndex: 1,\n },\n resizeHandleRight: {\n right: 3,\n borderRight: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderRightStyle: 'solid',\n }\n , '&.active': {\n borderColor: '#517ea5',\n borderRightStyle: 'solid',\n },\n },\n resizeHandleLeft: {\n left: -4,\n borderLeft: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderLeftStyle: 'solid',\n }\n , '&.active': {\n borderColor: '#517ea5',\n borderLeftStyle: 'solid',\n },\n }\n});\n\nfunction generateFile(filename, obj) {\n let el = document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nfunction binarySearch(list, find, _start, _end) {\n _start = _start || 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return list[middle];\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n}\n\nfunction applyFilter(item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth) {\n _depth = _depth || 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n context.id = filters.id.toLowerCase();\n }\n if (filters.name) {\n context.name = filters.name.toLowerCase();\n }\n if (filters.type) {\n context.type = filters.type.toLowerCase();\n }\n if (filters.custom) {\n context.custom = filters.custom.toLowerCase();\n }\n if (filters.role) {\n context.role = filters.role.toLowerCase();\n }\n if (filters.room) {\n context.room = (objects[filters.room] && objects[filters.room].common && objects[filters.room].common.members) || [];\n }\n if (filters.func) {\n context.func = (objects[filters.func] && objects[filters.func].common && objects[filters.func].common.members) || [];\n }\n }\n\n const data = item.data;\n\n if (data && data.id) {\n const common = data.obj && data.obj.common;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common || !common.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common || !common.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => customFilter.role.includes(role))) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.custom) {\n if (!common || !common.custom) {\n filteredOut = true;\n } else\n if (customFilter.common.custom === '_dataSources') {\n // TODO: make it configurable\n if (!Object.keys(common.custom).find(id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'))) {\n filteredOut = true;\n }\n } else\n if (customFilter.common.custom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(customFilter.common.custom))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n (common && common.expert);\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = (common && getName(common.name, lang)) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && filters.role && common) {\n if (common) {\n filteredOut = !(common.role && common.role.startsWith(context.role));\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.room) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(id + '.'));\n }\n if (!filteredOut && context.func) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(id + '.'));\n }\n if (!filteredOut && context.type) {\n filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom) {\n if (common) {\n filteredOut = !common.custom || !common.custom[context.custom];\n } else {\n filteredOut = true;\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(_item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth + 1);\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren;// || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => _item.data.hasVisibleParent = true);\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nfunction getVisibleItems(item, type, objects, _result) {\n _result = _result || [];\n const data = item.data;\n if (data.sumVisibility) {\n data.id && objects[data.id] && (!type || objects[data.id].type === type) && _result.push(data.id);\n item.children?.forEach(_item =>\n getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(objects, id, k, imagePrefix) {\n let icon;\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (k < 2) {\n // detect \"cloud.0\"\n if (objects['system.adapter.' + id]) {\n icon = getSelectIdIcon(objects, 'system.adapter.' + id, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nfunction buildTree(objects, options) {\n options = options || {};\n const imagePrefix = options.imagePrefix || '.';\n\n const ids = Object.keys(objects);\n\n ids.sort((a, b) => {\n if (a === b) return 0;\n a = a.replace(/\\./g, '!!!');\n b = b.replace(/\\./g, '!!!');\n if (a > b) return 1;\n return -1;\n });\n\n // find empty nodes and create names for it\n let currentPathArr = [];\n let currentPath = '';\n let currentPathLen = 0;\n let root = {\n data: {\n name: '',\n id: ''\n },\n children: []\n };\n\n let info = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: [],\n enums: [],\n hasSomeCustoms: false,\n };\n\n let croot = root;\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common && common.role;\n if (role && !info.roles.includes(role)) {\n info.roles.push(role);\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n }\n\n info.ids.push(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If current level is still OK and we can add ID to children\n if (!currentPath || id.startsWith(currentPath + '.')) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _croot = {\n data: {\n name: parts[k],\n parent: croot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(objects, curPath, k, imagePrefix),\n generated: true,\n }\n };\n\n croot.children = croot.children || [];\n croot.children.push(_croot);\n croot = _croot;\n info.ids.push(curPath); // IDs will be added by alphabet\n } else {\n croot = croot.children.find(item => item.data.name === parts[k]);\n }\n }\n }\n\n const _croot = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj && obj.common && obj.common.name, options.lang),\n obj,\n parent: croot,\n icon: getSelectIdIcon(objects, id, imagePrefix) || getSystemIcon(objects, id, 0, imagePrefix),\n id,\n hasCustoms: obj.common?.custom && Object.keys(obj.common.custom).length,\n level: parts.length - 1,\n generated: false,\n button: obj.type === 'state' && obj.common?.role && typeof obj.common.role === 'string' && obj.common.role.startsWith('button') && obj.common?.write !== false,\n }\n };\n\n croot.children = croot.children || [];\n croot.children.push(_croot);\n croot = _croot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n croot = croot.data.parent;\n move--;\n }\n } else {\n croot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName = getName(objects[a]?.common?.name || a.split('.').pop());\n const bName = getName(objects[b]?.common?.name || b.split('.').pop());\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n } else {\n return 0;\n }\n });\n info.funcEnums.sort((a, b) => {\n const aName = getName(objects[a]?.common?.name || a.split('.').pop());\n const bName = getName(objects[b]?.common?.name || b.split('.').pop());\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n } else {\n return 0;\n }\n });\n info.roles.sort();\n info.types.sort();\n\n return { info, root };\n}\n\nfunction findNode(root, id, _parts, _path, _level) {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n } else {\n let found;\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else\n if (_id > _path) {\n break;\n }\n }\n if (found) {\n return findNode(found, id, _parts, _path + '.' + _parts[_level + 1], _level + 1);\n } else {\n return null;\n }\n }\n}\n\nfunction getName(name, lang) {\n if (name && typeof name === 'object') {\n return (name[lang] || name.en || '').toString();\n } else {\n return (name || '').toString();\n }\n}\n\nfunction findRoomsForObject(data, id, lang, withParentInfo, rooms) {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms = rooms || [];\n for (let i = 0; i < data.roomEnums.length; i++) {\n const common = data.objects[data.roomEnums[i]]?.common;\n const name = getName(common.name, lang);\n\n if (common?.members?.includes(id) && !rooms.includes(name)) {\n if (!withParentInfo) {\n rooms.push(name);\n } else {\n rooms.push({ name: name, origin: id });\n }\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (data.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(data, id, lang, withParentInfo, rooms);\n }\n\n return { rooms, per: !ownEnums }; // pe is if the enums are from parent\n}\n\nfunction findEnumsForObjectAsIds(data, id, enumName, funcs) {\n if (!id) {\n return [];\n }\n funcs = funcs || [];\n for (let i = 0; i < data[enumName].length; i++) {\n const common = data.objects[data[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(data[enumName][i])) {\n funcs.push(data[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nfunction findFunctionsForObject(data, id, lang, withParentInfo, funcs) {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs = funcs || [];\n for (let i = 0; i < data.funcEnums.length; i++) {\n const common = data.objects[data.funcEnums[i]]?.common;\n const name = getName(common.name, lang);\n if (common?.members?.includes(id) && !funcs.includes(name)) {\n if (!withParentInfo) {\n funcs.push(name);\n } else {\n funcs.push({ name: name, origin: id });\n }\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (data.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(data, id, lang, withParentInfo, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*function quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}*/\n\nfunction formatValue(id, state, obj, texts, dateFormat, isFloatComma) {\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n\n const valText = {};\n let v = (isCommon && isCommon.type === 'file') ? '[file]' : (!state || state.val === null ? '(null)' : (state.val === undefined ? '[undef]' : state.val));\n const type = typeof v;\n\n if (isCommon && isCommon.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (v.length === 13) { // (length of \"1647597254924\") warning, this solution only works till Nov 20 2286 18:46:39CET\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // we don't know what is that, so leave it as it is\n }\n } else {\n // null and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else {\n if (type === 'number') {\n v = Math.round(v * 100000000) / 100000000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n }\n }\n\n let valFull;\n if (isCommon && isCommon.unit) {\n valText.u = isCommon.unit;\n }\n valFull = [{ t: texts.value, v }];\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c});\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n\n valText.v = v;\n\n return {\n valText,\n valFull,\n style: { color: state?.ack ? (state.q ? '#ffa500' : '') : '#ff2222c9' }\n };\n}\n\nfunction getSelectIdIcon(objects, id, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const _id_ = 'system.adapter.' + id;\n const aIcon = id && objects[_id_] && objects[_id_].common && objects[_id_].common.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n src = `${imagePrefix}/adapter/${objects[_id_].common.name}/${aIcon}`;\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; //'<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else {\n if (aIcon.startsWith('data:image/svg')) {\n src = <SVG src={aIcon} width={28} height={28} />;\n } else {\n src = aIcon;\n }\n }\n } else {\n const common = objects[id] && objects[id].common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else {\n // base 64 image\n if (cIcon.startsWith('data:image/svg')) {\n src = <SVG src={cIcon} width={28} height={28} />;\n } else {\n src = cIcon;\n }\n }\n }\n }\n }\n\n return src || null;\n}\n\nfunction prepareSparkData(values, from) {\n // set every hour one point\n let time = from;\n let i = 1;\n const v = [];\n\n while (i < values.length && time < from + 25 * 3600000) {\n // find the interval\n while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {\n i++;\n }\n if (i === 1 && values[i - 1].ts >= time) {\n // assume the value was always null\n v.push(0);\n } else\n if (i < values.length) {\n if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {\n v.push(values[i].val ? 1 : 0);\n } else {\n // remove nulls\n values[i - 1].val = values[i - 1].val || 0;\n values[i].val = values[i].val || 0;\n // interpolate\n let val = values[i - 1].val + (values[i].val - values[i - 1].val) * (time - values[i - 1].ts) / (values[i].ts - values[i - 1].ts);\n\n v.push(val);\n }\n }\n\n time += 3600000;\n }\n\n return v;\n}\n\n/**\n * @type {import('./types').ObjectBrowserTableFilter}\n */\nconst DEFAULT_FILTER = {\n id: '',\n name: '',\n room: '',\n func: '',\n role: '',\n type: '',\n custom: '',\n expertMode: false\n};\n\nconst ITEM_IMAGES = {\n state: <IconState className=\"itemIcon\" />,\n channel: <IconChannel className=\"itemIcon\" />,\n device: <IconDevice className=\"itemIcon\" />,\n adapter: <IconAdapter className=\"itemIcon\" />,\n meta: <IconMeta className=\"itemIcon\" />,\n instance: <IconInstance className=\"itemIcon\" style={{ color: '#7da7ff' }} />,\n enum: <IconEnum className=\"itemIcon\" />,\n chart: <IconChart className=\"itemIcon\" />,\n config: <IconConfig className=\"itemIcon\" />,\n group: <IconGroup className=\"itemIcon\" />,\n user: <IconUser className=\"itemIcon\" />,\n host: <IconHost className=\"itemIcon\" />,\n schedule: <IconSchedule className=\"itemIcon\" />,\n script: <IconScript className=\"itemIcon\" />,\n folder: <IconClosed className=\"itemIcon itemIconFolder\" />,\n};\n\nconst StyledBadge = withStyles(theme => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n}))(Badge);\n\nconst SCREEN_WIDTHS = {\n // extra-small: 0px\n xs: { idWidth: '100%', fields: [], widths: {} },\n // small: 600px\n sm: { idWidth: 300, fields: ['room', 'val'], widths: { room: 100, val: 200 } },\n // medium: 960px\n md: { idWidth: 300, fields: ['room', 'func', 'val', 'buttons'], widths: { name: 200, room: 150, func: 150, val: 120, buttons: 120 } },\n // large: 1280px\n lg: {\n idWidth: 300, fields: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons', 'changedFrom', 'qualityCode', 'timestamp', 'lastChange'],\n widths: {\n name: 300,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 165,\n lastChange: 165\n }\n },\n ///////////////\n // extra-large: 1920px\n xl: {\n idWidth: 550, fields: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons', 'changedFrom', 'qualityCode', 'timestamp', 'lastChange'],\n widths: {\n name: 400,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 170,\n lastChange: 170\n }\n },\n};\n\nlet objectsAlreadyLoaded = false;\n\n/**\n * @extends {React.Component<import('./types').ObjectBrowserProps>}\n */\nclass ObjectBrowser extends Component {\n /**\n * @param {import('./types').ObjectBrowserProps} props\n */\n constructor(props) {\n super(props);\n\n this.lastSelectedItems = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectSelected`) || '[]';\n try {\n this.lastSelectedItems = JSON.parse(this.lastSelectedItems);\n if (typeof this.lastSelectedItems !== 'object') {\n this.lastSelectedItems = [this.lastSelectedItems];\n }\n this.lastSelectedItems = this.lastSelectedItems.filter(id => id);\n } catch (e) {\n\n }\n\n let expanded = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectExpanded`) || '[]';\n try {\n expanded = JSON.parse(expanded);\n } catch (e) {\n expanded = [];\n }\n\n let filter =\n props.defaultFilters ||\n (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectFilter`) ||\n Object.assign({}, DEFAULT_FILTER);\n\n if (typeof filter === 'string') {\n try {\n filter = JSON.parse(filter);\n } catch (e) {\n filter = Object.assign({}, DEFAULT_FILTER);\n }\n }\n\n filter.expertMode = props.expertMode !== undefined ? props.expertMode : ((window._sessionStorage || window.sessionStorage).getItem('App.expertMode') === 'true');\n this.tableRef = createRef();\n this.filterRefs = {};\n\n Object.keys(DEFAULT_FILTER).forEach(name =>\n this.filterRefs[name] = createRef());\n\n this.lastAppliedFilter = null;\n this.pausedSubscribes = false;\n\n this.selectedFound = false;\n this.root = null;\n this.states = {};\n this.subscribes = [];\n this.statesUpdateTimer = null;\n this.objectsUpdateTimer = null;\n\n this.visibleCols = props.columns || SCREEN_WIDTHS[props.width].fields;\n // remove type column if only one type must be selected\n if (props.types && props.types.length === 1) {\n const pos = this.visibleCols.indexOf('type');\n pos !== -1 && this.visibleCols.splice(pos, 1);\n }\n\n this.possibleCols = SCREEN_WIDTHS.xl.fields;\n\n let customDialog = null;\n\n if (props.router) {\n const location = props.router.getLocation();\n if (location.id && location.dialog === 'customs') {\n customDialog = [location.id];\n this.pauseSubscribe(true);\n }\n }\n\n let selected = (props.selected || '');\n if (typeof selected !== 'object') {\n selected = [selected];\n }\n selected = selected.map(id => id.replace(/[\"']/g, '')).filter(id => id);\n\n let columns = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columns`);\n try {\n columns = columns ? JSON.parse(columns) : null;\n } catch (e) {\n columns = null;\n }\n\n let columnsWidths = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columnsWidths`);\n try {\n columnsWidths = columnsWidths ? JSON.parse(columnsWidths) : {};\n } catch (e) {\n columnsWidths = {};\n }\n\n this.imagePrefix = props.imagePrefix || '.';\n let foldersFirst = (window._localStorage || window.localStorage).getItem((props.dialogName || 'App') + '.foldersFirst');\n if (foldersFirst === 'false') {\n foldersFirst = false;\n } else if (foldersFirst === 'true') {\n foldersFirst = true;\n } else {\n foldersFirst = props.foldersFirst === undefined ? true : props.foldersFirst;\n }\n\n let statesView = false;\n try {\n statesView = this.props.objectStatesView ? JSON.parse((window._localStorage || window.localStorage).getItem((props.dialogName || 'App') + '.objectStatesView')) || false : false;\n } catch (error) {\n // ignore\n }\n\n this.state = {\n loaded: false,\n foldersFirst,\n selected,\n selectedNonObject: (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.selectedNonObject`) || '',\n filter,\n filterKey: 0,\n depth: 0,\n expandAllVisible: false,\n expanded,\n toast: '',\n lang: props.lang,\n scrollBarWidth: 16,\n customDialog,\n editObjectDialog: '',\n viewFileDialog: '',\n enumDialog: null,\n roleDialog: null,\n modalEmptyId: null,\n statesView,\n columns,\n columnsForAdmin: null,\n columnsSelectorShow: false,\n columnsAuto: (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columnsAuto`) !== 'false',\n columnsWidths,\n columnsDialogTransparent: 100,\n columnsEditCustomDialog: null,\n customColumnDialogValueChanged: false,\n showExportDialog: false,\n linesEnabled: (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.lines`) === 'true',\n };\n\n this.edit = {};\n\n this.texts = {\n value: props.t('ra_tooltip_value'),\n ack: props.t('ra_tooltip_ack'),\n ts: props.t('ra_tooltip_ts'),\n lc: props.t('ra_tooltip_lc'),\n from: props.t('ra_tooltip_from'),\n user: props.t('ra_tooltip_user'),\n c: props.t('ra_tooltip_comment'),\n quality: props.t('ra_tooltip_quality'),\n editObject: props.t('ra_tooltip_editObject'),\n deleteObject: props.t('ra_tooltip_deleteObject'),\n customConfig: props.t('ra_tooltip_customConfig'),\n copyState: props.t('ra_tooltip_copyState'),\n editState: props.t('ra_tooltip_editState'),\n close: props.t('ra_Close'),\n filter_id: props.t('ra_filter_id'),\n filter_name: props.t('ra_filter_name'),\n filter_type: props.t('ra_filter_type'),\n filter_role: props.t('ra_filter_role'),\n filter_room: props.t('ra_filter_room'),\n filter_func: props.t('ra_filter_func'),\n filter_custom: props.t('ra_filter_customs'), //\n objectChangedByUser: props.t('ra_object_changed_by_user'), // Object last changed at\n objectChangedBy: props.t('ra_object_changed_by'), // Object changed by\n objectChangedFrom: props.t('ra_state_changed_from'), // Object changed from\n stateChangedBy: props.t('ra_state_changed_by'), // State changed by\n stateChangedFrom: props.t('ra_state_changed_from'), // State changed from\n ownerGroup: props.t('ra_Owner group'),\n ownerUser: props.t('ra_Owner user'),\n deviceError: props.t('ra_Error'),\n deviceDisconnected: props.t('ra_Disconnected'),\n deviceConnected: props.t('ra_Connected'),\n\n aclOwner_read_object: props.t('ra_aclOwner_read_object'),\n aclOwner_read_state: props.t('ra_aclOwner_read_state'),\n aclOwner_write_object: props.t('ra_aclOwner_write_object'),\n aclOwner_write_state: props.t('ra_aclOwner_write_state'),\n aclGroup_read_object: props.t('ra_aclGroup_read_object'),\n aclGroup_read_state: props.t('ra_aclGroup_read_state'),\n aclGroup_write_object: props.t('ra_aclGroup_write_object'),\n aclGroup_write_state: props.t('ra_aclGroup_write_state'),\n aclEveryone_read_object: props.t('ra_aclEveryone_read_object'),\n aclEveryone_read_state: props.t('ra_aclEveryone_read_state'),\n aclEveryone_write_object: props.t('ra_aclEveryone_write_object'),\n aclEveryone_write_state: props.t('ra_aclEveryone_write_state'),\n };\n\n this.levelPadding = props.levelPadding || ITEM_LEVEL;\n\n let resizerCurrentWidths = (window._localStorage || window.localStorage).getItem(`${this.props.dialogName || 'App'}.table`);\n if (resizerCurrentWidths) {\n try {\n resizerCurrentWidths = JSON.parse(resizerCurrentWidths);\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width]));\n Object.keys(resizerCurrentWidths)\n .forEach(id => {\n if (id === 'id') {\n SCREEN_WIDTHS[this.props.width].idWidth = resizerCurrentWidths.id;\n } else if (id === 'nameHeader') {\n SCREEN_WIDTHS[this.props.width].widths['name'] = resizerCurrentWidths[id];\n } else if (SCREEN_WIDTHS[this.props.width].widths[id] !== undefined) {\n SCREEN_WIDTHS[this.props.width].widths[id] = resizerCurrentWidths[id];\n }\n });\n\n this.customWidth = true;\n } catch (e) {\n // ignore\n }\n }\n\n this.calculateColumnsVisibility();\n }\n\n loadAllObjects(update) {\n const props = this.props;\n\n return new Promise(resolve => this.setState({updating: true}, () => resolve()))\n .then(() => this.props.objectsWorker ?\n this.props.objectsWorker.getObjects(update) :\n props.socket.getObjects(update, true))\n .then(objects => {\n this.systemConfig = objects['system.config'] || {};\n this.systemConfig.common = this.systemConfig.common || {};\n this.systemConfig.common.defaultNewAcl = this.systemConfig.common.defaultNewAcl || {};\n this.systemConfig.common.defaultNewAcl.owner = this.systemConfig.common.defaultNewAcl.owner || 'system.user.admin';\n this.systemConfig.common.defaultNewAcl.ownerGroup = this.systemConfig.common.defaultNewAcl.ownerGroup || 'system.group.administrator';\n if (typeof this.systemConfig.common.defaultNewAcl.state !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof this.systemConfig.common.defaultNewAcl.object !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n\n if (typeof props.filterFunc === 'function') {\n this.objects = {};\n Object.keys(objects).forEach(id => {\n try {\n if (props.filterFunc(objects[id])) {\n this.objects[id] = objects[id];\n }\n } catch (e) {\n console.log(`Error by filtering of \"${id}\": ${e}`);\n }\n });\n } else\n if (props.types) {\n this.objects = {};\n Object.keys(objects).forEach(id => {\n const type = objects[id] && objects[id].type;\n if (type && (\n type === 'channel' ||\n type === 'device' ||\n type === 'enum' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance' ||\n props.types.includes(type))) {\n this.objects[id] = objects[id];\n }\n });\n } else {\n this.objects = objects;\n }\n\n // read default history\n this.defaultHistory = this.systemConfig.common.defaultHistory;\n if (this.defaultHistory) {\n props.socket.getState(`system.adapter.${this.defaultHistory}.alive`)\n .then(state => {\n if (!state || !state.val) {\n this.defaultHistory = '';\n }\n })\n .catch(e => window.alert('Cannot get state: ' + e));\n }\n\n return this.getAdditionalColumns();\n })\n .then(columnsForAdmin => {\n this.calculateColumnsVisibility(null, null, columnsForAdmin);\n\n const { info, root } = buildTree(this.objects, this.props);\n this.root = root;\n this.info = info;\n\n // Show first selected item\n let node = this.state.selected && this.state.selected.length && findNode(this.root, this.state.selected[0]);\n\n this.lastAppliedFilter = null;\n\n // If selected ID is not visible, reset filter\n if (node && !applyFilter(node, this.state.filter, this.state.lang, this.objects, null, null, props.customFilter, props.types)) {\n // reset filter\n this.setState({ filter: Object.assign({}, DEFAULT_FILTER), columnsForAdmin }, () => {\n this.setState({ loaded: true, updating: false }, () =>\n this.expandAllSelected(() =>\n this.onAfterSelect()));\n });\n } else {\n this.setState({ loaded: true, updating: false, columnsForAdmin }, () =>\n this.expandAllSelected(() =>\n this.onAfterSelect()));\n }\n })\n .catch(e => this.showError(e));\n }\n\n /**\n * @private\n * @param {ioBroker.EmptyCallback} cb\n */\n expandAllSelected(cb) {\n let expanded = [...this.state.expanded];\n let changed = false;\n this.state.selected.forEach(id => {\n const parts = id.split('.');\n let path = [];\n for (let i = 0; i < parts.length - 1; i++) {\n path.push(parts[i]);\n if (!expanded.includes(path.join('.'))) {\n expanded.push(path.join('.'));\n changed = true;\n }\n }\n });\n if (changed) {\n expanded.sort();\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded }, cb)\n } else {\n cb && cb();\n }\n }\n\n /**\n * @private\n * @param {boolean} [isDouble]\n */\n onAfterSelect(isDouble) {\n this.lastSelectedItems = [...this.state.selected];\n if (this.state.selected && this.state.selected.length) {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, JSON.stringify(this.lastSelectedItems));\n\n const name = this.lastSelectedItems.length === 1 ? Utils.getObjectName(this.objects, this.lastSelectedItems[0], null, { language: this.state.lang }) : '';\n this.props.onSelect && this.props.onSelect(this.lastSelectedItems, name, isDouble);\n } else {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, '');\n if (this.state.selected.length) {\n this.setState({ selected: [] }, () => this.props.onSelect && this.props.onSelect([], ''));\n } else {\n this.props.onSelect && this.props.onSelect([], '');\n }\n }\n }\n\n /**\n * @private\n * @param {import('./types').ObjectBrowserProps} props\n * @param {any} state\n */\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n if (props.expertMode !== undefined && props.expertMode !== state.filter.expertMode) {\n changed = true;\n newState.filter = Object.assign({}, state.filter);\n newState.filter.expertMode = props.expertMode;\n }\n return changed ? newState : null;\n }\n\n /**\n * Called when component is mounted.\n */\n componentDidMount() {\n this.loadAllObjects(!objectsAlreadyLoaded)\n .then(() => {\n if (this.props.objectsWorker) {\n this.props.objectsWorker.registerHandler(this.onObjectChange);\n } else {\n this.props.socket.subscribeObject('*', this.onObjectChange);\n }\n\n objectsAlreadyLoaded = true;\n });\n }\n\n /**\n * Called when component is unmounted.\n */\n componentWillUnmount() {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = null;\n\n if (this.props.objectsWorker) {\n this.props.objectsWorker.unregisterHandler(this.onObjectChange, true);\n } else {\n this.props.socket.unsubscribeObject('*', this.onObjectChange);\n }\n\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log('- unsubscribe ' + pattern);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n this.objects = {};\n }\n\n /**\n * Called when component is mounted.\n */\n refreshComponent() {\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log('- unsubscribe ' + pattern);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n\n this.loadAllObjects(true)\n .then(() => console.log('updated!'));\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null}\n */\n renderErrorDialog() {\n return this.state.error ? <Dialog\n open={true}\n maxWidth=\"sm\"\n fullWidth={true}\n onClose={() => this.setState({ error: '' })}\n aria-labelledby=\"error-dialog-title\"\n aria-describedby=\"error-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">{this.props.title || this.props.t('ra_Error')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.state.error}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ error: '' })}\n color=\"primary\"\n autoFocus\n startIcon={<IconCheck />}\n >{this.props.t('ra_Ok')}</Button>\n </DialogActions>\n </Dialog> : null;\n }\n\n /**\n * Show the error dialog.\n * @param {any} error\n */\n showError(error) {\n this.setState({ error: typeof error === 'object' ? (error && typeof error.toString === 'function' ? error.toString() : JSON.stringify(error)) : error });\n }\n\n /**\n * Called when an item is selected/deselected.\n * @param {string} toggleItem\n * @param {boolean} [isDouble]\n */\n onSelect(toggleItem, isDouble) {\n if (!this.props.multiSelect) {\n if (this.objects[toggleItem] && (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n if (this.state.selected[0] !== toggleItem) {\n this.setState({ selected: [toggleItem], selectedNonObject: '' }, () =>\n this.onAfterSelect(isDouble));\n } else if (isDouble && this.props.onSelect) {\n this.onAfterSelect(isDouble);\n }\n } else {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.selectedNonObject`, toggleItem);\n this.setState({ selected: [], selectedNonObject: toggleItem }, () =>\n this.onAfterSelect());\n }\n } else {\n if (this.objects[toggleItem] && (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n\n const selected = [...this.state.selected];\n const pos = selected.indexOf(toggleItem);\n if (pos === -1) {\n selected.push(toggleItem);\n selected.sort();\n } else if (!isDouble) {\n selected.splice(pos, 1);\n }\n\n this.setState({ selected, selectedNonObject: '' }, () =>\n this.onAfterSelect(isDouble));\n }\n }\n }\n\n /**\n * @private\n * @param {boolean} isLast\n */\n _renderDefinedList(isLast) {\n const cols = [...this.possibleCols];\n cols.unshift('id');\n if (this.props.columns && !this.props.columns.includes('buttons')) {\n const pos = cols.indexOf('buttons');\n if (pos !== -1) {\n cols.splice(pos, 1);\n }\n }\n return cols\n .filter(id => (isLast && (id === 'val' || id === 'buttons')) || (!isLast && id !== 'val' && id !== 'buttons'))\n .map(id =>\n <ListItemButton onClick={() => {\n if (!this.state.columnsAuto && id !== 'id') {\n const columns = [...(this.state.columns || [])];\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columns', JSON.stringify(columns));\n this.calculateColumnsVisibility(null, columns);\n this.setState({ columns });\n }\n }} key={id}>\n {/* <ListItemIcon> */}\n <Checkbox\n edge=\"start\"\n disabled={id === 'id' || this.state.columnsAuto}\n checked={id === 'id' || (this.state.columnsAuto ? this.visibleCols.includes(id) : (this.state.columns && this.state.columns.includes(id)))}\n disableRipple\n />\n {/* </ListItemIcon> */}\n <ListItemText primary={this.texts['filter_' + id] || this.props.t('ra_' + id)} />\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n className={this.props.classes.columnsDialogInputWidth}\n style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths[id] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths[id] = e.target.value;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n </ListItemButton>\n );\n }\n\n /**\n * Renders the columns selector.\n * @returns {JSX.Element | null}\n */\n renderColumnsSelectorDialog() {\n if (!this.state.columnsSelectorShow) {\n return null;\n } else {\n return <Dialog\n onClose={() => this.setState({ columnsSelectorShow: false })}\n open={true}\n classes={{ root: Utils.clsx(this.props.classes.dialogColumns, this.props.classes['transparent_' + this.state.columnsDialogTransparent]) }}\n >\n <DialogTitle className={this.props.classes.fontSizeTitle}>{this.props.t('ra_Configure visible columns')}</DialogTitle>\n <DialogContent className={this.props.classes.fontSizeTitle}>\n <FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.columnsAuto} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsAuto', this.state.columnsAuto ? 'false' : 'true');\n if (!this.state.columnsAuto) {\n this.calculateColumnsVisibility(true);\n this.setState({ columnsAuto: true });\n } else {\n if (!this.state.columns) {\n this.calculateColumnsVisibility(false, [...this.visibleCols]);\n this.setState({ columnsAuto: false, columns: [...this.visibleCols] });\n } else {\n this.calculateColumnsVisibility(false);\n this.setState({ columnsAuto: false });\n }\n }\n }} />}\n label={this.props.t('ra_Auto (no custom columns)')}\n />\n <FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.foldersFirst} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.foldersFirst', this.state.foldersFirst ? 'false' : 'true');\n this.setState({ foldersFirst: !this.state.foldersFirst });\n }} />}\n label={this.props.t('ra_Folders always first')}\n />\n <FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.linesEnabled} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.lines', this.state.linesEnabled ? 'false' : 'true');\n this.setState({ linesEnabled: !this.state.linesEnabled });\n }} />}\n label={this.props.t('ra_Show lines between rows')}\n />\n <Typography classes={{ root: this.props.classes.dialogColumnsLabel }}>{this.props.t('ra_Transparent dialog')}</Typography>\n <Slider classes={{ root: this.props.classes.width100 }} value={this.state.columnsDialogTransparent} min={20} max={100} step={10} onChange={(event, newValue) =>\n this.setState({ columnsDialogTransparent: newValue })\n } />\n <List>\n {this._renderDefinedList(false)}\n\n {this.state.columnsForAdmin && Object.keys(this.state.columnsForAdmin).sort().map(adapter =>\n this.state.columnsForAdmin[adapter].map(column =>\n <ListItemButton onClick={() => {\n if (!this.state.columnsAuto) {\n const columns = [...(this.state.columns || [])];\n const id = '_' + adapter + '_' + column.path;\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.calculateColumnsVisibility(null, columns);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columns', JSON.stringify(columns));\n this.setState({ columns });\n }\n }} key={adapter + '_' + column.name}>\n <ListItemIcon>\n <Checkbox\n disabled={this.state.columnsAuto}\n edge=\"start\"\n checked={!this.state.columnsAuto && this.state.columns && this.state.columns.includes('_' + adapter + '_' + column.path)}\n disableRipple\n />\n </ListItemIcon>\n <ListItemText primary={column.name + ' (' + adapter + ')'} />\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n className={this.props.classes.columnsDialogInputWidth}\n style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths['_' + adapter + '_' + column.path] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths['_' + adapter + '_' + column.path] = e.target.value;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n </ListItemButton>\n )\n )}\n {this._renderDefinedList(true)}\n </List>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ columnsSelectorShow: false })}\n color=\"primary\"\n startIcon={<IconClose />}\n >{this.texts['close']}</Button>\n </DialogActions>\n </Dialog>\n }\n }\n\n /**\n * @private\n */\n getAdditionalColumns() {\n return this.props.socket.getAdapters()\n .then(instances => {\n let columnsForAdmin = null;\n // find all additional columns\n instances.forEach(obj =>\n columnsForAdmin = this.parseObjectForAdmins(columnsForAdmin, obj));\n\n return columnsForAdmin;\n })\n .catch(e => {\n // window.alert('Cannot get adapters: ' + e);\n // Object browser in Web has no additional columns\n });\n }\n\n /**\n * @private\n */\n checkUnsubscribes() {\n // Remove unused subscriptions\n for (let i = this.subscribes.length - 1; i >= 0; i--) {\n !this.recordStates.includes(this.subscribes[i]) && this.unsubscribe(this.subscribes[i]);\n }\n this.recordStates = [];\n }\n\n /**\n * Find an item.\n * @param {string} id\n * @param {string[] | undefined} [_parts]\n * @param {{ data: { name: string; id: string; }; children: never[]; } | null | undefined} [_root]\n * @param {string | undefined} [_partyId]\n * @returns {any}\n */\n findItem(id, _parts, _root, _partyId) {\n _parts = _parts || id.split('.');\n _root = _root || this.root;\n if (!_root || !_parts.length) {\n return null;\n }\n\n _partyId = (_partyId ? _partyId + '.' : '') + _parts.shift();\n\n if (_root.children) {\n const item = _root.children.find(i => i.data.id === _partyId);\n if (item) {\n if (item.data.id === id) {\n return item;\n } else if (_parts.length) {\n return this.findItem(id, _parts, item, _partyId);\n }\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Called when a state changes.\n * @param {string} id\n * @param {ioBroker.State} state\n */\n onStateChange = (id, state) => {\n console.log('> stateChange ' + id);\n if (this.states[id]) {\n const item = this.findItem(id);\n if (item && item.data.state) {\n item.data.state = null;\n }\n }\n this.states[id] = state;\n\n if (!this.pausedSubscribes) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n } else {\n if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n }\n };\n\n /**\n * @private\n * @param {{ [x: string]: any; }} columnsForAdmin\n * @param {any} obj\n */\n parseObjectForAdmins(columnsForAdmin, obj) {\n if (obj.common && obj.common.adminColumns && obj.common.name) {\n let columns = obj.common.adminColumns;\n if (typeof columns !== 'object') {\n columns = [columns];\n }\n columns = columns.map(item => {\n if (typeof item !== 'object') {\n return { path: item, name: item.split('.').pop() };\n }\n\n // string => array\n if (item.objTypes && typeof item.objTypes !== 'object') {\n item.objTypes = [item.objTypes];\n } else if (!item.objTypes) {\n item.objTypes = null;\n }\n\n if (!item.name && item.path) {\n return { path: item.path, name: item.path.split('.').pop(), width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n if (typeof item.name !== 'object' && item.path) {\n return { path: item.path, name: item.name, width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n if (!item.path) {\n console.warn(`Admin columns for ${obj._id} ignored, because path not found`);\n return null;\n } else {\n return { path: item.path, name: item.name[this.props.lang] || item.name.en, width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n }).filter(item => item);\n\n if (columns && columns.length) {\n columnsForAdmin = columnsForAdmin || {};\n columnsForAdmin[obj.common.name] = columns.sort((a, b) => a.path > b.path ? -1 : (a.path < b.path ? 1 : 0));\n }\n } else if (obj.common && obj.common.name && columnsForAdmin && columnsForAdmin[obj.common.name]) {\n delete columnsForAdmin[obj.common.name];\n }\n return columnsForAdmin;\n }\n\n /**\n * @param {string} id\n * @param {ioBroker.Object} obj\n * @param {import('./types').OldObject} oldObj\n */\n onObjectChange = (id, obj, oldObj) => {\n let newState;\n\n if (Array.isArray(id)) {\n id.forEach(event => {\n console.log('> objectChange ' + event.id);\n\n if (event.obj && typeof this.props.filterFunc === 'function' && !this.props.filterFunc(event.obj)) {\n return;\n }\n\n if (event.id.startsWith('system.adapter.') && event.obj && event.obj.type === 'adapter') {\n let columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));\n\n this.parseObjectForAdmins(columnsForAdmin, event.obj);\n\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newState = { columnsForAdmin };\n }\n }\n this.objects = this.objects || [];\n if (this.objects[event.id]) {\n if (event.obj) {\n this.objects[event.id] = event.obj;\n } else {\n delete this.objects[event.id];\n }\n } else if (this.objects[event.id]) {\n delete this.objects[event.id];\n }\n });\n } else {\n console.log('> objectChange ' + id);\n this.objects = this.objects || [];\n\n if (obj && typeof this.props.filterFunc === 'function' && !this.props.filterFunc(obj)) {\n return;\n }\n\n if (id.startsWith('system.adapter.') && obj && obj.type === 'adapter') {\n let columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));\n this.parseObjectForAdmins(columnsForAdmin, obj);\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newState = { columnsForAdmin };\n }\n }\n\n if (this.objects[id]) {\n if (obj) {\n this.objects[id] = obj;\n } else {\n delete this.objects[id];\n }\n } else if (this.objects[id]) {\n delete this.objects[id];\n }\n }\n\n newState && this.setState(newState);\n\n if (!this.objectsUpdateTimer && this.objects) {\n this.objectsUpdateTimer = setTimeout(() => {\n this.objectsUpdateTimer = null;\n const { info, root } = buildTree(this.objects, this.props);\n this.root = root;\n this.info = info;\n this.lastAppliedFilter = null; // apply filter anew\n\n if (!this.pausedSubscribes) {\n this.forceUpdate();\n }\n // else it will be re-rendered when dialog will be closed\n }, 500);\n }\n };\n\n /**\n * @private\n * @param {string} id\n */\n subscribe(id) {\n if (!this.subscribes.includes(id)) {\n this.subscribes.push(id);\n console.log('+ subscribe ' + id);\n !this.pausedSubscribes && this.props.socket.subscribeState(id, this.onStateChange);\n }\n }\n\n /**\n * @private\n * @param {string} id\n */\n unsubscribe(id) {\n const pos = this.subscribes.indexOf(id);\n if (pos !== -1) {\n this.subscribes.splice(pos, 1);\n if (this.states[id]) {\n delete this.states[id];\n }\n console.log('- unsubscribe ' + id);\n this.props.socket.unsubscribeState(id, this.onStateChange);\n\n if (this.pausedSubscribes) {\n console.warn('Unsubscribe during pause?');\n }\n }\n }\n\n /**\n * @private\n * @param {boolean} isPause\n */\n pauseSubscribe(isPause) {\n if (!this.pausedSubscribes && isPause) {\n this.pausedSubscribes = true;\n this.subscribes.forEach(id => this.props.socket.unsubscribeState(id, this.onStateChange));\n } else if (this.pausedSubscribes && !isPause) {\n this.pausedSubscribes = false;\n this.subscribes.forEach(id => this.props.socket.subscribeState(id, this.onStateChange));\n }\n }\n\n /**\n * @private\n * @param {string} [name]\n * @param {boolean} [value]\n */\n onFilter(name, value) {\n this.filterTimer = null;\n let filter = {};\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name] && this.filterRefs[name].current) {\n for (let i = 0; i < this.filterRefs[name].current.children.length; i++) {\n if (this.filterRefs[name].current.children[i].tagName === 'INPUT') {\n filter[name] = this.filterRefs[name].current.children[i].value;\n break;\n }\n }\n }\n });\n\n if (name) {\n filter[name] = value;\n if (name === 'expertMode') {\n (window._sessionStorage || window.sessionStorage).setItem('App.expertMode', value ? 'true' : 'false');\n }\n }\n\n filter = Object.assign({}, this.state.filter, filter);\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(filter));\n this.setState({ filter }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n clearFilter() {\n let filter = {};\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name] && this.filterRefs[name].current) {\n for (let i = 0; i < this.filterRefs[name].current.childNodes.length; i++) {\n const item = this.filterRefs[name].current.childNodes[i];\n if (item.tagName === 'INPUT') {\n filter[name] = '';\n item.value = '';\n break;\n }\n }\n }\n });\n\n filter = Object.assign({}, this.state.filter, filter);\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(filter));\n this.setState({ filter, filterKey: this.state.filterKey + 1 }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n isFilterEmpty() {\n const someNotEmpty = Object.keys(this.state.filter).find(attr =>\n attr !== 'expertMode' && this.state.filter[attr]);\n return !someNotEmpty;\n }\n\n /**\n * @private\n * @param {string} name\n */\n getFilterInput(name) {\n return <FormControl\n className={Utils.clsx(this.props.classes.headerCellInput, this.props.classes.filterInput)}\n key={name + '_' + this.state.filterKey}\n //style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n ref={this.filterRefs[name]}\n classes={{ underline: 'no-underline' }}\n id={name}\n placeholder={this.texts['filter_' + name]}\n defaultValue={this.state.filter[name]}\n onChange={() => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n autoComplete=\"off\"\n />\n {this.filterRefs[name]?.current?.firstChild.value ?\n <div style={{\n position: 'absolute',\n right: 0\n }}>\n <IconButton\n size=\"small\"\n onClick={() => {\n this.filterRefs[name].current.firstChild.value = '';\n this.onFilter(name, '');\n }}\n >\n <IconClose />\n </IconButton>\n </div> : null}\n </FormControl>;\n }\n\n /**\n * @private\n * @param {string} name\n * @param {any[]} values\n */\n getFilterSelect(name, values) {\n const hasIcons = !!values.find(item => item.icon);\n return <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={name + '_' + this.state.filterKey}\n ref={this.filterRefs[name]}\n className={this.props.classes.headerCellInput + ' no-underline'}\n onChange={() => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n defaultValue={this.state.filter[name] || ''}\n inputProps={{ name, id: name }}\n displayEmpty={true}\n >\n <MenuItem key=\"empty\" value=\"\">\n <span className={this.props.classes.selectNone}>{this.texts['filter_' + name]}</span>\n </MenuItem>\n {values.map(item => {\n let id;\n let name;\n let icon;\n if (typeof item === 'object') {\n id = item.value;\n name = item.name;\n icon = item.icon;\n } else {\n id = item;\n name = item;\n }\n return <MenuItem className={this.props.classes.headerCellSelectItem} key={id} value={id}>\n {icon ? icon : (hasIcons ? <div className=\"itemIcon\" /> : null)}\n {name}\n </MenuItem>;\n })}\n </Select>\n {this.filterRefs[name]?.current?.childNodes[1]?.value ?\n <div className={Utils.clsx(this.props.classes.selectClearButton)}>\n <IconButton\n size=\"small\"\n onClick={() => {\n const newFilter = { ...this.state.filter };\n newFilter[name] = '';\n this.filterRefs[name].current.childNodes[1].value = '';\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(newFilter));\n this.setState({ filter: newFilter, filterKey: this.state.filterKey + 1 }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(newFilter));\n }}\n >\n <IconClose />\n </IconButton>\n </div> : null}\n </div>;\n }\n\n /**\n * @private\n */\n getFilterSelectRole() {\n return this.getFilterSelect('role', this.info.roles);\n }\n\n /**\n * @private\n */\n getFilterSelectRoom() {\n const rooms = this.info.roomEnums.map(id => ({\n name: getName(this.objects[id]?.common?.name || id.split('.').pop()),\n value: id,\n icon: <Icon src={this.objects[id]?.common?.icon} className={this.props.classes.selectIcon}/>\n }));\n\n return this.getFilterSelect('room', rooms);\n }\n\n /**\n * @private\n */\n getFilterSelectFunction() {\n const func = this.info.funcEnums.map(id => ({\n name: getName((this.objects[id] && this.objects[id].common && this.objects[id].common.name) || id.split('.').pop()),\n value: id,\n icon: <Icon src={this.objects[id]?.common?.icon} className={this.props.classes.selectIcon}/>\n }));\n\n return this.getFilterSelect('func', func);\n }\n\n /**\n * @private\n */\n getFilterSelectType() {\n const types = this.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type]\n }));\n\n return this.getFilterSelect('type', types);\n }\n\n /**\n * @private\n */\n getFilterSelectCustoms() {\n if (this.info.customs.length) {\n const customs = this.info.customs.map(id => ({\n name: id,\n value: id,\n icon: <Icon src={getSelectIdIcon(this.objects, id, this.imagePrefix)} className={this.props.classes.selectIcon}/>\n }));\n return this.getFilterSelect('custom', customs);\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} [root]\n * @param {any[]} [expanded]\n */\n onExpandAll(root, expanded) {\n root = root || this.root;\n expanded = expanded || [];\n\n root.children && root.children.forEach(item => {\n if (item.data.sumVisibility) {\n expanded.push(item.data.id);\n this.onExpandAll(item, expanded);\n }\n });\n\n if (root === this.root) {\n expanded.sort();\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n }\n\n /**\n * @private\n */\n onCollapseAll() {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify([]));\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, '[]');\n this.setState({ expanded: [], depth: 0, selected: [] }, () =>\n this.onAfterSelect());\n }\n\n /**\n * @private\n * @param {any} root\n * @param {number} depth\n * @param {any[]} expanded\n */\n expandDepth(root, depth, expanded) {\n root = root || this.root;\n if (depth > 0) {\n if (root.children) {\n root.children.forEach(item => {\n if (item.data.sumVisibility) {\n if (!binarySearch(expanded, item.data.id)) {\n expanded.push(item.data.id);\n expanded.sort();\n }\n if (depth - 1 > 0) {\n this.expandDepth(item, depth - 1, expanded);\n }\n }\n });\n }\n }\n }\n\n /**\n * @private\n * @param {number} depth\n * @param {any[]} expanded\n */\n collapseDepth(depth, expanded) {\n return expanded.filter(id => id.split('.').length <= depth);\n }\n\n /**\n * @private\n */\n onExpandVisible() {\n if (this.state.depth < 9) {\n const depth = this.state.depth + 1;\n const expanded = [...this.state.expanded];\n this.expandDepth(this.root, depth, expanded);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n /**\n * @private\n */\n onStatesViewVisible() {\n const statesView = !this.state.statesView;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectStatesView', JSON.stringify(statesView));\n this.setState({ statesView });\n }\n\n /**\n * @private\n */\n onCollapseVisible() {\n if (this.state.depth > 0) {\n const depth = this.state.depth - 1;\n const expanded = this.collapseDepth(depth, this.state.expanded);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n /**\n * @private\n * @param {string} id\n */\n getEnumsForId = id => {\n let result = [];\n this.info.enums.forEach(_id => {\n if (this.objects[_id]?.common?.members?.includes(id)) {\n const en = {\n _id: this.objects[_id]._id,\n common: JSON.parse(JSON.stringify(this.objects[_id].common)),\n native: this.objects[_id].native,\n type: 'enum',\n };\n if (en.common) {\n delete en.common.members;\n delete en.common.custom;\n delete en.common.mobile;\n }\n result.push(en);\n }\n });\n\n return result.length ? result : undefined;\n };\n\n /**\n * @private\n * @param {array} enums\n * @param {string} objId\n */\n _createAllEnums = async (enums, objId) => {\n for (let e = 0; e < enums.length; e++) {\n let id = enums[e];\n let _enObj;\n if (typeof id === 'object') {\n _enObj = id;\n id = id._id;\n }\n let enObj = this.objects[id];\n if (!enObj) {\n enObj = _enObj || {\n _id: id,\n common: {\n name: id.split('.').pop(),\n members: [],\n },\n native: {}\n };\n\n enObj.common = enObj.common || {};\n enObj.common.members = [objId];\n\n await this.props.socket.setObject(id, enObj);\n } else if (!enObj.common?.members?.includes(objId)) {\n enObj.common = enObj.common || {};\n enObj.common.members = enObj.common.members || [];\n // add missing object\n enObj.common.members.push(objId);\n enObj.common.members.sort();\n await this.props.socket.setObject(id, enObj);\n }\n }\n }\n\n /**\n * @private\n * @param {any} callback\n */\n loadObjects = async objs => {\n if (objs) {\n for (let id in objs) {\n if (!objs.hasOwnProperty(id) || !objs[id]) {\n continue;\n }\n const obj = objs[id];\n let enums = null;\n if (obj && obj.common && obj.common.enums) {\n enums = obj.common.enums;\n delete obj.common.enums;\n } else {\n enums = null;\n }\n try {\n await this.props.socket.setObject(id, obj);\n enums && (await this._createAllEnums(enums, obj._id));\n if (obj.type === 'state') {\n try {\n const state = await this.props.socket.getState(obj._id);\n if (!state || state.val === null) {\n try {\n await this.props.socket.setState(obj._id, !obj.common || obj.common.def === undefined ? null : obj.common.def, true);\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id}\": ${e}`);\n }\n }\n } catch (e) {\n window.alert(`Cannot read state \"${obj._id}\": ${e}`);\n }\n }\n } catch (error) {\n window.alert(error);\n }\n }\n }\n }\n\n _getSelectedIdsForExport() {\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = [];\n const keys = Object.keys(this.objects);\n keys.sort();\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const idDot = id + '.';\n const idLen = idDot.length;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if (id === key || key.startsWith(idDot)) {\n result.push(key);\n }\n if (key.substring(0, idLen) > idDot) {\n break;\n }\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n _exportObjects(isAll) {\n if (isAll) {\n generateFile('allObjects.json', this.objects);\n } else\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = {};\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n this._getSelectedIdsForExport().forEach(key => {\n result[key] = JSON.parse(JSON.stringify(this.objects[key]));\n // add enum information\n if (result[key].common) {\n const enums = this.getEnumsForId(key);\n if (enums) {\n result[key].common.enums = enums;\n }\n }\n });\n\n generateFile(id + '.json', result);\n } else {\n window.alert(this.props.t('ra_Save of objects-tree is not possible'));\n }\n }\n\n renderExportDialog() {\n if (this.state.showExportDialog === false) {\n return null;\n } else {\n return <Dialog open={true}>\n <DialogTitle>{this.props.t('Select type of export')}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.props.t('You can export all objects or just the selected branch.')}\n <br/>\n {this.props.t('Selected %s object(s)', this.state.showExportDialog)}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" variant=\"outlined\" onClick={() => this.setState({showExportDialog: false}, () => this._exportObjects(true))}>{this.props.t('ra_All objects')}</Button>\n <Button color=\"primary\" variant=\"contained\" autoFocus onClick={() => this.setState({showExportDialog: false}, () => this._exportObjects(false))}>{this.props.t('ra_Only selected')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.setState({showExportDialog: false})} startIcon={<IconClose/>}>{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n }\n\n /**\n * @private\n * @param {object} evt\n */\n handleJsonUpload = evt => {\n let f = evt.target.files[0];\n if (f) {\n let r = new FileReader();\n r.onload = async e => {\n let contents = e.target.result;\n try {\n let json = JSON.parse(contents);\n let len = Object.keys(json).length;\n let id = json._id;\n if (id === undefined && len) {\n await this.loadObjects(json);\n window.alert(this.props.t('ra_%s object(s) processed', len));\n } else {\n // it is only one object in form\n // {\n // \"_id\": \"xxx\",\n // \"common\": \"yyy\",\n // \"native\": \"zzz\"\n // }\n if (!id) {\n return window.alert(this.props.t('ra_Invalid structure'));\n }\n try {\n let enums;\n if (json.common.enums) {\n enums = json.common.enums;\n delete json.common.enums;\n }\n await this.props.socket.setObject(json._id, json);\n if (json.type === 'state') {\n const state = await this.props.socket.getState(json._id);\n if (!state || state.val === null || state.val === undefined) {\n await this.props.socket.getState(json._id, json.common.def === undefined ? null : json.common.def, true);\n }\n }\n if (enums) {\n await this._createAllEnums(enums, json._id);\n }\n\n window.alert(this.props.t('ra_%s was imported', json._id));\n } catch (err) {\n window.alert(err);\n }\n }\n } catch (err) {\n window.alert(err);\n }\n };\n r.readAsText(f);\n } else {\n window.alert(this.props.t('ra_Failed to open JSON File'));\n }\n }\n\n toolTipObjectCreating = () => {\n const { t } = this.props;\n\n let value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div key={7} style={{height: 10}}/>,\n <div key={8}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={9}>{t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')}</div>,\n ];\n\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id]?.type === 'state')) {\n } else {\n if (this.state.filter.expertMode) {\n switch (this.objects[id]?.type) {\n case 'device':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n ];\n break\n case 'folder':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n ];\n break\n case 'channel':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={1}>{t('ra_Channel → State')}</div>,\n ];\n break\n default:\n break\n }\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={7}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={8}>{t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')}</div>,\n ]\n }\n }\n }\n return value.length ? value : t('ra_Add new child object to selected parent');\n }\n\n /**\n * Renders the toolbar.\n * @returns {JSX.Element}\n */\n getToolbar() {\n let allowObjectCreation = false;\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else {\n if (this.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n }\n\n return <div style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center'\n }}>\n <div style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center'\n }}>\n\n <Tooltip title={this.props.t('ra_Refresh tree')}>\n <div>\n <IconButton\n onClick={() => this.refreshComponent()}\n disabled={this.state.updating}\n size=\"large\"\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n {this.props.showExpertButton && !this.props.expertMode &&\n <Tooltip title={this.props.t('ra_expertMode')}>\n <IconButton\n key=\"expertMode\"\n color={this.state.filter.expertMode ? 'secondary' : 'default'}\n onClick={() => this.onFilter('expertMode', !this.state.filter.expertMode)}\n size=\"large\"\n >\n <IconExpert />\n </IconButton>\n </Tooltip>\n }\n {!this.props.disableColumnSelector &&\n <Tooltip title={this.props.t('ra_Configure visible columns')}>\n <IconButton\n key=\"columnSelector\"\n color={this.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => this.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n }\n {this.state.expandAllVisible &&\n <Tooltip title={this.props.t('ra_Expand all nodes')}>\n <IconButton\n key=\"expandAll\"\n onClick={() => this.onExpandAll()}\n size=\"large\"\n >\n <IconOpen />\n </IconButton>\n </Tooltip>\n }\n <Tooltip title={this.props.t('ra_Collapse all nodes')}>\n <IconButton\n key=\"collapseAll\"\n onClick={() => this.onCollapseAll()}\n size=\"large\"\n >\n <IconClosed />\n </IconButton>\n </Tooltip>\n <Tooltip title={this.props.t('ra_Expand one step node')}>\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => this.onExpandVisible()}\n size=\"large\"\n >\n <StyledBadge badgeContent={this.state.depth} color=\"secondary\">\n <IconOpen />\n </StyledBadge>\n </IconButton>\n </Tooltip>\n <Tooltip title={this.props.t('ra_Collapse one step node')}>\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => this.onCollapseVisible()}\n size=\"large\"\n >\n <StyledBadge badgeContent={this.state.depth} color=\"secondary\">\n <IconClosed />\n </StyledBadge>\n </IconButton>\n </Tooltip>\n {this.props.objectStatesView && <Tooltip title={this.props.t('ra_Toggle the states view')}>\n <IconButton\n onClick={() => this.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={this.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>}\n\n {this.props.objectAddBoolean ?\n <Tooltip title={this.toolTipObjectCreating()}>\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() => this.setState({ modalNewObj: true })}\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n : null\n }\n\n {this.props.objectImportExport &&\n <Tooltip title={this.props.t('ra_Add objects tree from JSON file')}>\n <IconButton\n onClick={() => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleJsonUpload(e), false);\n input.click();\n }}\n size=\"large\"\n >\n <PublishIcon />\n </IconButton>\n </Tooltip>\n }\n {this.props.objectImportExport && (!!this.state.selected.length || this.state.selectedNonObject) &&\n <Tooltip title={this.props.t('ra_Save objects tree as JSON file')}>\n <IconButton\n onClick={() => this.setState({showExportDialog: this._getSelectedIdsForExport().length})}\n size=\"large\"\n >\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n }\n </div>\n {!!this.props.objectBrowserEditObject && <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${this.props.t('ra_Objects')}: ${Object.keys(this.info.objects).length}, ${this.props.t('ra_States')}: ${Object.keys(this.info.objects).filter(el => this.info.objects[el].type === 'state').length}`}\n </div>}\n {this.props.objectEditBoolean &&\n <Tooltip title={this.props.t('ra_Edit custom config')}>\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = getVisibleItems(this.root, 'state', this.objects);\n\n if (ids.length) {\n this.pauseSubscribe(true);\n\n if (ids.length === 1) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectSelected', this.state.selected[0]);\n this.props.router && this.props.router.doNavigate(null, 'custom', this.state.selected[0]);\n }\n this.setState({ customDialog: ids });\n } else {\n this.setState({ toast: this.props.t('ra_please select object') });\n }\n }}\n size=\"large\"\n >\n <BuildIcon />\n </IconButton>\n </Tooltip>\n }\n </div>;\n }\n\n /**\n * @private\n * @param {string} id\n */\n toggleExpanded(id) {\n const expanded = JSON.parse(JSON.stringify(this.state.expanded));\n const pos = expanded.indexOf(id);\n if (pos === -1) {\n expanded.push(id);\n expanded.sort();\n } else {\n expanded.splice(pos, 1);\n }\n\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n\n /**\n * @private\n * @param {Event} e\n * @param {string} text\n */\n onCopy(e, text) {\n e.stopPropagation();\n e.preventDefault();\n copy(text);\n if (text.length < 50) {\n this.setState({ toast: this.props.t('ra_Copied %s', text) });\n } else {\n this.setState({ toast: this.props.t('ra_Copied') });\n }\n }\n\n renderTooltipAccessControl = acl => {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n { value: '0x400', valueNum: 0x400, title: 'read', group: 'Owner' },\n { value: '0x200', valueNum: 0x200, title: 'write', group: 'Owner' },\n { value: '0x40', valueNum: 0x40, title: 'read', group: 'Group' },\n { value: '0x20', valueNum: 0x20, title: 'write', group: 'Group' },\n { value: '0x4', valueNum: 0x4, title: 'read', group: 'Everyone' },\n { value: '0x2', valueNum: 0x2, title: 'write', group: 'Everyone' }\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value = 'object') => {\n let rights = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(<span key={value + i}>{this.texts['acl' + el.group + '_' + el.title + '_' + value]},\n <span className={value === 'object' ? this.props.classes.rightsObject : this.props.classes.rightsState}>\n {el.value}\n </span>\n </span>);\n }\n });\n }\n arrayTooltipText.push(<span key=\"group\">{this.texts.ownerGroup + ': ' + (acl.ownerGroup || '').replace('system.group.', '')}</span>);\n arrayTooltipText.push(<span key=\"owner\">{this.texts.ownerUser + ': ' + (acl.owner || '').replace('system.user.', '')}</span>);\n funcRenderStateObject();\n if (acl.state) {\n funcRenderStateObject('state');\n }\n return arrayTooltipText.length ? <span className={this.props.classes.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span> : '';\n }\n\n /**\n * @param {string} id\n * @param {{ data: { obj: { type: string; }; hasCustoms: any; }; }} item\n * @param {{ cellButtonsButton: string | undefined; cellButtonsButtonAlone: any; cellButtonsButtonIcon: string | undefined; cellButtonsButtonWithCustoms: any; }} classes\n */\n renderColumnButtons(id, item, classes) {\n if (!item.data.obj) {\n return this.props.onObjectDelete || this.props.objectEditOfAccessControl ? <div className={classes.buttonDiv}>\n {this.state.filter.expertMode && this.props.objectEditOfAccessControl ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, classes.cellButtonsEmptyButton, classes.cellButtonMinWidth)}\n onClick={() =>\n this.setState({ modalEditOfAccess: true, modalEmptyId: id, modalEditOfAccessObjData: item.data })}\n size=\"large\">---</IconButton> : null}\n {this.props.onObjectDelete && item.children && item.children.length ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, classes.cellButtonsButtonAlone)}\n size=\"small\"\n aria-label=\"delete\"\n title={this.texts.deleteObject}\n onClick={() => this.props.onObjectDelete(id, !!(item.children && item.children.length), false)}\n >\n <IconDelete className={classes.cellButtonsButtonIcon} />\n </IconButton> : null}\n </div> : null;\n }\n\n item.data.aclTooltip = item.data.aclTooltip || this.renderTooltipAccessControl(item.data.obj.acl);\n\n const acl = item.data.obj.acl ? (item.data.obj.type === 'state' ? item.data.obj.acl.state : item.data.obj.acl.object) : 0;\n const aclSystemConfig = item.data.obj.acl && (item.data.obj.type === 'state' ? this.systemConfig.common.defaultNewAcl.state : this.systemConfig.common.defaultNewAcl.object);\n\n return [\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? <Tooltip key=\"acl\" title={item.data.aclTooltip}><IconButton\n className={classes.cellButtonMinWidth}\n onClick={() => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div className={classes.aclText}>{isNaN(Number(acl).toString(16)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16)}</div>\n </IconButton></Tooltip> : <div key=\"aclEmpty\" className={classes.cellButtonMinWidth} />,\n <IconButton\n key=\"edit\"\n className={classes.cellButtonsButton}\n size=\"small\"\n aria-label=\"edit\"\n title={this.texts.editObject}\n onClick={() => {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.setState({ editObjectDialog: id });\n }}\n >\n <IconEdit className={classes.cellButtonsButtonIcon} />\n </IconButton>,\n this.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? <IconButton\n key=\"delete\"\n className={classes.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => this.props.onObjectDelete(id, !!item.children?.length, !item.data.obj.common?.dontDelete)}\n title={this.texts.deleteObject}\n >\n <IconDelete className={classes.cellButtonsButtonIcon} />\n </IconButton> : null,\n this.props.objectCustomDialog && this.info.hasSomeCustoms && item.data.obj.type === 'state' && item.data.obj.common?.type !== 'file' ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, item.data.hasCustoms ? classes.cellButtonsButtonWithCustoms : classes.cellButtonsButtonWithoutCustoms)}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={this.texts.customConfig}\n onClick={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectSelected', id);\n\n this.pauseSubscribe(true);\n this.props.router && this.props.router.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id] });\n }}\n >\n <IconConfig className={classes.cellButtonsButtonIcon} />\n </IconButton> : null,\n ];\n }\n\n /**\n * @private\n * @param {string} id\n */\n readHistory(id) {\n /*interface GetHistoryOptions {\n instance?: string;\n start?: number;\n end?: number;\n step?: number;\n count?: number;\n from?: boolean;\n ack?: boolean;\n q?: boolean;\n addID?: boolean;\n limit?: number;\n ignoreNull?: boolean;\n sessionId?: any;\n aggregate?: 'minmax' | 'min' | 'max' | 'average' | 'total' | 'count' | 'none';\n }*/\n if (window.sparkline &&\n this.defaultHistory &&\n this.objects[id] &&\n this.objects[id].common &&\n this.objects[id].common.custom &&\n this.objects[id].common.custom[this.defaultHistory]) {\n\n const now = new Date();\n now.setHours(now.getHours() - 24);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n let nowMs = now.getTime();\n\n this.props.socket.getHistory(id, {\n instance: this.defaultHistory,\n start: nowMs,\n end: Date.now(),\n step: 3600000,\n from: false,\n ack: false,\n q: false,\n addID: false,\n aggregate: 'minmax'\n })\n .then(values => {\n const sparks = window.document.getElementsByClassName('sparkline');\n\n for (let s = 0; s < sparks.length; s++) {\n if (sparks[s].dataset.id === id) {\n const v = prepareSparkData(values, nowMs);\n\n window.sparkline.sparkline(sparks[s], v);\n break;\n }\n }\n })\n .catch(e => this.showError(e));\n }\n }\n\n /**\n * @private\n * @param {string} id\n * @param {any} item\n * @param {Record<string, any>} classes\n * @returns {JSX.Element | null}\n */\n renderColumnValue(id, item, classes) {\n const obj = item.data.obj;\n if (!obj || !this.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return <div className={Utils.clsx(classes.cellValueText, classes.cellValueFile)}>[file]</div>;\n } else\n if (!this.states[id]) {\n if (obj.type === 'state') {\n !this.recordStates.includes(id) && this.recordStates.push(id);\n this.states[id] = { val: null };\n this.subscribe(id);\n }\n return null;\n } else {\n !this.recordStates.includes(id) && this.recordStates.push(id);\n }\n\n const state = this.states[id];\n let info = item.data.state;\n if (!info) {\n info = item.data.state = item.data.state || formatValue(id, state, obj, this.texts, this.props.dateFormat, this.props.isFloatComma);\n\n info.valFull = info.valFull.map(item => {\n if (item.t === this.texts.quality && state.q) {\n return [\n <div className={classes.cellValueTooltipBoth} key={item.t}>{item.t}: {item.v}</div>,\n //<div className={classes.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n !item.nbr ? <br key={item.t + '_br'} /> : null\n ];\n } else {\n return [\n <div className={classes.cellValueTooltipTitle} key={item.t}>{item.t}:</div>,\n <div className={classes.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n !item.nbr ? <br key={item.t + '_br'} /> : null\n ];\n }\n });\n\n if (this.defaultHistory && this.objects[id] && this.objects[id].common && this.objects[id].common.custom && this.objects[id].common.custom[this.defaultHistory]) {\n info.valFull.push(<svg key=\"sparkline\" className=\"sparkline\" data-id={id} style={{ fill: '#3d85de' }} width=\"200\" height=\"30\" strokeWidth=\"3\" />);\n }\n\n const copyText = info.valText.v || '';\n info.val = copyText;\n info.valText = [\n <span className={classes.newValue} key={`${info.valText.v.toString()}valText`}>{info.valText.v.toString()}</span>,\n info.valText.u ? <span className={Utils.clsx(classes.cellValueTextUnit, classes.newValue)} key={`${info.valText.v.toString()}unit`}>{info.valText.u}</span> : null,\n info.valText.s !== undefined ? <span className={Utils.clsx(classes.cellValueTextState, classes.newValue)} key={`${info.valText.v.toString()}states`}>({info.valText.s})</span> : null,\n <IconCopy className={Utils.clsx(classes.cellButtonsValueButton, 'copyButton', classes.cellButtonsValueButtonCopy)} onClick={e => this.onCopy(e, copyText)} key=\"cc\" />,\n //<IconEdit className={ Utils.clsx(classes.cellButtonsValueButton, 'copyButton', classes.cellButtonsValueButtonEdit) } key=\"ce\" />\n ];\n }\n\n let val = info.valText;\n if (!this.state.filter.expertMode && item.data.button) {\n val = <PressButtonIcon className={Utils.clsx(this.props.classes.cellValueButton, !this.states[id] || !this.states[id].val ? this.props.classes.cellValueButtonFalse : '')} />;\n }\n\n return <Tooltip\n key=\"value\"\n title={info.valFull}\n classes={{ tooltip: this.props.classes.cellValueTooltip, popper: this.props.classes.cellValueTooltipBox }}\n onOpen={() => this.readHistory(id)}\n >\n <div style={info.style} className={classes.cellValueText} >\n {val}\n </div>\n </Tooltip>;\n }\n\n /**\n * @private\n * @returns {undefined}\n */\n _syncEnum(id, enumIds, newArray, cb) {\n if (!enumIds || !enumIds.length) {\n return cb && cb();\n } else {\n const enumId = enumIds.pop();\n const promises = [];\n if (this.info.objects[enumId]?.common) {\n if (this.info.objects[enumId].common.members?.length) {\n const pos = this.info.objects[enumId].common.members.indexOf(id);\n if (pos !== -1 && !newArray.includes(enumId)) {\n // delete from members\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members.splice(pos, 1);\n promises.push(this.props.socket.setObject(enumId, obj)\n .then(() => this.info.objects[enumId] = obj)\n .catch(e => this.showError(e))\n );\n }\n }\n\n // add to it\n if (newArray.includes(enumId) && !this.info.objects[enumId].common.members?.includes(id)) {\n // add to object\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members = obj.common.members || [];\n obj.common.members.push(id);\n obj.common.members.sort();\n promises.push(this.props.socket.setObject(enumId, obj)\n .then(() => this.info.objects[enumId] = obj)\n .catch(e => this.showError(e))\n );\n }\n }\n\n Promise.all(promises)\n .then(() => setTimeout(() =>\n this._syncEnum(id, enumIds, newArray, cb), 0));\n }\n }\n\n /**\n * @private\n * @returns {Promise}\n */\n syncEnum(id, enumName, newArray) {\n const toCheck = [...this.info[enumName === 'func' ? 'funcEnums' : 'roomEnums']];\n\n return new Promise(resolve => this._syncEnum(id, toCheck, newArray, error => {\n error && this.showError(error);\n // force update of object\n resolve();\n }));\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEnumDialog() {\n if (this.state.enumDialog) {\n const type = this.state.enumDialog.type;\n const item = this.state.enumDialog.item;\n const itemEnums = this.state.enumDialogEnums;\n const enumsOriginal = this.state.enumDialog.enumsOriginal;\n\n const enums = (type === 'room' ? this.info.roomEnums : this.info.funcEnums).map(id => ({\n name: getName((this.objects[id] && this.objects[id].common && this.objects[id].common.name) || id.split('.').pop(), this.props.lang),\n value: id,\n icon: getSelectIdIcon(this.objects, id, this.imagePrefix)\n }));\n\n enums.forEach(item => {\n if (item.icon && typeof item.icon == 'string') {\n item.icon = <div className={this.props.classes.enumIconDiv}>\n <img src={item.icon} className={this.props.classes.enumIcon} alt={item.name} />\n </div>;\n }\n });\n\n // const hasIcons = !!enums.find(item => item.icon);\n\n return <Dialog className={this.props.classes.enumDialog} onClose={() => this.setState({ enumDialog: null })} aria-labelledby=\"enum-dialog-title\" open={true}>\n <DialogTitle id=\"enum-dialog-title\">\n {type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms')}\n <Fab\n className={this.props.classes.enumButton}\n color=\"primary\"\n disabled={JSON.stringify(enumsOriginal) === JSON.stringify(itemEnums)}\n size=\"small\"\n onClick={() =>\n this.syncEnum(item.data.id, type, itemEnums)\n .then(() => this.setState({ enumDialog: null, enumDialogEnums: null }))}\n >\n <IconCheck />\n </Fab>\n </DialogTitle>\n <List classes={{ root: this.props.classes.enumList }}>\n {\n enums.map(item => {\n let id;\n let name;\n let icon;\n\n if (typeof item === 'object') {\n id = item.value;\n name = item.name;\n icon = item.icon;\n } else {\n id = item;\n name = item;\n }\n const labelId = `checkbox-list-label-${id}`;\n\n return <ListItem\n className={this.props.classes.headerCellSelectItem}\n key={id}\n onClick={() => {\n const pos = itemEnums.indexOf(id);\n const enumDialogEnums = JSON.parse(JSON.stringify(this.state.enumDialogEnums));\n if (pos === -1) {\n enumDialogEnums.push(id);\n enumDialogEnums.sort();\n } else {\n enumDialogEnums.splice(pos, 1);\n }\n this.setState({ enumDialogEnums });\n }}\n >\n <ListItemIcon classes={{ root: this.props.classes.enumCheckbox }}>\n <Checkbox\n edge=\"start\"\n checked={itemEnums.includes(id)}\n tabIndex={-1}\n disableRipple\n inputProps={{ 'aria-labelledby': labelId }}\n />\n </ListItemIcon>\n <ListItemText id={labelId}>{name}</ListItemText>\n {icon ? <ListItemSecondaryAction>{icon}</ListItemSecondaryAction> : null}\n </ListItem>;\n })\n }\n </List>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditRoleDialog() {\n if (this.state.roleDialog && this.props.objectBrowserEditRole) {\n const ObjectBrowserEditRole = this.props.objectBrowserEditRole;\n return <ObjectBrowserEditRole\n key=\"objectBrowserEditRole\"\n id={this.state.roleDialog}\n socket={this.props.socket}\n t={this.props.t}\n roles={this.info.roles}\n onClose={obj => {\n if (obj) {\n this.info.objects[this.state.roleDialog] = obj;\n }\n this.setState({ roleDialog: false });\n }}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {boolean} [isSave]\n */\n onColumnsEditCustomDialogClose(isSave) {\n if (isSave) {\n let value = this.customColumnDialog.value;\n if (this.customColumnDialog.type === 'boolean') {\n value = value === 'true' || value === true;\n } else if (this.customColumnDialog.type === 'number') {\n value = parseFloat(value);\n }\n this.customColumnDialog = null;\n this.props.socket.getObject(this.state.columnsEditCustomDialog.obj._id)\n .then(obj => {\n if (this.setCustomValue(obj, this.state.columnsEditCustomDialog.it, value)) {\n return this.props.socket.setObject(obj._id, obj);\n } else {\n throw new Error(this.props.t('ra_Cannot update attribute, because not found in the object'))\n }\n })\n .then(() => this.setState({ columnsEditCustomDialog: null }))\n .catch(e => this.showError(e));\n } else {\n this.customColumnDialog = null;\n this.setState({ columnsEditCustomDialog: null });\n }\n }\n\n /**\n * @private\n */\n renderColumnsEditCustomDialog() {\n if (this.state.columnsEditCustomDialog) {\n if (!this.customColumnDialog) {\n const value = this.getCustomValue(this.state.columnsEditCustomDialog.obj, this.state.columnsEditCustomDialog.it);\n this.customColumnDialog = {\n type: this.state.columnsEditCustomDialog.it.type || typeof value,\n initValue: (value === null || value === undefined ? '' : value).toString(),\n value: (value === null || value === undefined ? '' : value).toString()\n };\n }\n\n return <Dialog\n onClose={() => this.setState({ columnsEditCustomDialog: null })}\n maxWidth=\"md\"\n aria-labelledby=\"custom-dialog-title\" open={true}>\n <DialogTitle id=\"custom-dialog-title\">{this.props.t('ra_Edit object field') + ': ' + this.state.columnsEditCustomDialog.obj._id}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.customColumnDialog.type === 'boolean' ?\n <FormControlLabel\n control={<Checkbox\n onKeyUp={e => e.keyCode === 13 && this.onColumnsEditCustomDialogClose(true)}\n defaultChecked={this.customColumnDialog.value === 'true'}\n onChange={e => {\n this.customColumnDialog.value = e.target.checked.toString();\n const changed = this.customColumnDialog.value !== this.customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n />}\n label={this.state.columnsEditCustomDialog.it.name + ' (' + this.state.columnsEditCustomDialog.it.pathText + ')'}\n />\n :\n <TextField\n variant=\"standard\"\n defaultValue={this.customColumnDialog.value}\n fullWidth\n onKeyUp={e => e.keyCode === 13 && this.onColumnsEditCustomDialogClose(true)}\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n onChange={e => {\n this.customColumnDialog.value = e.target.value;\n const changed = this.customColumnDialog.value !== this.customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n autoFocus\n />\n }\n\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose(true)}\n disabled={!this.state.customColumnDialogValueChanged}\n color=\"primary\"\n startIcon={<IconCheck /> }\n >\n {this.props.t('ra_Update')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose()}\n startIcon={<IconClose />}\n >{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} obj\n * @param {any} it\n */\n getCustomValue(obj, it) {\n if (obj && obj._id && obj._id.startsWith(it.adapter + '.') && it.path.length > 1) {\n const p = it.path;\n let value;\n if (obj[p[0]] && typeof obj[p[0]] === 'object') {\n if (p.length === 2) { // most common case\n value = obj[p[0]][p[1]];\n } else if (p.length === 3) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' ? obj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] ? obj[p[0]][p[1]][p[2]][p[3]] : null;\n } else if (p.length === 5) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && obj[p[0]][p[1]][p[2]][p[3]] ? obj[p[0]][p[1]][p[2]][p[3]][p[4]] : null;\n } else if (p.length === 6) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && obj[p[0]][p[1]][p[2]][p[3]] && obj[p[0]][p[1]][p[2]][p[3]][p[4]] ? obj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] : null;\n }\n if (value === undefined || value === null) {\n return null;\n } else {\n return value;\n }\n }\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} obj\n * @param {any} it\n * @param {any} value\n */\n setCustomValue(obj, it, value) {\n if (obj && obj._id && obj._id.startsWith(it.adapter + '.') && it.path.length > 1) {\n const p = it.path;\n if (obj[p[0]] && typeof obj[p[0]] === 'object') {\n if (p.length === 2) { // most common case\n obj[p[0]][p[1]] = value;\n return true;\n } else if (p.length === 3) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object') {\n obj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]] && typeof obj[p[0]][p[1]][p[2]][p[3]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]] && typeof obj[p[0]][p[1]][p[2]][p[3]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]][p[4]] && typeof obj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Renders a custom value.\n * @param {any} obj\n * @param {any} it\n * @param {any} item\n * @returns {JSX.Element | null}\n */\n renderCustomValue(obj, it, item) {\n let text = this.getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !this.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return <div\n className={Utils.clsx(this.props.classes.columnCustom, this.props.classes.columnCustomEditable, this.props.classes['columnCustom_' + it.align])}\n onClick={() => this.setState({ columnsEditCustomDialog: { item, it, obj }, customColumnDialogValueChanged: false })}>{text}</div>;\n } else {\n return <div\n className={Utils.clsx(this.props.classes.columnCustom, this.props.classes['columnCustom_' + it.align])}>{text}</div>;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Renders a leaf.\n * @param {any} item\n * @param {boolean} isExpanded\n * @param {Record<string, any>} classes\n * @param {{ count: number; }} counter\n * @returns {JSX.Element}\n */\n renderLeaf(item, isExpanded, classes, counter) {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? this.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n let itemType = obj?.type;\n\n if (item.children || itemType === 'folder' || itemType === 'device' || itemType === 'channel' || itemType === 'meta') {\n iconFolder = isExpanded ? <IconOpen\n className={classes.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n /> : <IconClosed\n className={classes.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />;\n } else {\n if (obj.common && (obj.common.write === false) && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly className={classes.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument className={classes.cellIdIconDocument} />;\n }\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = <span className={Utils.clsx(classes.cellIdIconOwn, 'iconOwn')}>{item.data.icon}</span>; // utf-8 char\n } else {\n iconItem = <img className={Utils.clsx(classes.cellIdIconOwn, 'iconOwn')} src={item.data.icon} alt=\"\" />;\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj && obj.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = this.levelPadding * item.data.level;\n\n if (item.data.lang !== this.state.lang) {\n const { rooms, per } = findRoomsForObject(this.info, id, this.state.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(this.info, id, this.state.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = this.state.lang;\n }\n\n const checkbox =\n this.props.multiSelect &&\n this.objects[id] && (!this.props.types || this.props.types.includes(this.objects[id].type)) ?\n <Checkbox\n className={classes.checkBox}\n checked={this.state.selected.includes(id)}\n /> :\n null;\n\n let valueEditable = !this.props.notEditable && itemType === 'state' && (this.state.filter.expertMode || common?.write !== false);\n if (this.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n const enumEditable = !this.props.notEditable && this.objects[id] && (this.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n const checkVisibleObjectType = this.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n let newValue = '';\n let newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = this.states[id]?.from;\n if (newValue === undefined) {\n newValue = '&nbsp;';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${this.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${this.texts.stateChangedBy} ${user}`);\n }\n }\n if (obj) {\n obj.from && newValueTitle.push(this.texts.objectChangedFrom + ' ' + obj.from.replace(/^system\\.adapter\\.|^system\\./, ''));\n obj.user && newValueTitle.push(this.texts.objectChangedBy + ' ' + obj.user.replace(/^system\\.user\\./, ''));\n obj.ts && newValueTitle.push(this.texts.objectChangedByUser + ' ' + Utils.formatDate(new Date(obj.ts), this.props.dateFormat));\n }\n\n const readWriteAlias = typeof common?.alias?.id === 'object';\n\n const alias = id.startsWith('alias.') && common?.alias?.id ?\n (readWriteAlias ?\n <div className={classes.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.read);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id.read));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite)}\n >←{common.alias.id.read}</div> : null}\n {common.alias.id.write ? <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.write);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id.write));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite)}\n >→{common.alias.id.write}</div> : null}\n </div>\n :\n <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasAlone)}\n >→{common.alias.id}</div>\n ) : null;\n\n let checkColor = common?.color;\n let invertBackground = 'none';\n if (checkColor && !this.state.selected.includes(id)) {\n invertBackground = Utils.invertColor(checkColor, true);\n }\n if (!checkColor || this.state.selected.includes(id)) {\n checkColor = 'inherit';\n }\n const icons = [];\n\n if (common?.statusStates) {\n let ids = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = id + '.' + _id;\n }\n ids[name] = _id;\n\n if (!this.states[_id]) {\n if (this.objects[_id]?.type === 'state') {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n this.states[_id] = { val: null };\n this.subscribe(_id);\n }\n } else {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && this.states[ids.errorId] && this.states[ids.errorId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n colorSet = true;\n icons.push(<IconError key=\"error\" title={this.texts.deviceError} className={this.props.classes.iconDeviceError}/>);\n }\n\n if (ids.onlineId && this.states[ids.onlineId] && this.states[ids.onlineId].val !== null) {\n if (!colorSet) {\n if (this.states[ids.onlineId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n } else {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n }\n } else if (this.states[ids.onlineId].val) {\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n } else {\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n }\n } else\n if (ids.offlineId && this.states[ids.offlineId] && this.states[ids.offlineId].val !== null) {\n if (!colorSet) {\n if (this.states[ids.offlineId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n } else {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n }\n } else if (this.states[ids.offlineId].val) {\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n } else {\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(this.states[id]?.q || 0).join(', ') : null;\n\n return <Grid\n container\n direction=\"row\"\n wrap=\"nowrap\"\n className={Utils.clsx(\n classes.tableRow,\n this.state.linesEnabled && classes.tableRowLines,\n !this.props.dragEnabled && classes.tableRowNoDragging,\n alias && classes.tableRowAlias,\n readWriteAlias && classes.tableRowAliasReadWrite,\n !item.data.visible && classes.filteredOut,\n item.data.hasVisibleParent && !item.data.visible && !item.data.hasVisibleChildren && classes.filteredParentOut,\n this.state.selected.includes(id) && classes.itemSelected,\n this.state.selectedNonObject === id && classes.itemSelected\n )}\n key={id}\n id={id}\n onClick={() => this.onSelect(id)}\n onDoubleClick={() => {\n if (!item.children) {\n this.onSelect(id, true);\n } else {\n this.toggleExpanded(id);\n }\n }}\n >\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"row\"\n className={classes.cellId}\n style={{ width: this.columnsVisibility.id, paddingLeft }}\n >\n <Grid\n item\n container\n alignItems=\"center\"\n style={{\n color: checkColor,\n background: invertBackground\n }}\n >\n {checkbox}\n {iconFolder}\n </Grid>\n <Grid\n item\n title={id}\n className={classes.cellIdSpan}\n style={{\n background: invertBackground,\n color: id === 'system' ?\n COLOR_NAME_SYSTEM : (id === 'system.adapter' ? COLOR_NAME_SYSTEM_ADAPTER :\n checkColor)\n }}\n >\n {item.data.name}\n {alias}\n {icons}\n </Grid>\n <div\n style={{\n color: checkColor,\n background: invertBackground\n }} className={classes.grow} />\n <Grid\n item\n container\n alignItems=\"center\"\n >\n {iconItem}\n </Grid>\n <div style={{ color: checkColor }}>\n <IconCopy className={Utils.clsx(classes.cellCopyButton, 'copyButton')} onClick={e => this.onCopy(e, id)} />\n </div>\n </Grid>\n\n {this.columnsVisibility.name ? <div className={classes.cellName} style={{ width: this.columnsVisibility.name }}>\n {(item.data?.title) || ''}\n {item.data?.title ? <div style={{ color: checkColor }}>\n <IconCopy className={Utils.clsx(classes.cellCopyButton, 'copyButton')} onClick={e => this.onCopy(e, item.data.title)} />\n </div> : null}\n </div> : null}\n\n {!this.state.statesView ?\n <>\n {this.columnsVisibility.type ? <div className={classes.cellType} style={{ width: this.columnsVisibility.type }}>{typeImg} {obj && obj.type}</div> : null}\n {this.columnsVisibility.role ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.role, cursor: this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole ? 'text' : 'default' }} onClick={this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole ? () => this.setState({ roleDialog: item.data.id }) : undefined}>{common?.role}</div> : null}\n {this.columnsVisibility.room ? <div className={`${classes.cellRoom} ${item.data.per ? classes.cellEnumParent : ''}`} style={{ width: this.columnsVisibility.room, cursor: enumEditable ? 'text' : 'default' }} onClick={enumEditable ? () => { const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums'); this.setState({ enumDialogEnums: enums, enumDialog: { item, type: 'room', enumsOriginal: JSON.parse(JSON.stringify(enums)) } }); } : undefined}>{item.data.rooms}</div> : null}\n {this.columnsVisibility.func ? <div className={`${classes.cellFunc} ${item.data.pef ? classes.cellEnumParent : ''}`} style={{ width: this.columnsVisibility.func, cursor: enumEditable ? 'text' : 'default' }} onClick={enumEditable ? () => { const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums'); this.setState({ enumDialogEnums: enums, enumDialog: { item, type: 'func', enumsOriginal: JSON.parse(JSON.stringify(enums)) } }); } : undefined}>{item.data.funcs}</div> : null}\n </>\n :\n <>\n {this.columnsVisibility.changedFrom ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.changedFrom }} title={newValueTitle.join('\\n')}>{checkVisibleObjectType && this.states[id]?.from ? newValue : null}</div> : null}\n {this.columnsVisibility.qualityCode ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.qualityCode }} title={q || ''}>{q}</div> : null}\n {this.columnsVisibility.timestamp ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.timestamp }}>{checkVisibleObjectType && this.states[id]?.ts ? Utils.formatDate(new Date(this.states[id].ts), this.props.dateFormat) : null}</div> : null}\n {this.columnsVisibility.lastChange ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.lastChange }}>{checkVisibleObjectType && this.states[id]?.lc ? Utils.formatDate(new Date(this.states[id].lc), this.props.dateFormat) : null}</div> : null}\n </>\n }\n {this.adapterColumns.map(it => <div className={classes.cellAdapter} style={{ width: this.columnsVisibility[it.id] }} key={it.id} title={it.adapter + ' => ' + it.pathText}>{this.renderCustomValue(obj, it, item)}</div>)}\n {this.columnsVisibility.val ? <div className={classes.cellValue} style={{ width: this.columnsVisibility.val, cursor: valueEditable ? (common?.type === 'file' ? 'zoom-in' : (item.data.button ? 'grab' : 'text')) : 'default' }} onClick={valueEditable ? () => {\n if (!obj || !this.states) {\n return null;\n }\n\n if (common?.type === 'file') {\n return this.setState({viewFileDialog: id});\n }\n\n // in non-expert mode control button directly\n if (!this.state.filter.expertMode && item.data.button) {\n return this.props.socket.setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n }\n\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true });\n } : undefined}>{this.renderColumnValue(id, item, classes)}</div> : null}\n {this.columnsVisibility.buttons ? <div className={classes.cellButtons} style={{ width: this.columnsVisibility.buttons }}>{this.renderColumnButtons(id, item, classes)}</div> : null}\n </Grid>;\n }\n\n /**\n * Renders an item.\n * @param {any} root\n * @param {boolean} isExpanded\n * @param {Record<string, any>} classes\n * @param {{ count: any; }} [counter]\n * @returns {JSX.Element[]}\n */\n renderItem(root, isExpanded, classes, counter) {\n const items = [];\n counter = counter || { count: 0 };\n let leaf = this.renderLeaf(root, isExpanded, classes, counter);\n let DragWrapper = this.props.DragWrapper;\n if (this.props.dragEnabled) {\n if (root.data.sumVisibility) {\n leaf = <DragWrapper key={root.data.id} item={root} className={classes.draggable}>{leaf}</DragWrapper>;\n } else {\n // change cursor\n leaf = <div key={root.data.id} className={classes.nonDraggable}>{leaf}</div>\n }\n }\n root.data.id && items.push(leaf);\n\n isExpanded = isExpanded === undefined ? binarySearch(this.state.expanded, root.data.id) : isExpanded;\n if (!root.data.id || isExpanded) {\n if (!this.state.foldersFirst) {\n root.children && items.push(root.children.map(item => {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n return null;\n }));\n } else {\n // first only folder\n root.children && items.push(root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n\n return null;\n }));\n // then items\n root.children && items.push(root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n return null;\n }));\n }\n }\n\n return items;\n }\n\n /**\n * @private\n * @param {boolean} [columnsAuto]\n * @param {string[]} [columns]\n * @param {any} [columnsForAdmin]\n * @param {Record<string, number>} [columnsWidths]\n */\n calculateColumnsVisibility(columnsAuto, columns, columnsForAdmin, columnsWidths) {\n columnsWidths = columnsWidths || this.state.columnsWidths;\n columnsForAdmin = columnsForAdmin || this.state.columnsForAdmin;\n columns = columns || this.state.columns || [];\n columnsAuto = typeof columnsAuto !== 'boolean' ? this.state.columnsAuto : columnsAuto;\n\n columnsWidths = JSON.parse(JSON.stringify(columnsWidths));\n Object.keys(columnsWidths).forEach(name => {\n if (columnsWidths[name]) {\n columnsWidths[name] = parseInt(columnsWidths[name], 10) || 0;\n }\n });\n\n this.adapterColumns = [];\n const WIDTHS = SCREEN_WIDTHS[this.props.width].widths;\n\n if (columnsAuto) {\n this.columnsVisibility = {\n id: SCREEN_WIDTHS[this.props.width].idWidth,\n name: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n nameHeader: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n type: this.visibleCols.includes('type') ? WIDTHS.type || 0 : 0,\n role: this.visibleCols.includes('role') ? WIDTHS.role || 0 : 0,\n room: this.visibleCols.includes('room') ? WIDTHS.room || 0 : 0,\n func: this.visibleCols.includes('func') ? WIDTHS.func || 0 : 0,\n changedFrom: this.visibleCols.includes('changedFrom') ? WIDTHS.changedFrom || 0 : 0,\n qualityCode: this.visibleCols.includes('qualityCode') ? WIDTHS.qualityCode || 0 : 0,\n timestamp: this.visibleCols.includes('timestamp') ? WIDTHS.timestamp || 0 : 0,\n lastChange: this.visibleCols.includes('lastChange') ? WIDTHS.lastChange || 0 : 0,\n val: this.visibleCols.includes('val') ? WIDTHS.val || 0 : 0,\n buttons: this.visibleCols.includes('buttons') ? WIDTHS.buttons || 0 : 0,\n };\n\n if (this.columnsVisibility.name && !this.customWidth) {\n let widthSum = this.columnsVisibility.id; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom;\n widthSum += this.columnsVisibility.qualityCode;\n widthSum += this.columnsVisibility.timestamp;\n widthSum += this.columnsVisibility.lastChange;\n } else {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n widthSum += this.columnsVisibility.val;\n widthSum += this.columnsVisibility.buttons;\n this.columnsVisibility.name = `calc(100% - ${widthSum + 5}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else if (!this.customWidth) {\n // Calculate the with of ID\n let widthSum = 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom;\n widthSum += this.columnsVisibility.qualityCode;\n widthSum += this.columnsVisibility.timestamp;\n widthSum += this.columnsVisibility.lastChange;\n } else {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n widthSum += this.columnsVisibility.val;\n widthSum += this.columnsVisibility.buttons;\n this.columnsVisibility.id = `calc(100% - ${widthSum + 5}px)`;\n }\n } else {\n this.columnsVisibility = {\n id: columnsWidths.id || SCREEN_WIDTHS[this.props.width].idWidth,\n name: columns.includes('name') ? columnsWidths.name || WIDTHS.name || SCREEN_WIDTHS[this.props.width].widths.name || 0 : 0,\n type: columns.includes('type') ? columnsWidths.type || WIDTHS.type || SCREEN_WIDTHS[this.props.width].widths.type || 0 : 0,\n role: columns.includes('role') ? columnsWidths.role || WIDTHS.role || SCREEN_WIDTHS[this.props.width].widths.role || 0 : 0,\n room: columns.includes('room') ? columnsWidths.room || WIDTHS.room || SCREEN_WIDTHS[this.props.width].widths.room || 0 : 0,\n func: columns.includes('func') ? columnsWidths.func || WIDTHS.func || SCREEN_WIDTHS[this.props.width].widths.func || 0 : 0\n };\n let widthSum = this.columnsVisibility.id; // id is always visible\n if (this.columnsVisibility.name) {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n\n if (columnsForAdmin && columns) {\n Object.keys(columnsForAdmin).sort().forEach(adapter =>\n columnsForAdmin[adapter].forEach(column => {\n const id = '_' + adapter + '_' + column.path;\n this.columnsVisibility[id] = columns.includes(id);\n if (columns.includes(id)) {\n const item = {\n adapter,\n id: '_' + adapter + '_' + column.path,\n name: column.name,\n path: column.path.split('.'),\n pathText: column.path\n };\n if (column.edit) {\n item.edit = true;\n if (column.type) {\n item.type = column.type;\n }\n if (column.objTypes) {\n item.objTypes = column.objTypes;\n }\n }\n\n this.adapterColumns.push(item);\n this.columnsVisibility[id] = columnsWidths[item.id] || column.width || SCREEN_WIDTHS[this.props.width].widths.func || SCREEN_WIDTHS.xl.widths.func;\n widthSum += this.columnsVisibility[id];\n } else {\n this.columnsVisibility[id] = 0;\n }\n }));\n }\n this.adapterColumns.sort((a, b) => a.id > b.id ? -1 : (a.id < b.id ? 1 : 0));\n this.columnsVisibility.val = columns.includes('val') ? columnsWidths.val || WIDTHS.val || SCREEN_WIDTHS.xl.widths.val : 0;\n\n // do not show buttons if not desired\n if (!this.props.columns || this.props.columns.includes('buttons')) {\n this.columnsVisibility.buttons = columns.includes('buttons') ? columnsWidths.buttons || WIDTHS.buttons || SCREEN_WIDTHS.xl.widths.buttons : 0;\n widthSum += this.columnsVisibility.buttons;\n }\n\n if (this.columnsVisibility.name && !columnsWidths.name) {\n widthSum += this.columnsVisibility.val;\n this.columnsVisibility.name = `calc(100% - ${widthSum}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else {\n const newWidth = Object.keys(this.columnsVisibility).reduce((accumulator, name) => {\n if (name === 'id' || typeof this.columnsVisibility[name] === 'string' || !this.columnsVisibility[name]) {\n return accumulator;\n } else {\n return accumulator + this.columnsVisibility[name];\n }},\n 0);\n this.columnsVisibility.id = `calc(100% - ${newWidth}px)`;\n }\n }\n }\n\n resizerMouseMove = e => {\n if (this.resizerActiveDiv) {\n let width;\n let widthNext;\n if (this.resizeLeft) {\n width = this.resizerOldWidth - e.clientX + this.resizerPosition;\n widthNext = this.resizerOldWidthNext + e.clientX - this.resizerPosition;\n } else {\n width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n }\n\n if ((!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerNextMin || widthNext > this.resizerNextMin)) {\n this.resizerCurrentWidths[this.resizerActiveName] = width;\n this.resizerCurrentWidths[this.resizerNextName] = widthNext;\n\n this.resizerActiveDiv.style.width = width + 'px';\n this.resizerNextDiv.style.width = widthNext + 'px';\n\n this.columnsVisibility[this.resizerActiveName] = width;\n this.columnsVisibility[this.resizerNextName] = widthNext;\n if (this.resizerNextName === 'nameHeader') {\n this.columnsVisibility['name'] = widthNext - this.state.scrollBarWidth;\n this.resizerCurrentWidths['name'] = widthNext - this.state.scrollBarWidth;\n } else\n if (this.resizerActiveName === 'nameHeader') {\n this.columnsVisibility['name'] = width - this.state.scrollBarWidth;\n this.resizerCurrentWidths['name'] = width - this.state.scrollBarWidth;\n }\n this.customWidth = true;\n this.resizeTimeout && clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = null;\n this.forceUpdate();\n }, 200);\n }\n }\n }\n\n resizerMouseUp = () => {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.table`, JSON.stringify(this.resizerCurrentWidths));\n this.resizerActiveName = null;\n this.resizerNextName = null;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n }\n\n resizerMouseDown = e => {\n if (this.resizerActiveIndex === null || this.resizerActiveIndex === undefined) {\n if (!this.storedWidths) {\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width]));\n }\n\n this.resizerCurrentWidths = this.resizerCurrentWidths || {};\n this.resizerActiveDiv = e.target.parentNode;\n this.resizerActiveName = this.resizerActiveDiv.dataset.name;\n\n let i = 0;\n if (e.target.dataset.left === 'true') {\n this.resizeLeft = true;\n this.resizerNextDiv = this.resizerActiveDiv.previousElementSibling;\n let handle = this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle);\n while (this.resizerNextDiv && !handle && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.previousElementSibling;\n handle = this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle);\n i++;\n }\n if (handle && handle.dataset.left !== 'true') {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n }\n } else {\n this.resizeLeft = false;\n this.resizerNextDiv = this.resizerActiveDiv.nextElementSibling;\n /*while (this.resizerNextDiv && !this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle) && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n i++;\n }*/\n }\n this.resizerNextName = this.resizerNextDiv.dataset.name;\n\n this.resizerMin = parseInt(this.resizerActiveDiv.dataset.min, 10) || 0;\n this.resizerNextMin = parseInt(this.resizerNextDiv.dataset.min, 10) || 0;\n\n this.resizerPosition = e.clientX;\n\n this.resizerCurrentWidths[this.resizerActiveName] = this.resizerActiveDiv.offsetWidth;\n this.resizerCurrentWidths[this.resizerNextName] = this.resizerNextDiv.offsetWidth;\n\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveName];\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerNextName];\n\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n\n resizerReset = () => {\n this.customWidth = false;\n SCREEN_WIDTHS[this.props.width] = JSON.parse(JSON.stringify(this.storedWidths));\n this.calculateColumnsVisibility();\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.table`);\n this.forceUpdate();\n };\n\n /**\n * @private\n * @returns {JSX.Element}\n */\n renderHeader() {\n const classes = this.props.classes;\n\n let filterClearInValue = null;\n if (!this.columnsVisibility.buttons && !this.isFilterEmpty()) {\n filterClearInValue = <IconButton\n onClick={() => this.clearFilter()}\n className={classes.buttonClearFilter}\n title={this.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconClearFilter />\n <IconClose className={classes.buttonClearFilterIcon} />\n </IconButton>;\n }\n\n return <div className={classes.headerRow} >\n <div className={classes.headerCell} style={{ width: this.columnsVisibility.id, position: 'relative' }} data-min={240} data-name=\"id\">{this.getFilterInput('id')}<div className={this.props.classes.resizeHandle + ' ' + this.props.classes.resizeHandleRight} onMouseDown={this.resizerMouseDown} onDoubleClick={this.resizerReset} title={this.props.t('ra_Double click to reset table layout')} /></div>\n {this.columnsVisibility.name ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.nameHeader }} data-min={100} data-name=\"nameHeader\">{this.getFilterInput('name')}</div> : null}\n {!this.state.statesView && <>\n {this.columnsVisibility.type ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.type }} data-min={100} data-name=\"type\">{this.getFilterSelectType()}</div> : null}\n {this.columnsVisibility.role ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.role }} data-min={100} data-name=\"role\">{this.getFilterSelectRole()}</div> : null}\n {this.columnsVisibility.room ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.room }} data-min={100} data-name=\"room\">{this.getFilterSelectRoom()}</div> : null}\n {this.columnsVisibility.func ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.func }} data-min={100} data-name=\"func\">{this.getFilterSelectFunction()}</div> : null}\n </>}\n {this.state.statesView && <>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.changedFrom }} data-min={100} data-name=\"changedFrom\">{this.props.t('ra_Changed from')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.qualityCode }} data-min={100} data-name=\"qualityCode\">{this.props.t('ra_Quality code')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.timestamp }} data-min={100} data-name=\"timestamp\">{this.props.t('ra_Timestamp')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.lastChange }} data-min={100} data-name=\"lastChange\">{this.props.t('ra_Last change')}</div>\n </>}\n {this.adapterColumns.map(item => <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility[item.id] }} title={item.adapter} key={item.id} data-min={100} data-name={item.id}>{item.name}</div>)}\n {this.columnsVisibility.val ? <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.val, position: 'relative' }} data-min={120} data-name=\"val\"><div className={this.props.classes.resizeHandle + ' ' + this.props.classes.resizeHandleLeft} data-left=\"true\" onMouseDown={this.resizerMouseDown} onDoubleClick={this.resizerReset} title={this.props.t('ra_Double click to reset table layout')} />{this.props.t('ra_Value')}{filterClearInValue}</div> : null}\n {this.columnsVisibility.buttons ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.buttons }}> {this.getFilterSelectCustoms()}</div> : null}\n </div>;\n }\n\n /**\n * @private\n * @returns {JSX.Element}\n */\n renderToast() {\n return <Snackbar\n open={!!this.state.toast}\n autoHideDuration={3000}\n onClick={() => this.setState({ toast: '' })}\n onClose={() => this.setState({ toast: '' })}\n message={this.state.toast}\n action={\n <React.Fragment>\n <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={() => this.setState({ toast: '' })}>\n <IconClose fontSize=\"small\" />\n </IconButton>\n </React.Fragment>\n }\n />;\n }\n\n /**\n * Called when component is updated.\n */\n componentDidUpdate() {\n if (this.tableRef.current) {\n const scrollBarWidth = this.tableRef.current.offsetWidth - this.tableRef.current.clientWidth;\n if (this.state.scrollBarWidth !== scrollBarWidth) {\n setTimeout(() => this.setState({ scrollBarWidth }), 100);\n } else {\n if (!this.selectedFound && ((this.state.selected && this.state.selected[0]) || this.lastSelectedItems)) {\n this.scrollToItem((this.state.selected && this.state.selected[0]) || this.lastSelectedItems);\n }\n }\n }\n }\n\n scrollToItem(id) {\n const node = window.document.getElementById(id);\n node && node.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center'\n });\n this.selectedFound = true;\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderCustomDialog() {\n if (this.state.customDialog && this.props.objectCustomDialog) {\n const ObjectCustomDialog = this.props.objectCustomDialog;\n\n return <ObjectCustomDialog\n reportChangedIds={changedIds => this.changedIds = [...changedIds]}\n objectIDs={this.state.customDialog}\n expertMode={this.state.filter.expertMode}\n isFloatComma={this.props.isFloatComma}\n t={this.props.t}\n lang={this.props.lang}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n objects={this.objects}\n customsInstances={this.info.customs}\n onClose={() => {\n this.pauseSubscribe(false);\n this.setState({ customDialog: null });\n if (this.changedIds) {\n this.changedIds = null;\n // update all changed IDs\n this.forceUpdate();\n }\n\n this.props.router && this.props.router.doNavigate('tab-objects');\n }}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Partial<ioBroker.State>} valAck\n */\n onUpdate(valAck) {\n this.props.socket.setState(this.edit.id, { val: valAck.val, ack: valAck.ack, q: valAck.q || 0, expire: valAck.expire || undefined })\n .catch(e => this.showError('Cannot write value: ' + e));\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditObjectDialog() {\n if (!this.state.editObjectDialog || !this.props.objectBrowserEditObject) {\n return null;\n }\n\n const ObjectBrowserEditObject = this.props.objectBrowserEditObject;\n\n return <ObjectBrowserEditObject\n key={this.state.editObjectDialog}\n obj={this.objects[this.state.editObjectDialog]}\n roleArray={this.info.roles}\n objects={this.objects}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n themeName={this.props.themeName}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n t={this.props.t}\n expertMode={this.state.filter.expertMode}\n onNewObject={obj =>\n this.props.socket.setObject(obj._id, obj)\n .then(() => this.setState({ editObjectDialog: obj._id }, () => this.onSelect(obj._id)))\n .catch(e => this.showError('Cannot write object: ' + e))}\n onClose={obj => {\n this.setState({ editObjectDialog: '' });\n if (obj) {\n this.props.socket.setObject(obj._id, obj)\n .catch(e => this.showError('Cannot write object: ' + e));\n }\n }}\n />\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderViewObjectFileDialog() {\n if (!this.state.viewFileDialog || !this.props.objectBrowserViewFile) {\n return null;\n }\n const ObjectBrowserViewFile = this.props.objectBrowserViewFile;\n\n return <ObjectBrowserViewFile\n key=\"viewFile\"\n obj={this.objects[this.state.viewFileDialog]}\n themeType={this.props.themeType}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n t={this.props.t}\n expertMode={this.state.filter.expertMode}\n onClose={() => this.setState({ viewFileDialog: '' })}\n />;\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditValueDialog() {\n if (!this.state.updateOpened || !this.props.objectBrowserValue) {\n return null;\n }\n\n if (!this.edit.id) {\n console.error('Invalid ID for edit: ' + JSON.stringify(this.edit));\n return null;\n }\n\n if (!this.objects[this.edit.id]) {\n console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`);\n return null;\n }\n\n const type = this.objects[this.edit.id].common?.type ?\n this.objects[this.edit.id].common.type : typeof this.edit.val;\n\n const ObjectBrowserValue = this.props.objectBrowserValue;\n\n return <ObjectBrowserValue\n t={this.props.t}\n lang={this.props.lang}\n type={type}\n states={Utils.getStates(this.objects[this.edit.id])}\n themeType={this.props.themeType}\n expertMode={this.state.filter.expertMode}\n value={this.edit.val}\n socket={this.props.socket}\n object={this.objects[this.edit.id]}\n defaultHistory={this.defaultHistory}\n dateFormat={this.props.dateFormat}\n onClose={res => {\n this.setState({ updateOpened: false });\n res && this.onUpdate(res);\n }}\n />;\n }\n\n extendObject = (id, data) =>\n this.props.socket.extendObject(id, data)\n .catch(error => window.alert(error));\n\n setObject = (id, data) =>\n this.props.socket.setObject(id, data)\n .catch(error => window.alert(error));\n\n /**\n * The rendering method of this component.\n * @returns {JSX.Element}\n */\n render() {\n this.recordStates = [];\n this.unsubscribeTimer && clearTimeout(this.unsubscribeTimer);\n\n // apply filter if changed\n const jsonFilter = JSON.stringify(this.state.filter);\n\n if (this.lastAppliedFilter !== jsonFilter && this.objects && this.root) {\n const counter = { count: 0 };\n\n applyFilter(this.root, this.state.filter, this.state.lang, this.objects, null, counter, this.props.customFilter, this.props.types);\n\n if (counter.count < 500 && !this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: true }));\n } else if (counter.count >= 500 && this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: false }));\n }\n\n this.lastAppliedFilter = jsonFilter;\n }\n\n this.unsubscribeTimer = setTimeout(() => {\n this.unsubscribeTimer = null;\n this.checkUnsubscribes();\n }, 200);\n\n if (!this.state.loaded) {\n return <CircularProgress key={this.props.dialogName + '_c'} />;\n } else {\n const classes = this.props.classes;\n const items = this.renderItem(this.root, undefined, classes);\n\n return <TabContainer key={this.props.dialogName}>\n <TabHeader>\n {this.getToolbar()}\n </TabHeader>\n <TabContent>\n {this.renderHeader()}\n <div className={this.props.classes.tableDiv} ref={this.tableRef}>\n {items}\n </div>\n </TabContent>\n {this.renderToast()}\n {this.renderColumnsEditCustomDialog()}\n {this.renderColumnsSelectorDialog()}\n {this.renderCustomDialog()}\n {this.renderEditValueDialog()}\n {this.renderEditObjectDialog()}\n {this.renderViewObjectFileDialog()}\n {this.renderEditRoleDialog()}\n {this.renderEnumDialog()}\n {this.renderErrorDialog()}\n {this.renderExportDialog()}\n {this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this)}\n {this.state.modalEditOfAccess && this.props.modalEditOfAccessControl && this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n </TabContainer>;\n }\n }\n}\n\nObjectBrowser.defaultProps = {\n objectAddBoolean: false,\n objectEditBoolean: false,\n objectStatesView: false,\n objectImportExport: false,\n objectEditOfAccessControl: false,\n modalNewObject: () => { },\n modalEditOfAccessControl: () => { },\n};\n\nObjectBrowser.propTypes = {\n dialogName: PropTypes.string, // where to store settings in localStorage\n classes: PropTypes.object,\n defaultFilters: PropTypes.object,\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array\n ]),\n onSelect: PropTypes.func,\n onFilterChanged: PropTypes.func,\n socket: PropTypes.object,\n showExpertButton: PropTypes.bool,\n expertMode: PropTypes.bool,\n imagePrefix: PropTypes.string,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n theme: PropTypes.object,\n t: PropTypes.func,\n lang: PropTypes.string.isRequired,\n multiSelect: PropTypes.bool,\n notEditable: PropTypes.bool,\n foldersFirst: PropTypes.bool,\n disableColumnSelector: PropTypes.bool,\n isFloatComma: PropTypes.bool,\n dateFormat: PropTypes.string,\n levelPadding: PropTypes.number,\n\n // components\n objectCustomDialog: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func\n ]),\n objectAddBoolean: PropTypes.bool, // optional toolbar button\n objectEditBoolean: PropTypes.bool, // optional toolbar button\n objectStatesView: PropTypes.bool, // optional toolbar button\n objectImportExport: PropTypes.bool, // optional toolbar button\n objectEditOfAccessControl: PropTypes.bool, //Access Control\n modalNewObject: PropTypes.func, // modal add object\n modalEditOfAccessControl: PropTypes.func, //modal Edit Of Access Control\n onObjectDelete: PropTypes.func, // optional function (id, hasChildren, objectExists) { }\n customFilter: PropTypes.object, // optional\n // `{common: {custom: true}}` - show only objects with some custom settings\n // `{common: {custom: 'sql.0'}}` - show only objects with sql.0 custom settings (only of the specific instance)\n // `{common: {custom: '_dataSources'}}` - show only objects of adapters `influxdb' or 'sql' or 'history'\n // `{common: {custom: 'adapterName.'}}` - show only objects of custom settings of specific adapter (all instances)\n // `{type: 'channel'}` - show only channels\n // `{type: ['channel', 'device']}` - show only channels and devices\n // `{common: {type: 'number'}` - show only states of type 'number\n // `{common: {type: ['number', 'string']}` - show only states of type 'number and string\n // `{common: {role: 'switch']}` - show only states with roles starting from switch\n // `{common: {role: ['switch', 'button]}` - show only states with roles starting from `switch` and `button`\n objectBrowserValue: PropTypes.object,\n objectBrowserEditObject: PropTypes.object,\n objectBrowserEditRole: PropTypes.object, // on Edit role\n objectBrowserViewFile: PropTypes.func, // on view file state\n router: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func\n ]),\n types: PropTypes.array, // optional ['state', 'instance', 'channel']\n columns: PropTypes.array, // optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons']\n\n objectsWorker: PropTypes.object, // optional cache of objects\n filterFunc: PropTypes.func, // function to filter out all unnecessary objects. It cannot be used together with \"types\"\n // Example for function: `obj => obj.common && obj.common.type === 'boolean'` to show only boolean states\n\n dragSettings: PropTypes.object,\n DragWrapper: PropTypes.func,\n dragEnabled: PropTypes.bool,\n useDrag: PropTypes.func,\n};\n\n/** @type {typeof ObjectBrowser} */\nconst _export = withWidth()(withStyles(styles)(ObjectBrowser));\nexport default _export;"],"mappings":"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"}
1
+ {"version":3,"file":"ObjectBrowser.js","names":["ICON_SIZE","ROW_HEIGHT","ITEM_LEVEL","SMALL_BUTTON_SIZE","COLOR_NAME_SYSTEM","COLOR_NAME_SYSTEM_ADAPTER","COLOR_NAME_ERROR_DARK","COLOR_NAME_ERROR_LIGHT","COLOR_NAME_CONNECTED_DARK","COLOR_NAME_CONNECTED_LIGHT","COLOR_NAME_DISCONNECTED_DARK","COLOR_NAME_DISCONNECTED_LIGHT","styles","theme","toolbar","minHeight","toolbarButtons","padding","marginLeft","switchColumnAuto","spacing","dialogColumns","transition","dialogColumnsLabel","fontSize","paddingTop","columnCustom","width","display","columnCustomEditable","cursor","columnCustomCenter","textAlign","columnCustomLeft","columnCustomRight","width100","transparent_10","opacity","transparent_20","transparent_30","transparent_40","transparent_50","transparent_60","transparent_70","transparent_80","transparent_90","transparent_100","columnsDialogInputWidth","headerRow","paddingLeft","height","whiteSpace","userSelect","buttonClearFilter","position","buttonClearFilterIcon","zIndex","top","left","color","tableDiv","overflow","tableRow","lineHeight","verticalAlign","background","palette","mode","primary","dark","light","Utils","invertColor","main","flexWrap","tableRowLines","borderBottom","borderRight","tableRowNoDragging","tableRowAlias","tableRowAliasReadWrite","checkBox","cellId","textOverflow","marginTop","cellIdSpan","cellIdIconFolder","marginRight","secondary","cellIdIconDocument","cellIdIconOwn","cellCopyButton","right","cellEditButton","cellName","cellIdAlias","fontStyle","cellIdAliasReadWriteDiv","cellIdAliasAlone","cellIdAliasReadWrite","cellType","cellRole","cellRoom","cellEnumParent","cellFunc","cellValue","cellValueButton","transform","cellValueButtonFalse","cellAdapter","cellValueTooltip","cellValueText","cellValueFile","cellValueTooltipTitle","cellValueTooltipValue","cellValueTooltipBoth","cellValueTooltipBox","cellValueTextUnit","newValue","animation","cellValueTextState","cellValueTooltipCopy","bottom","cellValueTooltipEdit","cellButtons","cellButtonsButton","cellButtonsEmptyButton","cellButtonMinWidth","minWidth","cellButtonsButtonAlone","cellButtonsButtonWithCustoms","cellButtonsButtonWithoutCustoms","cellButtonsValueButton","action","active","cellButtonsValueButtonCopy","cellButtonsValueButtonEdit","parseInt","filteredOut","filteredParentOut","filterInput","marginBottom","selectIcon","selectNone","itemSelected","header","headerCell","headerCellValue","headerCellInput","headerCellSelectItem","visibleButtons","grow","flexGrow","enumIconDiv","borderRadius","enumIcon","enumDialog","enumList","enumButton","enumCheckbox","buttonDiv","alignItems","aclText","rightsObject","rightsState","textCenter","tooltipAccessControl","flexDirection","fontSizeTitle","draggable","nonDraggable","selectClearButton","backgroundColor","iconDeviceConnected","iconDeviceDisconnected","iconDeviceError","resizeHandle","resizeHandleRight","borderColor","borderRightStyle","resizeHandleLeft","borderLeft","borderLeftStyle","generateFile","filename","obj","el","document","createElement","setAttribute","encodeURIComponent","JSON","stringify","style","body","appendChild","click","removeChild","binarySearch","list","find","_start","_end","undefined","length","middle","Math","floor","applyFilter","item","filters","lang","objects","context","counter","customFilter","selectedTypes","_depth","id","toLowerCase","name","type","custom","role","room","common","members","func","data","Array","isArray","includes","startsWith","Object","keys","expertMode","endsWith","expert","fID","fName","getName","visible","hasVisibleChildren","children","forEach","_item","sumVisibility","count","hasVisibleParent","getVisibleItems","_result","push","getSystemIcon","k","imagePrefix","icon","getSelectIdIcon","buildTree","options","ids","sort","a","b","replace","currentPathArr","currentPath","currentPathLen","root","info","funcEnums","roomEnums","roles","types","customs","enums","hasSomeCustoms","croot","i","parts","split","supportCustoms","adminUI","substring","repeat","curPath","_croot","parent","level","generated","title","hasCustoms","button","write","u","move","splice","join","aName","pop","bName","findNode","_parts","_path","_level","found","_id","en","toString","findRoomsForObject","withParentInfo","rooms","per","origin","ownEnums","findEnumsForObjectAsIds","enumName","funcs","findFunctionsForObject","pef","formatValue","state","texts","dateFormat","isFloatComma","states","getStates","isCommon","valText","v","val","match","Date","round","s","valFull","unit","t","value","ack","ts","formatDate","lc","from","user","c","quality","quality2text","q","nbr","src","_id_","aIcon","cIcon","instance","prepareSparkData","values","time","DEFAULT_FILTER","ITEM_IMAGES","channel","device","adapter","meta","chart","config","group","host","schedule","script","folder","StyledBadge","withStyles","badge","border","paper","Badge","SCREEN_WIDTHS","xs","idWidth","fields","widths","sm","md","buttons","lg","changedFrom","qualityCode","timestamp","lastChange","xl","objectsAlreadyLoaded","ObjectBrowser","props","console","log","findItem","pausedSubscribes","statesUpdateTimer","setTimeout","forceUpdate","clearTimeout","oldObj","newState","event","filterFunc","columnsForAdmin","parse","parseObjectForAdmins","setState","objectsUpdateTimer","lastAppliedFilter","result","mobile","objId","e","_enObj","enObj","socket","setObject","objs","hasOwnProperty","_createAllEnums","getState","def","window","alert","evt","f","target","files","r","FileReader","onload","contents","json","len","loadObjects","readAsText","selected","selectedNonObject","filter","acl","check","valueNum","arrayTooltipText","funcRenderStateObject","rights","classes","ownerGroup","ownerUser","owner","map","resizerActiveDiv","widthNext","resizeLeft","resizerOldWidth","clientX","resizerPosition","resizerOldWidthNext","resizerMin","resizerNextMin","resizerCurrentWidths","resizerActiveName","resizerNextName","resizerNextDiv","columnsVisibility","scrollBarWidth","customWidth","resizeTimeout","_localStorage","localStorage","setItem","dialogName","removeEventListener","resizerMouseMove","resizerMouseUp","resizerActiveIndex","storedWidths","parentNode","dataset","previousElementSibling","handle","querySelector","nextElementSibling","min","offsetWidth","addEventListener","calculateColumnsVisibility","removeItem","extendObject","error","lastSelectedItems","getItem","expanded","defaultFilters","assign","_sessionStorage","sessionStorage","tableRef","createRef","filterRefs","selectedFound","subscribes","visibleCols","columns","pos","indexOf","possibleCols","customDialog","router","location","getLocation","dialog","pauseSubscribe","columnsWidths","foldersFirst","statesView","objectStatesView","loaded","filterKey","depth","expandAllVisible","toast","editObjectDialog","viewFileDialog","roleDialog","modalEmptyId","columnsSelectorShow","columnsAuto","columnsDialogTransparent","columnsEditCustomDialog","customColumnDialogValueChanged","showExportDialog","linesEnabled","edit","editObject","deleteObject","customConfig","copyState","editState","close","filter_id","filter_name","filter_type","filter_role","filter_room","filter_func","filter_custom","objectChangedByUser","objectChangedBy","objectChangedFrom","stateChangedBy","stateChangedFrom","deviceError","deviceDisconnected","deviceConnected","aclOwner_read_object","aclOwner_read_state","aclOwner_write_object","aclOwner_write_state","aclGroup_read_object","aclGroup_read_state","aclGroup_write_object","aclGroup_write_state","aclEveryone_read_object","aclEveryone_read_state","aclEveryone_write_object","aclEveryone_write_state","levelPadding","update","Promise","resolve","updating","then","objectsWorker","getObjects","systemConfig","defaultNewAcl","object","defaultHistory","getAdditionalColumns","node","expandAllSelected","onAfterSelect","showError","cb","changed","path","isDouble","getObjectName","language","onSelect","loadAllObjects","registerHandler","onObjectChange","subscribeObject","filterTimer","unregisterHandler","unsubscribeObject","pattern","unsubscribeState","onStateChange","toggleItem","multiSelect","clsx","getAdapters","instances","recordStates","unsubscribe","_root","_partyId","shift","adminColumns","objTypes","warn","subscribeState","isPause","current","tagName","onFilterChanged","childNodes","someNotEmpty","attr","underline","onFilter","firstChild","hasIcons","newFilter","getFilterSelect","onExpandAll","expandDepth","collapseDepth","idDot","idLen","key","isAll","_getSelectedIdsForExport","getEnumsForId","_exportObjects","allowObjectCreation","refreshComponent","showExpertButton","disableColumnSelector","onCollapseAll","onExpandVisible","onCollapseVisible","onStatesViewVisible","objectAddBoolean","toolTipObjectCreating","modalNewObj","objectImportExport","input","handleJsonUpload","objectBrowserEditObject","objectEditBoolean","doNavigate","text","stopPropagation","preventDefault","copy","onObjectDelete","objectEditOfAccessControl","modalEditOfAccess","modalEditOfAccessObjData","cellButtonsButtonIcon","aclTooltip","renderTooltipAccessControl","aclSystemConfig","isNaN","Number","dontDelete","objectCustomDialog","sparkline","now","setHours","getHours","setMinutes","setSeconds","setMilliseconds","nowMs","getTime","getHistory","start","end","step","addID","aggregate","sparks","getElementsByClassName","subscribe","fill","copyText","onCopy","tooltip","popper","readHistory","enumIds","newArray","enumId","promises","all","_syncEnum","toCheck","itemEnums","enumDialogEnums","enumsOriginal","syncEnum","labelId","objectBrowserEditRole","ObjectBrowserEditRole","isSave","customColumnDialog","parseFloat","getObject","setCustomValue","it","Error","getCustomValue","initValue","keyCode","onColumnsEditCustomDialogClose","checked","pathText","p","notEditable","align","isExpanded","iconFolder","itemType","toggleExpanded","iconItem","typeImg","checkbox","valueEditable","objectBrowserViewFile","enumEditable","checkVisibleObjectType","newValueTitle","readWriteAlias","alias","read","scrollToItem","checkColor","invertBackground","icons","statusStates","colorSet","errorId","themeType","onlineId","offlineId","dragEnabled","adapterColumns","renderCustomValue","updateOpened","renderColumnValue","renderColumnButtons","items","leaf","renderLeaf","DragWrapper","renderItem","WIDTHS","nameHeader","widthSum","column","newWidth","reduce","accumulator","filterClearInValue","isFilterEmpty","clearFilter","getFilterInput","resizerMouseDown","resizerReset","getFilterSelectType","getFilterSelectRole","getFilterSelectRoom","getFilterSelectFunction","getFilterSelectCustoms","clientWidth","getElementById","scrollIntoView","behavior","block","inline","ObjectCustomDialog","changedIds","themeName","valAck","expire","ObjectBrowserEditObject","ObjectBrowserViewFile","objectBrowserValue","ObjectBrowserValue","res","onUpdate","unsubscribeTimer","jsonFilter","checkUnsubscribes","getToolbar","renderHeader","renderToast","renderColumnsEditCustomDialog","renderColumnsSelectorDialog","renderCustomDialog","renderEditValueDialog","renderEditObjectDialog","renderViewObjectFileDialog","renderEditRoleDialog","renderEnumDialog","renderErrorDialog","renderExportDialog","modalNewObject","modalEditOfAccessControl","Component","defaultProps","propTypes","PropTypes","string","oneOfType","array","bool","isRequired","number","dragSettings","useDrag","_export","withWidth"],"sources":["ObjectBrowser.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport copy from './copy-to-clipboard';\nimport withStyles from '@mui/styles/withStyles';\nimport SVG from 'react-inlinesvg';\n\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select from '@mui/material/Select';\nimport FormControl from '@mui/material/FormControl';\nimport Input from '@mui/material/Input';\nimport Grid from '@mui/material/Grid';\nimport Badge from '@mui/material/Badge';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport Checkbox from '@mui/material/Checkbox';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';\nimport ListItemText from '@mui/material/ListItemText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Fab from '@mui/material/Fab';\nimport TextField from '@mui/material/TextField';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\n// import ListItemButton from '@mui/material/ListItemButton';\n// import Slider from '@mui/material/Slider';\n// import Typography from '@mui/material/Typography';\n\n// Icons\nimport IconEdit from '@mui/icons-material/Edit';\nimport IconDelete from '@mui/icons-material/Delete';\nimport IconConfig from '@mui/icons-material/Settings';\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconSchedule from '@mui/icons-material/CalendarToday';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconScript from '@mui/icons-material/Code';\nimport IconChart from '@mui/icons-material/ShowChart';\nimport IconEnum from '@mui/icons-material/ListAlt';\nimport IconColumns from '@mui/icons-material/ViewColumn';\nimport IconClose from '@mui/icons-material/Close';\nimport IconCheck from '@mui/icons-material/Check';\nimport BuildIcon from '@mui/icons-material/Build';\nimport PublishIcon from '@mui/icons-material/Publish';\nimport AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport LooksOneIcon from '@mui/icons-material/LooksOne';\nimport PressButtonIcon from '@mui/icons-material/RoomService';\nimport IconError from '@mui/icons-material/Error';\nimport IconDisconnected from '@mui/icons-material/WifiOff';\n\nimport IconExpert from '../icons/IconExpert';\nimport IconAdapter from '../icons/IconAdapter';\nimport IconAlias from '../icons/IconAlias';\nimport IconChannel from '../icons/IconChannel';\nimport IconCopy from '../icons/IconCopy';\nimport IconDevice from '../icons/IconDevice';\nimport IconDocument from '../icons/IconDocument';\nimport IconDocumentReadOnly from '../icons/IconDocumentReadOnly';\nimport IconInstance from '../icons/IconInstance';\nimport IconState from '../icons/IconState';\nimport IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\nimport IconClearFilter from '../icons/IconClearFilter';\n\n// own\nimport Icon from './Icon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabHeader from './TabHeader';\n\nconst ICON_SIZE = 24;\nconst ROW_HEIGHT = 32;\nconst ITEM_LEVEL = 16;\nconst SMALL_BUTTON_SIZE = 20;\nconst COLOR_NAME_SYSTEM = '#ff6d69';\nconst COLOR_NAME_SYSTEM_ADAPTER = '#5773ff';\nconst COLOR_NAME_ERROR_DARK = '#ff413c';\nconst COLOR_NAME_ERROR_LIGHT = '#86211f';\nconst COLOR_NAME_CONNECTED_DARK = '#57ff45';\nconst COLOR_NAME_CONNECTED_LIGHT = '#098c04';\nconst COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';\nconst COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';\n\nconst styles = theme => ({\n toolbar: {\n minHeight: 38,//Theme.toolbar.height,\n // boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4\n },\n switchColumnAuto: {\n marginLeft: theme.spacing(2),\n },\n dialogColumns: {\n transition: 'opacity 1s'\n },\n dialogColumnsLabel: {\n fontSize: 12,\n paddingTop: theme.spacing(1),\n },\n columnCustom: {\n width: '100%',\n display: 'inline-block',\n },\n columnCustomEditable: {\n cursor: 'text'\n },\n columnCustomCenter: {\n textAlign: 'center',\n },\n columnCustomLeft: {\n textAlign: 'left',\n },\n columnCustomRight: {\n textAlign: 'right',\n },\n width100: {\n width: '100%',\n },\n transparent_10: {\n opacity: 0.1\n },\n transparent_20: {\n opacity: 0.2\n },\n transparent_30: {\n opacity: 0.3\n },\n transparent_40: {\n opacity: 0.4\n },\n transparent_50: {\n opacity: 0.5\n },\n transparent_60: {\n opacity: 0.6\n },\n transparent_70: {\n opacity: 0.7\n },\n transparent_80: {\n opacity: 0.8\n },\n transparent_90: {\n opacity: 0.9\n },\n transparent_100: {\n opacity: 1\n },\n columnsDialogInputWidth: {\n width: 80\n },\n headerRow: {\n paddingLeft: theme.spacing(1),\n height: 38,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n },\n buttonClearFilter: {\n position: 'relative',\n float: 'right',\n padding: 0,\n },\n buttonClearFilterIcon: {\n zIndex: 2,\n position: 'absolute',\n top: 0,\n left: 0,\n color: '#FF0000',\n opacity: 0.7\n },\n\n tableDiv: {\n paddingTop: 0,//theme.spacing(1),\n paddingLeft: 0,\n width: `calc(100% - ${theme.spacing(1)})`,\n height: `calc(100% - 38px)`,\n overflow: 'auto'\n },\n tableRow: {\n paddingLeft: theme.spacing(1),\n height: ROW_HEIGHT,\n lineHeight: ROW_HEIGHT + 'px',\n verticalAlign: 'top',\n userSelect: 'none',\n width: '100%',\n '&:hover': {\n background: `${theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light} !important`,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n },\n tableRowLines: {\n borderBottom: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n '& > div': {\n borderRight: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n }\n },\n tableRowNoDragging: {\n cursor: 'pointer',\n },\n tableRowAlias: {\n height: ROW_HEIGHT + 10,\n },\n tableRowAliasReadWrite: {\n height: ROW_HEIGHT + 22,\n },\n checkBox: {\n padding: 0,\n },\n cellId: {\n position: 'relative',\n fontSize: '1rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n //verticalAlign: 'top',\n //position: 'relative',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n },\n '& .iconOwn': {\n display: 'block',\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n marginTop: 2,\n float: 'right',\n },\n '&:hover .iconOwn': {\n display: 'none'\n },\n '& *': {\n width: 'initial'\n }\n },\n cellIdSpan: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n //display: 'inline-block',\n //verticalAlign: 'top',\n },\n cellIdIconFolder: {\n marginRight: theme.spacing(1),\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n cursor: 'pointer',\n color: theme.palette.secondary.main || '#fbff7d',\n verticalAlign: 'top',\n },\n cellIdIconDocument: {\n verticalAlign: 'middle',\n marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n marginRight: theme.spacing(1),\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n },\n cellIdIconOwn: {\n\n },\n cellCopyButton: {\n // color: 'white',\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n '&:hover': {\n opacity: 1,\n },\n position: 'absolute',\n right: 3,\n },\n cellEditButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n color: 'white',\n position: 'absolute',\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n right: SMALL_BUTTON_SIZE + 3,\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\n },\n },\n cellName: {\n display: 'inline-block',\n verticalAlign: 'top',\n fontSize: 14,\n marginLeft: 5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n }\n },\n cellIdAlias: {\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.7,\n '&:hover': {\n color: theme.palette.mode === 'dark' ? '#009900' : '#007700',\n }\n },\n cellIdAliasReadWriteDiv: {\n height: 24,\n marginTop: -5,\n },\n cellIdAliasAlone: {\n lineHeight: 0,\n },\n cellIdAliasReadWrite: {\n lineHeight: '12px',\n },\n cellType: {\n display: 'inline-block',\n verticalAlign: 'top',\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n '& .itemIconFolder': {\n marginLeft: 3,\n },\n },\n cellRole: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellRoom: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellEnumParent: {\n opacity: 0.4,\n },\n cellFunc: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValue: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValueButton: {\n marginTop: 5,\n '&:active': {\n transform: 'scale(0.8)'\n }\n },\n cellValueButtonFalse: {\n opacity: 0.3\n },\n cellAdapter: {\n display: 'inline-block',\n verticalAlign: 'top'\n },\n cellValueTooltip: {\n fontSize: 12,\n },\n cellValueText: {\n width: '100%',\n height: ROW_HEIGHT,\n fontSize: 16,\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n verticalAlign: 'top',\n '& .copyButton': {\n display: 'none'\n },\n '&:hover .copyButton': {\n display: 'block'\n }\n },\n cellValueFile: {\n color: '#2837b9'\n },\n cellValueTooltipTitle: {\n fontStyle: 'italic',\n width: 100,\n display: 'inline-block',\n },\n cellValueTooltipValue: {\n width: 120,\n display: 'inline-block',\n //overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n cellValueTooltipBoth: {\n width: 220,\n display: 'inline-block',\n whiteSpace: 'nowrap',\n },\n cellValueTooltipBox: {\n width: 250,\n overflow: 'hidden',\n },\n cellValueTextUnit: {\n marginLeft: theme.spacing(0.5),\n opacity: 0.8\n },\n newValue: {\n animation: '$newValueAnimation 2s ease-in-out'\n },\n '@keyframes newValueAnimation': {\n '0%': {\n color: '#00f900',\n },\n '80%': {\n color: '#008000',\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n }\n },\n cellValueTextState: {\n opacity: 0.7,\n },\n cellValueTooltipCopy: {\n position: 'absolute',\n bottom: 3,\n right: 3,\n },\n cellValueTooltipEdit: {\n position: 'absolute',\n bottom: 3,\n right: 15,\n },\n cellButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellButtonsButton: {\n display: 'inline-block',\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE + 4,\n height: SMALL_BUTTON_SIZE + 4,\n '&:hover': {\n opacity: 1,\n },\n paddingTop: 0,\n paddingLeft: 0,\n marginTop: -2,\n },\n cellButtonsEmptyButton: {\n fontSize: 12,\n },\n cellButtonMinWidth: {\n minWidth: 47,\n },\n cellButtonsButtonAlone: {\n marginLeft: SMALL_BUTTON_SIZE + 4,\n paddingTop: 0,\n marginTop: -2,\n },\n cellButtonsButtonWithCustoms: {\n color: theme.palette.secondary.main,\n },\n cellButtonsButtonWithoutCustoms: {\n opacity: 0.2,\n },\n cellButtonsValueButton: {\n position: 'absolute',\n display: 'inline-block',\n top: SMALL_BUTTON_SIZE / 2 - 2,\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE - 2,\n height: SMALL_BUTTON_SIZE - 2,\n color: theme.palette.action.active,\n '&:hover': {\n opacity: 1,\n }\n },\n cellButtonsValueButtonCopy: {\n right: theme.spacing(1),\n cursor: 'pointer',\n },\n cellButtonsValueButtonEdit: {\n right: SMALL_BUTTON_SIZE / 2 + parseInt(theme.spacing(2), 10),\n },\n\n filteredOut: {\n opacity: 0.5\n },\n filteredParentOut: {\n opacity: 0.3\n },\n filterInput: {\n marginTop: 0,\n marginBottom: 0\n },\n selectIcon: {\n width: 24,\n height: 24,\n marginRight: 4\n },\n selectNone: {\n opacity: 0.5,\n },\n itemSelected: {\n background: `${theme.palette.primary.main} !important`,\n color: `${Utils.invertColor(theme.palette.primary.main, true)} !important`,\n },\n header: {\n width: '100%'\n },\n headerCell: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n headerCellValue: {\n paddingTop: 4,\n // paddingLeft: 5,\n fontSize: 16,\n },\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n paddingTop: 3,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n }\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n marginRight: 5,\n display: 'inline-block'\n }\n },\n visibleButtons: {\n color: '#2196f3',\n opacity: 0.7\n },\n grow: {\n flexGrow: 1\n },\n enumIconDiv: {\n marginRight: theme.spacing(1),\n width: 32,\n height: 32,\n borderRadius: 8,\n background: '#FFFFFF'\n },\n enumIcon: {\n marginTop: 4,\n marginLeft: 4,\n width: 24,\n height: 24\n },\n enumDialog: {\n overflow: 'hidden',\n },\n enumList: {\n minWidth: 250,\n height: 'calc(100% - 50px)',\n overflow: 'auto',\n },\n enumButton: {\n float: 'right'\n },\n enumCheckbox: {\n minWidth: 0,\n },\n buttonDiv: {\n display: 'flex',\n height: '100%',\n alignItems: 'center'\n },\n aclText: {\n fontSize: 13\n },\n rightsObject: {\n color: '#55ff55',\n paddingLeft: 3,\n },\n rightsState: {\n color: '#86b6ff',\n paddingLeft: 3,\n },\n textCenter: {\n padding: 12,\n textAlign: 'center'\n },\n tooltipAccessControl: {\n display: 'flex',\n flexDirection: 'column'\n },\n '@media screen and (max-width: 465px)': {\n columnsDialogInputWidth: {\n width: 50\n },\n fontSizeTitle: {\n '& *': {\n fontSize: 12\n }\n },\n },\n '@media screen and (max-width: 700px)': {\n\n },\n '@media screen and (max-width: 430px)': {\n\n },\n draggable: {\n cursor: 'copy',\n },\n nonDraggable: {\n cursor: 'no-drop',\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 20,\n backgroundColor: theme.palette.background.default\n },\n iconDeviceConnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceDisconnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceError: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 50,\n width: 20,\n },\n resizeHandle: {\n display: 'block',\n position: 'absolute',\n cursor: 'col-resize',\n width: 7,\n top: 2,\n bottom: 2,\n zIndex: 1,\n },\n resizeHandleRight: {\n right: 3,\n borderRight: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderRightStyle: 'solid',\n }\n , '&.active': {\n borderColor: '#517ea5',\n borderRightStyle: 'solid',\n },\n },\n resizeHandleLeft: {\n left: -4,\n borderLeft: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderLeftStyle: 'solid',\n }\n , '&.active': {\n borderColor: '#517ea5',\n borderLeftStyle: 'solid',\n },\n }\n});\n\nfunction generateFile(filename, obj) {\n let el = document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nfunction binarySearch(list, find, _start, _end) {\n _start = _start || 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return list[middle];\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n}\n\nfunction applyFilter(item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth) {\n _depth = _depth || 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n context.id = filters.id.toLowerCase();\n }\n if (filters.name) {\n context.name = filters.name.toLowerCase();\n }\n if (filters.type) {\n context.type = filters.type.toLowerCase();\n }\n if (filters.custom) {\n context.custom = filters.custom.toLowerCase();\n }\n if (filters.role) {\n context.role = filters.role.toLowerCase();\n }\n if (filters.room) {\n context.room = (objects[filters.room] && objects[filters.room].common && objects[filters.room].common.members) || [];\n }\n if (filters.func) {\n context.func = (objects[filters.func] && objects[filters.func].common && objects[filters.func].common.members) || [];\n }\n }\n\n const data = item.data;\n\n if (data && data.id) {\n const common = data.obj && data.obj.common;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common || !common.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common || !common.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => customFilter.role.includes(role))) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.custom) {\n if (!common || !common.custom) {\n filteredOut = true;\n } else\n if (customFilter.common.custom === '_dataSources') {\n // TODO: make it configurable\n if (!Object.keys(common.custom).find(id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'))) {\n filteredOut = true;\n }\n } else\n if (customFilter.common.custom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(customFilter.common.custom))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n (common && common.expert);\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = (common && getName(common.name, lang)) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && filters.role && common) {\n if (common) {\n filteredOut = !(common.role && common.role.startsWith(context.role));\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.room) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(id + '.'));\n }\n if (!filteredOut && context.func) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(id + '.'));\n }\n if (!filteredOut && context.type) {\n filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom) {\n if (common) {\n filteredOut = !common.custom || !common.custom[context.custom];\n } else {\n filteredOut = true;\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(_item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth + 1);\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren;// || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => _item.data.hasVisibleParent = true);\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nfunction getVisibleItems(item, type, objects, _result) {\n _result = _result || [];\n const data = item.data;\n if (data.sumVisibility) {\n data.id && objects[data.id] && (!type || objects[data.id].type === type) && _result.push(data.id);\n item.children?.forEach(_item =>\n getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(objects, id, k, imagePrefix) {\n let icon;\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (k < 2) {\n // detect \"cloud.0\"\n if (objects['system.adapter.' + id]) {\n icon = getSelectIdIcon(objects, 'system.adapter.' + id, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nfunction buildTree(objects, options) {\n options = options || {};\n const imagePrefix = options.imagePrefix || '.';\n\n const ids = Object.keys(objects);\n\n ids.sort((a, b) => {\n if (a === b) return 0;\n a = a.replace(/\\./g, '!!!');\n b = b.replace(/\\./g, '!!!');\n if (a > b) return 1;\n return -1;\n });\n\n // find empty nodes and create names for it\n let currentPathArr = [];\n let currentPath = '';\n let currentPathLen = 0;\n let root = {\n data: {\n name: '',\n id: ''\n },\n children: []\n };\n\n let info = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: [],\n enums: [],\n hasSomeCustoms: false,\n };\n\n let croot = root;\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common && common.role;\n if (role && !info.roles.includes(role)) {\n info.roles.push(role);\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n }\n\n info.ids.push(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If current level is still OK and we can add ID to children\n if (!currentPath || id.startsWith(currentPath + '.')) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _croot = {\n data: {\n name: parts[k],\n parent: croot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(objects, curPath, k, imagePrefix),\n generated: true,\n }\n };\n\n croot.children = croot.children || [];\n croot.children.push(_croot);\n croot = _croot;\n info.ids.push(curPath); // IDs will be added by alphabet\n } else {\n croot = croot.children.find(item => item.data.name === parts[k]);\n }\n }\n }\n\n const _croot = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj && obj.common && obj.common.name, options.lang),\n obj,\n parent: croot,\n icon: getSelectIdIcon(objects, id, imagePrefix) || getSystemIcon(objects, id, 0, imagePrefix),\n id,\n hasCustoms: obj.common?.custom && Object.keys(obj.common.custom).length,\n level: parts.length - 1,\n generated: false,\n button: obj.type === 'state' && obj.common?.role && typeof obj.common.role === 'string' && obj.common.role.startsWith('button') && obj.common?.write !== false,\n }\n };\n\n croot.children = croot.children || [];\n croot.children.push(_croot);\n croot = _croot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n croot = croot.data.parent;\n move--;\n }\n } else {\n croot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName = getName(objects[a]?.common?.name || a.split('.').pop());\n const bName = getName(objects[b]?.common?.name || b.split('.').pop());\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n } else {\n return 0;\n }\n });\n info.funcEnums.sort((a, b) => {\n const aName = getName(objects[a]?.common?.name || a.split('.').pop());\n const bName = getName(objects[b]?.common?.name || b.split('.').pop());\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n } else {\n return 0;\n }\n });\n info.roles.sort();\n info.types.sort();\n\n return { info, root };\n}\n\nfunction findNode(root, id, _parts, _path, _level) {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n } else {\n let found;\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else\n if (_id > _path) {\n break;\n }\n }\n if (found) {\n return findNode(found, id, _parts, _path + '.' + _parts[_level + 1], _level + 1);\n } else {\n return null;\n }\n }\n}\n\nfunction getName(name, lang) {\n if (name && typeof name === 'object') {\n return (name[lang] || name.en || '').toString();\n } else {\n return (name || '').toString();\n }\n}\n\nfunction findRoomsForObject(data, id, lang, withParentInfo, rooms) {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms = rooms || [];\n for (let i = 0; i < data.roomEnums.length; i++) {\n const common = data.objects[data.roomEnums[i]]?.common;\n const name = getName(common.name, lang);\n\n if (common?.members?.includes(id) && !rooms.includes(name)) {\n if (!withParentInfo) {\n rooms.push(name);\n } else {\n rooms.push({ name: name, origin: id });\n }\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (data.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(data, id, lang, withParentInfo, rooms);\n }\n\n return { rooms, per: !ownEnums }; // pe is if the enums are from parent\n}\n\nfunction findEnumsForObjectAsIds(data, id, enumName, funcs) {\n if (!id) {\n return [];\n }\n funcs = funcs || [];\n for (let i = 0; i < data[enumName].length; i++) {\n const common = data.objects[data[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(data[enumName][i])) {\n funcs.push(data[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nfunction findFunctionsForObject(data, id, lang, withParentInfo, funcs) {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs = funcs || [];\n for (let i = 0; i < data.funcEnums.length; i++) {\n const common = data.objects[data.funcEnums[i]]?.common;\n const name = getName(common.name, lang);\n if (common?.members?.includes(id) && !funcs.includes(name)) {\n if (!withParentInfo) {\n funcs.push(name);\n } else {\n funcs.push({ name: name, origin: id });\n }\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (data.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(data, id, lang, withParentInfo, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*function quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}*/\n\nfunction formatValue(id, state, obj, texts, dateFormat, isFloatComma) {\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n\n const valText = {};\n let v = (isCommon && isCommon.type === 'file') ? '[file]' : (!state || state.val === null ? '(null)' : (state.val === undefined ? '[undef]' : state.val));\n const type = typeof v;\n\n if (isCommon && isCommon.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (v.length === 13) { // (length of \"1647597254924\") warning, this solution only works till Nov 20 2286 18:46:39CET\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // we don't know what is that, so leave it as it is\n }\n } else {\n // null and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else {\n if (type === 'number') {\n v = Math.round(v * 100000000) / 100000000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n }\n }\n\n let valFull;\n if (isCommon && isCommon.unit) {\n valText.u = isCommon.unit;\n }\n valFull = [{ t: texts.value, v }];\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c});\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n\n valText.v = v;\n\n return {\n valText,\n valFull,\n style: { color: state?.ack ? (state.q ? '#ffa500' : '') : '#ff2222c9' }\n };\n}\n\nfunction getSelectIdIcon(objects, id, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const _id_ = 'system.adapter.' + id;\n const aIcon = id && objects[_id_] && objects[_id_].common && objects[_id_].common.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n src = `${imagePrefix}/adapter/${objects[_id_].common.name}/${aIcon}`;\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; //'<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else {\n if (aIcon.startsWith('data:image/svg')) {\n src = <SVG src={aIcon} width={28} height={28} />;\n } else {\n src = aIcon;\n }\n }\n } else {\n const common = objects[id] && objects[id].common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else {\n // base 64 image\n if (cIcon.startsWith('data:image/svg')) {\n src = <SVG src={cIcon} width={28} height={28} />;\n } else {\n src = cIcon;\n }\n }\n }\n }\n }\n\n return src || null;\n}\n\nfunction prepareSparkData(values, from) {\n // set every hour one point\n let time = from;\n let i = 1;\n const v = [];\n\n while (i < values.length && time < from + 25 * 3600000) {\n // find the interval\n while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {\n i++;\n }\n if (i === 1 && values[i - 1].ts >= time) {\n // assume the value was always null\n v.push(0);\n } else\n if (i < values.length) {\n if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {\n v.push(values[i].val ? 1 : 0);\n } else {\n // remove nulls\n values[i - 1].val = values[i - 1].val || 0;\n values[i].val = values[i].val || 0;\n // interpolate\n let val = values[i - 1].val + (values[i].val - values[i - 1].val) * (time - values[i - 1].ts) / (values[i].ts - values[i - 1].ts);\n\n v.push(val);\n }\n }\n\n time += 3600000;\n }\n\n return v;\n}\n\n/**\n * @type {import('./types').ObjectBrowserTableFilter}\n */\nconst DEFAULT_FILTER = {\n id: '',\n name: '',\n room: '',\n func: '',\n role: '',\n type: '',\n custom: '',\n expertMode: false\n};\n\nconst ITEM_IMAGES = {\n state: <IconState className=\"itemIcon\" />,\n channel: <IconChannel className=\"itemIcon\" />,\n device: <IconDevice className=\"itemIcon\" />,\n adapter: <IconAdapter className=\"itemIcon\" />,\n meta: <IconMeta className=\"itemIcon\" />,\n instance: <IconInstance className=\"itemIcon\" style={{ color: '#7da7ff' }} />,\n enum: <IconEnum className=\"itemIcon\" />,\n chart: <IconChart className=\"itemIcon\" />,\n config: <IconConfig className=\"itemIcon\" />,\n group: <IconGroup className=\"itemIcon\" />,\n user: <IconUser className=\"itemIcon\" />,\n host: <IconHost className=\"itemIcon\" />,\n schedule: <IconSchedule className=\"itemIcon\" />,\n script: <IconScript className=\"itemIcon\" />,\n folder: <IconClosed className=\"itemIcon itemIconFolder\" />,\n};\n\nconst StyledBadge = withStyles(theme => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n}))(Badge);\n\nconst SCREEN_WIDTHS = {\n // extra-small: 0px\n xs: { idWidth: '100%', fields: [], widths: {} },\n // small: 600px\n sm: { idWidth: 300, fields: ['room', 'val'], widths: { room: 100, val: 200 } },\n // medium: 960px\n md: { idWidth: 300, fields: ['room', 'func', 'val', 'buttons'], widths: { name: 200, room: 150, func: 150, val: 120, buttons: 120 } },\n // large: 1280px\n lg: {\n idWidth: 300, fields: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons', 'changedFrom', 'qualityCode', 'timestamp', 'lastChange'],\n widths: {\n name: 300,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 165,\n lastChange: 165\n }\n },\n ///////////////\n // extra-large: 1920px\n xl: {\n idWidth: 550, fields: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons', 'changedFrom', 'qualityCode', 'timestamp', 'lastChange'],\n widths: {\n name: 400,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 170,\n lastChange: 170\n }\n },\n};\n\nlet objectsAlreadyLoaded = false;\n\n/**\n * @extends {React.Component<import('./types').ObjectBrowserProps>}\n */\nclass ObjectBrowser extends Component {\n /**\n * @param {import('./types').ObjectBrowserProps} props\n */\n constructor(props) {\n super(props);\n\n this.lastSelectedItems = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectSelected`) || '[]';\n try {\n this.lastSelectedItems = JSON.parse(this.lastSelectedItems);\n if (typeof this.lastSelectedItems !== 'object') {\n this.lastSelectedItems = [this.lastSelectedItems];\n }\n this.lastSelectedItems = this.lastSelectedItems.filter(id => id);\n } catch (e) {\n\n }\n\n let expanded = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectExpanded`) || '[]';\n try {\n expanded = JSON.parse(expanded);\n } catch (e) {\n expanded = [];\n }\n\n let filter =\n props.defaultFilters ||\n (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.objectFilter`) ||\n Object.assign({}, DEFAULT_FILTER);\n\n if (typeof filter === 'string') {\n try {\n filter = JSON.parse(filter);\n } catch (e) {\n filter = Object.assign({}, DEFAULT_FILTER);\n }\n }\n\n filter.expertMode = props.expertMode !== undefined ? props.expertMode : ((window._sessionStorage || window.sessionStorage).getItem('App.expertMode') === 'true');\n this.tableRef = createRef();\n this.filterRefs = {};\n\n Object.keys(DEFAULT_FILTER).forEach(name =>\n this.filterRefs[name] = createRef());\n\n this.lastAppliedFilter = null;\n this.pausedSubscribes = false;\n\n this.selectedFound = false;\n this.root = null;\n this.states = {};\n this.subscribes = [];\n this.statesUpdateTimer = null;\n this.objectsUpdateTimer = null;\n\n this.visibleCols = props.columns || SCREEN_WIDTHS[props.width].fields;\n // remove type column if only one type must be selected\n if (props.types && props.types.length === 1) {\n const pos = this.visibleCols.indexOf('type');\n pos !== -1 && this.visibleCols.splice(pos, 1);\n }\n\n this.possibleCols = SCREEN_WIDTHS.xl.fields;\n\n let customDialog = null;\n\n if (props.router) {\n const location = props.router.getLocation();\n if (location.id && location.dialog === 'customs') {\n customDialog = [location.id];\n this.pauseSubscribe(true);\n }\n }\n\n let selected = (props.selected || '');\n if (typeof selected !== 'object') {\n selected = [selected];\n }\n selected = selected.map(id => id.replace(/[\"']/g, '')).filter(id => id);\n\n let columns = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columns`);\n try {\n columns = columns ? JSON.parse(columns) : null;\n } catch (e) {\n columns = null;\n }\n\n let columnsWidths = (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columnsWidths`);\n try {\n columnsWidths = columnsWidths ? JSON.parse(columnsWidths) : {};\n } catch (e) {\n columnsWidths = {};\n }\n\n this.imagePrefix = props.imagePrefix || '.';\n let foldersFirst = (window._localStorage || window.localStorage).getItem((props.dialogName || 'App') + '.foldersFirst');\n if (foldersFirst === 'false') {\n foldersFirst = false;\n } else if (foldersFirst === 'true') {\n foldersFirst = true;\n } else {\n foldersFirst = props.foldersFirst === undefined ? true : props.foldersFirst;\n }\n\n let statesView = false;\n try {\n statesView = this.props.objectStatesView ? JSON.parse((window._localStorage || window.localStorage).getItem((props.dialogName || 'App') + '.objectStatesView')) || false : false;\n } catch (error) {\n // ignore\n }\n\n this.state = {\n loaded: false,\n foldersFirst,\n selected,\n selectedNonObject: (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.selectedNonObject`) || '',\n filter,\n filterKey: 0,\n depth: 0,\n expandAllVisible: false,\n expanded,\n toast: '',\n lang: props.lang,\n scrollBarWidth: 16,\n customDialog,\n editObjectDialog: '',\n viewFileDialog: '',\n enumDialog: null,\n roleDialog: null,\n modalEmptyId: null,\n statesView,\n columns,\n columnsForAdmin: null,\n columnsSelectorShow: false,\n columnsAuto: true, // (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.columnsAuto`) !== 'false',\n columnsWidths,\n columnsDialogTransparent: 100,\n columnsEditCustomDialog: null,\n customColumnDialogValueChanged: false,\n showExportDialog: false,\n linesEnabled: (window._localStorage || window.localStorage).getItem(`${props.dialogName || 'App'}.lines`) === 'true',\n };\n\n this.edit = {};\n\n this.texts = {\n value: props.t('ra_tooltip_value'),\n ack: props.t('ra_tooltip_ack'),\n ts: props.t('ra_tooltip_ts'),\n lc: props.t('ra_tooltip_lc'),\n from: props.t('ra_tooltip_from'),\n user: props.t('ra_tooltip_user'),\n c: props.t('ra_tooltip_comment'),\n quality: props.t('ra_tooltip_quality'),\n editObject: props.t('ra_tooltip_editObject'),\n deleteObject: props.t('ra_tooltip_deleteObject'),\n customConfig: props.t('ra_tooltip_customConfig'),\n copyState: props.t('ra_tooltip_copyState'),\n editState: props.t('ra_tooltip_editState'),\n close: props.t('ra_Close'),\n filter_id: props.t('ra_filter_id'),\n filter_name: props.t('ra_filter_name'),\n filter_type: props.t('ra_filter_type'),\n filter_role: props.t('ra_filter_role'),\n filter_room: props.t('ra_filter_room'),\n filter_func: props.t('ra_filter_func'),\n filter_custom: props.t('ra_filter_customs'), //\n objectChangedByUser: props.t('ra_object_changed_by_user'), // Object last changed at\n objectChangedBy: props.t('ra_object_changed_by'), // Object changed by\n objectChangedFrom: props.t('ra_state_changed_from'), // Object changed from\n stateChangedBy: props.t('ra_state_changed_by'), // State changed by\n stateChangedFrom: props.t('ra_state_changed_from'), // State changed from\n ownerGroup: props.t('ra_Owner group'),\n ownerUser: props.t('ra_Owner user'),\n deviceError: props.t('ra_Error'),\n deviceDisconnected: props.t('ra_Disconnected'),\n deviceConnected: props.t('ra_Connected'),\n\n aclOwner_read_object: props.t('ra_aclOwner_read_object'),\n aclOwner_read_state: props.t('ra_aclOwner_read_state'),\n aclOwner_write_object: props.t('ra_aclOwner_write_object'),\n aclOwner_write_state: props.t('ra_aclOwner_write_state'),\n aclGroup_read_object: props.t('ra_aclGroup_read_object'),\n aclGroup_read_state: props.t('ra_aclGroup_read_state'),\n aclGroup_write_object: props.t('ra_aclGroup_write_object'),\n aclGroup_write_state: props.t('ra_aclGroup_write_state'),\n aclEveryone_read_object: props.t('ra_aclEveryone_read_object'),\n aclEveryone_read_state: props.t('ra_aclEveryone_read_state'),\n aclEveryone_write_object: props.t('ra_aclEveryone_write_object'),\n aclEveryone_write_state: props.t('ra_aclEveryone_write_state'),\n };\n\n this.levelPadding = props.levelPadding || ITEM_LEVEL;\n\n let resizerCurrentWidths = (window._localStorage || window.localStorage).getItem(`${this.props.dialogName || 'App'}.table`);\n if (resizerCurrentWidths) {\n try {\n resizerCurrentWidths = JSON.parse(resizerCurrentWidths);\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width]));\n Object.keys(resizerCurrentWidths)\n .forEach(id => {\n if (id === 'id') {\n SCREEN_WIDTHS[this.props.width].idWidth = resizerCurrentWidths.id;\n } else if (id === 'nameHeader') {\n SCREEN_WIDTHS[this.props.width].widths['name'] = resizerCurrentWidths[id];\n } else if (SCREEN_WIDTHS[this.props.width].widths[id] !== undefined) {\n SCREEN_WIDTHS[this.props.width].widths[id] = resizerCurrentWidths[id];\n }\n });\n\n this.customWidth = true;\n } catch (e) {\n // ignore\n }\n }\n\n this.calculateColumnsVisibility();\n }\n\n loadAllObjects(update) {\n const props = this.props;\n\n return new Promise(resolve => this.setState({updating: true}, () => resolve()))\n .then(() => this.props.objectsWorker ?\n this.props.objectsWorker.getObjects(update) :\n props.socket.getObjects(update, true))\n .then(objects => {\n this.systemConfig = objects['system.config'] || {};\n this.systemConfig.common = this.systemConfig.common || {};\n this.systemConfig.common.defaultNewAcl = this.systemConfig.common.defaultNewAcl || {};\n this.systemConfig.common.defaultNewAcl.owner = this.systemConfig.common.defaultNewAcl.owner || 'system.user.admin';\n this.systemConfig.common.defaultNewAcl.ownerGroup = this.systemConfig.common.defaultNewAcl.ownerGroup || 'system.group.administrator';\n if (typeof this.systemConfig.common.defaultNewAcl.state !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof this.systemConfig.common.defaultNewAcl.object !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n\n if (typeof props.filterFunc === 'function') {\n this.objects = {};\n Object.keys(objects).forEach(id => {\n try {\n if (props.filterFunc(objects[id])) {\n this.objects[id] = objects[id];\n }\n } catch (e) {\n console.log(`Error by filtering of \"${id}\": ${e}`);\n }\n });\n } else\n if (props.types) {\n this.objects = {};\n Object.keys(objects).forEach(id => {\n const type = objects[id] && objects[id].type;\n if (type && (\n type === 'channel' ||\n type === 'device' ||\n type === 'enum' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance' ||\n props.types.includes(type))) {\n this.objects[id] = objects[id];\n }\n });\n } else {\n this.objects = objects;\n }\n\n // read default history\n this.defaultHistory = this.systemConfig.common.defaultHistory;\n if (this.defaultHistory) {\n props.socket.getState(`system.adapter.${this.defaultHistory}.alive`)\n .then(state => {\n if (!state || !state.val) {\n this.defaultHistory = '';\n }\n })\n .catch(e => window.alert('Cannot get state: ' + e));\n }\n\n return this.getAdditionalColumns();\n })\n .then(columnsForAdmin => {\n this.calculateColumnsVisibility(null, null, columnsForAdmin);\n\n const { info, root } = buildTree(this.objects, this.props);\n this.root = root;\n this.info = info;\n\n // Show first selected item\n let node = this.state.selected && this.state.selected.length && findNode(this.root, this.state.selected[0]);\n\n this.lastAppliedFilter = null;\n\n // If selected ID is not visible, reset filter\n if (node && !applyFilter(node, this.state.filter, this.state.lang, this.objects, null, null, props.customFilter, props.types)) {\n // reset filter\n this.setState({ filter: Object.assign({}, DEFAULT_FILTER), columnsForAdmin }, () => {\n this.setState({ loaded: true, updating: false }, () =>\n this.expandAllSelected(() =>\n this.onAfterSelect()));\n });\n } else {\n this.setState({ loaded: true, updating: false, columnsForAdmin }, () =>\n this.expandAllSelected(() =>\n this.onAfterSelect()));\n }\n })\n .catch(e => this.showError(e));\n }\n\n /**\n * @private\n * @param {ioBroker.EmptyCallback} cb\n */\n expandAllSelected(cb) {\n let expanded = [...this.state.expanded];\n let changed = false;\n this.state.selected.forEach(id => {\n const parts = id.split('.');\n let path = [];\n for (let i = 0; i < parts.length - 1; i++) {\n path.push(parts[i]);\n if (!expanded.includes(path.join('.'))) {\n expanded.push(path.join('.'));\n changed = true;\n }\n }\n });\n if (changed) {\n expanded.sort();\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded }, cb)\n } else {\n cb && cb();\n }\n }\n\n /**\n * @private\n * @param {boolean} [isDouble]\n */\n onAfterSelect(isDouble) {\n this.lastSelectedItems = [...this.state.selected];\n if (this.state.selected && this.state.selected.length) {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, JSON.stringify(this.lastSelectedItems));\n\n const name = this.lastSelectedItems.length === 1 ? Utils.getObjectName(this.objects, this.lastSelectedItems[0], null, { language: this.state.lang }) : '';\n this.props.onSelect && this.props.onSelect(this.lastSelectedItems, name, isDouble);\n } else {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, '');\n if (this.state.selected.length) {\n this.setState({ selected: [] }, () => this.props.onSelect && this.props.onSelect([], ''));\n } else {\n this.props.onSelect && this.props.onSelect([], '');\n }\n }\n }\n\n /**\n * @private\n * @param {import('./types').ObjectBrowserProps} props\n * @param {any} state\n */\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n if (props.expertMode !== undefined && props.expertMode !== state.filter.expertMode) {\n changed = true;\n newState.filter = Object.assign({}, state.filter);\n newState.filter.expertMode = props.expertMode;\n }\n return changed ? newState : null;\n }\n\n /**\n * Called when component is mounted.\n */\n componentDidMount() {\n this.loadAllObjects(!objectsAlreadyLoaded)\n .then(() => {\n if (this.props.objectsWorker) {\n this.props.objectsWorker.registerHandler(this.onObjectChange);\n } else {\n this.props.socket.subscribeObject('*', this.onObjectChange);\n }\n\n objectsAlreadyLoaded = true;\n });\n }\n\n /**\n * Called when component is unmounted.\n */\n componentWillUnmount() {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = null;\n\n if (this.props.objectsWorker) {\n this.props.objectsWorker.unregisterHandler(this.onObjectChange, true);\n } else {\n this.props.socket.unsubscribeObject('*', this.onObjectChange);\n }\n\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log('- unsubscribe ' + pattern);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n this.objects = {};\n }\n\n /**\n * Called when component is mounted.\n */\n refreshComponent() {\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log('- unsubscribe ' + pattern);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n\n this.loadAllObjects(true)\n .then(() => console.log('updated!'));\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null}\n */\n renderErrorDialog() {\n return this.state.error ? <Dialog\n open={true}\n maxWidth=\"sm\"\n fullWidth={true}\n onClose={() => this.setState({ error: '' })}\n aria-labelledby=\"error-dialog-title\"\n aria-describedby=\"error-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">{this.props.title || this.props.t('ra_Error')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.state.error}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ error: '' })}\n color=\"primary\"\n autoFocus\n startIcon={<IconCheck />}\n >{this.props.t('ra_Ok')}</Button>\n </DialogActions>\n </Dialog> : null;\n }\n\n /**\n * Show the error dialog.\n * @param {any} error\n */\n showError(error) {\n this.setState({ error: typeof error === 'object' ? (error && typeof error.toString === 'function' ? error.toString() : JSON.stringify(error)) : error });\n }\n\n /**\n * Called when an item is selected/deselected.\n * @param {string} toggleItem\n * @param {boolean} [isDouble]\n */\n onSelect(toggleItem, isDouble) {\n if (!this.props.multiSelect) {\n if (this.objects[toggleItem] && (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n if (this.state.selected[0] !== toggleItem) {\n this.setState({ selected: [toggleItem], selectedNonObject: '' }, () =>\n this.onAfterSelect(isDouble));\n } else if (isDouble && this.props.onSelect) {\n this.onAfterSelect(isDouble);\n }\n } else {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.selectedNonObject`, toggleItem);\n this.setState({ selected: [], selectedNonObject: toggleItem }, () =>\n this.onAfterSelect());\n }\n } else {\n if (this.objects[toggleItem] && (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n\n const selected = [...this.state.selected];\n const pos = selected.indexOf(toggleItem);\n if (pos === -1) {\n selected.push(toggleItem);\n selected.sort();\n } else if (!isDouble) {\n selected.splice(pos, 1);\n }\n\n this.setState({ selected, selectedNonObject: '' }, () =>\n this.onAfterSelect(isDouble));\n }\n }\n }\n\n /**\n * @private\n * @param {boolean} isLast\n */\n /*\n _renderDefinedList(isLast) {\n const cols = [...this.possibleCols];\n cols.unshift('id');\n if (this.props.columns && !this.props.columns.includes('buttons')) {\n const pos = cols.indexOf('buttons');\n if (pos !== -1) {\n cols.splice(pos, 1);\n }\n }\n return cols\n .filter(id => (isLast && (id === 'val' || id === 'buttons')) || (!isLast && id !== 'val' && id !== 'buttons'))\n .map(id =>\n <ListItemButton onClick={() => {\n if (!this.state.columnsAuto && id !== 'id') {\n const columns = [...(this.state.columns || [])];\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columns', JSON.stringify(columns));\n this.calculateColumnsVisibility(null, columns);\n this.setState({ columns });\n }\n }} key={id}>\n <Checkbox\n edge=\"start\"\n disabled={id === 'id' || this.state.columnsAuto}\n checked={id === 'id' || (this.state.columnsAuto ? this.visibleCols.includes(id) : (this.state.columns && this.state.columns.includes(id)))}\n disableRipple\n />\n <ListItemText primary={this.texts['filter_' + id] || this.props.t('ra_' + id)} />\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n className={this.props.classes.columnsDialogInputWidth}\n style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths[id] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths[id] = e.target.value;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n </ListItemButton>\n );\n }\n */\n\n /**\n * Renders the columns selector.\n * @returns {JSX.Element | null}\n */\n renderColumnsSelectorDialog() {\n if (!this.state.columnsSelectorShow) {\n return null;\n } else {\n return <Dialog\n onClose={() => this.setState({ columnsSelectorShow: false })}\n open={true}\n classes={{ root: Utils.clsx(this.props.classes.dialogColumns, this.props.classes['transparent_' + this.state.columnsDialogTransparent]) }}\n >\n <DialogTitle className={this.props.classes.fontSizeTitle}>{this.props.t('ra_Configure')}</DialogTitle>\n <DialogContent className={this.props.classes.fontSizeTitle}>\n {/*<FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.columnsAuto} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsAuto', this.state.columnsAuto ? 'false' : 'true');\n if (!this.state.columnsAuto) {\n this.calculateColumnsVisibility(true);\n this.setState({ columnsAuto: true });\n } else {\n if (!this.state.columns) {\n this.calculateColumnsVisibility(false, [...this.visibleCols]);\n this.setState({ columnsAuto: false, columns: [...this.visibleCols] });\n } else {\n this.calculateColumnsVisibility(false);\n this.setState({ columnsAuto: false });\n }\n }\n }} />}\n label={this.props.t('ra_Auto (no custom columns)')}\n />*/}\n <FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.foldersFirst} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.foldersFirst', this.state.foldersFirst ? 'false' : 'true');\n this.setState({ foldersFirst: !this.state.foldersFirst });\n }} />}\n label={this.props.t('ra_Folders always first')}\n />\n <FormControlLabel\n className={this.props.classes.switchColumnAuto}\n control={<Switch checked={this.state.linesEnabled} onChange={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.lines', this.state.linesEnabled ? 'false' : 'true');\n this.setState({ linesEnabled: !this.state.linesEnabled });\n }} />}\n label={this.props.t('ra_Show lines between rows')}\n />\n {/*<Typography classes={{ root: this.props.classes.dialogColumnsLabel }}>{this.props.t('ra_Transparent dialog')}</Typography>\n <Slider classes={{ root: this.props.classes.width100 }} value={this.state.columnsDialogTransparent} min={20} max={100} step={10} onChange={(event, newValue) =>\n this.setState({ columnsDialogTransparent: newValue })\n } />\n <List>\n {this._renderDefinedList(false)}\n\n {this.state.columnsForAdmin && Object.keys(this.state.columnsForAdmin).sort().map(adapter =>\n this.state.columnsForAdmin[adapter].map(column =>\n <ListItemButton onClick={() => {\n if (!this.state.columnsAuto) {\n const columns = [...(this.state.columns || [])];\n const id = '_' + adapter + '_' + column.path;\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.calculateColumnsVisibility(null, columns);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columns', JSON.stringify(columns));\n this.setState({ columns });\n }\n }} key={adapter + '_' + column.name}>\n <ListItemIcon>\n <Checkbox\n disabled={this.state.columnsAuto}\n edge=\"start\"\n checked={!this.state.columnsAuto && this.state.columns && this.state.columns.includes('_' + adapter + '_' + column.path)}\n disableRipple\n />\n </ListItemIcon>\n <ListItemText primary={column.name + ' (' + adapter + ')'} />\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n className={this.props.classes.columnsDialogInputWidth}\n style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths['_' + adapter + '_' + column.path] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths['_' + adapter + '_' + column.path] = e.target.value;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n </ListItemButton>\n )\n )}\n {this._renderDefinedList(true)}\n </List>*/}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ columnsSelectorShow: false })}\n color=\"primary\"\n startIcon={<IconClose />}\n >{this.texts['close']}</Button>\n </DialogActions>\n </Dialog>\n }\n }\n\n /**\n * @private\n */\n getAdditionalColumns() {\n return this.props.socket.getAdapters()\n .then(instances => {\n let columnsForAdmin = null;\n // find all additional columns\n instances.forEach(obj =>\n columnsForAdmin = this.parseObjectForAdmins(columnsForAdmin, obj));\n\n return columnsForAdmin;\n })\n .catch(e => {\n // window.alert('Cannot get adapters: ' + e);\n // Object browser in Web has no additional columns\n });\n }\n\n /**\n * @private\n */\n checkUnsubscribes() {\n // Remove unused subscriptions\n for (let i = this.subscribes.length - 1; i >= 0; i--) {\n !this.recordStates.includes(this.subscribes[i]) && this.unsubscribe(this.subscribes[i]);\n }\n this.recordStates = [];\n }\n\n /**\n * Find an item.\n * @param {string} id\n * @param {string[] | undefined} [_parts]\n * @param {{ data: { name: string; id: string; }; children: never[]; } | null | undefined} [_root]\n * @param {string | undefined} [_partyId]\n * @returns {any}\n */\n findItem(id, _parts, _root, _partyId) {\n _parts = _parts || id.split('.');\n _root = _root || this.root;\n if (!_root || !_parts.length) {\n return null;\n }\n\n _partyId = (_partyId ? _partyId + '.' : '') + _parts.shift();\n\n if (_root.children) {\n const item = _root.children.find(i => i.data.id === _partyId);\n if (item) {\n if (item.data.id === id) {\n return item;\n } else if (_parts.length) {\n return this.findItem(id, _parts, item, _partyId);\n }\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Called when a state changes.\n * @param {string} id\n * @param {ioBroker.State} state\n */\n onStateChange = (id, state) => {\n console.log('> stateChange ' + id);\n if (this.states[id]) {\n const item = this.findItem(id);\n if (item && item.data.state) {\n item.data.state = null;\n }\n }\n this.states[id] = state;\n\n if (!this.pausedSubscribes) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n } else {\n if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n }\n };\n\n /**\n * @private\n * @param {{ [x: string]: any; }} columnsForAdmin\n * @param {any} obj\n */\n parseObjectForAdmins(columnsForAdmin, obj) {\n if (obj.common && obj.common.adminColumns && obj.common.name) {\n let columns = obj.common.adminColumns;\n if (typeof columns !== 'object') {\n columns = [columns];\n }\n columns = columns.map(item => {\n if (typeof item !== 'object') {\n return { path: item, name: item.split('.').pop() };\n }\n\n // string => array\n if (item.objTypes && typeof item.objTypes !== 'object') {\n item.objTypes = [item.objTypes];\n } else if (!item.objTypes) {\n item.objTypes = null;\n }\n\n if (!item.name && item.path) {\n return { path: item.path, name: item.path.split('.').pop(), width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n if (typeof item.name !== 'object' && item.path) {\n return { path: item.path, name: item.name, width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n if (!item.path) {\n console.warn(`Admin columns for ${obj._id} ignored, because path not found`);\n return null;\n } else {\n return { path: item.path, name: item.name[this.props.lang] || item.name.en, width: item.width, edit: !!item.edit, type: item.type, objTypes: item.objTypes };\n }\n }).filter(item => item);\n\n if (columns && columns.length) {\n columnsForAdmin = columnsForAdmin || {};\n columnsForAdmin[obj.common.name] = columns.sort((a, b) => a.path > b.path ? -1 : (a.path < b.path ? 1 : 0));\n }\n } else if (obj.common && obj.common.name && columnsForAdmin && columnsForAdmin[obj.common.name]) {\n delete columnsForAdmin[obj.common.name];\n }\n return columnsForAdmin;\n }\n\n /**\n * @param {string} id\n * @param {ioBroker.Object} obj\n * @param {import('./types').OldObject} oldObj\n */\n onObjectChange = (id, obj, oldObj) => {\n let newState;\n\n if (Array.isArray(id)) {\n id.forEach(event => {\n console.log('> objectChange ' + event.id);\n\n if (event.obj && typeof this.props.filterFunc === 'function' && !this.props.filterFunc(event.obj)) {\n return;\n }\n\n if (event.id.startsWith('system.adapter.') && event.obj && event.obj.type === 'adapter') {\n let columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));\n\n this.parseObjectForAdmins(columnsForAdmin, event.obj);\n\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newState = { columnsForAdmin };\n }\n }\n this.objects = this.objects || [];\n if (this.objects[event.id]) {\n if (event.obj) {\n this.objects[event.id] = event.obj;\n } else {\n delete this.objects[event.id];\n }\n } else if (this.objects[event.id]) {\n delete this.objects[event.id];\n }\n });\n } else {\n console.log('> objectChange ' + id);\n this.objects = this.objects || [];\n\n if (obj && typeof this.props.filterFunc === 'function' && !this.props.filterFunc(obj)) {\n return;\n }\n\n if (id.startsWith('system.adapter.') && obj && obj.type === 'adapter') {\n let columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));\n this.parseObjectForAdmins(columnsForAdmin, obj);\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newState = { columnsForAdmin };\n }\n }\n\n if (this.objects[id]) {\n if (obj) {\n this.objects[id] = obj;\n } else {\n delete this.objects[id];\n }\n } else if (this.objects[id]) {\n delete this.objects[id];\n }\n }\n\n newState && this.setState(newState);\n\n if (!this.objectsUpdateTimer && this.objects) {\n this.objectsUpdateTimer = setTimeout(() => {\n this.objectsUpdateTimer = null;\n const { info, root } = buildTree(this.objects, this.props);\n this.root = root;\n this.info = info;\n this.lastAppliedFilter = null; // apply filter anew\n\n if (!this.pausedSubscribes) {\n this.forceUpdate();\n }\n // else it will be re-rendered when dialog will be closed\n }, 500);\n }\n };\n\n /**\n * @private\n * @param {string} id\n */\n subscribe(id) {\n if (!this.subscribes.includes(id)) {\n this.subscribes.push(id);\n console.log('+ subscribe ' + id);\n !this.pausedSubscribes && this.props.socket.subscribeState(id, this.onStateChange);\n }\n }\n\n /**\n * @private\n * @param {string} id\n */\n unsubscribe(id) {\n const pos = this.subscribes.indexOf(id);\n if (pos !== -1) {\n this.subscribes.splice(pos, 1);\n if (this.states[id]) {\n delete this.states[id];\n }\n console.log('- unsubscribe ' + id);\n this.props.socket.unsubscribeState(id, this.onStateChange);\n\n if (this.pausedSubscribes) {\n console.warn('Unsubscribe during pause?');\n }\n }\n }\n\n /**\n * @private\n * @param {boolean} isPause\n */\n pauseSubscribe(isPause) {\n if (!this.pausedSubscribes && isPause) {\n this.pausedSubscribes = true;\n this.subscribes.forEach(id => this.props.socket.unsubscribeState(id, this.onStateChange));\n } else if (this.pausedSubscribes && !isPause) {\n this.pausedSubscribes = false;\n this.subscribes.forEach(id => this.props.socket.subscribeState(id, this.onStateChange));\n }\n }\n\n /**\n * @private\n * @param {string} [name]\n * @param {boolean} [value]\n */\n onFilter(name, value) {\n this.filterTimer = null;\n let filter = {};\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name] && this.filterRefs[name].current) {\n for (let i = 0; i < this.filterRefs[name].current.children.length; i++) {\n if (this.filterRefs[name].current.children[i].tagName === 'INPUT') {\n filter[name] = this.filterRefs[name].current.children[i].value;\n break;\n }\n }\n }\n });\n\n if (name) {\n filter[name] = value;\n if (name === 'expertMode') {\n (window._sessionStorage || window.sessionStorage).setItem('App.expertMode', value ? 'true' : 'false');\n }\n }\n\n filter = Object.assign({}, this.state.filter, filter);\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(filter));\n this.setState({ filter }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n clearFilter() {\n let filter = {};\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name] && this.filterRefs[name].current) {\n for (let i = 0; i < this.filterRefs[name].current.childNodes.length; i++) {\n const item = this.filterRefs[name].current.childNodes[i];\n if (item.tagName === 'INPUT') {\n filter[name] = '';\n item.value = '';\n break;\n }\n }\n }\n });\n\n filter = Object.assign({}, this.state.filter, filter);\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(filter));\n this.setState({ filter, filterKey: this.state.filterKey + 1 }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n isFilterEmpty() {\n const someNotEmpty = Object.keys(this.state.filter).find(attr =>\n attr !== 'expertMode' && this.state.filter[attr]);\n return !someNotEmpty;\n }\n\n /**\n * @private\n * @param {string} name\n */\n getFilterInput(name) {\n return <FormControl\n className={Utils.clsx(this.props.classes.headerCellInput, this.props.classes.filterInput)}\n key={name + '_' + this.state.filterKey}\n //style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n ref={this.filterRefs[name]}\n classes={{ underline: 'no-underline' }}\n id={name}\n placeholder={this.texts['filter_' + name]}\n defaultValue={this.state.filter[name]}\n onChange={() => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n autoComplete=\"off\"\n />\n {this.filterRefs[name]?.current?.firstChild.value ?\n <div style={{\n position: 'absolute',\n right: 0\n }}>\n <IconButton\n size=\"small\"\n onClick={() => {\n this.filterRefs[name].current.firstChild.value = '';\n this.onFilter(name, '');\n }}\n >\n <IconClose />\n </IconButton>\n </div> : null}\n </FormControl>;\n }\n\n /**\n * @private\n * @param {string} name\n * @param {any[]} values\n */\n getFilterSelect(name, values) {\n const hasIcons = !!values.find(item => item.icon);\n return <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={name + '_' + this.state.filterKey}\n ref={this.filterRefs[name]}\n className={this.props.classes.headerCellInput + ' no-underline'}\n onChange={() => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n defaultValue={this.state.filter[name] || ''}\n inputProps={{ name, id: name }}\n displayEmpty={true}\n >\n <MenuItem key=\"empty\" value=\"\">\n <span className={this.props.classes.selectNone}>{this.texts['filter_' + name]}</span>\n </MenuItem>\n {values.map(item => {\n let id;\n let name;\n let icon;\n if (typeof item === 'object') {\n id = item.value;\n name = item.name;\n icon = item.icon;\n } else {\n id = item;\n name = item;\n }\n return <MenuItem className={this.props.classes.headerCellSelectItem} key={id} value={id}>\n {icon ? icon : (hasIcons ? <div className=\"itemIcon\" /> : null)}\n {name}\n </MenuItem>;\n })}\n </Select>\n {this.filterRefs[name]?.current?.childNodes[1]?.value ?\n <div className={Utils.clsx(this.props.classes.selectClearButton)}>\n <IconButton\n size=\"small\"\n onClick={() => {\n const newFilter = { ...this.state.filter };\n newFilter[name] = '';\n this.filterRefs[name].current.childNodes[1].value = '';\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectFilter', JSON.stringify(newFilter));\n this.setState({ filter: newFilter, filterKey: this.state.filterKey + 1 }, () =>\n this.props.onFilterChanged && this.props.onFilterChanged(newFilter));\n }}\n >\n <IconClose />\n </IconButton>\n </div> : null}\n </div>;\n }\n\n /**\n * @private\n */\n getFilterSelectRole() {\n return this.getFilterSelect('role', this.info.roles);\n }\n\n /**\n * @private\n */\n getFilterSelectRoom() {\n const rooms = this.info.roomEnums.map(id => ({\n name: getName(this.objects[id]?.common?.name || id.split('.').pop()),\n value: id,\n icon: <Icon src={this.objects[id]?.common?.icon} className={this.props.classes.selectIcon}/>\n }));\n\n return this.getFilterSelect('room', rooms);\n }\n\n /**\n * @private\n */\n getFilterSelectFunction() {\n const func = this.info.funcEnums.map(id => ({\n name: getName((this.objects[id] && this.objects[id].common && this.objects[id].common.name) || id.split('.').pop()),\n value: id,\n icon: <Icon src={this.objects[id]?.common?.icon} className={this.props.classes.selectIcon}/>\n }));\n\n return this.getFilterSelect('func', func);\n }\n\n /**\n * @private\n */\n getFilterSelectType() {\n const types = this.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type]\n }));\n\n return this.getFilterSelect('type', types);\n }\n\n /**\n * @private\n */\n getFilterSelectCustoms() {\n if (this.info.customs.length) {\n const customs = this.info.customs.map(id => ({\n name: id,\n value: id,\n icon: <Icon src={getSelectIdIcon(this.objects, id, this.imagePrefix)} className={this.props.classes.selectIcon}/>\n }));\n return this.getFilterSelect('custom', customs);\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} [root]\n * @param {any[]} [expanded]\n */\n onExpandAll(root, expanded) {\n root = root || this.root;\n expanded = expanded || [];\n\n root.children && root.children.forEach(item => {\n if (item.data.sumVisibility) {\n expanded.push(item.data.id);\n this.onExpandAll(item, expanded);\n }\n });\n\n if (root === this.root) {\n expanded.sort();\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n }\n\n /**\n * @private\n */\n onCollapseAll() {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify([]));\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, '[]');\n this.setState({ expanded: [], depth: 0, selected: [] }, () =>\n this.onAfterSelect());\n }\n\n /**\n * @private\n * @param {any} root\n * @param {number} depth\n * @param {any[]} expanded\n */\n expandDepth(root, depth, expanded) {\n root = root || this.root;\n if (depth > 0) {\n if (root.children) {\n root.children.forEach(item => {\n if (item.data.sumVisibility) {\n if (!binarySearch(expanded, item.data.id)) {\n expanded.push(item.data.id);\n expanded.sort();\n }\n if (depth - 1 > 0) {\n this.expandDepth(item, depth - 1, expanded);\n }\n }\n });\n }\n }\n }\n\n /**\n * @private\n * @param {number} depth\n * @param {any[]} expanded\n */\n collapseDepth(depth, expanded) {\n return expanded.filter(id => id.split('.').length <= depth);\n }\n\n /**\n * @private\n */\n onExpandVisible() {\n if (this.state.depth < 9) {\n const depth = this.state.depth + 1;\n const expanded = [...this.state.expanded];\n this.expandDepth(this.root, depth, expanded);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n /**\n * @private\n */\n onStatesViewVisible() {\n const statesView = !this.state.statesView;\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectStatesView', JSON.stringify(statesView));\n this.setState({ statesView });\n }\n\n /**\n * @private\n */\n onCollapseVisible() {\n if (this.state.depth > 0) {\n const depth = this.state.depth - 1;\n const expanded = this.collapseDepth(depth, this.state.expanded);\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n /**\n * @private\n * @param {string} id\n */\n getEnumsForId = id => {\n let result = [];\n this.info.enums.forEach(_id => {\n if (this.objects[_id]?.common?.members?.includes(id)) {\n const en = {\n _id: this.objects[_id]._id,\n common: JSON.parse(JSON.stringify(this.objects[_id].common)),\n native: this.objects[_id].native,\n type: 'enum',\n };\n if (en.common) {\n delete en.common.members;\n delete en.common.custom;\n delete en.common.mobile;\n }\n result.push(en);\n }\n });\n\n return result.length ? result : undefined;\n };\n\n /**\n * @private\n * @param {array} enums\n * @param {string} objId\n */\n _createAllEnums = async (enums, objId) => {\n for (let e = 0; e < enums.length; e++) {\n let id = enums[e];\n let _enObj;\n if (typeof id === 'object') {\n _enObj = id;\n id = id._id;\n }\n let enObj = this.objects[id];\n if (!enObj) {\n enObj = _enObj || {\n _id: id,\n common: {\n name: id.split('.').pop(),\n members: [],\n },\n native: {}\n };\n\n enObj.common = enObj.common || {};\n enObj.common.members = [objId];\n\n await this.props.socket.setObject(id, enObj);\n } else if (!enObj.common?.members?.includes(objId)) {\n enObj.common = enObj.common || {};\n enObj.common.members = enObj.common.members || [];\n // add missing object\n enObj.common.members.push(objId);\n enObj.common.members.sort();\n await this.props.socket.setObject(id, enObj);\n }\n }\n }\n\n /**\n * @private\n * @param {any} callback\n */\n loadObjects = async objs => {\n if (objs) {\n for (let id in objs) {\n if (!objs.hasOwnProperty(id) || !objs[id]) {\n continue;\n }\n const obj = objs[id];\n let enums = null;\n if (obj && obj.common && obj.common.enums) {\n enums = obj.common.enums;\n delete obj.common.enums;\n } else {\n enums = null;\n }\n try {\n await this.props.socket.setObject(id, obj);\n enums && (await this._createAllEnums(enums, obj._id));\n if (obj.type === 'state') {\n try {\n const state = await this.props.socket.getState(obj._id);\n if (!state || state.val === null) {\n try {\n await this.props.socket.setState(obj._id, !obj.common || obj.common.def === undefined ? null : obj.common.def, true);\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id}\": ${e}`);\n }\n }\n } catch (e) {\n window.alert(`Cannot read state \"${obj._id}\": ${e}`);\n }\n }\n } catch (error) {\n window.alert(error);\n }\n }\n }\n }\n\n _getSelectedIdsForExport() {\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = [];\n const keys = Object.keys(this.objects);\n keys.sort();\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const idDot = id + '.';\n const idLen = idDot.length;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if (id === key || key.startsWith(idDot)) {\n result.push(key);\n }\n if (key.substring(0, idLen) > idDot) {\n break;\n }\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n _exportObjects(isAll) {\n if (isAll) {\n generateFile('allObjects.json', this.objects);\n } else\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = {};\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n this._getSelectedIdsForExport().forEach(key => {\n result[key] = JSON.parse(JSON.stringify(this.objects[key]));\n // add enum information\n if (result[key].common) {\n const enums = this.getEnumsForId(key);\n if (enums) {\n result[key].common.enums = enums;\n }\n }\n });\n\n generateFile(id + '.json', result);\n } else {\n window.alert(this.props.t('ra_Save of objects-tree is not possible'));\n }\n }\n\n renderExportDialog() {\n if (this.state.showExportDialog === false) {\n return null;\n } else {\n return <Dialog open={true}>\n <DialogTitle>{this.props.t('Select type of export')}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.props.t('You can export all objects or just the selected branch.')}\n <br/>\n {this.props.t('Selected %s object(s)', this.state.showExportDialog)}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" variant=\"outlined\" onClick={() => this.setState({showExportDialog: false}, () => this._exportObjects(true))}>{this.props.t('ra_All objects')}</Button>\n <Button color=\"primary\" variant=\"contained\" autoFocus onClick={() => this.setState({showExportDialog: false}, () => this._exportObjects(false))}>{this.props.t('ra_Only selected')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.setState({showExportDialog: false})} startIcon={<IconClose/>}>{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n }\n\n /**\n * @private\n * @param {object} evt\n */\n handleJsonUpload = evt => {\n let f = evt.target.files[0];\n if (f) {\n let r = new FileReader();\n r.onload = async e => {\n let contents = e.target.result;\n try {\n let json = JSON.parse(contents);\n let len = Object.keys(json).length;\n let id = json._id;\n if (id === undefined && len) {\n await this.loadObjects(json);\n window.alert(this.props.t('ra_%s object(s) processed', len));\n } else {\n // it is only one object in form\n // {\n // \"_id\": \"xxx\",\n // \"common\": \"yyy\",\n // \"native\": \"zzz\"\n // }\n if (!id) {\n return window.alert(this.props.t('ra_Invalid structure'));\n }\n try {\n let enums;\n if (json.common.enums) {\n enums = json.common.enums;\n delete json.common.enums;\n }\n await this.props.socket.setObject(json._id, json);\n if (json.type === 'state') {\n const state = await this.props.socket.getState(json._id);\n if (!state || state.val === null || state.val === undefined) {\n await this.props.socket.getState(json._id, json.common.def === undefined ? null : json.common.def, true);\n }\n }\n if (enums) {\n await this._createAllEnums(enums, json._id);\n }\n\n window.alert(this.props.t('ra_%s was imported', json._id));\n } catch (err) {\n window.alert(err);\n }\n }\n } catch (err) {\n window.alert(err);\n }\n };\n r.readAsText(f);\n } else {\n window.alert(this.props.t('ra_Failed to open JSON File'));\n }\n }\n\n toolTipObjectCreating = () => {\n const { t } = this.props;\n\n let value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div key={7} style={{height: 10}}/>,\n <div key={8}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={9}>{t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')}</div>,\n ];\n\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id]?.type === 'state')) {\n } else {\n if (this.state.filter.expertMode) {\n switch (this.objects[id]?.type) {\n case 'device':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n ];\n break\n case 'folder':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n ];\n break\n case 'channel':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={1}>{t('ra_Channel → State')}</div>,\n ];\n break\n default:\n break\n }\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={7}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={8}>{t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')}</div>,\n ]\n }\n }\n }\n return value.length ? value : t('ra_Add new child object to selected parent');\n }\n\n /**\n * Renders the toolbar.\n * @returns {JSX.Element}\n */\n getToolbar() {\n let allowObjectCreation = false;\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else {\n if (this.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n }\n\n return <div style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center'\n }}>\n <div style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center'\n }}>\n\n <Tooltip title={this.props.t('ra_Refresh tree')}>\n <div>\n <IconButton\n onClick={() => this.refreshComponent()}\n disabled={this.state.updating}\n size=\"large\"\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n {this.props.showExpertButton && !this.props.expertMode &&\n <Tooltip title={this.props.t('ra_expertMode')}>\n <IconButton\n key=\"expertMode\"\n color={this.state.filter.expertMode ? 'secondary' : 'default'}\n onClick={() => this.onFilter('expertMode', !this.state.filter.expertMode)}\n size=\"large\"\n >\n <IconExpert />\n </IconButton>\n </Tooltip>\n }\n {!this.props.disableColumnSelector &&\n <Tooltip title={this.props.t('ra_Configure')}>\n <IconButton\n key=\"columnSelector\"\n // color={this.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => this.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n }\n {this.state.expandAllVisible &&\n <Tooltip title={this.props.t('ra_Expand all nodes')}>\n <IconButton\n key=\"expandAll\"\n onClick={() => this.onExpandAll()}\n size=\"large\"\n >\n <IconOpen />\n </IconButton>\n </Tooltip>\n }\n <Tooltip title={this.props.t('ra_Collapse all nodes')}>\n <IconButton\n key=\"collapseAll\"\n onClick={() => this.onCollapseAll()}\n size=\"large\"\n >\n <IconClosed />\n </IconButton>\n </Tooltip>\n <Tooltip title={this.props.t('ra_Expand one step node')}>\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => this.onExpandVisible()}\n size=\"large\"\n >\n <StyledBadge badgeContent={this.state.depth} color=\"secondary\">\n <IconOpen />\n </StyledBadge>\n </IconButton>\n </Tooltip>\n <Tooltip title={this.props.t('ra_Collapse one step node')}>\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => this.onCollapseVisible()}\n size=\"large\"\n >\n <StyledBadge badgeContent={this.state.depth} color=\"secondary\">\n <IconClosed />\n </StyledBadge>\n </IconButton>\n </Tooltip>\n {this.props.objectStatesView && <Tooltip title={this.props.t('ra_Toggle the states view')}>\n <IconButton\n onClick={() => this.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={this.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>}\n\n {this.props.objectAddBoolean ?\n <Tooltip title={this.toolTipObjectCreating()}>\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() => this.setState({ modalNewObj: true })}\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n : null\n }\n\n {this.props.objectImportExport &&\n <Tooltip title={this.props.t('ra_Add objects tree from JSON file')}>\n <IconButton\n onClick={() => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleJsonUpload(e), false);\n input.click();\n }}\n size=\"large\"\n >\n <PublishIcon />\n </IconButton>\n </Tooltip>\n }\n {this.props.objectImportExport && (!!this.state.selected.length || this.state.selectedNonObject) &&\n <Tooltip title={this.props.t('ra_Save objects tree as JSON file')}>\n <IconButton\n onClick={() => this.setState({showExportDialog: this._getSelectedIdsForExport().length})}\n size=\"large\"\n >\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n }\n </div>\n {!!this.props.objectBrowserEditObject && <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${this.props.t('ra_Objects')}: ${Object.keys(this.info.objects).length}, ${this.props.t('ra_States')}: ${Object.keys(this.info.objects).filter(el => this.info.objects[el].type === 'state').length}`}\n </div>}\n {this.props.objectEditBoolean &&\n <Tooltip title={this.props.t('ra_Edit custom config')}>\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = getVisibleItems(this.root, 'state', this.objects);\n\n if (ids.length) {\n this.pauseSubscribe(true);\n\n if (ids.length === 1) {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectSelected', this.state.selected[0]);\n this.props.router && this.props.router.doNavigate(null, 'custom', this.state.selected[0]);\n }\n this.setState({ customDialog: ids });\n } else {\n this.setState({ toast: this.props.t('ra_please select object') });\n }\n }}\n size=\"large\"\n >\n <BuildIcon />\n </IconButton>\n </Tooltip>\n }\n </div>;\n }\n\n /**\n * @private\n * @param {string} id\n */\n toggleExpanded(id) {\n const expanded = JSON.parse(JSON.stringify(this.state.expanded));\n const pos = expanded.indexOf(id);\n if (pos === -1) {\n expanded.push(id);\n expanded.sort();\n } else {\n expanded.splice(pos, 1);\n }\n\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectExpanded', JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n\n /**\n * @private\n * @param {Event} e\n * @param {string} text\n */\n onCopy(e, text) {\n e.stopPropagation();\n e.preventDefault();\n copy(text);\n if (text.length < 50) {\n this.setState({ toast: this.props.t('ra_Copied %s', text) });\n } else {\n this.setState({ toast: this.props.t('ra_Copied') });\n }\n }\n\n renderTooltipAccessControl = acl => {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n { value: '0x400', valueNum: 0x400, title: 'read', group: 'Owner' },\n { value: '0x200', valueNum: 0x200, title: 'write', group: 'Owner' },\n { value: '0x40', valueNum: 0x40, title: 'read', group: 'Group' },\n { value: '0x20', valueNum: 0x20, title: 'write', group: 'Group' },\n { value: '0x4', valueNum: 0x4, title: 'read', group: 'Everyone' },\n { value: '0x2', valueNum: 0x2, title: 'write', group: 'Everyone' }\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value = 'object') => {\n let rights = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(<span key={value + i}>{this.texts['acl' + el.group + '_' + el.title + '_' + value]},\n <span className={value === 'object' ? this.props.classes.rightsObject : this.props.classes.rightsState}>\n {el.value}\n </span>\n </span>);\n }\n });\n }\n arrayTooltipText.push(<span key=\"group\">{this.texts.ownerGroup + ': ' + (acl.ownerGroup || '').replace('system.group.', '')}</span>);\n arrayTooltipText.push(<span key=\"owner\">{this.texts.ownerUser + ': ' + (acl.owner || '').replace('system.user.', '')}</span>);\n funcRenderStateObject();\n if (acl.state) {\n funcRenderStateObject('state');\n }\n return arrayTooltipText.length ? <span className={this.props.classes.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span> : '';\n }\n\n /**\n * @param {string} id\n * @param {{ data: { obj: { type: string; }; hasCustoms: any; }; }} item\n * @param {{ cellButtonsButton: string | undefined; cellButtonsButtonAlone: any; cellButtonsButtonIcon: string | undefined; cellButtonsButtonWithCustoms: any; }} classes\n */\n renderColumnButtons(id, item, classes) {\n if (!item.data.obj) {\n return this.props.onObjectDelete || this.props.objectEditOfAccessControl ? <div className={classes.buttonDiv}>\n {this.state.filter.expertMode && this.props.objectEditOfAccessControl ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, classes.cellButtonsEmptyButton, classes.cellButtonMinWidth)}\n onClick={() =>\n this.setState({ modalEditOfAccess: true, modalEmptyId: id, modalEditOfAccessObjData: item.data })}\n size=\"large\">---</IconButton> : null}\n {this.props.onObjectDelete && item.children && item.children.length ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, classes.cellButtonsButtonAlone)}\n size=\"small\"\n aria-label=\"delete\"\n title={this.texts.deleteObject}\n onClick={() => this.props.onObjectDelete(id, !!(item.children && item.children.length), false)}\n >\n <IconDelete className={classes.cellButtonsButtonIcon} />\n </IconButton> : null}\n </div> : null;\n }\n\n item.data.aclTooltip = item.data.aclTooltip || this.renderTooltipAccessControl(item.data.obj.acl);\n\n const acl = item.data.obj.acl ? (item.data.obj.type === 'state' ? item.data.obj.acl.state : item.data.obj.acl.object) : 0;\n const aclSystemConfig = item.data.obj.acl && (item.data.obj.type === 'state' ? this.systemConfig.common.defaultNewAcl.state : this.systemConfig.common.defaultNewAcl.object);\n\n return [\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? <Tooltip key=\"acl\" title={item.data.aclTooltip}><IconButton\n className={classes.cellButtonMinWidth}\n onClick={() => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div className={classes.aclText}>{isNaN(Number(acl).toString(16)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16)}</div>\n </IconButton></Tooltip> : <div key=\"aclEmpty\" className={classes.cellButtonMinWidth} />,\n <IconButton\n key=\"edit\"\n className={classes.cellButtonsButton}\n size=\"small\"\n aria-label=\"edit\"\n title={this.texts.editObject}\n onClick={() => {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.setState({ editObjectDialog: id });\n }}\n >\n <IconEdit className={classes.cellButtonsButtonIcon} />\n </IconButton>,\n this.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? <IconButton\n key=\"delete\"\n className={classes.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => this.props.onObjectDelete(id, !!item.children?.length, !item.data.obj.common?.dontDelete)}\n title={this.texts.deleteObject}\n >\n <IconDelete className={classes.cellButtonsButtonIcon} />\n </IconButton> : null,\n this.props.objectCustomDialog && this.info.hasSomeCustoms && item.data.obj.type === 'state' && item.data.obj.common?.type !== 'file' ? <IconButton\n className={Utils.clsx(classes.cellButtonsButton, item.data.hasCustoms ? classes.cellButtonsButtonWithCustoms : classes.cellButtonsButtonWithoutCustoms)}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={this.texts.customConfig}\n onClick={() => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.objectSelected', id);\n\n this.pauseSubscribe(true);\n this.props.router && this.props.router.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id] });\n }}\n >\n <IconConfig className={classes.cellButtonsButtonIcon} />\n </IconButton> : null,\n ];\n }\n\n /**\n * @private\n * @param {string} id\n */\n readHistory(id) {\n /*interface GetHistoryOptions {\n instance?: string;\n start?: number;\n end?: number;\n step?: number;\n count?: number;\n from?: boolean;\n ack?: boolean;\n q?: boolean;\n addID?: boolean;\n limit?: number;\n ignoreNull?: boolean;\n sessionId?: any;\n aggregate?: 'minmax' | 'min' | 'max' | 'average' | 'total' | 'count' | 'none';\n }*/\n if (window.sparkline &&\n this.defaultHistory &&\n this.objects[id] &&\n this.objects[id].common &&\n this.objects[id].common.custom &&\n this.objects[id].common.custom[this.defaultHistory]) {\n\n const now = new Date();\n now.setHours(now.getHours() - 24);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n let nowMs = now.getTime();\n\n this.props.socket.getHistory(id, {\n instance: this.defaultHistory,\n start: nowMs,\n end: Date.now(),\n step: 3600000,\n from: false,\n ack: false,\n q: false,\n addID: false,\n aggregate: 'minmax'\n })\n .then(values => {\n const sparks = window.document.getElementsByClassName('sparkline');\n\n for (let s = 0; s < sparks.length; s++) {\n if (sparks[s].dataset.id === id) {\n const v = prepareSparkData(values, nowMs);\n\n window.sparkline.sparkline(sparks[s], v);\n break;\n }\n }\n })\n .catch(e => console.warn('Cannot read history: ' + e));\n }\n }\n\n /**\n * @private\n * @param {string} id\n * @param {any} item\n * @param {Record<string, any>} classes\n * @returns {JSX.Element | null}\n */\n renderColumnValue(id, item, classes) {\n const obj = item.data.obj;\n if (!obj || !this.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return <div className={Utils.clsx(classes.cellValueText, classes.cellValueFile)}>[file]</div>;\n } else\n if (!this.states[id]) {\n if (obj.type === 'state') {\n !this.recordStates.includes(id) && this.recordStates.push(id);\n this.states[id] = { val: null };\n this.subscribe(id);\n }\n return null;\n } else {\n !this.recordStates.includes(id) && this.recordStates.push(id);\n }\n\n const state = this.states[id];\n let info = item.data.state;\n if (!info) {\n info = item.data.state = item.data.state || formatValue(id, state, obj, this.texts, this.props.dateFormat, this.props.isFloatComma);\n\n info.valFull = info.valFull.map(item => {\n if (item.t === this.texts.quality && state.q) {\n return [\n <div className={classes.cellValueTooltipBoth} key={item.t}>{item.t}: {item.v}</div>,\n //<div className={classes.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n !item.nbr ? <br key={item.t + '_br'} /> : null\n ];\n } else {\n return [\n <div className={classes.cellValueTooltipTitle} key={item.t}>{item.t}:</div>,\n <div className={classes.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n !item.nbr ? <br key={item.t + '_br'} /> : null\n ];\n }\n });\n\n if (this.defaultHistory && this.objects[id] && this.objects[id].common && this.objects[id].common.custom && this.objects[id].common.custom[this.defaultHistory]) {\n info.valFull.push(<svg key=\"sparkline\" className=\"sparkline\" data-id={id} style={{ fill: '#3d85de' }} width=\"200\" height=\"30\" strokeWidth=\"3\" />);\n }\n\n const copyText = info.valText.v || '';\n info.val = copyText;\n info.valText = [\n <span className={classes.newValue} key={`${info.valText.v.toString()}valText`}>{info.valText.v.toString()}</span>,\n info.valText.u ? <span className={Utils.clsx(classes.cellValueTextUnit, classes.newValue)} key={`${info.valText.v.toString()}unit`}>{info.valText.u}</span> : null,\n info.valText.s !== undefined ? <span className={Utils.clsx(classes.cellValueTextState, classes.newValue)} key={`${info.valText.v.toString()}states`}>({info.valText.s})</span> : null,\n <IconCopy className={Utils.clsx(classes.cellButtonsValueButton, 'copyButton', classes.cellButtonsValueButtonCopy)} onClick={e => this.onCopy(e, copyText)} key=\"cc\" />,\n //<IconEdit className={ Utils.clsx(classes.cellButtonsValueButton, 'copyButton', classes.cellButtonsValueButtonEdit) } key=\"ce\" />\n ];\n }\n\n let val = info.valText;\n if (!this.state.filter.expertMode && item.data.button) {\n val = <PressButtonIcon className={Utils.clsx(this.props.classes.cellValueButton, !this.states[id] || !this.states[id].val ? this.props.classes.cellValueButtonFalse : '')} />;\n }\n\n return <Tooltip\n key=\"value\"\n title={info.valFull}\n classes={{ tooltip: this.props.classes.cellValueTooltip, popper: this.props.classes.cellValueTooltipBox }}\n onOpen={() => this.readHistory(id)}\n >\n <div style={info.style} className={classes.cellValueText} >\n {val}\n </div>\n </Tooltip>;\n }\n\n /**\n * @private\n * @returns {undefined}\n */\n _syncEnum(id, enumIds, newArray, cb) {\n if (!enumIds || !enumIds.length) {\n return cb && cb();\n } else {\n const enumId = enumIds.pop();\n const promises = [];\n if (this.info.objects[enumId]?.common) {\n if (this.info.objects[enumId].common.members?.length) {\n const pos = this.info.objects[enumId].common.members.indexOf(id);\n if (pos !== -1 && !newArray.includes(enumId)) {\n // delete from members\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members.splice(pos, 1);\n promises.push(this.props.socket.setObject(enumId, obj)\n .then(() => this.info.objects[enumId] = obj)\n .catch(e => this.showError(e))\n );\n }\n }\n\n // add to it\n if (newArray.includes(enumId) && !this.info.objects[enumId].common.members?.includes(id)) {\n // add to object\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members = obj.common.members || [];\n obj.common.members.push(id);\n obj.common.members.sort();\n promises.push(this.props.socket.setObject(enumId, obj)\n .then(() => this.info.objects[enumId] = obj)\n .catch(e => this.showError(e))\n );\n }\n }\n\n Promise.all(promises)\n .then(() => setTimeout(() =>\n this._syncEnum(id, enumIds, newArray, cb), 0));\n }\n }\n\n /**\n * @private\n * @returns {Promise}\n */\n syncEnum(id, enumName, newArray) {\n const toCheck = [...this.info[enumName === 'func' ? 'funcEnums' : 'roomEnums']];\n\n return new Promise(resolve => this._syncEnum(id, toCheck, newArray, error => {\n error && this.showError(error);\n // force update of object\n resolve();\n }));\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEnumDialog() {\n if (this.state.enumDialog) {\n const type = this.state.enumDialog.type;\n const item = this.state.enumDialog.item;\n const itemEnums = this.state.enumDialogEnums;\n const enumsOriginal = this.state.enumDialog.enumsOriginal;\n\n const enums = (type === 'room' ? this.info.roomEnums : this.info.funcEnums).map(id => ({\n name: getName((this.objects[id] && this.objects[id].common && this.objects[id].common.name) || id.split('.').pop(), this.props.lang),\n value: id,\n icon: getSelectIdIcon(this.objects, id, this.imagePrefix)\n }));\n\n enums.forEach(item => {\n if (item.icon && typeof item.icon == 'string') {\n item.icon = <div className={this.props.classes.enumIconDiv}>\n <img src={item.icon} className={this.props.classes.enumIcon} alt={item.name} />\n </div>;\n }\n });\n\n // const hasIcons = !!enums.find(item => item.icon);\n\n return <Dialog className={this.props.classes.enumDialog} onClose={() => this.setState({ enumDialog: null })} aria-labelledby=\"enum-dialog-title\" open={true}>\n <DialogTitle id=\"enum-dialog-title\">\n {type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms')}\n <Fab\n className={this.props.classes.enumButton}\n color=\"primary\"\n disabled={JSON.stringify(enumsOriginal) === JSON.stringify(itemEnums)}\n size=\"small\"\n onClick={() =>\n this.syncEnum(item.data.id, type, itemEnums)\n .then(() => this.setState({ enumDialog: null, enumDialogEnums: null }))}\n >\n <IconCheck />\n </Fab>\n </DialogTitle>\n <List classes={{ root: this.props.classes.enumList }}>\n {\n enums.map(item => {\n let id;\n let name;\n let icon;\n\n if (typeof item === 'object') {\n id = item.value;\n name = item.name;\n icon = item.icon;\n } else {\n id = item;\n name = item;\n }\n const labelId = `checkbox-list-label-${id}`;\n\n return <ListItem\n className={this.props.classes.headerCellSelectItem}\n key={id}\n onClick={() => {\n const pos = itemEnums.indexOf(id);\n const enumDialogEnums = JSON.parse(JSON.stringify(this.state.enumDialogEnums));\n if (pos === -1) {\n enumDialogEnums.push(id);\n enumDialogEnums.sort();\n } else {\n enumDialogEnums.splice(pos, 1);\n }\n this.setState({ enumDialogEnums });\n }}\n >\n <ListItemIcon classes={{ root: this.props.classes.enumCheckbox }}>\n <Checkbox\n edge=\"start\"\n checked={itemEnums.includes(id)}\n tabIndex={-1}\n disableRipple\n inputProps={{ 'aria-labelledby': labelId }}\n />\n </ListItemIcon>\n <ListItemText id={labelId}>{name}</ListItemText>\n {icon ? <ListItemSecondaryAction>{icon}</ListItemSecondaryAction> : null}\n </ListItem>;\n })\n }\n </List>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditRoleDialog() {\n if (this.state.roleDialog && this.props.objectBrowserEditRole) {\n const ObjectBrowserEditRole = this.props.objectBrowserEditRole;\n return <ObjectBrowserEditRole\n key=\"objectBrowserEditRole\"\n id={this.state.roleDialog}\n socket={this.props.socket}\n t={this.props.t}\n roles={this.info.roles}\n onClose={obj => {\n if (obj) {\n this.info.objects[this.state.roleDialog] = obj;\n }\n this.setState({ roleDialog: false });\n }}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {boolean} [isSave]\n */\n onColumnsEditCustomDialogClose(isSave) {\n if (isSave) {\n let value = this.customColumnDialog.value;\n if (this.customColumnDialog.type === 'boolean') {\n value = value === 'true' || value === true;\n } else if (this.customColumnDialog.type === 'number') {\n value = parseFloat(value);\n }\n this.customColumnDialog = null;\n this.props.socket.getObject(this.state.columnsEditCustomDialog.obj._id)\n .then(obj => {\n if (this.setCustomValue(obj, this.state.columnsEditCustomDialog.it, value)) {\n return this.props.socket.setObject(obj._id, obj);\n } else {\n throw new Error(this.props.t('ra_Cannot update attribute, because not found in the object'))\n }\n })\n .then(() => this.setState({ columnsEditCustomDialog: null }))\n .catch(e => this.showError(e));\n } else {\n this.customColumnDialog = null;\n this.setState({ columnsEditCustomDialog: null });\n }\n }\n\n /**\n * @private\n */\n renderColumnsEditCustomDialog() {\n if (this.state.columnsEditCustomDialog) {\n if (!this.customColumnDialog) {\n const value = this.getCustomValue(this.state.columnsEditCustomDialog.obj, this.state.columnsEditCustomDialog.it);\n this.customColumnDialog = {\n type: this.state.columnsEditCustomDialog.it.type || typeof value,\n initValue: (value === null || value === undefined ? '' : value).toString(),\n value: (value === null || value === undefined ? '' : value).toString()\n };\n }\n\n return <Dialog\n onClose={() => this.setState({ columnsEditCustomDialog: null })}\n maxWidth=\"md\"\n aria-labelledby=\"custom-dialog-title\" open={true}>\n <DialogTitle id=\"custom-dialog-title\">{this.props.t('ra_Edit object field') + ': ' + this.state.columnsEditCustomDialog.obj._id}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.customColumnDialog.type === 'boolean' ?\n <FormControlLabel\n control={<Checkbox\n onKeyUp={e => e.keyCode === 13 && this.onColumnsEditCustomDialogClose(true)}\n defaultChecked={this.customColumnDialog.value === 'true'}\n onChange={e => {\n this.customColumnDialog.value = e.target.checked.toString();\n const changed = this.customColumnDialog.value !== this.customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n />}\n label={this.state.columnsEditCustomDialog.it.name + ' (' + this.state.columnsEditCustomDialog.it.pathText + ')'}\n />\n :\n <TextField\n variant=\"standard\"\n defaultValue={this.customColumnDialog.value}\n fullWidth\n onKeyUp={e => e.keyCode === 13 && this.onColumnsEditCustomDialogClose(true)}\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n onChange={e => {\n this.customColumnDialog.value = e.target.value;\n const changed = this.customColumnDialog.value !== this.customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n autoFocus\n />\n }\n\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose(true)}\n disabled={!this.state.customColumnDialogValueChanged}\n color=\"primary\"\n startIcon={<IconCheck /> }\n >\n {this.props.t('ra_Update')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose()}\n startIcon={<IconClose />}\n >{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} obj\n * @param {any} it\n */\n getCustomValue(obj, it) {\n if (obj && obj._id && obj._id.startsWith(it.adapter + '.') && it.path.length > 1) {\n const p = it.path;\n let value;\n if (obj[p[0]] && typeof obj[p[0]] === 'object') {\n if (p.length === 2) { // most common case\n value = obj[p[0]][p[1]];\n } else if (p.length === 3) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' ? obj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] ? obj[p[0]][p[1]][p[2]][p[3]] : null;\n } else if (p.length === 5) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && obj[p[0]][p[1]][p[2]][p[3]] ? obj[p[0]][p[1]][p[2]][p[3]][p[4]] : null;\n } else if (p.length === 6) {\n value = obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && obj[p[0]][p[1]][p[2]][p[3]] && obj[p[0]][p[1]][p[2]][p[3]][p[4]] ? obj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] : null;\n }\n if (value === undefined || value === null) {\n return null;\n } else {\n return value;\n }\n }\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {any} obj\n * @param {any} it\n * @param {any} value\n */\n setCustomValue(obj, it, value) {\n if (obj && obj._id && obj._id.startsWith(it.adapter + '.') && it.path.length > 1) {\n const p = it.path;\n if (obj[p[0]] && typeof obj[p[0]] === 'object') {\n if (p.length === 2) { // most common case\n obj[p[0]][p[1]] = value;\n return true;\n } else if (p.length === 3) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object') {\n obj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]] && typeof obj[p[0]][p[1]][p[2]][p[3]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (obj[p[0]][p[1]] && typeof obj[p[0]][p[1]] === 'object' && obj[p[0]][p[1]][p[2]] && typeof obj[p[0]][p[1]][p[2]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]] && typeof obj[p[0]][p[1]][p[2]][p[3]] === 'object' && obj[p[0]][p[1]][p[2]][p[3]][p[4]] && typeof obj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object') {\n obj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Renders a custom value.\n * @param {any} obj\n * @param {any} it\n * @param {any} item\n * @returns {JSX.Element | null}\n */\n renderCustomValue(obj, it, item) {\n let text = this.getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !this.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return <div\n className={Utils.clsx(this.props.classes.columnCustom, this.props.classes.columnCustomEditable, this.props.classes['columnCustom_' + it.align])}\n onClick={() => this.setState({ columnsEditCustomDialog: { item, it, obj }, customColumnDialogValueChanged: false })}>{text}</div>;\n } else {\n return <div\n className={Utils.clsx(this.props.classes.columnCustom, this.props.classes['columnCustom_' + it.align])}>{text}</div>;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Renders a leaf.\n * @param {any} item\n * @param {boolean} isExpanded\n * @param {Record<string, any>} classes\n * @param {{ count: number; }} counter\n * @returns {JSX.Element}\n */\n renderLeaf(item, isExpanded, classes, counter) {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? this.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n let itemType = obj?.type;\n\n if (item.children || itemType === 'folder' || itemType === 'device' || itemType === 'channel' || itemType === 'meta') {\n iconFolder = isExpanded ? <IconOpen\n className={classes.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n /> : <IconClosed\n className={classes.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />;\n } else {\n if (obj.common && (obj.common.write === false) && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly className={classes.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument className={classes.cellIdIconDocument} />;\n }\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = <span className={Utils.clsx(classes.cellIdIconOwn, 'iconOwn')}>{item.data.icon}</span>; // utf-8 char\n } else {\n iconItem = <img className={Utils.clsx(classes.cellIdIconOwn, 'iconOwn')} src={item.data.icon} alt=\"\" />;\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj && obj.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = this.levelPadding * item.data.level;\n\n if (item.data.lang !== this.state.lang) {\n const { rooms, per } = findRoomsForObject(this.info, id, this.state.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(this.info, id, this.state.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = this.state.lang;\n }\n\n const checkbox =\n this.props.multiSelect &&\n this.objects[id] && (!this.props.types || this.props.types.includes(this.objects[id].type)) ?\n <Checkbox\n className={classes.checkBox}\n checked={this.state.selected.includes(id)}\n /> :\n null;\n\n let valueEditable = !this.props.notEditable && itemType === 'state' && (this.state.filter.expertMode || common?.write !== false);\n if (this.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n const enumEditable = !this.props.notEditable && this.objects[id] && (this.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n const checkVisibleObjectType = this.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n let newValue = '';\n let newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = this.states[id]?.from;\n if (newValue === undefined) {\n newValue = '&nbsp;';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${this.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${this.texts.stateChangedBy} ${user}`);\n }\n }\n if (obj) {\n obj.from && newValueTitle.push(this.texts.objectChangedFrom + ' ' + obj.from.replace(/^system\\.adapter\\.|^system\\./, ''));\n obj.user && newValueTitle.push(this.texts.objectChangedBy + ' ' + obj.user.replace(/^system\\.user\\./, ''));\n obj.ts && newValueTitle.push(this.texts.objectChangedByUser + ' ' + Utils.formatDate(new Date(obj.ts), this.props.dateFormat));\n }\n\n const readWriteAlias = typeof common?.alias?.id === 'object';\n\n const alias = id.startsWith('alias.') && common?.alias?.id ?\n (readWriteAlias ?\n <div className={classes.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.read);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id.read));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite)}\n >←{common.alias.id.read}</div> : null}\n {common.alias.id.write ? <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.write);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id.write));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite)}\n >→{common.alias.id.write}</div> : null}\n </div>\n :\n <div\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id);\n setTimeout(() => {\n this.expandAllSelected(() =>\n this.scrollToItem(common.alias.id));\n }, 100);\n }}\n className={Utils.clsx(classes.cellIdAlias, classes.cellIdAliasAlone)}\n >→{common.alias.id}</div>\n ) : null;\n\n let checkColor = common?.color;\n let invertBackground = 'none';\n if (checkColor && !this.state.selected.includes(id)) {\n invertBackground = Utils.invertColor(checkColor, true);\n }\n if (!checkColor || this.state.selected.includes(id)) {\n checkColor = 'inherit';\n }\n const icons = [];\n\n if (common?.statusStates) {\n let ids = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = id + '.' + _id;\n }\n ids[name] = _id;\n\n if (!this.states[_id]) {\n if (this.objects[_id]?.type === 'state') {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n this.states[_id] = { val: null };\n this.subscribe(_id);\n }\n } else {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && this.states[ids.errorId] && this.states[ids.errorId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n colorSet = true;\n icons.push(<IconError key=\"error\" title={this.texts.deviceError} className={this.props.classes.iconDeviceError}/>);\n }\n\n if (ids.onlineId && this.states[ids.onlineId] && this.states[ids.onlineId].val !== null) {\n if (!colorSet) {\n if (this.states[ids.onlineId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n } else {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n }\n } else if (this.states[ids.onlineId].val) {\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n } else {\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n }\n } else\n if (ids.offlineId && this.states[ids.offlineId] && this.states[ids.offlineId].val !== null) {\n if (!colorSet) {\n if (this.states[ids.offlineId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n } else {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n }\n } else if (this.states[ids.offlineId].val) {\n icons.push(<IconDisconnected key=\"disc\" title={this.texts.deviceError} className={this.props.classes.iconDeviceDisconnected}/>);\n } else {\n icons.push(<IconConnection key=\"conn\" title={this.texts.deviceError} className={this.props.classes.iconDeviceConnected}/>);\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(this.states[id]?.q || 0).join(', ') : null;\n\n return <Grid\n container\n direction=\"row\"\n wrap=\"nowrap\"\n className={Utils.clsx(\n classes.tableRow,\n this.state.linesEnabled && classes.tableRowLines,\n !this.props.dragEnabled && classes.tableRowNoDragging,\n alias && classes.tableRowAlias,\n readWriteAlias && classes.tableRowAliasReadWrite,\n !item.data.visible && classes.filteredOut,\n item.data.hasVisibleParent && !item.data.visible && !item.data.hasVisibleChildren && classes.filteredParentOut,\n this.state.selected.includes(id) && classes.itemSelected,\n this.state.selectedNonObject === id && classes.itemSelected\n )}\n key={id}\n id={id}\n onClick={() => this.onSelect(id)}\n onDoubleClick={() => {\n if (!item.children) {\n this.onSelect(id, true);\n } else {\n this.toggleExpanded(id);\n }\n }}\n >\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"row\"\n className={classes.cellId}\n style={{ width: this.columnsVisibility.id, paddingLeft }}\n >\n <Grid\n item\n container\n alignItems=\"center\"\n style={{\n color: checkColor,\n background: invertBackground\n }}\n >\n {checkbox}\n {iconFolder}\n </Grid>\n <Grid\n item\n title={id}\n className={classes.cellIdSpan}\n style={{\n background: invertBackground,\n color: id === 'system' ?\n COLOR_NAME_SYSTEM : (id === 'system.adapter' ? COLOR_NAME_SYSTEM_ADAPTER :\n checkColor)\n }}\n >\n {item.data.name}\n {alias}\n {icons}\n </Grid>\n <div\n style={{\n color: checkColor,\n background: invertBackground\n }} className={classes.grow} />\n <Grid\n item\n container\n alignItems=\"center\"\n >\n {iconItem}\n </Grid>\n <div style={{ color: checkColor }}>\n <IconCopy className={Utils.clsx(classes.cellCopyButton, 'copyButton')} onClick={e => this.onCopy(e, id)} />\n </div>\n </Grid>\n\n {this.columnsVisibility.name ? <div className={classes.cellName} style={{ width: this.columnsVisibility.name }}>\n {(item.data?.title) || ''}\n {item.data?.title ? <div style={{ color: checkColor }}>\n <IconCopy className={Utils.clsx(classes.cellCopyButton, 'copyButton')} onClick={e => this.onCopy(e, item.data.title)} />\n </div> : null}\n </div> : null}\n\n {!this.state.statesView ?\n <>\n {this.columnsVisibility.type ? <div className={classes.cellType} style={{ width: this.columnsVisibility.type }}>{typeImg} {obj && obj.type}</div> : null}\n {this.columnsVisibility.role ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.role, cursor: this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole ? 'text' : 'default' }} onClick={this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole ? () => this.setState({ roleDialog: item.data.id }) : undefined}>{common?.role}</div> : null}\n {this.columnsVisibility.room ? <div className={`${classes.cellRoom} ${item.data.per ? classes.cellEnumParent : ''}`} style={{ width: this.columnsVisibility.room, cursor: enumEditable ? 'text' : 'default' }} onClick={enumEditable ? () => { const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums'); this.setState({ enumDialogEnums: enums, enumDialog: { item, type: 'room', enumsOriginal: JSON.parse(JSON.stringify(enums)) } }); } : undefined}>{item.data.rooms}</div> : null}\n {this.columnsVisibility.func ? <div className={`${classes.cellFunc} ${item.data.pef ? classes.cellEnumParent : ''}`} style={{ width: this.columnsVisibility.func, cursor: enumEditable ? 'text' : 'default' }} onClick={enumEditable ? () => { const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums'); this.setState({ enumDialogEnums: enums, enumDialog: { item, type: 'func', enumsOriginal: JSON.parse(JSON.stringify(enums)) } }); } : undefined}>{item.data.funcs}</div> : null}\n </>\n :\n <>\n {this.columnsVisibility.changedFrom ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.changedFrom }} title={newValueTitle.join('\\n')}>{checkVisibleObjectType && this.states[id]?.from ? newValue : null}</div> : null}\n {this.columnsVisibility.qualityCode ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.qualityCode }} title={q || ''}>{q}</div> : null}\n {this.columnsVisibility.timestamp ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.timestamp }}>{checkVisibleObjectType && this.states[id]?.ts ? Utils.formatDate(new Date(this.states[id].ts), this.props.dateFormat) : null}</div> : null}\n {this.columnsVisibility.lastChange ? <div className={classes.cellRole} style={{ width: this.columnsVisibility.lastChange }}>{checkVisibleObjectType && this.states[id]?.lc ? Utils.formatDate(new Date(this.states[id].lc), this.props.dateFormat) : null}</div> : null}\n </>\n }\n {this.adapterColumns.map(it => <div className={classes.cellAdapter} style={{ width: this.columnsVisibility[it.id] }} key={it.id} title={it.adapter + ' => ' + it.pathText}>{this.renderCustomValue(obj, it, item)}</div>)}\n {this.columnsVisibility.val ? <div className={classes.cellValue} style={{ width: this.columnsVisibility.val, cursor: valueEditable ? (common?.type === 'file' ? 'zoom-in' : (item.data.button ? 'grab' : 'text')) : 'default' }} onClick={valueEditable ? () => {\n if (!obj || !this.states) {\n return null;\n }\n\n if (common?.type === 'file') {\n return this.setState({viewFileDialog: id});\n }\n\n // in non-expert mode control button directly\n if (!this.state.filter.expertMode && item.data.button) {\n return this.props.socket.setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n }\n\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true });\n } : undefined}>{this.renderColumnValue(id, item, classes)}</div> : null}\n {this.columnsVisibility.buttons ? <div className={classes.cellButtons} style={{ width: this.columnsVisibility.buttons }}>{this.renderColumnButtons(id, item, classes)}</div> : null}\n </Grid>;\n }\n\n /**\n * Renders an item.\n * @param {any} root\n * @param {boolean} isExpanded\n * @param {Record<string, any>} classes\n * @param {{ count: any; }} [counter]\n * @returns {JSX.Element[]}\n */\n renderItem(root, isExpanded, classes, counter) {\n const items = [];\n counter = counter || { count: 0 };\n let leaf = this.renderLeaf(root, isExpanded, classes, counter);\n let DragWrapper = this.props.DragWrapper;\n if (this.props.dragEnabled) {\n if (root.data.sumVisibility) {\n leaf = <DragWrapper key={root.data.id} item={root} className={classes.draggable}>{leaf}</DragWrapper>;\n } else {\n // change cursor\n leaf = <div key={root.data.id} className={classes.nonDraggable}>{leaf}</div>\n }\n }\n root.data.id && items.push(leaf);\n\n isExpanded = isExpanded === undefined ? binarySearch(this.state.expanded, root.data.id) : isExpanded;\n if (!root.data.id || isExpanded) {\n if (!this.state.foldersFirst) {\n root.children && items.push(root.children.map(item => {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n return null;\n }));\n } else {\n // first only folder\n root.children && items.push(root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n\n return null;\n }));\n // then items\n root.children && items.push(root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n return null;\n }));\n }\n }\n\n return items;\n }\n\n /**\n * @private\n * @param {boolean} [columnsAuto]\n * @param {string[]} [columns]\n * @param {any} [columnsForAdmin]\n * @param {Record<string, number>} [columnsWidths]\n */\n calculateColumnsVisibility(columnsAuto, columns, columnsForAdmin, columnsWidths) {\n columnsWidths = columnsWidths || this.state.columnsWidths;\n columnsForAdmin = columnsForAdmin || this.state.columnsForAdmin;\n columns = columns || this.state.columns || [];\n columnsAuto = typeof columnsAuto !== 'boolean' ? this.state.columnsAuto : columnsAuto;\n\n columnsWidths = JSON.parse(JSON.stringify(columnsWidths));\n Object.keys(columnsWidths).forEach(name => {\n if (columnsWidths[name]) {\n columnsWidths[name] = parseInt(columnsWidths[name], 10) || 0;\n }\n });\n\n this.adapterColumns = [];\n const WIDTHS = SCREEN_WIDTHS[this.props.width].widths;\n\n if (columnsAuto) {\n this.columnsVisibility = {\n id: SCREEN_WIDTHS[this.props.width].idWidth,\n name: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n nameHeader: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n type: this.visibleCols.includes('type') ? WIDTHS.type || 0 : 0,\n role: this.visibleCols.includes('role') ? WIDTHS.role || 0 : 0,\n room: this.visibleCols.includes('room') ? WIDTHS.room || 0 : 0,\n func: this.visibleCols.includes('func') ? WIDTHS.func || 0 : 0,\n changedFrom: this.visibleCols.includes('changedFrom') ? WIDTHS.changedFrom || 0 : 0,\n qualityCode: this.visibleCols.includes('qualityCode') ? WIDTHS.qualityCode || 0 : 0,\n timestamp: this.visibleCols.includes('timestamp') ? WIDTHS.timestamp || 0 : 0,\n lastChange: this.visibleCols.includes('lastChange') ? WIDTHS.lastChange || 0 : 0,\n val: this.visibleCols.includes('val') ? WIDTHS.val || 0 : 0,\n buttons: this.visibleCols.includes('buttons') ? WIDTHS.buttons || 0 : 0,\n };\n\n if (this.columnsVisibility.name && !this.customWidth) {\n let widthSum = this.columnsVisibility.id; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom;\n widthSum += this.columnsVisibility.qualityCode;\n widthSum += this.columnsVisibility.timestamp;\n widthSum += this.columnsVisibility.lastChange;\n } else {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n widthSum += this.columnsVisibility.val;\n widthSum += this.columnsVisibility.buttons;\n this.columnsVisibility.name = `calc(100% - ${widthSum + 5}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else if (!this.customWidth) {\n // Calculate the with of ID\n let widthSum = 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom;\n widthSum += this.columnsVisibility.qualityCode;\n widthSum += this.columnsVisibility.timestamp;\n widthSum += this.columnsVisibility.lastChange;\n } else {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n widthSum += this.columnsVisibility.val;\n widthSum += this.columnsVisibility.buttons;\n this.columnsVisibility.id = `calc(100% - ${widthSum + 5}px)`;\n }\n } else {\n this.columnsVisibility = {\n id: columnsWidths.id || SCREEN_WIDTHS[this.props.width].idWidth,\n name: columns.includes('name') ? columnsWidths.name || WIDTHS.name || SCREEN_WIDTHS[this.props.width].widths.name || 0 : 0,\n type: columns.includes('type') ? columnsWidths.type || WIDTHS.type || SCREEN_WIDTHS[this.props.width].widths.type || 0 : 0,\n role: columns.includes('role') ? columnsWidths.role || WIDTHS.role || SCREEN_WIDTHS[this.props.width].widths.role || 0 : 0,\n room: columns.includes('room') ? columnsWidths.room || WIDTHS.room || SCREEN_WIDTHS[this.props.width].widths.room || 0 : 0,\n func: columns.includes('func') ? columnsWidths.func || WIDTHS.func || SCREEN_WIDTHS[this.props.width].widths.func || 0 : 0\n };\n let widthSum = this.columnsVisibility.id; // id is always visible\n if (this.columnsVisibility.name) {\n widthSum += this.columnsVisibility.type;\n widthSum += this.columnsVisibility.role;\n widthSum += this.columnsVisibility.room;\n widthSum += this.columnsVisibility.func;\n }\n\n if (columnsForAdmin && columns) {\n Object.keys(columnsForAdmin).sort().forEach(adapter =>\n columnsForAdmin[adapter].forEach(column => {\n const id = '_' + adapter + '_' + column.path;\n this.columnsVisibility[id] = columns.includes(id);\n if (columns.includes(id)) {\n const item = {\n adapter,\n id: '_' + adapter + '_' + column.path,\n name: column.name,\n path: column.path.split('.'),\n pathText: column.path\n };\n if (column.edit) {\n item.edit = true;\n if (column.type) {\n item.type = column.type;\n }\n if (column.objTypes) {\n item.objTypes = column.objTypes;\n }\n }\n\n this.adapterColumns.push(item);\n this.columnsVisibility[id] = columnsWidths[item.id] || column.width || SCREEN_WIDTHS[this.props.width].widths.func || SCREEN_WIDTHS.xl.widths.func;\n widthSum += this.columnsVisibility[id];\n } else {\n this.columnsVisibility[id] = 0;\n }\n }));\n }\n this.adapterColumns.sort((a, b) => a.id > b.id ? -1 : (a.id < b.id ? 1 : 0));\n this.columnsVisibility.val = columns.includes('val') ? columnsWidths.val || WIDTHS.val || SCREEN_WIDTHS.xl.widths.val : 0;\n\n // do not show buttons if not desired\n if (!this.props.columns || this.props.columns.includes('buttons')) {\n this.columnsVisibility.buttons = columns.includes('buttons') ? columnsWidths.buttons || WIDTHS.buttons || SCREEN_WIDTHS.xl.widths.buttons : 0;\n widthSum += this.columnsVisibility.buttons;\n }\n\n if (this.columnsVisibility.name && !columnsWidths.name) {\n widthSum += this.columnsVisibility.val;\n this.columnsVisibility.name = `calc(100% - ${widthSum}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else {\n const newWidth = Object.keys(this.columnsVisibility).reduce((accumulator, name) => {\n if (name === 'id' || typeof this.columnsVisibility[name] === 'string' || !this.columnsVisibility[name]) {\n return accumulator;\n } else {\n return accumulator + this.columnsVisibility[name];\n }},\n 0);\n this.columnsVisibility.id = `calc(100% - ${newWidth}px)`;\n }\n }\n }\n\n resizerMouseMove = e => {\n if (this.resizerActiveDiv) {\n let width;\n let widthNext;\n if (this.resizeLeft) {\n width = this.resizerOldWidth - e.clientX + this.resizerPosition;\n widthNext = this.resizerOldWidthNext + e.clientX - this.resizerPosition;\n } else {\n width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n }\n\n if ((!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerNextMin || widthNext > this.resizerNextMin)) {\n this.resizerCurrentWidths[this.resizerActiveName] = width;\n this.resizerCurrentWidths[this.resizerNextName] = widthNext;\n\n this.resizerActiveDiv.style.width = width + 'px';\n this.resizerNextDiv.style.width = widthNext + 'px';\n\n this.columnsVisibility[this.resizerActiveName] = width;\n this.columnsVisibility[this.resizerNextName] = widthNext;\n if (this.resizerNextName === 'nameHeader') {\n this.columnsVisibility['name'] = widthNext - this.state.scrollBarWidth;\n this.resizerCurrentWidths['name'] = widthNext - this.state.scrollBarWidth;\n } else\n if (this.resizerActiveName === 'nameHeader') {\n this.columnsVisibility['name'] = width - this.state.scrollBarWidth;\n this.resizerCurrentWidths['name'] = width - this.state.scrollBarWidth;\n }\n this.customWidth = true;\n this.resizeTimeout && clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = null;\n this.forceUpdate();\n }, 200);\n }\n }\n }\n\n resizerMouseUp = () => {\n (window._localStorage || window.localStorage).setItem(`${this.props.dialogName || 'App'}.table`, JSON.stringify(this.resizerCurrentWidths));\n this.resizerActiveName = null;\n this.resizerNextName = null;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n }\n\n resizerMouseDown = e => {\n if (this.resizerActiveIndex === null || this.resizerActiveIndex === undefined) {\n if (!this.storedWidths) {\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width]));\n }\n\n this.resizerCurrentWidths = this.resizerCurrentWidths || {};\n this.resizerActiveDiv = e.target.parentNode;\n this.resizerActiveName = this.resizerActiveDiv.dataset.name;\n\n let i = 0;\n if (e.target.dataset.left === 'true') {\n this.resizeLeft = true;\n this.resizerNextDiv = this.resizerActiveDiv.previousElementSibling;\n let handle = this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle);\n while (this.resizerNextDiv && !handle && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.previousElementSibling;\n handle = this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle);\n i++;\n }\n if (handle && handle.dataset.left !== 'true') {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n }\n } else {\n this.resizeLeft = false;\n this.resizerNextDiv = this.resizerActiveDiv.nextElementSibling;\n /*while (this.resizerNextDiv && !this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle) && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n i++;\n }*/\n }\n this.resizerNextName = this.resizerNextDiv.dataset.name;\n\n this.resizerMin = parseInt(this.resizerActiveDiv.dataset.min, 10) || 0;\n this.resizerNextMin = parseInt(this.resizerNextDiv.dataset.min, 10) || 0;\n\n this.resizerPosition = e.clientX;\n\n this.resizerCurrentWidths[this.resizerActiveName] = this.resizerActiveDiv.offsetWidth;\n this.resizerCurrentWidths[this.resizerNextName] = this.resizerNextDiv.offsetWidth;\n\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveName];\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerNextName];\n\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n\n resizerReset = () => {\n this.customWidth = false;\n SCREEN_WIDTHS[this.props.width] = JSON.parse(JSON.stringify(this.storedWidths));\n this.calculateColumnsVisibility();\n (window._localStorage || window.localStorage).removeItem(`${this.props.dialogName || 'App'}.table`);\n this.forceUpdate();\n };\n\n /**\n * @private\n * @returns {JSX.Element}\n */\n renderHeader() {\n const classes = this.props.classes;\n\n let filterClearInValue = null;\n if (!this.columnsVisibility.buttons && !this.isFilterEmpty()) {\n filterClearInValue = <IconButton\n onClick={() => this.clearFilter()}\n className={classes.buttonClearFilter}\n title={this.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconClearFilter />\n <IconClose className={classes.buttonClearFilterIcon} />\n </IconButton>;\n }\n\n return <div className={classes.headerRow} >\n <div className={classes.headerCell} style={{ width: this.columnsVisibility.id, position: 'relative' }} data-min={240} data-name=\"id\">{this.getFilterInput('id')}<div className={this.props.classes.resizeHandle + ' ' + this.props.classes.resizeHandleRight} onMouseDown={this.resizerMouseDown} onDoubleClick={this.resizerReset} title={this.props.t('ra_Double click to reset table layout')} /></div>\n {this.columnsVisibility.name ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.nameHeader }} data-min={100} data-name=\"nameHeader\">{this.getFilterInput('name')}</div> : null}\n {!this.state.statesView && <>\n {this.columnsVisibility.type ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.type }} data-min={100} data-name=\"type\">{this.getFilterSelectType()}</div> : null}\n {this.columnsVisibility.role ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.role }} data-min={100} data-name=\"role\">{this.getFilterSelectRole()}</div> : null}\n {this.columnsVisibility.room ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.room }} data-min={100} data-name=\"room\">{this.getFilterSelectRoom()}</div> : null}\n {this.columnsVisibility.func ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.func }} data-min={100} data-name=\"func\">{this.getFilterSelectFunction()}</div> : null}\n </>}\n {this.state.statesView && <>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.changedFrom }} data-min={100} data-name=\"changedFrom\">{this.props.t('ra_Changed from')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.qualityCode }} data-min={100} data-name=\"qualityCode\">{this.props.t('ra_Quality code')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.timestamp }} data-min={100} data-name=\"timestamp\">{this.props.t('ra_Timestamp')}</div>\n <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.lastChange }} data-min={100} data-name=\"lastChange\">{this.props.t('ra_Last change')}</div>\n </>}\n {this.adapterColumns.map(item => <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility[item.id] }} title={item.adapter} key={item.id} data-min={100} data-name={item.id}>{item.name}</div>)}\n {this.columnsVisibility.val ? <div className={Utils.clsx(classes.headerCell, classes.headerCellValue)} style={{ width: this.columnsVisibility.val, position: 'relative' }} data-min={120} data-name=\"val\"><div className={this.props.classes.resizeHandle + ' ' + this.props.classes.resizeHandleLeft} data-left=\"true\" onMouseDown={this.resizerMouseDown} onDoubleClick={this.resizerReset} title={this.props.t('ra_Double click to reset table layout')} />{this.props.t('ra_Value')}{filterClearInValue}</div> : null}\n {this.columnsVisibility.buttons ? <div className={classes.headerCell} style={{ width: this.columnsVisibility.buttons }}> {this.getFilterSelectCustoms()}</div> : null}\n </div>;\n }\n\n /**\n * @private\n * @returns {JSX.Element}\n */\n renderToast() {\n return <Snackbar\n open={!!this.state.toast}\n autoHideDuration={3000}\n onClick={() => this.setState({ toast: '' })}\n onClose={() => this.setState({ toast: '' })}\n message={this.state.toast}\n action={\n <React.Fragment>\n <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={() => this.setState({ toast: '' })}>\n <IconClose fontSize=\"small\" />\n </IconButton>\n </React.Fragment>\n }\n />;\n }\n\n /**\n * Called when component is updated.\n */\n componentDidUpdate() {\n if (this.tableRef.current) {\n const scrollBarWidth = this.tableRef.current.offsetWidth - this.tableRef.current.clientWidth;\n if (this.state.scrollBarWidth !== scrollBarWidth) {\n setTimeout(() => this.setState({ scrollBarWidth }), 100);\n } else {\n if (!this.selectedFound && ((this.state.selected && this.state.selected[0]) || this.lastSelectedItems)) {\n this.scrollToItem((this.state.selected && this.state.selected[0]) || this.lastSelectedItems);\n }\n }\n }\n }\n\n scrollToItem(id) {\n const node = window.document.getElementById(id);\n node && node.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center'\n });\n this.selectedFound = true;\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderCustomDialog() {\n if (this.state.customDialog && this.props.objectCustomDialog) {\n const ObjectCustomDialog = this.props.objectCustomDialog;\n\n return <ObjectCustomDialog\n reportChangedIds={changedIds => this.changedIds = [...changedIds]}\n objectIDs={this.state.customDialog}\n expertMode={this.state.filter.expertMode}\n isFloatComma={this.props.isFloatComma}\n t={this.props.t}\n lang={this.props.lang}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n objects={this.objects}\n customsInstances={this.info.customs}\n onClose={() => {\n this.pauseSubscribe(false);\n this.setState({ customDialog: null });\n if (this.changedIds) {\n this.changedIds = null;\n // update all changed IDs\n this.forceUpdate();\n }\n\n this.props.router && this.props.router.doNavigate('tab-objects');\n }}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Partial<ioBroker.State>} valAck\n */\n onUpdate(valAck) {\n this.props.socket.setState(this.edit.id, { val: valAck.val, ack: valAck.ack, q: valAck.q || 0, expire: valAck.expire || undefined })\n .catch(e => this.showError('Cannot write value: ' + e));\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditObjectDialog() {\n if (!this.state.editObjectDialog || !this.props.objectBrowserEditObject) {\n return null;\n }\n\n const ObjectBrowserEditObject = this.props.objectBrowserEditObject;\n\n return <ObjectBrowserEditObject\n key={this.state.editObjectDialog}\n obj={this.objects[this.state.editObjectDialog]}\n roleArray={this.info.roles}\n objects={this.objects}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n themeName={this.props.themeName}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n t={this.props.t}\n expertMode={this.state.filter.expertMode}\n onNewObject={obj =>\n this.props.socket.setObject(obj._id, obj)\n .then(() => this.setState({ editObjectDialog: obj._id }, () => this.onSelect(obj._id)))\n .catch(e => this.showError('Cannot write object: ' + e))}\n onClose={obj => {\n this.setState({ editObjectDialog: '' });\n if (obj) {\n this.props.socket.setObject(obj._id, obj)\n .catch(e => this.showError('Cannot write object: ' + e));\n }\n }}\n />\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderViewObjectFileDialog() {\n if (!this.state.viewFileDialog || !this.props.objectBrowserViewFile) {\n return null;\n }\n const ObjectBrowserViewFile = this.props.objectBrowserViewFile;\n\n return <ObjectBrowserViewFile\n key=\"viewFile\"\n obj={this.objects[this.state.viewFileDialog]}\n themeType={this.props.themeType}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n t={this.props.t}\n expertMode={this.state.filter.expertMode}\n onClose={() => this.setState({ viewFileDialog: '' })}\n />;\n }\n\n /**\n * @private\n * @returns {JSX.Element | null}\n */\n renderEditValueDialog() {\n if (!this.state.updateOpened || !this.props.objectBrowserValue) {\n return null;\n }\n\n if (!this.edit.id) {\n console.error('Invalid ID for edit: ' + JSON.stringify(this.edit));\n return null;\n }\n\n if (!this.objects[this.edit.id]) {\n console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`);\n return null;\n }\n\n const type = this.objects[this.edit.id].common?.type ?\n this.objects[this.edit.id].common.type : typeof this.edit.val;\n\n const ObjectBrowserValue = this.props.objectBrowserValue;\n\n return <ObjectBrowserValue\n t={this.props.t}\n lang={this.props.lang}\n type={type}\n states={Utils.getStates(this.objects[this.edit.id])}\n themeType={this.props.themeType}\n expertMode={this.state.filter.expertMode}\n value={this.edit.val}\n socket={this.props.socket}\n object={this.objects[this.edit.id]}\n defaultHistory={this.defaultHistory}\n dateFormat={this.props.dateFormat}\n onClose={res => {\n this.setState({ updateOpened: false });\n res && this.onUpdate(res);\n }}\n />;\n }\n\n extendObject = (id, data) =>\n this.props.socket.extendObject(id, data)\n .catch(error => window.alert(error));\n\n setObject = (id, data) =>\n this.props.socket.setObject(id, data)\n .catch(error => window.alert(error));\n\n /**\n * The rendering method of this component.\n * @returns {JSX.Element}\n */\n render() {\n this.recordStates = [];\n this.unsubscribeTimer && clearTimeout(this.unsubscribeTimer);\n\n // apply filter if changed\n const jsonFilter = JSON.stringify(this.state.filter);\n\n if (this.lastAppliedFilter !== jsonFilter && this.objects && this.root) {\n const counter = { count: 0 };\n\n applyFilter(this.root, this.state.filter, this.state.lang, this.objects, null, counter, this.props.customFilter, this.props.types);\n\n if (counter.count < 500 && !this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: true }));\n } else if (counter.count >= 500 && this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: false }));\n }\n\n this.lastAppliedFilter = jsonFilter;\n }\n\n this.unsubscribeTimer = setTimeout(() => {\n this.unsubscribeTimer = null;\n this.checkUnsubscribes();\n }, 200);\n\n if (!this.state.loaded) {\n return <CircularProgress key={this.props.dialogName + '_c'} />;\n } else {\n const classes = this.props.classes;\n const items = this.renderItem(this.root, undefined, classes);\n\n return <TabContainer key={this.props.dialogName}>\n <TabHeader>\n {this.getToolbar()}\n </TabHeader>\n <TabContent>\n {this.renderHeader()}\n <div className={this.props.classes.tableDiv} ref={this.tableRef}>\n {items}\n </div>\n </TabContent>\n {this.renderToast()}\n {this.renderColumnsEditCustomDialog()}\n {this.renderColumnsSelectorDialog()}\n {this.renderCustomDialog()}\n {this.renderEditValueDialog()}\n {this.renderEditObjectDialog()}\n {this.renderViewObjectFileDialog()}\n {this.renderEditRoleDialog()}\n {this.renderEnumDialog()}\n {this.renderErrorDialog()}\n {this.renderExportDialog()}\n {this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this)}\n {this.state.modalEditOfAccess && this.props.modalEditOfAccessControl && this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n </TabContainer>;\n }\n }\n}\n\nObjectBrowser.defaultProps = {\n objectAddBoolean: false,\n objectEditBoolean: false,\n objectStatesView: false,\n objectImportExport: false,\n objectEditOfAccessControl: false,\n modalNewObject: () => { },\n modalEditOfAccessControl: () => { },\n};\n\nObjectBrowser.propTypes = {\n dialogName: PropTypes.string, // where to store settings in localStorage\n classes: PropTypes.object,\n defaultFilters: PropTypes.object,\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array\n ]),\n onSelect: PropTypes.func,\n onFilterChanged: PropTypes.func,\n socket: PropTypes.object,\n showExpertButton: PropTypes.bool,\n expertMode: PropTypes.bool,\n imagePrefix: PropTypes.string,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n theme: PropTypes.object,\n t: PropTypes.func,\n lang: PropTypes.string.isRequired,\n multiSelect: PropTypes.bool,\n notEditable: PropTypes.bool,\n foldersFirst: PropTypes.bool,\n disableColumnSelector: PropTypes.bool,\n isFloatComma: PropTypes.bool,\n dateFormat: PropTypes.string,\n levelPadding: PropTypes.number,\n\n // components\n objectCustomDialog: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func\n ]),\n objectAddBoolean: PropTypes.bool, // optional toolbar button\n objectEditBoolean: PropTypes.bool, // optional toolbar button\n objectStatesView: PropTypes.bool, // optional toolbar button\n objectImportExport: PropTypes.bool, // optional toolbar button\n objectEditOfAccessControl: PropTypes.bool, //Access Control\n modalNewObject: PropTypes.func, // modal add object\n modalEditOfAccessControl: PropTypes.func, //modal Edit Of Access Control\n onObjectDelete: PropTypes.func, // optional function (id, hasChildren, objectExists) { }\n customFilter: PropTypes.object, // optional\n // `{common: {custom: true}}` - show only objects with some custom settings\n // `{common: {custom: 'sql.0'}}` - show only objects with sql.0 custom settings (only of the specific instance)\n // `{common: {custom: '_dataSources'}}` - show only objects of adapters `influxdb' or 'sql' or 'history'\n // `{common: {custom: 'adapterName.'}}` - show only objects of custom settings of specific adapter (all instances)\n // `{type: 'channel'}` - show only channels\n // `{type: ['channel', 'device']}` - show only channels and devices\n // `{common: {type: 'number'}` - show only states of type 'number\n // `{common: {type: ['number', 'string']}` - show only states of type 'number and string\n // `{common: {role: 'switch']}` - show only states with roles starting from switch\n // `{common: {role: ['switch', 'button]}` - show only states with roles starting from `switch` and `button`\n objectBrowserValue: PropTypes.object,\n objectBrowserEditObject: PropTypes.object,\n objectBrowserEditRole: PropTypes.object, // on Edit role\n objectBrowserViewFile: PropTypes.func, // on view file state\n router: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func\n ]),\n types: PropTypes.array, // optional ['state', 'instance', 'channel']\n columns: PropTypes.array, // optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons']\n\n objectsWorker: PropTypes.object, // optional cache of objects\n filterFunc: PropTypes.func, // function to filter out all unnecessary objects. It cannot be used together with \"types\"\n // Example for function: `obj => obj.common && obj.common.type === 'boolean'` to show only boolean states\n\n dragSettings: PropTypes.object,\n DragWrapper: PropTypes.func,\n dragEnabled: PropTypes.bool,\n useDrag: PropTypes.func,\n};\n\n/** @type {typeof ObjectBrowser} */\nconst _export = withWidth()(withStyles(styles)(ObjectBrowser));\nexport default _export;"],"mappings":"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"}