Fix entity-filter handling of numeric states for == and != operators. (#14726)

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
fixes undefined
This commit is contained in:
karwosts 2022-12-14 09:51:33 -08:00 committed by GitHub
parent 77b8152c55
commit 25a5bd568a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,11 +2,24 @@ import { HassEntity } from "home-assistant-js-websocket";
export const evaluateFilter = (stateObj: HassEntity, filter: any): boolean => {
const operator = filter.operator || "==";
const value = filter.value ?? filter;
const state = filter.attribute
let value = filter.value ?? filter;
let state = filter.attribute
? stateObj.attributes[filter.attribute]
: stateObj.state;
if (operator === "==" || operator === "!=") {
const valueIsNumeric =
typeof value === "number" ||
(typeof value === "string" && value.trim() && !isNaN(Number(value)));
const stateIsNumeric =
typeof state === "number" ||
(typeof state === "string" && state.trim() && !isNaN(Number(state)));
if (valueIsNumeric && stateIsNumeric) {
value = Number(value);
state = Number(state);
}
}
switch (operator) {
case "==":
return state === value;