blob: 9dab22ab556dfca783ddf6b21e2e73851c037ccf [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
7 * @version 0.1.0
8 */
9
10window.angular && (function (angular) {
11 'use strict';
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050012 angular
13 .module('app.serverHealth')
14 .controller('logController', [
15 '$scope',
16 '$window',
17 'APIUtils',
18 'dataService',
19 'Constants',
Michael Davis428375e2017-08-01 15:48:34 -050020 '$routeParams',
Iftekharul Islam857e78b2017-09-11 11:09:31 -050021 '$filter',
22 function($scope, $window, APIUtils, dataService, Constants, $routeParams, $filter){
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050023 $scope.dataService = dataService;
24 $scope.logs = [];
25 $scope.tmz = 'EDT';
26 $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
Michael Davis428375e2017-08-01 15:48:34 -050027 $scope.loading = false;
Iftekharul Islam96bbf312017-08-22 13:44:38 -050028 var expandedSelectedIdOnce = false;
Michael Davis428375e2017-08-01 15:48:34 -050029
30 var sensorType = $routeParams.type;
Iftekharul Islam96bbf312017-08-22 13:44:38 -050031 var eventId = $routeParams.id;
Michael Davis428375e2017-08-01 15:48:34 -050032
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050033 // priority buttons
34 $scope.selectedSeverity = {
35 all: true,
36 low: false,
37 medium: false,
38 high: false
39 };
Michael Davis428375e2017-08-01 15:48:34 -050040
41 if(sensorType == 'high'){
42 $scope.selectedSeverity.all = false;
43 $scope.selectedSeverity.high = true;
44 }
45
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050046 $scope.selectedStatus = {
47 all: true,
48 resolved: false
49 };
50
51 $scope.customSearch = "";
52 $scope.searchItems = [];
53 $scope.selectedEvents = [];
54
Iftekharul Islam96bbf312017-08-22 13:44:38 -050055
56 if(eventId){
57 $scope.customSearch = "#"+eventId;
58 $scope.searchItems.push("#"+eventId);
59 }
60
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050061 $scope.loadLogs = function(){
Michael Davis428375e2017-08-01 15:48:34 -050062 $scope.loading = true;
63 APIUtils.getLogs().then(function(result){
Iftekharul Islam96bbf312017-08-22 13:44:38 -050064 if(eventId && expandedSelectedIdOnce == false){
65 var log = result.data.filter(function(item){
66 return item.Id == eventId;
67 });
68
69 if(log.length){
70 log[0].meta = true;
71 }
72 expandedSelectedIdOnce = true;
73 }
Iftekharul Islamc22425f2017-09-06 10:04:14 -050074 dataService.updateServerHealth(result.data);
Michael Davis428375e2017-08-01 15:48:34 -050075 $scope.logs = result.data;
76 $scope.originalData = result.original;
77 $scope.loading = false;
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050078 });
79 };
80 $scope.jsonData = function(data){
81 return JSON.stringify(data);
82 };
83
84 $scope.filterBySeverity = function(log){
85 if($scope.selectedSeverity.all) return true;
86
87 return( (log.severity_flags.low && $scope.selectedSeverity.low) ||
88 (log.severity_flags.medium && $scope.selectedSeverity.medium) ||
89 (log.severity_flags.high && $scope.selectedSeverity.high)
90 );
91 }
92
Iftekharul Islam8b4828a2017-04-19 14:37:55 -050093 $scope.filterByStatus = function(log){
94 if ($scope.selectedStatus.all) return true;
95 return( (log.Resolved && $scope.selectedStatus.resolved)||
96 (!log.Resolved && !$scope.selectedStatus.resolved)
97 );
98 }
99
100 $scope.filterByDate = function(log){
Iftekharul Islam857e78b2017-09-11 11:09:31 -0500101 var endDate;
102 if($scope.end_date && typeof $scope.end_date.getTime === 'function'){
103 endDate = new Date($scope.end_date.getTime());
104 endDate.setTime(endDate.getTime() + 86399000);
105 }
106
107 if($scope.start_date && endDate){
108 var date = new Date($filter('date')(log.Timestamp, 'MM/dd/yyyy HH:mm:ss', $scope.tmz));
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500109 return (date >= $scope.start_date &&
Iftekharul Islam857e78b2017-09-11 11:09:31 -0500110 date <= endDate );
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500111 }else{
112 return true;
113 }
114 }
115
116 $scope.filterBySearchTerms = function(log){
117 if(!$scope.searchItems.length) return true;
118
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500119 for(var i = 0, length = $scope.searchItems.length; i < length; i++){
120 if(log.search_text.indexOf($scope.searchItems[i].toLowerCase()) == -1) return false;
121 }
122 return true;
123 }
124
125 $scope.addSearchItem = function(searchTerms){
126 var terms = searchTerms.split(" ");
127 terms.forEach(function(searchTerm){
128 if($scope.searchItems.indexOf(searchTerm) == -1){
129 $scope.searchItems.push(searchTerm);
130 }
131 });
132 }
133
134 $scope.clearSearchItem = function(searchTerm){
135 $scope.searchItems = [];
136 }
137
138 $scope.removeSearchItem = function(searchTerm){
139 var termIndex = $scope.searchItems.indexOf(searchTerm);
140
141 if(termIndex > -1){
142 $scope.searchItems.splice(termIndex,1);
143 }
144 }
145
146 $scope.$watch('all', function(){
147 $scope.logs.forEach(function(item){
148 item.selected = $scope.all;
149 });
150 });
151
152 function updateExportData(){
153 $scope.export_name = ($scope.selectedEvents.length == 1) ? $scope.selectedEvents[0].Id + ".json" : "export.json";
154 var data = {};
155 $scope.selectedEvents.forEach(function(item){
156 data[item.data.key] = item.data.value;
157 });
158 $scope.export_data = JSON.stringify(data);
159 }
160
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500161
162 $scope.accept = function(){
163 APIUtils.deleteLogs($scope.selectedEvents).then(function(){
164 $scope.confirm = false;
165 $scope.loadLogs();
166 });
167 }
168
169 $scope.resolve = function(){
170 var events = $scope.selectedEvents.filter(function(item){
171 return item.Resolved != 1;
172 });
173
174 if(!events.length) return;
175
176 APIUtils.resolveLogs(events).then(function(){
177 events.forEach(function(item){
178 item.Resolved = 1;
179 });
180 });
181 }
182
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500183 $scope.$watch('logs', function(){
184 $scope.selectedEvents = $scope.logs.filter(function(item){
185 return item.selected;
186 });
187 updateExportData();
188 }, true);
189
190 $scope.loadLogs();
191 }
192 ]
193 );
194
195})(angular);