Added delete and mark as resolved in event log page

Change-Id: Ia1f8e630cecef38bc546bdcde867685a99dd936b
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/common/directives/log-event.html b/app/common/directives/log-event.html
index 6b8f972..18aa8b3 100644
--- a/app/common/directives/log-event.html
+++ b/app/common/directives/log-event.html
@@ -7,7 +7,7 @@
                      event</strong>?</p>
              </div>
              <div class="inline__confirm-buttons">
-                 <button class="btn-primary" ng-click="accept()">Yes</button>
+                 <button class="btn-primary" ng-click="accept(event)">Yes</button>
                  <button class="btn-primary" ng-click="event.confirm=false;">No</button>
              </div>
          </div>
@@ -48,7 +48,7 @@
                              src="assets/images/icon-trashcan.svg"
                              alt=""/>Delete
                      </button>
-                     <button class="btn-resolve"><img class="event__icon" src="assets/images/icon-checklist.svg" alt=""/>Resolved</button>
+                     <button class="btn-resolve" ng-class="{'disabled': (event.Resolved == 1)}" ng-click="resolveEvent(event)" ng-disabled="event.Resolved == 1"><img class="event__icon" src="assets/images/icon-checklist.svg" alt=""/>Resolved</button>
                  </div>
                  <div class="event__related" ng-show="event.related_items.length">
                      <p class="inline event__related-label">Related items:</p>
diff --git a/app/common/directives/log-event.js b/app/common/directives/log-event.js
index 387ce3b..ae4970d 100644
--- a/app/common/directives/log-event.js
+++ b/app/common/directives/log-event.js
@@ -22,6 +22,18 @@
                     $scope.copyFailed = function (err) {
                         console.error('Error!', err);
                     };
+                    $scope.resolveEvent = function(event){
+                        APIUtils.resolveLogs([{Id: event.Id}]).then(function(){
+                            event.Resolved = 1;
+                        });
+                    }
+
+                    $scope.accept = function(){
+                        $scope.event.selected = true;
+                        $timeout(function(){
+                            $scope.$parent.accept();
+                        }, 10);
+                    }
                 }]
             };
         }]);
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index b044328..3b8b7e0 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -11,7 +11,7 @@
     'use strict';
     angular
         .module('app.common.services')
