mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-17 22:36:35 +00:00
Group solar forecasts by hour (#9728)
This commit is contained in:
parent
9ca64f9789
commit
dbcf1cb907
@ -276,21 +276,26 @@ export class HuiEnergySolarGraphCard
|
|||||||
|
|
||||||
// Process solar forecast data.
|
// Process solar forecast data.
|
||||||
if (forecasts && source.config_entry_solar_forecast) {
|
if (forecasts && source.config_entry_solar_forecast) {
|
||||||
let forecastsData: Record<string, number> | undefined;
|
const forecastsData: Record<string, number> | undefined = {};
|
||||||
source.config_entry_solar_forecast.forEach((configEntryId) => {
|
source.config_entry_solar_forecast.forEach((configEntryId) => {
|
||||||
if (!forecastsData) {
|
|
||||||
forecastsData = forecasts![configEntryId]?.wh_hours;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!forecasts![configEntryId]) {
|
if (!forecasts![configEntryId]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Object.entries(forecasts![configEntryId].wh_hours).forEach(
|
Object.entries(forecasts![configEntryId].wh_hours).forEach(
|
||||||
([date, value]) => {
|
([date, value]) => {
|
||||||
if (date in forecastsData!) {
|
const dateObj = new Date(date);
|
||||||
forecastsData![date] += value;
|
if (
|
||||||
|
dateObj < energyData.start ||
|
||||||
|
(energyData.end && dateObj > energyData.end)
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dateObj.setMinutes(0, 0, 0);
|
||||||
|
const time = dateObj.getTime();
|
||||||
|
if (time in forecastsData) {
|
||||||
|
forecastsData[time] += value;
|
||||||
} else {
|
} else {
|
||||||
forecastsData![date] = value;
|
forecastsData[time] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -298,16 +303,9 @@ export class HuiEnergySolarGraphCard
|
|||||||
|
|
||||||
if (forecastsData) {
|
if (forecastsData) {
|
||||||
const solarForecastData: ScatterDataPoint[] = [];
|
const solarForecastData: ScatterDataPoint[] = [];
|
||||||
for (const [date, value] of Object.entries(forecastsData)) {
|
for (const [time, value] of Object.entries(forecastsData)) {
|
||||||
const dateObj = new Date(date);
|
|
||||||
if (
|
|
||||||
dateObj < energyData.start ||
|
|
||||||
(energyData.end && dateObj > energyData.end)
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
solarForecastData.push({
|
solarForecastData.push({
|
||||||
x: dateObj.getTime(),
|
x: Number(time),
|
||||||
y: value / 1000,
|
y: value / 1000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user