Change navigation structure

Change-Id: I12c819293ce1eda188dc9f257ae9370f1b73cb18
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/common/directives/app-header.html b/app/common/directives/app-header.html
index 5b2de3d..e9e3f2c 100644
--- a/app/common/directives/app-header.html
+++ b/app/common/directives/app-header.html
@@ -1,17 +1,16 @@
 <div id="header__wrapper">
 <!-- HEADER -->
 <!-- Class of status-light__good has 3 states: status-light__good, status-light__error, status-light__disabled -->
-<!-- Server Power buttton links to 'server power operations' page; Server Status may link to event log page. TBD.-->
 <header id="header">
     <span class="app__version float-left">{{dataService.app_version}}</span>
     <a href="" class="header__logout" ng-click="logout()">Log out</a>
 </header>
 <div class="header__functions-wrapper" role="heading">
     <div class="logo__wrapper"><img src="assets/images/logo.svg" id="header__logo"  alt="company logo"/></div>
-    <button id="header__server-name">{{dataService.server_id}}</button>
+    <button id="header__server-name">Server {{dataService.server_id}}</button>
     <div class="header__functions">
-        <a href="" id="header__server-health">Server health<span class="status-light__error">{{dataService.server_health}}</span></a>
-        <a href="#/overview/power-operations" class="header__server-power" role="button">Server power<span ng-class="{'status-light__error': dataService.server_state == 'Off', 'status-light__disabled': dataService.server_state == 'Unreachable', 'status-light__good': dataService.server_state == 'Running', 'status-light__warn': dataService.server_state == 'Quiesced'}">{{dataService.server_state}}</span></a>
+        <a href="#/server-health/event-log" id="header__server-health">Server health<span class="status-light__error">{{dataService.server_health}}</span></a>
+        <a href="#/server-control/power-operations" class="header__server-power" role="button">Server power<span ng-class="{'status-light__error': dataService.server_state == 'Off', 'status-light__disabled': dataService.server_state == 'Unreachable', 'status-light__good': dataService.server_state == 'Running', 'status-light__warn': dataService.server_state == 'Quiesced'}">{{dataService.server_state}}</span></a>
         <p class="header__refresh">Page last refreshed <span>{{dataService.last_updated |date:'h:mm:ss MMM dd yyyy'}}</span></p>
         <button class="header__page-refresh" ng-click="refresh()"><img src="assets/images/icon-refresh-white.svg" alt="refresh page" role="button"/></button>
     </div>
diff --git a/app/common/directives/app-navigation.html b/app/common/directives/app-navigation.html
index 6a0fb14..ce7e5c6 100644
--- a/app/common/directives/app-navigation.html
+++ b/app/common/directives/app-navigation.html
@@ -1,65 +1,64 @@
 <nav>
     <ul id="nav__top-level" ng-style="navStyle">
         <li>
-            <button class="btn-overview" ng-class="{opened: firstLevel == 'overview'}" ng-click="firstLevel = 'overview';" tabindex="1">
+            <button class="btn-overview" ng-class="{opened: firstLevel == 'overview'}" ng-click="change('overview')" tabindex="1">
 
 
-                <span class="">Server overview</span></button>
+                <span class="">Server Overview</span></button>
         </li>
         <li>
-            <button class="btn-health" ng-class="{opened: firstLevel == 'health'}" ng-click="firstLevel = 'health';" tabindex="9">
+            <button class="btn-health" ng-class="{opened: firstLevel == 'server-health'}" ng-click="change('server-health')" tabindex="9">
 
-                <span>Server health</span></button>
+                <span>Server Health</span></button>
         </li>
         <li>
-            <button class="btn-control" ng-class="{opened: firstLevel == 'control'}" ng-click="firstLevel = 'control';">
+            <button class="btn-control" ng-class="{opened: firstLevel == 'server-control'}" ng-click="change('server-control')">
 
-                <span>Server control</span></button>
+                <span>Server Control</span></button>
         </li>
         <li>
-            <button class="btn-config" ng-class="{opened: firstLevel == 'config'}" ng-click="firstLevel = 'config';">
+            <button class="btn-config" ng-class="{opened: firstLevel == 'configuration'}" ng-click="change('configuration')">
 
                 <span>Configuration</span></button>
         </li>
         <li>
-            <button class="btn-firmware" ng-class="{opened: firstLevel == 'firmware'}" ng-click="firstLevel = 'firmware';">
+            <button class="btn-firmware" ng-class="{opened: firstLevel == 'firmware'}" ng-click="change('firmware')">
 
                 <span>Firmware</span></button>
         </li>
         <li>
