aboutsummaryrefslogtreecommitdiff
path: root/routes
diff options
context:
space:
mode:
Diffstat (limited to 'routes')
-rw-r--r--routes/index.js20
-rw-r--r--routes/ws.js15
2 files changed, 27 insertions, 8 deletions
diff --git a/routes/index.js b/routes/index.js
index 4909ff8..12c62cd 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -5,11 +5,27 @@ const deviceManager = require('../services/device-manager');
router.get('/', function(req, res, next) {
+ let deviceId = sortDevices(deviceManager.getAllDevices())[0].deviceId;
+
+ res.redirect('/' + deviceId);
+
+});
+
+router.get('/:deviceId', function(req, res, next) {
+
+ let deviceId = req.params.deviceId;
+
res.render('index', {
- device: deviceManager.getDevice(),
- devices: deviceManager.getAllDevices()
+ device: deviceManager.getDevice(deviceId),
+ devices: sortDevices(deviceManager.getAllDevices())
});
});
+function sortDevices(devices) {
+ return devices.slice().sort((a, b) => {
+ return a.alias.toLowerCase().localeCompare(b.alias.toLowerCase())
+ })
+}
+
module.exports = router;
diff --git a/routes/ws.js b/routes/ws.js
index dc22df2..08b0a18 100644
--- a/routes/ws.js
+++ b/routes/ws.js
@@ -9,14 +9,17 @@ router.ws('/', function(ws, req) {
ws.on('message', msg => {
+ let message = JSON.parse(msg);
+
// Latest data is always pushed out to clients, but clients can also request cached data at any time.
- if(msg === 'getCachedData') {
- let cachedData = dataFetcher.getCachedData();
+ if(message.requestType === 'getCachedData') {
+ let deviceId = message.deviceId;
+ let cachedData = dataFetcher.getCachedData(deviceId);
- ws.send(dataBroadcaster.generatePayload('realtimeUsage', cachedData.realtimeUsage));
- ws.send(dataBroadcaster.generatePayload('dailyUsage', cachedData.dailyUsage));
- ws.send(dataBroadcaster.generatePayload('monthlyUsage', cachedData.monthlyUsage));
- ws.send(dataBroadcaster.generatePayload('powerState', cachedData.powerState));
+ ws.send(dataBroadcaster.generatePayload('realtimeUsage', deviceId, cachedData.realtimeUsage));
+ ws.send(dataBroadcaster.generatePayload('dailyUsage', deviceId, cachedData.dailyUsage));
+ ws.send(dataBroadcaster.generatePayload('monthlyUsage', deviceId, cachedData.monthlyUsage));
+ ws.send(dataBroadcaster.generatePayload('powerState', deviceId, cachedData.powerState));
}
});