xref: /openbmc/phosphor-webui/app/server-health/controllers/log-controller.js (revision 96bbf31065b3d7a27816c9344002803619d9e3fc)
18b4828a6SIftekharul Islam/**
28b4828a6SIftekharul Islam * Controller for log
38b4828a6SIftekharul Islam *
48b4828a6SIftekharul Islam * @module app/serverHealth
58b4828a6SIftekharul Islam * @exports logController
68b4828a6SIftekharul Islam * @name logController
78b4828a6SIftekharul Islam * @version 0.1.0
88b4828a6SIftekharul Islam */
98b4828a6SIftekharul Islam
108b4828a6SIftekharul Islamwindow.angular && (function (angular) {
118b4828a6SIftekharul Islam    'use strict';
128b4828a6SIftekharul Islam    angular
138b4828a6SIftekharul Islam        .module('app.serverHealth')
148b4828a6SIftekharul Islam        .controller('logController', [
158b4828a6SIftekharul Islam            '$scope',
168b4828a6SIftekharul Islam            '$window',
178b4828a6SIftekharul Islam            'APIUtils',
188b4828a6SIftekharul Islam            'dataService',
198b4828a6SIftekharul Islam            'Constants',
20428375e8SMichael Davis            '$routeParams',
21428375e8SMichael Davis            function($scope, $window, APIUtils, dataService, Constants, $routeParams){
228b4828a6SIftekharul Islam                $scope.dataService = dataService;
238b4828a6SIftekharul Islam                $scope.logs = [];
248b4828a6SIftekharul Islam                $scope.tmz = 'EDT';
258b4828a6SIftekharul Islam                $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
26428375e8SMichael Davis                $scope.loading = false;
27*96bbf310SIftekharul Islam                var expandedSelectedIdOnce = false;
28428375e8SMichael Davis
29428375e8SMichael Davis                var sensorType = $routeParams.type;
30*96bbf310SIftekharul Islam                var eventId = $routeParams.id;
31428375e8SMichael Davis
328b4828a6SIftekharul Islam                // priority buttons
338b4828a6SIftekharul Islam                $scope.selectedSeverity = {
348b4828a6SIftekharul Islam                    all: true,
358b4828a6SIftekharul Islam                    low: false,
368b4828a6SIftekharul Islam                    medium: false,
378b4828a6SIftekharul Islam                    high: false
388b4828a6SIftekharul Islam                };
39428375e8SMichael Davis
40428375e8SMichael Davis                if(sensorType == 'high'){
41428375e8SMichael Davis                    $scope.selectedSeverity.all = false;
42428375e8SMichael Davis                    $scope.selectedSeverity.high = true;
43428375e8SMichael Davis                }
44428375e8SMichael Davis
458b4828a6SIftekharul Islam                $scope.selectedStatus = {
468b4828a6SIftekharul Islam                    all: true,
478b4828a6SIftekharul Islam                    resolved: false
488b4828a6SIftekharul Islam                };
498b4828a6SIftekharul Islam
508b4828a6SIftekharul Islam                $scope.customSearch = "";
518b4828a6SIftekharul Islam                $scope.searchItems = [];
528b4828a6SIftekharul Islam                $scope.selectedEvents = [];
538b4828a6SIftekharul Islam
54*96bbf310SIftekharul Islam
55*96bbf310SIftekharul Islam                if(eventId){
56*96bbf310SIftekharul Islam                    $scope.customSearch = "#"+eventId;
57*96bbf310SIftekharul Islam                    $scope.searchItems.push("#"+eventId);
58*96bbf310SIftekharul Islam                }
59*96bbf310SIftekharul Islam
608b4828a6SIftekharul Islam                $scope.loadLogs = function(){
61428375e8SMichael Davis                    $scope.loading = true;
62428375e8SMichael Davis                    APIUtils.getLogs().then(function(result){
63*96bbf310SIftekharul Islam                        if(eventId && expandedSelectedIdOnce == false){
64*96bbf310SIftekharul Islam                            var log = result.data.filter(function(item){
65*96bbf310SIftekharul Islam                                return item.Id == eventId;
66*96bbf310SIftekharul Islam                            });
67*96bbf310SIftekharul Islam
68*96bbf310SIftekharul Islam                            if(log.length){
69*96bbf310SIftekharul Islam                                log[0].meta = true;
70*96bbf310SIftekharul Islam                            }
71*96bbf310SIftekharul Islam                            expandedSelectedIdOnce = true;
72*96bbf310SIftekharul Islam                        }
73428375e8SMichael Davis                        $scope.logs = result.data;
74428375e8SMichael Davis                        $scope.originalData = result.original;
75428375e8SMichael Davis                        $scope.loading = false;
768b4828a6SIftekharul Islam                    });
778b4828a6SIftekharul Islam                };
788b4828a6SIftekharul Islam                $scope.jsonData = function(data){
798b4828a6SIftekharul Islam                    return JSON.stringify(data);
808b4828a6SIftekharul Islam                };
818b4828a6SIftekharul Islam
828b4828a6SIftekharul Islam                $scope.filterBySeverity = function(log){
838b4828a6SIftekharul Islam                    if($scope.selectedSeverity.all) return true;
848b4828a6SIftekharul Islam
858b4828a6SIftekharul Islam                    return( (log.severity_flags.low && $scope.selectedSeverity.low) ||
868b4828a6SIftekharul Islam                            (log.severity_flags.medium && $scope.selectedSeverity.medium) ||
878b4828a6SIftekharul Islam                            (log.severity_flags.high && $scope.selectedSeverity.high)
888b4828a6SIftekharul Islam                    );
898b4828a6SIftekharul Islam                }
908b4828a6SIftekharul Islam
918b4828a6SIftekharul Islam
928b4828a6SIftekharul Islam                $scope.filterByStatus = function(log){
938b4828a6SIftekharul Islam                    if ($scope.selectedStatus.all) return true;
948b4828a6SIftekharul Islam                    return( (log.Resolved && $scope.selectedStatus.resolved)||
958b4828a6SIftekharul Islam                            (!log.Resolved && !$scope.selectedStatus.resolved)
968b4828a6SIftekharul Islam                    );
978b4828a6SIftekharul Islam                }
988b4828a6SIftekharul Islam
998b4828a6SIftekharul Islam                $scope.filterByDate = function(log){
1008b4828a6SIftekharul Islam                    if($scope.start_date && $scope.end_date){
1018b4828a6SIftekharul Islam                        var date = new Date(log.Timestamp);
1028b4828a6SIftekharul Islam                        return (date >= $scope.start_date &&
1038b4828a6SIftekharul Islam                               date <= $scope.end_date );
1048b4828a6SIftekharul Islam                    }else{
1058b4828a6SIftekharul Islam                        return true;
1068b4828a6SIftekharul Islam                    }
1078b4828a6SIftekharul Islam                }
1088b4828a6SIftekharul Islam
1098b4828a6SIftekharul Islam                $scope.filterBySearchTerms = function(log){
1108b4828a6SIftekharul Islam                    if(!$scope.searchItems.length) return true;
1118b4828a6SIftekharul Islam
1128b4828a6SIftekharul Islam                    for(var i = 0, length = $scope.searchItems.length; i < length; i++){
1138b4828a6SIftekharul Islam                        if(log.search_text.indexOf($scope.searchItems[i].toLowerCase()) == -1) return false;
1148b4828a6SIftekharul Islam                    }
1158b4828a6SIftekharul Islam                    return true;
1168b4828a6SIftekharul Islam                }
1178b4828a6SIftekharul Islam
1188b4828a6SIftekharul Islam                $scope.addSearchItem = function(searchTerms){
1198b4828a6SIftekharul Islam                    var terms = searchTerms.split(" ");
1208b4828a6SIftekharul Islam                    terms.forEach(function(searchTerm){
1218b4828a6SIftekharul Islam                        if($scope.searchItems.indexOf(searchTerm) == -1){
1228b4828a6SIftekharul Islam                            $scope.searchItems.push(searchTerm);
1238b4828a6SIftekharul Islam                        }
1248b4828a6SIftekharul Islam                    });
1258b4828a6SIftekharul Islam                }
1268b4828a6SIftekharul Islam
1278b4828a6SIftekharul Islam                $scope.clearSearchItem = function(searchTerm){
1288b4828a6SIftekharul Islam                    $scope.searchItems = [];
1298b4828a6SIftekharul Islam                }
1308b4828a6SIftekharul Islam
1318b4828a6SIftekharul Islam                $scope.removeSearchItem = function(searchTerm){
1328b4828a6SIftekharul Islam                    var termIndex = $scope.searchItems.indexOf(searchTerm);
1338b4828a6SIftekharul Islam
1348b4828a6SIftekharul Islam                    if(termIndex > -1){
1358b4828a6SIftekharul Islam                        $scope.searchItems.splice(termIndex,1);
1368b4828a6SIftekharul Islam                    }
1378b4828a6SIftekharul Islam                }
1388b4828a6SIftekharul Islam
1398b4828a6SIftekharul Islam                $scope.$watch('all', function(){
1408b4828a6SIftekharul Islam                    $scope.logs.forEach(function(item){
1418b4828a6SIftekharul Islam                        item.selected = $scope.all;
1428b4828a6SIftekharul Islam                    });
1438b4828a6SIftekharul Islam                });
1448b4828a6SIftekharul Islam
1458b4828a6SIftekharul Islam                function updateExportData(){
1468b4828a6SIftekharul Islam                    $scope.export_name = ($scope.selectedEvents.length == 1) ? $scope.selectedEvents[0].Id + ".json" : "export.json";
1478b4828a6SIftekharul Islam                    var data = {};
1488b4828a6SIftekharul Islam                    $scope.selectedEvents.forEach(function(item){
1498b4828a6SIftekharul Islam                        data[item.data.key] = item.data.value;
1508b4828a6SIftekharul Islam                    });
1518b4828a6SIftekharul Islam                    $scope.export_data = JSON.stringify(data);
1528b4828a6SIftekharul Islam                }
1538b4828a6SIftekharul Islam
154f2d74644SIftekharul Islam
155f2d74644SIftekharul Islam                $scope.accept = function(){
156f2d74644SIftekharul Islam                    APIUtils.deleteLogs($scope.selectedEvents).then(function(){
157f2d74644SIftekharul Islam                        $scope.confirm = false;
158f2d74644SIftekharul Islam                        $scope.loadLogs();
159f2d74644SIftekharul Islam                    });
160f2d74644SIftekharul Islam                }
161f2d74644SIftekharul Islam
162f2d74644SIftekharul Islam                $scope.resolve = function(){
163f2d74644SIftekharul Islam                    var events = $scope.selectedEvents.filter(function(item){
164f2d74644SIftekharul Islam                        return item.Resolved != 1;
165f2d74644SIftekharul Islam                    });
166f2d74644SIftekharul Islam
167f2d74644SIftekharul Islam                    if(!events.length) return;
168f2d74644SIftekharul Islam
169f2d74644SIftekharul Islam                    APIUtils.resolveLogs(events).then(function(){
170f2d74644SIftekharul Islam                        events.forEach(function(item){
171f2d74644SIftekharul Islam                            item.Resolved = 1;
172f2d74644SIftekharul Islam                        });
173f2d74644SIftekharul Islam                    });
174f2d74644SIftekharul Islam                }
175f2d74644SIftekharul Islam
1768b4828a6SIftekharul Islam                $scope.$watch('logs', function(){
1778b4828a6SIftekharul Islam                    $scope.selectedEvents = $scope.logs.filter(function(item){
1788b4828a6SIftekharul Islam                        return item.selected;
1798b4828a6SIftekharul Islam                    });
1808b4828a6SIftekharul Islam                    updateExportData();
1818b4828a6SIftekharul Islam                }, true);
1828b4828a6SIftekharul Islam
1838b4828a6SIftekharul Islam                $scope.loadLogs();
1848b4828a6SIftekharul Islam            }
1858b4828a6SIftekharul Islam        ]
1868b4828a6SIftekharul Islam    );
1878b4828a6SIftekharul Islam
1888b4828a6SIftekharul Islam})(angular);
189