Compare commits

...

2 Commits

Author SHA1 Message Date
Paul Bottein
4ea9b6f1b3 Simplify logic 2024-04-30 12:24:17 +02:00
Paul Bottein
567cbcee7c Add available state option for filters 2024-04-30 12:08:33 +02:00

View File

@@ -197,6 +197,10 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
};
private _states = memoize((localize: LocalizeFunc) => [
{
value: "available",
label: localize("ui.panel.config.entities.picker.status.available"),
},
{
value: "disabled",
label: localize("ui.panel.config.entities.picker.status.disabled"),
@@ -213,6 +217,10 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
value: "readonly",
label: localize("ui.panel.config.entities.picker.status.readonly"),
},
{
value: "restored",
label: localize("ui.panel.config.entities.picker.status.restored"),
},
]);
private _columns = memoize(
@@ -391,12 +399,6 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
const showReadOnly =
!stateFilters?.length || stateFilters.includes("readonly");
const showDisabled =
!stateFilters?.length || stateFilters.includes("disabled");
const showHidden =
!stateFilters?.length || stateFilters.includes("hidden");
const showUnavailable =
!stateFilters?.length || stateFilters.includes("unavailable");
let filteredEntities = showReadOnly
? entities.concat(stateEntities)
@@ -459,18 +461,6 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
}
});
if (!showDisabled) {
filteredEntities = filteredEntities.filter(
(entity) => !entity.disabled_by
);
}
if (!showHidden) {
filteredEntities = filteredEntities.filter(
(entity) => !entity.hidden_by
);
}
for (const entry of filteredEntities) {
const entity = this.hass.states[entry.entity_id];
const unavailable = entity?.state === UNAVAILABLE;
@@ -478,7 +468,19 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
const areaId = entry.area_id ?? devices[entry.device_id!]?.area_id;
const area = areaId ? areas[areaId] : undefined;
if (!showUnavailable && unavailable) {
const status = restored
? "restored"
: unavailable
? "unavailable"
: entry.disabled_by
? "disabled"
: entry.hidden_by
? "hidden"
: entry.readonly
? "readonly"
: "available";
if (stateFilters && !stateFilters.includes(status)) {
continue;
}
@@ -499,21 +501,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
localized_platform: domainToName(localize, entry.platform),
area: area ? area.name : "—",
domain: domainToName(localize, computeDomain(entry.entity_id)),
status: restored
? localize("ui.panel.config.entities.picker.status.restored")
: unavailable
? localize("ui.panel.config.entities.picker.status.unavailable")
: entry.disabled_by
? localize("ui.panel.config.entities.picker.status.disabled")
: entry.hidden_by
? localize("ui.panel.config.entities.picker.status.hidden")
: entry.readonly
? localize(
"ui.panel.config.entities.picker.status.readonly"
)
: localize(
"ui.panel.config.entities.picker.status.available"
),
status: localize(`ui.panel.config.entities.picker.status.${status}`),
label_entries: labelsEntries,
});
}
@@ -861,7 +849,7 @@ ${
protected firstUpdated() {
this._filters = {
"ha-filter-states": {
value: ["unavailable", "readonly"],
value: ["available", "unavailable", "readonly", "restored"],
items: undefined,
},
};