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