Updated master after merge conflicts

Change-Id: Ibea933c20071cc85201420ba1e31fedf9356f55b
Signed-off-by: Iftekharul Islam <iffy.ryan@ibm.com>
diff --git a/app/assets/images/crit-x.svg b/app/assets/images/crit-x.svg
index 1d71c09..abc76fa 100644
--- a/app/assets/images/crit-x.svg
+++ b/app/assets/images/crit-x.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 27.7 28" style="enable-background:new 0 0 27.7 28;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-check.svg b/app/assets/images/icon-check.svg
index e984f55..d7bedf4 100644
--- a/app/assets/images/icon-check.svg
+++ b/app/assets/images/icon-check.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
 <polygon points="14,2.2 12.2,0.5 4.7,8 1.8,5.1 0,6.9 4.7,11.5 "/>
diff --git a/app/assets/images/icon-copy-white.svg b/app/assets/images/icon-copy-white.svg
index 62333bb..bce0b23 100644
--- a/app/assets/images/icon-copy-white.svg
+++ b/app/assets/images/icon-copy-white.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-copy.svg b/app/assets/images/icon-copy.svg
index 335eacd..7766490 100644
--- a/app/assets/images/icon-copy.svg
+++ b/app/assets/images/icon-copy.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-critical.svg b/app/assets/images/icon-critical.svg
index 93a0ac1..5b0b28c 100644
--- a/app/assets/images/icon-critical.svg
+++ b/app/assets/images/icon-critical.svg
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-power.svg b/app/assets/images/icon-power.svg
index 9c0c73f..8844297 100644
--- a/app/assets/images/icon-power.svg
+++ b/app/assets/images/icon-power.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
 	 x="0px" y="0px" viewBox="0 0 75 75" xml:space="preserve">
 <path fill="#3C6DF0" d="M17,14.6L17,14.6c1.2-1,1.3-2.7,0.3-3.9c-1-1.1-2.7-1.3-3.9-0.2C1.8,20.6-2.3,36.8,3.1,51.2
diff --git a/app/assets/images/icon-search.svg b/app/assets/images/icon-search.svg
index 55f30a7..d37929f 100644
--- a/app/assets/images/icon-search.svg
+++ b/app/assets/images/icon-search.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-trashcan-white.svg b/app/assets/images/icon-trashcan-white.svg
index 585df57..afc7a20 100644
--- a/app/assets/images/icon-trashcan-white.svg
+++ b/app/assets/images/icon-trashcan-white.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-trashcan.svg b/app/assets/images/icon-trashcan.svg
index 62f0539..16fdc25 100644
--- a/app/assets/images/icon-trashcan.svg
+++ b/app/assets/images/icon-trashcan.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-warning.svg b/app/assets/images/icon-warning.svg
index dd9b3dd..b25ae52 100644
--- a/app/assets/images/icon-warning.svg
+++ b/app/assets/images/icon-warning.svg
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/warn-slash.svg b/app/assets/images/warn-slash.svg
index b56d976..87a9f93 100644
--- a/app/assets/images/warn-slash.svg
+++ b/app/assets/images/warn-slash.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 27.7 28" style="enable-background:new 0 0 27.7 28;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/common/directives/log-event.html b/app/common/directives/log-event.html
index 08efcf1..be7b5a0 100644
--- a/app/common/directives/log-event.html
+++ b/app/common/directives/log-event.html
@@ -15,7 +15,7 @@
              <label class="control-check">
                  <input type="checkbox" name="events__check" ng-click="event.selected= ! event.selected"
                         ng-checked="event.selected"/>
-                 <span class="control__indicator accessible-text">select log event</span>
+                 <span class="control__indicator"></span>
              </label>
          </div>
          <div class="column small-9 large-10 event-log__event-info"
@@ -29,8 +29,8 @@
                  <p class="inline event__description">{{event.Severity}}</p>
              </div>
          <div class="column small-1 large-1">
-             <span class="button accord-trigger" ng-class="{'active': event.meta}"
-                     ng-click="event.meta = ! event.meta"></span>
+             <button class="accord-trigger" ng-class="{'active': event.meta}"
+                     ng-click="event.meta = ! event.meta"></button>
          </div>
         </div>
      <div class="row event__metadata-row" ng-class="{'active': event.meta}">
@@ -43,12 +43,17 @@
                      <button class="btn-meta-copy" clipboard text="event.additional_data" on-copied="copySuccess(event)" on-error="copyfailed(err)">
                         <img class="event__icon" src="assets/images/icon-copy.svg" alt=""/><span ng-if="!event.copied">Copy</span><span ng-if="event.copied">Copied</span>
                      </button>
-                     <button class="btn-delete" ng-click="event.confirm= ! event.confirm"><img
+                     <button
+                             class="btn-delete"
+                             ng-class="{'disabled': multiSelected}"
+                             ng-click="event.confirm= ! event.confirm"
+                             ng-disabled="multiSelected">
+                             <img
                              class="event__icon"
                              src="assets/images/icon-trashcan.svg"
                              alt=""/>Delete
                      </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-check.svg" alt=""/>Resolved</button>
