diff --git a/client/dashboard/layout/layout.js b/client/dashboard/layout/layout.js
index 09c6871..043519b 100644
--- a/client/dashboard/layout/layout.js
+++ b/client/dashboard/layout/layout.js
@@ -35,8 +35,9 @@ var Layout = React.createClass({
var layout = this,
view = event.target.value;
layout.view_name = event.target.innerText;
- layout.setState({view: view});
- layout.ensureHouseViewData();
+ layout.setState({view: view}, function(){
+ layout.ensureHouseViewData();
+ });
},
setHouse: function(event){
diff --git a/client/dashboard/layout/layout.rt b/client/dashboard/layout/layout.rt
index 6bc107d..7424807 100644
--- a/client/dashboard/layout/layout.rt
+++ b/client/dashboard/layout/layout.rt
@@ -19,8 +19,8 @@
|
Day |
- Consumption (Wh) |
- Production (Wh) |
+ Consumption (kWh) |
+ Production (kWh) |
diff --git a/client/dashboard/layout/layout.rt.js b/client/dashboard/layout/layout.rt.js
index db1a687..ff597ae 100644
--- a/client/dashboard/layout/layout.rt.js
+++ b/client/dashboard/layout/layout.rt.js
@@ -33,7 +33,7 @@ export default function () {
'onChange': this.setHouse
},
_.map(this.state.houses, repeatHouse2.bind(this))
- ])) : null, this.state.view === 'energy' && this.state.house ? React.createElement('table', { 'className': 'table' }, React.createElement('thead', {}, React.createElement('tr', {}, React.createElement('th', {}), React.createElement('th', {}, 'Day'), React.createElement('th', {}, 'Consumption (Wh)'), React.createElement('th', {}, 'Production (Wh)'))), React.createElement.apply(this, [
+ ])) : null, this.state.view === 'energy' && this.state.house ? React.createElement('table', { 'className': 'table' }, React.createElement('thead', {}, React.createElement('tr', {}, React.createElement('th', {}), React.createElement('th', {}, 'Day'), React.createElement('th', {}, 'Consumption (kWh)'), React.createElement('th', {}, 'Production (kWh)'))), React.createElement.apply(this, [
'tbody',
{},
_.map(this.state.house.energy_data, repeatEnergy_datum3.bind(this))
diff --git a/client/models/house.js b/client/models/house.js
index 730e612..c94a527 100644
--- a/client/models/house.js
+++ b/client/models/house.js
@@ -82,7 +82,7 @@ class House {
if (date_range.length === 0) return house.getEnergyData({dates: [[opts.start_date, opts.end_date]]})
- query_ranges = MathUtil.minusRange([start_date, end_date], [min_date, max_date]);
+ query_ranges = MathUtil.minusRange([opts.start_date, opts.end_date], [min_date, max_date]);
cache = ArrayUtil.selectMap(date_range, (datum_day)=>{
return ArrayUtil.all(query_ranges, (query_range)=>{
@@ -105,7 +105,7 @@ class House {
return EnergyDataApi.index(params).then((energy_data)=>{
return energy_data.map((energy_datum_data)=>{
var energy_datum = EnergyDatum.updateOrInitialize(energy_datum_data, house);
- house.energy_data_store.set(power_datum.time, energy_datum);
+ house.energy_data_store.set(energy_datum.day, energy_datum);
house.energy_data.push(energy_datum);
return energy_datum;
});
diff --git a/client/models/power_datum.js b/client/models/power_datum.js
index 22b3c88..c21acfb 100644
--- a/client/models/power_datum.js
+++ b/client/models/power_datum.js
@@ -23,7 +23,7 @@ class PowerDatum {
get time_to_s(){
var power_datum = this;
- return power_datum.data.time.format('YYYY-MM-DD HH:MM');
+ return power_datum.data.time.format('YYYY-MM-DD HH:mm');
}
get consumption_to_s(){
var power_datum = this;
diff --git a/server/controllers/energy_controller.js b/server/controllers/energy_controller.js
index 06c05d0..9646461 100644
--- a/server/controllers/energy_controller.js
+++ b/server/controllers/energy_controller.js
@@ -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});
});
}
diff --git a/server/lib/tasks/seed_data.js b/server/lib/tasks/seed_data.js
index ba1a273..797ee5e 100644
--- a/server/lib/tasks/seed_data.js
+++ b/server/lib/tasks/seed_data.js
@@ -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(){
diff --git a/server/models/energy_datum.js b/server/models/energy_datum.js
index 77cae18..5d54a71 100644
--- a/server/models/energy_datum.js
+++ b/server/models/energy_datum.js
@@ -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;
}
diff --git a/server/models/house.js b/server/models/house.js
index ad3d453..1cd9e3c 100644
--- a/server/models/house.js
+++ b/server/models/house.js
@@ -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});
});
}
diff --git a/server/models/power_datum.js b/server/models/power_datum.js
index 36bc3b2..99b29e2 100644
--- a/server/models/power_datum.js
+++ b/server/models/power_datum.js
@@ -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
}, {