mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-19 07:16:39 +00:00
make debug mode better visible, improve disabling device (#25910)
This commit is contained in:
parent
6006e926a7
commit
e5bc234ab3
@ -8,10 +8,16 @@ import {
|
|||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import { css, html, LitElement, nothing } from "lit";
|
import { css, html, LitElement, nothing } from "lit";
|
||||||
import { customElement, property } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
|
import { classMap } from "lit/directives/class-map";
|
||||||
|
import { stopPropagation } from "../../../common/dom/stop_propagation";
|
||||||
import { computeDeviceNameDisplay } from "../../../common/entity/compute_device_name";
|
import { computeDeviceNameDisplay } from "../../../common/entity/compute_device_name";
|
||||||
import { getDeviceContext } from "../../../common/entity/context/get_device_context";
|
import { getDeviceContext } from "../../../common/entity/context/get_device_context";
|
||||||
import { navigate } from "../../../common/navigate";
|
import { navigate } from "../../../common/navigate";
|
||||||
import type { ConfigEntry } from "../../../data/config_entries";
|
import {
|
||||||
|
disableConfigEntry,
|
||||||
|
type ConfigEntry,
|
||||||
|
type DisableConfigEntryResult,
|
||||||
|
} from "../../../data/config_entries";
|
||||||
import {
|
import {
|
||||||
removeConfigEntryFromDevice,
|
removeConfigEntryFromDevice,
|
||||||
updateDeviceRegistryEntry,
|
updateDeviceRegistryEntry,
|
||||||
@ -26,7 +32,6 @@ import {
|
|||||||
} from "../../lovelace/custom-card-helpers";
|
} from "../../lovelace/custom-card-helpers";
|
||||||
import { showDeviceRegistryDetailDialog } from "../devices/device-registry-detail/show-dialog-device-registry-detail";
|
import { showDeviceRegistryDetailDialog } from "../devices/device-registry-detail/show-dialog-device-registry-detail";
|
||||||
import "./ha-config-sub-entry-row";
|
import "./ha-config-sub-entry-row";
|
||||||
import { stopPropagation } from "../../../common/dom/stop_propagation";
|
|
||||||
|
|
||||||
@customElement("ha-config-entry-device-row")
|
@customElement("ha-config-entry-device-row")
|
||||||
class HaConfigEntryDeviceRow extends LitElement {
|
class HaConfigEntryDeviceRow extends LitElement {
|
||||||
@ -52,7 +57,7 @@ class HaConfigEntryDeviceRow extends LitElement {
|
|||||||
area ? area.name : undefined,
|
area ? area.name : undefined,
|
||||||
].filter(Boolean);
|
].filter(Boolean);
|
||||||
|
|
||||||
return html`<ha-md-list-item @click=${this.narrow ? this._handleNavigateToDevice : undefined}>
|
return html`<ha-md-list-item @click=${this.narrow ? this._handleNavigateToDevice : undefined} class=${classMap({ disabled: Boolean(device.disabled_by) })}>
|
||||||
<ha-svg-icon .path=${mdiDevices} slot="start"></ha-svg-icon>
|
<ha-svg-icon .path=${mdiDevices} slot="start"></ha-svg-icon>
|
||||||
<div slot="headline"></div>${computeDeviceNameDisplay(device, this.hass)}</div>
|
<div slot="headline"></div>${computeDeviceNameDisplay(device, this.hass)}</div>
|
||||||
<span slot="supporting-text"
|
<span slot="supporting-text"
|
||||||
@ -175,8 +180,70 @@ class HaConfigEntryDeviceRow extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _handleDisableDevice() {
|
private async _handleDisableDevice() {
|
||||||
|
const disable = this.device.disabled_by === null;
|
||||||
|
|
||||||
|
if (disable) {
|
||||||
|
if (
|
||||||
|
!Object.values(this.hass.devices).some(
|
||||||
|
(dvc) =>
|
||||||
|
dvc.id !== this.device.id &&
|
||||||
|
dvc.config_entries.includes(this.entry.entry_id)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const config_entry = this.entry;
|
||||||
|
if (
|
||||||
|
config_entry &&
|
||||||
|
!config_entry.disabled_by &&
|
||||||
|
(await showConfirmationDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.devices.confirm_disable_config_entry",
|
||||||
|
{ entry_name: config_entry.title }
|
||||||
|
),
|
||||||
|
confirmText: this.hass.localize("ui.common.yes"),
|
||||||
|
dismissText: this.hass.localize("ui.common.no"),
|
||||||
|
}))
|
||||||
|
) {
|
||||||
|
let result: DisableConfigEntryResult;
|
||||||
|
try {
|
||||||
|
result = await disableConfigEntry(this.hass, this.entry.entry_id);
|
||||||
|
} catch (err: any) {
|
||||||
|
showAlertDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.integrations.config_entry.disable_error"
|
||||||
|
),
|
||||||
|
text: err.message,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result.require_restart) {
|
||||||
|
showAlertDialog(this, {
|
||||||
|
text: this.hass.localize(
|
||||||
|
"ui.panel.config.integrations.config_entry.disable_restart_confirm"
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (disable) {
|
||||||
|
const confirm = await showConfirmationDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.integrations.config_entry.device.confirm_disable",
|
||||||
|
{ name: computeDeviceNameDisplay(this.device, this.hass) }
|
||||||
|
),
|
||||||
|
confirmText: this.hass.localize("ui.common.yes"),
|
||||||
|
dismissText: this.hass.localize("ui.common.no"),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!confirm) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await updateDeviceRegistryEntry(this.hass, this.device.id, {
|
await updateDeviceRegistryEntry(this.hass, this.device.id, {
|
||||||
disabled_by: this.device.disabled_by === "user" ? null : "user",
|
disabled_by: disable ? "user" : null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,6 +287,9 @@ class HaConfigEntryDeviceRow extends LitElement {
|
|||||||
ha-md-list-item {
|
ha-md-list-item {
|
||||||
--md-list-item-leading-space: 56px;
|
--md-list-item-leading-space: 56px;
|
||||||
}
|
}
|
||||||
|
.disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
:host([narrow]) ha-md-list-item {
|
:host([narrow]) ha-md-list-item {
|
||||||
--md-list-item-leading-space: 16px;
|
--md-list-item-leading-space: 16px;
|
||||||
}
|
}
|
||||||
|
@ -403,14 +403,6 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
|||||||
</a>
|
</a>
|
||||||
</div>`
|
</div>`
|
||||||
: nothing}
|
: nothing}
|
||||||
${this._logInfo?.level === LogSeverity.DEBUG
|
|
||||||
? html`<div class="integration-info">
|
|
||||||
<ha-svg-icon .path=${mdiBugPlay}></ha-svg-icon>
|
|
||||||
${this.hass.localize(
|
|
||||||
"ui.panel.config.integrations.config_entry.debug_logging_enabled"
|
|
||||||
)}
|
|
||||||
</div>`
|
|
||||||
: nothing}
|
|
||||||
${this._manifest?.iot_class?.startsWith("cloud_")
|
${this._manifest?.iot_class?.startsWith("cloud_")
|
||||||
? html`<div class="integration-info">
|
? html`<div class="integration-info">
|
||||||
<ha-svg-icon .path=${mdiWeb}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiWeb}></ha-svg-icon>
|
||||||
@ -539,6 +531,21 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
${this._logInfo?.level === LogSeverity.DEBUG
|
||||||
|
? html`<div class="section">
|
||||||
|
<ha-alert alert-type="warning">
|
||||||
|
<ha-svg-icon slot="icon" .path=${mdiBugPlay}></ha-svg-icon>
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.panel.config.integrations.config_entry.debug_logging_enabled"
|
||||||
|
)}
|
||||||
|
<ha-button
|
||||||
|
slot="action"
|
||||||
|
@click=${this._handleDisableDebugLogging}
|
||||||
|
>${this.hass.localize("ui.common.disable")}</ha-button
|
||||||
|
>
|
||||||
|
</ha-alert>
|
||||||
|
</div>`
|
||||||
|
: nothing}
|
||||||
${discoveryFlows.length
|
${discoveryFlows.length
|
||||||
? html`
|
? html`
|
||||||
<div class="section">
|
<div class="section">
|
||||||
|
@ -5379,6 +5379,7 @@
|
|||||||
"device": {
|
"device": {
|
||||||
"enable": "Enable device",
|
"enable": "Enable device",
|
||||||
"disable": "Disable device",
|
"disable": "Disable device",
|
||||||
|
"confirm_disable": "Are you sure you want to disable {name}?",
|
||||||
"configure": "Configure device",
|
"configure": "Configure device",
|
||||||
"delete": "Remove device"
|
"delete": "Remove device"
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user