1
0
mirror of https://github.com/home-assistant/frontend.git synced 2025-12-25 05:06:18 +00:00

Tweak rules for entity-filter card (#25570)

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
This commit is contained in:
karwosts
2025-05-26 06:24:10 -07:00
committed by GitHub
parent 114c1fb98b
commit 9f5f100e98

View File

@@ -82,18 +82,40 @@ export class HuiEntityFilterCard
}
if (
!(
(config.conditions && Array.isArray(config.conditions)) ||
(config.state_filter && Array.isArray(config.state_filter))
) &&
!config.entities.every(
!config.conditions &&
!config.state_filter &&
!config.entities.some(
(entity) =>
typeof entity === "object" &&
entity.state_filter &&
Array.isArray(entity.state_filter)
(entity.state_filter || entity.conditions)
)
) {
throw new Error("Incorrect filter config");
throw new Error("At least one conditions or state_filter is required");
}
if (
(config.conditions && !Array.isArray(config.conditions)) ||
(config.state_filter && !Array.isArray(config.state_filter)) ||
config.entities.some(
(entity) =>
typeof entity === "object" &&
((entity.state_filter && !Array.isArray(entity.state_filter)) ||
(entity.conditions && !Array.isArray(entity.conditions)))
)
) {
throw new Error("Conditions or state_filter must be an array");
}
if (
(config.conditions && config.state_filter) ||
config.entities.some(
(entity) =>
typeof entity === "object" && entity.state_filter && entity.conditions
)
) {
throw new Error(
"Conditions and state_filter may not be simultaneously defined"
);
}
this._configEntities = processConfigEntities(config.entities);
@@ -149,7 +171,7 @@ export class HuiEntityFilterCard
if (!stateObj) return false;
const conditions = entityConf.conditions ?? this._config!.conditions;
if (conditions) {
if (conditions && !entityConf.state_filter) {
const conditionWithEntity = conditions.map((condition) =>
addEntityToCondition(condition, entityConf.entity)
);
@@ -161,7 +183,7 @@ export class HuiEntityFilterCard
return filters.some((filter) => evaluateStateFilter(stateObj, filter));
}
return false;
return true;
});
if (entitiesList.length === 0 && this._config.show_empty === false) {