-            <button class="btn-users" ng-class="{opened: firstLevel == 'users'}" ng-click="firstLevel = 'users';">
+            <button class="btn-users" ng-class="{opened: firstLevel == 'users'}" ng-click="change('users')">
 
                 <span>Users</span></button>
         </li>
     </ul>
     <ul class="nav__second-level btn-overview" ng-style="navStyle" ng-class="{opened: firstLevel == 'overview'}">
-        <li ng-class="{'active': (path == '/overview/system')}" tabindex="2"><a href="#/system-overview">System overview</a></li>
-
+        <li ng-class="{'active': (path == '/overview' || path == '/overview/system')}" tabindex="2"><a href="#/overview/system">System Overview</a></li>
     </ul>
-    <ul class="nav__second-level btn-health" ng-style="navStyle"  ng-class="{opened: firstLevel == 'health'}">
-        <li ng-class="{'active': (path == '/overview/log')}"><a href="#/overview/log" tabindex="7">Event log</a></li>
-        <li ng-class="{'active': (path == '/overview/inventory-overview')}"><a href="#/overview/inventory-overview">Hardware Inventory</a></li>
-        <li ng-class="{'active': (path == '/overview/sensors-overview') || (path == '/overview/sensors')}"><a href="#/overview/sensors-overview">Sensor data</a></li>
-        <li ng-class="{'active': (path == '/overview/power-consumption')}"><a href="" tabindex="4">Power consumption</a></li>
-        <li ng-class="{'active': (path == '/overview/unit-id')}"><a href="#/overview/unit-id" tabindex="6">Unit id</a></li>
-        <li><a href="">Diagnostics</a></li>
+    <ul class="nav__second-level btn-health" ng-style="navStyle"  ng-class="{opened: firstLevel == 'server-health'}">
+        <li ng-class="{'active': (path == '/server-health' || path == '/server-health/event-log')}"><a href="#/server-health/event-log" tabindex="7">Event Log</a></li>
+        <li ng-class="{'active': (path == '/server-health/inventory-overview' || path == '/server-health/inventory')}"><a href="#/server-health/inventory-overview">Hardware Inventory</a></li>
+        <li ng-class="{'active': (path == '/server-health/sensors-overview' || path == '/server-health/sensors')}"><a href="#/server-health/sensors-overview">Sensor Data</a></li>
+        <li ng-class="{'active': (path == '/server-health/power-consumption')}"><a href="#/server-health/power-consumption" tabindex="4">Power consumption</a></li>
+        <li ng-class="{'active': (path == '/server-health/unit-id')}"><a href="#/server-health/unit-id" tabindex="6">Unit ID</a></li>
+        <li ng-class="{'active': (path == '/server-health/diagnostics')}"><a href="#/server-health/diagnostics">Diagnostics</a></li>
     </ul>
-    <ul class="nav__second-level btn-control" ng-style="navStyle"  ng-class="{opened: firstLevel == 'control'}">
-        <li ng-class="{'active': (path == '/overview/power-operations')}" tabindex="3"><a href="#/overview/power-operations">Server power operations</a></li>
-        <li ng-class="{'active': (path == '/overview/bmc-reboot')}"><a href="#/overview/bmc-reboot" tabindex="8">Reboot BMC</a></li>
-        <li ng-class="{'active': (path == '/overview/remote-console')}"><a href="" tabindex="5">Remote console</a></li>
+    <ul class="nav__second-level btn-control" ng-style="navStyle"  ng-class="{opened: firstLevel == 'server-control'}">
+        <li ng-class="{'active': (path == '/server-control' || path == '/server-control/power-operations')}" tabindex="3"><a href="#/server-control/power-operations">Server power operations</a></li>
+        <li ng-class="{'active': (path == '/server-control/bmc-reboot')}"><a href="#/server-control/bmc-reboot" tabindex="8">Reboot BMC</a></li>
+        <li ng-class="{'active': (path == '/server-control/remote-console')}"><a href="#/server-control/remote-console" tabindex="5">Remote console</a></li>
     </ul>
