mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-03 14:37:47 +00:00
Support displaying relative change in statistics graph cards
This commit is contained in:
parent
f9d119d33d
commit
131957fbb3
@ -346,9 +346,9 @@ class StatisticsChart extends LitElement {
|
|||||||
const dataValues: Array<number | null> = [];
|
const dataValues: Array<number | null> = [];
|
||||||
statTypes.forEach((type) => {
|
statTypes.forEach((type) => {
|
||||||
let val: number | null;
|
let val: number | null;
|
||||||
if (type === "sum") {
|
if (type === "sum" || type === "sum_rel") {
|
||||||
if (initVal === null) {
|
if (initVal === null) {
|
||||||
initVal = val = stat.state || 0;
|
initVal = val = type === "sum_rel" ? 0 : stat.sum || 0;
|
||||||
prevSum = stat.sum;
|
prevSum = stat.sum;
|
||||||
} else {
|
} else {
|
||||||
val = initVal + ((stat.sum || 0) - prevSum!);
|
val = initVal + ((stat.sum || 0) - prevSum!);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { computeStateName } from "../common/entity/compute_state_name";
|
import { computeStateName } from "../common/entity/compute_state_name";
|
||||||
import { HomeAssistant } from "../types";
|
import { HomeAssistant } from "../types";
|
||||||
|
|
||||||
export type StatisticType = "sum" | "min" | "max" | "mean";
|
export type StatisticType = "sum" | "sum_rel" | "min" | "max" | "mean";
|
||||||
|
|
||||||
export interface Statistics {
|
export interface Statistics {
|
||||||
[statisticId: string]: StatisticValue[];
|
[statisticId: string]: StatisticValue[];
|
||||||
@ -201,10 +201,13 @@ export const calculateStatisticsSumGrowth = (
|
|||||||
export const statisticsHaveType = (
|
export const statisticsHaveType = (
|
||||||
stats: StatisticValue[],
|
stats: StatisticValue[],
|
||||||
type: StatisticType
|
type: StatisticType
|
||||||
) => stats.some((stat) => stat[type] !== null);
|
) => {
|
||||||
|
type = type === "sum_rel" ? "sum" : type;
|
||||||
|
return stats.some((stat) => stat[type] !== null);
|
||||||
|
};
|
||||||
|
|
||||||
const mean_stat_types: readonly StatisticType[] = ["mean", "min", "max"];
|
const mean_stat_types: readonly StatisticType[] = ["mean", "min", "max"];
|
||||||
const sum_stat_types: readonly StatisticType[] = ["sum"];
|
const sum_stat_types: readonly StatisticType[] = ["sum", "sum_rel"];
|
||||||
|
|
||||||
export const statisticsMetaHasType = (
|
export const statisticsMetaHasType = (
|
||||||
metadata: StatisticsMetaData,
|
metadata: StatisticsMetaData,
|
||||||
|
@ -39,6 +39,7 @@ import { deepEqual } from "../../../../common/util/deep-equal";
|
|||||||
|
|
||||||
const statTypeStruct = union([
|
const statTypeStruct = union([
|
||||||
literal("sum"),
|
literal("sum"),
|
||||||
|
literal("sum_rel"),
|
||||||
literal("min"),
|
literal("min"),
|
||||||
literal("max"),
|
literal("max"),
|
||||||
literal("mean"),
|
literal("mean"),
|
||||||
@ -64,7 +65,7 @@ const cardConfigStruct = assign(
|
|||||||
);
|
);
|
||||||
|
|
||||||
const periods = ["5minute", "hour", "day", "month"] as const;
|
const periods = ["5minute", "hour", "day", "month"] as const;
|
||||||
const stat_types = ["mean", "min", "max", "sum"] as const;
|
const stat_types = ["mean", "min", "max", "sum", "sum_rel"] as const;
|
||||||
|
|
||||||
@customElement("hui-statistics-graph-card-editor")
|
@customElement("hui-statistics-graph-card-editor")
|
||||||
export class HuiStatisticsGraphCardEditor
|
export class HuiStatisticsGraphCardEditor
|
||||||
|
@ -517,7 +517,8 @@
|
|||||||
"min": "min",
|
"min": "min",
|
||||||
"max": "max",
|
"max": "max",
|
||||||
"mean": "mean",
|
"mean": "mean",
|
||||||
"sum": "sum"
|
"sum": "sum",
|
||||||
|
"sum_rel": "change"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"service-picker": {
|
"service-picker": {
|
||||||
@ -3969,7 +3970,8 @@
|
|||||||
"mean": "Mean",
|
"mean": "Mean",
|
||||||
"min": "Min",
|
"min": "Min",
|
||||||
"max": "Max",
|
"max": "Max",
|
||||||
"sum": "Sum"
|
"sum": "Sum (absolute)",
|
||||||
|
"sum_rel": "Change"
|
||||||
},
|
},
|
||||||
"chart_type": "Chart type",
|
"chart_type": "Chart type",
|
||||||
"periods": {
|
"periods": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user