blob: ad54dd234c19a149f5a3993d238acb15a5638527 [file] [log] [blame]
/**
* Controller for log
*
* @module app/serverHealth
* @exports sysLogController
* @name sysLogController
*/
window.angular && (function(angular) {
'use strict';
angular.module('app.serverHealth')
.config([
'paginationTemplateProvider',
function(paginationTemplateProvider) {
paginationTemplateProvider.setString(
require('../../common/directives/dirPagination.tpl.html'));
}
])
.controller('sysLogController', [
'$scope', 'APIUtils', 'Constants',
function($scope, APIUtils, Constants) {
$scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
$scope.loading = true;
$scope.sysLogs = [];
$scope.customSearch = '';
$scope.searchTerms = [];
$scope.sortKey = 'Id';
$scope.showLogDropdown = false;
$scope.recordTypeList =
['SEL', 'Event', 'Oem']; // From Redfish specification.
$scope.selectedRecordType = 'SEL'; // Default Select to SEL.
$scope.typeFilter = false;
$scope.selectedSeverityList = [];
$scope.severityList = ['All', 'Critical', 'Warning', 'Ok'];
$scope.filterTypes = [];
$scope.selectedType = 'All';
$scope.selectRecordType = function(recordType) {
$scope.selectedRecordType = recordType;
$scope.showLogDropdown = false;
$scope.filterTypes = [];
APIUtils.getSystemLogs(recordType)
.then(
function(res) {
$scope.sysLogs = res;
$scope.filterTypes.push('All');
$scope.sysLogs.forEach(function(log) {
if ($scope.filterTypes.indexOf(log.SensorType) < 0) {
$scope.filterTypes.push(log.SensorType);
}
});
},
function(error) {
console.log(JSON.stringify(error));
})
.finally(function() {
$scope.loading = false;
});
};
$scope.clearSystemLogEntries = function(selectedRecordType) {
$scope.confirm = false;
APIUtils.clearSystemLogs(selectedRecordType)
.then(
function(res) {
console.log(JSON.stringify(res));
},
function(error) {
console.log(JSON.stringify(error));
})
.finally(function() {
$scope.selectRecordType($scope.selectedRecordType);
});
};
$scope.sortBy = function(keyname, isReverse) {
$scope.sortKey = keyname;
$scope.reverse = isReverse;
};
$scope.clear = function() {
$scope.customSearch = '';
$scope.searchTerms = [];
};
$scope.doSearchOnEnter = function(event) {
var search =
$scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
if (event.keyCode === 13 && search.length >= 2) {
$scope.searchTerms = $scope.customSearch.split(' ');
} else {
if (search.length == 0) {
$scope.searchTerms = [];
}
}
};
$scope.doSearchOnClick = function() {
var search =
$scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
if (search.length >= 2) {
$scope.searchTerms = $scope.customSearch.split(' ');
} else {
if (search.length == 0) {
$scope.searchTerms = [];
}
}
};
$scope.filterBySearchTerms = function(log) {
if (!$scope.searchTerms.length) {
return true;
}
for (var i = 0, length = $scope.searchTerms.length; i < length;
i++) {
// TODO: Form it while getting data
var search_text = log.Id + ' ' + log.Name.toLowerCase() + ' ' +
log.Message.toLowerCase();
if (search_text.indexOf($scope.searchTerms[i].toLowerCase()) ==
-1)
return false;
}
return true;
};
$scope.filterBySeverity = function(log) {
if ($scope.selectedSeverityList.length == 0) {
return true;
}
return ($scope.selectedSeverityList.indexOf(log.Severity) > -1);
};
$scope.filterByType = function(log) {
if ($scope.selectedType == 'All') {
return true;
}
return (($scope.selectedType == log.SensorType));
};
$scope.filterByDate = function(log) {
var logDate = new Date(log.Created);
if ($scope.start_date && $scope.end_date) {
return (
logDate >= $scope.start_date && logDate <= $scope.end_date);
} else {
return true;
}
};
setTimeout($scope.selectRecordType($scope.selectedRecordType), 2000);
}
]);
})(angular);