extensions/net.sf.basedb.labenv/trunk/resources/reports/labenvironmentalarms.js

Code
Comments
Other
Rev Date Author Line
2989 02 Dec 14 olle 1 var LabEnvAlarm = function()
2989 02 Dec 14 olle 2 {
2989 02 Dec 14 olle 3   var labenvalarm = {};
2989 02 Dec 14 olle 4   var debug = 1;
4527 20 Jun 17 nicklas 5   var sensors;
2989 02 Dec 14 olle 6
2989 02 Dec 14 olle 7   // Page initialization
2989 02 Dec 14 olle 8   labenvalarm.initPage = function()
2989 02 Dec 14 olle 9   {
4527 20 Jun 17 nicklas 10     // Navigation
4527 20 Jun 17 nicklas 11     Buttons.addClickHandler('gosetalarmblocker', Wizard.goRegister);
4527 20 Jun 17 nicklas 12     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
2989 02 Dec 14 olle 13
4527 20 Jun 17 nicklas 14     // Final registration
4527 20 Jun 17 nicklas 15     Events.addEventHandler('wizard', 'wizard-submit', labenvalarm.submit);
2989 02 Dec 14 olle 16
2989 02 Dec 14 olle 17     // Create lab environment alarms web page from configuration data
4527 20 Jun 17 nicklas 18     labenvalarm.getAlarmInfo();
2989 02 Dec 14 olle 19   }
2989 02 Dec 14 olle 20
4527 20 Jun 17 nicklas 21   labenvalarm.getAlarmInfo = function()
2989 02 Dec 14 olle 22   {
2989 02 Dec 14 olle 23     // Get lab sensor configurations JSON object with Ajax
2989 02 Dec 14 olle 24     var url = '../LabEnvironment.servlet?ID='+App.getSessionId();
2989 02 Dec 14 olle 25     url += '&cmd=GetLabSensorConfigList';
4527 20 Jun 17 nicklas 26     Wizard.showLoadingAnimation('Loading sensor information. Please wait...');
4527 20 Jun 17 nicklas 27     Wizard.asyncJsonRequest(url, labenvalarm.onAlarmInfoLoaded);
2989 02 Dec 14 olle 28   }
2989 02 Dec 14 olle 29
4527 20 Jun 17 nicklas 30   labenvalarm.onAlarmInfoLoaded = function(response)
2989 02 Dec 14 olle 31   {
4527 20 Jun 17 nicklas 32     var template = Doc.element('row-template');
4527 20 Jun 17 nicklas 33     var cols = template.getElementsByTagName('th');
4527 20 Jun 17 nicklas 34     var rows = Doc.element('all-rows');
4527 20 Jun 17 nicklas 35
2989 02 Dec 14 olle 36     // Get sensor configurations information from the Ajax response
4527 20 Jun 17 nicklas 37     sensors = response.sensors;
4527 20 Jun 17 nicklas 38     var hasAlarmPermission = false;
4527 20 Jun 17 nicklas 39     for (var sensorNo = 0; sensorNo < sensors.length; sensorNo++)
2989 02 Dec 14 olle 40     {
4527 20 Jun 17 nicklas 41       var sensor = sensors[sensorNo];
4527 20 Jun 17 nicklas 42       
4527 20 Jun 17 nicklas 43       var alarms = sensor.alarms;
4527 20 Jun 17 nicklas 44       for (var alarmNo = 0; alarmNo < alarms.length; alarmNo++)
2989 02 Dec 14 olle 45       {
4527 20 Jun 17 nicklas 46         var alarm = alarms[alarmNo];
4527 20 Jun 17 nicklas 47         
4527 20 Jun 17 nicklas 48         var row = document.createElement('tr');
4527 20 Jun 17 nicklas 49         row.className = sensorNo % 2 == 0 ? 'evenrow highlight' : 'oddrow highlight';
4527 20 Jun 17 nicklas 50
4527 20 Jun 17 nicklas 51         for (var colNo = 0; colNo < cols.length; colNo++)
2989 02 Dec 14 olle 52         {
4527 20 Jun 17 nicklas 53           var cell = document.createElement('td');
4527 20 Jun 17 nicklas 54           cell.className = 'cell';
4527 20 Jun 17 nicklas 55           var colId = cols[colNo].id;
4527 20 Jun 17 nicklas 56           if (colId == 'alarms.alarmId')
2989 02 Dec 14 olle 57           {
4527 20 Jun 17 nicklas 58             cell.className = 'id-col';
4527 20 Jun 17 nicklas 59             cell.innerHTML = alarm.no;
4527 20 Jun 17 nicklas 60           }
4527 20 Jun 17 nicklas 61           else if (colId == 'alarms.sensorName')
4527 20 Jun 17 nicklas 62           {
4527 20 Jun 17 nicklas 63             cell.innerHTML = Strings.encodeTags(sensor.name);
4527 20 Jun 17 nicklas 64           }
4527 20 Jun 17 nicklas 65           else if (colId == 'alarms.url')
4527 20 Jun 17 nicklas 66           {
4527 20 Jun 17 nicklas 67             cell.innerHTML = '<a href="'+Strings.encodeTags(sensor.url)+'" target="_blank" rel="noopener noreferrer">'+Strings.encodeTags(sensor.url)+'</a>';
4527 20 Jun 17 nicklas 68           }
4527 20 Jun 17 nicklas 69           else if (colId == 'alarms.startTime')
4527 20 Jun 17 nicklas 70           {
4527 20 Jun 17 nicklas 71             cell.innerHTML = Strings.encodeTags(alarm.startTime);
4527 20 Jun 17 nicklas 72           }
4527 20 Jun 17 nicklas 73           else if (colId == 'alarms.endTime')
4527 20 Jun 17 nicklas 74           {
4527 20 Jun 17 nicklas 75             cell.innerHTML = Strings.encodeTags(alarm.endTime);
4527 20 Jun 17 nicklas 76           }
4527 20 Jun 17 nicklas 77           else if (colId == 'alarms.weekdayFilter')
4527 20 Jun 17 nicklas 78           {
4527 20 Jun 17 nicklas 79             cell.innerHTML = Strings.encodeTags(alarm.weekdayFilter);
4527 20 Jun 17 nicklas 80           }
4527 20 Jun 17 nicklas 81           else if (colId == 'alarms.minTemp')
4527 20 Jun 17 nicklas 82           {
4527 20 Jun 17 nicklas 83             cell.innerHTML = Numbers.formatNumber(alarm.temperatureMin, 1);
4527 20 Jun 17 nicklas 84           }
4527 20 Jun 17 nicklas 85           else if (colId == 'alarms.maxTemp')
4527 20 Jun 17 nicklas 86           {
4527 20 Jun 17 nicklas 87             cell.innerHTML = Numbers.formatNumber(alarm.temperatureMax, 1);
4527 20 Jun 17 nicklas 88           }
4527 20 Jun 17 nicklas 89           else if (colId == 'alarms.minHumidity')
4527 20 Jun 17 nicklas 90           {
4527 20 Jun 17 nicklas 91             cell.innerHTML = Numbers.formatNumber(alarm.humidityMin, 1);
4527 20 Jun 17 nicklas 92           }
4527 20 Jun 17 nicklas 93           else if (colId == 'alarms.maxHumidity')
4527 20 Jun 17 nicklas 94           {
4527 20 Jun 17 nicklas 95             cell.innerHTML = Numbers.formatNumber(alarm.humidityMax, 1);
4527 20 Jun 17 nicklas 96           }
4527 20 Jun 17 nicklas 97           else if (colId == 'alarms.blocked')
4527 20 Jun 17 nicklas 98           {
4527 20 Jun 17 nicklas 99             if (alarm.alarmPermission)
2989 02 Dec 14 olle 100             {
4527 20 Jun 17 nicklas 101               hasAlarmPermission = true;
4527 20 Jun 17 nicklas 102               var html = '<select name="alarmBlocked.'+alarm.no+'">';
4527 20 Jun 17 nicklas 103               html += '<option value="1"' + (alarm.blocked ? 'selected' :'') + '>Yes';
4527 20 Jun 17 nicklas 104               html += '<option value="0"' + (alarm.blocked ? '' : 'selected') + '>No';
4527 20 Jun 17 nicklas 105               html += '</select>';
4527 20 Jun 17 nicklas 106               cell.innerHTML = html;
2989 02 Dec 14 olle 107             }
4527 20 Jun 17 nicklas 108             else
2989 02 Dec 14 olle 109             {
4527 20 Jun 17 nicklas 110               cell.innerHTML = alarm.blocked ? 'Yes' : 'No';
2989 02 Dec 14 olle 111             }
2989 02 Dec 14 olle 112           }
4527 20 Jun 17 nicklas 113           else if (colId == 'alarms.alarmText')
4527 20 Jun 17 nicklas 114           {
4527 20 Jun 17 nicklas 115             cell.innerHTML = Strings.encodeTags(alarm.alarmText);
4527 20 Jun 17 nicklas 116           }
4527 20 Jun 17 nicklas 117           row.appendChild(cell);
2989 02 Dec 14 olle 118         }
4527 20 Jun 17 nicklas 119         rows.appendChild(row);
4527 20 Jun 17 nicklas 120         
2989 02 Dec 14 olle 121       }
2989 02 Dec 14 olle 122     }
4527 20 Jun 17 nicklas 123
4527 20 Jun 17 nicklas 124     Doc.show('alarms');
4527 20 Jun 17 nicklas 125     if (hasAlarmPermission)
2989 02 Dec 14 olle 126     {
4527 20 Jun 17 nicklas 127       Doc.show("gosetalarmblocker");
2989 02 Dec 14 olle 128     }
2989 02 Dec 14 olle 129   }
2989 02 Dec 14 olle 130
4527 20 Jun 17 nicklas 131   labenvalarm.submit = function()
2989 02 Dec 14 olle 132   {
4527 20 Jun 17 nicklas 133     var submitInfo = {};
4527 20 Jun 17 nicklas 134     var frm = document.forms['alarms'];
4527 20 Jun 17 nicklas 135     
2989 02 Dec 14 olle 136     // Get sensor configurations information from the Ajax response
4527 20 Jun 17 nicklas 137     for (var sensorNo = 0; sensorNo < sensors.length; sensorNo++)
2989 02 Dec 14 olle 138     {
4527 20 Jun 17 nicklas 139       var sensor = sensors[sensorNo];
4527 20 Jun 17 nicklas 140       
4527 20 Jun 17 nicklas 141       var alarms = sensor.alarms;
4527 20 Jun 17 nicklas 142       for (var alarmNo = 0; alarmNo < alarms.length; alarmNo++)
2989 02 Dec 14 olle 143       {
4527 20 Jun 17 nicklas 144         var alarm = alarms[alarmNo];
4527 20 Jun 17 nicklas 145         frm['alarmBlocked.'+alarm.no].value;
4527 20 Jun 17 nicklas 146         var tmp = {};
4527 20 Jun 17 nicklas 147         tmp.blocked = parseInt(frm['alarmBlocked.'+alarm.no].value) ? true : false;
4527 20 Jun 17 nicklas 148         submitInfo['alarm.'+alarm.no] = tmp;
2989 02 Dec 14 olle 149       }
2989 02 Dec 14 olle 150     }
2989 02 Dec 14 olle 151
4527 20 Jun 17 nicklas 152     var request = Ajax.getXmlHttpRequest();
4527 20 Jun 17 nicklas 153     var url = '../LabEnvironment.servlet?ID='+App.getSessionId();
4527 20 Jun 17 nicklas 154     url += '&cmd=SetLabEnvAlarmConfig';
4527 20 Jun 17 nicklas 155     Wizard.showLoadingAnimation('Updating alarm status. Please wait...');
4527 20 Jun 17 nicklas 156     Wizard.asyncJsonRequest(url, labenvalarm.submissionResults, 'POST', JSON.stringify(submitInfo));
2989 02 Dec 14 olle 157   }
2989 02 Dec 14 olle 158
4527 20 Jun 17 nicklas 159   labenvalarm.submissionResults = function(response)
2989 02 Dec 14 olle 160   {
4527 20 Jun 17 nicklas 161     Wizard.showFinalMessage(response.messages);
4527 20 Jun 17 nicklas 162     Doc.show('gorestart');
2989 02 Dec 14 olle 163   }
2989 02 Dec 14 olle 164
2989 02 Dec 14 olle 165   return labenvalarm;
2989 02 Dec 14 olle 166 }();
2989 02 Dec 14 olle 167
2989 02 Dec 14 olle 168 Doc.onLoad(LabEnvAlarm.initPage);