mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-02 14:07:55 +00:00
Avoid fetching all stats metadata when there are no entities
Fetch all the data at once since it is not dependant
This commit is contained in:
parent
01ec9aaf96
commit
225a3c3f50
@ -405,9 +405,8 @@ const getEnergyData = async (
|
|||||||
volume: lengthUnit === "km" ? "L" : "gal",
|
volume: lengthUnit === "km" ? "L" : "gal",
|
||||||
};
|
};
|
||||||
|
|
||||||
const stats = {
|
const _energyStats = energyStatIds.length
|
||||||
...(energyStatIds.length
|
? fetchStatistics(
|
||||||
? await fetchStatistics(
|
|
||||||
hass!,
|
hass!,
|
||||||
startMinHour,
|
startMinHour,
|
||||||
end,
|
end,
|
||||||
@ -416,8 +415,8 @@ const getEnergyData = async (
|
|||||||
energyUnits,
|
energyUnits,
|
||||||
["sum"]
|
["sum"]
|
||||||
)
|
)
|
||||||
: {}),
|
: Promise.resolve({});
|
||||||
...(waterStatIds.length
|
const _waterStats = waterStatIds.length
|
||||||
? await fetchStatistics(
|
? await fetchStatistics(
|
||||||
hass!,
|
hass!,
|
||||||
startMinHour,
|
startMinHour,
|
||||||
@ -427,12 +426,13 @@ const getEnergyData = async (
|
|||||||
waterUnits,
|
waterUnits,
|
||||||
["sum"]
|
["sum"]
|
||||||
)
|
)
|
||||||
: {}),
|
: Promise.resolve({});
|
||||||
};
|
|
||||||
|
|
||||||
let statsCompare;
|
|
||||||
let startCompare;
|
let startCompare;
|
||||||
let endCompare;
|
let endCompare;
|
||||||
|
let _energyStatsCompare = Promise.resolve({});
|
||||||
|
let _waterStatsCompare = Promise.resolve({});
|
||||||
|
|
||||||
if (compare) {
|
if (compare) {
|
||||||
if (dayDifference > 27 && dayDifference < 32) {
|
if (dayDifference > 27 && dayDifference < 32) {
|
||||||
// When comparing a month, we want to start at the begining of the month
|
// When comparing a month, we want to start at the begining of the month
|
||||||
@ -443,10 +443,8 @@ const getEnergyData = async (
|
|||||||
|
|
||||||
const compareStartMinHour = addHours(startCompare, -1);
|
const compareStartMinHour = addHours(startCompare, -1);
|
||||||
endCompare = addMilliseconds(start, -1);
|
endCompare = addMilliseconds(start, -1);
|
||||||
|
if (energyStatIds.length) {
|
||||||
statsCompare = {
|
_energyStatsCompare = fetchStatistics(
|
||||||
...(energyStatIds.length
|
|
||||||
? await fetchStatistics(
|
|
||||||
hass!,
|
hass!,
|
||||||
compareStartMinHour,
|
compareStartMinHour,
|
||||||
endCompare,
|
endCompare,
|
||||||
@ -454,10 +452,10 @@ const getEnergyData = async (
|
|||||||
period,
|
period,
|
||||||
energyUnits,
|
energyUnits,
|
||||||
["sum"]
|
["sum"]
|
||||||
)
|
);
|
||||||
: {}),
|
}
|
||||||
...(waterStatIds.length
|
if (waterStatIds.length) {
|
||||||
? await fetchStatistics(
|
_waterStatsCompare = fetchStatistics(
|
||||||
hass!,
|
hass!,
|
||||||
compareStartMinHour,
|
compareStartMinHour,
|
||||||
endCompare,
|
endCompare,
|
||||||
@ -465,16 +463,18 @@ const getEnergyData = async (
|
|||||||
period,
|
period,
|
||||||
waterUnits,
|
waterUnits,
|
||||||
["sum"]
|
["sum"]
|
||||||
)
|
);
|
||||||
: {}),
|
}
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let fossilEnergyConsumption: FossilEnergyConsumption | undefined;
|
let _fossilEnergyConsumption:
|
||||||
let fossilEnergyConsumptionCompare: FossilEnergyConsumption | undefined;
|
| Promise<undefined>
|
||||||
|
| Promise<FossilEnergyConsumption> = Promise.resolve(undefined);
|
||||||
|
let _fossilEnergyConsumptionCompare:
|
||||||
|
| Promise<undefined>
|
||||||
|
| Promise<FossilEnergyConsumption> = Promise.resolve(undefined);
|
||||||
if (co2SignalEntity !== undefined) {
|
if (co2SignalEntity !== undefined) {
|
||||||
fossilEnergyConsumption = await getFossilEnergyConsumption(
|
_fossilEnergyConsumption = getFossilEnergyConsumption(
|
||||||
hass!,
|
hass!,
|
||||||
start,
|
start,
|
||||||
consumptionStatIDs,
|
consumptionStatIDs,
|
||||||
@ -483,7 +483,7 @@ const getEnergyData = async (
|
|||||||
dayDifference > 35 ? "month" : dayDifference > 2 ? "day" : "hour"
|
dayDifference > 35 ? "month" : dayDifference > 2 ? "day" : "hour"
|
||||||
);
|
);
|
||||||
if (compare) {
|
if (compare) {
|
||||||
fossilEnergyConsumptionCompare = await getFossilEnergyConsumption(
|
_fossilEnergyConsumptionCompare = getFossilEnergyConsumption(
|
||||||
hass!,
|
hass!,
|
||||||
startCompare,
|
startCompare,
|
||||||
consumptionStatIDs,
|
consumptionStatIDs,
|
||||||
@ -494,6 +494,35 @@ const getEnergyData = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const statsMetadata: Record<string, StatisticsMetaData> = {};
|
||||||
|
const _getStatisticMetadata: Promise<StatisticsMetaData[]> = allStatIDs.length
|
||||||
|
? getStatisticMetadata(hass, allStatIDs)
|
||||||
|
: Promise.resolve([]);
|
||||||
|
const [
|
||||||
|
energyStats,
|
||||||
|
waterStats,
|
||||||
|
energyStatsCompare,
|
||||||
|
waterStatsCompare,
|
||||||
|
statsMetadataArray,
|
||||||
|
fossilEnergyConsumption,
|
||||||
|
fossilEnergyConsumptionCompare,
|
||||||
|
] = await Promise.all([
|
||||||
|
_energyStats,
|
||||||
|
_waterStats,
|
||||||
|
_energyStatsCompare,
|
||||||
|
_waterStatsCompare,
|
||||||
|
_getStatisticMetadata,
|
||||||
|
_fossilEnergyConsumption,
|
||||||
|
_fossilEnergyConsumptionCompare,
|
||||||
|
]);
|
||||||
|
const stats = { ...energyStats, ...waterStats };
|
||||||
|
const statsCompare = { ...energyStatsCompare, ...waterStatsCompare };
|
||||||
|
if (allStatIDs.length) {
|
||||||
|
statsMetadataArray.forEach((x) => {
|
||||||
|
statsMetadata[x.statistic_id] = x;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Object.values(stats).forEach((stat) => {
|
Object.values(stats).forEach((stat) => {
|
||||||
// if the start of the first value is after the requested period, we have the first data point, and should add a zero point
|
// if the start of the first value is after the requested period, we have the first data point, and should add a zero point
|
||||||
if (stat.length && new Date(stat[0].start) > startMinHour) {
|
if (stat.length && new Date(stat[0].start) > startMinHour) {
|
||||||
@ -507,12 +536,6 @@ const getEnergyData = async (
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const statsMetadataArray = await getStatisticMetadata(hass, allStatIDs);
|
|
||||||
const statsMetadata: Record<string, StatisticsMetaData> = {};
|
|
||||||
statsMetadataArray.forEach((x) => {
|
|
||||||
statsMetadata[x.statistic_id] = x;
|
|
||||||
});
|
|
||||||
|
|
||||||
const data: EnergyData = {
|
const data: EnergyData = {
|
||||||
start,
|
start,
|
||||||
end,
|
end,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user