From e27279a83b0f9a100b0a1df5ec6c63bf9b7dbf8e Mon Sep 17 00:00:00 2001 From: charithag Date: Fri, 24 Jul 2015 23:07:04 +0530 Subject: [PATCH] Fix bugs in unified framework --- .../jaggeryapps/iotserver/lib/fuse.jag | 3 +- .../iotserver/lib/handlebars-helpers.js | 48 +++++++++++-------- .../device-detail/public/js/device-detail.js | 39 --------------- .../policy-detail/public/js/policy-detail.js | 39 --------------- 4 files changed, 29 insertions(+), 100 deletions(-) diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/lib/fuse.jag b/modules/distribution/src/repository/jaggeryapps/iotserver/lib/fuse.jag index c7731e91..6676b328 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/lib/fuse.jag +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/lib/fuse.jag @@ -11,7 +11,8 @@ var fuseState = { zones: {}, appName: '', currentZone: [], //TODO: rename to zone Stack - currentUnit: null + currentUnit: null, + viewModelCache:{} }; var requestId = function makeId() { diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/lib/handlebars-helpers.js b/modules/distribution/src/repository/jaggeryapps/iotserver/lib/handlebars-helpers.js index 8c915700..35e4b56c 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/lib/handlebars-helpers.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/lib/handlebars-helpers.js @@ -11,29 +11,35 @@ var getScope = function (unit,configs) { var viewModel = {}; var cbResult; if (jsFile.isExists()) { - script = require(jsFile.getPath()); - //Eagerly make the viewModel the template configs - viewModel = templateConfigs; - //Check if the unit author has specified an onRequest - //callback - if(script.hasOwnProperty('onRequest')){ - script.app = { - url: '/' + fuseState.appName, - publicURL: '/' + fuseState.appName + '/public/' + unit, - "class": unit + '-unit' - }; - onRequestCb = script.onRequest; - cbResult = onRequestCb(templateConfigs); - log.debug("passing configs to unit "+unit+" configs: "+stringify(templateConfigs)); - //If the execution does not yield an object we will print - //a warning as the unit author may have forgotten to return a data object - if(cbResult===undefined){ - cbResult = {}; //Give an empty data object - log.warn('[' + requestId + '] unit "' + unit + '" has a onRequest method which does not return a value.This may lead to the ' - +'unit not been rendered correctly.'); + if(fuseState.viewModelCache[jsFile.getPath()]){ + cbResult = fuseState.viewModelCache[jsFile.getPath()]; + }else{ + script = require(jsFile.getPath()); + //Eagerly make the viewModel the template configs + viewModel = templateConfigs; + //Check if the unit author has specified an onRequest + //callback + if(script.hasOwnProperty('onRequest')){ + script.app = { + url: '/' + fuseState.appName, + publicURL: '/' + fuseState.appName + '/public/' + unit, + "class": unit + '-unit' + }; + onRequestCb = script.onRequest; + cbResult = onRequestCb(templateConfigs); + log.debug("passing configs to unit "+unit+" configs: "+stringify(templateConfigs)); + fuseState.viewModelCache[jsFile.getPath()] = cbResult; } - viewModel = cbResult; } + + //If the execution does not yield an object we will print + //a warning as the unit author may have forgotten to return a data object + if(cbResult===undefined){ + cbResult = {}; //Give an empty data object + log.warn('[' + requestId + '] unit "' + unit + '" has a onRequest method which does not return a value.This may lead to the ' + +'unit not been rendered correctly.'); + } + viewModel = cbResult; } else{ //If there is no script then the view should get the configurations diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-detail/public/js/device-detail.js b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-detail/public/js/device-detail.js index c453c889..18462e9d 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-detail/public/js/device-detail.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-detail/public/js/device-detail.js @@ -24,46 +24,7 @@ function formatDates(){ } (function () { - var deviceId = $(".device-id"); - var deviceIdentifier = deviceId.data("deviceid"); - var deviceType = deviceId.data("type"); - var payload = [deviceIdentifier]; - if (deviceType == "ios") { - var serviceUrl = "/ios/operation/deviceinfo"; - } else if (deviceType == "android") { - var serviceUrl = "/mdm-android-agent/operation/device-info"; - } - invokerUtil.post(serviceUrl, payload, - function(message){ - console.log(message); - }, function (message) { - console.log(message); - }); $(document).ready(function(){ - loadOperationBar(deviceType); - loadMap(); formatDates(); }); - function loadMap(){ - var map; - function initialize() { - var mapOptions = { - zoom: 18 - }; - var lat = 6.9098591; - var long = 79.8523753; - map = new google.maps.Map(document.getElementById('device-location'), - mapOptions); - - var pos = new google.maps.LatLng(lat, - long); - var marker = new google.maps.Marker({ - position: pos, - map: map - }); - - map.setCenter(pos); - } - google.maps.event.addDomListener(window, 'load', initialize); - } }()); diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/policy-detail/public/js/policy-detail.js b/modules/distribution/src/repository/jaggeryapps/iotserver/units/policy-detail/public/js/policy-detail.js index c453c889..18462e9d 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/policy-detail/public/js/policy-detail.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/policy-detail/public/js/policy-detail.js @@ -24,46 +24,7 @@ function formatDates(){ } (function () { - var deviceId = $(".device-id"); - var deviceIdentifier = deviceId.data("deviceid"); - var deviceType = deviceId.data("type"); - var payload = [deviceIdentifier]; - if (deviceType == "ios") { - var serviceUrl = "/ios/operation/deviceinfo"; - } else if (deviceType == "android") { - var serviceUrl = "/mdm-android-agent/operation/device-info"; - } - invokerUtil.post(serviceUrl, payload, - function(message){ - console.log(message); - }, function (message) { - console.log(message); - }); $(document).ready(function(){ - loadOperationBar(deviceType); - loadMap(); formatDates(); }); - function loadMap(){ - var map; - function initialize() { - var mapOptions = { - zoom: 18 - }; - var lat = 6.9098591; - var long = 79.8523753; - map = new google.maps.Map(document.getElementById('device-location'), - mapOptions); - - var pos = new google.maps.LatLng(lat, - long); - var marker = new google.maps.Marker({ - position: pos, - map: map - }); - - map.setCenter(pos); - } - google.maps.event.addDomListener(window, 'load', initialize); - } }());