blob: 5f687a0c32798c2c4ee3de2cda9dcbaa0e8a4c50 [file] [log] [blame]
Michael Davisaeedf9e2017-04-06 14:35:56 -05001/**
Iftekharul Islamcd789502017-04-19 14:37:55 -05002 * Controller for sensors
Michael Davisaeedf9e2017-04-06 14:35:56 -05003 *
Iftekharul Islamcd789502017-04-19 14:37:55 -05004 * @module app/serverHealth
5 * @exports sensorsController
6 * @name sensorsController
Michael Davisaeedf9e2017-04-06 14:35:56 -05007 */
8
Andrew Geisslerba5e3f32018-05-24 10:58:00 -07009window.angular && (function(angular) {
10 'use strict';
11 var sensorData = [];
Andrew Geisslerd27bb132018-05-24 11:07:27 -070012 angular.module('app.overview').controller('sensorsController', [
13 '$scope', '$log', '$window', 'APIUtils', 'dataService', '$routeParams',
14 function($scope, $log, $window, APIUtils, dataService, $routeParams) {
15 $scope.dataService = dataService;
16 $scope.customSearch = '';
17 $scope.dropdown_selected = false;
18 $scope.$log = $log;
19 $scope.data = {};
20 $scope.searchTerms = [];
Iftekharul Islamd2269e22017-05-02 09:32:45 -050021
Andrew Geisslerd27bb132018-05-24 11:07:27 -070022 $scope.selectedSeverity =
23 {all: true, normal: false, warning: false, critical: false};
Iftekharul Islamd2269e22017-05-02 09:32:45 -050024
Andrew Geisslerd27bb132018-05-24 11:07:27 -070025 var sensorType = $routeParams.type;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050026
Andrew Geisslerd27bb132018-05-24 11:07:27 -070027 $scope.export_name = sensorType + '_sensors.json';
Iftekharul Islamd2269e22017-05-02 09:32:45 -050028
Andrew Geisslerd27bb132018-05-24 11:07:27 -070029 $scope.toggleSeverityAll = function() {
30 $scope.selectedSeverity.all = !$scope.selectedSeverity.all;
Iftekharul Islamd2269e22017-05-02 09:32:45 -050031
Andrew Geisslerd27bb132018-05-24 11:07:27 -070032 if ($scope.selectedSeverity.all) {
33 $scope.selectedSeverity.normal = false;
34 $scope.selectedSeverity.warning = false;
35 $scope.selectedSeverity.critical = false;
36 }
37 };
Iftekharul Islamd2269e22017-05-02 09:32:45 -050038
Andrew Geisslerd27bb132018-05-24 11:07:27 -070039 $scope.toggleSeverity = function(severity) {
40 $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
Iftekharul Islamd2269e22017-05-02 09:32:45 -050041
Andrew Geisslerd27bb132018-05-24 11:07:27 -070042 if ($scope.selectedSeverity.normal && $scope.selectedSeverity.warning &&
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070043 $scope.selectedSeverity.critical) {
Andrew Geisslerd27bb132018-05-24 11:07:27 -070044 $scope.selectedSeverity.all = true;
45 $scope.selectedSeverity.normal = false;
46 $scope.selectedSeverity.warning = false;
47 $scope.selectedSeverity.critical = false;
48 } else {
49 $scope.selectedSeverity.all = false;
50 }
51 };
Iftekharul Islamd2269e22017-05-02 09:32:45 -050052
Andrew Geisslerd27bb132018-05-24 11:07:27 -070053 $scope.doSearchOnEnter = function(event) {
54 var search =
55 $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
56 if (event.keyCode === 13 && search.length >= 2) {
57 $scope.searchTerms = $scope.customSearch.split(' ');
58 } else {
59 if (search.length == 0) {
60 $scope.searchTerms = [];
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070061 }
62 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -070063 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070064
Andrew Geisslerd27bb132018-05-24 11:07:27 -070065 $scope.doSearchOnClick = function() {
66 var search =
67 $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
68 if (search.length >= 2) {
69 $scope.searchTerms = $scope.customSearch.split(' ');
70 } else {
71 if (search.length == 0) {
72 $scope.searchTerms = [];
73 }
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070074 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -070075 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070076
Andrew Geisslerd27bb132018-05-24 11:07:27 -070077 $scope.jsonData = function(data) {
78 var dt = {};
79 data.data.forEach(function(item) {
80 dt[item.original_data.key] = item.original_data.value;
81 });
82 return JSON.stringify(dt);
83 };
84
85 $scope.filterBySeverity = function(sensor) {
86 if ($scope.selectedSeverity.all) return true;
87
88 return (
89 (sensor.severity_flags.normal && $scope.selectedSeverity.normal) ||
90 (sensor.severity_flags.warning &&
91 $scope.selectedSeverity.warning) ||
92 (sensor.severity_flags.critical &&
93 $scope.selectedSeverity.critical));
94 };
95 $scope.filterBySearchTerms = function(sensor) {
96
97 if (!$scope.searchTerms.length) return true;
98
99 for (var i = 0, length = $scope.searchTerms.length; i < length; i++) {
100 if (sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) ==
101 -1)
102 return false;
103 }
104 return true;
105 };
106
107 function setSensorData() {
108 var data = dataService.sensorData.sensors.filter(function(item) {
109 return item.type == sensorType;
110 });
111 if (data.length) {
112 sensorData = data[0];
113 $scope.data = sensorData;
114 $scope.export_data = $scope.jsonData($scope.data);
115 }
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700116 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700117
118 if (!dataService.sensorData.sensors) {
119 APIUtils.getAllSensorStatus(function(data, originalData) {
120 dataService.sensorData = data;
121 setSensorData();
122 });
123 } else {
124 setSensorData();
125 }
126
127 }
128 ]);
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700129
130})(angular);