@iobroker/dm-gui-components 0.1.0 → 6.13.7

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.
Files changed (59) hide show
  1. package/README.md +1 -1
  2. package/build/Communication.js +247 -0
  3. package/build/Communication.js.map +1 -0
  4. package/build/DeviceActionButton.js +10 -0
  5. package/build/DeviceActionButton.js.map +1 -0
  6. package/build/DeviceCard.js +307 -0
  7. package/build/DeviceCard.js.map +1 -0
  8. package/build/DeviceControl.js +119 -0
  9. package/build/DeviceControl.js.map +1 -0
  10. package/{DeviceImageUpload.js → build/DeviceImageUpload.js} +5 -9
  11. package/build/DeviceImageUpload.js.map +1 -0
  12. package/build/DeviceList.js +235 -0
  13. package/build/DeviceList.js.map +1 -0
  14. package/build/DeviceStatus.js +106 -0
  15. package/build/DeviceStatus.js.map +1 -0
  16. package/build/InstanceActionButton.js +11 -0
  17. package/build/InstanceActionButton.js.map +1 -0
  18. package/{JsonConfig.js → build/JsonConfig.js} +10 -33
  19. package/build/JsonConfig.js.map +1 -0
  20. package/build/TooltipButton.js +17 -0
  21. package/build/TooltipButton.js.map +1 -0
  22. package/build/Utils.js +149 -0
  23. package/build/Utils.js.map +1 -0
  24. package/build/index.js +3 -0
  25. package/build/index.js.map +1 -0
  26. package/package.json +14 -16
  27. package/Communication.js +0 -268
  28. package/DeviceActionButton.js +0 -15
  29. package/DeviceCard.js +0 -338
  30. package/DeviceControl.js +0 -146
  31. package/DeviceList.js +0 -226
  32. package/DeviceStatus.js +0 -111
  33. package/InstanceActionButton.js +0 -16
  34. package/TooltipButton.js +0 -22
  35. package/Utils.js +0 -157
  36. package/index.js +0 -7
  37. package/{Communication.d.ts → build/Communication.d.ts} +0 -0
  38. package/{DeviceActionButton.d.ts → build/DeviceActionButton.d.ts} +0 -0
  39. package/{DeviceCard.d.ts → build/DeviceCard.d.ts} +0 -0
  40. package/{DeviceControl.d.ts → build/DeviceControl.d.ts} +0 -0
  41. package/{DeviceImageUpload.d.ts → build/DeviceImageUpload.d.ts} +0 -0
  42. package/{DeviceList.d.ts → build/DeviceList.d.ts} +0 -0
  43. package/{DeviceStatus.d.ts → build/DeviceStatus.d.ts} +0 -0
  44. package/{InstanceActionButton.d.ts → build/InstanceActionButton.d.ts} +0 -0
  45. package/{JsonConfig.d.ts → build/JsonConfig.d.ts} +0 -0
  46. package/{TooltipButton.d.ts → build/TooltipButton.d.ts} +0 -0
  47. package/{Utils.d.ts → build/Utils.d.ts} +0 -0
  48. package/{i18n → build/i18n}/de.json +0 -0
  49. package/{i18n → build/i18n}/en.json +0 -0
  50. package/{i18n → build/i18n}/es.json +0 -0
  51. package/{i18n → build/i18n}/fr.json +0 -0
  52. package/{i18n → build/i18n}/it.json +0 -0
  53. package/{i18n → build/i18n}/nl.json +0 -0
  54. package/{i18n → build/i18n}/pl.json +0 -0
  55. package/{i18n → build/i18n}/pt.json +0 -0
  56. package/{i18n → build/i18n}/ru.json +0 -0
  57. package/{i18n → build/i18n}/uk.json +0 -0
  58. package/{i18n → build/i18n}/zh-cn.json +0 -0
  59. package/{index.d.ts → build/index.d.ts} +1 -1
