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