Sort yaml reloads on translated domain (#20857)

This commit is contained in:
karwosts 2024-05-23 07:26:03 -07:00 committed by GitHub
parent 66560b1f1c
commit 7d2cee650d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -15,6 +15,7 @@ import "../../../components/ha-card";
import "../../../components/ha-circular-progress"; import "../../../components/ha-circular-progress";
import { CheckConfigResult, checkCoreConfig } from "../../../data/core"; import { CheckConfigResult, checkCoreConfig } from "../../../data/core";
import { domainToName } from "../../../data/integration"; import { domainToName } from "../../../data/integration";
import { stringCompare } from "../../../common/string/compare";
import { showRestartDialog } from "../../../dialogs/restart/show-dialog-restart"; import { showRestartDialog } from "../../../dialogs/restart/show-dialog-restart";
import { haStyle } from "../../../resources/styles"; import { haStyle } from "../../../resources/styles";
import type { HomeAssistant, Route, TranslationDict } from "../../../types"; import type { HomeAssistant, Route, TranslationDict } from "../../../types";
@ -24,6 +25,11 @@ type ReloadableDomain = Exclude<
"heading" | "introduction" | "reload" "heading" | "introduction" | "reload"
>; >;
interface TranslatedReloadableDomain {
domain: ReloadableDomain;
name: string;
}
@customElement("developer-yaml-config") @customElement("developer-yaml-config")
export class DeveloperYamlConfig extends LitElement { export class DeveloperYamlConfig extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: false }) public hass!: HomeAssistant;
@ -38,7 +44,7 @@ export class DeveloperYamlConfig extends LitElement {
@state() private _validating = false; @state() private _validating = false;
@state() private _reloadableDomains: ReloadableDomain[] = []; @state() private _reloadableDomains: TranslatedReloadableDomain[] = [];
@state() private _validateResult?: CheckConfigResult; @state() private _validateResult?: CheckConfigResult;
@ -51,12 +57,27 @@ export class DeveloperYamlConfig extends LitElement {
const oldHass = changedProperties.get("hass"); const oldHass = changedProperties.get("hass");
if ( if (
changedProperties.has("hass") && changedProperties.has("hass") &&
(!oldHass || oldHass.config.components !== this.hass.config.components) (!oldHass ||
oldHass.config.components !== this.hass.config.components ||
oldHass.localize !== this.hass.localize)
) { ) {
this._reloadableDomains = componentsWithService( this._reloadableDomains = (
this.hass, componentsWithService(this.hass, "reload") as ReloadableDomain[]
"reload" )
).sort() as ReloadableDomain[]; .map((domain) => ({
domain,
name:
this.hass.localize(
`ui.panel.developer-tools.tabs.yaml.section.reloading.${domain}`
) ||
this.hass.localize(
"ui.panel.developer-tools.tabs.yaml.section.reloading.reload",
{ domain: domainToName(this.hass.localize, domain) }
),
}))
.sort((a, b) =>
stringCompare(a.name, b.name, this.hass.locale.language)
);
} }
} }
@ -176,19 +197,13 @@ export class DeveloperYamlConfig extends LitElement {
</ha-call-service-button> </ha-call-service-button>
</div> </div>
${this._reloadableDomains.map( ${this._reloadableDomains.map(
(domain) => html` (reloadable) => html`
<div class="card-actions"> <div class="card-actions">
<ha-call-service-button <ha-call-service-button
.hass=${this.hass} .hass=${this.hass}
.domain=${domain} .domain=${reloadable.domain}
service="reload" service="reload"
>${this.hass.localize( >${reloadable.name}
`ui.panel.developer-tools.tabs.yaml.section.reloading.${domain}`
) ||
this.hass.localize(
"ui.panel.developer-tools.tabs.yaml.section.reloading.reload",
{ domain: domainToName(this.hass.localize, domain) }
)}
</ha-call-service-button> </ha-call-service-button>
</div> </div>
` `