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

Code
Comments
Other
Rev Date Author Line
2989 02 Dec 14 olle 1 var LabEnvDbExp = function()
2989 02 Dec 14 olle 2 {
2989 02 Dec 14 olle 3   var labenvdbexp = {};
2989 02 Dec 14 olle 4   var debug = 1;
2989 02 Dec 14 olle 5
2989 02 Dec 14 olle 6   // Page initialization
2989 02 Dec 14 olle 7   labenvdbexp.initPage = function()
2989 02 Dec 14 olle 8   {
2989 02 Dec 14 olle 9     previewTitle = Doc.element('previewTitle');
2989 02 Dec 14 olle 10     previewList = Doc.element('previewList');
2989 02 Dec 14 olle 11
2989 02 Dec 14 olle 12     // Step 1
2989 02 Dec 14 olle 13     Events.addEventHandler('fromDate', 'blur', labenvdbexp.fromDateTimeOnChange);
2989 02 Dec 14 olle 14     Events.addEventHandler('fromTime', 'blur', labenvdbexp.fromDateTimeOnChange);
2989 02 Dec 14 olle 15     Events.addEventHandler('toDate', 'blur', labenvdbexp.toDateTimeOnChange);
2989 02 Dec 14 olle 16     Events.addEventHandler('toTime', 'blur', labenvdbexp.toDateTimeOnChange);
2989 02 Dec 14 olle 17
2989 02 Dec 14 olle 18     // Navigation
2989 02 Dec 14 olle 19     Buttons.addClickHandler('goexport', labenvdbexp.goExport);
2989 02 Dec 14 olle 20     Buttons.addClickHandler('gopreview', labenvdbexp.goPreview);
2989 02 Dec 14 olle 21
2989 02 Dec 14 olle 22     // Create lab sensor menu from configuration data
2989 02 Dec 14 olle 23     labenvdbexp.createSensorMenu();
2989 02 Dec 14 olle 24
2989 02 Dec 14 olle 25     Doc.show('step-1');
2989 02 Dec 14 olle 26     Doc.show('gopreview');
2989 02 Dec 14 olle 27     Doc.show('goexport');
2989 02 Dec 14 olle 28   }
2989 02 Dec 14 olle 29
2989 02 Dec 14 olle 30   labenvdbexp.createSensorMenu = function()
2989 02 Dec 14 olle 31   {
2989 02 Dec 14 olle 32     // Get lab sensor configurations JSON object with AJAX
2989 02 Dec 14 olle 33     var url = '../LabEnvironment.servlet?ID='+App.getSessionId();
2989 02 Dec 14 olle 34     url += '&cmd=GetLabSensorConfigList';
2989 02 Dec 14 olle 35
2989 02 Dec 14 olle 36     Wizard.asyncJsonRequest(url, labenvdbexp.createSensorMenu2);
2989 02 Dec 14 olle 37   }
2989 02 Dec 14 olle 38
2989 02 Dec 14 olle 39   labenvdbexp.createSensorMenu2 = function(response)
2989 02 Dec 14 olle 40   {
2989 02 Dec 14 olle 41     Doc.show('navigation');
2989 02 Dec 14 olle 42     if (response.status != 'ok')
2989 02 Dec 14 olle 43     {
2989 02 Dec 14 olle 44       setFatalError(response.message);
2989 02 Dec 14 olle 45       return false;
2989 02 Dec 14 olle 46     }
2989 02 Dec 14 olle 47     // Get sensor configurations information from the AJAX response
4527 20 Jun 17 nicklas 48     var labSensorConfigList = response.sensors;
2989 02 Dec 14 olle 49     if (labSensorConfigList != null)
2989 02 Dec 14 olle 50     {
2989 02 Dec 14 olle 51       // Construct lab sensor menu from JSON data
2989 02 Dec 14 olle 52       var sensorSelect = document.getElementById('sensorSelectId');
2989 02 Dec 14 olle 53       for (var i=0; i < labSensorConfigList.length; i++)
2989 02 Dec 14 olle 54       {
2989 02 Dec 14 olle 55         // Get URL and name for lab sensor number 'i'
2989 02 Dec 14 olle 56         var labSensorConfig = labSensorConfigList[i];
2989 02 Dec 14 olle 57         var sensorUrl = labSensorConfig['url'];
2989 02 Dec 14 olle 58         var sensorName = labSensorConfig['name'];
2989 02 Dec 14 olle 59         // Create and add new option element to select menu
2989 02 Dec 14 olle 60         var optionEl = document.createElement('option');
2989 02 Dec 14 olle 61         optionEl.setAttribute('value',sensorUrl);
2989 02 Dec 14 olle 62         optionEl.innerHTML = sensorName;
2989 02 Dec 14 olle 63         sensorSelect.appendChild(optionEl);
2989 02 Dec 14 olle 64       }
2989 02 Dec 14 olle 65     }
2989 02 Dec 14 olle 66   }
2989 02 Dec 14 olle 67
2989 02 Dec 14 olle 68   labenvdbexp.goPreview = function()
2989 02 Dec 14 olle 69   {
2989 02 Dec 14 olle 70     labenvdbexp.doExport(true);
2989 02 Dec 14 olle 71   }
2989 02 Dec 14 olle 72
2989 02 Dec 14 olle 73   labenvdbexp.goExport = function()
2989 02 Dec 14 olle 74   {
2989 02 Dec 14 olle 75     labenvdbexp.doExport(false);
2989 02 Dec 14 olle 76   }
2989 02 Dec 14 olle 77
2989 02 Dec 14 olle 78   labenvdbexp.doExport = function(preview)
2989 02 Dec 14 olle 79   {
2989 02 Dec 14 olle 80     var frm = document.forms['labenv'];
2989 02 Dec 14 olle 81     var url = '../LabEnvironment.servlet?ID='+App.getSessionId();
2989 02 Dec 14 olle 82     url += '&cmd=LabEnvironmentDatabaseQuery';
2989 02 Dec 14 olle 83     if (frm.sensorSelect.value != null) url += '&sensorurl='+frm.sensorSelect.value;
2989 02 Dec 14 olle 84     var sensorUrlText = frm.sensorSelect[frm.sensorSelect.selectedIndex].text;
2989 02 Dec 14 olle 85     url += '&sensorname='+sensorUrlText;
2989 02 Dec 14 olle 86     url += '&fdate='+frm.fromDate.value;
2989 02 Dec 14 olle 87     url += '&ftime='+frm.fromTime.value;
2989 02 Dec 14 olle 88     url += '&tdate='+frm.toDate.value;
2989 02 Dec 14 olle 89     url += '&ttime='+frm.toTime.value;
2989 02 Dec 14 olle 90     if (frm.displayIndexSelect.value != null) url += '&displayindex='+frm.displayIndexSelect.value;
2989 02 Dec 14 olle 91     url += '&returntype=export';
2989 02 Dec 14 olle 92     if (preview) 
2989 02 Dec 14 olle 93     {
2989 02 Dec 14 olle 94       var previewTitle = document.getElementById('previewTitle');
2989 02 Dec 14 olle 95       var previewList = document.getElementById('previewList');
2989 02 Dec 14 olle 96     
2989 02 Dec 14 olle 97       Doc.hide('previewWrapper');
2989 02 Dec 14 olle 98       previewTitle.innerHTML = 'Working...';
2989 02 Dec 14 olle 99       previewList.innerHTML = '';
2989 02 Dec 14 olle 100     
2989 02 Dec 14 olle 101       url += '&preview=1';
2989 02 Dec 14 olle 102
2989 02 Dec 14 olle 103       Wizard.showLoadingAnimation('Working...');
2989 02 Dec 14 olle 104       Doc.hide('navigation');
2989 02 Dec 14 olle 105       Wizard.asyncJsonRequest(url, labenvdbexp.onPreviewLoaded);
2989 02 Dec 14 olle 106     }
2989 02 Dec 14 olle 107     else
2989 02 Dec 14 olle 108     {
2989 02 Dec 14 olle 109       window.location = url;    
2989 02 Dec 14 olle 110     }
2989 02 Dec 14 olle 111   }
2989 02 Dec 14 olle 112   
2989 02 Dec 14 olle 113   labenvdbexp.onPreviewLoaded = function(response)
2989 02 Dec 14 olle 114   {
2989 02 Dec 14 olle 115     Doc.show('navigation');
2989 02 Dec 14 olle 116     var frm = document.forms['labenv'];
2989 02 Dec 14 olle 117     var allLines = response.split('\n');
2989 02 Dec 14 olle 118     var numLines = allLines.length - 2; // First line is a header line
2989 02 Dec 14 olle 119     
2989 02 Dec 14 olle 120     var html = '<tr><th>'+allLines[0].replace(/\t/g, '</th><th>')+'</th></tr>';
2989 02 Dec 14 olle 121     for (var i = 1 ; i <= numLines; i++)
2989 02 Dec 14 olle 122     {
2989 02 Dec 14 olle 123       var line = allLines[i];
2989 02 Dec 14 olle 124       var cols = line.split(/\t/);
2989 02 Dec 14 olle 125       var rowClass = '';
2989 02 Dec 14 olle 126       html += '<tr class="'+rowClass+'"><td>'+cols.join('</td><td>')+'</td></tr>';
2989 02 Dec 14 olle 127     }
2989 02 Dec 14 olle 128
2989 02 Dec 14 olle 129     var sensorUrlText = frm.sensorSelect[frm.sensorSelect.selectedIndex].text;
2989 02 Dec 14 olle 130     previewTitle.innerHTML = 'Sensor - ' + sensorUrlText;
2989 02 Dec 14 olle 131     previewList.innerHTML = '<table>'+html+'</table>';
2989 02 Dec 14 olle 132     Doc.show('previewWrapper');
2989 02 Dec 14 olle 133   }
2989 02 Dec 14 olle 134
2989 02 Dec 14 olle 135   labenvdbexp.addEventHandlers = function(elements, eventName, handler)
2989 02 Dec 14 olle 136   {
2989 02 Dec 14 olle 137     for (var i = 0; i < elements.length; i++)
2989 02 Dec 14 olle 138     {
2989 02 Dec 14 olle 139       Events.addEventHandler(elements[i], eventName, handler);
2989 02 Dec 14 olle 140     }
2989 02 Dec 14 olle 141   }
2989 02 Dec 14 olle 142
2989 02 Dec 14 olle 143   labenvdbexp.fromDateTimeOnChange = function()
2989 02 Dec 14 olle 144   {
2989 02 Dec 14 olle 145     var frm = document.forms['labenv'];
2989 02 Dec 14 olle 146     var todaysDate = new Date();
2989 02 Dec 14 olle 147     fromDateIsValid = false;
2989 02 Dec 14 olle 148     setInputStatus('fromDate', '', '');
2989 02 Dec 14 olle 149   
2989 02 Dec 14 olle 150     var fromDate = frm.fromDate.value;
2989 02 Dec 14 olle 151     var fromTime = frm.fromTime.value;
2989 02 Dec 14 olle 152   
2989 02 Dec 14 olle 153     if (fromDate != '' || fromTime != '')
2989 02 Dec 14 olle 154     {
2989 02 Dec 14 olle 155       // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
2989 02 Dec 14 olle 156       fromDate = autoFillDate(fromDate);
2989 02 Dec 14 olle 157       frm.fromDate.value = fromDate;
2989 02 Dec 14 olle 158
2989 02 Dec 14 olle 159       fromTime = autoFillTime(fromTime);
2989 02 Dec 14 olle 160       frm.fromTime.value = fromTime;
2989 02 Dec 14 olle 161     
2989 02 Dec 14 olle 162       if (!Dates.isDate(fromDate, 'yyyyMMdd'))
2989 02 Dec 14 olle 163       {
2989 02 Dec 14 olle 164         setInputStatus('fromDate', 'Not a valid date', 'invalid');
2989 02 Dec 14 olle 165         return;
2989 02 Dec 14 olle 166       }    
2989 02 Dec 14 olle 167     
2989 02 Dec 14 olle 168       if (!Dates.isDate(fromDate + ' ' + fromTime, 'yyyyMMdd HHmm'))
2989 02 Dec 14 olle 169       {
2989 02 Dec 14 olle 170         if (fromDate != '') setInputStatus('fromDate', 'Not a valid time (if time unknown, also leave date field blank)', 'invalid');
2989 02 Dec 14 olle 171         return;
2989 02 Dec 14 olle 172       }
2989 02 Dec 14 olle 173       setInputStatus('fromDate', '', 'valid');
2989 02 Dec 14 olle 174     }
2989 02 Dec 14 olle 175     fromDateIsValid = true;
2989 02 Dec 14 olle 176     toDateTimeOnChange();
2989 02 Dec 14 olle 177   }
2989 02 Dec 14 olle 178
2989 02 Dec 14 olle 179   labenvdbexp.toDateTimeOnChange = function()
2989 02 Dec 14 olle 180   {
2989 02 Dec 14 olle 181     var frm = document.forms['labenv'];
2989 02 Dec 14 olle 182     var todaysDate = new Date();
2989 02 Dec 14 olle 183     toDateIsValid = false;
2989 02 Dec 14 olle 184     setInputStatus('toDate', '', '');
2989 02 Dec 14 olle 185   
2989 02 Dec 14 olle 186     var toDate = frm.toDate.value;
2989 02 Dec 14 olle 187     var toTime = frm.toTime.value;
2989 02 Dec 14 olle 188   
2989 02 Dec 14 olle 189     if (toDate != '' || toTime != '')
2989 02 Dec 14 olle 190     {
2989 02 Dec 14 olle 191       // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
2989 02 Dec 14 olle 192       toDate = autoFillDate(toDate);
2989 02 Dec 14 olle 193       frm.toDate.value = toDate;
2989 02 Dec 14 olle 194
2989 02 Dec 14 olle 195       toTime = autoFillTime(toTime);
2989 02 Dec 14 olle 196       frm.toTime.value = toTime;
2989 02 Dec 14 olle 197     
2989 02 Dec 14 olle 198       if (!Dates.isDate(toDate, 'yyyyMMdd'))
2989 02 Dec 14 olle 199       {
2989 02 Dec 14 olle 200         setInputStatus('toDate', 'Not a valid date', 'invalid');
2989 02 Dec 14 olle 201         return;
2989 02 Dec 14 olle 202       }    
2989 02 Dec 14 olle 203     
2989 02 Dec 14 olle 204       if (!Dates.isDate(toDate + ' ' + toTime, 'yyyyMMdd HHmm'))
2989 02 Dec 14 olle 205       {
2989 02 Dec 14 olle 206         if (toDate != '') setInputStatus('toDate', 'Not a valid time (if time unknown, also leave date field blank)', 'invalid');
2989 02 Dec 14 olle 207         return;
2989 02 Dec 14 olle 208       }
2989 02 Dec 14 olle 209       setInputStatus('toDate', '', 'valid');
2989 02 Dec 14 olle 210     }
2989 02 Dec 14 olle 211     toDateIsValid = true;
2989 02 Dec 14 olle 212   }
2989 02 Dec 14 olle 213   
2989 02 Dec 14 olle 214   return labenvdbexp;
2989 02 Dec 14 olle 215 }();
2989 02 Dec 14 olle 216
2989 02 Dec 14 olle 217 Doc.onLoad(LabEnvDbExp.initPage);