From 2073963195bd0cd210108e91c7fcffe05f2126f4 Mon Sep 17 00:00:00 2001 From: lasantha Date: Mon, 7 Aug 2017 22:33:03 +0530 Subject: [PATCH 1/2] closes wso2/product-iots/issues#1242 --- .../analytics-view.js | 26 ++++++-- .../public/js/device-stats.js | 63 ++++++++++--------- 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js index b9deeab14f..ac24fbf1a3 100644 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js @@ -20,29 +20,43 @@ function onRequest(context) { var log = new Log("stats.js"); var carbonServer = require("carbon").server; var device = context.unit.params.device; + // log.error(session); // graph configuration var graphData = { Sensors:["accelerometer","magnetic", "gravity", "pressure", "proximity", "gyroscope"], Realtime_Data:['battery','light','rotation'] - }; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var constants = require("/app/modules/constants.js"); + var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; var websocketEndpoint = devicemgtProps["wssURL"].replace("https", "wss"); var jwtService = carbonServer.osgiService( 'org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService'); var jwtClient = jwtService.getJWTClient(); var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]); var token = ""; + var tokenPair = null; + var user = userModule.getCarbonUser(); + var tenantDomain = user.domain; if (encodedClientKeys) { var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"]; var resp = tokenUtil.decode(encodedClientKeys).split(":"); - var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {}); - if (tokenPair) { - token = tokenPair.accessToken; + if (tenantDomain == "carbon.super") { + tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {}); + if (tokenPair) { + token = tokenPair.accessToken; + } + websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.android.sense/1.0.0?" + + "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token; + } else { + tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username + "@" + tenantDomain,"default", {}); + if (tokenPair) { + token = tokenPair.accessToken; + } + websocketEndpoint = websocketEndpoint + "/secured-websocket/t/"+tenantDomain+"/org.wso2.iot.android.sense/1.0.0?" + + "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token; } - websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.android.sense/1.0.0?" + - "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token; + } return {"device": device, "websocketEndpoint": websocketEndpoint, "graphData":graphData}; } \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/public/js/device-stats.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/public/js/device-stats.js index 4b92faf6c8..dc9a16476b 100644 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/public/js/device-stats.js +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/public/js/device-stats.js @@ -158,6 +158,15 @@ function threeDlineGraph(type, xChartData, yChartData, zChartData) { graph: graph }); + new Rickshaw.Graph.HoverDetail({ + graph: graph, + formatter: function (series, x, y) { + var date = '' + moment(x * 1000).format('Do MMM YYYY h:mm:ss a') + ''; + var swatch = ''; + return swatch + series.name + ": " + parseInt(y) + '
' + date; + } + }); + graph.render(); return graph; @@ -234,58 +243,61 @@ function connect(target) { if (ws) { ws.onmessage = function (event) { var dataPoint = JSON.parse(event.data); - if (dataPoint) { var time = parseInt(dataPoint[4]) / 1000; switch (dataPoint[typeId]) { case "battery": - graphUpdate(batteryData, time, dataPoint[batteryId], graphMap["battery"]); + graphUpdate(batteryData, time, dataPoint[batteryId]); + graphMap["battery"].update(); break; case "light": - graphUpdate(lightData, time, dataPoint[lightId], graphMap["light"]); + graphUpdate(lightData, time, dataPoint[lightId]); + graphMap["light"].update(); break; case "pressure": - graphUpdate(pressureData, time, dataPoint[pressureId], graphMap["pressure"]); + graphUpdate(pressureData, time, dataPoint[pressureId]); + graphMap["pressure"].update(); break; case "proximity": - graphUpdate(proximityData, time, dataPoint[proximityId], graphMap["proximity"]); + graphUpdate(proximityData, time, dataPoint[proximityId]); + graphMap["proximity"].update(); break; case "accelerometer": - dataUpdate(accelerometer_xData, time, dataPoint[accelerometer_xId]); - dataUpdate(accelerometer_yData, time, dataPoint[accelerometer_yId]); - dataUpdate(accelerometer_zData, time, dataPoint[accelerometer_zId]); + graphUpdate(accelerometer_xData, time, dataPoint[accelerometer_xId]); + graphUpdate(accelerometer_yData, time, dataPoint[accelerometer_yId]); + graphUpdate(accelerometer_zData, time, dataPoint[accelerometer_zId]); graphMap["accelerometer"].update(); break; case "magnetic": - dataUpdate(magnetic_xData, time, dataPoint[magnetic_xId]); - dataUpdate(magnetic_yData, time, dataPoint[magnetic_yId]); - dataUpdate(magnetic_zData, time, dataPoint[magnetic_zId]); + graphUpdate(magnetic_xData, time, dataPoint[magnetic_xId]); + graphUpdate(magnetic_yData, time, dataPoint[magnetic_yId]); + graphUpdate(magnetic_zData, time, dataPoint[magnetic_zId]); graphMap["magnetic"].update(); break; case "gyroscope": - dataUpdate(gyroscope_xData, time, dataPoint[gyroscope_xId]); - dataUpdate(gyroscope_yData, time, dataPoint[gyroscope_yId]); - dataUpdate(gyroscope_zData, time, dataPoint[gyroscope_zId]); + graphUpdate(gyroscope_xData, time, dataPoint[gyroscope_xId]); + graphUpdate(gyroscope_yData, time, dataPoint[gyroscope_yId]); + graphUpdate(gyroscope_zData, time, dataPoint[gyroscope_zId]); graphMap["gyroscope"].update(); break; case "rotation": - dataUpdate(magnetic_xData, time, dataPoint[rotation_xId]); - dataUpdate(magnetic_yData, time, dataPoint[rotation_yId]); - dataUpdate(magnetic_zData, time, dataPoint[rotation_zId]); + graphUpdate(magnetic_xData, time, dataPoint[rotation_xId]); + graphUpdate(magnetic_yData, time, dataPoint[rotation_yId]); + graphUpdate(magnetic_zData, time, dataPoint[rotation_zId]); graphMap["rotation"].update(); break; case "gravity": - dataUpdate(gravity_xData, time, dataPoint[gravity_xId]); - dataUpdate(gravity_yData, time, dataPoint[gravity_yId]); - dataUpdate(gravity_zData, time, dataPoint[gravity_zId]); + graphUpdate(gravity_xData, time, dataPoint[gravity_xId]); + graphUpdate(gravity_yData, time, dataPoint[gravity_yId]); + graphUpdate(gravity_zData, time, dataPoint[gravity_zId]); graphMap["gravity"].update(); break; } @@ -294,16 +306,7 @@ function connect(target) { } } -function graphUpdate(chartData, xValue, yValue, graph) { - chartData.push({ - x: parseInt(xValue), - y: parseFloat(yValue) - }); - chartData.shift(); - graph.update(); -} - -function dataUpdate(chartData, xValue, yValue) { +function graphUpdate(chartData, xValue, yValue) { chartData.push({ x: parseInt(xValue), y: parseFloat(yValue) From 495714251d77da9827989680323708c4cba590c7 Mon Sep 17 00:00:00 2001 From: lasantha Date: Mon, 7 Aug 2017 22:37:38 +0530 Subject: [PATCH 2/2] removing unnecessary comments --- .../analytics-view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js index ac24fbf1a3..8a0b02bc76 100644 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view/analytics-view.js @@ -20,7 +20,7 @@ function onRequest(context) { var log = new Log("stats.js"); var carbonServer = require("carbon").server; var device = context.unit.params.device; - // log.error(session); + // graph configuration var graphData = { Sensors:["accelerometer","magnetic", "gravity", "pressure", "proximity", "gyroscope"],