From 1301d90e93af799a9054f133847ebf3cbda15f9d Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 7 Apr 2018 21:43:17 +0100 Subject: Add support for switching between multiple plugs --- routes/index.js | 20 ++++++++++++++++++-- routes/ws.js | 15 +++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) (limited to 'routes') 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)); } }); -- cgit v1.2.3