-    <ul class="nav__second-level btn-firmware" ng-style="navStyle"  ng-class="{opened: firstLevel == 'config'}">
-        <li><a href="">Network Configuration</a></li>
-        <li><a href="">Date & Time</a></li>
-        <li><a href="">Security</a></li>
-        <li><a href="">Configuration File</a></li>
+    <ul class="nav__second-level btn-firmware" ng-style="navStyle"  ng-class="{opened: firstLevel == 'configuration'}">
+        <li ng-class="{'active': (path == '/configuration' || path == '/configuration/network')}"><a href="#/configuration/network">Network Configuration</a></li>
+        <li ng-class="{'active': (path == '/configuration/date-time')}"><a href="#/configuration/date-time">Date & Time</a></li>
+        <li ng-class="{'active': (path == '/configuration/security')}"><a href="#/configuration/security">Security</a></li>
+        <li ng-class="{'active': (path == '/configuration/file')}"><a href="#/configuration/file">Configuration File</a></li>
     </ul>
     <ul class="nav__second-level btn-firmware" ng-style="navStyle"  ng-class="{opened: firstLevel == 'firmware'}">
-        <li><a href="">BMC Firmawre</a></li>
-        <li><a href="">Server Firmware</a></li>
+        <li ng-class="{'active': (path == '/firmware' || path == '/firmware/bmc')}"><a href="#/firmware/bmc">BMC Firmawre</a></li>
+        <li ng-class="{'active': (path == '/firmware/server')}"><a href="#/firmware/server">Server Firmware</a></li>
     </ul>
     <ul class="nav__second-level btn-users" ng-style="navStyle"  ng-class="{opened: firstLevel == 'users'}">
-        <li><a href="">Manage User Account</a></li>
+        <li ng-class="{'active': (path == '/users' || path == '/users/manage-accounts')}"><a href="#/users/manage-accounts">Manage User Account</a></li>
     </ul>
 </nav>
diff --git a/app/common/directives/app-navigation.js b/app/common/directives/app-navigation.js
index d09588a..6939a3c 100644
--- a/app/common/directives/app-navigation.js
+++ b/app/common/directives/app-navigation.js
@@ -11,11 +11,20 @@
                     'path': '=',
                     'showNavigation': '='
                 },
-                'controller': ['$scope', 'dataService', function($scope, dataService){
+                'controller': ['$scope', '$location', 'dataService', function($scope, $location, dataService){
+                    $scope.change = function(firstLevel){
+                        $scope.firstLevel = firstLevel;
+                        $location.path('/'+firstLevel);
+                    }
                     $scope.$watch('showNavigation', function(){
                         var paddingTop = 0;
-                        $scope.firstLevel = 'overview';
-                        $scope.secondLevel = 'system_overview';
+                        var urlRoot = $location.path().split("/")[1];
+                        if(urlRoot != ""){
+                            $scope.firstLevel = urlRoot;
+                        }else{
+                            $scope.firstLevel = 'overview';
+                        }
+
                         if($scope.showNavigation){
                             paddingTop = document.getElementById('header__wrapper').offsetHeight;
                         }
diff --git a/app/common/directives/dirPagination.tpl.html b/app/common/directives/dirPagination.tpl.html
new file mode 100644
index 0000000..d3c0e41
--- /dev/null
+++ b/app/common/directives/dirPagination.tpl.html
@@ -0,0 +1,18 @@
+<ul class="pagination" ng-if="1 < pages.length || !autoHide">
+    <li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }">
+        <a href="" ng-click="setCurrent(1)">First</a>
+    </li>
+    <li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }">
+        <a href="" ng-click="setCurrent(pagination.current - 1)">Previous</a>
+    </li>
+    <li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == '...' }">
+        <a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a>
+    </li>
+
+    <li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }">
+        <a href="" ng-click="setCurrent(pagination.current + 1)">Next</a>
+    </li>
+    <li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }">
+        <a href="" ng-click="setCurrent(pagination.last)">Last</a>
+    </li>
+</ul>
\ No newline at end of file
diff --git a/app/common/directives/toggle-flag.js b/app/common/directives/toggle-flag.js
new file mode 100644
index 0000000..aca09ca
--- /dev/null
+++ b/app/common/directives/toggle-flag.js
@@ -0,0 +1,31 @@
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.common.directives')
+        .directive('toggleFlag', function ($document) {
+            return {
+                restrict: 'A',
+                link: function (scope, element, attrs) {
+        
+                    function elementClick(e) {
+                        e.stopPropagation();
+                    }
+        
+                    function documentClick(e) {
+                        scope[attrs.toggleFlag] = false;
+                        scope.$apply();
+                    }
+        
+                    element.on('click', elementClick);
+                    $document.on('click', documentClick);
+        
+                    // remove event handlers when directive is destroyed
+                    scope.$on('$destroy', function () {
+                        element.off('click', elementClick);
+                        $document.off('click', documentClick);
+                    });
+                }
+            };
+        });
+})(window.angular);
\ No newline at end of file
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 65ae86b..0a96f62 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -19,6 +19,8 @@
               CHASSIS_POWER_STATE: Constants.CHASSIS_POWER_STATE,
               HOST_STATE_TEXT: Constants.HOST_STATE,
               HOST_STATE: Constants.HOST_STATE,
