blob: cec1d9978b8aa5401b8341b217a7e5a05ac3544f [file] [log] [blame]
AppaRao Pulib1289ec2018-11-14 20:33:30 +05301/**
2 * Controller for log
3 *
4 * @module app/serverHealth
5 * @exports sysLogController
6 * @name sysLogController
7 */
8
9window.angular && (function(angular) {
10 'use strict';
11 angular.module('app.serverHealth')
12 .config([
13 'paginationTemplateProvider',
14 function(paginationTemplateProvider) {
15 paginationTemplateProvider.setString(
16 require('../../common/directives/dirPagination.tpl.html'));
17 }
18 ])
19 .controller('sysLogController', [
20 '$scope', 'APIUtils', 'Constants',
21 function($scope, APIUtils, Constants) {
22 $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
23 $scope.loading = true;
24 $scope.sysLogs = [];
25 $scope.customSearch = '';
26 $scope.searchTerms = [];
27 $scope.sortKey = 'Id';
28 $scope.showLogDropdown = false;
29 $scope.recordTypeList =
30 ['SEL', 'Event', 'Oem']; // From Redfish specification.
31 $scope.selectedRecordType = 'SEL'; // Default Select to SEL.
32
33 $scope.selectRecordType = function(recordType) {
34 $scope.selectedRecordType = recordType;
35 $scope.showLogDropdown = false;
36 APIUtils.getSystemLogs(recordType)
37 .then(
38 function(res) {
39 $scope.sysLogs = res;
40 $scope.filterTypes.push('All');
41 $scope.sysLogs.forEach(function(log) {
42 if ($scope.filterTypes.indexOf(log.SensorType) < 0) {
43 $scope.filterTypes.push(log.SensorType);
44 }
45 });
46 },
47 function(error) {
48 console.log(JSON.stringify(error));
49 })
50 .finally(function() {
51 $scope.loading = false;
52 });
53 };
54
55 $scope.clearSystemLogEntries = function() {
56 $scope.confirm = false;
57 APIUtils.clearSystemLogs()
58 .then(
59 function(res) {
60 console.log(JSON.stringify(res));
61 },
62 function(error) {
63 console.log(JSON.stringify(error));
64 })
65 .finally(function() {
66 $scope.selectRecordType($scope.selectedRecordType);
67 });
68 };
69
70 $scope.sortBy = function(keyname, isReverse) {
71 $scope.sortKey = keyname;
72 $scope.reverse = isReverse;
73 };
74
75 $scope.clear = function() {
76 $scope.customSearch = '';
77 $scope.searchTerms = [];
78 };
79
80 $scope.doSearchOnEnter = function(event) {
81 var search =
82 $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
83 if (event.keyCode === 13 && search.length >= 2) {
84 $scope.searchTerms = $scope.customSearch.split(' ');
85 } else {
86 if (search.length == 0) {
87 $scope.searchTerms = [];
88 }
89 }
90 };
91
92 $scope.doSearchOnClick = function() {
93 var search =
94 $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
95 if (search.length >= 2) {
96 $scope.searchTerms = $scope.customSearch.split(' ');
97 } else {
98 if (search.length == 0) {
99 $scope.searchTerms = [];
100 }
101 }
102 };
103
104 $scope.filterBySearchTerms = function(log) {
105 if (!$scope.searchTerms.length) return true;
106
107 for (var i = 0, length = $scope.searchTerms.length; i < length;
108 i++) {
109 // TODO: Form it while getting data
110 var search_text = log.Id + ' ' + log.Name.toLowerCase() + ' ' +
111 log.Message.toLowerCase();
112 if (search_text.indexOf($scope.searchTerms[i].toLowerCase()) ==
113 -1)
114 return false;
115 }
116 return true;
117 };
118
119 setTimeout($scope.selectRecordType($scope.selectedRecordType), 2000);
120 }
121 ]);
122})(angular);