blob: 4359c9c29cf9a3ac1ef464f73b7d7c9c8db644c5 [file] [log] [blame]
Iftekharul Islam8b4828a2017-04-19 14:37:55 -05001/**
2 * Controller for log
3 *
4 * @module app/serverHealth
5 * @exports logController
6 * @name logController
Iftekharul Islam8b4828a2017-04-19 14:37:55 -05007 */
8
Andrew Geisslerba5e3f32018-05-24 10:58:00 -07009window.angular && (function(angular) {
10 'use strict';
Andrew Geisslerd27bb132018-05-24 11:07:27 -070011 angular.module('app.serverHealth')
12 .config(function(paginationTemplateProvider) {
13 paginationTemplateProvider.setString(
14 require('../../common/directives/dirPagination.tpl.html'));
15 })
16 .controller('logController', [
17 '$scope', '$window', 'APIUtils', 'dataService', 'Constants',
18 '$routeParams', '$filter',
19 function(
20 $scope, $window, APIUtils, dataService, Constants, $routeParams,
21 $filter) {
22 $scope.dataService = dataService;
23 $scope.logs = [];
24 $scope.tmz = 'EDT';
25 $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
26 $scope.loading = false;
27 var expandedSelectedIdOnce = false;
Michael Davis428375e2017-08-01 15:48:34 -050028
Andrew Geisslerd27bb132018-05-24 11:07:27 -070029 var sensorType = $routeParams.type;
30 var eventId = $routeParams.id;
Michael Davis428375e2017-08-01 15:48:34 -050031
Andrew Geisslerd27bb132018-05-24 11:07:27 -070032 // priority buttons
33 $scope.selectedSeverity =
34 {all: true, low: false, medium: false, high: false};
Michael Davis428375e2017-08-01 15:48:34 -050035
Andrew Geisslerd27bb132018-05-24 11:07:27 -070036 if (sensorType == 'high') {
37 $scope.selectedSeverity.all = false;
38 $scope.selectedSeverity.high = true;
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070039 }
40
Andrew Geisslerd27bb132018-05-24 11:07:27 -070041 $scope.selectedStatus = {all: true, resolved: false};
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070042
Andrew Geisslerd27bb132018-05-24 11:07:27 -070043 $scope.customSearch = '';
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070044 $scope.searchItems = [];
Andrew Geisslerd27bb132018-05-24 11:07:27 -070045 $scope.selectedEvents = [];
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070046
Andrew Geisslerd27bb132018-05-24 11:07:27 -070047 if (eventId) {
48 $scope.customSearch = '#' + eventId;
49 $scope.searchItems.push('#' + eventId);
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070050 }
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070051
Andrew Geisslerd27bb132018-05-24 11:07:27 -070052 $scope.loadLogs = function() {
53 $scope.loading = true;
54 APIUtils.getLogs().then(function(result) {
55 if (eventId && expandedSelectedIdOnce == false) {
56 var log = result.data.filter(function(item) {
57 return item.Id == eventId;
58 });
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070059
Andrew Geisslerd27bb132018-05-24 11:07:27 -070060 if (log.length) {
61 log[0].meta = true;
62 }
63 expandedSelectedIdOnce = true;
64 }
65 dataService.updateServerHealth(result.data);
66 $scope.logs = result.data;
67 $scope.originalData = result.original;
68 $scope.loading = false;
69 });
70 };
71 $scope.jsonData = function(data) {
72 return JSON.stringify(data);
73 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070074
Andrew Geisslerd27bb132018-05-24 11:07:27 -070075 $scope.filterBySeverity = function(log) {
76 if ($scope.selectedSeverity.all) return true;
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070077
Andrew Geisslerd27bb132018-05-24 11:07:27 -070078 return (
79 (log.severity_flags.low && $scope.selectedSeverity.low) ||
80 (log.severity_flags.medium && $scope.selectedSeverity.medium) ||
81 (log.severity_flags.high && $scope.selectedSeverity.high));
82 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070083
Andrew Geisslerd27bb132018-05-24 11:07:27 -070084 $scope.filterByStatus = function(log) {
85 if ($scope.selectedStatus.all) return true;
86 return (
87 (log.Resolved && $scope.selectedStatus.resolved) ||
88 (!log.Resolved && !$scope.selectedStatus.resolved));
89 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070090
Andrew Geisslerd27bb132018-05-24 11:07:27 -070091 $scope.filterByDate = function(log) {
92 var endDate;
93 if ($scope.end_date &&
94 typeof $scope.end_date.getTime === 'function') {
95 endDate = new Date($scope.end_date.getTime());
96 endDate.setTime(endDate.getTime() + 86399000);
97 }
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070098
Andrew Geisslerd27bb132018-05-24 11:07:27 -070099 if ($scope.start_date && endDate) {
100 var date = new Date($filter('date')(
101 log.Timestamp, 'MM/dd/yyyy HH:mm:ss', $scope.tmz));
102 return (date >= $scope.start_date && date <= endDate);
103 } else {
104 return true;
105 }
106 };
107
108 $scope.filterBySearchTerms = function(log) {
109 if (!$scope.searchItems.length) return true;
110
111 for (var i = 0, length = $scope.searchItems.length; i < length;
112 i++) {
113 if (log.search_text.indexOf(
114 $scope.searchItems[i].toLowerCase()) == -1)
115 return false;
116 }
117 return true;
118 };
119
120 $scope.addSearchItem = function(searchTerms) {
121 var terms = searchTerms.split(' ');
122 terms.forEach(function(searchTerm) {
123 if ($scope.searchItems.indexOf(searchTerm) == -1) {
124 $scope.searchItems.push(searchTerm);
125 }
126 });
127 };
128
129 $scope.clearSearchItem = function(searchTerm) {
130 $scope.searchItems = [];
131 };
132
133 $scope.removeSearchItem = function(searchTerm) {
134 var termIndex = $scope.searchItems.indexOf(searchTerm);
135
136 if (termIndex > -1) {
137 $scope.searchItems.splice(termIndex, 1);
138 }
139 };
140
141 $scope.$watch('all', function() {
142 $scope.logs.forEach(function(item) {
143 item.selected = $scope.all;
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700144 });
145 });
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700146
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700147 function updateExportData() {
148 $scope.export_name = ($scope.selectedEvents.length == 1) ?
149 $scope.selectedEvents[0].Id + '.json' :
150 'export.json';
151 var data = {};
152 $scope.selectedEvents.forEach(function(item) {
153 data[item.data.key] = item.data.value;
154 });
155 $scope.export_data = JSON.stringify(data);
156 }
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700157
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700158 $scope.accept = function() {
159 APIUtils.deleteLogs($scope.selectedEvents).then(function() {
160 $scope.confirm = false;
161 $scope.loadLogs();
162 });
163 };
164
165 $scope.resolve = function() {
166 var events = $scope.selectedEvents.filter(function(item) {
167 return item.Resolved != 1;
168 });
169
170 if (!events.length) return;
171
172 APIUtils.resolveLogs(events).then(function() {
173 events.forEach(function(item) {
174 item.Resolved = 1;
175 });
176 });
177 };
178
179 $scope.$watch('logs', function() {
180 $scope.selectedEvents = $scope.logs.filter(function(item) {
181 return item.selected;
182 });
183 updateExportData();
184 }, true);
185
186 $scope.loadLogs();
187 }
188 ]);
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500189
190})(angular);