create irradiance composite graph
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import extend from 'extend';
|
||||
import moment from 'moment-timezone';
|
||||
|
||||
import DateRange from './../../shared/utils/date_range';
|
||||
import EnergyDataApi from 'api/energy_data';
|
||||
|
||||
const NAME = 'EnergyDatum';
|
||||
const COLLECTION_DEFAULTS = {
|
||||
indices: ['day']
|
||||
@@ -29,16 +32,58 @@ class EnergyDatum {
|
||||
return moment.tz(energy_datum.data.day * 1000, energy_datum.house.data.timezone).format('YYYY-MM-DD');
|
||||
}
|
||||
|
||||
get consumption_to_s(){
|
||||
get irradiance(){
|
||||
var energy_datum = this;
|
||||
return Math.round(energy_datum.data.irradiance);
|
||||
}
|
||||
|
||||
get consumption(){
|
||||
var energy_datum = this;
|
||||
return Math.round(energy_datum.data.consumption);
|
||||
}
|
||||
|
||||
get production_to_s(){
|
||||
get production(){
|
||||
var energy_datum = this;
|
||||
return Math.round(energy_datum.data.production);
|
||||
}
|
||||
|
||||
// This method will ensure the energy data for the passed houses while:
|
||||
// 1. Making only 1 API.
|
||||
// 2. Only opening 1 house LokiJs DB at a time.
|
||||
static ensureEnergyDataForHouses(houses, date_range){
|
||||
var new_ranges = {}, params = [];
|
||||
houses.forEach((house)=>{
|
||||
var query_ranges = DateRange.addRange(date_range, house.data.energy_datum_ranges || []);
|
||||
if (query_ranges.gaps_filled.length > 0) {
|
||||
params.push({dates: query_ranges.gaps_filled, house_id: house.data.id});
|
||||
new_ranges[house.data.id] = query_ranges.new_ranges;
|
||||
}
|
||||
});
|
||||
|
||||
// already have all the data we need.
|
||||
if (params.length === 0) return Promise.resolve();
|
||||
|
||||
// get all data needed for all houses in one call.
|
||||
return new Promise((fnResolve, fnReject)=>{
|
||||
EnergyDataApi.index({houses: params})
|
||||
.then((energy_data)=>{
|
||||
energy_data = energy_data.reduce((grouped, energy_datum)=>{
|
||||
grouped[energy_datum.house_id] = grouped[energy_datum.house_id] || [];
|
||||
grouped[energy_datum.house_id].push(energy_datum);
|
||||
return grouped;
|
||||
}, {});
|
||||
houses.reduce((promise, house)=>{
|
||||
return promise.then(()=>{
|
||||
if (!energy_data[house.data.id]) return Promise.resolve();
|
||||
return house.saveEnergyData(energy_data[house.data.id], new_ranges[house.data.id])
|
||||
}).then(()=>{
|
||||
house.closeDb();
|
||||
});
|
||||
}, Promise.resolve()).then(fnResolve);
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
EnergyDatum.NAME = NAME;
|
||||
|
||||
Reference in New Issue
Block a user