xref: /openbmc/phosphor-webui/app/server-health/controllers/log-controller.js (revision 8b4828a6553a4a9f839fd40cb5dd357cdc435767)
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