Skip to content
This repository has been archived by the owner on Mar 13, 2021. It is now read-only.

Commit

Permalink
Fix sensor--card error
Browse files Browse the repository at this point in the history
  • Loading branch information
ed-asriyan committed Jul 20, 2019
1 parent 22a2300 commit cf25185
Show file tree
Hide file tree
Showing 12 changed files with 97 additions and 64 deletions.
14 changes: 10 additions & 4 deletions app/controllers/account/sensor.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,24 @@ export default class extends Controller {
},
];

@computed('model.values.@each')
@computed('model.values.@each', 'field')
get sensorData() {
let mapFunc;
if (this.get('field')) {
mapFunc = (reading) => [Math.round(reading.get('date').getTime()), reading.get(`value.${this.get('field')}`)];
mapFunc = (reading) => [
Math.round(reading.get('date').getTime()),
Number.parseInt(reading.get(`value.${this.get('field')}`)),
];
} else {
mapFunc = (reading) => [Math.round(reading.get('date').getTime()), reading.get('value')];
mapFunc = (reading) => [
Math.round(reading.get('date').getTime()),
Number.parseInt(reading.get('value')),
];
}
return this.get('model.values').map(mapFunc).sort((a, b) => a[0] - b[0]);
}

@computed('model.name', 'model.unitName')
@computed('model.name', 'model.unitName', 'field')
get chartOptions() {
const name = this.get('field') ? this.intl.t(`obd.${this.get('field')}`) : this.get('model.name');
const unitName = this.get('model.unitName');
Expand Down
2 changes: 1 addition & 1 deletion app/models/sensor-value.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const {
} = DS;

export default class extends DS.Model {
@attr('raw') value;
@attr('json') value;
@attr('date') date;
@attr('string') hash;
@belongsTo('sensor', {async: false}) sensor;
Expand Down
2 changes: 1 addition & 1 deletion app/models/sensor.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export default class extends DS.Model {
@attr('number') charge;
@attr('number') forPayment;

@attr('raw') lastValue;
@attr('json') lastValue;

@attr('string') valueMonth;
@attr('string') valuePrevYear;
Expand Down
8 changes: 4 additions & 4 deletions app/serializers/sensor-value.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const serializeDate = function(dateString) {
};

const generateId = function(data) {
return `${data['hash']}${data['date']}${data['sensor_id']}`;
return `${data['hash']}${data['date'] || data['time_stamp']}${data['sensor_id']}`;
};

const DefaultSensorValueSerializer = class extends ApplicationSerializer {
Expand All @@ -29,7 +29,7 @@ const DefaultSensorValueSerializer = class extends ApplicationSerializer {
id: generateId(data),
type: 'sensor-value',
attributes: {
value: JSON.parse(data['value']),
value: data['value'],
date: serializeDate(data['date']),
hash: data['hash'],
},
Expand All @@ -52,8 +52,8 @@ const LiteSensorValueSerializer = class extends ApplicationSerializer {
id: generateId(data),
type: 'sensor-value',
attributes: {
value: typeof data['value'] === 'string' ? JSON.parse(data['value']) : data['value'],
date: serializeDate(data['date']),
value: data['value'],
date: serializeDate(data['time_stamp']),
hash: data['hash'],
},
relationships: {
Expand Down
2 changes: 1 addition & 1 deletion app/serializers/sensor.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export default class extends ApplicationSerializer.extend(DS.EmbeddedRecordsMixi
};

normalize(modelClass, resourceHash) {
const type = get(resourceHash, 'characteristics.sensor_type');
const type = get(resourceHash, 'characteristics.sensor_type') || get(resourceHash, 'type');

const rawLastValue = get(resourceHash, 'last_value');
const additional = {
Expand Down
2 changes: 1 addition & 1 deletion app/templates/account/subject.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</div>

<div class="row havings">
{{#each (sort-by "typeName" model.sensors) as |sensor|}}
{{#each (sort-by "typeName" (filter-by 'typeName' model.sensors)) as |sensor|}}
{{sensor-card sensor=sensor}}
{{/each}}
</div>
19 changes: 19 additions & 0 deletions app/transforms/json.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import DS from 'ember-data';

export default class extends DS.Transform {
deserialize(serialized) {
if (typeof serialized === 'object') {
return serialized;
} else {
try {
return JSON.parse(serialized);
} catch (e) {
return serialized;
}
}
}

serialize(deserialized) {
return deserialized;
}
}
11 changes: 0 additions & 11 deletions app/transforms/raw.js

This file was deleted.

4 changes: 2 additions & 2 deletions ember-cli-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ module.exports = function(defaults) {
},

'ember-composable-helpers': {
only: ['sort-by']
}
only: ['sort-by', 'filter-by'],
},
});

// Use `app.import` to add additional libraries to the generated
Expand Down
38 changes: 0 additions & 38 deletions server/mocks/lite/data.js

This file was deleted.

54 changes: 54 additions & 0 deletions server/mocks/lite/objects.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
'use strict';

const carPosition = {lat: 55.751244, lon: 37.618423};

const movePoint = function(point) {
const maxDelta = 0.005;
point.lat += (Math.random() - 0.5) * maxDelta;
point.lon += (Math.random() - 0.5) * maxDelta;
};

module.exports = function(app) {
const express = require('express');
const apiRouter = express.Router();

apiRouter.get('/objects', function(req, res) {
// imitate car driving
movePoint(carPosition);

res.send({
'objects': [{'name': 'Mercedes', 'id': 1}],
'sensors': [
{
'controller': 1,
'name': 'OBD',
'id': 6,
'last_value': {'speed': 1, 'engine_load': 2},
'status': null,
'type': 5,
},
{
'controller': 1,
'name': 'GPS',
'id': 7,
'last_value': carPosition,
'status': null,
'type': 6,
}],
'controllers': [
{
'name': 'Car controller',
'id': 1,
'activation_date': '2019-07-20',
'mac': '00:25:96:FF:FE:12:34:56',
'status': 0,
'deactivation_date': '2019-07-20',
'object': 1,
'controller_type': 0,
'meta': '',
}],
});
});

app.use('/api', apiRouter);
};
5 changes: 4 additions & 1 deletion server/mocks/lite/sensor.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ module.exports = function(app) {
const date = new Date();
for (let i = 0; i < 1000; ++i) {
date.setMinutes(date.getMinutes() + 1);
data.push({'time_stamp': date.toISOString(), 'value': {[req.query['field']]: Math.sin(i / 50) * (Math.random() - 0.5) * maxDelta}});
data.push({
'time_stamp': date.toISOString(),
'value': {[req.query['field']]: Math.sin(i / 50) * (Math.random() - 0.5) * maxDelta},
});
}
res.send(data);
});
Expand Down

0 comments on commit cf25185

Please sign in to comment.