Updating sensors logics with mock data

Change-Id: Icede8defdae3a677db5c13dcd6324a1117ce25db
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index d177366..120bcb8 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -360,6 +360,122 @@
                 }).error(function(error){
                   console.log(error);
                 });
+              },
+              getAllSensorStatus: function(callback){
+                /**
+                GET   https://9.3.185.156/xyz/openbmc_project/sensors/enumerate
+                */
+                $http({
+                  method: 'GET',
+                  url: "/assets/mocks/sensors.json",
+                  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 sensorData = [];
+                      var allSensorSeveries = [];
+                      var allSensorRows = [];
+                      var total = 0;
+                      var status = 'normal';
+                      var data = {
+                                   total: 0,
+                                   status: '',
+                                   sensors: [{
+                                      title: 'All Sensors',
+                                      type: 'all',
+                                      status: '',
+                                      severity_flags: {},
+                                      search_text: '',
+                                      display_headers: ['Sensor (Unit)', 'Reading', 'State'],
+                                      data: []
+                                   }]
+                                 };
+
+                      function getSensorStatus(reading){
+                        var severityFlags = {critical: false, warning: false, normal: false}, severityText = '';
+                        if(reading.Value >= reading.CriticalLow && reading.Value <= reading.CriticalHigh){
+                          severityFlags.critical = true;
+                          severityText = 'critical';
+                        }
+                        else if(reading.Value >= reading.WarningLow && reading.Value <= reading.WarningHigh){
+                          severityFlags.warning = true;
+                          severityText = 'warning';
+                        }else{
+                          severityFlags.normal = true;
+                          severityText = 'normal';
+                        }
+                        return { flags: severityFlags, severityText: severityText};
+                      }
+
+                      for(var key in content.data){
+                        if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Unit')){
+                          sensorData.push(Object.assign({
+                            path: key,
+                            selected: false,
+                            confirm: false,
+                            copied: false,
+                            original_data: {key: key, value: content.data[key]}
+                          }, content.data[key]));
+                        }
+                      }
+
+                      Constants.SENSOR_DATA_TEMPLATE.sensors.forEach(function(sensor){
+                          var rowData = [];
+                          var severities = [];
+                          var thisSensorData = sensorData.filter(function(el){
+                            return el.path.indexOf('sensors/'+sensor.key_search) > -1;
+                          });
+
+                          for(var i = 0; i < thisSensorData.length; i++){
+
+                             var severity = getSensorStatus(thisSensorData[i]);
+                             severities.push(severity.severityText);
+                             rowData.push(Object.assign({
+                                title: sensor.sensor_row.title + (i+1),
+                                status: severity.severityText,
+                                severity_flags: severity.flags,
+                                reading: thisSensorData[i].Value + sensor.sensor_row.reading,
+                                search_text: (sensor.sensor_row.title + (i+1) + " " + severity.severityText + " " + thisSensorData[i].Value + sensor.sensor_row.reading).toLowerCase(),
+                                indicator: (severity.flags.critical) ? '90%' : ((severity.flags.warning) ? '15%' : '50%')
+                             }, thisSensorData[i]));
+                          }
+
+                          status = (severities.indexOf('critical') > -1) ? 'critical' : ((severities.indexOf('warning') > -1) ? 'warning' : 'normal');
+                          total += rowData.length;
+                          allSensorSeveries.push(status);
+                          var sevFlags =  {critical: false, warning: false, normal: false};
+                          sevFlags[status] = true;
+                          data.sensors.push({
+                            title: sensor.title,
+                            type: sensor.type,
+                            status: status,
+                            severity_flags: sevFlags,
+                            search_text: (sensor.title + " " + status).toLowerCase(),
+                            display_headers: sensor.display_headers,
+                            data: rowData
+                          });
+                          Array.prototype.push.apply(allSensorRows, rowData);
+                      });
+
+                      data.status = (allSensorSeveries.indexOf('critical') > -1) ? 'critical' : ((allSensorSeveries.indexOf('warning') > -1) ? 'warning' : 'normal');
+                      data.total = total;
+                      if(allSensorRows.length){
+                        data.sensors[0].status = data.status;
+                        data.sensors[0].data = allSensorRows;
+                        data.sensors[0].search_text = (data.sensors[0].title + " " + data.sensors[0].status).toLowerCase();
+                        var flags = {critical: false, warning: false, normal: false};
+                        flags[data.status] = true;
+                        data.sensors[0].severity_flags = flags;
+                      }
+                      callback(data, dataClone);
+                }).error(function(error){
+                  console.log(error);
+                });
               }
           };
           return SERVICE;