+                     <button class="btn-resolve" ng-class="{'disabled': (event.Resolved == 1 || multiSelected)}" ng-click="resolveEvent(event)" ng-disabled="event.Resolved == 1 || multiSelected"><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>
@@ -57,4 +62,4 @@
              </div>
          </div>
      </div>
-</div>
+</div>
\ No newline at end of file
diff --git a/app/common/directives/log-event.js b/app/common/directives/log-event.js
index ae4970d..51bb5dd 100644
--- a/app/common/directives/log-event.js
+++ b/app/common/directives/log-event.js
@@ -9,7 +9,8 @@
                 'templateUrl': 'common/directives/log-event.html',
                 'scope': {
                    'event': '=',
-                   'tmz': '='
+                   'tmz': '=',
+                   'multiSelected': '='
                 },
                 'controller': ['$rootScope', '$scope','dataService', '$location', '$timeout', function($rootScope, $scope, dataService, $location, $timeout){
                     $scope.dataService = dataService;
diff --git a/app/common/directives/log-filter.js b/app/common/directives/log-filter.js
index c9ac1d0..81abc7d 100644
--- a/app/common/directives/log-filter.js
+++ b/app/common/directives/log-filter.js
@@ -25,7 +25,11 @@
                         $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
 
                         if(['high', 'medium', 'low'].indexOf(severity) > -1){
-                            if($scope.selectedSeverity[severity] == false){
+                            if($scope.selectedSeverity[severity] == false &&
+                               (!$scope.selectedSeverity.low &&
+                                !$scope.selectedSeverity.medium &&
+                                !$scope.selectedSeverity.high
+                               )){
                                 $scope.selectedSeverity.all = true;
                                 return;
                             }
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 408e42f..bec96b1 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -425,6 +425,18 @@
                       var tempKeyParts = [];
                       var order = 0;
 
+                      function getScaledValue(value, scale){
+                        scale = scale + "";
+                        var power = parseInt(scale.replace(/[\s\t\+\-]/g,''),10);
+
+                        if(scale.indexOf("+") > -1){
+                          value = value * Math.pow(10, power);
+                        }else if(scale.indexOf("-") > -1){
+                          value = value / Math.pow(10, power);
+                        }
+                        return value;
+                      }
+
                       function getSensorStatus(reading){
                         var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
 
@@ -483,6 +495,8 @@
                             return prev + " " + el;
                           });
 
+                          content.data[key].Value = getScaledValue(content.data[key].Value, content.data[key].Scale);
+
                           sensorData.push(Object.assign({
                             path: key,
                             selected: false,
diff --git a/app/common/styles/base/mixins.scss b/app/common/styles/base/mixins.scss
index 79b0f34..6067a0e 100644
--- a/app/common/styles/base/mixins.scss
+++ b/app/common/styles/base/mixins.scss
@@ -36,7 +36,7 @@
 }
 
 @mixin fontCourierBold {
-  font-family: "Courier New", Helvetica, monospace, arial, sans-serif;
+  font-family: "Courier New", Helvetica, arial, sans-serif;
   font-weight: 700;
 }
 
diff --git a/app/common/styles/base/typography.scss b/app/common/styles/base/typography.scss
index 64f5e3c..8dc33c0 100644
--- a/app/common/styles/base/typography.scss
+++ b/app/common/styles/base/typography.scss
@@ -54,4 +54,4 @@
   font-family: "Courier New", Helvetica, arial, sans-serif;
   font-weight: 700;
   margin-bottom: 0;
-}
+}
\ No newline at end of file
diff --git a/app/common/styles/elements/index.scss b/app/common/styles/elements/index.scss
index c9e29d9..677a4ba 100644
--- a/app/common/styles/elements/index.scss
+++ b/app/common/styles/elements/index.scss
@@ -1,15 +1,13 @@
-
 @import "toggle-switch";
 @import "toggle-filter";
 @import "status";
-@import "tags";
 @import "alerts";
 @import "inline-confirm";
 @import "accordion";
 @import "loader";
 @import "content-search";
 @import "paginate";
-@import "thresholds";
+@import "tags";
 @import "export";
 @import "modals";
-@import "quicklinks";
+@import "quicklinks";
\ No newline at end of file
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 787a0dd..07fce0b 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -86,7 +86,7 @@
 				<!-- <p class="disabled">No high priority events</p> -->
 
 				<!-- single event -->
-				<a href="#/server-health/event-log/high" ng-repeat="event in logs|orderBy:'+Id'">
+				<a href="#/server-health/event-log/high/{{event.Id}}" ng-repeat="event in logs|orderBy:'+Id'">
 					<div class="row column event-log__single-event">
 						<div class="row">
 							<div class="column small-1 large-1 event-log__col-check">
diff --git a/app/server-health/controllers/log-controller.html b/app/server-health/controllers/log-controller.html
index 3db7bd9..81f5f3c 100644
--- a/app/server-health/controllers/log-controller.html
+++ b/app/server-health/controllers/log-controller.html
@@ -66,7 +66,9 @@
         <log-event 
         dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'+Id'))| itemsPerPage: itemsPerPage" 
         event="event" 
-        tmz="tmz">
+        tmz="tmz"
+        multi-selected="selectedEvents.length > 1"
+        >
         </log-event>
     </section>
     <dir-pagination-controls template-url="common/directives/dirPagination.tpl.html"></dir-pagination-controls> 
diff --git a/app/server-health/controllers/log-controller.js b/app/server-health/controllers/log-controller.js
index b53dae0..c6b4d8f 100644
--- a/app/server-health/controllers/log-controller.js
+++ b/app/server-health/controllers/log-controller.js
@@ -24,8 +24,10 @@
                 $scope.tmz = 'EDT';
                 $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
                 $scope.loading = false;
+                var expandedSelectedIdOnce = false;
 
                 var sensorType = $routeParams.type;
+                var eventId = $routeParams.id;
 
                 // priority buttons
                 $scope.selectedSeverity = {
@@ -49,9 +51,25 @@
                 $scope.searchItems = [];
                 $scope.selectedEvents = [];
 
+
+                if(eventId){
+                    $scope.customSearch = "#"+eventId;
+                    $scope.searchItems.push("#"+eventId);
+                }
+
                 $scope.loadLogs = function(){
                     $scope.loading = true;
                     APIUtils.getLogs().then(function(result){
+                        if(eventId && expandedSelectedIdOnce == false){
+                            var log = result.data.filter(function(item){
+                                return item.Id == eventId;
+                            });
+
+                            if(log.length){
+                                log[0].meta = true;
+                            }
+                            expandedSelectedIdOnce = true;
+                        }
                         $scope.logs = result.data;
                         $scope.originalData = result.original;
                         $scope.loading = false;
diff --git a/app/server-health/controllers/sensors-overview-controller.js b/app/server-health/controllers/sensors-overview-controller.js
index 57e3b65..6d33604 100644
--- a/app/server-health/controllers/sensors-overview-controller.js
+++ b/app/server-health/controllers/sensors-overview-controller.js
@@ -76,7 +76,6 @@
                     }
 
                     if($scope.selectedSeverity.all){
-                        $scope.selectedSeverity.normal = false;
                         $scope.selectedSeverity.warning = false;
                         $scope.selectedSeverity.critical = false;
                     }
@@ -85,11 +84,19 @@
                 $scope.toggleSeverity = function(severity){
                     $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
 
-                    if($scope.selectedSeverity.normal && 
-                       $scope.selectedSeverity.warning && 
+                   if(['warning', 'critical'].indexOf(severity) > -1){
+                       if($scope.selectedSeverity[severity] == false &&
+                          (!$scope.selectedSeverity.warning &&
+                           !$scope.selectedSeverity.critical
+                          )){
+                           $scope.selectedSeverity.all = true;
+                           return;
+                       }
+                   }
+
+                    if($scope.selectedSeverity.warning && 
                        $scope.selectedSeverity.critical){
                         $scope.selectedSeverity.all = true;
-                        $scope.selectedSeverity.normal = false;
                         $scope.selectedSeverity.warning = false;
                         $scope.selectedSeverity.critical = false;
                     }else{
diff --git a/app/server-health/controllers/unit-id-controller.js b/app/server-health/controllers/unit-id-controller.js
index 5494c61..42f855d 100644
--- a/app/server-health/controllers/unit-id-controller.js
+++ b/app/server-health/controllers/unit-id-controller.js
@@ -17,18 +17,21 @@
             '$window', 
             'APIUtils', 
             'dataService',
-            function($scope, $window, APIUtils, dataService, userModel){
+            function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
 
-                $scope.getLEDState = function(){
-                    APIUtils.getLEDState(function(state){
-                        if(state == APIUtils.LED_STATE.on){
-                            dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
-                        }else{
-                            dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
-                        }
-                    });
+                APIUtils.getLEDState().then(function(state){
+                    $scope.displayLEDState(state);
+                });
+
+                $scope.displayLEDState = function(state){
+                    if(state == APIUtils.LED_STATE.on){
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
+                    }else{
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
+                    }
                 }
+
                 $scope.toggleLED = function(){
                     var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
                         APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
@@ -37,8 +40,6 @@
                     APIUtils.setLEDState(toggleState, function(status){
                     });
                 }
-
-                $scope.getLEDState();
             }
         ]
     );
diff --git a/app/server-health/index.js b/app/server-health/index.js
index 3c32065..1d4ff9f 100644
--- a/app/server-health/index.js
+++ b/app/server-health/index.js
@@ -28,6 +28,11 @@
                     'controller': 'logController',
                     authenticated: true
                 })
+                .when('/server-health/event-log/:type/:id', {
+                    'templateUrl': 'server-health/controllers/log-controller.html',
+                    'controller': 'logController',
+                    authenticated: true
+                })
                 .when('/server-health/inventory-overview', {
                     'templateUrl': 'server-health/controllers/inventory-overview-controller.html',
                     'controller': 'inventoryOverviewController',