diff options
Diffstat (limited to 'app/server-health/controllers/sensors-controller.js')
-rw-r--r-- | app/server-health/controllers/sensors-controller.js | 117 |
1 files changed, 112 insertions, 5 deletions
diff --git a/app/server-health/controllers/sensors-controller.js b/app/server-health/controllers/sensors-controller.js index aaa5aa6..cf10541 100644 --- a/app/server-health/controllers/sensors-controller.js +++ b/app/server-health/controllers/sensors-controller.js @@ -9,7 +9,7 @@ window.angular && (function (angular) { 'use strict'; - + var sensorData = [], originalData = {}; angular .module('app.overview') .controller('sensorsController', [ @@ -18,13 +18,120 @@ window.angular && (function (angular) { '$window', 'APIUtils', 'dataService', - function($scope, $log, $window, APIUtils, dataService, userModel){ + '$routeParams', + function($scope, $log, $window, APIUtils, dataService, $routeParams){ $scope.dataService = dataService; - + $scope.customSearch = ""; $scope.dropdown_selected = false; - $scope.$log = $log; - $scope.message = 'Hello World!'; + $scope.data = {}; + $scope.searchTerms = []; + + $scope.selectedSeverity = { + all: true, + normal: false, + warning: false, + critical: false + }; + + var sensorType = $routeParams.type; + + $scope.export_name = sensorType + "_sensors.json"; + + $scope.toggleSeverityAll = function(){ + $scope.selectedSeverity.all = !$scope.selectedSeverity.all; + + if($scope.selectedSeverity.all){ + $scope.selectedSeverity.normal = false; + $scope.selectedSeverity.warning = false; + $scope.selectedSeverity.critical = false; + } + } + + $scope.toggleSeverity = function(severity){ + $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity]; + + if($scope.selectedSeverity.normal && + $scope.selectedSeverity.warning && + $scope.selectedSeverity.critical){ + $scope.selectedSeverity.all = true; + $scope.selectedSeverity.normal = false; + $scope.selectedSeverity.warning = false; + $scope.selectedSeverity.critical = false; + }else{ + $scope.selectedSeverity.all = false; + } + } + + $scope.doSearchOnEnter = function (event) { + var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,''); + if (event.keyCode === 13 && + search.length >= 2) { + $scope.searchTerms = $scope.customSearch.split(" "); + }else{ + if(search.length == 0){ + $scope.searchTerms = []; + } + } + }; + + $scope.doSearchOnClick = function() { + var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,''); + if (search.length >= 2) { + $scope.searchTerms = $scope.customSearch.split(" "); + }else{ + if(search.length == 0){ + $scope.searchTerms = []; + } + } + } + + $scope.jsonData = function(data){ + var dt = {}; + data.data.forEach(function(item){ + dt[item.original_data.key] = item.original_data.value; + }); + return JSON.stringify(dt); + }; + + $scope.filterBySeverity = function(sensor){ + if($scope.selectedSeverity.all) return true; + + return( (sensor.severity_flags.normal && $scope.selectedSeverity.normal) || + (sensor.severity_flags.warning && $scope.selectedSeverity.warning) || + (sensor.severity_flags.critical && $scope.selectedSeverity.critical) + ); + } + $scope.filterBySearchTerms = function(sensor){ + + if(!$scope.searchTerms.length) return true; + + for(var i = 0, length = $scope.searchTerms.length; i < length; i++){ + if(sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false; + } + return true; + } + + function setSensorData(){ + var data = dataService.sensorData.sensors.filter(function(item){ + return item.type == sensorType; + }); + if(data.length){ + sensorData = data[0]; + $scope.data = sensorData; + $scope.export_data = $scope.jsonData($scope.data); + } + } + + if(!dataService.sensorData.sensors){ + APIUtils.getAllSensorStatus(function(data, originalData){ + dataService.sensorData = data; + setSensorData(); + }); + }else{ + setSensorData(); + } + } ] ); |