-        .factory('APIUtils', ['$http', 'Constants', function($http, Constants){
+        .factory('APIUtils', ['$http', 'Constants', '$q', function($http, Constants, $q){
           var SERVICE = {
               LOGIN_CREDENTIALS: Constants.LOGIN_CREDENTIALS,
               API_CREDENTIALS: Constants.API_CREDENTIALS,
@@ -599,7 +599,7 @@
               getBMCEthernetInfo: function(callback){
                 $http({
                   method: 'GET',
-                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory",
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/ethernet",
                   headers: {
                       'Accept': 'application/json',
                       'Content-Type': 'application/json'
@@ -620,7 +620,7 @@
               getBMCInfo: function(callback){
                 $http({
                   method: 'GET',
-                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory",
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc",
                   headers: {
                       'Accept': 'application/json',
                       'Content-Type': 'application/json'
@@ -641,7 +641,7 @@
               getHardwares: function(callback){
                 $http({
                   method: 'GET',
-                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system",
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/enumerate",
                   headers: {
                       'Accept': 'application/json',
                       'Content-Type': 'application/json'
@@ -742,6 +742,56 @@
                     }
                 });
               },
+              deleteLogs: function(logs) {
+                  var defer = $q.defer();
+                  var promises = [];
+
+                  function finished(){
+                      defer.resolve();
+                  }
+
+                  logs.forEach(function(item){
+                    promises.push($http({
+                                      method: 'POST',
+                                      url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/entry/"+item.Id+"/action/Delete",
+                                      headers: {
+                                          'Accept': 'application/json',
+                                          'Content-Type': 'application/json'
+                                      },
+                                      withCredentials: true,
+                                      data: JSON.stringify({"data": []})
+                                 }));
+                  });
+
+                  $q.all(promises).then(finished);
+
+                  return defer.promise;
+              },
+              resolveLogs: function(logs) {
+                  var defer = $q.defer();
+                  var promises = [];
+
+                  function finished(){
+                      defer.resolve();
+                  }
+
+                  logs.forEach(function(item){
+                    promises.push($http({
+                                      method: 'PUT',
+                                      url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/entry/"+item.Id+"/attr/Resolved",
+                                      headers: {
+                                          'Accept': 'application/json',
+                                          'Content-Type': 'application/json'
+                                      },
+                                      withCredentials: true,
+                                      data: JSON.stringify({"data": "1"})
+                                 }));
+                  });
+
+                  $q.all(promises).then(finished);
+
+                  return defer.promise;
+              },
           };
           return SERVICE;
         }]);
diff --git a/app/common/services/constants.js b/app/common/services/constants.js
index 1445081..7d77ec0 100644
--- a/app/common/services/constants.js
+++ b/app/common/services/constants.js
@@ -20,7 +20,7 @@
                     password: "testpass",
                 },
                 API_CREDENTIALS: {
-                    host: 'https://9.3.164.177',
+                    host: 'https://9.3.181.15',
                     mock_host: 'http://localhost:3000'
                 },
                 API_RESPONSE: {
@@ -59,7 +59,7 @@
                     Warning: 'Medium'
                 },
                 PAGINATION: {
-                    LOG_ITEMS_PER_PAGE: 4
+                    LOG_ITEMS_PER_PAGE: 25
                 },
                 HARDWARE: {
                   component_key_filter: '/xyz/openbmc_project/inventory/system',
diff --git a/app/server-health/controllers/log-controller.html b/app/server-health/controllers/log-controller.html
index f30fdae..59edc72 100644
--- a/app/server-health/controllers/log-controller.html
+++ b/app/server-health/controllers/log-controller.html
@@ -47,13 +47,14 @@
                         <button class="btn-primary" ng-click="confirm = false">No</button>
                     </div>
                 </div>
-                <p class="inline"><span class="event__select-count">{{filteredLogs.length}}</span> Events are logged</p>
+                <p class="inline" ng-show="selectedEvents.length"><span class="event__select-count">{{selectedEvents.length}}</span> Events are Selected</p>
+                <p class="inline" ng-hide="selectedEvents.length"><span class="event__select-count">{{filteredLogs.length}}</span> Events are Logged</p>
                 <!-- when logs are selected, this text changes to show how many logs are checked -->
                 <div class="event__actions">
                     <button class="inline btn-delete" ng-show="selectedEvents.length || all" ng-click="confirm= ! confirm">
                         <img class="event__icon" src="assets/images/icon-trashcan-white.svg" alt="">Delete
                     </button>
-                    <button class="inline btn-resolve" ng-show="selectedEvents.length || all">
+                    <button class="inline btn-resolve" ng-show="selectedEvents.length || all" ng-click="resolve()">
                         <img class="event__icon" src="assets/images/icon-checklist-white.svg" alt="">Mark as resolved
                     </button>
                     <a ng-href="data:text/json;charset=utf-8,{{export_data}}" class="inline btn-export"  download="{{export_name}}" ng-show="selectedEvents.length || all">Export</a>
diff --git a/app/server-health/controllers/log-controller.js b/app/server-health/controllers/log-controller.js
index eb4ea26..cf3f248 100644
--- a/app/server-health/controllers/log-controller.js
+++ b/app/server-health/controllers/log-controller.js
@@ -120,6 +120,28 @@
                     $scope.export_data = JSON.stringify(data);
                 }
 
+
+                $scope.accept = function(){
+                    APIUtils.deleteLogs($scope.selectedEvents).then(function(){
+                        $scope.confirm = false;
+                        $scope.loadLogs();
+                    });
+                }
+
+                $scope.resolve = function(){
+                    var events = $scope.selectedEvents.filter(function(item){
+                        return item.Resolved != 1;
+                    });
+
+                    if(!events.length) return;
+
+                    APIUtils.resolveLogs(events).then(function(){
+                        events.forEach(function(item){
+                            item.Resolved = 1;
+                        });
+                    });
+                }
+
                 $scope.$watch('logs', function(){
                     $scope.selectedEvents = $scope.logs.filter(function(item){
                         return item.selected;