+              LED_STATE: Constants.LED_STATE,
+              LED_STATE_TEXT: Constants.LED_STATE_TEXT,
               getChassisState: function(callback){
                 $http({
                   method: 'GET',
@@ -53,6 +55,23 @@
                   console.log(error);
                 });
               },
+              getLEDState: function(callback){
+                $http({
+                  method: 'GET',
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/led/groups/enclosure_identify",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).success(function(response){
+                      var json = JSON.stringify(response);
+                      var content = JSON.parse(json);
+                      callback(content.data.Asserted);
+                }).error(function(error){
+                  console.log(error);
+                });
+              },
               login: function(username, password, callback){
                 $http({
                   method: 'POST',
@@ -69,7 +88,11 @@
                   }
                 }).error(function(error){
                   if(callback){
-                      callback(null, true);
+                      if(error && error.status && error.status == 'error'){
+                        callback(error);
+                      }else{
+                        callback(error, true);
+                      }
                   }
                   console.log(error);
                 });
@@ -143,6 +166,30 @@
                   }
                 });
               },
+              setLEDState: function(state, callback){
+                $http({
+                  method: 'PUT',
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/led/groups/enclosure_identify/attr/Asserted",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true,
+                  data: JSON.stringify({"data": state})
+                }).success(function(response){
+                      var json = JSON.stringify(response);
+                      var content = JSON.parse(json);
+                      if(callback){
+                          return callback(content.status);
+                      }
+                }).error(function(error){
+                  if(callback){
+                      callback(error);
+                  }else{
+                      console.log(error);
+                  }
+                });
+              },
               bmcReboot: function(callback){
                 $http({
                   method: 'PUT',
@@ -262,6 +309,57 @@
                       console.log(error);
                   }
                 });
+              },
+              getLogs: function(callback){
+                $http({
+                  method: 'GET',
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/enumerate",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).success(function(response){
+                      var json = JSON.stringify(response);
+                      var content = JSON.parse(json);
+                      var dataClone = JSON.parse(JSON.stringify(content.data));
+                      var data = [];
+                      var severityCode = '';
+                      var priority = '';
+                      var resolved = false;
+                      var relatedItems = [];
+
+                      for(var key in content.data){
+                        if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Id')){
+                          var severityFlags = {low: false, medium: false, high: false};
+                          severityCode = content.data[key].Severity.split(".").pop();
+                          priority = Constants.SEVERITY_TO_PRIORITY_MAP[severityCode];
+                          severityFlags[priority.toLowerCase()] = true;
+                          relatedItems = [];
+                          content.data[key].associations.forEach(function(item){
+                            relatedItems.push(item[2]); //@TODO: better way to find the third item?
+                          });
+
+                          data.push(Object.assign({
+                            path: key,
+                            copied: false,
+                            priority: priority,
+                            severity_code: severityCode,
+                            severity_flags: severityFlags,
+                            additional_data: content.data[key].AdditionalData.join("\n"),
+                            selected: false,
+                            search_text: (severityCode + " " + content.data[key].Severity + " " + content.data[key].AdditionalData.join(" ")).toLowerCase(),
+                            meta: false,
+                            confirm: false,
+                            related_items: relatedItems,
+                            data: {key: key, value: content.data[key]}
+                          }, content.data[key]));
+                        }
+                      }
+                      callback(data, dataClone);
+                }).error(function(error){
+                  console.log(error);
+                });
               }
           };
           return SERVICE;
