From cb393478b05ae5d41fdd798deac6fa5b6b2be4d5 Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Sun, 1 Dec 2024 14:53:02 +0000 Subject: [PATCH 1/6] Showed value in object edit dialog --- README.md | 6 +- .../src/Components/ObjectBrowser.tsx | 1 + packages/adapter-react-v5/src/i18n/en.json | 3 +- .../src/components/Hosts/HostRow.tsx | 2 +- .../Object/ObjectBrowserEditObject.tsx | 317 +++++++++++++++++- .../components/Object/ObjectBrowserValue.tsx | 20 +- packages/admin/src-admin/src/tabs/Hosts.tsx | 13 +- 7 files changed, 344 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a6c1d5add..b3439b7f5 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ And with rest-api instance: `https://iobroker.mydomain.com/ioBrokerAPI/ => http: You can add the following lines into Reverse Proxy tab to let Intro tab run behind reverse proxy properly: | Global path | Instance | Instance path behind proxy | -| ----------------- | ------------- | -------------------------- | +|-------------------|---------------|----------------------------| | `/ioBrokerAdmin/` | `web.0` | `/ioBrokerWeb/` | | | `rest-api.0` | `/ioBrokerAPI/` | | | `admin.0` | `/ioBrokerAdmin/` | @@ -87,6 +87,10 @@ The icons may not be reused in other projects without the proper flaticon licens <!-- ### **WORK IN PROGRESS** --> +### **WORK IN PROGRESS** + +- (@GermanBluefox) Showed value in object edit dialog + ### 7.4.3 (2024-12-01) - (@GermanBluefox) Changed information box on the hosts tab diff --git a/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx b/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx index b19f4048f..541bb907c 100644 --- a/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx +++ b/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx @@ -2045,6 +2045,7 @@ function formatValue(options: FormatValueOptions): { if (isCommon?.unit) { valText.u = isCommon.unit; } + let valFull: | { /** label */ diff --git a/packages/adapter-react-v5/src/i18n/en.json b/packages/adapter-react-v5/src/i18n/en.json index 55d5249d4..fb34606ff 100644 --- a/packages/adapter-react-v5/src/i18n/en.json +++ b/packages/adapter-react-v5/src/i18n/en.json @@ -115,6 +115,7 @@ "ra_License %s": "License %s", "ra_License agreement": "License agreement", "ra_License does not exist": "License does not exist", + "ra_tooltip_expire": "Expires in", "ra_License expired on %s": "License expired on %s", "ra_License for other product \"%s\"": "License for other product \"%s\"", "ra_License is for version %s, but required version is %s.": "License is for version %s, but required version is %s.", @@ -447,4 +448,4 @@ "sch_validTo": "to", "sch_wholeDay": "Whole day", "sch_yearEveryMonth": "every month" -} \ No newline at end of file +} diff --git a/packages/admin/src-admin/src/components/Hosts/HostRow.tsx b/packages/admin/src-admin/src/components/Hosts/HostRow.tsx index 8c88a81cb..08aa7b9a2 100644 --- a/packages/admin/src-admin/src/components/Hosts/HostRow.tsx +++ b/packages/admin/src-admin/src/components/Hosts/HostRow.tsx @@ -40,7 +40,7 @@ const styles: Record<string, any> = { alignItems: 'baseline', }, collapse: { - height: 200, + height: 215, backgroundColor: 'rgba(128, 128, 128, 0.1)', // position: 'absolute', width: '100%', diff --git a/packages/admin/src-admin/src/components/Object/ObjectBrowserEditObject.tsx b/packages/admin/src-admin/src/components/Object/ObjectBrowserEditObject.tsx index e137e07cc..76e17f206 100644 --- a/packages/admin/src-admin/src/components/Object/ObjectBrowserEditObject.tsx +++ b/packages/admin/src-admin/src/components/Object/ObjectBrowserEditObject.tsx @@ -1,4 +1,16 @@ import React, { Component, type JSX } from 'react'; +import moment from 'moment'; + +import 'moment/locale/de'; +import 'moment/locale/es'; +import 'moment/locale/fr'; +import 'moment/locale/it'; +import 'moment/locale/nl'; +import 'moment/locale/pl'; +import 'moment/locale/pt'; +import 'moment/locale/ru'; +import 'moment/locale/uk'; +import 'moment/locale/zh-cn'; import { Dialog, @@ -187,8 +199,47 @@ const styles: Record<string, any> = { tooltip: { pointerEvents: 'none', }, + stateRow: { + width: '100%', + display: 'flex', + justifyContent: 'space-between', + '&:hover': { + backgroundColor: '#00000030', + }, + }, + stateTitle: { + minWidth: 150, + fontWeight: 'bold', + }, + stateUnit: { + opacity: 0.7, + marginLeft: 4, + }, + stateValue: { + animation: 'newStateEditorAnimation 2s ease-in-out', + }, + stateTime: { + fontStyle: 'italic', + }, + stateImage: { + maxWidth: 200, + maxHeight: 200, + }, }; +function valueBlink(theme: IobTheme, color: string): any { + return { + '@keyframes newStateEditorAnimation': { + '0%': { + color: theme.palette.mode === 'dark' ? '#27cf00' : '#174e00', + }, + '100%': { + color: color || (theme.palette.mode === 'dark' ? '#ffffff' : '#000000'), + }, + }, + }; +} + const DEFAULT_ROLES = [ 'button', 'button.close.blind', @@ -495,11 +546,14 @@ interface ObjectBrowserEditObjectState { newId: string; customEditTabs?: EditSchemaTabEditor[]; lang: ioBroker.Languages; + value: ioBroker.State | null | undefined; } class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, ObjectBrowserEditObjectState> { /** Original object stringified */ private originalObj: string; + private subscribed = false; + private updateTimer: ReturnType<typeof setTimeout> | null = null; constructor(props: ObjectBrowserEditObjectProps) { super(props); @@ -540,8 +594,11 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob selectWrite: false, newId: '', lang: I18n.getLanguage(), + value: undefined, }; + moment.locale(this.state.lang); + this.originalObj = JSON.stringify(this.props.obj, null, 2); } @@ -611,20 +668,36 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob } if ( + this.state.tab === 'alias' && + (!this.props.obj._id.startsWith('alias.0') || this.props.obj.type !== 'state') + ) { + this.setState({ tab: 'object' }); + } else if (this.state.tab === 'state' && this.props.obj.type !== 'state') { + this.setState({ tab: 'object' }); + } else if ( this.state.tab !== 'object' && this.state.tab !== 'common' && - (this.state.tab !== 'alias' || - (this.state.tab === 'alias' && - (!this.props.obj._id.startsWith('alias.0') || this.props.obj.type !== 'state'))) && + this.state.tab !== 'alias' && + this.state.tab !== 'state' && !customEditTabs.find(tab => tab.key === this.state.tab) ) { this.setState({ tab: 'object' }); } + if (this.state.tab === 'state') { + this.subscribeOnState(true); + } + void this.props.socket.subscribeObject(this.props.obj._id, this.onObjectUpdated); } componentWillUnmount(): void { + if (this.updateTimer) { + clearInterval(this.updateTimer); + this.updateTimer = null; + } + this.subscribeOnState(false); + void this.props.socket.unsubscribeObject(this.props.obj._id, this.onObjectUpdated); } @@ -920,6 +993,237 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob ); } + renderStateTab(): JSX.Element | null { + if ( + this.props.obj.type !== 'state' || + // @ts-expect-error file is deprecated, but could appear + this.props.obj.common.type === 'file' + ) { + return null; + } + + return ( + <Tab + disabled={this.state.customError || this.state.error} + value="state" + label={this.props.t('State')} + /> + ); + } + + renderStatePanel(): JSX.Element { + if (this.state.value === undefined || this.state.value === null) { + return <div>{this.props.t('State does not exist')}</div>; + } + if (typeof this.state.value !== 'object') { + return ( + <div> + <div>{this.props.t('State is invalid')}</div> + <div> + <pre>{JSON.stringify(this.state.value, null, 4)}</pre> + </div> + </div> + ); + } + + let strVal: string | React.JSX.Element | undefined; + const styleValue: React.CSSProperties = {}; + const v = this.state.value.val; + const type = typeof v; + + if (v === undefined) { + strVal = '[undef]'; + styleValue.color = '#bc6400'; + styleValue.fontStyle = 'italic'; + } else if (v === null) { + strVal = '(null)'; + styleValue.color = '#0047b1'; + styleValue.fontStyle = 'italic'; + } else if ( + typeof this.props.obj.common.role === 'string' && + this.props.obj.common.role.match(/^value\.time|^date/) + ) { + // if timestamp + if (v && type === 'string') { + if (Utils.isStringInteger(v as string)) { + // we assume a unix ts + strVal = new Date(parseInt(v as string, 10)).toString(); + } else { + // check if parsable by new date + try { + const parsedDate = new Date(v as string); + + if (Utils.isValidDate(parsedDate)) { + strVal = parsedDate.toString(); + } + } catch { + // ignore + } + } + } else if (v && type === 'number') { + if ((v as number) > 946681200 && (v as number) < 946681200000) { + // '2000-01-01T00:00:00' => 946681200000 + strVal = new Date((v as number) * 1_000).toString(); // maybe the time is in seconds (UNIX time) + } else if ((v as number) > 946681200000000) { + // "null" and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above + strVal = new Date(v as number).toString(); + } + } + } + + if (!strVal) { + if (type === 'number') { + if (!Number.isInteger(v)) { + strVal = (Math.round((v as number) * 1_000_000_000) / 1_000_000_000).toString(); // remove 4.00000000000000001 + if (this.props.isFloatComma) { + strVal = strVal.toString().replace('.', ','); + } + } + } else if (type === 'boolean') { + strVal = v ? I18n.t('true') : I18n.t('false'); + styleValue.color = v ? '#139800' : '#cd6b55'; + } else if (type === 'object') { + strVal = JSON.stringify(v); + } else if (type === 'string' && (v as string).startsWith('data:image/')) { + strVal = ( + <img + src={v as string} + alt="img" + style={styles.stateImage} + /> + ); + } else { + strVal = v.toString(); + } + } + + Object.assign(styleValue, valueBlink(this.props.theme, styleValue.color)); + + return ( + <div + style={{ + ...styles.divWithoutTitle, + padding: '24px 24px 0 24px', + fontSize: 16, + }} + > + <div + style={{ + ...styles.stateRow, + marginBottom: 24, + }} + > + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_value')}:</div> + <Box + component="div" + key={typeof strVal === 'string' ? strVal : 'image'} + sx={styleValue} + style={styles.stateValue} + > + {strVal} + {(this.props.obj.common as ioBroker.StateCommon)?.unit ? ( + <span style={styles.stateUnit}>{(this.props.obj.common as ioBroker.StateCommon).unit}</span> + ) : null} + </Box> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('Type')}:</div> + <div style={styles.stateValue}>{type}</div> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_ts')}:</div> + <Tooltip + title={new Date(this.state.value.ts).toLocaleString()} + slotProps={{ popper: { sx: styles.tooltip } }} + > + <div style={styles.stateValue}> + <span style={styles.stateTime}>{moment(this.state.value.ts).fromNow()}</span> + </div> + </Tooltip> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_ack')}:</div> + <div + style={{ + ...styles.stateValue, + color: this.state.value.ack ? 'green' : 'red', + }} + > + {this.state.value.ack ? I18n.t('Acknowledged') : I18n.t('Command')} + {this.state.value.ack ? ' (true)' : ' (false)'} + </div> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_lc')}:</div> + <Tooltip + title={new Date(this.state.value.lc).toLocaleString()} + slotProps={{ popper: { sx: styles.tooltip } }} + > + <div style={styles.stateValue}> + <span style={styles.stateTime}>{moment(this.state.value.lc).fromNow()}</span> + </div> + </Tooltip> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_quality')}:</div> + <div style={styles.stateValue}>{Utils.quality2text(this.state.value.q || 0).join(', ')}</div> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_from')}:</div> + <div style={styles.stateValue}>{this.state.value.from}</div> + </div> + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_user')}:</div> + <div style={styles.stateValue}>{this.state.value.user || '--'}</div> + </div> + {this.state.value.expire ? ( + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_expire')}:</div> + <div style={styles.stateValue}> + {this.state.value.expire} {I18n.t('sc_seconds')} + </div> + </div> + ) : null} + {this.state.value.c ? ( + <div style={styles.stateRow}> + <div style={styles.stateTitle}>{I18n.t('ra_tooltip_comment')}:</div> + <div style={styles.stateValue}>{this.state.value.c}</div> + </div> + ) : null} + </div> + ); + } + + onStateChange = (id: string, state: ioBroker.State | null | undefined): void => { + if (JSON.stringify(state) !== JSON.stringify(this.state.value)) { + this.setState({ value: state }); + } + }; + + subscribeOnState(enable: boolean): void { + if (enable) { + if (!this.subscribed) { + if (!this.updateTimer) { + this.updateTimer = setInterval(() => { + // update times + this.forceUpdate(); + }, 5000); + } + this.subscribed = true; + void this.props.socket.subscribeState(this.props.obj._id, this.onStateChange); + } + } else { + if (this.subscribed) { + if (this.updateTimer) { + clearInterval(this.updateTimer); + this.updateTimer = null; + } + this.subscribed = false; + void this.props.socket.unsubscribeState(this.props.obj._id, this.onStateChange); + } + } + } + renderTabs(parsedObj: ioBroker.Object | null | undefined): JSX.Element { return ( <Tabs @@ -953,6 +1257,11 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob } catch { // ignore } + this.subscribeOnState(false); + } else if (tab === 'state') { + this.subscribeOnState(true); + } else { + this.subscribeOnState(false); } this.setState({ tab }); @@ -968,6 +1277,7 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob disabled={this.state.customError} label={this.props.t('Object data')} /> + {this.renderStateTab()} {this.props.obj._id.startsWith('alias.0') && this.props.obj.type === 'state' && ( <Tab disabled={this.state.customError || this.state.error} @@ -1852,6 +2162,7 @@ class ObjectBrowserEditObject extends Component<ObjectBrowserEditObjectProps, Ob ? this.renderAliasEdit() : null} {this.state.tab === 'common' ? this.renderCommonEdit() : null} + {this.state.tab === 'state' ? this.renderStatePanel() : null} {this.renderCustomPanel()} {this.renderSelectDialog()} </DialogContent> diff --git a/packages/admin/src-admin/src/components/Object/ObjectBrowserValue.tsx b/packages/admin/src-admin/src/components/Object/ObjectBrowserValue.tsx index b0e6d4e26..9efb6bbc7 100644 --- a/packages/admin/src-admin/src/components/Object/ObjectBrowserValue.tsx +++ b/packages/admin/src-admin/src/components/Object/ObjectBrowserValue.tsx @@ -562,7 +562,9 @@ class ObjectBrowserValue extends Component<ObjectBrowserValueProps, ObjectBrowse {this.props.expertMode ? ( <Grid2> <FormControl style={styles.formControl}> - <InputLabel>{this.props.t('Value type')}</InputLabel> + <InputLabel style={{ marginTop: 10, marginLeft: -14 }}> + {this.props.t('Value type')} + </InputLabel> <Select variant="standard" value={this.state.type} @@ -674,10 +676,12 @@ class ObjectBrowserValue extends Component<ObjectBrowserValueProps, ObjectBrowse autoFocus error={!this.state.valid} type="number" - inputProps={{ - step: this.props.object.common.step, - min: this.props.object.common.min, - max: this.props.object.common.max, + slotProps={{ + htmlInput: { + step: this.props.object.common.step, + min: this.props.object.common.min, + max: this.props.object.common.max, + }, }} inputRef={this.inputRef} helperText={this.props.t( @@ -790,7 +794,11 @@ class ObjectBrowserValue extends Component<ObjectBrowserValueProps, ObjectBrowse sx={{ '&.MuiTextField-root': styles.expire }} label={this.props.t('Expire')} type="number" - inputProps={{ min: 0 }} + slotProps={{ + htmlInput: { + min: 0, + }, + }} helperText={this.props.t('in seconds')} defaultValue={this.expire} onChange={e => (this.expire = Number(e.target.value))} diff --git a/packages/admin/src-admin/src/tabs/Hosts.tsx b/packages/admin/src-admin/src/tabs/Hosts.tsx index 9b309fd0a..07ca59782 100644 --- a/packages/admin/src-admin/src/tabs/Hosts.tsx +++ b/packages/admin/src-admin/src/tabs/Hosts.tsx @@ -388,6 +388,7 @@ class Hosts extends Component<HostsProps, HostsState> { } renderTableHeader(): JSX.Element { + const fontSize = window.innerWidth < 100 ? 10 : window.innerWidth < 1200 ? 12 : 14; return ( <div style={styles.tabHeaderWrapper}> <div style={styles.tabHeaderFirstItem}>{this.t('Name:')}</div> @@ -395,39 +396,39 @@ class Hosts extends Component<HostsProps, HostsState> { {/* <div className={UtilsCommon.clsx(classes.tabHeaderItem, classes.hidden600)}>{t('Title:')}</div> */} <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800, { fontSize })} > CPU </Box> <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800, { fontSize })} > RAM </Box> <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden800, { fontSize })} > {this.t('Uptime')} </Box> <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden1100)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden1100, { fontSize })} > {this.t('Installed')} <div style={styles.jsController}>js-controller</div> </Box> <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden1100)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden1100, { fontSize })} > {this.t('Available')} <div style={styles.jsController}>js-controller</div> </Box> <Box component="div" - sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden600)} + sx={Utils.getStyle(this.props.theme, styles.tabHeaderItem, styles.hidden600, { fontSize })} > {this.t('Events')} </Box> From e5d741b38a94ee2dd58db71dee347bb41c3f0da8 Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Sun, 1 Dec 2024 15:53:38 +0000 Subject: [PATCH 2/6] Showed the version which is in repository by update of adapter to specific version --- packages/adapter-react-v5/README.md | 4 ++-- packages/admin/src-admin/package.json | 4 ++-- .../src/components/Adapters/AdapterGeneric.tsx | 18 +++++++++++++++--- packages/admin/src-admin/src/i18n/de.json | 2 ++ packages/admin/src-admin/src/i18n/en.json | 2 ++ packages/admin/src-admin/src/i18n/es.json | 2 ++ packages/admin/src-admin/src/i18n/fr.json | 2 ++ packages/admin/src-admin/src/i18n/it.json | 2 ++ packages/admin/src-admin/src/i18n/nl.json | 2 ++ packages/admin/src-admin/src/i18n/pl.json | 2 ++ packages/admin/src-admin/src/i18n/pt.json | 2 ++ packages/admin/src-admin/src/i18n/ru.json | 2 ++ packages/admin/src-admin/src/i18n/uk.json | 2 ++ packages/admin/src-admin/src/i18n/zh-cn.json | 2 ++ 14 files changed, 41 insertions(+), 7 deletions(-) diff --git a/packages/adapter-react-v5/README.md b/packages/adapter-react-v5/README.md index 99941567f..5653288df 100644 --- a/packages/adapter-react-v5/README.md +++ b/packages/adapter-react-v5/README.md @@ -13,7 +13,7 @@ If you want to create the configuration page with ReactJS: - Change `name` from `src` to `ADAPTERNAME-admin` (Of course replace `ADAPTERNAME` with yours) - Add to devDependencies: ```json - "@iobroker/adapter-react-v5": "^7.4.2", + "@iobroker/adapter-react-v5": "^7.4.3", ``` Versions can be higher. So your `src/package.json` should look like: @@ -24,7 +24,7 @@ If you want to create the configuration page with ReactJS: "version": "0.1.0", "private": true, "dependencies": { - "@iobroker/adapter-react-v5": "^7.4.2", + "@iobroker/adapter-react-v5": "^7.4.3", "@iobroker/build-tools": "^1.0.0", "babel-eslint": "^10.1.0", "react-scripts": "^5.0.1" diff --git a/packages/admin/src-admin/package.json b/packages/admin/src-admin/package.json index dbe018222..adbfaf300 100644 --- a/packages/admin/src-admin/package.json +++ b/packages/admin/src-admin/package.json @@ -103,5 +103,5 @@ } ] ], - "version": "7.4.2" -} + "version": "7.4.3" +} \ No newline at end of file diff --git a/packages/admin/src-admin/src/components/Adapters/AdapterGeneric.tsx b/packages/admin/src-admin/src/components/Adapters/AdapterGeneric.tsx index bed72cd3a..eedee40bc 100644 --- a/packages/admin/src-admin/src/components/Adapters/AdapterGeneric.tsx +++ b/packages/admin/src-admin/src/components/Adapters/AdapterGeneric.tsx @@ -134,6 +134,12 @@ export const genericStyles: Record<string, any> = { currentVersionText: (theme: IobTheme) => ({ color: theme.palette.mode === 'dark' ? '#a3ffa3' : '#009800', fontWeight: 'bold', + marginLeft: '4px', + }), + repoVersionText: (theme: IobTheme) => ({ + color: theme.palette.mode === 'dark' ? '#a3fcff' : '#005498', + fontWeight: 'bold', + marginLeft: '4px', }), rating: {}, containerVersion: {}, @@ -719,6 +725,8 @@ export default abstract class AdapterGeneric< return null; } + const repoVersion = this.props.context.repository[this.props.adapterName]?.version; + return ( <CustomModal title={this.props.context.t('Please select specific version of %s', this.props.adapterName)} @@ -829,9 +837,13 @@ export default abstract class AdapterGeneric< component="span" sx={this.styles.currentVersionText} >{`(${this.props.context.t('current')})`}</Box> - ) : ( - '' - )} + ) : null} + {repoVersion === version ? ( + <Box + component="span" + sx={this.styles.repoVersionText} + >{`(${this.props.context.t('repository')})`}</Box> + ) : null} </Typography> <Typography variant="body2" diff --git a/packages/admin/src-admin/src/i18n/de.json b/packages/admin/src-admin/src/i18n/de.json index 0aa115c90..9cb70579b 100644 --- a/packages/admin/src-admin/src/i18n/de.json +++ b/packages/admin/src-admin/src/i18n/de.json @@ -1293,6 +1293,7 @@ "copy": "Kopie", "copy note": "Strg+A gefolgt von Strg+C drücken, um den Inhalt in die Zwischenablage zu kopieren. Irgendwo klicken, um das Fenster zu schliessen.", "create operation": "erzeugen", + "current": "aktuelle", "custom enum": "Benutzerdefiniert", "custom group": "Benutzerdefinierte Gruppe", "custom range": "Benutzerdefinierter Bereich", @@ -1515,6 +1516,7 @@ "reload instance": "Instanz neu starten", "repeat": "wiederholen", "repo_update_hint": "Sie haben die Ausführung automatischer Upgrades für das „Beta“-Repository konfiguriert.\nBeachten Sie, dass dieser Adapter, wenn das Beta-Repository aktiv ist, Beta-Updates entsprechend dieser Konfiguration automatisch einbindet!", + "repository": "Repository", "rest": "Weitere (nur lesend)", "restart": "Automatisch neu starten", "restart script": "Skript neu starten", diff --git a/packages/admin/src-admin/src/i18n/en.json b/packages/admin/src-admin/src/i18n/en.json index 7ed3c9603..47b848b0f 100644 --- a/packages/admin/src-admin/src/i18n/en.json +++ b/packages/admin/src-admin/src/i18n/en.json @@ -1293,6 +1293,7 @@ "copy": "copy", "copy note": "Press Ctrl+A and Ctrl+C to copy the log to the clipboard and click with the mouse anywhere to close.", "create operation": "create", + "current": "current", "custom enum": "?ustom enum", "custom group": "Custom group", "custom range": "custom range", @@ -1515,6 +1516,7 @@ "reload instance": "reload instance", "repeat": "repeat", "repo_update_hint": "You have configured to run automatic upgrades for the \"beta\" repository, be aware that if the beta repository is active this adapter will pull in beta updates automatically according to this configuration!", + "repository": "repository", "rest": "rest (read only)", "restart": "auto restart", "restart script": "restart script", diff --git a/packages/admin/src-admin/src/i18n/es.json b/packages/admin/src-admin/src/i18n/es.json index 2a84ea665..f84771dec 100644 --- a/packages/admin/src-admin/src/i18n/es.json +++ b/packages/admin/src-admin/src/i18n/es.json @@ -1293,6 +1293,7 @@ "copy": "copiar", "copy note": "Presione Ctrl + A y luego Ctrl + C para copiar el contenido al portapapeles. Haga clic en algún lugar para cerrar la ventana.", "create operation": "producir", + "current": "actual", "custom enum": "Enum personalizado", "custom group": "Grupo personalizado", "custom range": "rango personalizado", @@ -1515,6 +1516,7 @@ "reload instance": "reiniciar la instancia", "repeat": "repetir", "repo_update_hint": "Ha configurado para ejecutar actualizaciones automáticas para el repositorio \"beta\". Tenga en cuenta que si el repositorio beta está activo, este adaptador obtendrá actualizaciones beta automáticamente de acuerdo con esta configuración.", + "repository": "repositorio", "rest": "además (sólo lectura)", "restart": "reiniciar", "restart script": "reiniciar el script", diff --git a/packages/admin/src-admin/src/i18n/fr.json b/packages/admin/src-admin/src/i18n/fr.json index de653ee56..58a00aeb4 100644 --- a/packages/admin/src-admin/src/i18n/fr.json +++ b/packages/admin/src-admin/src/i18n/fr.json @@ -1293,6 +1293,7 @@ "copy": "copie", "copy note": "Appuyez sur Ctrl + A puis sur Ctrl + C pour copier le contenu dans le presse-papiers. Cliquez quelque part pour fermer la fenêtre.", "create operation": "créer", + "current": "actuel", "custom enum": "Enum personnalisé", "custom group": "Groupe personnalisé", "custom range": "gamme personnalisée", @@ -1515,6 +1516,7 @@ "reload instance": "reload instance", "repeat": "répéter", "repo_update_hint": "Vous avez configuré pour exécuter des mises à niveau automatiques pour le référentiel \"bêta\", sachez que si le référentiel bêta est actif, cet adaptateur extraira automatiquement les mises à jour bêta en fonction de cette configuration !", + "repository": "dépôt", "rest": "autres (lecture seulement)", "restart": "redémarrer", "restart script": "redémarrer le script", diff --git a/packages/admin/src-admin/src/i18n/it.json b/packages/admin/src-admin/src/i18n/it.json index 905fac62b..7f535e960 100644 --- a/packages/admin/src-admin/src/i18n/it.json +++ b/packages/admin/src-admin/src/i18n/it.json @@ -1293,6 +1293,7 @@ "copy": "Copia", "copy note": "Premi Ctrl + A e Ctrl + C per copiare il registro negli appunti e fai clic con il mouse ovunque per chiuderlo.", "create operation": "Creare", + "current": "corrente", "custom enum": "Enum personalizzato", "custom group": "Gruppo personalizzato", "custom range": "gamma personalizzata", @@ -1515,6 +1516,7 @@ "reload instance": "Ricarica istanza", "repeat": "ripetere", "repo_update_hint": "Hai configurato per eseguire aggiornamenti automatici per il repository \"beta\", tieni presente che se il repository beta è attivo questo adattatore inserirà automaticamente gli aggiornamenti beta in base a questa configurazione!", + "repository": "deposito", "rest": "Riposo (sola lettura)", "restart": "Riavvio automatico", "restart script": "Riavviare lo script", diff --git a/packages/admin/src-admin/src/i18n/nl.json b/packages/admin/src-admin/src/i18n/nl.json index 8ebbc2ccd..3c78d7b54 100644 --- a/packages/admin/src-admin/src/i18n/nl.json +++ b/packages/admin/src-admin/src/i18n/nl.json @@ -1293,6 +1293,7 @@ "copy": "kopiëren", "copy note": "Druk op Ctrl + A en vervolgens op Ctrl + C om de inhoud naar het klembord te kopiëren. Klik ergens om het venster te sluiten.", "create operation": "maken", + "current": "huidige", "custom enum": "Aangepaste enum", "custom group": "Aangepaste groep", "custom range": "aangepast bereik", @@ -1515,6 +1516,7 @@ "reload instance": "herlaad instantie", "repeat": "herhaling", "repo_update_hint": "U heeft geconfigureerd om automatische upgrades uit te voeren voor de \"bèta\"-repository. Houd er rekening mee dat als de bèta-repository actief is, deze adapter automatisch bèta-updates zal binnenhalen volgens deze configuratie!", + "repository": "archief", "rest": "overige (alleen lezen)", "restart": "herstarten", "restart script": "herstart script", diff --git a/packages/admin/src-admin/src/i18n/pl.json b/packages/admin/src-admin/src/i18n/pl.json index 80cd089b8..142fdb452 100644 --- a/packages/admin/src-admin/src/i18n/pl.json +++ b/packages/admin/src-admin/src/i18n/pl.json @@ -1293,6 +1293,7 @@ "copy": "Kopiuj", "copy note": "Naciśnij Ctrl + A i Ctrl + C, aby skopiować dziennik do schowka i kliknij myszką w dowolnym miejscu, aby zamknąć.", "create operation": "Stwórz", + "current": "bieżący", "custom enum": "niestandardowe wyliczenie", "custom group": "Grupa niestandardowa", "custom range": "Zakres niestandardowy", @@ -1515,6 +1516,7 @@ "reload instance": "przeładuj instancję", "repeat": "powtarzać", "repo_update_hint": "Skonfigurowałeś automatyczne aktualizacje repozytorium „beta”. Pamiętaj, że jeśli repozytorium beta jest aktywne, ten adapter automatycznie pobierze aktualizacje beta zgodnie z tą konfiguracją!", + "repository": "repozytorium", "rest": "reszta (tylko do odczytu)", "restart": "auto restart", "restart script": "zrestartuj skrypt", diff --git a/packages/admin/src-admin/src/i18n/pt.json b/packages/admin/src-admin/src/i18n/pt.json index 56969a38f..8e362838d 100644 --- a/packages/admin/src-admin/src/i18n/pt.json +++ b/packages/admin/src-admin/src/i18n/pt.json @@ -1293,6 +1293,7 @@ "copy": "copiar", "copy note": "Pressione Ctrl + A e depois Ctrl + C para copiar o conteúdo para a o clipboard. Clique em algum lugar para fechar a janela.", "create operation": "produzir", + "current": "atual", "custom enum": "Enum personalizado", "custom group": "Grupo personalizado", "custom range": "intervalo personalizado", @@ -1515,6 +1516,7 @@ "reload instance": "reiniciar a instância", "repeat": "repetir", "repo_update_hint": "Você configurou para executar atualizações automáticas para o repositório \"beta\", esteja ciente de que se o repositório beta estiver ativo este adaptador puxará atualizações beta automaticamente de acordo com esta configuração!", + "repository": "repositório", "rest": "além disso (apenas leitura)", "restart": "reiniciar", "restart script": "reiniciar o script", diff --git a/packages/admin/src-admin/src/i18n/ru.json b/packages/admin/src-admin/src/i18n/ru.json index 636c80096..fe8374625 100644 --- a/packages/admin/src-admin/src/i18n/ru.json +++ b/packages/admin/src-admin/src/i18n/ru.json @@ -1293,6 +1293,7 @@ "copy": "Копировать", "copy note": "Нажмите Ctrl+A и Ctrl+C, что бы скопировать в буфер обмена и после этого нажмите мышкой в любом месте.", "create operation": "Создавать", + "current": "текущая", "custom enum": "Своя группа", "custom group": "Пользовательская группа", "custom range": "настраиваемый диапазон", @@ -1515,6 +1516,7 @@ "reload instance": "Перезагрузить экземпляр", "repeat": "повтор", "repo_update_hint": "Вы настроили автоматические обновления для «бета-репозитория». Имейте в виду, что если бета-репозиторий активен, этот адаптер будет автоматически получать бета-обновления в соответствии с этой конфигурацией!", + "repository": "репозиторий", "rest": "Остальные параметры (только для чтения)", "restart": "Перезапустить", "restart script": "Перезапустить скрипт", diff --git a/packages/admin/src-admin/src/i18n/uk.json b/packages/admin/src-admin/src/i18n/uk.json index 2160b03cf..a7fac89b0 100644 --- a/packages/admin/src-admin/src/i18n/uk.json +++ b/packages/admin/src-admin/src/i18n/uk.json @@ -1293,6 +1293,7 @@ "copy": "копія", "copy note": "Натисніть Ctrl+A та Ctrl+C, щоб скопіювати журнал у буфер обміну, і клацніть мишкою будь-де, щоб закрити.", "create operation": "створити", + "current": "поточний", "custom enum": "?custom перелік", "custom group": "Спеціальна група", "custom range": "індивідуальний діапазон", @@ -1515,6 +1516,7 @@ "reload instance": "перезавантажити екземпляр", "repeat": "повторити", "repo_update_hint": "Ви налаштували запуск автоматичних оновлень для репозиторію \"бета-версії\", майте на увазі, що якщо бета-репозиторій активний, цей адаптер автоматично завантажуватиме бета-оновлення відповідно до цієї конфігурації!", + "repository": "репозиторій", "rest": "відпочинок (тільки для читання)", "restart": "автоматичний перезапуск", "restart script": "перезапустити сценарій", diff --git a/packages/admin/src-admin/src/i18n/zh-cn.json b/packages/admin/src-admin/src/i18n/zh-cn.json index 3b18ff18c..6dcbe0233 100644 --- a/packages/admin/src-admin/src/i18n/zh-cn.json +++ b/packages/admin/src-admin/src/i18n/zh-cn.json @@ -1293,6 +1293,7 @@ "copy": "复制", "copy note": "按Ctrl + A和Ctrl + C将日志复制到剪贴板,然后单击鼠标左键关闭。", "create operation": "创建", + "current": "current", "custom enum": "?ustom enum", "custom group": "自定义组", "custom range": "自定义范围", @@ -1515,6 +1516,7 @@ "reload instance": "重新加载程序", "repeat": "重复", "repo_update_hint": "您已配置为运行“beta”存储库的自动升级,请注意,如果 beta 存储库处于活动状态,则此适配器将根据此配置自动提取 beta 更新!", + "repository": "repository", "rest": "休息(只读)", "restart": "自动重启", "restart script": "重启自动化", From 02a99295afd4bd30fedd4db114ff1364836f49d3 Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Fri, 6 Dec 2024 10:28:04 +0000 Subject: [PATCH 3/6] Corrected properties for custom components: https://github.com/ioBroker/ioBroker.admin/issues/2846 --- packages/jsonConfig/src/JsonConfigComponent/ConfigPanel.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/jsonConfig/src/JsonConfigComponent/ConfigPanel.tsx b/packages/jsonConfig/src/JsonConfigComponent/ConfigPanel.tsx index 361893219..d54832ab1 100644 --- a/packages/jsonConfig/src/JsonConfigComponent/ConfigPanel.tsx +++ b/packages/jsonConfig/src/JsonConfigComponent/ConfigPanel.tsx @@ -4,7 +4,7 @@ import { Grid2, Accordion, AccordionSummary, AccordionDetails, Typography, Box } import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'; -import { type IobTheme, Utils } from '@iobroker/adapter-react-v5'; +import { type AdminConnection, type IobTheme, Utils } from '@iobroker/adapter-react-v5'; import type { ConfigItemPanel } from '#JC/types'; import ConfigGeneric, { type ConfigGenericState, type ConfigGenericProps } from './ConfigGeneric'; @@ -180,6 +180,7 @@ class ConfigPanel extends ConfigGeneric<ConfigPanelProps, ConfigPanelState> { const type = items[attr].type || 'panel'; let ItemComponent: typeof ConfigGeneric<ConfigGenericProps, any>; + let socket: string | AdminConnection = 'Use this.props.oContext.socket!'; if (type === 'custom') { // name // url @@ -191,6 +192,7 @@ class ConfigPanel extends ConfigGeneric<ConfigPanelProps, ConfigPanelState> { console.error(`Cannot find custom component: ${items[attr].component}`); ItemComponent = ConfigGeneric; } + socket = this.props.oContext.socket; } else if (type === 'panel') { ItemComponent = ConfigPanel; } else { @@ -199,6 +201,8 @@ class ConfigPanel extends ConfigGeneric<ConfigPanelProps, ConfigPanelState> { return ( <ItemComponent + // @ts-expect-error Temporary work-around, till all custom components will not migrate to oContext + socket={socket} oContext={this.props.oContext} key={`${attr}_${this.props.index === undefined ? '' : this.props.index}`} index={this.props.index} From 752d5ceda5146e32c10f0bb046ed50a530607cfd Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Fri, 6 Dec 2024 20:06:24 +0000 Subject: [PATCH 4/6] Updated packages --- package-lock.json | 220 ++++++++++++------ packages/adapter-react-v5/package.json | 8 +- .../src/Components/IconDeviceType.tsx | 5 + .../src/Components/ObjectBrowser.tsx | 2 +- .../adapter-react-v5/src/LegacyConnection.tsx | 1 - packages/admin/package.json | 4 +- packages/admin/src-admin/package.json | 4 +- 7 files changed, 158 insertions(+), 86 deletions(-) diff --git a/package-lock.json b/package-lock.json index a66eb384e..4a7d699ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4089,15 +4089,15 @@ } }, "node_modules/@iobroker/adapter-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.2.2.tgz", - "integrity": "sha512-Cuiga42WRkJ/NduyrIGgSVWpLgD6ihIflIvZiWVThwgWfDyI+Okgw3snVSlf/p4ki6BAr3MH6Dfa0qPySCGWvQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.2.3.tgz", + "integrity": "sha512-ktk2KGexzOAbUZpkv/9JATJvO2DUHIfQAWhtpRjLxcR3+hs5/73hvt46XPSqwSpY/wnw5+E7kM7BqkfN7G19IQ==", "license": "MIT", "engines": { "node": ">=16" }, "peerDependencies": { - "@iobroker/types": "^6.0.11" + "@iobroker/types": ">=6.0.11" } }, "node_modules/@iobroker/adapter-react-v5": { @@ -4105,9 +4105,9 @@ "link": true }, "node_modules/@iobroker/admin-component-easy-access": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@iobroker/admin-component-easy-access/-/admin-component-easy-access-1.0.8.tgz", - "integrity": "sha512-JSb+7WIRhoY7CGeCJ3UsnVU/+4ZgnGy7e7r9kgI0mR93Jji42+WpwQMwdO446QQhCsloIIM+xxEOixZll/SFNQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@iobroker/admin-component-easy-access/-/admin-component-easy-access-1.0.11.tgz", + "integrity": "sha512-tp5PTdnJv6E0i13h+cgtTLitsLjSnbkJMrNLmpTtWsru+D5ee84XStyEslct52mcfzUUQyd5b3MvN1Jy5BVLMA==", "dev": true }, "node_modules/@iobroker/build-tools": { @@ -4216,12 +4216,12 @@ } }, "node_modules/@iobroker/db-base": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-6.0.11.tgz", - "integrity": "sha512-WImlfdwr0O5+sQOQkI9zaScB4UFNuIGXs+K+5bL4+f1yJIPIuFU+njBDI7vUz6zoE+cLGkQRqNxwh6wfMVxBuQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-7.0.4.tgz", + "integrity": "sha512-f94LmckkYnb7HR4t6tNGjiu4fMVH5t+yLuxFvdyxSOfWSIEFJ/wDdD+g0DMZlx8qWzcAujaGNg2hVjQXJhf6+Q==", "license": "MIT", "dependencies": { - "@iobroker/js-controller-common-db": "6.0.11", + "@iobroker/js-controller-common-db": "7.0.4", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0", "respjs": "^4.2.0" @@ -4245,13 +4245,13 @@ } }, "node_modules/@iobroker/db-objects-file": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-6.0.11.tgz", - "integrity": "sha512-MqCzDftazOj+IZQcfviaG7xUTdIuILjrjmf2wXSbFYsZbnK5zDhm4wxnWPT+dVrPBWnqWJ3aAzhhaq6I3BQPqQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-7.0.4.tgz", + "integrity": "sha512-c8orlztDj/ogdsv1zDp3cl682x+36CmX5PPFY2nNvRC72fxXR0m5KAZKIJaoXr/fceixitPbZQKK5M0428LUdw==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", + "@iobroker/db-base": "7.0.4", + "@iobroker/db-objects-redis": "7.0.4", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -4274,15 +4274,15 @@ } }, "node_modules/@iobroker/db-objects-jsonl": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-6.0.11.tgz", - "integrity": "sha512-DBPykrMKvx3mxPVB1U8HE6d8NbA5pSHYIEXq+b6/IgwLLGX+LmjSz5TNqmO5gaYA6a4z4kOg44F56SRrUBIgCg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-7.0.4.tgz", + "integrity": "sha512-2fxY5vgi8t+bcbxiBANQ7pVg8nB3vyEpBxMr3sPHfuMZmveW+bJAksT8Pw0723DtpR7W2BIte2WwTtDhWB9VIQ==", "license": "Apache 2.0", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "6.0.11", - "@iobroker/db-objects-file": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", + "@iobroker/db-base": "7.0.4", + "@iobroker/db-objects-file": "7.0.4", + "@iobroker/db-objects-redis": "7.0.4", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -4305,12 +4305,12 @@ } }, "node_modules/@iobroker/db-objects-redis": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-6.0.11.tgz", - "integrity": "sha512-aOAcfG1iCWVilTkjhbTialP9BhYh+HrB1RwfIqF/56MMroKFCPMCi9E/zlrooNYWWAdN6EFb4DcIM4ZpQlXDVg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-7.0.4.tgz", + "integrity": "sha512-nV+WtmZcIK0JRvOGX8LO64JfR5yM7RpxVyrPdsYAmVMR3sings/ihRMIV2ZLMir5LLyWhIttXHBFFRMJU7Od6w==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "6.0.11", + "@iobroker/db-base": "7.0.4", "deep-clone": "^3.0.3", "ioredis": "^4.28.2", "mime-types": "^2.1.35", @@ -4322,40 +4322,40 @@ } }, "node_modules/@iobroker/db-states-file": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-6.0.11.tgz", - "integrity": "sha512-K1tRuaqaIpwlpeo/z2btWTPKsILYM5jXf+8aw3AVCwULA328MbMpBBMreehliGGVTTIUoq25ZdcR/zLjYl2lJA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-7.0.4.tgz", + "integrity": "sha512-o9kaDrHfqRtUlnXCC3vSUNOcplsykU5ybUcBm/z9kJTHiokGyFcQMGk+GW/CjSilBSSbRhoDdETxib9ZP2gbzg==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "6.0.11", - "@iobroker/db-states-redis": "6.0.11" + "@iobroker/db-base": "7.0.4", + "@iobroker/db-states-redis": "7.0.4" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-jsonl": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-6.0.11.tgz", - "integrity": "sha512-Q06TvVLdfH+FPBo29CHLLIXeaOZXJ3tyImlp17mOr9wVqCr64sN6iZ+vsIe5Dd4j7nzg+pptR2il8TgAyJg8Yw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-7.0.4.tgz", + "integrity": "sha512-PCohWxHHktNHlCBB/dYAiXi/uA/VZuO/UKa8U1b+Gwst4fXblM+u1PedEU+7CtId+dM97Y6J8l48BcBR373Keg==", "license": "MIT", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "6.0.11", - "@iobroker/db-states-file": "6.0.11", - "@iobroker/db-states-redis": "6.0.11" + "@iobroker/db-base": "7.0.4", + "@iobroker/db-states-file": "7.0.4", + "@iobroker/db-states-redis": "7.0.4" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-redis": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-6.0.11.tgz", - "integrity": "sha512-9/oiBfCMmPLDIj3IJSHF3TNbbksEOF1t6JlLSkPI0Vvs8WAE1C+dUb3VSq9FFKk9d6Fp00l8JObACPD01/AImg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-7.0.4.tgz", + "integrity": "sha512-RgoLcmpvx+lJGG06KU4X8+o+eDqEp4g/s/KPBzL9tpg1eRPK1MeIPfbCSy3FKTDyOsESnisbORNPFgICr88zsw==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "6.0.11", + "@iobroker/db-base": "7.0.4", "ioredis": "^4.28.2" }, "engines": { @@ -4408,19 +4408,20 @@ } }, "node_modules/@iobroker/js-controller-common": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-6.0.11.tgz", - "integrity": "sha512-VZH04ksSPADIltOQsy83PkQkaHhLEdCAnwOWJARrLWg6aGtl0DjAoQDl6DmgXErkDWurlRH73BdkfaVh5+TZQg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-7.0.4.tgz", + "integrity": "sha512-qLifx26Tt0jf0WjnCluOCjWl+o3gzOFdvkUO4s1WA8wngDW3aGWXt6pWsR+VfWPDmmJ/X9pBq+ASb9on/YlFqQ==", "license": "MIT", "dependencies": { - "@iobroker/db-objects-file": "6.0.11", - "@iobroker/db-objects-jsonl": "6.0.11", - "@iobroker/db-objects-redis": "6.0.11", - "@iobroker/db-states-file": "6.0.11", - "@iobroker/db-states-jsonl": "6.0.11", - "@iobroker/db-states-redis": "6.0.11", - "@iobroker/js-controller-common-db": "6.0.11", - "fs-extra": "^11.1.0" + "@iobroker/db-objects-file": "7.0.4", + "@iobroker/db-objects-jsonl": "7.0.4", + "@iobroker/db-objects-redis": "7.0.4", + "@iobroker/db-states-file": "7.0.4", + "@iobroker/db-states-jsonl": "7.0.4", + "@iobroker/db-states-redis": "7.0.4", + "@iobroker/js-controller-common-db": "7.0.4", + "fs-extra": "^11.1.0", + "jszip": "^3.10.1" }, "engines": { "node": ">=12.0.0" @@ -4431,13 +4432,13 @@ } }, "node_modules/@iobroker/js-controller-common-db": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-6.0.11.tgz", - "integrity": "sha512-7HhcEgK3qT6oKWF9U4a7RmruNyDvsxXf/YXWKuE2C4iuoOX5Q9dJDlYs1LP6t9eGGULaylVa06v5nK9xh0VCuA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.0.4.tgz", + "integrity": "sha512-MM79pa8BFZPnx+xud7ac5PSYmH1alWbthvKwkIjVxqoZMIUftKtFqpc3fzn2QY6kuZxxsSrb4i9pJ0IM7+7aig==", "license": "MIT", "dependencies": { "@alcalzone/pak": "^0.8.1", - "axios": "^1.6.3", + "axios": "^1.7.4", "ci-info": "^3.8.0", "deep-clone": "^3.0.3", "event-stream": "^4.0.1", @@ -4594,6 +4595,7 @@ "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-6.0.11.tgz", "integrity": "sha512-RNDURjtL5Cm9wt6ocCqdRi86Qx1350zBIvvrJ9+Fjgasoi6cWCdoOghkwEeb95TH2j//q/uLqWwL8SZ0vxx6Kw==", "license": "MIT", + "peer": true, "engines": { "node": ">=12.0.0" } @@ -25080,9 +25082,9 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -25104,7 +25106,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -25119,6 +25121,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express-fileupload": { @@ -27798,6 +27804,12 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", @@ -31294,6 +31306,48 @@ "node": ">=4.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/just-diff": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", @@ -31815,6 +31869,15 @@ "node": ">=8" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -35511,9 +35574,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)", - "peer": true + "license": "(MIT AND Zlib)" }, "node_modules/parallel-transform": { "version": "1.2.0", @@ -35875,9 +35936,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, "node_modules/path-type": { @@ -40934,9 +40995,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -47009,10 +47068,10 @@ "dependencies": { "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", - "@iobroker/js-controller-common": "^6.0.11", - "@iobroker/js-controller-common-db": "6.0.11", + "@iobroker/js-controller-common": "^7.0.4", + "@iobroker/js-controller-common-db": "^7.0.4", "@iobroker/socket-client": "^3.1.3", - "@iobroker/types": "^6.0.11", + "@iobroker/types": "^7.0.4", "@mui/icons-material": "^6.1.9", "@mui/material": "^6.1.9", "@sentry/browser": "^8.41.0", @@ -47042,12 +47101,21 @@ "@rollup/rollup-linux-x64-gnu": "*" } }, + "packages/adapter-react-v5/node_modules/@iobroker/types": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.4.tgz", + "integrity": "sha512-wCRFt525dxTjbMQwxbXK5GVdivJ6tywolsROOu19w1M+coOfnqkv5+eBsXDUL1zqLrDyzoUxfYtwF0Gs5R0AyA==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "packages/admin": { "name": "iobroker.admin", "version": "7.4.3", "license": "MIT", "dependencies": { - "@iobroker/adapter-core": "^3.2.2", + "@iobroker/adapter-core": "^3.2.3", "@iobroker/i18n": "^0.3.1", "@iobroker/socket-classes": "^1.6.1", "@iobroker/webserver": "^1.0.6", @@ -47058,7 +47126,7 @@ "body-parser": "^1.20.3", "compression": "^1.7.5", "connect-flash": "^0.1.1", - "express": "^4.21.1", + "express": "^4.21.2", "express-fileupload": "^1.5.1", "express-session": "^1.18.1", "json5": "^2.2.3", @@ -48024,7 +48092,7 @@ }, "packages/admin/src-admin": { "name": "src-rx", - "version": "7.4.2", + "version": "7.4.3", "dev": true, "dependencies": { "@iobroker/adapter-react-v5": "file:../../adapter-react-v5", @@ -48041,7 +48109,7 @@ "@fnando/sparkline": "^0.3.10", "@foxriver76/iob-component-lib": "^0.1.6", "@honkhonk/vite-plugin-svgr": "^1.1.0", - "@iobroker/admin-component-easy-access": "^1.0.8", + "@iobroker/admin-component-easy-access": "^1.0.11", "@iobroker/dm-utils": "^0.6.9", "@iobroker/socket-client": "^3.1.3", "@originjs/vite-plugin-commonjs": "^1.0.3", diff --git a/packages/adapter-react-v5/package.json b/packages/adapter-react-v5/package.json index d5c811e52..fc970fb5d 100644 --- a/packages/adapter-react-v5/package.json +++ b/packages/adapter-react-v5/package.json @@ -56,13 +56,13 @@ "dependencies": { "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", - "@iobroker/js-controller-common": "^6.0.11", - "@iobroker/js-controller-common-db": "6.0.11", + "@iobroker/js-controller-common": "^7.0.4", + "@iobroker/js-controller-common-db": "^7.0.4", "@iobroker/socket-client": "^3.1.3", - "@iobroker/types": "^6.0.11", + "@iobroker/types": "^7.0.4", "@mui/icons-material": "^6.1.9", "@mui/material": "^6.1.9", - "@sentry/browser": "^8.41.0", + "@sentry/browser": "^8.42.0", "cronstrue": "^2.52.0", "react-color": "^2.19.3", "react-colorful": "^5.6.1", diff --git a/packages/adapter-react-v5/src/Components/IconDeviceType.tsx b/packages/adapter-react-v5/src/Components/IconDeviceType.tsx index 2b63a9823..96fa0ec6b 100644 --- a/packages/adapter-react-v5/src/Components/IconDeviceType.tsx +++ b/packages/adapter-react-v5/src/Components/IconDeviceType.tsx @@ -32,6 +32,7 @@ import { Warning, Water, WaterDrop, + WbIridescent, WbSunny, Whatshot, Window, @@ -61,6 +62,7 @@ const deviceTypes = [ 'gate', 'hue', 'humidity', + 'illuminance', 'image', 'info', 'instance', @@ -143,6 +145,9 @@ export function getDeviceIcon(type: DeviceType, props?: IconProps): React.JSX.El if (type === 'humidity') { SvgComponent = WaterDrop; } + if (type === 'illuminance') { + SvgComponent = WbIridescent; + } if (type === 'image') { SvgComponent = Image; } diff --git a/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx b/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx index 541bb907c..c5e4439a1 100644 --- a/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx +++ b/packages/adapter-react-v5/src/Components/ObjectBrowser.tsx @@ -5576,7 +5576,7 @@ export class ObjectBrowserClass extends Component<ObjectBrowserProps, ObjectBrow from: false, ack: false, q: false, - addID: false, + addId: false, aggregate: 'minmax', }) .then(values => { diff --git a/packages/adapter-react-v5/src/LegacyConnection.tsx b/packages/adapter-react-v5/src/LegacyConnection.tsx index d84ca420f..3ca17d91f 100644 --- a/packages/adapter-react-v5/src/LegacyConnection.tsx +++ b/packages/adapter-react-v5/src/LegacyConnection.tsx @@ -1674,7 +1674,6 @@ export class LegacyConnection { obj._id = newId as ioBroker.ObjectIDs.Group; if (newName !== undefined) { obj.common = obj.common || ({} as ioBroker.GroupCommon); - // @ts-expect-error will be corrected in the next js-controller release obj.common.name = newName; } diff --git a/packages/admin/package.json b/packages/admin/package.json index d01c2e4dd..892688f42 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -23,7 +23,7 @@ "setup" ], "dependencies": { - "@iobroker/adapter-core": "^3.2.2", + "@iobroker/adapter-core": "^3.2.3", "@iobroker/i18n": "^0.3.1", "@iobroker/socket-classes": "^1.6.1", "@iobroker/webserver": "^1.0.6", @@ -34,7 +34,7 @@ "body-parser": "^1.20.3", "compression": "^1.7.5", "connect-flash": "^0.1.1", - "express": "^4.21.1", + "express": "^4.21.2", "express-fileupload": "^1.5.1", "express-session": "^1.18.1", "json5": "^2.2.3", diff --git a/packages/admin/src-admin/package.json b/packages/admin/src-admin/package.json index adbfaf300..1644ae1a7 100644 --- a/packages/admin/src-admin/package.json +++ b/packages/admin/src-admin/package.json @@ -35,7 +35,7 @@ "@fnando/sparkline": "^0.3.10", "@foxriver76/iob-component-lib": "^0.1.6", "@honkhonk/vite-plugin-svgr": "^1.1.0", - "@iobroker/admin-component-easy-access": "^1.0.8", + "@iobroker/admin-component-easy-access": "^1.0.11", "@iobroker/dm-utils": "^0.6.9", "@iobroker/socket-client": "^3.1.3", "@originjs/vite-plugin-commonjs": "^1.0.3", @@ -104,4 +104,4 @@ ] ], "version": "7.4.3" -} \ No newline at end of file +} From 8808e77cc6a29b42d055c4a770ee3e08114eadfc Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Sun, 8 Dec 2024 12:34:25 +0000 Subject: [PATCH 5/6] Added button to clear "updatable" adapters if nothing shown --- package-lock.json | 186 +++++++----------- packages/adapter-react-v5/src/i18n/de.json | 4 +- packages/admin/package.json | 4 +- .../src/components/Adapters/AdaptersList.tsx | 67 +++++-- packages/admin/src-admin/src/i18n/de.json | 5 +- packages/admin/src-admin/src/i18n/en.json | 1 + packages/admin/src-admin/src/i18n/es.json | 1 + packages/admin/src-admin/src/i18n/fr.json | 1 + packages/admin/src-admin/src/i18n/it.json | 1 + packages/admin/src-admin/src/i18n/nl.json | 1 + packages/admin/src-admin/src/i18n/pl.json | 1 + packages/admin/src-admin/src/i18n/pt.json | 1 + packages/admin/src-admin/src/i18n/ru.json | 1 + packages/admin/src-admin/src/i18n/uk.json | 1 + packages/admin/src-admin/src/i18n/zh-cn.json | 1 + .../admin/src-admin/src/tabs/Adapters.tsx | 44 +++-- .../src/JsonConfigComponent/ConfigTable.tsx | 2 +- 17 files changed, 172 insertions(+), 150 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a7d699ab..f2f91da85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4111,9 +4111,9 @@ "dev": true }, "node_modules/@iobroker/build-tools": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-2.0.9.tgz", - "integrity": "sha512-IE/hawJUAWJ2xsbZawpMyQf3pHd+KhA3TI9/7wIZnR2KRCiBo/kv8YTIL7SVPd9G08/Z0NDUW2CEdJXAYu3kSw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-2.0.11.tgz", + "integrity": "sha512-rlc9WpKQ/14chWSW6disUYcTuIgy/qXazDsdEwtMxxp1XydWV6VJz3L/we5YC37LpIYTnpBsgzm2vb+kpDWmQw==", "dev": true, "dependencies": { "glob": "^11.0.0" @@ -6831,9 +6831,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.1.tgz", - "integrity": "sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.5.0.tgz", + "integrity": "sha512-6TQAc/5uRILE6deixJ1CR8rXyTbzXIXNgO1D0Woi9Bqicz2FV5iKP3BHYEg6o4UATCMcbQQ0jbmeaOkn/HQk2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6998,92 +6998,75 @@ "license": "MIT" }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.41.0.tgz", - "integrity": "sha512-nU7Bn3jEUmf1QXRUT3j2ewUBlFJpe9vnAnjqpeVPDWTsVI52BwVNcJHuE37PrGs66OZ1ZkGMfKnQk43oCAa+oQ==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.42.0.tgz", + "integrity": "sha512-xzgRI0wglKYsPrna574w1t38aftuvo44gjOKFvPNGPnYfiW9y4m+64kUz3JFbtanvOrKPcaITpdYiB4DeJXEbA==", "license": "MIT", "dependencies": { - "@sentry/core": "8.41.0", - "@sentry/types": "8.41.0" + "@sentry/core": "8.42.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.41.0.tgz", - "integrity": "sha512-bw+BrSNw8abOnu/IpD8YSbYubXkkT8jyNS7TM4e4UPZMuXcbtia7/r5d7kAiUfKv/sV5PNMlZLOk+EYJeLTANg==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.42.0.tgz", + "integrity": "sha512-dkIw5Wdukwzngg5gNJ0QcK48LyJaMAnBspqTqZ3ItR01STi6Z+6+/Bt5XgmrvDgRD+FNBinflc5zMmfdFXXhvw==", "license": "MIT", "dependencies": { - "@sentry/core": "8.41.0", - "@sentry/types": "8.41.0" + "@sentry/core": "8.42.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.41.0.tgz", - "integrity": "sha512-ByXEY7JI95y4Qr9fS3d28l9uuVU5Qa0HgL+xDmYElNx7CXz3Q9hFN6ibgUeC3h8BO5pDULxWNgAppl7FRY8N5w==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.42.0.tgz", + "integrity": "sha512-oNcJEBlDfXnRFYC5Mxj5fairyZHNqlnU4g8kPuztB9G5zlsyLgWfPxzcn1ixVQunth2/WZRklDi4o1ZfyHww7w==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.41.0", - "@sentry/core": "8.41.0", - "@sentry/types": "8.41.0" + "@sentry-internal/browser-utils": "8.42.0", + "@sentry/core": "8.42.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.41.0.tgz", - "integrity": "sha512-lpgOBHWr1ZNxidD72A2pfoUMjIpwonOPYoQZWAHr86Oa3eIVQOyfklZlHW+gKPFl2/IEl9Lbtcke0JiDp3dkIQ==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.42.0.tgz", + "integrity": "sha512-XrPErqVhPsPh/oFLVKvz7Wb+Fi2J1zCPLeZCxWqFuPWI2agRyLVu0KvqJyzSpSrRAEJC/XFzuSVILlYlXXSfgA==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.41.0", - "@sentry/core": "8.41.0", - "@sentry/types": "8.41.0" + "@sentry-internal/replay": "8.42.0", + "@sentry/core": "8.42.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/browser": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.41.0.tgz", - "integrity": "sha512-FfAU55eYwW2lG4M3dEw2472RvHrD5YWSfHCZvuRf/4skX38kFvKghZQ+epL+CVHTzvIRHOrbj8qQK6YLTGl9ew==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.42.0.tgz", + "integrity": "sha512-lStrEk609KJHwXfDrOgoYVVoFFExixHywxSExk7ZDtwj2YPv6r6Y1gogvgr7dAZj7jWzadHkxZ33l9EOSJBfug==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.41.0", - "@sentry-internal/feedback": "8.41.0", - "@sentry-internal/replay": "8.41.0", - "@sentry-internal/replay-canvas": "8.41.0", - "@sentry/core": "8.41.0", - "@sentry/types": "8.41.0" + "@sentry-internal/browser-utils": "8.42.0", + "@sentry-internal/feedback": "8.42.0", + "@sentry-internal/replay": "8.42.0", + "@sentry-internal/replay-canvas": "8.42.0", + "@sentry/core": "8.42.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/core": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.41.0.tgz", - "integrity": "sha512-3v7u3t4LozCA5SpZY4yqUN2U3jSrkXNoLgz6L2SUUiydyCuSwXZIFEwpLJfgQyidpNDifeQbBI5E1O910XkPsA==", - "license": "MIT", - "dependencies": { - "@sentry/types": "8.41.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/types": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.41.0.tgz", - "integrity": "sha512-eqdnGr9k9H++b9CjVUoTNUVahPVWeNnMy0YGkqS5+cjWWC+x43p56202oidGFmWo6702ub/xwUNH6M5PC4kq6A==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.42.0.tgz", + "integrity": "sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==", "license": "MIT", "engines": { "node": ">=14.18" @@ -9366,14 +9349,11 @@ } }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } @@ -26638,36 +26618,20 @@ } }, "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", "dev": true, "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "debug": "^4.3.4" }, "engines": { "node": ">= 14" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -27646,13 +27610,13 @@ "peer": true }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -35499,20 +35463,20 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", - "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", + "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", "dev": true, "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.5", + "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -38119,20 +38083,20 @@ } }, "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -38242,18 +38206,18 @@ } }, "node_modules/puppeteer": { - "version": "23.9.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.9.0.tgz", - "integrity": "sha512-WfB8jGwFV+qrD9dcJJVvWPFJBU6kxeu2wxJz9WooDGfM3vIiKLgzImEDBxUQnCBK/2cXB3d4dV6gs/LLpgfLDg==", + "version": "23.10.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.1.tgz", + "integrity": "sha512-kbcO+vu91fgUyBzEwByPe4q5lEEuBq4cuOZnZeRL42G7r5UrfbUFlxBJayXBLBsD6pREdk/92ZFwFQq3MaN6ww==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.1", + "@puppeteer/browsers": "2.5.0", "chromium-bidi": "0.8.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1367902", - "puppeteer-core": "23.9.0", + "puppeteer-core": "23.10.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -38264,13 +38228,13 @@ } }, "node_modules/puppeteer-core": { - "version": "23.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.9.0.tgz", - "integrity": "sha512-hLVrav2HYMVdK0YILtfJwtnkBAwNOztUdR4aJ5YKDvgsbtagNr6urUJk9HyjRA9e+PaLI3jzJ0wM7A4jSZ7Qxw==", + "version": "23.10.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.1.tgz", + "integrity": "sha512-ey6NwixHYEUnhCA/uYi7uQQ4a0CZw4k+MatbHXGl5GEzaiRQziYUxc2HGpdQZ/gnh4KQWAKkocyIg1/dIm5d0g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.1", + "@puppeteer/browsers": "2.5.0", "chromium-bidi": "0.8.0", "debug": "^4.3.7", "devtools-protocol": "0.0.1367902", @@ -41676,13 +41640,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -47074,7 +47038,7 @@ "@iobroker/types": "^7.0.4", "@mui/icons-material": "^6.1.9", "@mui/material": "^6.1.9", - "@sentry/browser": "^8.41.0", + "@sentry/browser": "^8.42.0", "cronstrue": "^2.52.0", "react-color": "^2.19.3", "react-colorful": "^5.6.1", @@ -47135,7 +47099,7 @@ "semver": "^7.6.3" }, "devDependencies": { - "@iobroker/build-tools": "^2.0.9", + "@iobroker/build-tools": "^2.0.11", "@iobroker/dm-gui-components": "file:../dm-gui-components", "@iobroker/json-config": "file:../jsonConfig", "@iobroker/legacy-testing": "^2.0.1", @@ -47153,7 +47117,7 @@ "@types/validator": "^13.12.2", "colorette": "^2.0.20", "less": "^4.2.1", - "puppeteer": "^23.9.0", + "puppeteer": "^23.10.1", "src-rx": "file:src-admin", "typescript": "^5.7.2" }, diff --git a/packages/adapter-react-v5/src/i18n/de.json b/packages/adapter-react-v5/src/i18n/de.json index 8a8054176..4c7209890 100644 --- a/packages/adapter-react-v5/src/i18n/de.json +++ b/packages/adapter-react-v5/src/i18n/de.json @@ -7,7 +7,7 @@ "ra_Add objects tree from JSON file": "Objektbaum aus JSON-Datei hinzufügen", "ra_Add row": "Zeile hinzufügen", "ra_Advanced options": "Erweiterte Optionen", - "ra_All items are filtered out": "Alle Elemente werden herausgefiltert", + "ra_All items are filtered out": "Alle Elemente sind herausgefiltert", "ra_All objects": "Alle Objekte", "ra_Append": "Anhängen", "ra_Append %s entries or replace existing?": "%s Einträge anhängen oder vorhandene ersetzen?", @@ -447,4 +447,4 @@ "sch_validTo": "bis", "sch_wholeDay": "Ganzer Tag", "sch_yearEveryMonth": "jeden Monat" -} \ No newline at end of file +} diff --git a/packages/admin/package.json b/packages/admin/package.json index 892688f42..3daa18480 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -43,7 +43,7 @@ "semver": "^7.6.3" }, "devDependencies": { - "@iobroker/build-tools": "^2.0.9", + "@iobroker/build-tools": "^2.0.11", "@iobroker/dm-gui-components": "file:../dm-gui-components", "@iobroker/json-config": "file:../jsonConfig", "@iobroker/legacy-testing": "^2.0.1", @@ -61,7 +61,7 @@ "@types/validator": "^13.12.2", "colorette": "^2.0.20", "less": "^4.2.1", - "puppeteer": "^23.9.0", + "puppeteer": "^23.10.1", "src-rx": "file:src-admin", "typescript": "^5.7.2" }, diff --git a/packages/admin/src-admin/src/components/Adapters/AdaptersList.tsx b/packages/admin/src-admin/src/components/Adapters/AdaptersList.tsx index df25f5cb5..43297c934 100644 --- a/packages/admin/src-admin/src/components/Adapters/AdaptersList.tsx +++ b/packages/admin/src-admin/src/components/Adapters/AdaptersList.tsx @@ -2,6 +2,7 @@ import React, { Component, Fragment, type JSX } from 'react'; import { Box, + Button, LinearProgress, Table, TableBody, @@ -9,9 +10,12 @@ import { TableContainer, TableHead, TableRow, + Tooltip, Typography, } from '@mui/material'; +import { Update as UpdateIcon } from '@mui/icons-material'; + import { TabContent } from '@iobroker/adapter-react-v5'; import type { AdaptersContext } from '@/components/Adapters/AdapterInstallDialog'; @@ -126,13 +130,14 @@ interface AdaptersListProps { adapters: string[]; }[]; toggleCategory: (category: string) => void; - clearAllFilters: () => void; + clearAllFilters: (onlyUpdate?: boolean) => void; update: boolean; descWidth: number; sortByName: boolean; sortPopularFirst: boolean; sortRecentlyUpdated: boolean; commandRunning: boolean; + updateListFilter: boolean; } interface AdaptersListState { @@ -281,16 +286,27 @@ class AdaptersList extends Component<AdaptersListProps, AdaptersListState> { return !this.props.update ? ( <tr> <td - colSpan={4} - style={{ - padding: 16, - fontSize: 18, - cursor: 'pointer', - }} - title={this.props.context.t('Click to clear all filters')} - onClick={() => this.props.clearAllFilters()} + colSpan={8} + style={{ textAlign: 'center' }} > - {this.props.context.t('all items are filtered out')} + <Button + variant="outlined" + title={this.props.context.t('Click to clear all filters')} + onClick={() => this.props.clearAllFilters()} + > + {this.props.context.t('all items are filtered out')} + </Button> + {this.props.updateListFilter ? <br /> : null} + {this.props.updateListFilter ? ( + <Button + style={{ marginTop: 16 }} + variant="outlined" + onClick={() => this.props.clearAllFilters(true)} + startIcon={<UpdateIcon />} + > + {this.props.context.t('Remove filter for updatable adapters')} + </Button> + ) : null} </td> </tr> ) : null; @@ -308,13 +324,34 @@ class AdaptersList extends Component<AdaptersListProps, AdaptersListState> { return !this.props.update ? ( <div style={{ - margin: 20, - fontSize: 26, + width: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + gap: 16, }} - title={this.props.context.t('Click to clear all filters')} - onClick={() => this.props.clearAllFilters()} > - {this.props.context.t('all items are filtered out')} + <Tooltip + title={this.props.context.t('Click to clear all filters')} + slotProps={{ popper: { sx: { pointerEvents: 'none' } } }} + > + <Button + variant="outlined" + onClick={() => this.props.clearAllFilters()} + > + {this.props.context.t('all items are filtered out')} + </Button> + </Tooltip> + {this.props.updateListFilter ? ( + <Button + variant="outlined" + onClick={() => this.props.clearAllFilters(true)} + startIcon={<UpdateIcon />} + > + {this.props.context.t('Remove filter for updatable adapters')} + </Button> + ) : null} </div> ) : null; } diff --git a/packages/admin/src-admin/src/i18n/de.json b/packages/admin/src-admin/src/i18n/de.json index 9cb70579b..e8eca1656 100644 --- a/packages/admin/src-admin/src/i18n/de.json +++ b/packages/admin/src-admin/src/i18n/de.json @@ -84,7 +84,7 @@ "All": "Alle", "All addresses": "Alle Adressen", "All backups older than these hours will be deleted, but only if the number of files is greater than of the files number": "Alle Sicherungen, die älter als diese Stunden sind, werden gelöscht, jedoch nur, wenn die Anzahl der Dateien größer als die Anzahl der Dateien ist", - "All items are filtered out": "Alle Elemente werden herausgefiltert", + "All items are filtered out": "Alle Elemente sind herausgefiltert", "All objects": "Alle Objekte", "All_group": "Alle", "Allow automatic adapter upgrades for this repository": "Automatische Adapter-Upgrades für dieses Repository zulassen", @@ -857,6 +857,7 @@ "Remove": "Entfernen", "Remove attribute %s": "Attribut %s entfernen", "Remove color": "Farbe entfernen", + "Remove filter for updatable adapters": "Filter für aktualisierbare Adapter entfernen", "Remove icon": "Symbol entfernen", "Removed": "Entfernt", "Removing of adapter...": "Entfernen des Adapters...", @@ -1238,7 +1239,7 @@ "alarm_group": "Alarm", "alive": "aktiv", "all": "alle", - "all items are filtered out": "Alle Elemente werden herausgefiltert", + "all items are filtered out": "Alle Elemente sind herausgefiltert", "allow set of compact groups": "Erlaube die Einstellung von Kompaktgruppen", "alpha": "Alpha", "any Node.js stream. If an objectMode stream is provided then the entire info object will be written. Otherwise info[MESSAGE] will be written": "Beliebiger Node.js-Stream. Wenn ein objectMode-Stream bereitgestellt wird, wird das gesamte Info-Objekt geschrieben. Andernfalls wird info [MESSAGE] geschrieben", diff --git a/packages/admin/src-admin/src/i18n/en.json b/packages/admin/src-admin/src/i18n/en.json index 47b848b0f..c7d71829d 100644 --- a/packages/admin/src-admin/src/i18n/en.json +++ b/packages/admin/src-admin/src/i18n/en.json @@ -857,6 +857,7 @@ "Remove": "Remove", "Remove attribute %s": "Remove attribute %s", "Remove color": "Remove color", + "Remove filter for updatable adapters": "Remove filter for updatable adapters", "Remove icon": "Remove icon", "Removed": "Removed", "Removing of adapter...": "Removing of adapter...", diff --git a/packages/admin/src-admin/src/i18n/es.json b/packages/admin/src-admin/src/i18n/es.json index f84771dec..cc9ea58f8 100644 --- a/packages/admin/src-admin/src/i18n/es.json +++ b/packages/admin/src-admin/src/i18n/es.json @@ -857,6 +857,7 @@ "Remove": "Eliminar", "Remove attribute %s": "Eliminar atributo %s", "Remove color": "Quitar color", + "Remove filter for updatable adapters": "Eliminar filtro para adaptadores actualizables", "Remove icon": "Eliminar icono", "Removed": "Removido", "Removing of adapter...": "Quitar el adaptador...", diff --git a/packages/admin/src-admin/src/i18n/fr.json b/packages/admin/src-admin/src/i18n/fr.json index 58a00aeb4..8ef8871d0 100644 --- a/packages/admin/src-admin/src/i18n/fr.json +++ b/packages/admin/src-admin/src/i18n/fr.json @@ -857,6 +857,7 @@ "Remove": "Supprimer", "Remove attribute %s": "Supprimer l'attribut %s", "Remove color": "Supprimer la couleur", + "Remove filter for updatable adapters": "Supprimer le filtre pour les adaptateurs actualisables", "Remove icon": "Supprimer l'icône", "Removed": "Supprimé", "Removing of adapter...": "Retrait de l'adaptateur...", diff --git a/packages/admin/src-admin/src/i18n/it.json b/packages/admin/src-admin/src/i18n/it.json index 7f535e960..82c20e43d 100644 --- a/packages/admin/src-admin/src/i18n/it.json +++ b/packages/admin/src-admin/src/i18n/it.json @@ -857,6 +857,7 @@ "Remove": "Rimuovere", "Remove attribute %s": "Rimuovi l'attributo %s", "Remove color": "Rimuovi il colore", + "Remove filter for updatable adapters": "Rimuovere il filtro per gli adattatori aggiornabili", "Remove icon": "Rimuovi icona", "Removed": "Rimosso", "Removing of adapter...": "Rimozione dell'adattatore...", diff --git a/packages/admin/src-admin/src/i18n/nl.json b/packages/admin/src-admin/src/i18n/nl.json index 3c78d7b54..0a7c31821 100644 --- a/packages/admin/src-admin/src/i18n/nl.json +++ b/packages/admin/src-admin/src/i18n/nl.json @@ -857,6 +857,7 @@ "Remove": "Verwijderen", "Remove attribute %s": "Attribuut %s verwijderen", "Remove color": "Kleur verwijderen", + "Remove filter for updatable adapters": "Verwijder filter voor updatebare adapters", "Remove icon": "Pictogram verwijderen", "Removed": "verwijderd", "Removing of adapter...": "Adapter verwijderen...", diff --git a/packages/admin/src-admin/src/i18n/pl.json b/packages/admin/src-admin/src/i18n/pl.json index 142fdb452..f4e3144d0 100644 --- a/packages/admin/src-admin/src/i18n/pl.json +++ b/packages/admin/src-admin/src/i18n/pl.json @@ -857,6 +857,7 @@ "Remove": "Usunąć", "Remove attribute %s": "Usuń atrybut %s", "Remove color": "Usuń kolor", + "Remove filter for updatable adapters": "Usuń filtr dla aktualizowalnych adapterów", "Remove icon": "Usuń ikonę", "Removed": "Usunięte", "Removing of adapter...": "Usuwanie adaptera ...", diff --git a/packages/admin/src-admin/src/i18n/pt.json b/packages/admin/src-admin/src/i18n/pt.json index 8e362838d..6287dfd29 100644 --- a/packages/admin/src-admin/src/i18n/pt.json +++ b/packages/admin/src-admin/src/i18n/pt.json @@ -857,6 +857,7 @@ "Remove": "Remover", "Remove attribute %s": "Remover atributo %s", "Remove color": "Remover cor", + "Remove filter for updatable adapters": "Remover filtro para adaptadores actualizáveis", "Remove icon": "Remover ícone", "Removed": "Removido", "Removing of adapter...": "Removendo o adaptador...", diff --git a/packages/admin/src-admin/src/i18n/ru.json b/packages/admin/src-admin/src/i18n/ru.json index fe8374625..1f0ba6c58 100644 --- a/packages/admin/src-admin/src/i18n/ru.json +++ b/packages/admin/src-admin/src/i18n/ru.json @@ -857,6 +857,7 @@ "Remove": "Удалить", "Remove attribute %s": "Удалить атрибут %s", "Remove color": "Удалить цвет", + "Remove filter for updatable adapters": "Удалить фильтр для обновляемых адаптеров", "Remove icon": "Удалить иконку", "Removed": "Удалено", "Removing of adapter...": "Удаление драйвера...", diff --git a/packages/admin/src-admin/src/i18n/uk.json b/packages/admin/src-admin/src/i18n/uk.json index a7fac89b0..de7366f77 100644 --- a/packages/admin/src-admin/src/i18n/uk.json +++ b/packages/admin/src-admin/src/i18n/uk.json @@ -857,6 +857,7 @@ "Remove": "видалити", "Remove attribute %s": "Видалити атрибут %s", "Remove color": "Видаліть колір", + "Remove filter for updatable adapters": "Видалити фільтр для оновлюваних адаптерів", "Remove icon": "Видалити значок", "Removed": "Видалено", "Removing of adapter...": "Зняття адаптера...", diff --git a/packages/admin/src-admin/src/i18n/zh-cn.json b/packages/admin/src-admin/src/i18n/zh-cn.json index 6dcbe0233..de936e22c 100644 --- a/packages/admin/src-admin/src/i18n/zh-cn.json +++ b/packages/admin/src-admin/src/i18n/zh-cn.json @@ -857,6 +857,7 @@ "Remove": "去掉", "Remove attribute %s": "删除属性 %s", "Remove color": "去除颜色", + "Remove filter for updatable adapters": "Remove filter for updatable adapters", "Remove icon": "删除图标", "Removed": "删除", "Removing of adapter...": "删除插件...", diff --git a/packages/admin/src-admin/src/tabs/Adapters.tsx b/packages/admin/src-admin/src/tabs/Adapters.tsx index ecd4968b1..bd81d3d90 100644 --- a/packages/admin/src-admin/src/tabs/Adapters.tsx +++ b/packages/admin/src-admin/src/tabs/Adapters.tsx @@ -1325,23 +1325,32 @@ class Adapters extends AdapterInstallDialog<AdaptersProps, AdaptersState> { }, 200); }; - clearAllFilters(): void { - (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapter.search'); - (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapters.installedList'); - (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapters.updateList'); - if (this.inputRef.current) { - this.inputRef.current.value = ''; + clearAllFilters(onlyUpdate?: boolean): void { + if (onlyUpdate) { + (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapters.updateList'); + this.setState( + { + updateList: false, + }, + () => this.filterAdapters(), + ); + } else { + (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapter.search'); + (((window as any)._localStorage as Storage) || window.localStorage).removeItem('Adapters.installedList'); + if (this.inputRef.current) { + this.inputRef.current.value = ''; + } + this.setState( + { + filteredList: null, + updateList: false, + filterConnectionType: false, + installedList: 0, + search: '', + }, + () => this.filterAdapters(), + ); } - this.setState( - { - filteredList: null, - updateList: false, - filterConnectionType: false, - installedList: 0, - search: '', - }, - () => this.filterAdapters(), - ); } getContext(descHidden: boolean): AdaptersContext { @@ -2053,12 +2062,13 @@ class Adapters extends AdapterInstallDialog<AdaptersProps, AdaptersState> { tableViewMode={this.state.tableViewMode} oneListView={this.state.oneListView} update={this.state.update} + updateListFilter={this.state.updateList} cachedAdapters={this.cache.adapters} categories={this.state.categories} categoriesExpanded={this.state.categoriesExpanded} listOfVisibleAdapter={this.cache.listOfVisibleAdapter} toggleCategory={category => this.toggleCategory(category)} - clearAllFilters={() => this.clearAllFilters()} + clearAllFilters={(onlyUpdate?: boolean) => this.clearAllFilters(onlyUpdate)} descWidth={this.state.descWidth} sortByName={this.state.filterTiles === 'Name A-Z'} sortPopularFirst={context.sortPopularFirst} diff --git a/packages/jsonConfig/src/JsonConfigComponent/ConfigTable.tsx b/packages/jsonConfig/src/JsonConfigComponent/ConfigTable.tsx index 61a32013a..749cf8304 100644 --- a/packages/jsonConfig/src/JsonConfigComponent/ConfigTable.tsx +++ b/packages/jsonConfig/src/JsonConfigComponent/ConfigTable.tsx @@ -1265,7 +1265,7 @@ class ConfigTable extends ConfigGeneric<ConfigTableProps, ConfigTableState> { ) : null} </TableContainer> {schema.help ? ( - <FormHelperText> + <FormHelperText style={{ paddingLeft: 16 }}> {this.renderHelp( this.props.schema.help, this.props.schema.helpLink, From fe7ff6cb6ac7e36a0d8c72bb6e57f334f672e72b Mon Sep 17 00:00:00 2001 From: GermanBluefox <dogafox@gmail.com> Date: Sun, 8 Dec 2024 13:32:13 +0000 Subject: [PATCH 6/6] Corrected build CI --- package-lock.json | 198 +++++++++--------- packages/adapter-react-v5/package.json | 10 +- packages/admin/package.json | 2 +- packages/admin/src-admin/src/App.tsx | 12 +- .../src/components/Object/ObjectChart.tsx | 4 +- .../components/Object/ObjectHistoryData.tsx | 4 +- .../SystemSettingsTabs/MainSettingsDialog.tsx | 5 +- .../SystemSettingsTabs/RepositoriesDialog.tsx | 1 - packages/admin/src/lib/web.ts | 1 - packages/admin/src/main.ts | 1 - 10 files changed, 108 insertions(+), 130 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2f91da85..a423dfa5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4216,12 +4216,12 @@ } }, "node_modules/@iobroker/db-base": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-7.0.4.tgz", - "integrity": "sha512-f94LmckkYnb7HR4t6tNGjiu4fMVH5t+yLuxFvdyxSOfWSIEFJ/wDdD+g0DMZlx8qWzcAujaGNg2hVjQXJhf6+Q==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-base/-/db-base-7.0.5.tgz", + "integrity": "sha512-sVE9oyQeGhPEeHtfTMX5efgfvp1fIWSXtIKeOOq62TfF/6DRBdpNnaFRtxzXnbhUTyaeFxaAHBxH1W0qTTWKtg==", "license": "MIT", "dependencies": { - "@iobroker/js-controller-common-db": "7.0.4", + "@iobroker/js-controller-common-db": "7.0.5", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0", "respjs": "^4.2.0" @@ -4245,13 +4245,13 @@ } }, "node_modules/@iobroker/db-objects-file": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-7.0.4.tgz", - "integrity": "sha512-c8orlztDj/ogdsv1zDp3cl682x+36CmX5PPFY2nNvRC72fxXR0m5KAZKIJaoXr/fceixitPbZQKK5M0428LUdw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-file/-/db-objects-file-7.0.5.tgz", + "integrity": "sha512-3NuUQ75W86IaaAif/mGdFGBEN37s1svE6+0VmCOHXQDFsGoTPqrYcF3NTjlqGKokJ3FpHKLfFsrcucz1eN4q8g==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "7.0.4", - "@iobroker/db-objects-redis": "7.0.4", + "@iobroker/db-base": "7.0.5", + "@iobroker/db-objects-redis": "7.0.5", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -4274,15 +4274,15 @@ } }, "node_modules/@iobroker/db-objects-jsonl": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-7.0.4.tgz", - "integrity": "sha512-2fxY5vgi8t+bcbxiBANQ7pVg8nB3vyEpBxMr3sPHfuMZmveW+bJAksT8Pw0723DtpR7W2BIte2WwTtDhWB9VIQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-jsonl/-/db-objects-jsonl-7.0.5.tgz", + "integrity": "sha512-FSMXOeMBMDrHjr6hYAVyV0x2RutGySHNSd8NG0ct71gp6PPs0wi0tuWpIHK1DfepRGzSE/iSnqyJjb5u83PPCg==", "license": "Apache 2.0", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "7.0.4", - "@iobroker/db-objects-file": "7.0.4", - "@iobroker/db-objects-redis": "7.0.4", + "@iobroker/db-base": "7.0.5", + "@iobroker/db-objects-file": "7.0.5", + "@iobroker/db-objects-redis": "7.0.5", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0" }, @@ -4305,12 +4305,12 @@ } }, "node_modules/@iobroker/db-objects-redis": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-7.0.4.tgz", - "integrity": "sha512-nV+WtmZcIK0JRvOGX8LO64JfR5yM7RpxVyrPdsYAmVMR3sings/ihRMIV2ZLMir5LLyWhIttXHBFFRMJU7Od6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-objects-redis/-/db-objects-redis-7.0.5.tgz", + "integrity": "sha512-ckoA6uZtG6bZynCbNglfwAQMckCC2sy6irmyXedGqKj9wpxgE9JlrSpL6HkLHmkpOwUtk24g2jC/nixZjhlTNg==", "license": "Apache 2.0", "dependencies": { - "@iobroker/db-base": "7.0.4", + "@iobroker/db-base": "7.0.5", "deep-clone": "^3.0.3", "ioredis": "^4.28.2", "mime-types": "^2.1.35", @@ -4322,40 +4322,40 @@ } }, "node_modules/@iobroker/db-states-file": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-7.0.4.tgz", - "integrity": "sha512-o9kaDrHfqRtUlnXCC3vSUNOcplsykU5ybUcBm/z9kJTHiokGyFcQMGk+GW/CjSilBSSbRhoDdETxib9ZP2gbzg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-file/-/db-states-file-7.0.5.tgz", + "integrity": "sha512-WLIpDuitJBOR0/kBnlSVj25Pbl8lI8BuztNIM2VqYGypfxhTfEqqn5WUN4wAhKmJZR8/a3fnkj98IWFDWfPJsQ==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "7.0.4", - "@iobroker/db-states-redis": "7.0.4" + "@iobroker/db-base": "7.0.5", + "@iobroker/db-states-redis": "7.0.5" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-jsonl": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-7.0.4.tgz", - "integrity": "sha512-PCohWxHHktNHlCBB/dYAiXi/uA/VZuO/UKa8U1b+Gwst4fXblM+u1PedEU+7CtId+dM97Y6J8l48BcBR373Keg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-jsonl/-/db-states-jsonl-7.0.5.tgz", + "integrity": "sha512-Z/qQgdQ7YYr+qN4xzmMCG/wPvXryhDgLRZs2X5dp9FHbpBzOotog+cvNONpZemzEe9wJRTloz/abFCBWg9XcoA==", "license": "MIT", "dependencies": { "@alcalzone/jsonl-db": "~3.1.1", - "@iobroker/db-base": "7.0.4", - "@iobroker/db-states-file": "7.0.4", - "@iobroker/db-states-redis": "7.0.4" + "@iobroker/db-base": "7.0.5", + "@iobroker/db-states-file": "7.0.5", + "@iobroker/db-states-redis": "7.0.5" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@iobroker/db-states-redis": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-7.0.4.tgz", - "integrity": "sha512-RgoLcmpvx+lJGG06KU4X8+o+eDqEp4g/s/KPBzL9tpg1eRPK1MeIPfbCSy3FKTDyOsESnisbORNPFgICr88zsw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/db-states-redis/-/db-states-redis-7.0.5.tgz", + "integrity": "sha512-m5fa/0nKKJ/fGuCVmWR6uzPnCwk/v7IroYZVwPt/OlYcc2a48VUOZyXuGcH/OADobGS4hcjQiEARMaOMvnitIA==", "license": "MIT", "dependencies": { - "@iobroker/db-base": "7.0.4", + "@iobroker/db-base": "7.0.5", "ioredis": "^4.28.2" }, "engines": { @@ -4408,18 +4408,18 @@ } }, "node_modules/@iobroker/js-controller-common": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-7.0.4.tgz", - "integrity": "sha512-qLifx26Tt0jf0WjnCluOCjWl+o3gzOFdvkUO4s1WA8wngDW3aGWXt6pWsR+VfWPDmmJ/X9pBq+ASb9on/YlFqQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common/-/js-controller-common-7.0.5.tgz", + "integrity": "sha512-oNzW+9qZduafv8qt3KpPXddBqZJQebgjNnxjuxTnkOaVo4CtT13+LGDdGAgCrqTehytK30K+I8k6eg/ePd6Hxw==", "license": "MIT", "dependencies": { - "@iobroker/db-objects-file": "7.0.4", - "@iobroker/db-objects-jsonl": "7.0.4", - "@iobroker/db-objects-redis": "7.0.4", - "@iobroker/db-states-file": "7.0.4", - "@iobroker/db-states-jsonl": "7.0.4", - "@iobroker/db-states-redis": "7.0.4", - "@iobroker/js-controller-common-db": "7.0.4", + "@iobroker/db-objects-file": "7.0.5", + "@iobroker/db-objects-jsonl": "7.0.5", + "@iobroker/db-objects-redis": "7.0.5", + "@iobroker/db-states-file": "7.0.5", + "@iobroker/db-states-jsonl": "7.0.5", + "@iobroker/db-states-redis": "7.0.5", + "@iobroker/js-controller-common-db": "7.0.5", "fs-extra": "^11.1.0", "jszip": "^3.10.1" }, @@ -4432,9 +4432,9 @@ } }, "node_modules/@iobroker/js-controller-common-db": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.0.4.tgz", - "integrity": "sha512-MM79pa8BFZPnx+xud7ac5PSYmH1alWbthvKwkIjVxqoZMIUftKtFqpc3fzn2QY6kuZxxsSrb4i9pJ0IM7+7aig==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.0.5.tgz", + "integrity": "sha512-d4Iug8Oei0I0+gVvVqs5nzTZFS91UzCYtSXM7QFennkPnuYGgC7xV7Nqu6cm2ABm3uICr2VFKWmtyu0O5Ze8gg==", "license": "MIT", "dependencies": { "@alcalzone/pak": "^0.8.1", @@ -4541,14 +4541,14 @@ } }, "node_modules/@iobroker/socket-classes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@iobroker/socket-classes/-/socket-classes-1.6.1.tgz", - "integrity": "sha512-XtBXHJ95qCHI+3NXuxBCmTqeQr6k7mbZ28krANXP4tBeIGSMvI5VeYUhAPNCtF3btAAgYXtqbjnA5Gr+Oc+Guw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@iobroker/socket-classes/-/socket-classes-1.6.2.tgz", + "integrity": "sha512-hSmKpnSmJp9MSQEvO7vcU7AgwFdmMvNrxcT3tsNX/OLPlQnqxilcKezUKxi/ZWIEhvo+4rn5D6lYEIxde1nrxQ==", "license": "MIT", "dependencies": { "@iobroker/adapter-core": "^3.2.2", - "axios": "^1.7.7", - "cookie-parser": "^1.4.6", + "axios": "^1.7.8", + "cookie-parser": "^1.4.7", "passport": "^0.7.0" } }, @@ -4591,11 +4591,10 @@ } }, "node_modules/@iobroker/types": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-6.0.11.tgz", - "integrity": "sha512-RNDURjtL5Cm9wt6ocCqdRi86Qx1350zBIvvrJ9+Fjgasoi6cWCdoOghkwEeb95TH2j//q/uLqWwL8SZ0vxx6Kw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.5.tgz", + "integrity": "sha512-RR72kGAJrojLDxBP6US297oJ8tiVfW/BPljpiTGKKbFy7y3lhSawgQalj/tBlYgvIxzg0T0vKwbhZhmSdNnjXg==", "license": "MIT", - "peer": true, "engines": { "node": ">=12.0.0" } @@ -5398,9 +5397,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.9.tgz", - "integrity": "sha512-TWqj7b1w5cmSz4H/uf+y2AHxAH4ldPR7D2bz0XVyn60GCAo/zRbRPx7cF8gTs/i7CiYeHzV6dtat0VpMwOtolw==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz", + "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==", "license": "MIT", "funding": { "type": "opencollective", @@ -5408,9 +5407,9 @@ } }, "node_modules/@mui/icons-material": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.9.tgz", - "integrity": "sha512-AzlhIT51rdjkZ/EcUV2dbhNkNSUHIqCnNoUxodpiTw8buyAUBd+qnxg5OBSuPpun/ZEdSSB8Q7Uyh6zqjiMsEQ==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz", + "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0" @@ -5423,7 +5422,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^6.1.9", + "@mui/material": "^6.1.10", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -5434,16 +5433,16 @@ } }, "node_modules/@mui/material": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.9.tgz", - "integrity": "sha512-NwqIN0bdsgzSbZd5JFcC+2ez0XW/XNs8uiV2PDHrqQ4qf/FEasFJG1z6g8JbCN0YlTrHZekVb17X0Fv0qcYJfQ==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz", + "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/core-downloads-tracker": "^6.1.9", - "@mui/system": "^6.1.9", + "@mui/core-downloads-tracker": "^6.1.10", + "@mui/system": "^6.1.10", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.9", + "@mui/utils": "^6.1.10", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", @@ -5462,7 +5461,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.1.9", + "@mui/material-pigment-css": "^6.1.10", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -5483,13 +5482,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.9.tgz", - "integrity": "sha512-7aum/O1RquBYhfwL/7egDyl9GqJgPM6hoJDFFBbhF6Sgv9yI9v4w3ArKUkuVvR0CtVj4NXRVMKEioh1bjUzvuA==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz", + "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/utils": "^6.1.9", + "@mui/utils": "^6.1.10", "prop-types": "^15.8.1" }, "engines": { @@ -5510,9 +5509,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.9.tgz", - "integrity": "sha512-xynSLlJRxHLzSfQaiDjkaTx8LiFb9ByVa7aOdwFnTxGWFMY1F+mkXwAUY4jDDE+MAxkWxlzzQE0wOohnsxhdQg==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz", + "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", @@ -5544,16 +5543,16 @@ } }, "node_modules/@mui/system": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.9.tgz", - "integrity": "sha512-8x+RucnNp21gfFYsklCaZf0COXbv3+v0lrVuXONxvPEkESi2rwLlOi8UPJfcz6LxZOAX3v3oQ7qw18vnpgueRg==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz", + "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/private-theming": "^6.1.9", - "@mui/styled-engine": "^6.1.9", + "@mui/private-theming": "^6.1.10", + "@mui/styled-engine": "^6.1.10", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.9", + "@mui/utils": "^6.1.10", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -5598,9 +5597,9 @@ } }, "node_modules/@mui/utils": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.9.tgz", - "integrity": "sha512-N7uzBp7p2or+xanXn3aH2OTINC6F/Ru/U8h6amhRZEev8bJhKN86rIDIoxZZ902tj+09LXtH83iLxFMjMHyqNA==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz", + "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", @@ -10252,9 +10251,9 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -47032,12 +47031,12 @@ "dependencies": { "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", - "@iobroker/js-controller-common": "^7.0.4", - "@iobroker/js-controller-common-db": "^7.0.4", + "@iobroker/js-controller-common": "^7.0.5", + "@iobroker/js-controller-common-db": "^7.0.5", "@iobroker/socket-client": "^3.1.3", - "@iobroker/types": "^7.0.4", - "@mui/icons-material": "^6.1.9", - "@mui/material": "^6.1.9", + "@iobroker/types": "^7.0.5", + "@mui/icons-material": "^6.1.10", + "@mui/material": "^6.1.10", "@sentry/browser": "^8.42.0", "cronstrue": "^2.52.0", "react-color": "^2.19.3", @@ -47065,15 +47064,6 @@ "@rollup/rollup-linux-x64-gnu": "*" } }, - "packages/adapter-react-v5/node_modules/@iobroker/types": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.0.4.tgz", - "integrity": "sha512-wCRFt525dxTjbMQwxbXK5GVdivJ6tywolsROOu19w1M+coOfnqkv5+eBsXDUL1zqLrDyzoUxfYtwF0Gs5R0AyA==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, "packages/admin": { "name": "iobroker.admin", "version": "7.4.3", @@ -47081,7 +47071,7 @@ "dependencies": { "@iobroker/adapter-core": "^3.2.3", "@iobroker/i18n": "^0.3.1", - "@iobroker/socket-classes": "^1.6.1", + "@iobroker/socket-classes": "^1.6.2", "@iobroker/webserver": "^1.0.6", "@iobroker/ws": "^2.0.0", "@iobroker/ws-server": "4.1.0", diff --git a/packages/adapter-react-v5/package.json b/packages/adapter-react-v5/package.json index fc970fb5d..36949726e 100644 --- a/packages/adapter-react-v5/package.json +++ b/packages/adapter-react-v5/package.json @@ -56,12 +56,12 @@ "dependencies": { "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", - "@iobroker/js-controller-common": "^7.0.4", - "@iobroker/js-controller-common-db": "^7.0.4", + "@iobroker/js-controller-common": "^7.0.5", + "@iobroker/js-controller-common-db": "^7.0.5", "@iobroker/socket-client": "^3.1.3", - "@iobroker/types": "^7.0.4", - "@mui/icons-material": "^6.1.9", - "@mui/material": "^6.1.9", + "@iobroker/types": "^7.0.5", + "@mui/icons-material": "^6.1.10", + "@mui/material": "^6.1.10", "@sentry/browser": "^8.42.0", "cronstrue": "^2.52.0", "react-color": "^2.19.3", diff --git a/packages/admin/package.json b/packages/admin/package.json index 3daa18480..652deeb3e 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -25,7 +25,7 @@ "dependencies": { "@iobroker/adapter-core": "^3.2.3", "@iobroker/i18n": "^0.3.1", - "@iobroker/socket-classes": "^1.6.1", + "@iobroker/socket-classes": "^1.6.2", "@iobroker/webserver": "^1.0.6", "@iobroker/ws": "^2.0.0", "@iobroker/ws-server": "4.1.0", diff --git a/packages/admin/src-admin/src/App.tsx b/packages/admin/src-admin/src/App.tsx index 706d50884..50df31da6 100644 --- a/packages/admin/src-admin/src/App.tsx +++ b/packages/admin/src-admin/src/App.tsx @@ -2411,13 +2411,9 @@ class App extends Router<AppProps, AppState> { if (this.state.user && this.props.width !== 'xs' && this.props.width !== 'sm') { return ( <div> - { - // @ts-expect-error fixed in js-controller 7 - this.state.systemConfig.common.siteName ? ( - // @ts-expect-error fixed in js-controller 7 - <div style={styles.siteName}>{this.state.systemConfig.common.siteName}</div> - ) : null - } + {this.state.systemConfig.common.siteName ? ( + <div style={styles.siteName}>{this.state.systemConfig.common.siteName}</div> + ) : null} <Box component="div" @@ -2460,9 +2456,7 @@ class App extends Router<AppProps, AppState> { </div> ); } - // @ts-expect-error fixed in js-controller 7 if (this.props.width !== 'xs' && this.props.width !== 'sm' && this.state.systemConfig.common.siteName) { - // @ts-expect-error fixed in js-controller 7 return <div style={styles.siteName}>{this.state.systemConfig.common.siteName}</div>; } return null; diff --git a/packages/admin/src-admin/src/components/Object/ObjectChart.tsx b/packages/admin/src-admin/src/components/Object/ObjectChart.tsx index 67ee760e8..191d037a8 100644 --- a/packages/admin/src-admin/src/components/Object/ObjectChart.tsx +++ b/packages/admin/src-admin/src/components/Object/ObjectChart.tsx @@ -520,7 +520,7 @@ class ObjectChart extends Component<ObjectChartProps, ObjectChartState> { from: false, ack: false, q: false, - addID: false, + addId: false, aggregate: 'none', }) .then((values: { val: ioBroker.StateValue; ts: number }[]) => { @@ -565,7 +565,7 @@ class ObjectChart extends Component<ObjectChartProps, ObjectChartState> { from: false, ack: false, q: false, - addID: false, + addId: false, aggregate: 'none', returnNewestEntries: true, }; diff --git a/packages/admin/src-admin/src/components/Object/ObjectHistoryData.tsx b/packages/admin/src-admin/src/components/Object/ObjectHistoryData.tsx index 63141e9b2..4a388a6fb 100644 --- a/packages/admin/src-admin/src/components/Object/ObjectHistoryData.tsx +++ b/packages/admin/src-admin/src/components/Object/ObjectHistoryData.tsx @@ -522,7 +522,7 @@ class ObjectHistoryData extends Component<ObjectHistoryDataProps, ObjectHistoryD from: true, ack: true, q: true, - addID: false, + addId: false, aggregate: 'none', returnNewestEntries: true, }) @@ -633,7 +633,7 @@ class ObjectHistoryData extends Component<ObjectHistoryDataProps, ObjectHistoryD from: false, ack: false, q: false, - addID: false, + addId: false, aggregate: 'none', }) .then((values: ioBroker.GetHistoryResult) => { diff --git a/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/MainSettingsDialog.tsx b/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/MainSettingsDialog.tsx index 1ca6ff11f..4d667b95a 100644 --- a/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/MainSettingsDialog.tsx +++ b/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/MainSettingsDialog.tsx @@ -19,8 +19,7 @@ import { import { Close as CloseIcon } from '@mui/icons-material'; -import { Marker } from 'leaflet'; -import type { DragEndEvent, LatLngTuple, Map } from 'leaflet'; +import { Marker, type DragEndEvent, type LatLngTuple, type Map } from 'leaflet'; import { DialogConfirm, withWidth, I18n, type Translate } from '@iobroker/adapter-react-v5'; import { type AdminGuiConfig } from '@/types'; @@ -656,7 +655,6 @@ class MainSettingsDialog extends BaseSystemSettingsDialog<Props, State> { variant="standard" id="siteName" label={this.props.t('Site name')} - // @ts-expect-error Fixed in js-controller 7 value={this.props.data.common.siteName || ''} onChange={e => this.doChange('siteName', e.target.value)} helperText={this.props.t( @@ -664,7 +662,6 @@ class MainSettingsDialog extends BaseSystemSettingsDialog<Props, State> { )} slotProps={{ input: { - // @ts-expect-error Fixed in js-controller 7 endAdornment: this.props.data.common.siteName ? ( <InputAdornment position="end"> <IconButton diff --git a/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/RepositoriesDialog.tsx b/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/RepositoriesDialog.tsx index 3ff2ede21..8adab9ab4 100644 --- a/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/RepositoriesDialog.tsx +++ b/packages/admin/src-admin/src/dialogs/SystemSettingsTabs/RepositoriesDialog.tsx @@ -459,7 +459,6 @@ class RepositoriesDialog extends BaseSystemSettingsDialog<RepositoriesDialogProp <span> <Checkbox disabled - // @ts-expect-error will be fixed in js-controller 7 checked={this.props.repoInfo[item.title]?.stable} indeterminate={!this.props.repoInfo[item.title]} /> diff --git a/packages/admin/src/lib/web.ts b/packages/admin/src/lib/web.ts index 44823e229..f8a7013a6 100644 --- a/packages/admin/src/lib/web.ts +++ b/packages/admin/src/lib/web.ts @@ -389,7 +389,6 @@ class Web { `system.adapter.${adapterName}`, ); - // @ts-expect-error fixed in js-controller 7.x if (res?.common.adminUI?.config === 'json') { try { const ajv = new Ajv({ diff --git a/packages/admin/src/main.ts b/packages/admin/src/main.ts index 8d2566492..946f77e7c 100644 --- a/packages/admin/src/main.ts +++ b/packages/admin/src/main.ts @@ -1949,7 +1949,6 @@ class Admin extends Adapter { ); this.changedPasswords.push(found); - // @ts-expect-error types defined in js-controller 7 await this.registerNotification('admin', 'wellKnownPassword', I18n.translate('User: %s', found.login), { contextData: { admin: {