render energy savings table
This commit is contained in:
@@ -6,7 +6,7 @@ class EnergyController{
|
||||
|
||||
static index(req, res){
|
||||
DB.EnergyDatum.exposeForHouseAtDates(req.query.house_id, req.query.dates).then((energy_data)=>{
|
||||
req.json({data: energy_data});
|
||||
res.json({data: energy_data});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -21,23 +21,23 @@ export class PowerDataSeed {
|
||||
data.time = moment.utc(parseInt(data.time * 1000)).format();
|
||||
rows.push(data);
|
||||
if (rows.length % 100 === 0){
|
||||
DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{
|
||||
rows = [];
|
||||
DB.PowerDatum.bulkCreate(rows, {validate: true}).catch((error)=>{
|
||||
console.error(JSON.stringify(error));
|
||||
console.error(JSON.stringify(rows));
|
||||
});
|
||||
rows = [];
|
||||
}
|
||||
});
|
||||
csvStream.on("end", function(){
|
||||
console.log("all rows parsed")
|
||||
DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{
|
||||
return DB.House.findAll().then((houses)=>{
|
||||
var promise = Promise.resolve();
|
||||
|
||||
var promises = [];
|
||||
for (var house of houses){
|
||||
promise = promise.then(()=>{
|
||||
return house.aggregatePowerToEnergyData();
|
||||
});
|
||||
var p = house.aggregatePowerToEnergyData();
|
||||
promises.push(p);
|
||||
}
|
||||
return promise;
|
||||
return Promise.all(promises);
|
||||
});
|
||||
}).then(()=>{
|
||||
console.log("DONE!")
|
||||
@@ -90,7 +90,6 @@ export class HouseSeed {
|
||||
rows = [];
|
||||
|
||||
csvStream.on("data", function(data){
|
||||
console.log(JSON.stringify(data))
|
||||
rows.push(data);
|
||||
});
|
||||
csvStream.on("end", function(){
|
||||
|
||||
@@ -14,7 +14,9 @@ var EnergyDatum = DB.sequelize.define(NAME, {
|
||||
primaryKey: true,
|
||||
autoIncrement: true // Automatically gets converted to SERIAL for postgres
|
||||
},
|
||||
day: DB.Sequelize.DATEONLY,
|
||||
day: {
|
||||
type: DB.Sequelize.DATEONLY,
|
||||
},
|
||||
production: DB.Sequelize.FLOAT,
|
||||
consumption: DB.Sequelize.FLOAT
|
||||
}, {
|
||||
@@ -22,9 +24,9 @@ var EnergyDatum = DB.sequelize.define(NAME, {
|
||||
underscored: true,
|
||||
tableName: "energy_data",
|
||||
instanceMethods: {
|
||||
exposeToApi: ()=>{
|
||||
exposeToApi: function(){
|
||||
var energy_datum = this,
|
||||
values = this.dataValues;
|
||||
values = energy_datum.dataValues;
|
||||
values.energy_datum = energy_datum.day.getTime() / 1000;
|
||||
return values;
|
||||
}
|
||||
|
||||
@@ -44,11 +44,10 @@ var House = DB.sequelize.define(NAME, {
|
||||
power_data.forEach((power_datum)=>{
|
||||
var day = house.timeToDateString(power_datum.time),
|
||||
energy_datum = energy_data.get(day) || {production: 0, consumption: 0, day: day, house_id: house.id};
|
||||
energy_datum.production += power_datum.production;
|
||||
energy_datum.consumption += power_datum.consumption;
|
||||
energy_datum.production += power_datum.production / 1000; // convert Wh to kWh
|
||||
energy_datum.consumption += power_datum.consumption / 1000; // convert Wh to kWh
|
||||
energy_data.set(day, energy_datum);
|
||||
});
|
||||
console.log(Array.from(energy_data.values()))
|
||||
return DB.EnergyDatum.bulkCreate(Array.from(energy_data.values()), {validate: true});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,7 +14,9 @@ var PowerDatum = DB.sequelize.define(NAME, {
|
||||
primaryKey: true,
|
||||
autoIncrement: true // Automatically gets converted to SERIAL for postgres
|
||||
},
|
||||
time: DB.Sequelize.DATE,
|
||||
time: {
|
||||
type: DB.Sequelize.DATE,
|
||||
},
|
||||
consumption: DB.Sequelize.FLOAT,
|
||||
production: DB.Sequelize.FLOAT
|
||||
}, {
|
||||
|
||||
Reference in New Issue
Block a user