diff --git a/app/common/services/apiInterceptor.js b/app/common/services/apiInterceptor.js
index 0c75caa..bd4743a 100644
--- a/app/common/services/apiInterceptor.js
+++ b/app/common/services/apiInterceptor.js
@@ -16,16 +16,23 @@
         .service('apiInterceptor', ['$q', '$rootScope', 'dataService', function($q, $rootScope, dataService){
             return {
                 'request': function(config){
-                    dataService.server_unreachable = false;
                     dataService.loading = true;
+                    config.timeout = 10000;
                     return config;
                 },
                 'response': function(response){
                     dataService.loading = false;
-                    dataService.last_updated = new Date();
 
+                    //not interested in template requests
+                    if(!/^https?\:/i.test(response.config.url)){
+                        return response;
+                    }
+
+                    dataService.last_updated = new Date();
                     if(response == null){
                         dataService.server_unreachable = true;
+                    }else{
+                        dataService.server_unreachable = false;
                     }
 
                     if(response && response.status == 'error' &&
diff --git a/app/common/services/constants.js b/app/common/services/constants.js
index b98d5d6..86ba54e 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.147'
+                    host: 'https://9.41.165.233/'
                 },
                 API_RESPONSE: {
                     ERROR_STATUS: 'error',
@@ -43,8 +43,24 @@
                     off: -1,
                     booting: 0,
                     unreachable: -2
+                },
+                LED_STATE: {
+                    on: true,
+                    off: false
+                },
+                LED_STATE_TEXT: {
+                    on: 'on',
+                    off: 'off'
+                },
+                SEVERITY_TO_PRIORITY_MAP:{
+                    Informational: 'Low',
+                    Error: 'High',
+                    Warning: 'Medium'
+                },
+                PAGINATION: {
+                    LOG_ITEMS_PER_PAGE: 4
                 }
             };
         });
 
-})(window.angular);
\ No newline at end of file
+})(window.angular);
diff --git a/app/common/services/dataService.js b/app/common/services/dataService.js
index 704df75..2affcc4 100644
--- a/app/common/services/dataService.js
+++ b/app/common/services/dataService.js
@@ -19,7 +19,8 @@
             this.server_state = 'Unreachable';
             this.server_status = -2;
             this.chassis_state = 'On';
-            this.server_id = "Server 9.3.164.147";
+            this.LED_state = Constants.LED_STATE_TEXT.off;
+            this.server_id = Constants.API_CREDENTIALS.host.replace(/[^\d]+/m,"");
             this.last_updated = new Date();
 
             this.loading = false;
diff --git a/app/common/services/userModel.js b/app/common/services/userModel.js
index dba607d..747b288 100644
--- a/app/common/services/userModel.js
+++ b/app/common/services/userModel.js
@@ -41,6 +41,8 @@
                            response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS){
                             sessionStorage.removeItem('LOGIN_ID');
                             callback(true);
+                        }else if(response.status == APIUtils.API_RESPONSE.ERROR_STATUS){
+                            callback(false);
                         }else{
                             callback(false, error);
                         }
diff --git a/app/common/styles/base/core.scss b/app/common/styles/base/core.scss
index 18f78aa..13ba9e6 100644
--- a/app/common/styles/base/core.scss
+++ b/app/common/styles/base/core.scss
@@ -17,7 +17,6 @@
   }
   &:hover {
     color: $links__hover;
-    text-decoration: underline;
   }
   :focus {
     color: $links;
diff --git a/app/common/styles/base/mixins.scss b/app/common/styles/base/mixins.scss
index 3313a88..acc8fd4 100644
--- a/app/common/styles/base/mixins.scss
+++ b/app/common/styles/base/mixins.scss
@@ -57,18 +57,18 @@
   background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: #b8c1c1'></polygon></svg>");
 }
 
