extensions/net.sf.basedb.reggie/trunk/resources/personal/generate-referral-forms.js

Code
Comments
Other
Rev Date Author Line
6277 03 Jun 21 nicklas 1 var Xport = function()
4014 06 Jul 16 olle 2 {
6277 03 Jun 21 nicklas 3   var xport = {};
4014 06 Jul 16 olle 4   var debug = 0;
4014 06 Jul 16 olle 5   
6277 03 Jun 21 nicklas 6   var siteIsValid = false;
6277 03 Jun 21 nicklas 7   var startNumberIsValid = false;
6277 03 Jun 21 nicklas 8   var numKitsIsValid = false;
4014 06 Jul 16 olle 9
6277 03 Jun 21 nicklas 10   xport.initPage = function()
4014 06 Jul 16 olle 11   {
4014 06 Jul 16 olle 12     // Step 1
6277 03 Jun 21 nicklas 13     Events.addEventHandler('step-1', 'wizard-validate', xport.validateStep1);
6277 03 Jun 21 nicklas 14     Events.addEventHandler('site', 'change', xport.siteOnChange);
6277 03 Jun 21 nicklas 15     Events.addEventHandler('startNumber', 'blur', xport.startNumberOnChange);
6277 03 Jun 21 nicklas 16     Events.addEventHandler('startNumber', 'keypress', Events.integerOnly);
6277 03 Jun 21 nicklas 17     Events.addEventHandler('numKits', 'blur', xport.numKitsOnChange);
6277 03 Jun 21 nicklas 18     Events.addEventHandler('numKits', 'keypress', Events.integerOnly);
6277 03 Jun 21 nicklas 19     Events.addEventHandler('viewLogFile', 'click', xport.viewLogFile);
4014 06 Jul 16 olle 20     
4014 06 Jul 16 olle 21     // Navigation
4014 06 Jul 16 olle 22     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
6277 03 Jun 21 nicklas 23     Buttons.addClickHandler('goregister', Wizard.goRegister);
6277 03 Jun 21 nicklas 24     Buttons.addClickHandler('gopreview', xport.goPreview);
6277 03 Jun 21 nicklas 25     Buttons.addClickHandler('viewLogFile2', xport.viewLogFile);
6277 03 Jun 21 nicklas 26     Buttons.addClickHandler('godownload', xport.downloadBD47File);
6277 03 Jun 21 nicklas 27     
6277 03 Jun 21 nicklas 28     Events.addEventHandler('wizard', 'wizard-submit', xport.goExport);
4014 06 Jul 16 olle 29
4014 06 Jul 16 olle 30     Doc.show('step-1');
6277 03 Jun 21 nicklas 31     Wizard.setInputStatus('site', 'invalid');
6277 03 Jun 21 nicklas 32     Wizard.setInputStatus('startNumber', 'invalid');
6277 03 Jun 21 nicklas 33     Wizard.setInputStatus('numKits', 'invalid');
4014 06 Jul 16 olle 34
4014 06 Jul 16 olle 35     // Load sites
4014 06 Jul 16 olle 36     var frm = document.forms['reggie'];
6277 03 Jun 21 nicklas 37     var url = '../ReferralGenerator.servlet?ID='+App.getSessionId();
6277 03 Jun 21 nicklas 38     url += '&cmd=GetSitesAndStartNumber';    
6277 03 Jun 21 nicklas 39     Doc.addClass('site', 'list-loading');
6277 03 Jun 21 nicklas 40     frm.site[0] = new Option('loading...');
6277 03 Jun 21 nicklas 41     Wizard.asyncJsonRequest(url, xport.sitesLoaded);
4014 06 Jul 16 olle 42   }
4014 06 Jul 16 olle 43   
6277 03 Jun 21 nicklas 44   xport.sitesLoaded = function(response)
4014 06 Jul 16 olle 45   {
6277 03 Jun 21 nicklas 46     Doc.removeClass('site', 'list-loading');
4014 06 Jul 16 olle 47     var frm = document.forms['reggie'];
4014 06 Jul 16 olle 48     var sites = response.sites;
6277 03 Jun 21 nicklas 49     frm.site.length = 0;
6277 03 Jun 21 nicklas 50     frm.site[0] = new Option('- Select site -', '');
4014 06 Jul 16 olle 51     for (var i = 0; i < sites.length; i++)
4014 06 Jul 16 olle 52     {
4014 06 Jul 16 olle 53       var s = sites[i];
6277 03 Jun 21 nicklas 54       var option = new Option(s.name + ' [' + s.prefix + ']', s.prefix);
6277 03 Jun 21 nicklas 55       frm.site[frm.site.length] = option;
4014 06 Jul 16 olle 56     }
6277 03 Jun 21 nicklas 57     frm.site.focus();
6277 03 Jun 21 nicklas 58     
6277 03 Jun 21 nicklas 59     frm.startNumber.value = response.lastReferralID || '';
6277 03 Jun 21 nicklas 60     xport.startNumberOnChange();
6277 03 Jun 21 nicklas 61     
6277 03 Jun 21 nicklas 62     frm.numKits.value = response.lastNumKits || '25';
6277 03 Jun 21 nicklas 63     xport.numKitsOnChange();
6277 03 Jun 21 nicklas 64     
6277 03 Jun 21 nicklas 65     if (response.logFile)
6277 03 Jun 21 nicklas 66     {
6277 03 Jun 21 nicklas 67       Doc.show('viewLogFile', 'inline');
6277 03 Jun 21 nicklas 68       Data.set('viewLogFile', 'file-id', response.logFile);
6277 03 Jun 21 nicklas 69     }
6277 03 Jun 21 nicklas 70     
6277 03 Jun 21 nicklas 71     Doc.show('gopreview');
6277 03 Jun 21 nicklas 72     Doc.show('goregister');
4014 06 Jul 16 olle 73   }
6277 03 Jun 21 nicklas 74   
6277 03 Jun 21 nicklas 75   xport.siteOnChange = function()
4080 06 Sep 16 olle 76   {
4080 06 Sep 16 olle 77     var frm = document.forms['reggie'];
6277 03 Jun 21 nicklas 78     siteIsValid = false;
6277 03 Jun 21 nicklas 79     Doc.element('sitePrefix').innerHTML = '00 -';
6277 03 Jun 21 nicklas 80     
6277 03 Jun 21 nicklas 81     if (frm.site.value == '')
4080 06 Sep 16 olle 82     {
6277 03 Jun 21 nicklas 83       Wizard.setInputStatus('site', 'invalid', 'Select a site');
6277 03 Jun 21 nicklas 84       frm.site.focus();
6277 03 Jun 21 nicklas 85       return;
4080 06 Sep 16 olle 86     }
6277 03 Jun 21 nicklas 87     
6277 03 Jun 21 nicklas 88     Doc.element('sitePrefix').innerHTML = frm.site.value+' -';
6277 03 Jun 21 nicklas 89     siteIsValid = true;
6277 03 Jun 21 nicklas 90     Wizard.setInputStatus('site', 'valid');
6277 03 Jun 21 nicklas 91     if (frm.startNumber.value == '') 
4080 06 Sep 16 olle 92     {
6277 03 Jun 21 nicklas 93       frm.startNumber.focus();
4080 06 Sep 16 olle 94     }
4080 06 Sep 16 olle 95     else
4080 06 Sep 16 olle 96     {
6277 03 Jun 21 nicklas 97       frm.numKits.focus();
4080 06 Sep 16 olle 98     }
4080 06 Sep 16 olle 99   }
6277 03 Jun 21 nicklas 100   
6277 03 Jun 21 nicklas 101   xport.startNumberOnChange = function()
4080 06 Sep 16 olle 102   {
4080 06 Sep 16 olle 103     var frm = document.forms['reggie'];
6277 03 Jun 21 nicklas 104     startNumberIsValid = false;
6277 03 Jun 21 nicklas 105     
6277 03 Jun 21 nicklas 106     var startNumber = frm.startNumber.value;
6277 03 Jun 21 nicklas 107     if (startNumber == '')
4080 06 Sep 16 olle 108     {
6277 03 Jun 21 nicklas 109       Wizard.setInputStatus('startNumber', 'invalid', 'Missing');
4080 06 Sep 16 olle 110       return;
4080 06 Sep 16 olle 111     }
4014 06 Jul 16 olle 112     
6277 03 Jun 21 nicklas 113     if (!startNumber.match(/^\d{5}$/))
4014 06 Jul 16 olle 114     {
6277 03 Jun 21 nicklas 115       Wizard.setInputStatus('startNumber', 'invalid', 'It must be 5 digits.');
6277 03 Jun 21 nicklas 116       return;
4014 06 Jul 16 olle 117     }
4014 06 Jul 16 olle 118     
6277 03 Jun 21 nicklas 119     startNumberIsValid = true;
6277 03 Jun 21 nicklas 120     Wizard.setInputStatus('startNumber', 'valid');
4014 06 Jul 16 olle 121   }
6277 03 Jun 21 nicklas 122   
6277 03 Jun 21 nicklas 123   xport.numKitsOnChange = function()
4014 06 Jul 16 olle 124   {
4014 06 Jul 16 olle 125     var frm = document.forms['reggie'];
6277 03 Jun 21 nicklas 126     numKitsIsValid = false;
6277 03 Jun 21 nicklas 127     
6277 03 Jun 21 nicklas 128     var numKits = frm.numKits.value;
6277 03 Jun 21 nicklas 129     if (numKits == '')
4014 06 Jul 16 olle 130     {
6277 03 Jun 21 nicklas 131       Wizard.setInputStatus('numKits', 'invalid', 'Missing');
4014 06 Jul 16 olle 132       return;
4014 06 Jul 16 olle 133     }
6277 03 Jun 21 nicklas 134     
6277 03 Jun 21 nicklas 135     if (!numKits.match(/^\d+$/))
4014 06 Jul 16 olle 136     {
6277 03 Jun 21 nicklas 137       Wizard.setInputStatus('numKits', 'invalid', 'It must be a number.');
4014 06 Jul 16 olle 138       return;
4014 06 Jul 16 olle 139     }
6277 03 Jun 21 nicklas 140     
6277 03 Jun 21 nicklas 141     var nk = parseInt(numKits);
6277 03 Jun 21 nicklas 142     if (nk < 1 || nk > 100)
4074 02 Sep 16 olle 143     {
6277 03 Jun 21 nicklas 144       Wizard.setInputStatus('numKits', 'invalid', 'It must be between 1 and 100');
4074 02 Sep 16 olle 145       return;
4074 02 Sep 16 olle 146     }
6277 03 Jun 21 nicklas 147     
6277 03 Jun 21 nicklas 148     numKitsIsValid = true;
6277 03 Jun 21 nicklas 149     Wizard.setInputStatus('numKits', 'valid');
4074 02 Sep 16 olle 150   }
4014 06 Jul 16 olle 151
6277 03 Jun 21 nicklas 152   xport.viewLogFile = function(event)
4074 02 Sep 16 olle 153   {
6277 03 Jun 21 nicklas 154     Dialogs.openPopup('', 'LogFile', 1050, 700);
6277 03 Jun 21 nicklas 155     Files.viewFile(Data.get(event.currentTarget, 'file-id'), 'LogFile');
4014 06 Jul 16 olle 156   }
4014 06 Jul 16 olle 157
6277 03 Jun 21 nicklas 158   xport.downloadBD47File = function(event)
4014 06 Jul 16 olle 159   {
6864 04 Nov 22 nicklas 160     var format = Data.get(event.currentTarget, 'format');
6864 04 Nov 22 nicklas 161     if (format == 'zip')
6864 04 Nov 22 nicklas 162     {
6864 04 Nov 22 nicklas 163       var fileId = Data.get(event.currentTarget, 'file-id');
6864 04 Nov 22 nicklas 164       var url = '../download-as-zip.jsp?ID='+App.getSessionId();
6864 04 Nov 22 nicklas 165       url += '&fileId='+fileId;
6864 04 Nov 22 nicklas 166       Dialogs.openPopup(url, 'DownloadAsZip'+fileId, 450, 300);
6864 04 Nov 22 nicklas 167     }
6864 04 Nov 22 nicklas 168     else
6864 04 Nov 22 nicklas 169     {
6864 04 Nov 22 nicklas 170       var url = App.getRoot()+'filemanager/files/download/-'+App.getSessionId()+'-';
6864 04 Nov 22 nicklas 171       url += Data.get(event.currentTarget, 'file-path');
6864 04 Nov 22 nicklas 172       location.href = url;
6864 04 Nov 22 nicklas 173     }
4014 06 Jul 16 olle 174   }
4014 06 Jul 16 olle 175
6277 03 Jun 21 nicklas 176   xport.validateStep1 = function(event)
4014 06 Jul 16 olle 177   {
6277 03 Jun 21 nicklas 178     var valid = siteIsValid;
6277 03 Jun 21 nicklas 179     valid &= startNumberIsValid;
6277 03 Jun 21 nicklas 180     valid &= numKitsIsValid;
6277 03 Jun 21 nicklas 181     if (!valid) event.preventDefault();
4014 06 Jul 16 olle 182   }
4014 06 Jul 16 olle 183
6277 03 Jun 21 nicklas 184   xport.goPreview = function()
4014 06 Jul 16 olle 185   {
6277 03 Jun 21 nicklas 186     if (!Wizard.validateCurrentStep()) return;
6277 03 Jun 21 nicklas 187     xport.doExport(true);
4014 06 Jul 16 olle 188   }
6277 03 Jun 21 nicklas 189   
6277 03 Jun 21 nicklas 190   xport.goExport = function()
4014 06 Jul 16 olle 191   {
6277 03 Jun 21 nicklas 192     xport.doExport(false);
4014 06 Jul 16 olle 193   }
4014 06 Jul 16 olle 194
6277 03 Jun 21 nicklas 195   xport.doExport = function(preview)
4014 06 Jul 16 olle 196   {
4014 06 Jul 16 olle 197     var frm = document.forms['reggie'];
6277 03 Jun 21 nicklas 198     var url = '../ReferralGenerator.servlet?ID='+App.getSessionId();
6277 03 Jun 21 nicklas 199     url += '&cmd=ExportToBD47';
4014 06 Jul 16 olle 200
6277 03 Jun 21 nicklas 201     var submitInfo = {};
6277 03 Jun 21 nicklas 202     submitInfo.site = frm.site.value;
6277 03 Jun 21 nicklas 203     submitInfo.kitType = frm.kitType.value;
6277 03 Jun 21 nicklas 204     submitInfo.startNumber = parseInt(frm.startNumber.value);
6277 03 Jun 21 nicklas 205     submitInfo.numKits = parseInt(frm.numKits.value);
6277 03 Jun 21 nicklas 206     
6277 03 Jun 21 nicklas 207     Doc.hide('previewWrapper');
6277 03 Jun 21 nicklas 208     if (preview) 
6277 03 Jun 21 nicklas 209     {
6277 03 Jun 21 nicklas 210       url += '&preview=1';
6277 03 Jun 21 nicklas 211       Wizard.asyncJsonRequest(url, xport.onPreviewLoaded, 'POST', JSON.stringify(submitInfo));
6277 03 Jun 21 nicklas 212     }
6277 03 Jun 21 nicklas 213     else
6277 03 Jun 21 nicklas 214     {
6277 03 Jun 21 nicklas 215       Wizard.asyncJsonRequest(url, xport.submissionResults, 'POST', JSON.stringify(submitInfo));
6277 03 Jun 21 nicklas 216     }
4014 06 Jul 16 olle 217   }
6277 03 Jun 21 nicklas 218   
6277 03 Jun 21 nicklas 219   xport.submissionResults = function(response)
4014 06 Jul 16 olle 220   {
6277 03 Jun 21 nicklas 221     var msg = response.messages;
6864 04 Nov 22 nicklas 222     msg[msg.length] = '[HTML]BD47 file save to: '+response.bd47Path;
6864 04 Nov 22 nicklas 223     msg[msg.length] = '[HTML]Download as <span id="downloadBd47CSV" class="link" data-format="csv" title="Download as CSV">CSV</span>'+ 
6864 04 Nov 22 nicklas 224       ' <span id="downloadBd47ZIP" class="link" data-format="zip" title="Download as ZIP">ZIP</span>';
6277 03 Jun 21 nicklas 225     msg[msg.length] = '[HTML]<span id="viewLogFile2" class="link">View log file</span>';
6277 03 Jun 21 nicklas 226     Wizard.showFinalMessage(msg);
6277 03 Jun 21 nicklas 227     Data.set('viewLogFile2', 'file-id', response.logFile);
6864 04 Nov 22 nicklas 228     Data.set('downloadBd47CSV', 'file-path', response.bd47Path);
6864 04 Nov 22 nicklas 229     Data.set('downloadBd47ZIP', 'file-id', response.bd47File);
6277 03 Jun 21 nicklas 230     Events.addEventHandler('viewLogFile2', 'click', xport.viewLogFile);
6864 04 Nov 22 nicklas 231     Events.addEventHandler('downloadBd47CSV', 'click', xport.downloadBD47File);
6864 04 Nov 22 nicklas 232     Events.addEventHandler('downloadBd47ZIP', 'click', xport.downloadBD47File);
6277 03 Jun 21 nicklas 233     Doc.show('gorestart');
4014 06 Jul 16 olle 234   }
4014 06 Jul 16 olle 235
6277 03 Jun 21 nicklas 236   
6277 03 Jun 21 nicklas 237   xport.onPreviewLoaded = function(response)
6277 03 Jun 21 nicklas 238   {    
6277 03 Jun 21 nicklas 239     var allLines = response.csv.split('\n');
6277 03 Jun 21 nicklas 240     var maxLine = allLines.length - 2; // First line is a header line
6277 03 Jun 21 nicklas 241     
6277 03 Jun 21 nicklas 242     var html = '<tr><th>'+allLines[0].replace(/;/g, '</th><th>')+'</th></tr>';
6277 03 Jun 21 nicklas 243     for (var i = 1 ; i <= maxLine; i++)
4014 06 Jul 16 olle 244     {
6277 03 Jun 21 nicklas 245       html += '<tr><td>'+allLines[i].replace(/;/g, '</td><td>')+'</td></tr>';
4014 06 Jul 16 olle 246     }
6277 03 Jun 21 nicklas 247
6277 03 Jun 21 nicklas 248     previewList.innerHTML = '<table>'+html+'</table>';
6277 03 Jun 21 nicklas 249     Doc.show('previewWrapper');
4014 06 Jul 16 olle 250   }
4014 06 Jul 16 olle 251
6277 03 Jun 21 nicklas 252     
6277 03 Jun 21 nicklas 253   return xport;
4014 06 Jul 16 olle 254 }();
4014 06 Jul 16 olle 255
6277 03 Jun 21 nicklas 256 Doc.onLoad(Xport.initPage);
4014 06 Jul 16 olle 257