Updating sensors logics with mock data

Change-Id: Icede8defdae3a677db5c13dcd6324a1117ce25db
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/server-health/controllers/sensors-controller.js b/app/server-health/controllers/sensors-controller.js
index aaa5aa6..cf10541 100644
--- a/app/server-health/controllers/sensors-controller.js
+++ b/app/server-health/controllers/sensors-controller.js
@@ -9,7 +9,7 @@
 
 window.angular && (function (angular) {
     'use strict';
-
+    var sensorData = [], originalData = {};
     angular
         .module('app.overview')
         .controller('sensorsController', [
@@ -18,13 +18,120 @@
             '$window', 
             'APIUtils', 
             'dataService',
-            function($scope, $log, $window, APIUtils, dataService, userModel){
+            '$routeParams',
+            function($scope, $log, $window, APIUtils, dataService, $routeParams){
                 $scope.dataService = dataService;
-
+                $scope.customSearch = "";
                 $scope.dropdown_selected = false;
-
                 $scope.$log = $log;
-                $scope.message = 'Hello World!';
+                $scope.data = {};
+                $scope.searchTerms = [];
+
+                $scope.selectedSeverity = {
+                    all: true,
+                    normal: false,
+                    warning: false,
+                    critical: false
+                };
+
+                var sensorType = $routeParams.type;
+
+                $scope.export_name = sensorType + "_sensors.json";
+
+                $scope.toggleSeverityAll = function(){
+                    $scope.selectedSeverity.all = !$scope.selectedSeverity.all;
+
+                    if($scope.selectedSeverity.all){
+                        $scope.selectedSeverity.normal = false;
+                        $scope.selectedSeverity.warning = false;
+                        $scope.selectedSeverity.critical = false;
+                    }
+                }
+
+                $scope.toggleSeverity = function(severity){
+                    $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
+
+                    if($scope.selectedSeverity.normal && 
+                       $scope.selectedSeverity.warning && 
+                       $scope.selectedSeverity.critical){
+                        $scope.selectedSeverity.all = true;
+                        $scope.selectedSeverity.normal = false;
+                        $scope.selectedSeverity.warning = false;
+                        $scope.selectedSeverity.critical = false;
+                    }else{
+                        $scope.selectedSeverity.all = false;
+                    }
+                }
+
+                $scope.doSearchOnEnter = function (event) {
+                    var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,'');
+                    if (event.keyCode === 13 &&
+                        search.length >= 2) {
+                        $scope.searchTerms = $scope.customSearch.split(" ");
+                    }else{
+                        if(search.length == 0){
+                            $scope.searchTerms = [];
+                        }
+                    }
+                };
+
+                $scope.doSearchOnClick = function() {
+                    var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,'');
+                    if (search.length >= 2) {
+                        $scope.searchTerms = $scope.customSearch.split(" ");
+                    }else{
+                        if(search.length == 0){
+                            $scope.searchTerms = [];
+                        }
+                    }
+                }
+
+                $scope.jsonData = function(data){
+                    var dt = {};
+                    data.data.forEach(function(item){
+                        dt[item.original_data.key] = item.original_data.value;
+                    });
+                    return JSON.stringify(dt);
+                };
+
+                $scope.filterBySeverity = function(sensor){
+                    if($scope.selectedSeverity.all) return true;
+
+                    return( (sensor.severity_flags.normal && $scope.selectedSeverity.normal) ||
+                            (sensor.severity_flags.warning && $scope.selectedSeverity.warning) ||
+                            (sensor.severity_flags.critical && $scope.selectedSeverity.critical)
+                    );
+                }
+                $scope.filterBySearchTerms = function(sensor){
+
+                    if(!$scope.searchTerms.length) return true; 
+
+                    for(var i = 0, length = $scope.searchTerms.length; i < length; i++){
+                        if(sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false;
+                    }
+                    return true;
+                }
+
+                function setSensorData(){
+                    var data = dataService.sensorData.sensors.filter(function(item){
+                        return item.type == sensorType;
+                    });
+                    if(data.length){
+                        sensorData = data[0];
+                        $scope.data = sensorData;
+                        $scope.export_data = $scope.jsonData($scope.data);
+                    }
+                }
+
+                if(!dataService.sensorData.sensors){
+                    APIUtils.getAllSensorStatus(function(data, originalData){
+                        dataService.sensorData = data;
+                        setSensorData();
+                    });
+                }else{
+                    setSensorData();
+                }
+
             }
         ]
     );