-//Offset allows to subtract a custom padding/margin offset
+
 @mixin calcColumn-4 ($offset: 0) {
   min-width: calc(100% * (1/4) - #{$offset});
 }
 
 
-@mixin calcColumn-3 ($offset: 0){
-  min-width: calc(100% * (1/3) - #{$offset});
+@mixin calcColumn-3 {
+  min-width: calc(100% * (1/3) - 5px);
 }
 
-@mixin calcSplitColumn ($offset: 0) {
-  min-width: calc(100% * (1/2) - #{$offset});
+@mixin calcSplitColumn {
+  min-width: calc(100% * (1/2) - 5px);
 }
 
 
diff --git a/app/common/styles/directives/app-navigation.scss b/app/common/styles/directives/app-navigation.scss
index 29932e4..99fef2b 100644
--- a/app/common/styles/directives/app-navigation.scss
+++ b/app/common/styles/directives/app-navigation.scss
@@ -1,4 +1,4 @@
-$nav__toplvlWidth: 120px;
+$nav__toplvlWidth: 125px;
 $nav__seclvlWidth: 240px;
 
 // Top level navigation
diff --git a/app/common/styles/elements/accordion.scss b/app/common/styles/elements/accordion.scss
index 9cf310f..c3d9e0f 100644
--- a/app/common/styles/elements/accordion.scss
+++ b/app/common/styles/elements/accordion.scss
@@ -7,18 +7,16 @@
   background: $darkpurple;
   color: $white;
   margin-left: 0;
-
   .event__actions {
     margin-top: 1em;
     margin-right: 10px;
     @include mediaQuery(medium) {
-      margin-top: 0;
+      margin-top: -6px;
     }
     @include mediaQuery(large) {
       margin-right: -20px;
     }
   }
-
 }
 
 .accord-trigger {
diff --git a/app/common/styles/elements/content-search.scss b/app/common/styles/elements/content-search.scss
index fe67af2..3bb3ffa 100644
--- a/app/common/styles/elements/content-search.scss
+++ b/app/common/styles/elements/content-search.scss
@@ -9,7 +9,6 @@
   position: relative;
   margin-right: 1em;
   margin-top: .5em;
-  margin-bottom: 1em;
   #content__search-input {
     margin: 0;
     border: 1px solid $lightgrey;
diff --git a/app/common/styles/elements/index.scss b/app/common/styles/elements/index.scss
index d0208ac..d35b79a 100644
--- a/app/common/styles/elements/index.scss
+++ b/app/common/styles/elements/index.scss
@@ -2,10 +2,11 @@
 @import "toggle-switch";
 @import "toggle-filter";
 @import "status";
+@import "tags";
 @import "alerts";
 @import "inline-confirm";
 @import "accordion";
 @import "content-search";
 @import "paginate";
-@import "export";
-@import "thresholds";
\ No newline at end of file
+@import "thresholds";
+@import "export";
\ No newline at end of file
diff --git a/app/common/styles/elements/paginate.scss b/app/common/styles/elements/paginate.scss
index 2df88cc..461b854 100644
--- a/app/common/styles/elements/paginate.scss
+++ b/app/common/styles/elements/paginate.scss
@@ -11,6 +11,7 @@
   -webkit-box-align: center;
   -ms-flex-align: center;
   align-items: center;
+  padding: 0 10px;
 }
 
 .pagination li { background-color: transparent; list-style-type: none; }
@@ -65,15 +66,15 @@
 }
 
 .pagination li:first-child a::before,
-.pagination li:last-child a::after { content: "\027A0"; }
+
 
 .pagination li:nth-of-type(2) a::before,
-.pagination li:nth-last-of-type(2) a::after { content: "\0279E"; }
+
 
 .pagination li:first-child a::before,
 .pagination li:nth-of-type(2) a::before { -webkit-transform: rotate(180deg); transform: rotate(180deg); }
 
-.pagination li.current a {
+.pagination li.current a, .pagination li.active a {
   padding-top:.25em;
   color: $white;
   background-color: $lightbg__primary;
diff --git a/app/common/styles/elements/thresholds.scss b/app/common/styles/elements/thresholds.scss
index e8192b3..06e872f 100644
--- a/app/common/styles/elements/thresholds.scss
+++ b/app/common/styles/elements/thresholds.scss
@@ -3,10 +3,9 @@
 $threshColorLighten: 5%;
 .threshold-chart__wrapper {
   position: relative;
-  padding-bottom: 2em;
   .threshold__label {
     position: absolute;
-    top: 25%;
+    top: 38%;
     transform: translateY(-50%);
     font-weight: 700;
     &.low {
@@ -24,7 +23,7 @@
 .threshold-chart {
   position: relative;
   line-height: 0;
-  padding: .8em 0 2em 3px;
+  padding: .8em 0 2em 0;
   margin: 0 2.5em;
  //margin: 0 auto;
   .threshold__marker {
@@ -46,12 +45,7 @@
       white-space: nowrap;
     }
   }
-  .threshold__marker {
-    &.thresh__low-critical .threshold__value {
-      left: 0;
-      @include slowTransition-all;
-    }
-  }
+
   .threshold {
     display: inline-block;
     background-color: $thresh-normal;
diff --git a/app/common/styles/layout/content.scss b/app/common/styles/layout/content.scss
index 18c34b9..e36fa66 100644
--- a/app/common/styles/layout/content.scss
+++ b/app/common/styles/layout/content.scss
@@ -11,6 +11,6 @@
 }
 
 section.row {
-  //padding-left: 0;
-  //padding-right: 0;
+  padding-left: 0;
+  padding-right: 0;
 }
\ No newline at end of file