1*8b4828a6SIftekharul Islam/** 2*8b4828a6SIftekharul Islam * Controller for log 3*8b4828a6SIftekharul Islam * 4*8b4828a6SIftekharul Islam * @module app/serverHealth 5*8b4828a6SIftekharul Islam * @exports logController 6*8b4828a6SIftekharul Islam * @name logController 7*8b4828a6SIftekharul Islam * @version 0.1.0 8*8b4828a6SIftekharul Islam */ 9*8b4828a6SIftekharul Islam 10*8b4828a6SIftekharul Islamwindow.angular && (function (angular) { 11*8b4828a6SIftekharul Islam 'use strict'; 12*8b4828a6SIftekharul Islam var logData = [], originalData = {}; 13*8b4828a6SIftekharul Islam angular 14*8b4828a6SIftekharul Islam .module('app.serverHealth') 15*8b4828a6SIftekharul Islam .controller('logController', [ 16*8b4828a6SIftekharul Islam '$scope', 17*8b4828a6SIftekharul Islam '$window', 18*8b4828a6SIftekharul Islam 'APIUtils', 19*8b4828a6SIftekharul Islam 'dataService', 20*8b4828a6SIftekharul Islam 'Constants', 21*8b4828a6SIftekharul Islam function($scope, $window, APIUtils, dataService, Constants){ 22*8b4828a6SIftekharul Islam $scope.dataService = dataService; 23*8b4828a6SIftekharul Islam $scope.logs = []; 24*8b4828a6SIftekharul Islam $scope.tmz = 'EDT'; 25*8b4828a6SIftekharul Islam $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE; 26*8b4828a6SIftekharul Islam // priority buttons 27*8b4828a6SIftekharul Islam $scope.selectedSeverity = { 28*8b4828a6SIftekharul Islam all: true, 29*8b4828a6SIftekharul Islam low: false, 30*8b4828a6SIftekharul Islam medium: false, 31*8b4828a6SIftekharul Islam high: false 32*8b4828a6SIftekharul Islam }; 33*8b4828a6SIftekharul Islam $scope.selectedStatus = { 34*8b4828a6SIftekharul Islam all: true, 35*8b4828a6SIftekharul Islam resolved: false 36*8b4828a6SIftekharul Islam }; 37*8b4828a6SIftekharul Islam 38*8b4828a6SIftekharul Islam $scope.customSearch = ""; 39*8b4828a6SIftekharul Islam $scope.searchItems = []; 40*8b4828a6SIftekharul Islam $scope.selectedEvents = []; 41*8b4828a6SIftekharul Islam 42*8b4828a6SIftekharul Islam $scope.loadLogs = function(){ 43*8b4828a6SIftekharul Islam APIUtils.getLogs(function(data, originalData){ 44*8b4828a6SIftekharul Islam logData = data; 45*8b4828a6SIftekharul Islam originalData = originalData; 46*8b4828a6SIftekharul Islam $scope.logs = data; 47*8b4828a6SIftekharul Islam $scope.originalData = originalData; 48*8b4828a6SIftekharul Islam }); 49*8b4828a6SIftekharul Islam }; 50*8b4828a6SIftekharul Islam $scope.jsonData = function(data){ 51*8b4828a6SIftekharul Islam return JSON.stringify(data); 52*8b4828a6SIftekharul Islam }; 53*8b4828a6SIftekharul Islam 54*8b4828a6SIftekharul Islam $scope.filterBySeverity = function(log){ 55*8b4828a6SIftekharul Islam if($scope.selectedSeverity.all) return true; 56*8b4828a6SIftekharul Islam 57*8b4828a6SIftekharul Islam return( (log.severity_flags.low && $scope.selectedSeverity.low) || 58*8b4828a6SIftekharul Islam (log.severity_flags.medium && $scope.selectedSeverity.medium) || 59*8b4828a6SIftekharul Islam (log.severity_flags.high && $scope.selectedSeverity.high) 60*8b4828a6SIftekharul Islam ); 61*8b4828a6SIftekharul Islam } 62*8b4828a6SIftekharul Islam 63*8b4828a6SIftekharul Islam 64*8b4828a6SIftekharul Islam $scope.filterByStatus = function(log){ 65*8b4828a6SIftekharul Islam if ($scope.selectedStatus.all) return true; 66*8b4828a6SIftekharul Islam return( (log.Resolved && $scope.selectedStatus.resolved)|| 67*8b4828a6SIftekharul Islam (!log.Resolved && !$scope.selectedStatus.resolved) 68*8b4828a6SIftekharul Islam ); 69*8b4828a6SIftekharul Islam } 70*8b4828a6SIftekharul Islam 71*8b4828a6SIftekharul Islam $scope.filterByDate = function(log){ 72*8b4828a6SIftekharul Islam if($scope.start_date && $scope.end_date){ 73*8b4828a6SIftekharul Islam var date = new Date(log.Timestamp); 74*8b4828a6SIftekharul Islam return (date >= $scope.start_date && 75*8b4828a6SIftekharul Islam date <= $scope.end_date ); 76*8b4828a6SIftekharul Islam }else{ 77*8b4828a6SIftekharul Islam return true; 78*8b4828a6SIftekharul Islam } 79*8b4828a6SIftekharul Islam } 80*8b4828a6SIftekharul Islam 81*8b4828a6SIftekharul Islam $scope.filterBySearchTerms = function(log){ 82*8b4828a6SIftekharul Islam if(!$scope.searchItems.length) return true; 83*8b4828a6SIftekharul Islam 84*8b4828a6SIftekharul Islam var flag = false; 85*8b4828a6SIftekharul Islam for(var i = 0, length = $scope.searchItems.length; i < length; i++){ 86*8b4828a6SIftekharul Islam if(log.search_text.indexOf($scope.searchItems[i].toLowerCase()) == -1) return false; 87*8b4828a6SIftekharul Islam } 88*8b4828a6SIftekharul Islam return true; 89*8b4828a6SIftekharul Islam } 90*8b4828a6SIftekharul Islam 91*8b4828a6SIftekharul Islam $scope.addSearchItem = function(searchTerms){ 92*8b4828a6SIftekharul Islam var terms = searchTerms.split(" "); 93*8b4828a6SIftekharul Islam terms.forEach(function(searchTerm){ 94*8b4828a6SIftekharul Islam if($scope.searchItems.indexOf(searchTerm) == -1){ 95*8b4828a6SIftekharul Islam $scope.searchItems.push(searchTerm); 96*8b4828a6SIftekharul Islam } 97*8b4828a6SIftekharul Islam }); 98*8b4828a6SIftekharul Islam } 99*8b4828a6SIftekharul Islam 100*8b4828a6SIftekharul Islam $scope.clearSearchItem = function(searchTerm){ 101*8b4828a6SIftekharul Islam $scope.searchItems = []; 102*8b4828a6SIftekharul Islam } 103*8b4828a6SIftekharul Islam 104*8b4828a6SIftekharul Islam $scope.removeSearchItem = function(searchTerm){ 105*8b4828a6SIftekharul Islam var termIndex = $scope.searchItems.indexOf(searchTerm); 106*8b4828a6SIftekharul Islam 107*8b4828a6SIftekharul Islam if(termIndex > -1){ 108*8b4828a6SIftekharul Islam $scope.searchItems.splice(termIndex,1); 109*8b4828a6SIftekharul Islam } 110*8b4828a6SIftekharul Islam } 111*8b4828a6SIftekharul Islam 112*8b4828a6SIftekharul Islam $scope.$watch('all', function(){ 113*8b4828a6SIftekharul Islam $scope.logs.forEach(function(item){ 114*8b4828a6SIftekharul Islam item.selected = $scope.all; 115*8b4828a6SIftekharul Islam }); 116*8b4828a6SIftekharul Islam }); 117*8b4828a6SIftekharul Islam 118*8b4828a6SIftekharul Islam function updateExportData(){ 119*8b4828a6SIftekharul Islam $scope.export_name = ($scope.selectedEvents.length == 1) ? $scope.selectedEvents[0].Id + ".json" : "export.json"; 120*8b4828a6SIftekharul Islam var data = {}; 121*8b4828a6SIftekharul Islam $scope.selectedEvents.forEach(function(item){ 122*8b4828a6SIftekharul Islam data[item.data.key] = item.data.value; 123*8b4828a6SIftekharul Islam }); 124*8b4828a6SIftekharul Islam $scope.export_data = JSON.stringify(data); 125*8b4828a6SIftekharul Islam } 126*8b4828a6SIftekharul Islam 127*8b4828a6SIftekharul Islam $scope.$watch('logs', function(){ 128*8b4828a6SIftekharul Islam $scope.selectedEvents = $scope.logs.filter(function(item){ 129*8b4828a6SIftekharul Islam return item.selected; 130*8b4828a6SIftekharul Islam }); 131*8b4828a6SIftekharul Islam updateExportData(); 132*8b4828a6SIftekharul Islam }, true); 133*8b4828a6SIftekharul Islam 134*8b4828a6SIftekharul Islam $scope.loadLogs(); 135*8b4828a6SIftekharul Islam } 136*8b4828a6SIftekharul Islam ] 137*8b4828a6SIftekharul Islam ); 138*8b4828a6SIftekharul Islam 139*8b4828a6SIftekharul Islam})(angular); 140