@@ -0,0 +1,119 @@
1
+ import React, { Component } from 'react';
2
+ import { Button, Fab, Switch, } from '@mui/material';
3
+ import { renderIcon, getTranslation } from './Utils';
4
+ /**
5
+ * Device Control component
6
+ * @param {object} props - Parameters
7
+ * @param {object} props.control - Control object
8
+ * @param {object} props.socket - Socket object
9
+ * @param {object} props.controlHandler - Control handler to set the state
10
+ * @param {object} props.controlStateHandler - Control handler to read the state
11
+ * @returns {React.JSX.Element|null}
12
+ * @constructor
13
+ */
14
+ export default class DeviceControl extends Component {
15
+ constructor(props) {
16
+ super(props);
17
+ this.state = {
18
+ value: props.control.state?.val,
19
+ ts: props.control.state?.ts,
20
+ };
21
+ }
22
+ componentDidMount() {
23
+ if (this.props.control.stateId) {
24
+ this.props.socket.subscribeState(this.props.control.stateId, this.stateHandler);
25
+ }
26
+ }
27
+ stateHandler = async (id, state) => {
28
+ if (id === this.props.control.stateId && state) {
29
+ // request new state
30
+ const newState = await (this.props.controlStateHandler(this.props.deviceId, this.props.control)());
31
+ if (newState?.ts && (!this.state.ts || newState.ts > this.state.ts)) {
32
+ this.setState({
33
+ value: newState.val,
34
+ ts: newState.ts,
35
+ });
36
+ }
37
+ }
38
+ };
39
+ componentWillUnmount() {
40
+ if (this.props.control.stateId) {
41
+ this.props.socket.unsubscribeState(this.props.control.stateId, this.stateHandler);
42
+ }
43
+ }
44
+ static getDerivedStateFromProps(props, state) {
45
+ if (props.control.state?.ts && (!state.ts || props.control.state?.ts > state.ts)) {
46
+ return {
47
+ value: props.control.state.val,
48
+ ts: props.control.state.ts,
49
+ };
50
+ }
51
+ return null;
52
+ }
53
+ async sendControl(deviceId, control, value) {
54
+ const result = await (this.props.controlHandler(deviceId, control, value)());
55
+ if (result?.ts && (!this.state.ts || result?.ts > this.state.ts)) {
56
+ this.setState({
57
+ value: result.val,
58
+ ts: result.ts,
59
+ });
60
+ }
61
+ }
62
+ renderButton() {
63
+ const tooltip = getTranslation(this.props.control.description);
64
+ const icon = renderIcon(this.props.control, this.props.colors, this.state.value);
65
+ if (!this.props.control.label) {
66
+ return React.createElement(Fab, { disabled: this.props.disabled, title: tooltip, onClick: () => this.sendControl(this.props.deviceId, this.props.control, true) }, icon);
67
+ }
68
+ return React.createElement(Button, { disabled: this.props.disabled, title: tooltip, onClick: () => this.sendControl(this.props.deviceId, this.props.control, true), startIcon: icon }, this.props.control.label);
69
+ }
70
+ renderSwitch() {
71
+ const tooltip = getTranslation(this.props.control.description);
72
+ // const icon = renderIcon(this.props.control, this.props.colors, this.state.value);
73
+ return React.createElement(Switch, { disabled: this.props.disabled, title: tooltip, checked: this.state.value, onChange: e => this.sendControl(this.props.deviceId, this.props.control, e.target.checked) });
74
+ }
75
+ getColor() {
76
+ let color;
77
+ if (this.state.value) {
78
+ color = this.props.control.colorOn || 'primary';
79
+ }
80
+ else if (this.props.control.type === 'switch') {
81
+ color = this.props.control.color;
82
+ }
83
+ if (color === 'primary') {
84
+ return this.props.colors.primary;
85
+ }
86
+ if (color === 'secondary') {
87
+ return this.props.colors.secondary;
88
+ }
89
+ return color;
90
+ }
91
+ renderSelect() {
92
+ }
93
+ renderSlider() {
94
+ }
95
+ renderColor() {
96
+ }
97
+ renderIcon() {
98
+ const tooltip = getTranslation(this.props.control.description);
99
+ const icon = renderIcon(this.props.control, this.props.colors, this.state.value);
100
+ const color = this.getColor();
101
+ if (!this.props.control.label) {
102
+ return React.createElement(Fab, { disabled: this.props.disabled, size: "small", title: tooltip, color: color === this.props.colors.primary ? 'primary' : (color === this.props.colors.secondary ? 'secondary' : undefined), style: color === this.props.colors.primary || color === this.props.colors.secondary ? undefined : { color }, onClick: () => this.sendControl(this.props.deviceId, this.props.control, !this.state.value) }, icon);
103
+ }
104
+ return React.createElement(Button, { disabled: this.props.disabled, title: tooltip, color: color === this.props.colors.primary ? 'primary' : (color === this.props.colors.secondary ? 'secondary' : undefined), style: color === this.props.colors.primary || color === this.props.colors.secondary ? undefined : { color }, onClick: () => this.sendControl(this.props.deviceId, this.props.control, !this.state.value), startIcon: icon }, this.props.control.label);
105
+ }
106
+ render() {
107
+ if (this.props.control.type === 'button') {
108
+ return this.renderButton();
109
+ }
110
+ if (this.props.control.type === 'icon') {
111
+ return this.renderIcon();
112
+ }
113
+ if (this.props.control.type === 'switch') {
114
+ return this.renderSwitch();
115
+ }
116
+ return React.createElement("div", { style: { color: 'red' } }, this.props.control.type);
117
+ }
118
+ }
119
+ //# sourceMappingURL=DeviceControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceControl.js","sourceRoot":"./src/","sources":["DeviceControl.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
1
+ import React from 'react';
7
2
  function DeviceImageUpload(params) {
8
3
  const { socket, manufacturer, model, deviceId, onImageSelect, uploadImagesToInstance, } = params;
9
4
  const handleImageUpload = async (event) => {
@@ -63,7 +58,8 @@ function DeviceImageUpload(params) {
63
58
  height: '45px',
64
59
  zIndex: 3,
65
60
  };
66
- return react_1.default.createElement("div", null,
67
- react_1.default.createElement("input", { style: imageUploadButtonStyle, type: "file", accept: "image/*", onChange: handleImageUpload }));
61
+ return React.createElement("div", null,
62
+ React.createElement("input", { style: imageUploadButtonStyle, type: "file", accept: "image/*", onChange: handleImageUpload }));
68
63
  }
69
- exports.default = DeviceImageUpload;
64
+ export default DeviceImageUpload;
65
+ //# sourceMappingURL=DeviceImageUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceImageUpload.js","sourceRoot":"./src/","sources":["DeviceImageUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import React from 'react';
2
+ import { IconButton, InputAdornment, TextField, Toolbar, Tooltip, LinearProgress, } from '@mui/material';
3
+ import { Clear, Refresh } from '@mui/icons-material';
4
+ import { I18n } from '@iobroker/adapter-react-v5';
5
+ import DeviceCard from './DeviceCard';
6
+ import { getTranslation } from './Utils';
7
+ import Communication from './Communication';
8
+ import InstanceActionButton from './InstanceActionButton';
9
+ import de from './i18n/de.json';
10
+ import en from './i18n/en.json';
11
+ import ru from './i18n/ru.json';
12
+ import pt from './i18n/pt.json';
13
+ import nl from './i18n/nl.json';
14
+ import fr from './i18n/fr.json';
15
+ import it from './i18n/it.json';
16
+ import es from './i18n/es.json';
17
+ import pl from './i18n/pl.json';
18
+ import uk from './i18n/uk.json';
19
+ import zhCn from './i18n/zh-cn.json';
20
+ /**
21
+ * Device List Component
22
+ * @param {object} params - Component parameters
23
+ * @param {object} params.socket - socket object
24
+ * @param {string} params.selectedInstance - Selected instance
25
+ * @param {string} params.uploadImagesToInstance - Instance to upload images to
26
+ * @param {string} params.filter - Filter
27
+ * @param {string} params.empbedded - true if this list used with multiple instances and false if only with one
28
+ * @param {string} params.title - Title in appbar (only in non-embedded mode)
29
+ * @param {string} params.style - Style of devices list
30
+ * @returns {*[]} - Array of device cards
31
+ */
32
+ export default class DeviceList extends Communication {
33
+ static i18nInitialized = false;
34
+ lastPropsFilter;
35
+ lastInstance;
36
+ filterTimeout;
37
+ language;
38
+ constructor(props) {
39
+ super(props);
40
+ if (!DeviceList.i18nInitialized) {
41
+ DeviceList.i18nInitialized = true;
42
+ // @ts-expect-error
43
+ I18n.extendTranslations({
44
+ en,
45
+ de,
46
+ ru,
47
+ pt,
48
+ nl,
49
+ fr,
50
+ it,
51
+ es,
52
+ pl,
53
+ uk,
54
+ 'zh-cn': zhCn,
55
+ });
56
+ }
57
+ Object.assign(this.state, {
58
+ devices: [],
59
+ filteredDevices: [],
60
+ filter: '',
61
+ instanceInfo: null,
62
+ loading: null,
63
+ alive: null,
64
+ });
65
+ this.lastPropsFilter = this.props.filter;
66
+ this.lastInstance = this.props.selectedInstance;
67
+ this.filterTimeout = null;
68
+ this.language = I18n.getLanguage();
69
+ }
70
+ async componentDidMount() {
71
+ let alive = false;
72
+ if (this.state.alive === null) {
73
+ try {
74
+ // check if instance is alive
75
+ const stateAlive = await this.props.socket.getState(`system.adapter.${this.props.selectedInstance}.alive`);
76
+ if (stateAlive?.val) {
77
+ alive = true;
78
+ }
79
+ }
80
+ catch (error) {
81
+ console.error(error);
82
+ }
83
+ this.setState({ alive }, () => this.props.socket.subscribeState(`system.adapter.${this.props.selectedInstance}.alive`, this.aliveHandler));
84
+ if (!alive) {
85
+ return;
86
+ }
87
+ }
88
+ else {
89
+ alive = this.state.alive;
90
+ }
91
+ if (!this.props.embedded && alive) {
92
+ try {
93
+ const instanceInfo = await this.loadInstanceInfos();
94
+ this.setState({ instanceInfo });
95
+ }
96
+ catch (error) {
97
+ console.error(error);
98
+ }
99
+ }
100
+ if (alive) {
101
+ this.loadData();
102
+ }
103
+ }
104
+ componentWillUnmount() {
105
+ this.props.socket.unsubscribeState(`system.adapter.${this.props.selectedInstance}.alive`, this.aliveHandler);
106
+ }
107
+ aliveHandler = (id, state) => {
108
+ if (id === `system.adapter.${this.props.selectedInstance}.alive`) {
109
+ const alive = !!state?.val;
110
+ if (alive !== this.state.alive) {
111
+ this.setState({ alive }, () => {
112
+ if (alive) {
113
+ this.componentDidMount().catch(console.error);
114
+ }
115
+ });
116
+ }
117
+ }
118
+ };
119
+ /**
120
+ * Load devices
121
+ */
122
+ loadData() {
123
+ this.setState({ loading: true }, async () => {
124
+ console.log(`Loading devices for ${this.props.selectedInstance}...`);
125
+ let devices;
126
+ try {
127
+ devices = await this.loadDevices();
128
+ if (!devices || !Array.isArray(devices)) {
129
+ console.error(`Message returned from sendTo() doesn't look like one from DeviceManagement, did you accidentally handle the message in your adapter? ${JSON.stringify(devices)}`);
130
+ devices = [];
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.error(error);
135
+ devices = [];
136
+ }
137
+ this.setState({ devices, loading: false }, () => this.applyFilter());
138
+ });
139
+ }
140
+ getText(text) {
141
+ if (typeof text === 'object') {
142
+ return text[this.language] || text.en;
143
+ }
144
+ return text;
145
+ }
146
+ applyFilter() {
147
+ const filter = this.props.embedded ? this.props.filter : this.state.filter;
148
+ // filter devices name
149
+ if (filter) {
150
+ const filteredDevices = this.state.devices.filter(device => this.getText(device.name).toLowerCase().includes(filter.toLowerCase()));
151
+ this.setState({ filteredDevices });
152
+ }
153
+ else {
154
+ this.setState({ filteredDevices: this.state.devices });
155
+ }
156
+ }
157
+ handleFilterChange(filter) {
158
+ this.setState({ filter }, () => {
159
+ this.filterTimeout && clearTimeout(this.filterTimeout);
160
+ this.filterTimeout = setTimeout(() => {
161
+ this.filterTimeout = null;
162
+ this.applyFilter();
163
+ }, 250);
164
+ });
165
+ }
166
+ renderContent() {
167
+ /** @type {object} */
168
+ const emptyStyle = {
169
+ padding: 25,
170
+ };
171
+ if (this.props.embedded && this.lastPropsFilter !== this.props.filter) {
172
+ this.lastPropsFilter = this.props.filter;
173
+ setTimeout(() => this.applyFilter(), 50);
174
+ }
175
+ if (this.props.embedded && this.lastInstance !== this.props.selectedInstance) {
176
+ this.lastInstance = this.props.selectedInstance;
177
+ setTimeout(() => this.loadData(), 50);
178
+ }
179
+ let list;
180
+ if (!this.props.embedded && !this.state.alive) {
181
+ list = React.createElement("div", { style: emptyStyle },
182
+ React.createElement("span", null, getTranslation('instanceNotAlive')));
183
+ }
184
+ else if (!this.state.devices.length && this.props.selectedInstance) {
185
+ list = React.createElement("div", { style: emptyStyle },
186
+ React.createElement("span", null, getTranslation('noDevicesFoundText')));
187
+ }
188
+ else if (this.state.devices.length && !this.state.filteredDevices.length) {
189
+ list = React.createElement("div", { style: emptyStyle },
190
+ React.createElement("span", null, getTranslation('allDevicesFilteredOut')));
191
+ }
192
+ else {
193
+ list = this.state.filteredDevices.map(device => React.createElement(DeviceCard, { alive: !!this.state.alive, key: device.id, id: device.id, title: this.getText(device.name), device: device, instanceId: this.props.selectedInstance, uploadImagesToInstance: this.props.uploadImagesToInstance, deviceHandler: this.deviceHandler, controlHandler: this.controlHandler, controlStateHandler: this.controlStateHandler, socket: this.props.socket }));
194
+ }
195
+ if (this.props.embedded) {
196
+ return React.createElement(React.Fragment, null,
197
+ this.state.loading ? React.createElement(LinearProgress, { style: { width: '100%' } }) : null,
198
+ list);
199
+ }
200
+ return React.createElement("div", { style: { width: '100%', height: '100%', overflow: 'hidden' } },
201
+ React.createElement(Toolbar, { variant: "dense", style: { backgroundColor: '#777', display: 'flex' } },
202
+ this.props.title,
203
+ this.props.selectedInstance ? React.createElement(Tooltip, { title: getTranslation('refreshTooltip') },
204
+ React.createElement("span", null,
205
+ React.createElement(IconButton, { onClick: () => this.loadData(), disabled: !this.state.alive, size: "small" },
206
+ React.createElement(Refresh, null)))) : null,
207
+ this.state.alive && this.state.instanceInfo?.actions?.length ? React.createElement("div", { style: { marginLeft: 20 } }, this.state.instanceInfo.actions.map(action => React.createElement(InstanceActionButton, { key: action.id, action: action, instanceHandler: this.instanceHandler }))) : null,
208
+ React.createElement("div", { style: { flexGrow: 1 } }),
209
+ this.state.alive ? React.createElement(TextField, { variant: "standard", style: { width: 200 }, size: "small", label: getTranslation('filterLabelText'), onChange: e => this.handleFilterChange(e.target.value), value: this.state.filter, autoComplete: "off", inputProps: {
210
+ autoComplete: 'new-password',
211
+ form: { autoComplete: 'off' },
212
+ },
213
+ // eslint-disable-next-line react/jsx-no-duplicate-props
214
+ InputProps: {
215
+ endAdornment: this.state.filter ? React.createElement(InputAdornment, { position: "end" },
216
+ React.createElement(IconButton, { onClick: () => this.handleFilterChange(''), edge: "end" },
217
+ React.createElement(Clear, null))) : null,
218
+ } }) : null),
219
+ React.createElement("div", { style: {
220
+ width: '100%',
221
+ height: 'calc(100% - 56px)',
222
+ marginTop: 8,
223
+ overflow: 'auto',
224
+ // justifyContent: 'center',
225
+ // alignItems: 'stretch',
226
+ // display: 'grid',
227
+ // columnGap: 8,
228
+ // rowGap: 8,
229
+ ...this.props.style,
230
+ } },
231
+ this.state.loading ? React.createElement(LinearProgress, { style: { width: '100%' } }) : null,
232
+ list));
233
+ }
234
+ }
235
+ //# sourceMappingURL=DeviceList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceList.js","sourceRoot":"./src/","sources":["DeviceList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import React from 'react';
2
+ import { Tooltip } from '@mui/material';
3
+ import { Link as LinkIcon, LinkOff as LinkOffIcon, NetworkCheck as NetworkCheckIcon, Battery20 as Battery20Icon, Battery30 as Battery30Icon, Battery50 as Battery50Icon, Battery60 as Battery60Icon, Battery80 as Battery80Icon, Battery90 as Battery90Icon, BatteryFull as BatteryFullIcon, BatteryAlert as BatteryAlertIcon, Warning as WarningIcon, BatteryCharging50 as BatteryCharging50Icon, } from '@mui/icons-material';
4
+ import { getTranslation } from './Utils';
5
+ /**
6
+ * Device Status component
7
+ * @param {object} params - Parameters
8
+ * @param {object} params.status - Status object, e.g. { connection: 'connected', battery: 100, rssi: -50 }
9
+ * @returns {React.JSX.Element|null}
10
+ * @constructor
11
+ */
12
+ export default function DeviceStatus(params) {
13
+ if (!params.status) {
14
+ return null;
15
+ }
16
+ let status;
17
+ if (typeof params.status === 'string') {
18
+ status = {
19
+ connection: params.status,
20
+ };
21
+ }
22
+ else {
23
+ status = params.status;
24
+ }
25
+ /** @type {object} */
26
+ const iconStyleOK = {
27
+ fill: '#00ac00',
28
+ };
29
+ /** @type {object} */
30
+ const iconStyleNotOK = {
31
+ fill: '#ff0000',
32
+ };
33
+ /** @type {object} */
34
+ const iconStyleWarning = {
35
+ fill: '#ff9900',
36
+ };
37
+ /** @type {object} */
38
+ let batteryIconTooltip;
39
+ if (typeof status.battery === 'number') {
40
+ if (status.battery >= 96 && status.battery <= 100) {
41
+ batteryIconTooltip = React.createElement(BatteryFullIcon, { style: iconStyleOK });
42
+ }
43
+ else if (status.battery >= 90 && status.battery <= 95) {
44
+ batteryIconTooltip = React.createElement(Battery90Icon, { style: iconStyleOK });
45
+ }
46
+ else if (status.battery >= 80 && status.battery <= 89) {
47
+ batteryIconTooltip = React.createElement(Battery80Icon, { style: iconStyleOK });
48
+ }
49
+ else if (status.battery >= 60 && status.battery <= 79) {
50
+ batteryIconTooltip = React.createElement(Battery60Icon, { style: iconStyleOK });
51
+ }
52
+ else if (status.battery >= 50 && status.battery <= 59) {
53
+ batteryIconTooltip = React.createElement(Battery50Icon, { style: iconStyleOK });
54
+ }
55
+ else if (status.battery >= 30 && status.battery <= 49) {
56
+ batteryIconTooltip = React.createElement(Battery30Icon, { style: iconStyleOK });
57
+ }
58
+ else if (status.battery >= 20 && status.battery <= 29) {
59
+ batteryIconTooltip = React.createElement(Battery20Icon, { style: iconStyleNotOK });
60
+ }
61
+ else {
62
+ batteryIconTooltip = React.createElement(BatteryAlertIcon, { style: iconStyleNotOK });
63
+ }
64
+ }
65
+ return React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
66
+ status.connection === 'connected' && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
67
+ React.createElement(Tooltip, { title: getTranslation('connectedIconTooltip') },
68
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
69
+ React.createElement(LinkIcon, { style: iconStyleOK })))),
70
+ status.connection === 'disconnected' && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
71
+ React.createElement(Tooltip, { title: getTranslation('disconnectedIconTooltip') },
72
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
73
+ React.createElement(LinkOffIcon, { style: iconStyleNotOK })))),
74
+ status.rssi && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
75
+ React.createElement(Tooltip, { title: "RSSI" },
76
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
77
+ React.createElement(NetworkCheckIcon, null),
78
+ React.createElement("p", { style: { fontSize: 'small', margin: 0 } }, status.rssi)))),
79
+ typeof status.battery === 'number' && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
80
+ React.createElement(Tooltip, { title: getTranslation('batteryTooltip') },
81
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
82
+ batteryIconTooltip,
83
+ React.createElement("p", { style: { fontSize: 'small', margin: 0 } },
84
+ status.battery,
85
+ "%")))),
86
+ typeof status.battery === 'string' && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
87
+ React.createElement(Tooltip, { title: getTranslation('batteryTooltip') },
88
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
89
+ status.battery === 'charging' ? React.createElement(BatteryCharging50Icon, null) : React.createElement(BatteryFullIcon, null),
90
+ status.battery !== 'charging' ? (status.battery.includes('V') || status.battery.includes('mV') ?
91
+ React.createElement("p", { style: { fontSize: 'small', margin: 0 } }, status.battery) :
92
+ React.createElement("p", { style: { fontSize: 'small', margin: 0 } },
93
+ React.createElement("span", { style: { marginRight: 4 } }, status.battery),
94
+ "mV")) : null))),
95
+ typeof status.battery === 'boolean' && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
96
+ React.createElement(Tooltip, { title: getTranslation('batteryTooltip') },
97
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } }, status.battery ? React.createElement(BatteryFullIcon, { style: iconStyleOK }) :
98
+ React.createElement(BatteryAlertIcon, { style: iconStyleNotOK })))),
99
+ status.warning && React.createElement("div", { style: { display: 'flex', alignItems: 'center' } }, typeof status.warning === 'string' || typeof status.warning === 'object' ?
100
+ React.createElement(Tooltip, { title: getTranslation(status.warning) },
101
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
102
+ React.createElement(WarningIcon, { style: iconStyleWarning }))) :
103
+ React.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } },
104
+ React.createElement(WarningIcon, { style: iconStyleWarning }))));
105
+ }
106
+ //# sourceMappingURL=DeviceStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceStatus.js","sourceRoot":"./src/","sources":["DeviceStatus.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import TooltipButton from './TooltipButton';
3
+ import { renderIcon, getTranslation } from './Utils';
4
+ export default function InstanceActionButton(params) {
5
+ const { action, instanceHandler } = params;
6
+ const tooltip = getTranslation(action?.description ? action.description : '');
7
+ const title = getTranslation(action?.title ? action.title : '');
8
+ const icon = renderIcon(action);
9
+ return React.createElement(TooltipButton, { tooltip: tooltip, label: title, disabled: action.disabled, Icon: icon, onClick: instanceHandler(action) });
10
+ }
11
+ //# sourceMappingURL=InstanceActionButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstanceActionButton.js","sourceRoot":"./src/","sources":["InstanceActionButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAOrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAiC;IAC1E,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAEhC,OAAO,oBAAC,aAAa,IACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAClC,CAAC;AACP,CAAC"}
@@ -1,41 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const react_1 = __importStar(require("react"));
27
- const adapter_react_v5_1 = require("@iobroker/adapter-react-v5");
28
- function JsonConfig(props) {
1
+ import React, { useState } from 'react';
2
+ import { JsonConfigComponent } from '@iobroker/adapter-react-v5';
3
+ export default function JsonConfig(props) {
29
4
  const { instanceId, socket, schema, data, onChange, } = props;
30
5
  console.log('JsonConfig', props);
31
- const [error, setError] = (0, react_1.useState)();
6
+ const [error, setError] = useState();
32
7
  if (schema === undefined) {
33
8
  return null;
34
9
  }
35
10
  const [adapterName, instance] = instanceId.split('.', 2);
36
- return react_1.default.createElement(react_1.default.Fragment, null,
37
- error && react_1.default.createElement("div", null, error),
38
- react_1.default.createElement(adapter_react_v5_1.JsonConfigComponent, { socket: socket, adapterName: adapterName, instance: parseInt(instance), schema: schema, data: data, onError: setError, onChange: _data => onChange(_data), embedded: true }));
11
+ return React.createElement(React.Fragment, null,
12
+ error && React.createElement("div", null, error),
13
+ React.createElement(JsonConfigComponent, { socket: socket, adapterName: adapterName, instance: parseInt(instance), schema: schema, data: data, onError: setError,
14
+ // @ts-expect-error types needed
15
+ onChange: _data => onChange(_data), embedded: true }));
39
16
  /*
40
17
  JSON adapter config:
41
18
  className={classes.scroll}
@@ -88,4 +65,4 @@ function JsonConfig(props) {
88
65
  }}
89
66
  */
90
67
  }
91
- exports.default = JsonConfig;
68
+ //# sourceMappingURL=JsonConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonConfig.js","sourceRoot":"./src/","sources":["JsonConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAc,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAU7E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EACF,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAC7C,GAAG,KAAK,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;IAErC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEzD,OAAO;QACF,KAAK,IAAI,iCAAM,KAAK,CAAO;QAC5B,oBAAC,mBAAmB,IAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,QAAQ;YACjB,gCAAgC;YAChC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,QAAQ,SACV,CACH,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkDE;AACN,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { IconButton, Tooltip, Typography } from '@mui/material';
3
+ export default function TooltipButton(props) {
4
+ const { tooltip, label, disabled, Icon, onClick } = props;
5
+ const text = !!label && React.createElement(Typography, { variant: "button", style: { marginLeft: 4 } }, label);
6
+ if (tooltip) {
7
+ return React.createElement(Tooltip, { title: tooltip },
8
+ React.createElement("span", null,
9
+ React.createElement(IconButton, { onClick: onClick, disabled: disabled, size: "small" },
10
+ Icon,
11
+ text)));
12
+ }
13
+ return React.createElement(IconButton, { onClick: onClick, disabled: disabled, size: "small" },
14
+ Icon,
15
+ text);
16
+ }
17
+ //# sourceMappingURL=TooltipButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipButton.js","sourceRoot":"./src/","sources":["TooltipButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAUhE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,EACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAC1C,GAAG,KAAK,CAAC;IAEV,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,oBAAC,UAAU,IAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAG,KAAK,CAAc,CAAC;IAEpG,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,oBAAC,OAAO,IAAC,KAAK,EAAE,OAAO;YAC1B;gBACI,oBAAC,UAAU,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,OAAO;oBACzD,IAAI;oBACJ,IAAI,CACI,CACV,CACD,CAAC;IACf,CAAC;IAED,OAAO,oBAAC,UAAU,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,OAAO;QAChE,IAAI;QACJ,IAAI,CACI,CAAC;AAClB,CAAC"}