1/** 2 * Controller for sensors-overview 3 * 4 * @module app/serverHealth 5 * @exports sensorsOverviewController 6 * @name sensorsOverviewController 7 * @version 0.1.0 8 */ 9 10window.angular && (function (angular) { 11 'use strict'; 12 angular 13 .module('app.overview') 14 .controller('sensorsOverviewController', [ 15 '$rootScope', 16 '$scope', 17 '$log', 18 '$window', 19 'APIUtils', 20 'dataService', 21 'Constants', 22 function($rootScope, $scope, $log, $window, APIUtils, dataService, Constants){ 23 $scope.dataService = dataService; 24 25 $scope.dropdown_selected = false; 26 27 $scope.$log = $log; 28 $scope.customSearch = ""; 29 $scope.searchTerms = []; 30 $scope.messages = Constants.MESSAGES.SENSOR; 31 $scope.selectedSeverity = { 32 all: true, 33 normal: false, 34 warning: false, 35 critical: false 36 }; 37 $scope.export_name = "sensors.json"; 38 $scope.loading = false; 39 $scope.jsonData = function(data){ 40 var dt = {}; 41 data.data.forEach(function(item){ 42 dt[item.original_data.key] = item.original_data.value; 43 }); 44 return JSON.stringify(dt); 45 }; 46 47 $scope.clear = function(){ 48 $scope.customSearch = ""; 49 $scope.searchTerms = []; 50 } 51 52 $scope.doSearchOnEnter = function (event) { 53 var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,''); 54 if (event.keyCode === 13 && 55 search.length >= 2) { 56 $scope.searchTerms = $scope.customSearch.split(" "); 57 }else{ 58 if(search.length == 0){ 59 $scope.searchTerms = []; 60 } 61 } 62 }; 63 64 $scope.doSearchOnClick = function() { 65 var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,''); 66 if (search.length >= 2) { 67 $scope.searchTerms = $scope.customSearch.split(" "); 68 }else{ 69 if(search.length == 0){ 70 $scope.searchTerms = []; 71 } 72 } 73 } 74 75 $scope.toggleSeverityAll = function(){ 76 $scope.selectedSeverity.all = !$scope.selectedSeverity.all; 77 78 if($scope.selectedSeverity.all){ 79 $scope.selectedSeverity.warning = false; 80 $scope.selectedSeverity.critical = false; 81 } 82 } 83 84 $scope.toggleSeverity = function(severity){ 85 $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity]; 86 87 if(['warning', 'critical'].indexOf(severity) > -1){ 88 if($scope.selectedSeverity[severity] == false && 89 (!$scope.selectedSeverity.warning && 90 !$scope.selectedSeverity.critical 91 )){ 92 $scope.selectedSeverity.all = true; 93 return; 94 } 95 } 96 97 if($scope.selectedSeverity.warning && 98 $scope.selectedSeverity.critical){ 99 $scope.selectedSeverity.all = true; 100 $scope.selectedSeverity.warning = false; 101 $scope.selectedSeverity.critical = false; 102 }else{ 103 $scope.selectedSeverity.all = false; 104 } 105 } 106 107 $scope.filterBySeverity = function(sensor){ 108 if($scope.selectedSeverity.all) return true; 109 110 return( (sensor.severity_flags.normal && $scope.selectedSeverity.normal) || 111 (sensor.severity_flags.warning && $scope.selectedSeverity.warning) || 112 (sensor.severity_flags.critical && $scope.selectedSeverity.critical) 113 ); 114 } 115 $scope.filterBySearchTerms = function(sensor){ 116 117 if(!$scope.searchTerms.length) return true; 118 119 for(var i = 0, length = $scope.searchTerms.length; i < length; i++){ 120 if(sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false; 121 } 122 return true; 123 } 124 125 $scope.loadSensorData = function(){ 126 $scope.loading = true; 127 APIUtils.getAllSensorStatus(function(data, originalData){ 128 $scope.data = data; 129 $scope.originalData = originalData; 130 dataService.sensorData = data; 131 $scope.export_data = JSON.stringify(originalData); 132 $scope.loading = false; 133 }); 134 }; 135 136 $scope.loadSensorData(); 137 138 var refreshDataListener = $rootScope.$on('refresh-data', function(event, args) { 139 $scope.loadSensorData(); 140 }); 141 142 $scope.$on('$destroy', function() { 143 refreshDataListener(); 144 }); 145 } 146 ] 147 ); 148 149})(angular); 150