blob: 0a9d0d235db7d9eb8855b6b155be7a6892b7efe1 [file] [log] [blame]
Michael Davis994a93b2017-04-18 10:01:04 -05001/**
Iftekharul Islamcd789502017-04-19 14:37:55 -05002 * Controller for sensors-overview
Michael Davis994a93b2017-04-18 10:01:04 -05003 *
Iftekharul Islamcd789502017-04-19 14:37:55 -05004 * @module app/serverHealth
5 * @exports sensorsOverviewController
6 * @name sensorsOverviewController
Michael Davis994a93b2017-04-18 10:01:04 -05007 * @version 0.1.0
8 */
9
10window.angular && (function (angular) {
11 'use strict';
Michael Davis994a93b2017-04-18 10:01:04 -050012 angular
13 .module('app.overview')
Iftekharul Islamcd789502017-04-19 14:37:55 -050014 .controller('sensorsOverviewController', [
CamVan Nguyen23217da2018-03-22 00:22:50 -050015 '$rootScope',
Michael Davis994a93b2017-04-18 10:01:04 -050016 '$scope',
17 '$log',
Gunnar Millseedefd32018-02-28 17:02:34 -060018 '$window',
19 'APIUtils',
Michael Davis994a93b2017-04-18 10:01:04 -050020 'dataService',
Iftekharul Islam81a49de2018-02-08 13:28:09 -060021 'Constants',
CamVan Nguyen23217da2018-03-22 00:22:50 -050022 function($rootScope, $scope, $log, $window, APIUtils, dataService, Constants){
Michael Davis994a93b2017-04-18 10:01:04 -050023 $scope.dataService = dataService;
24
25 $scope.dropdown_selected = false;
26
Iftekharul Islamcd789502017-04-19 14:37:55 -050027 $scope.$log = $log;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050028 $scope.customSearch = "";
29 $scope.searchTerms = [];
Iftekharul Islam81a49de2018-02-08 13:28:09 -060030 $scope.messages = Constants.MESSAGES.SENSOR;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050031 $scope.selectedSeverity = {
32 all: true,
33 normal: false,
34 warning: false,
35 critical: false
36 };
37 $scope.export_name = "sensors.json";
Michael Davis428375e2017-08-01 15:48:34 -050038 $scope.loading = false;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050039 $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
Iftekharul Islam171c6a12017-08-11 08:35:47 -050047 $scope.clear = function(){
48 $scope.customSearch = "";
49 $scope.searchTerms = [];
50 }
51
Iftekharul Islamd2269e22017-05-02 09:32:45 -050052 $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(){
Iftekharul Islamc22425f2017-09-06 10:04:14 -050076 $scope.selectedSeverity.all = !$scope.selectedSeverity.all;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050077
78 if($scope.selectedSeverity.all){
Iftekharul Islamd2269e22017-05-02 09:32:45 -050079 $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
Iftekharul Islam96bbf312017-08-22 13:44:38 -050087 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
Gunnar Millseedefd32018-02-28 17:02:34 -060097 if($scope.selectedSeverity.warning &&
Iftekharul Islamd2269e22017-05-02 09:32:45 -050098 $scope.selectedSeverity.critical){
99 $scope.selectedSeverity.all = true;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500100 $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
Gunnar Millseedefd32018-02-28 17:02:34 -0600117 if(!$scope.searchTerms.length) return true;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500118
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(){
Michael Davis428375e2017-08-01 15:48:34 -0500126 $scope.loading = true;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500127 APIUtils.getAllSensorStatus(function(data, originalData){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500128 $scope.data = data;
129 $scope.originalData = originalData;
Iftekharul Islamc1535922017-06-19 12:49:04 -0500130 dataService.sensorData = data;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500131 $scope.export_data = JSON.stringify(originalData);
Michael Davis428375e2017-08-01 15:48:34 -0500132 $scope.loading = false;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500133 });
134 };
135
136 $scope.loadSensorData();
CamVan Nguyen23217da2018-03-22 00:22:50 -0500137
138 var refreshDataListener = $rootScope.$on('refresh-data', function(event, args) {
139 $scope.loadSensorData();
140 });
141
142 $scope.$on('$destroy', function() {
143 refreshDataListener();
144 });
Michael Davis994a93b2017-04-18 10:01:04 -0500145 }
146 ]
147 );
148
CamVan Nguyen23217da2018-03-22 00:22:50 -0500149})(angular);