Add available state option for filters

This commit is contained in:
Paul Bottein 2024-04-30 12:08:33 +02:00
parent 8cca233b7c
commit 567cbcee7c
No known key found for this signature in database

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"),
@ -397,6 +401,8 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
!stateFilters?.length || stateFilters.includes("hidden");
const showUnavailable =
!stateFilters?.length || stateFilters.includes("unavailable");
const showAvailable =
!stateFilters?.length || stateFilters.includes("available");
let filteredEntities = showReadOnly
? entities.concat(stateEntities)
@ -474,14 +480,21 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) {
for (const entry of filteredEntities) {
const entity = this.hass.states[entry.entity_id];
const unavailable = entity?.state === UNAVAILABLE;
const available = entity?.state && !unavailable;
const restored = entity?.attributes.restored === true;
const areaId = entry.area_id ?? devices[entry.device_id!]?.area_id;
const area = areaId ? areas[areaId] : undefined;
const readonly = entry.readonly;
const hidden = !!entry.hidden_by;
if (!showUnavailable && unavailable) {
continue;
}
if (!showAvailable && available && !readonly && !hidden) {
continue;
}
const labels = labelReg && entry?.labels;
const labelsEntries = (labels || []).map(
(lbl) => labelReg!.find((label) => label.label_id === lbl)!
@ -861,7 +874,7 @@ ${
protected firstUpdated() {
this._filters = {
"ha-filter-states": {
value: ["unavailable", "readonly"],
value: ["available", "unavailable", "readonly"],
items: undefined,
},
};