@iobroker/dm-gui-components 7.4.14 → 7.4.15

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.
@@ -27,6 +27,18 @@ function ZigBeeIcon(props) {
27
27
  React.createElement("path", { fill: "currentColor", d: "M32.042,9.792c4.595,1.238,4.88,3.165,5.524,5.048C34.841,17.664,17.35,35.7,17.35,35.7 s10.901,1.177,23.487-1.003c-0.001,0.029-0.002,0.048-0.003,0.076C42.829,31.661,44,27.97,44,24c0-11.046-8.954-20-20-20 c-5.634,0-10.715,2.338-14.35,6.087C15.489,9.124,26.89,8.403,32.042,9.792z" }),
28
28
  React.createElement("path", { fill: "currentColor", d: "M14.724,37.285c-1.982-0.347-4.212-2.131-4.707-5.302c1.437-1.239,19.994-20.507,19.994-20.507 c-7.008-0.424-14.569-0.465-22.237,0.864C5.408,15.625,4,19.644,4,24c0,11.046,8.954,20,20,20c6.173,0,11.689-2.8,15.358-7.195 C35.486,37.33,23.257,38.769,14.724,37.285z" })));
29
29
  }
30
+ function rssiColor(signal, themeType) {
31
+ if (signal < -80) {
32
+ return themeType === 'dark' ? '#ff5c5c' : '#aa0000';
33
+ }
34
+ if (signal < -60) {
35
+ return themeType === 'dark' ? '#fa8547' : '#ae5c00';
36
+ }
37
+ if (signal < -50) {
38
+ return themeType === 'dark' ? '#cdff4f' : '#7b9500';
39
+ }
40
+ return themeType === 'dark' ? '#5cff5c' : '#008500';
41
+ }
30
42
  /**
31
43
  * Device Status component
32
44
  *
@@ -48,15 +60,19 @@ export default function DeviceStatus(props) {
48
60
  }
49
61
  const iconStyleOK = {
50
62
  fill: '#00ac00',
63
+ color: '#00ac00',
51
64
  };
52
65
  const iconStyleNotOK = {
53
66
  fill: '#ff0000',
67
+ color: '#ff0000',
54
68
  };
55
69
  const iconStyleWarning = {
56
70
  fill: '#ff9900',
71
+ color: '#ff9900',
57
72
  };
58
73
  const iconStyleUnknown = {
59
74
  fill: '#8a8a8a',
75
+ color: '#8a8a8a',
60
76
  };
61
77
  let batteryIconTooltip = null;
62
78
  if (typeof status.battery === 'number') {
@@ -143,7 +159,7 @@ export default function DeviceStatus(props) {
143
159
  connectionIcon,
144
160
  status.rssi && (React.createElement(Tooltip, { title: "RSSI", slotProps: { popper: { sx: styles.tooltip } } },
145
161
  React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
146
- React.createElement(NetworkCheckIcon, null),
162
+ React.createElement(NetworkCheckIcon, { style: { color: rssiColor(status.rssi, props.theme.palette.mode) } }),
147
163
  React.createElement("p", { style: { fontSize: 'small', margin: 0 } }, status.rssi)))),
148
164
  typeof status.battery === 'number' && (React.createElement(Tooltip, { title: getTranslation('batteryTooltip'), slotProps: { popper: { sx: styles.tooltip } } },
149
165
  React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceStatus.js","sourceRoot":"./src/","sources":["DeviceStatus.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type CSSProperties, type MouseEvent } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport {\n Link as LinkIcon,\n LinkOff as LinkOffIcon,\n NetworkCheck as NetworkCheckIcon,\n Battery20 as Battery20Icon,\n Battery30 as Battery30Icon,\n Battery50 as Battery50Icon,\n Battery60 as Battery60Icon,\n Battery80 as Battery80Icon,\n Battery90 as Battery90Icon,\n BatteryFull as BatteryFullIcon,\n BatteryAlert as BatteryAlertIcon,\n Warning as WarningIcon,\n BatteryCharging50 as BatteryCharging50Icon,\n Cable as IconConnectionLan,\n Wifi as IconConnectionWifi,\n WifiOff as IconConnectionNoWifi,\n Bluetooth as IconConnectionBluetooth,\n BluetoothDisabled as IconConnectionNoBluetooth,\n} from '@mui/icons-material';\n\nimport type { DeviceStatus, DeviceAction, ActionBase, ConfigConnectionType } from '@iobroker/dm-utils';\nimport { type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport { getTranslation } from './Utils';\nimport Switch from './Switch';\n\nexport const ACTIONS = {\n STATUS: 'status',\n DISABLE: 'disable',\n ENABLE: 'enable',\n};\n\nconst styles: Record<string, React.CSSProperties> = {\n tooltip: {\n pointerEvents: 'none',\n },\n};\n\nexport interface IconProps {\n /** The width in pixels or percentage of the icon. */\n width?: number | string;\n /** The height in pixels or percentage of the icon. */\n height?: number | string;\n /** Click handler. */\n onClick?: (e: MouseEvent) => void;\n /** The class name for the SVG element. */\n className?: string;\n /** Styles for the SVG element. */\n style?: CSSProperties;\n /** The font size of the icon. */\n fontSize?: 'small';\n}\n\nfunction ThreadIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 165 165\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M82.498,0C37.008,0,0,37.008,0,82.496c0,45.181,36.51,81.977,81.573,82.476V82.569l-27.002-0.002 c-8.023,0-14.554,6.53-14.554,14.561c0,8.023,6.531,14.551,14.554,14.551v17.98c-17.939,0-32.534-14.595-32.534-32.531 c0-17.944,14.595-32.543,32.534-32.543l27.002,0.004v-9.096c0-14.932,12.146-27.08,27.075-27.08 c14.932,0,27.082,12.148,27.082,27.08c0,14.931-12.15,27.08-27.082,27.08l-9.097-0.001v80.641 C136.889,155.333,165,122.14,165,82.496C165,37.008,127.99,0,82.498,0z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M117.748,55.493c0-5.016-4.082-9.098-9.1-9.098c-5.015,0-9.097,4.082-9.097,9.098v9.097l9.097,0.001 C113.666,64.591,117.748,60.51,117.748,55.493z\"\n />\n </svg>\n );\n}\n\nfunction ZWaveIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 1073 1068\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M716 1.1C632.9 5.3 549.8 23.7 472 55c-66.4 26.7-132.6 65.5-188.5 110.4-43.8 35.1-85.2 76.7-120.1 120.6C72.4 400.4 16.7 539.8 3.5 686 1.8 705.1-.1 754.7.7 758c.5 2 1 2 49.7 1.8l49.1-.3.7-20c2.4-64.6 13.4-126 33.2-186 80.8-243.9 297-419.9 552.1-449.4 20.2-2.4 44.2-4.1 56.6-4.1h8.9V50 0l-9.7.1c-5.4.1-16.8.6-25.3 1zm-.8 208c-78.5 4.7-158 27.4-226.5 64.5-68.7 37.3-126.4 86.3-175.2 148.9-11 14-33.2 47.3-42.3 63.5-44 77.8-68.6 164.9-70.9 251.2l-.6 22.8h49.5 49.4l1.2-19c6.3-98.7 40-185.8 102.2-263.3 12.7-15.9 41.2-45.2 57-58.7 66.1-56.3 142.1-91.8 226-105.5 18.9-3 44.1-5.5 56.7-5.5h9.3v-50-50l-11.2.1c-6.2.1-17.3.6-24.6 1zm17.8 251c-104.5 9.2-195.2 69.7-243.6 162.4-43.9 84-45.5 184.2-4.5 270 60.3 125.9 198.1 194.2 334.9 166 46.6-9.7 89.5-29.7 127.2-59.6 13.5-10.7 37.3-34.5 48-47.9 34.2-43.1 55.2-92 63.7-148.6 2.2-15.1 2.5-62.7.5-77.4-3.6-25.2-10.1-51.4-17.8-71.2-10.1-26.2-29.4-59.7-47-81.8-9.7-12.1-35-37.2-47.4-47-47.8-37.9-104.5-60.1-165.4-65-14.7-1.1-34.7-1.1-48.6.1zm174.7 138.6c-.3.5-30.9 49.2-68.1 108.3L772 814.5l67.9.5 68 .5-30.1 48.8-30 48.7h-131c-104.4 0-130.9-.3-130.5-1.3.2-.6 32.7-51.1 72.1-112.1L730 687.9c0-.5-29.5-1-66.5-1.1l-66.6-.3 27.7-44.3 27.6-44.2h128l127.5.7z\"\n />\n </svg>\n );\n}\n\nfunction ZigBeeIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 48 48\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M32.042,9.792c4.595,1.238,4.88,3.165,5.524,5.048C34.841,17.664,17.35,35.7,17.35,35.7 s10.901,1.177,23.487-1.003c-0.001,0.029-0.002,0.048-0.003,0.076C42.829,31.661,44,27.97,44,24c0-11.046-8.954-20-20-20 c-5.634,0-10.715,2.338-14.35,6.087C15.489,9.124,26.89,8.403,32.042,9.792z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M14.724,37.285c-1.982-0.347-4.212-2.131-4.707-5.302c1.437-1.239,19.994-20.507,19.994-20.507 c-7.008-0.424-14.569-0.465-22.237,0.864C5.408,15.625,4,19.644,4,24c0,11.046,8.954,20,20,20c6.173,0,11.689-2.8,15.358-7.195 C35.486,37.33,23.257,38.769,14.724,37.285z\"\n />\n </svg>\n );\n}\n\ninterface DeviceStatusProps {\n status: DeviceStatus | null;\n deviceId: string;\n connectionType?: ConfigConnectionType;\n statusAction?: DeviceAction;\n enabled?: boolean;\n disableEnableAction?: DeviceAction;\n deviceHandler: (deviceId: string, action: ActionBase, refresh: () => void) => () => void;\n refresh: () => void;\n theme: IobTheme;\n}\n\n/**\n * Device Status component\n *\n * @param props - Parameters\n * @param props.status - Status object, e.g. { connection: 'connected', battery: 100, rssi: -50 }\n */\nexport default function DeviceStatus(props: DeviceStatusProps): React.JSX.Element | null {\n if (!props.status) {\n return null;\n }\n\n let status: DeviceStatus;\n\n if (typeof props.status === 'string') {\n status = {\n connection: props.status,\n };\n } else {\n status = props.status;\n }\n\n const iconStyleOK = {\n fill: '#00ac00',\n };\n const iconStyleNotOK = {\n fill: '#ff0000',\n };\n const iconStyleWarning = {\n fill: '#ff9900',\n };\n const iconStyleUnknown = {\n fill: '#8a8a8a',\n };\n\n let batteryIconTooltip: React.ReactNode = null;\n if (typeof status.battery === 'number') {\n if (status.battery >= 96 && status.battery <= 100) {\n batteryIconTooltip = <BatteryFullIcon style={iconStyleOK} />;\n } else if (status.battery >= 90 && status.battery <= 95) {\n batteryIconTooltip = <Battery90Icon style={iconStyleOK} />;\n } else if (status.battery >= 80 && status.battery <= 89) {\n batteryIconTooltip = <Battery80Icon style={iconStyleOK} />;\n } else if (status.battery >= 60 && status.battery <= 79) {\n batteryIconTooltip = <Battery60Icon style={iconStyleOK} />;\n } else if (status.battery >= 50 && status.battery <= 59) {\n batteryIconTooltip = <Battery50Icon style={iconStyleOK} />;\n } else if (status.battery >= 30 && status.battery <= 49) {\n batteryIconTooltip = <Battery30Icon style={iconStyleOK} />;\n } else if (status.battery >= 20 && status.battery <= 29) {\n batteryIconTooltip = <Battery20Icon style={iconStyleNotOK} />;\n } else {\n batteryIconTooltip = <BatteryAlertIcon style={iconStyleNotOK} />;\n }\n }\n\n const disability =\n typeof props.enabled === 'boolean' ? (\n <>\n <div style={{ flexGrow: 1 }} />\n {\n <Tooltip\n title={\n props.enabled ? getTranslation('disableIconTooltip') : getTranslation('enableIconTooltip')\n }\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <Switch\n size=\"small\"\n checked={props.enabled}\n disabled={!props.disableEnableAction}\n onChange={() =>\n props.disableEnableAction &&\n props.deviceHandler(props.deviceId, props.disableEnableAction, props.refresh)()\n }\n theme={props.theme}\n />\n </div>\n </Tooltip>\n }\n </>\n ) : null;\n let connectionSymbol: React.JSX.Element | null;\n if (props.connectionType === 'wifi') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionWifi style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionNoWifi style={iconStyleNotOK} />\n ) : (\n <IconConnectionWifi style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'bluetooth') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionBluetooth style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionNoBluetooth style={iconStyleNotOK} />\n ) : (\n <IconConnectionBluetooth style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'lan') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionLan style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionLan style={iconStyleNotOK} />\n ) : (\n <IconConnectionLan style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'thread') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ThreadIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ThreadIcon style={iconStyleNotOK} />\n ) : (\n <ThreadIcon style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'z-wave') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ZWaveIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ZWaveIcon style={iconStyleNotOK} />\n ) : (\n <ZWaveIcon style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'zigbee') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ZigBeeIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ZigBeeIcon style={iconStyleNotOK} />\n ) : (\n <ZigBeeIcon style={iconStyleUnknown} />\n );\n } else {\n connectionSymbol =\n status.connection === 'connected' ? (\n <LinkIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <LinkOffIcon style={iconStyleNotOK} />\n ) : null;\n }\n\n const connectionIcon =\n status.connection === 'connected' || status.connection === 'disconnected' ? (\n <Tooltip\n title={\n (status.connection === 'connected'\n ? getTranslation('connectedIconTooltip')\n : getTranslation('disconnectedIconTooltip')) +\n (props.statusAction\n ? `. ${getTranslation(props.statusAction.description || 'moreInformation')}`\n : '')\n }\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n {props.statusAction ? (\n <IconButton\n onClick={e => {\n if (props.statusAction) {\n e.stopPropagation();\n props.deviceHandler(props.deviceId, props.statusAction, props.refresh)();\n }\n }}\n >\n {connectionSymbol}\n <div style={{ position: 'absolute', top: 0, left: 0, color: 'grey' }}>*</div>\n </IconButton>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {connectionSymbol}\n </div>\n )}\n </Tooltip>\n ) : (\n connectionSymbol\n );\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n cursor: props.statusAction ? 'pointer' : undefined,\n width: props.disableEnableAction ? '100%' : undefined,\n gap: 8,\n }}\n >\n {connectionIcon}\n\n {status.rssi && (\n <Tooltip\n title=\"RSSI\"\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <NetworkCheckIcon />\n <p style={{ fontSize: 'small', margin: 0 }}>{status.rssi}</p>\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'number' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {batteryIconTooltip}\n <p style={{ fontSize: 'small', margin: 0 }}>{status.battery}%</p>\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'string' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {status.battery === 'charging' ? <BatteryCharging50Icon /> : <BatteryFullIcon />}\n {status.battery !== 'charging' ? (\n status.battery.includes('V') || status.battery.includes('mV') ? (\n <p style={{ fontSize: 'small', margin: 0 }}>{status.battery}</p>\n ) : (\n <p style={{ fontSize: 'small', margin: 0 }}>\n <span style={{ marginRight: 4 }}>{status.battery}</span>\n mV\n </p>\n )\n ) : null}\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'boolean' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {status.battery ? (\n <BatteryFullIcon style={iconStyleOK} />\n ) : (\n <BatteryAlertIcon style={iconStyleNotOK} />\n )}\n </div>\n </Tooltip>\n )}\n\n {status.warning ? (\n typeof status.warning === 'string' || typeof status.warning === 'object' ? (\n <Tooltip\n title={getTranslation(status.warning)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <WarningIcon style={iconStyleWarning} />\n </div>\n </Tooltip>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <WarningIcon style={iconStyleWarning} />\n </div>\n )\n ) : null}\n\n {disability}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"DeviceStatus.js","sourceRoot":"./src/","sources":["DeviceStatus.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type CSSProperties, type MouseEvent } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport {\n Link as LinkIcon,\n LinkOff as LinkOffIcon,\n NetworkCheck as NetworkCheckIcon,\n Battery20 as Battery20Icon,\n Battery30 as Battery30Icon,\n Battery50 as Battery50Icon,\n Battery60 as Battery60Icon,\n Battery80 as Battery80Icon,\n Battery90 as Battery90Icon,\n BatteryFull as BatteryFullIcon,\n BatteryAlert as BatteryAlertIcon,\n Warning as WarningIcon,\n BatteryCharging50 as BatteryCharging50Icon,\n Cable as IconConnectionLan,\n Wifi as IconConnectionWifi,\n WifiOff as IconConnectionNoWifi,\n Bluetooth as IconConnectionBluetooth,\n BluetoothDisabled as IconConnectionNoBluetooth,\n} from '@mui/icons-material';\n\nimport type { DeviceStatus, DeviceAction, ActionBase, ConfigConnectionType } from '@iobroker/dm-utils';\nimport { type IobTheme, ThemeType } from '@iobroker/adapter-react-v5';\n\nimport { getTranslation } from './Utils';\nimport Switch from './Switch';\n\nexport const ACTIONS = {\n STATUS: 'status',\n DISABLE: 'disable',\n ENABLE: 'enable',\n};\n\nconst styles: Record<string, React.CSSProperties> = {\n tooltip: {\n pointerEvents: 'none',\n },\n};\n\nexport interface IconProps {\n /** The width in pixels or percentage of the icon. */\n width?: number | string;\n /** The height in pixels or percentage of the icon. */\n height?: number | string;\n /** Click handler. */\n onClick?: (e: MouseEvent) => void;\n /** The class name for the SVG element. */\n className?: string;\n /** Styles for the SVG element. */\n style?: CSSProperties;\n /** The font size of the icon. */\n fontSize?: 'small';\n}\n\nfunction ThreadIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 165 165\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M82.498,0C37.008,0,0,37.008,0,82.496c0,45.181,36.51,81.977,81.573,82.476V82.569l-27.002-0.002 c-8.023,0-14.554,6.53-14.554,14.561c0,8.023,6.531,14.551,14.554,14.551v17.98c-17.939,0-32.534-14.595-32.534-32.531 c0-17.944,14.595-32.543,32.534-32.543l27.002,0.004v-9.096c0-14.932,12.146-27.08,27.075-27.08 c14.932,0,27.082,12.148,27.082,27.08c0,14.931-12.15,27.08-27.082,27.08l-9.097-0.001v80.641 C136.889,155.333,165,122.14,165,82.496C165,37.008,127.99,0,82.498,0z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M117.748,55.493c0-5.016-4.082-9.098-9.1-9.098c-5.015,0-9.097,4.082-9.097,9.098v9.097l9.097,0.001 C113.666,64.591,117.748,60.51,117.748,55.493z\"\n />\n </svg>\n );\n}\n\nfunction ZWaveIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 1073 1068\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M716 1.1C632.9 5.3 549.8 23.7 472 55c-66.4 26.7-132.6 65.5-188.5 110.4-43.8 35.1-85.2 76.7-120.1 120.6C72.4 400.4 16.7 539.8 3.5 686 1.8 705.1-.1 754.7.7 758c.5 2 1 2 49.7 1.8l49.1-.3.7-20c2.4-64.6 13.4-126 33.2-186 80.8-243.9 297-419.9 552.1-449.4 20.2-2.4 44.2-4.1 56.6-4.1h8.9V50 0l-9.7.1c-5.4.1-16.8.6-25.3 1zm-.8 208c-78.5 4.7-158 27.4-226.5 64.5-68.7 37.3-126.4 86.3-175.2 148.9-11 14-33.2 47.3-42.3 63.5-44 77.8-68.6 164.9-70.9 251.2l-.6 22.8h49.5 49.4l1.2-19c6.3-98.7 40-185.8 102.2-263.3 12.7-15.9 41.2-45.2 57-58.7 66.1-56.3 142.1-91.8 226-105.5 18.9-3 44.1-5.5 56.7-5.5h9.3v-50-50l-11.2.1c-6.2.1-17.3.6-24.6 1zm17.8 251c-104.5 9.2-195.2 69.7-243.6 162.4-43.9 84-45.5 184.2-4.5 270 60.3 125.9 198.1 194.2 334.9 166 46.6-9.7 89.5-29.7 127.2-59.6 13.5-10.7 37.3-34.5 48-47.9 34.2-43.1 55.2-92 63.7-148.6 2.2-15.1 2.5-62.7.5-77.4-3.6-25.2-10.1-51.4-17.8-71.2-10.1-26.2-29.4-59.7-47-81.8-9.7-12.1-35-37.2-47.4-47-47.8-37.9-104.5-60.1-165.4-65-14.7-1.1-34.7-1.1-48.6.1zm174.7 138.6c-.3.5-30.9 49.2-68.1 108.3L772 814.5l67.9.5 68 .5-30.1 48.8-30 48.7h-131c-104.4 0-130.9-.3-130.5-1.3.2-.6 32.7-51.1 72.1-112.1L730 687.9c0-.5-29.5-1-66.5-1.1l-66.6-.3 27.7-44.3 27.6-44.2h128l127.5.7z\"\n />\n </svg>\n );\n}\n\nfunction ZigBeeIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={e => props.onClick && props.onClick(e)}\n viewBox=\"0 0 48 48\"\n width={props.width || (props.fontSize === 'small' ? 16 : 20)}\n height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}\n className={props.className}\n style={props.style}\n >\n <path\n fill=\"currentColor\"\n d=\"M32.042,9.792c4.595,1.238,4.88,3.165,5.524,5.048C34.841,17.664,17.35,35.7,17.35,35.7 s10.901,1.177,23.487-1.003c-0.001,0.029-0.002,0.048-0.003,0.076C42.829,31.661,44,27.97,44,24c0-11.046-8.954-20-20-20 c-5.634,0-10.715,2.338-14.35,6.087C15.489,9.124,26.89,8.403,32.042,9.792z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M14.724,37.285c-1.982-0.347-4.212-2.131-4.707-5.302c1.437-1.239,19.994-20.507,19.994-20.507 c-7.008-0.424-14.569-0.465-22.237,0.864C5.408,15.625,4,19.644,4,24c0,11.046,8.954,20,20,20c6.173,0,11.689-2.8,15.358-7.195 C35.486,37.33,23.257,38.769,14.724,37.285z\"\n />\n </svg>\n );\n}\n\ninterface DeviceStatusProps {\n status: DeviceStatus | null;\n deviceId: string;\n connectionType?: ConfigConnectionType;\n statusAction?: DeviceAction;\n enabled?: boolean;\n disableEnableAction?: DeviceAction;\n deviceHandler: (deviceId: string, action: ActionBase, refresh: () => void) => () => void;\n refresh: () => void;\n theme: IobTheme;\n}\n\nfunction rssiColor(signal: number, themeType: ThemeType): string {\n if (signal < -80) {\n return themeType === 'dark' ? '#ff5c5c' : '#aa0000';\n }\n if (signal < -60) {\n return themeType === 'dark' ? '#fa8547' : '#ae5c00';\n }\n if (signal < -50) {\n return themeType === 'dark' ? '#cdff4f' : '#7b9500';\n }\n\n return themeType === 'dark' ? '#5cff5c' : '#008500';\n}\n\n/**\n * Device Status component\n *\n * @param props - Parameters\n * @param props.status - Status object, e.g. { connection: 'connected', battery: 100, rssi: -50 }\n */\nexport default function DeviceStatus(props: DeviceStatusProps): React.JSX.Element | null {\n if (!props.status) {\n return null;\n }\n\n let status: DeviceStatus;\n\n if (typeof props.status === 'string') {\n status = {\n connection: props.status,\n };\n } else {\n status = props.status;\n }\n\n const iconStyleOK = {\n fill: '#00ac00',\n color: '#00ac00',\n };\n const iconStyleNotOK = {\n fill: '#ff0000',\n color: '#ff0000',\n };\n const iconStyleWarning = {\n fill: '#ff9900',\n color: '#ff9900',\n };\n const iconStyleUnknown = {\n fill: '#8a8a8a',\n color: '#8a8a8a',\n };\n\n let batteryIconTooltip: React.ReactNode = null;\n if (typeof status.battery === 'number') {\n if (status.battery >= 96 && status.battery <= 100) {\n batteryIconTooltip = <BatteryFullIcon style={iconStyleOK} />;\n } else if (status.battery >= 90 && status.battery <= 95) {\n batteryIconTooltip = <Battery90Icon style={iconStyleOK} />;\n } else if (status.battery >= 80 && status.battery <= 89) {\n batteryIconTooltip = <Battery80Icon style={iconStyleOK} />;\n } else if (status.battery >= 60 && status.battery <= 79) {\n batteryIconTooltip = <Battery60Icon style={iconStyleOK} />;\n } else if (status.battery >= 50 && status.battery <= 59) {\n batteryIconTooltip = <Battery50Icon style={iconStyleOK} />;\n } else if (status.battery >= 30 && status.battery <= 49) {\n batteryIconTooltip = <Battery30Icon style={iconStyleOK} />;\n } else if (status.battery >= 20 && status.battery <= 29) {\n batteryIconTooltip = <Battery20Icon style={iconStyleNotOK} />;\n } else {\n batteryIconTooltip = <BatteryAlertIcon style={iconStyleNotOK} />;\n }\n }\n\n const disability =\n typeof props.enabled === 'boolean' ? (\n <>\n <div style={{ flexGrow: 1 }} />\n {\n <Tooltip\n title={\n props.enabled ? getTranslation('disableIconTooltip') : getTranslation('enableIconTooltip')\n }\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <Switch\n size=\"small\"\n checked={props.enabled}\n disabled={!props.disableEnableAction}\n onChange={() =>\n props.disableEnableAction &&\n props.deviceHandler(props.deviceId, props.disableEnableAction, props.refresh)()\n }\n theme={props.theme}\n />\n </div>\n </Tooltip>\n }\n </>\n ) : null;\n let connectionSymbol: React.JSX.Element | null;\n if (props.connectionType === 'wifi') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionWifi style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionNoWifi style={iconStyleNotOK} />\n ) : (\n <IconConnectionWifi style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'bluetooth') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionBluetooth style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionNoBluetooth style={iconStyleNotOK} />\n ) : (\n <IconConnectionBluetooth style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'lan') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <IconConnectionLan style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <IconConnectionLan style={iconStyleNotOK} />\n ) : (\n <IconConnectionLan style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'thread') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ThreadIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ThreadIcon style={iconStyleNotOK} />\n ) : (\n <ThreadIcon style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'z-wave') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ZWaveIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ZWaveIcon style={iconStyleNotOK} />\n ) : (\n <ZWaveIcon style={iconStyleUnknown} />\n );\n } else if (props.connectionType === 'zigbee') {\n connectionSymbol =\n status.connection === 'connected' ? (\n <ZigBeeIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <ZigBeeIcon style={iconStyleNotOK} />\n ) : (\n <ZigBeeIcon style={iconStyleUnknown} />\n );\n } else {\n connectionSymbol =\n status.connection === 'connected' ? (\n <LinkIcon style={iconStyleOK} />\n ) : status.connection === 'disconnected' ? (\n <LinkOffIcon style={iconStyleNotOK} />\n ) : null;\n }\n\n const connectionIcon =\n status.connection === 'connected' || status.connection === 'disconnected' ? (\n <Tooltip\n title={\n (status.connection === 'connected'\n ? getTranslation('connectedIconTooltip')\n : getTranslation('disconnectedIconTooltip')) +\n (props.statusAction\n ? `. ${getTranslation(props.statusAction.description || 'moreInformation')}`\n : '')\n }\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n {props.statusAction ? (\n <IconButton\n onClick={e => {\n if (props.statusAction) {\n e.stopPropagation();\n props.deviceHandler(props.deviceId, props.statusAction, props.refresh)();\n }\n }}\n >\n {connectionSymbol}\n <div style={{ position: 'absolute', top: 0, left: 0, color: 'grey' }}>*</div>\n </IconButton>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {connectionSymbol}\n </div>\n )}\n </Tooltip>\n ) : (\n connectionSymbol\n );\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n cursor: props.statusAction ? 'pointer' : undefined,\n width: props.disableEnableAction ? '100%' : undefined,\n gap: 8,\n }}\n >\n {connectionIcon}\n\n {status.rssi && (\n <Tooltip\n title=\"RSSI\"\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <NetworkCheckIcon style={{ color: rssiColor(status.rssi, props.theme.palette.mode) }} />\n <p style={{ fontSize: 'small', margin: 0 }}>{status.rssi}</p>\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'number' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {batteryIconTooltip}\n <p style={{ fontSize: 'small', margin: 0 }}>{status.battery}%</p>\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'string' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {status.battery === 'charging' ? <BatteryCharging50Icon /> : <BatteryFullIcon />}\n {status.battery !== 'charging' ? (\n status.battery.includes('V') || status.battery.includes('mV') ? (\n <p style={{ fontSize: 'small', margin: 0 }}>{status.battery}</p>\n ) : (\n <p style={{ fontSize: 'small', margin: 0 }}>\n <span style={{ marginRight: 4 }}>{status.battery}</span>\n mV\n </p>\n )\n ) : null}\n </div>\n </Tooltip>\n )}\n\n {typeof status.battery === 'boolean' && (\n <Tooltip\n title={getTranslation('batteryTooltip')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n {status.battery ? (\n <BatteryFullIcon style={iconStyleOK} />\n ) : (\n <BatteryAlertIcon style={iconStyleNotOK} />\n )}\n </div>\n </Tooltip>\n )}\n\n {status.warning ? (\n typeof status.warning === 'string' || typeof status.warning === 'object' ? (\n <Tooltip\n title={getTranslation(status.warning)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <WarningIcon style={iconStyleWarning} />\n </div>\n </Tooltip>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n <WarningIcon style={iconStyleWarning} />\n </div>\n )\n ) : null}\n\n {disability}\n </div>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/dm-gui-components",
3
- "version": "7.4.14",
3
+ "version": "7.4.15",
4
4
  "description": "ReactJS components to develop admin interface for ioBroker device manager.",
5
5
  "author": {
6
6
  "name": "Jey Cee",
@@ -48,12 +48,12 @@
48
48
  },
49
49
  "homepage": "https://github.com/ioBroker/dm-gui-components#readme",
50
50
  "dependencies": {
51
- "@iobroker/adapter-react-v5": "7.4.14",
52
- "@iobroker/json-config": "7.4.14"
51
+ "@iobroker/adapter-react-v5": "7.4.15",
52
+ "@iobroker/json-config": "7.4.15"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@craco/craco": "^7.1.0",
56
56
  "@iobroker/dm-utils": "^1.0.6"
57
57
  },
58
- "gitHead": "17feb0c0a017a0e7f010944020d9a8255e0d0726"
58
+ "gitHead": "f03fbf8452636f396acf33277562a4572d629317"
59
59
  }