- Timestamp:
- Dec 2, 2014, 12:16:59 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/net.sf.basedb.labenv/trunk/resources/reports/labenvironmentalarms.jsp
r2486 r2989 23 23 %> 24 24 <base:page type="default" > 25 <base:head scripts="ajax.js" styles="path.css"> 26 <link rel="stylesheet" type="text/css" href="../css/reggie.css"> 27 <script language="JavaScript" src="../reggie.js" type="text/javascript" charset="UTF-8"></script> 28 <script language="JavaScript" src="boxplot.js" type="text/javascript" charset="UTF-8"></script> 29 30 31 <script language="JavaScript"> 32 var currentStep = 1; 33 var debug = false; 34 35 window.onload = function() 36 { 37 // Create lab environment alarms web page from configuration data 38 createLabEnvAlarmWebPage(); 39 }; 40 41 function createLabEnvAlarmWebPage() 42 { 43 document.getElementById("gosetalarmblocker").style.display = 'block'; 44 // Get lab sensor configurations dynamically from server data 45 var frm = document.forms['labenv']; 46 var anyAlarmPermission = false; 47 var labSensorConfigList = getLabSensorConfigList(); 48 if (labSensorConfigList != null) 49 { 50 var alarmTable = document.getElementById('alarmTableId'); 51 alarmTable.setAttribute('id', 'alarmTable'); 52 // Print alarm table header row 53 var colspan = 11; 54 var alarmTableHeaderClass = 'alarmtableheader'; 55 var alarmHeaderCell01 = getTableCellElement('Alarm', alarmTableHeaderClass); 56 var alarmHeaderCell02 = getTableCellElement('Sensor', alarmTableHeaderClass); 57 var alarmHeaderCell03 = getTableCellElement('Start', alarmTableHeaderClass); 58 var alarmHeaderCell04 = getTableCellElement('End', alarmTableHeaderClass); 59 var alarmHeaderCell05 = getTableCellElement('Weekday', alarmTableHeaderClass); 60 var alarmHeaderCell06 = getTableCellElement('Temp.', alarmTableHeaderClass); 61 var alarmHeaderCell07 = getTableCellElement('Temp.', alarmTableHeaderClass); 62 var alarmHeaderCell08 = getTableCellElement('Humidity', alarmTableHeaderClass); 63 var alarmHeaderCell09 = getTableCellElement('Humidity', alarmTableHeaderClass); 64 var alarmHeaderCell10 = getTableCellElement('Alarm', alarmTableHeaderClass); 65 var alarmHeaderCell11 = getTableCellElement('Alarm', alarmTableHeaderClass); 66 var alarmHeaderRow = document.createElement('tr'); 67 alarmHeaderRow.appendChild(alarmHeaderCell01); 68 alarmHeaderRow.appendChild(alarmHeaderCell02); 69 alarmHeaderRow.appendChild(alarmHeaderCell03); 70 alarmHeaderRow.appendChild(alarmHeaderCell04); 71 alarmHeaderRow.appendChild(alarmHeaderCell05); 72 alarmHeaderRow.appendChild(alarmHeaderCell06); 73 alarmHeaderRow.appendChild(alarmHeaderCell07); 74 alarmHeaderRow.appendChild(alarmHeaderCell08); 75 alarmHeaderRow.appendChild(alarmHeaderCell09); 76 alarmHeaderRow.appendChild(alarmHeaderCell10); 77 alarmHeaderRow.appendChild(alarmHeaderCell11); 78 alarmTable.appendChild(alarmHeaderRow); 79 var alarmTableSubHeaderClass = 'reportsubheader'; 80 var alarmTableSubHeaderClass = 'alarmtableheader'; 81 var alarmSubHeaderCell01 = getTableCellElement('no', alarmTableSubHeaderClass); 82 var alarmSubHeaderCell02 = getTableCellElement('name', alarmTableSubHeaderClass); 83 var alarmSubHeaderCell03 = getTableCellElement('time', alarmTableSubHeaderClass); 84 var alarmSubHeaderCell04 = getTableCellElement('time', alarmTableSubHeaderClass); 85 var alarmSubHeaderCell05 = getTableCellElement('filter', alarmTableSubHeaderClass); 86 var alarmSubHeaderCell06 = getTableCellElement('min', alarmTableSubHeaderClass); 87 var alarmSubHeaderCell07 = getTableCellElement('max', alarmTableSubHeaderClass); 88 var alarmSubHeaderCell08 = getTableCellElement('min', alarmTableSubHeaderClass); 89 var alarmSubHeaderCell09 = getTableCellElement('max', alarmTableSubHeaderClass); 90 var alarmSubHeaderCell10 = getTableCellElement('blocked', alarmTableSubHeaderClass); 91 var alarmSubHeaderCell11 = getTableCellElement('text', alarmTableSubHeaderClass); 92 var alarmSubHeaderRow = document.createElement('tr'); 93 alarmSubHeaderRow.appendChild(alarmSubHeaderCell01); 94 alarmSubHeaderRow.appendChild(alarmSubHeaderCell02); 95 alarmSubHeaderRow.appendChild(alarmSubHeaderCell03); 96 alarmSubHeaderRow.appendChild(alarmSubHeaderCell04); 97 alarmSubHeaderRow.appendChild(alarmSubHeaderCell05); 98 alarmSubHeaderRow.appendChild(alarmSubHeaderCell06); 99 alarmSubHeaderRow.appendChild(alarmSubHeaderCell07); 100 alarmSubHeaderRow.appendChild(alarmSubHeaderCell08); 101 alarmSubHeaderRow.appendChild(alarmSubHeaderCell09); 102 alarmSubHeaderRow.appendChild(alarmSubHeaderCell10); 103 alarmSubHeaderRow.appendChild(alarmSubHeaderCell11); 104 alarmTable.appendChild(alarmSubHeaderRow); 105 for (var i=0; i < labSensorConfigList.length; i++) 106 { 107 // Get URL and name for lab sensor number 'i' 108 var labSensorConfig = labSensorConfigList[i]; 109 var sensorUrl = labSensorConfig['url']; 110 var sensorName = labSensorConfig['name']; 111 //alert("i = " + i + " sensorUrl = " + sensorUrl + " sensorName = " + sensorName); 112 var alarmList = labSensorConfig['alarmList']; 113 //alert("i = " + i + " alarmList = " + alarmList); 114 if (alarmList != null) 115 { 116 //alert("i = " + i + " alarmList.length = " + alarmList.length); 117 for (var j=0; j < alarmList.length; j++) 118 { 119 // Get alarm number 'j' 120 var alarm = alarmList[j]; 121 var alarmNo = alarm['no']; 122 var startTime = alarm['startTime']; 123 var endTime = alarm['endTime']; 124 var weekdayFilter = alarm['weekdayFilter']; 125 var temperatureMin = alarm['temperatureMin']; 126 var temperatureMax = alarm['temperatureMax']; 127 var humidityMin = alarm['humidityMin']; 128 var humidityMax = alarm['humidityMax']; 129 var alarmBlocked = alarm['alarmBlocked']; 130 var alarmText = alarm['alarmText']; 131 var alarmPermission = alarm['alarmPermission']; 132 if (alarmPermission != null && alarmPermission) 133 { 134 anyAlarmPermission = true; 135 } 136 if (alarmBlocked == null) 137 { 138 alarmBlocked = false; 139 } 140 if (alarmText == null) 141 { 142 alarmText = '-'; 143 } 144 //alert("createLabEnvAlarmWebPage(): i = " + i + " j = " + j + " sensorName = " + sensorName + " startTime = " + startTime + " endTime = " + endTime + " weekdayFilter = " + weekdayFilter + " temperatureMin = " + temperatureMin + " temperatureMax = " + temperatureMax + " humidityMin = " + humidityMin + " humidityMax = " + humidityMax + " alarmBlocked = " + alarmBlocked + " alarmText = " + alarmText); 145 var alarmRowText = alarmNo + '\n' + sensorName + '\n' + startTime + '\n' + endTime + '\n' + weekdayFilter + '\n' + temperatureMin + '\n' + temperatureMax + '\n' + humidityMin + '\n' + humidityMax + '\n' + alarmBlocked + '\n' + alarmText; 146 //alert("alarmRowText = " + alarmRowText); 147 var alarmRow = document.createElement('tr'); 148 //var alarmTableClass = 'reportheader'; 149 var alarmTableClass = 'reportdata'; 150 var alarmCell01 = getTableCellElement(alarmNo, alarmTableClass); 151 var alarmCell02 = getTableCellElement(sensorName, alarmTableClass); 152 var alarmCell03 = getTableCellElement(startTime, alarmTableClass); 153 var alarmCell04 = getTableCellElement(endTime, alarmTableClass); 154 var alarmCell05 = getTableCellElement(weekdayFilter, alarmTableClass); 155 var alarmCell06 = getTableCellElement(temperatureMin, alarmTableClass); 156 var alarmCell07 = getTableCellElement(temperatureMax, alarmTableClass); 157 var alarmCell08 = getTableCellElement(humidityMin, alarmTableClass); 158 var alarmCell09 = getTableCellElement(humidityMax, alarmTableClass); 159 var alarmCell10 = getTableCellYesNoSelectElement(alarmBlocked, 'alarmBlockedId' + alarmNo, alarmPermission, alarmTableClass); 160 var alarmCell11 = getTableCellElement(alarmText, alarmTableClass); 161 alarmRow.appendChild(alarmCell01); 162 alarmRow.appendChild(alarmCell02); 163 alarmRow.appendChild(alarmCell03); 164 alarmRow.appendChild(alarmCell04); 165 alarmRow.appendChild(alarmCell05); 166 alarmRow.appendChild(alarmCell06); 167 alarmRow.appendChild(alarmCell07); 168 alarmRow.appendChild(alarmCell08); 169 alarmRow.appendChild(alarmCell09); 170 alarmRow.appendChild(alarmCell10); 171 alarmRow.appendChild(alarmCell11); 172 alarmTable.appendChild(alarmRow); 173 } 174 } 175 } 176 } 177 if (!anyAlarmPermission) 178 { 179 // Hide "Set alarm blocker" button if logged-in user does not have permission to set any alarm blocker status 180 document.getElementById("gosetalarmblocker").style.display = 'none'; 181 } 182 } 183 184 function getLabSensorConfigList() 185 { 186 // Get lab sensor configurations JSON object with AJAX 187 var frm = document.forms['labenv']; 188 var request = Ajax.getXmlHttpRequest(); 189 var url = '../../labenv.jar/LabEnvironment.servlet?ID=<%=ID%>&cmd=GetLabSensorConfigList'; 190 request.open("GET", url, false); 191 request.send(null); 192 193 //if (debug) Main.debug(request.responseText); 194 //Main.debug(request.responseText); 195 196 var response = JSON.parse(request.responseText); 197 if (response.status != 'ok') 198 { 199 setFatalError(response.message); 200 return false; 201 } 202 203 // Get sensor configurations information from the AJAX response 204 var labSensorConfigList = response.labSensorConfigList; 205 206 return labSensorConfigList; 207 } 208 209 function goSetAlarmBlocker() 210 { 211 // Set alarm blocked flags with AJAX 212 var request = Ajax.getXmlHttpRequest(); 213 var url = '../LabEnvironment.servlet?ID=<%=ID%>&cmd=SetLabEnvAlarmConfig'; 214 // Get alarm blocker status from form option menus 215 var frm = document.forms['labenv']; 216 var labSensorConfigList = getLabSensorConfigList(); 217 if (labSensorConfigList != null) 218 { 219 for (var i=0; i < labSensorConfigList.length; i++) 220 { 221 // Get URL and name for lab sensor number 'i' 222 var labSensorConfig = labSensorConfigList[i]; 223 var alarmList = labSensorConfig['alarmList']; 224 //alert("i = " + i + " alarmList = " + alarmList); 225 if (alarmList != null) 226 { 227 //alert("i = " + i + " alarmList.length = " + alarmList.length); 228 for (var j=0; j < alarmList.length; j++) 229 { 230 // Get alarm number 'j' 231 var alarm = alarmList[j]; 232 var alarmNo = alarm['no']; 233 // Get value for alarm blocker option menu 234 var alarmBlockedMenuId = 'alarmBlockedId' + alarmNo; 235 var selectEl = document.getElementById(alarmBlockedMenuId); 236 //alert("alarmNo = " + alarmNo + " alarmBlockedMenuId = " + alarmBlockedMenuId + " selectEl = " + selectEl); 237 if (selectEl != null) 238 { 239 var selectValue = selectEl.value; 240 //alert("alarmNo = " + alarmNo + " alarmBlockedMenuId = " + alarmBlockedMenuId + " value = " + selectValue); 241 if (selectValue == null) 242 { 243 selectValue = false; 244 } 245 // Add alarm block value to Ajax URL 246 url += '&' + alarmBlockedMenuId + '=' + selectValue; 247 } 248 } 249 } 250 } 251 } 252 request.open("GET", url, false); 253 request.send(null); 254 255 if (debug) Main.debug(request.responseText); 256 257 var response = JSON.parse(request.responseText); 258 if (response.status != 'ok') 259 { 260 setFatalError(response.message); 261 return false; 262 } 263 } 264 265 function getJSONData(jsonObject, key) 266 { 267 var data = getJSONData(jsonObject, key, ''); 268 return data; 269 } 270 271 function getJSONData(jsonObject, key, defaultChoice) 272 { 273 var data = defaultChoice; 274 if (jsonObject != null) 275 { 276 if (jsonObject[key] != null) 277 { 278 data = jsonObject[key]; 279 } 280 } 281 return data; 282 } 283 284 function getTableCellElement(text, clazz, colspan, rowspan) 285 { 286 var cellElement = document.createElement('td'); 287 text = new String(text); 288 var textArray = text.split("\n"); 289 if (textArray.length > 1) 290 { 291 for (var i=0;i<textArray.length;i++) 292 { 293 if (i>0)cellElement.appendChild(document.createElement('br')); 294 cellElement.appendChild(document.createTextNode(textArray[i])); 295 } 296 } 297 else 298 { 299 cellElement.appendChild(document.createTextNode(text)); 300 } 301 cellElement.setAttribute('class', clazz); 302 if (colspan != null) cellElement.setAttribute('colspan', colspan); 303 if (rowspan != null) cellElement.setAttribute('rowspan', rowspan); 304 305 return cellElement; 306 } 307 308 function getTableCellYesNoSelectElement(value, id, permission, clazz, colspan, rowspan) 309 { 310 /* 311 <td class="input"> 312 <select id="yesNoSelectId"> 313 <option value="true">Yes</option> 314 <option value="false" selected="yes">No</option> 315 </select> 316 </td> 317 */ 318 var cellElement = document.createElement('td'); 319 var selectElement = document.createElement('select'); 320 selectElement.setAttribute('id', id); 321 selectElement.setAttribute('name', id); 322 if (permission == null || !permission) 323 { 324 selectElement.setAttribute('disabled', true); 325 } 326 // Create and add new option elements to select menu 327 var optionYesEl = document.createElement('option'); 328 optionYesEl.setAttribute('value', true); 329 optionYesEl.innerHTML = 'Yes'; 330 if (value != null && value) 331 { 332 optionYesEl.setAttribute('selected','yes'); 333 } 334 var optionNoEl = document.createElement('option'); 335 optionNoEl.setAttribute('value', false); 336 optionNoEl.innerHTML = 'No'; 337 if (value == null || !value) 338 { 339 optionNoEl.setAttribute('selected','yes'); 340 } 341 selectElement.appendChild(optionYesEl); 342 selectElement.appendChild(optionNoEl); 343 cellElement.appendChild(selectElement); 344 cellElement.setAttribute('class', 'input'); 345 cellElement.setAttribute('align', 'center'); 346 cellElement.setAttribute('text-align', 'center'); 347 cellElement.setAttribute('class', clazz); 348 if (colspan != null) cellElement.setAttribute('colspan', colspan); 349 if (rowspan != null) cellElement.setAttribute('rowspan', rowspan); 350 351 return cellElement; 352 } 353 354 function goPrint() 355 { 356 var printNote = '<b>Note!</b> For better printing set page orientation to <i>portrait</i>.'; 357 printNote += ' Scale down to <i>90%</i> to fit 2 plots per page.'; 358 openPrintWindow('<%=ID%>', 'reportcell', 'Lab environment statistics', 'portrait', printNote, '../'); 359 } 360 </script> 361 25 <base:head 26 scripts="~../reggie-2.js,~labenvironmentalarms.js" 27 styles="path.css,~../css/reggie-2.css" 28 > 362 29 <style> 363 30 .alarmtableheader … … 369 36 cellpadding: 0; 370 37 } 38 39 /* Hide reggie version written by reggie-2.js, since this is just a help library */ 40 #reggie-version 41 { 42 display:none; 43 } 44 371 45 </style> 372 46 </base:head> 373 <base:body onload="init()">47 <base:body> 374 48 <p:path><p:pathelement 375 title="LabEnv" href="<%="./labenvironmentalarms.js p?ID="+ID%>"49 title="LabEnv" href="<%="./labenvironmentalarms.js?ID="+ID%>" 376 50 /><p:pathelement title="Lab environment alarms" 377 51 /></p:path> … … 380 54 <div class="content"> 381 55 382 <form name="labenv" onsubmit="return false;">56 <form name="labenv" id="wizard" class="wizard"> 383 57 <!-- 1. Report type--> 384 <table border="0" cellspacing="0" cellpadding="0" class="stepform"> 385 <tr> 386 <td rowspan="3" class="stepno">1</td> 387 <td class="steptitle">Alarms</td> 388 </tr> 389 <tr> 390 <td class="stepfields"> 391 <table id="alarmTableId" border="0" cellspacing="0" cellpadding="0" width="100%"> 58 <div class="step" id="step-1"> 59 <div class="step-no">1</div> 60 <div class="step-title">Alarms</div> 61 <div class="step-content"> 62 63 <table class="step-form" id="alarmTableId" border="0" cellspacing="0" cellpadding="0" width="100%"> 392 64 </table> 393 </td> 394 </tr> 395 </table> 65 </div> 66 </div> 67 68 <div id="wizard-status"></div> 396 69 397 70 <div class="messagecontainer error" id="errorMessage" style="display: none; width: 950px; margin-left: 20px; margin-bottom: 0px;"></div> 398 71 399 <table style="margin-left: 20px; margin-top: 10px;" class="navigation">72 <table class="navigation" id="navigation"> 400 73 <tr> 401 <td><base:button id="gosetalarmblocker" title="Set alarm blocker" image="<%="gonext.png"%>" onclick="goSetAlarmBlocker()"/></td>74 <td><base:button id="gosetalarmblocker" title="Set alarm blocker" image="<%="gonext.png"%>" /></td> 402 75 </tr> 403 76 </table>
Note: See TracChangeset
for help on using the changeset viewer.