@iobroker/gui-components 10.3.16 → 10.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -1
- package/build/Components/AnimatedIcons/IconCopyToClipboard.d.ts +25 -0
- package/build/Components/AnimatedIcons/IconCopyToClipboard.js +84 -0
- package/build/Components/AnimatedIcons/IconCopyToClipboard.js.map +1 -0
- package/build/Components/AnimatedIcons/IconFilter.d.ts +23 -0
- package/build/Components/AnimatedIcons/IconFilter.js +26 -0
- package/build/Components/AnimatedIcons/IconFilter.js.map +1 -0
- package/build/Components/AnimatedIcons/IconFolder.d.ts +6 -0
- package/build/Components/AnimatedIcons/IconFolder.js +2 -1
- package/build/Components/AnimatedIcons/IconFolder.js.map +1 -1
- package/build/Components/AnimatedIcons/IconThemeMode.d.ts +22 -0
- package/build/Components/AnimatedIcons/IconThemeMode.js +32 -0
- package/build/Components/AnimatedIcons/IconThemeMode.js.map +1 -0
- package/build/Components/AnimatedIcons/IconUpload.d.ts +24 -0
- package/build/Components/AnimatedIcons/IconUpload.js +37 -0
- package/build/Components/AnimatedIcons/IconUpload.js.map +1 -0
- package/build/Components/AnimatedIcons/common.d.ts +2 -0
- package/build/Components/AnimatedIcons/common.js +64 -5
- package/build/Components/AnimatedIcons/common.js.map +1 -1
- package/build/Components/ColorPicker.js +4 -3
- package/build/Components/ColorPicker.js.map +1 -1
- package/build/Components/FileBrowser.d.ts +6 -0
- package/build/Components/FileBrowser.js +54 -12
- package/build/Components/FileBrowser.js.map +1 -1
- package/build/Components/FileViewer.js +3 -2
- package/build/Components/FileViewer.js.map +1 -1
- package/build/Components/ObjectBrowser/ObjectBrowserClass.d.ts +6 -0
- package/build/Components/ObjectBrowser/ObjectBrowserClass.js +66 -6
- package/build/Components/ObjectBrowser/ObjectBrowserClass.js.map +1 -1
- package/build/Components/ObjectBrowser/contextMenu.js +3 -2
- package/build/Components/ObjectBrowser/contextMenu.js.map +1 -1
- package/build/Components/ObjectBrowser/renderLeaf.js +55 -76
- package/build/Components/ObjectBrowser/renderLeaf.js.map +1 -1
- package/build/Components/ObjectBrowser/rowAnimation.d.ts +25 -1
- package/build/Components/ObjectBrowser/rowAnimation.js +46 -19
- package/build/Components/ObjectBrowser/rowAnimation.js.map +1 -1
- package/build/Components/ObjectBrowser/skeleton.d.ts +15 -0
- package/build/Components/ObjectBrowser/skeleton.js +106 -0
- package/build/Components/ObjectBrowser/skeleton.js.map +1 -0
- package/build/Components/ObjectBrowser/styles.js +16 -11
- package/build/Components/ObjectBrowser/styles.js.map +1 -1
- package/build/Components/ObjectBrowser/toolbar.js +18 -14
- package/build/Components/ObjectBrowser/toolbar.js.map +1 -1
- package/build/Components/ObjectBrowser/utils.d.ts +2 -0
- package/build/Components/ObjectBrowser/utils.js +2 -0
- package/build/Components/ObjectBrowser/utils.js.map +1 -1
- package/build/Components/ToggleThemeMenu.js +11 -8
- package/build/Components/ToggleThemeMenu.js.map +1 -1
- package/build/Components/TreeTable.d.ts +16 -0
- package/build/Components/TreeTable.js +106 -18
- package/build/Components/TreeTable.js.map +1 -1
- package/build/Dialogs/ComplexCron.js +3 -2
- package/build/Dialogs/ComplexCron.js.map +1 -1
- package/build/Dialogs/Error.js +3 -2
- package/build/Dialogs/Error.js.map +1 -1
- package/build/index.d.ts +4 -0
- package/build/index.js +4 -0
- package/build/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import { Badge, Box, IconButton, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip } from '@mui/material';
|
|
10
|
-
import { Add as AddIcon, Build as BuildIcon,
|
|
10
|
+
import { Add as AddIcon, Build as BuildIcon, LooksOne as LooksOneIcon, TextFields as TextFieldsIcon, ViewColumn as IconColumns, ContentPaste, UploadFile, } from '@mui/icons-material';
|
|
11
11
|
import { Utils } from '../Utils';
|
|
12
12
|
import { IconExpertMode } from '../AnimatedIcons/IconExpertMode';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
13
|
+
import { IconFilter } from '../AnimatedIcons/IconFilter';
|
|
14
|
+
import { IconFolder } from '../AnimatedIcons/IconFolder';
|
|
15
|
+
import { IconUpload } from '../AnimatedIcons/IconUpload';
|
|
16
16
|
import { Icon } from '../Icon';
|
|
17
17
|
import { IconRefresh } from '../AnimatedIcons/IconRefresh';
|
|
18
18
|
import { colGrow, colWidth, CustomFilterInput, CustomFilterSelect, getName, getSelectIdIconFromObjects, getVisibleItems, } from './utils';
|
|
@@ -135,10 +135,10 @@ export function getToolbar(that) {
|
|
|
135
135
|
React.createElement(IconColumns, null)))),
|
|
136
136
|
that.width !== 'xs' && that.state.expandAllVisible && (React.createElement(Tooltip, { title: that.props.t('ra_Expand all nodes'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
137
137
|
React.createElement(IconButton, { key: "expandAll", onClick: () => that.onExpandAll(), size: "large" },
|
|
138
|
-
React.createElement(
|
|
138
|
+
React.createElement(IconFolder, { open: false, toggleOnHover: true, fontSize: 20 })))),
|
|
139
139
|
React.createElement(Tooltip, { title: that.props.t('ra_Collapse all nodes'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
140
140
|
React.createElement(IconButton, { key: "collapseAll", onClick: () => that.onCollapseAll(), size: "large" },
|
|
141
|
-
React.createElement(
|
|
141
|
+
React.createElement(IconFolder, { open: true, toggleOnHover: true, fontSize: 20 }))),
|
|
142
142
|
that.width !== 'xs' && (React.createElement(Tooltip, { title: that.props.t('ra_Expand one step node'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
143
143
|
React.createElement(IconButton, { key: "expandVisible", color: "primary", onClick: () => that.onExpandVisible(), size: "large" },
|
|
144
144
|
React.createElement(Badge, { badgeContent: that.state.depth, color: "secondary", sx: (theme) => ({
|
|
@@ -149,7 +149,7 @@ export function getToolbar(that) {
|
|
|
149
149
|
padding: '0 4px',
|
|
150
150
|
},
|
|
151
151
|
}) },
|
|
152
|
-
React.createElement(
|
|
152
|
+
React.createElement(IconFolder, { open: false, toggleOnHover: true, fontSize: 20 }))))),
|
|
153
153
|
that.width !== 'xs' && (React.createElement(Tooltip, { title: that.props.t('ra_Collapse one step node'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
154
154
|
React.createElement(IconButton, { key: "collapseVisible", color: "primary", onClick: () => that.onCollapseVisible(), size: "large" },
|
|
155
155
|
React.createElement(Badge, { sx: (theme) => ({
|
|
@@ -160,7 +160,7 @@ export function getToolbar(that) {
|
|
|
160
160
|
padding: '0 4px',
|
|
161
161
|
},
|
|
162
162
|
}), badgeContent: that.state.depth, color: "secondary" },
|
|
163
|
-
React.createElement(
|
|
163
|
+
React.createElement(IconFolder, { open: true, toggleOnHover: true, fontSize: 20 }))))),
|
|
164
164
|
that.props.objectStatesView && (React.createElement(Tooltip, { title: that.props.t('ra_Toggle the states view'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
165
165
|
React.createElement(IconButton, { onClick: () => that.onStatesViewVisible(), size: "large" },
|
|
166
166
|
React.createElement(LooksOneIcon, { color: that.state.statesView ? 'primary' : 'inherit' })))),
|
|
@@ -187,7 +187,7 @@ export function getToolbar(that) {
|
|
|
187
187
|
that.onOpenFile();
|
|
188
188
|
}
|
|
189
189
|
}, size: "large" },
|
|
190
|
-
React.createElement(
|
|
190
|
+
React.createElement(IconUpload, null)))),
|
|
191
191
|
that.props.objectBrowserInsertJsonObjects ? (React.createElement(Menu, { anchorEl: that.state.showImportMenu, open: !!that.state.showImportMenu, onClose: () => that.setState({ showImportMenu: null }) },
|
|
192
192
|
React.createElement(MenuItem, { onClick: () => that.setState({ showImportMenu: null }, () => that.onOpenFile()) },
|
|
193
193
|
React.createElement(ListItemIcon, null,
|
|
@@ -199,7 +199,7 @@ export function getToolbar(that) {
|
|
|
199
199
|
React.createElement(ListItemText, null, that.props.t('ra_From text'))))) : null,
|
|
200
200
|
that.props.objectImportExport && (!!that.state.selected.length || that.state.selectedNonObject) && (React.createElement(Tooltip, { title: that.props.t('ra_Save objects tree as JSON file'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
201
201
|
React.createElement(IconButton, { onClick: () => that.setState({ showExportDialog: that._getSelectedIdsForExport().length }), size: "large" },
|
|
202
|
-
React.createElement(
|
|
202
|
+
React.createElement(IconUpload, { style: { transform: 'rotate(180deg)' } }))))),
|
|
203
203
|
!!that.props.objectBrowserEditObject && that.width !== 'xs' && (React.createElement("div", { style: { display: 'flex', whiteSpace: 'nowrap' } }, `${that.props.t('ra_Objects')}: ${Object.keys(that.info.objects).length}, ${that.props.t('ra_States')}: ${Object.keys(that.info.objects).filter(el => that.info.objects[el].type === 'state').length}`)),
|
|
204
204
|
that.props.objectEditBoolean && (React.createElement(Tooltip, { title: that.props.t('ra_Edit custom config'), slotProps: { popper: { sx: styles.tooltip } } },
|
|
205
205
|
React.createElement(IconButton, { onClick: () => {
|
|
@@ -227,10 +227,14 @@ export function renderHandleRight(that) {
|
|
|
227
227
|
}
|
|
228
228
|
export function renderHeader(that) {
|
|
229
229
|
let filterClearInValue = null;
|
|
230
|
-
if (!that.columnsVisibility.buttons
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
230
|
+
if (!that.columnsVisibility.buttons) {
|
|
231
|
+
// The button stays in the page without a filter (invisible), so that its cross can jump away
|
|
232
|
+
const filterSet = !that.isFilterEmpty();
|
|
233
|
+
filterClearInValue = (React.createElement(IconButton, { onClick: () => that.clearFilter(), style: {
|
|
234
|
+
...styles.buttonClearFilter,
|
|
235
|
+
...(filterSet ? styles.buttonClearFilterVisible : styles.buttonClearFilterHidden),
|
|
236
|
+
}, title: that.props.t('ra_Clear filter'), size: "large" },
|
|
237
|
+
React.createElement(IconFilter, { active: filterSet })));
|
|
234
238
|
}
|
|
235
239
|
if (that.width === 'xs') {
|
|
236
240
|
return (React.createElement("div", { style: Utils.getStyle(that.props.theme, styles.headerRow) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2026, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n * Part of the object browser, see ./ObjectBrowserClass.tsx\n */\nimport React, { type JSX } from 'react';\nimport { Badge, Box, IconButton, ListItemIcon, ListItemText, Menu, MenuItem, type Theme, Tooltip } from '@mui/material';\nimport {\n Add as AddIcon,\n Build as BuildIcon,\n Close as IconClose,\n LooksOne as LooksOneIcon,\n Publish as PublishIcon,\n TextFields as TextFieldsIcon,\n ViewColumn as IconColumns,\n ContentPaste,\n UploadFile,\n} from '@mui/icons-material';\nimport { Utils } from '../Utils';\nimport { IconExpertMode } from '../AnimatedIcons/IconExpertMode';\nimport { IconClosed } from '../../icons/IconClosed';\nimport { IconOpen } from '../../icons/IconOpen';\nimport { IconClearFilter } from '../../icons/IconClearFilter';\nimport { Icon } from '../Icon';\nimport { IconRefresh } from '../AnimatedIcons/IconRefresh';\nimport {\n colGrow,\n colWidth,\n CustomFilterInput,\n CustomFilterSelect,\n getName,\n getSelectIdIconFromObjects,\n getVisibleItems,\n} from './utils';\nimport type { IobTheme } from '../../types';\nimport { type InputSelectItem } from './types';\nimport { styles } from './styles';\nimport { ITEM_IMAGES } from './constants';\nimport type { ObjectBrowserClass } from './ObjectBrowserClass';\n\nexport function getFilterInput(that: ObjectBrowserClass, name: 'id' | 'name'): JSX.Element {\n return (\n <CustomFilterInput\n key={`${name}_${that.state.filterKey}`}\n styles={that.styles.filterInput}\n name={name}\n texts={that.texts}\n t={that.props.t}\n initialValue={that.state.filter[name]}\n onChange={(name, value) => {\n const filter = { ...that.state.filter };\n if (value === undefined) {\n delete filter[name];\n } else {\n filter[name] = value;\n }\n that.setState({ filter }, () => {\n that.doFilter();\n that.props.onFilterChanged?.(filter);\n });\n }}\n />\n );\n}\n\nexport function getFilterSelect(\n that: ObjectBrowserClass,\n name: 'room' | 'func' | 'type' | 'custom' | 'role',\n values?: (string | InputSelectItem)[],\n): JSX.Element {\n return (\n <CustomFilterSelect\n key={`${name}_${that.state.filterKey}`}\n name={name}\n texts={that.texts}\n initialValue={that.state.filter[name] || []}\n values={values || []}\n onChange={(name, value) => {\n const filter = { ...that.state.filter };\n if (value === undefined) {\n delete filter[name];\n } else {\n filter[name] = value;\n }\n that.setState({ filter }, () => {\n that.doFilter();\n that.props.onFilterChanged?.(filter);\n });\n }}\n />\n );\n}\n\nexport function getFilterSelectRole(that: ObjectBrowserClass): JSX.Element {\n return getFilterSelect(\n that,\n 'role',\n that.info.roles.map(it => it.role),\n );\n}\n\nexport function getFilterSelectRoom(that: ObjectBrowserClass): JSX.Element {\n const rooms: InputSelectItem[] = that.info.roomEnums.map(\n id =>\n ({\n name: getName(that.objects[id]?.common?.name, that.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={that.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return getFilterSelect(that, 'room', rooms);\n}\n\nexport function getFilterSelectFunction(that: ObjectBrowserClass): JSX.Element {\n const func: InputSelectItem[] = that.info.funcEnums.map(\n id =>\n ({\n name: getName(that.objects[id]?.common?.name, that.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={that.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return getFilterSelect(that, 'func', func);\n}\n\nexport function getFilterSelectType(that: ObjectBrowserClass): JSX.Element {\n const types = that.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type] || null,\n }));\n\n return getFilterSelect(that, 'type', types);\n}\n\nexport function getFilterSelectCustoms(that: ObjectBrowserClass): JSX.Element | null {\n if (that.info.customs.length > 1) {\n const customs = that.info.customs.map(id => ({\n name: id === '_' ? that.texts.filterCustomsWithout : id,\n value: id,\n icon:\n id === '_' ? null : (\n <Icon\n src={getSelectIdIconFromObjects(that.objects, id, that.props.lang, that.imagePrefix) || ''}\n style={styles.selectIcon}\n />\n ),\n }));\n return getFilterSelect(that, 'custom', customs);\n }\n return null;\n}\n\n/**\n * Renders the toolbar.\n */\nexport function getToolbar(that: ObjectBrowserClass): JSX.Element {\n let allowObjectCreation = false;\n if (that.state.selected.length || that.state.selectedNonObject) {\n const id = that.state.selected[0] || that.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (that.objects[id] && that.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else if (that.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n\n return (\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n overflowX: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Tooltip\n title={that.props.t('ra_Refresh tree')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n onClick={() => that.refreshComponent()}\n disabled={that.state.updating}\n size=\"large\"\n >\n <IconRefresh loading={!!that.state.updating} />\n </IconButton>\n </div>\n </Tooltip>\n {that.props.showExpertButton && !that.props.expertMode && (\n <Tooltip\n title={that.props.t('ra_expertMode')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expertMode\"\n sx={(theme: IobTheme) => ({\n color: that.state.filter.expertMode ? theme.palette.expert : undefined,\n })}\n onClick={() => {\n const filter = { ...that.state.filter };\n filter.expertMode = !filter.expertMode;\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.objectFilter`,\n JSON.stringify(filter),\n );\n\n that.setState({\n filter,\n });\n }}\n size=\"large\"\n >\n <IconExpertMode active={!!that.state.filter.expertMode} />\n </IconButton>\n </Tooltip>\n )}\n {!that.props.disableColumnSelector && that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Configure')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"columnSelector\"\n color={that.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => that.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n )}\n {that.width !== 'xs' && that.state.expandAllVisible && (\n <Tooltip\n title={that.props.t('ra_Expand all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandAll\"\n onClick={() => that.onExpandAll()}\n size=\"large\"\n >\n <IconOpen />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip\n title={that.props.t('ra_Collapse all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseAll\"\n onClick={() => that.onCollapseAll()}\n size=\"large\"\n >\n <IconClosed />\n </IconButton>\n </Tooltip>\n {that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Expand one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => that.onExpandVisible()}\n size=\"large\"\n >\n <Badge\n badgeContent={that.state.depth}\n color=\"secondary\"\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n >\n <IconOpen />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Collapse one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => that.onCollapseVisible()}\n size=\"large\"\n >\n <Badge\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n badgeContent={that.state.depth}\n color=\"secondary\"\n >\n <IconClosed />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {that.props.objectStatesView && (\n <Tooltip\n title={that.props.t('ra_Toggle the states view')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => that.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={that.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n )}\n\n <Tooltip\n title={that.props.t('ra_Show/Hide object descriptions')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.desc`,\n that.state.showDescription ? 'false' : 'true',\n );\n that.setState({ showDescription: !that.state.showDescription });\n }}\n size=\"large\"\n >\n <TextFieldsIcon color={that.state.showDescription ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n\n {that.props.objectAddBoolean ? (\n <Tooltip\n title={that.toolTipObjectCreating()}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() =>\n that.setState({\n modalNewObj: {\n id: that.state.selected[0] || that.state.selectedNonObject,\n },\n })\n }\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n ) : null}\n\n {that.props.objectImportExport && (\n <Tooltip\n title={that.props.t('ra_Add objects tree from JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={e => {\n if (that.props.objectBrowserInsertJsonObjects) {\n that.setState({ showImportMenu: e.currentTarget });\n } else {\n that.onOpenFile();\n }\n }}\n size=\"large\"\n >\n <PublishIcon />\n </IconButton>\n </Tooltip>\n )}\n {that.props.objectBrowserInsertJsonObjects ? (\n <Menu\n anchorEl={that.state.showImportMenu}\n open={!!that.state.showImportMenu}\n onClose={() => that.setState({ showImportMenu: null })}\n >\n <MenuItem onClick={() => that.setState({ showImportMenu: null }, () => that.onOpenFile())}>\n <ListItemIcon>\n <UploadFile />\n </ListItemIcon>\n <ListItemText>{that.props.t('ra_From file')}</ListItemText>\n </MenuItem>\n <MenuItem onClick={() => that.setState({ showImportMenu: null, showImportDialog: true })}>\n <ListItemIcon>\n <ContentPaste />\n </ListItemIcon>\n <ListItemText>{that.props.t('ra_From text')}</ListItemText>\n </MenuItem>\n </Menu>\n ) : null}\n {that.props.objectImportExport && (!!that.state.selected.length || that.state.selectedNonObject) && (\n <Tooltip\n title={that.props.t('ra_Save objects tree as JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => that.setState({ showExportDialog: that._getSelectedIdsForExport().length })}\n size=\"large\"\n >\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n {!!that.props.objectBrowserEditObject && that.width !== 'xs' && (\n <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${that.props.t('ra_Objects')}: ${Object.keys(that.info.objects).length}, ${that.props.t(\n 'ra_States',\n )}: ${Object.keys(that.info.objects).filter(el => that.info.objects[el].type === 'state').length}`}\n </div>\n )}\n {that.props.objectEditBoolean && (\n <Tooltip\n title={that.props.t('ra_Edit custom config')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = that.root ? getVisibleItems(that.root, 'state', that.objects) : [];\n\n if (ids.length) {\n that.pauseSubscribe(true);\n\n if (ids.length === 1) {\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.objectSelected`,\n that.state.selected[0],\n );\n that.props.router?.doNavigate(null, 'custom', that.state.selected[0]);\n }\n that.setState({ customDialog: ids, customDialogAll: true });\n } else {\n that.setState({ toast: that.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/**\n * Render the right handle for resizing\n */\nexport function renderHandleRight(that: ObjectBrowserClass): JSX.Element {\n return (\n <Box\n component=\"div\"\n className=\"iob-ob-resize-handler\"\n sx={{ ...styles.resizeHandle, ...styles.resizeHandleRight }}\n onMouseDown={that.resizerMouseDown}\n onDoubleClick={that.resizerReset}\n title={that.props.t('ra_Double click to reset table layout')}\n />\n );\n}\n\nexport function renderHeader(that: ObjectBrowserClass): JSX.Element {\n let filterClearInValue = null;\n\n if (!that.columnsVisibility.buttons && !that.isFilterEmpty()) {\n filterClearInValue = (\n <IconButton\n onClick={() => that.clearFilter()}\n style={styles.buttonClearFilter}\n title={that.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconClearFilter />\n <IconClose style={styles.buttonClearFilterIcon} />\n </IconButton>\n );\n }\n\n if (that.width === 'xs') {\n return (\n <div style={Utils.getStyle(that.props.theme, styles.headerRow)}>\n <div style={{ ...styles.headerCell, width: '100%' }}>{getFilterInput(that, 'id')}</div>\n </div>\n );\n }\n\n return (\n <div style={Utils.getStyle(that.props.theme, styles.headerRow)}>\n <div\n style={{ ...styles.headerCell, width: colWidth('id'), flexGrow: colGrow('id'), position: 'relative' }}\n data-min={240}\n data-name=\"id\"\n >\n {getFilterInput(that, 'id')}\n {renderHandleRight(that)}\n </div>\n {that.columnsVisibility.name ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('name'),\n flexGrow: colGrow('name'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"name\"\n >\n {getFilterInput(that, 'name')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {!that.state.statesView && (\n <>\n {that.columnsVisibility.type ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('type'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"type\"\n >\n {getFilterSelectType(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.role ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('role'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"role\"\n >\n {getFilterSelectRole(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.room ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('room'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"room\"\n >\n {getFilterSelectRoom(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.func ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('func'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"func\"\n >\n {getFilterSelectFunction(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n </>\n )}\n {that.state.statesView && (\n <>\n {/* Every one of these columns can be switched off in the configuration dialog,\n so the header must ask for it just like the columns of the normal view do. */}\n {that.columnsVisibility.changedFrom ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('changedFrom'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"changedFrom\"\n >\n {that.props.t('ra_Changed from')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.qualityCode ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('qualityCode'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"qualityCode\"\n >\n {that.props.t('ra_Quality code')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.timestamp ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('timestamp'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"timestamp\"\n >\n {that.props.t('ra_Timestamp')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.lastChange ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('lastChange'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"lastChange\"\n >\n {that.props.t('ra_Last change')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n </>\n )}\n {that.adapterColumns.map(item => (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: (that.columnsVisibility as Record<string, number | string>)[item.id],\n }}\n title={item.adapter}\n key={item.id}\n data-min={100}\n data-name={item.id}\n >\n {item.name}\n </div>\n ))}\n {that.columnsVisibility.val ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('val'),\n position: 'relative',\n }}\n data-min={120}\n data-name=\"val\"\n >\n {that.props.t('ra_Value')}\n {filterClearInValue}\n {/* A handle takes the place from the column that follows, so it is only useful\n if there is one. It is the only way to resize the buttons column. */}\n {that.columnsVisibility.buttons ? renderHandleRight(that) : null}\n </div>\n ) : null}\n {that.columnsVisibility.buttons ? (\n <div\n title={that.texts.filter_custom}\n style={{ ...styles.headerCell, width: colWidth('buttons') }}\n data-min={80}\n data-name=\"buttons\"\n >\n {' '}\n {getFilterSelectCustoms(that)}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"toolbar.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2026, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n * Part of the object browser, see ./ObjectBrowserClass.tsx\n */\nimport React, { type JSX } from 'react';\nimport { Badge, Box, IconButton, ListItemIcon, ListItemText, Menu, MenuItem, type Theme, Tooltip } from '@mui/material';\nimport {\n Add as AddIcon,\n Build as BuildIcon,\n LooksOne as LooksOneIcon,\n TextFields as TextFieldsIcon,\n ViewColumn as IconColumns,\n ContentPaste,\n UploadFile,\n} from '@mui/icons-material';\nimport { Utils } from '../Utils';\nimport { IconExpertMode } from '../AnimatedIcons/IconExpertMode';\nimport { IconFilter } from '../AnimatedIcons/IconFilter';\nimport { IconFolder } from '../AnimatedIcons/IconFolder';\nimport { IconUpload } from '../AnimatedIcons/IconUpload';\nimport { Icon } from '../Icon';\nimport { IconRefresh } from '../AnimatedIcons/IconRefresh';\nimport {\n colGrow,\n colWidth,\n CustomFilterInput,\n CustomFilterSelect,\n getName,\n getSelectIdIconFromObjects,\n getVisibleItems,\n} from './utils';\nimport type { IobTheme } from '../../types';\nimport { type InputSelectItem } from './types';\nimport { styles } from './styles';\nimport { ITEM_IMAGES } from './constants';\nimport type { ObjectBrowserClass } from './ObjectBrowserClass';\n\nexport function getFilterInput(that: ObjectBrowserClass, name: 'id' | 'name'): JSX.Element {\n return (\n <CustomFilterInput\n key={`${name}_${that.state.filterKey}`}\n styles={that.styles.filterInput}\n name={name}\n texts={that.texts}\n t={that.props.t}\n initialValue={that.state.filter[name]}\n onChange={(name, value) => {\n const filter = { ...that.state.filter };\n if (value === undefined) {\n delete filter[name];\n } else {\n filter[name] = value;\n }\n that.setState({ filter }, () => {\n that.doFilter();\n that.props.onFilterChanged?.(filter);\n });\n }}\n />\n );\n}\n\nexport function getFilterSelect(\n that: ObjectBrowserClass,\n name: 'room' | 'func' | 'type' | 'custom' | 'role',\n values?: (string | InputSelectItem)[],\n): JSX.Element {\n return (\n <CustomFilterSelect\n key={`${name}_${that.state.filterKey}`}\n name={name}\n texts={that.texts}\n initialValue={that.state.filter[name] || []}\n values={values || []}\n onChange={(name, value) => {\n const filter = { ...that.state.filter };\n if (value === undefined) {\n delete filter[name];\n } else {\n filter[name] = value;\n }\n that.setState({ filter }, () => {\n that.doFilter();\n that.props.onFilterChanged?.(filter);\n });\n }}\n />\n );\n}\n\nexport function getFilterSelectRole(that: ObjectBrowserClass): JSX.Element {\n return getFilterSelect(\n that,\n 'role',\n that.info.roles.map(it => it.role),\n );\n}\n\nexport function getFilterSelectRoom(that: ObjectBrowserClass): JSX.Element {\n const rooms: InputSelectItem[] = that.info.roomEnums.map(\n id =>\n ({\n name: getName(that.objects[id]?.common?.name, that.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={that.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return getFilterSelect(that, 'room', rooms);\n}\n\nexport function getFilterSelectFunction(that: ObjectBrowserClass): JSX.Element {\n const func: InputSelectItem[] = that.info.funcEnums.map(\n id =>\n ({\n name: getName(that.objects[id]?.common?.name, that.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={that.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return getFilterSelect(that, 'func', func);\n}\n\nexport function getFilterSelectType(that: ObjectBrowserClass): JSX.Element {\n const types = that.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type] || null,\n }));\n\n return getFilterSelect(that, 'type', types);\n}\n\nexport function getFilterSelectCustoms(that: ObjectBrowserClass): JSX.Element | null {\n if (that.info.customs.length > 1) {\n const customs = that.info.customs.map(id => ({\n name: id === '_' ? that.texts.filterCustomsWithout : id,\n value: id,\n icon:\n id === '_' ? null : (\n <Icon\n src={getSelectIdIconFromObjects(that.objects, id, that.props.lang, that.imagePrefix) || ''}\n style={styles.selectIcon}\n />\n ),\n }));\n return getFilterSelect(that, 'custom', customs);\n }\n return null;\n}\n\n/**\n * Renders the toolbar.\n */\nexport function getToolbar(that: ObjectBrowserClass): JSX.Element {\n let allowObjectCreation = false;\n if (that.state.selected.length || that.state.selectedNonObject) {\n const id = that.state.selected[0] || that.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (that.objects[id] && that.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else if (that.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n\n return (\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n overflowX: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Tooltip\n title={that.props.t('ra_Refresh tree')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n onClick={() => that.refreshComponent()}\n disabled={that.state.updating}\n size=\"large\"\n >\n <IconRefresh loading={!!that.state.updating} />\n </IconButton>\n </div>\n </Tooltip>\n {that.props.showExpertButton && !that.props.expertMode && (\n <Tooltip\n title={that.props.t('ra_expertMode')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expertMode\"\n sx={(theme: IobTheme) => ({\n color: that.state.filter.expertMode ? theme.palette.expert : undefined,\n })}\n onClick={() => {\n const filter = { ...that.state.filter };\n filter.expertMode = !filter.expertMode;\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.objectFilter`,\n JSON.stringify(filter),\n );\n\n that.setState({\n filter,\n });\n }}\n size=\"large\"\n >\n <IconExpertMode active={!!that.state.filter.expertMode} />\n </IconButton>\n </Tooltip>\n )}\n {!that.props.disableColumnSelector && that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Configure')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"columnSelector\"\n color={that.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => that.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n )}\n {that.width !== 'xs' && that.state.expandAllVisible && (\n <Tooltip\n title={that.props.t('ra_Expand all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandAll\"\n onClick={() => that.onExpandAll()}\n size=\"large\"\n >\n {/* the folder opens on hover: it shows what the button does */}\n <IconFolder\n open={false}\n toggleOnHover\n fontSize={20}\n />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip\n title={that.props.t('ra_Collapse all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseAll\"\n onClick={() => that.onCollapseAll()}\n size=\"large\"\n >\n <IconFolder\n open\n toggleOnHover\n fontSize={20}\n />\n </IconButton>\n </Tooltip>\n {that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Expand one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => that.onExpandVisible()}\n size=\"large\"\n >\n <Badge\n badgeContent={that.state.depth}\n color=\"secondary\"\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n >\n <IconFolder\n open={false}\n toggleOnHover\n fontSize={20}\n />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {that.width !== 'xs' && (\n <Tooltip\n title={that.props.t('ra_Collapse one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => that.onCollapseVisible()}\n size=\"large\"\n >\n <Badge\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n badgeContent={that.state.depth}\n color=\"secondary\"\n >\n <IconFolder\n open\n toggleOnHover\n fontSize={20}\n />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {that.props.objectStatesView && (\n <Tooltip\n title={that.props.t('ra_Toggle the states view')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => that.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={that.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n )}\n\n <Tooltip\n title={that.props.t('ra_Show/Hide object descriptions')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.desc`,\n that.state.showDescription ? 'false' : 'true',\n );\n that.setState({ showDescription: !that.state.showDescription });\n }}\n size=\"large\"\n >\n <TextFieldsIcon color={that.state.showDescription ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n\n {that.props.objectAddBoolean ? (\n <Tooltip\n title={that.toolTipObjectCreating()}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() =>\n that.setState({\n modalNewObj: {\n id: that.state.selected[0] || that.state.selectedNonObject,\n },\n })\n }\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n ) : null}\n\n {that.props.objectImportExport && (\n <Tooltip\n title={that.props.t('ra_Add objects tree from JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={e => {\n if (that.props.objectBrowserInsertJsonObjects) {\n that.setState({ showImportMenu: e.currentTarget });\n } else {\n that.onOpenFile();\n }\n }}\n size=\"large\"\n >\n <IconUpload />\n </IconButton>\n </Tooltip>\n )}\n {that.props.objectBrowserInsertJsonObjects ? (\n <Menu\n anchorEl={that.state.showImportMenu}\n open={!!that.state.showImportMenu}\n onClose={() => that.setState({ showImportMenu: null })}\n >\n <MenuItem onClick={() => that.setState({ showImportMenu: null }, () => that.onOpenFile())}>\n <ListItemIcon>\n <UploadFile />\n </ListItemIcon>\n <ListItemText>{that.props.t('ra_From file')}</ListItemText>\n </MenuItem>\n <MenuItem onClick={() => that.setState({ showImportMenu: null, showImportDialog: true })}>\n <ListItemIcon>\n <ContentPaste />\n </ListItemIcon>\n <ListItemText>{that.props.t('ra_From text')}</ListItemText>\n </MenuItem>\n </Menu>\n ) : null}\n {that.props.objectImportExport && (!!that.state.selected.length || that.state.selectedNonObject) && (\n <Tooltip\n title={that.props.t('ra_Save objects tree as JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => that.setState({ showExportDialog: that._getSelectedIdsForExport().length })}\n size=\"large\"\n >\n {/* turned: the arrow goes down into the bar on hover */}\n <IconUpload style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n {!!that.props.objectBrowserEditObject && that.width !== 'xs' && (\n <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${that.props.t('ra_Objects')}: ${Object.keys(that.info.objects).length}, ${that.props.t(\n 'ra_States',\n )}: ${Object.keys(that.info.objects).filter(el => that.info.objects[el].type === 'state').length}`}\n </div>\n )}\n {that.props.objectEditBoolean && (\n <Tooltip\n title={that.props.t('ra_Edit custom config')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = that.root ? getVisibleItems(that.root, 'state', that.objects) : [];\n\n if (ids.length) {\n that.pauseSubscribe(true);\n\n if (ids.length === 1) {\n that.localStorage.setItem(\n `${that.props.dialogName || 'App'}.objectSelected`,\n that.state.selected[0],\n );\n that.props.router?.doNavigate(null, 'custom', that.state.selected[0]);\n }\n that.setState({ customDialog: ids, customDialogAll: true });\n } else {\n that.setState({ toast: that.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/**\n * Render the right handle for resizing\n */\nexport function renderHandleRight(that: ObjectBrowserClass): JSX.Element {\n return (\n <Box\n component=\"div\"\n className=\"iob-ob-resize-handler\"\n sx={{ ...styles.resizeHandle, ...styles.resizeHandleRight }}\n onMouseDown={that.resizerMouseDown}\n onDoubleClick={that.resizerReset}\n title={that.props.t('ra_Double click to reset table layout')}\n />\n );\n}\n\nexport function renderHeader(that: ObjectBrowserClass): JSX.Element {\n let filterClearInValue = null;\n\n if (!that.columnsVisibility.buttons) {\n // The button stays in the page without a filter (invisible), so that its cross can jump away\n const filterSet = !that.isFilterEmpty();\n filterClearInValue = (\n <IconButton\n onClick={() => that.clearFilter()}\n style={{\n ...styles.buttonClearFilter,\n ...(filterSet ? styles.buttonClearFilterVisible : styles.buttonClearFilterHidden),\n }}\n title={that.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconFilter active={filterSet} />\n </IconButton>\n );\n }\n\n if (that.width === 'xs') {\n return (\n <div style={Utils.getStyle(that.props.theme, styles.headerRow)}>\n <div style={{ ...styles.headerCell, width: '100%' }}>{getFilterInput(that, 'id')}</div>\n </div>\n );\n }\n\n return (\n <div style={Utils.getStyle(that.props.theme, styles.headerRow)}>\n <div\n style={{ ...styles.headerCell, width: colWidth('id'), flexGrow: colGrow('id'), position: 'relative' }}\n data-min={240}\n data-name=\"id\"\n >\n {getFilterInput(that, 'id')}\n {renderHandleRight(that)}\n </div>\n {that.columnsVisibility.name ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('name'),\n flexGrow: colGrow('name'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"name\"\n >\n {getFilterInput(that, 'name')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {!that.state.statesView && (\n <>\n {that.columnsVisibility.type ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('type'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"type\"\n >\n {getFilterSelectType(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.role ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('role'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"role\"\n >\n {getFilterSelectRole(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.room ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('room'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"room\"\n >\n {getFilterSelectRoom(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.func ? (\n <div\n style={{\n ...styles.headerCell,\n width: colWidth('func'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"func\"\n >\n {getFilterSelectFunction(that)}\n {renderHandleRight(that)}\n </div>\n ) : null}\n </>\n )}\n {that.state.statesView && (\n <>\n {/* Every one of these columns can be switched off in the configuration dialog,\n so the header must ask for it just like the columns of the normal view do. */}\n {that.columnsVisibility.changedFrom ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('changedFrom'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"changedFrom\"\n >\n {that.props.t('ra_Changed from')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.qualityCode ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('qualityCode'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"qualityCode\"\n >\n {that.props.t('ra_Quality code')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.timestamp ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('timestamp'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"timestamp\"\n >\n {that.props.t('ra_Timestamp')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n {that.columnsVisibility.lastChange ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('lastChange'),\n position: 'relative',\n }}\n data-min={100}\n data-name=\"lastChange\"\n >\n {that.props.t('ra_Last change')}\n {renderHandleRight(that)}\n </div>\n ) : null}\n </>\n )}\n {that.adapterColumns.map(item => (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: (that.columnsVisibility as Record<string, number | string>)[item.id],\n }}\n title={item.adapter}\n key={item.id}\n data-min={100}\n data-name={item.id}\n >\n {item.name}\n </div>\n ))}\n {that.columnsVisibility.val ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: colWidth('val'),\n position: 'relative',\n }}\n data-min={120}\n data-name=\"val\"\n >\n {that.props.t('ra_Value')}\n {filterClearInValue}\n {/* A handle takes the place from the column that follows, so it is only useful\n if there is one. It is the only way to resize the buttons column. */}\n {that.columnsVisibility.buttons ? renderHandleRight(that) : null}\n </div>\n ) : null}\n {that.columnsVisibility.buttons ? (\n <div\n title={that.texts.filter_custom}\n style={{ ...styles.headerCell, width: colWidth('buttons') }}\n data-min={80}\n data-name=\"buttons\"\n >\n {' '}\n {getFilterSelectCustoms(that)}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -16,6 +16,8 @@ export declare const ICON_SIZE = 24;
|
|
|
16
16
|
export declare const ROW_HEIGHT = 32;
|
|
17
17
|
/** How long the arrow next to a changed number is shown (ms) */
|
|
18
18
|
export declare const TREND_DURATION = 3000;
|
|
19
|
+
/** How long the check mark is shown, when a command (ack=false) was confirmed (ack=true) (ms) */
|
|
20
|
+
export declare const ACK_DURATION = 1800;
|
|
19
21
|
export declare const COLOR_NAME_USERDATA: (themeType: ThemeType) => string;
|
|
20
22
|
export declare const COLOR_NAME_ALIAS: (themeType: ThemeType) => string;
|
|
21
23
|
export declare const COLOR_NAME_JAVASCRIPT: (themeType: ThemeType) => string;
|
|
@@ -24,6 +24,8 @@ export const ICON_SIZE = 24;
|
|
|
24
24
|
export const ROW_HEIGHT = 32;
|
|
25
25
|
/** How long the arrow next to a changed number is shown (ms) */
|
|
26
26
|
export const TREND_DURATION = 3000;
|
|
27
|
+
/** How long the check mark is shown, when a command (ack=false) was confirmed (ack=true) (ms) */
|
|
28
|
+
export const ACK_DURATION = 1800;
|
|
27
29
|
export const COLOR_NAME_USERDATA = (themeType) => (themeType === 'dark' ? '#62ff25' : '#37c400');
|
|
28
30
|
export const COLOR_NAME_ALIAS = (themeType) => (themeType === 'dark' ? '#ee56ff' : '#a204b4');
|
|
29
31
|
export const COLOR_NAME_JAVASCRIPT = (themeType) => (themeType === 'dark' ? '#fff46e' : '#b89101');
|