extensions/net.sf.basedb.reggie/trunk/resources/libprep/lib_registration.js

Code
Comments
Other
Rev Date Author Line
2675 17 Sep 14 nicklas 1 var LibReg = function()
2675 17 Sep 14 nicklas 2 {
2675 17 Sep 14 nicklas 3   var libreg = {};
3851 14 Apr 16 nicklas 4   var debug = 0;
2675 17 Sep 14 nicklas 5   
2675 17 Sep 14 nicklas 6   var libCommentsIsValid = false;
2675 17 Sep 14 nicklas 7   
2675 17 Sep 14 nicklas 8   // Page initialization
2675 17 Sep 14 nicklas 9   libreg.initPage = function()
2675 17 Sep 14 nicklas 10   {
2675 17 Sep 14 nicklas 11     // Step 1
2675 17 Sep 14 nicklas 12     Events.addEventHandler('bioplate', 'change', libreg.bioPlateOnChange);
2675 17 Sep 14 nicklas 13     Events.addEventHandler('outcomeSuccess', 'click', libreg.outcomeOnChange);
2675 17 Sep 14 nicklas 14     Events.addEventHandler('outcomeFailed', 'click', libreg.outcomeOnChange);
2675 17 Sep 14 nicklas 15     Events.addEventHandler('step-1', 'wizard-validate', libreg.validateStep1);
2675 17 Sep 14 nicklas 16     
2675 17 Sep 14 nicklas 17     // Step 2
2675 17 Sep 14 nicklas 18     Events.addEventHandler('step-2', 'wizard-initialize', libreg.initializeStep2);
2675 17 Sep 14 nicklas 19     Events.addEventHandler('step-2', 'wizard-validate', libreg.validateStep2);
2675 17 Sep 14 nicklas 20     Events.addEventHandler('amplificationDate', 'blur', Wizard.validateDate);
2675 17 Sep 14 nicklas 21     Events.addEventHandler('cleanupDate', 'blur', Wizard.validateDate);
2675 17 Sep 14 nicklas 22     Events.addEventHandler('libComments', 'blur', libreg.libCommentsOnChange);
2675 17 Sep 14 nicklas 23     Wizard.initFileSelectionField('qubitcsv');
2675 17 Sep 14 nicklas 24     Wizard.initFileSelectionField('welltable');
2675 17 Sep 14 nicklas 25     Wizard.initFileSelectionField('calipergxd');
2675 17 Sep 14 nicklas 26     Wizard.initFileSelectionField('caliperpdf');
2675 17 Sep 14 nicklas 27     Events.addEventHandler('welltable', 'change', libreg.prevalidateWellTable);
2675 17 Sep 14 nicklas 28     Events.addEventHandler('qubitcsv', 'change', libreg.prevalidateWellTable);
3834 11 Apr 16 nicklas 29     Events.addEventHandler('libSize', 'change', Wizard.validateNumber);
3834 11 Apr 16 nicklas 30     Events.addEventHandler('libSize', 'keypress', Events.numberOnly);
2675 17 Sep 14 nicklas 31     
2675 17 Sep 14 nicklas 32     if (debug)
2675 17 Sep 14 nicklas 33     {
2675 17 Sep 14 nicklas 34       Buttons.addClickHandler('btnFakeQubit', libreg.generateFakeFile);
2675 17 Sep 14 nicklas 35       Buttons.addClickHandler('btnFakeWelltable', libreg.generateFakeFile);
2675 17 Sep 14 nicklas 36     }
2675 17 Sep 14 nicklas 37
2675 17 Sep 14 nicklas 38     // Navigation
2675 17 Sep 14 nicklas 39     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
2675 17 Sep 14 nicklas 40     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
2675 17 Sep 14 nicklas 41     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
2675 17 Sep 14 nicklas 42     Buttons.addClickHandler('goregister', Wizard.goRegister);
2675 17 Sep 14 nicklas 43     
2675 17 Sep 14 nicklas 44     // Final registration
2675 17 Sep 14 nicklas 45     Events.addEventHandler('wizard', 'wizard-submit', libreg.submit);
2675 17 Sep 14 nicklas 46     
2675 17 Sep 14 nicklas 47     var url = '../LibPrep.servlet?ID='+App.getSessionId();
2675 17 Sep 14 nicklas 48     url += '&cmd=GetLibraryPlatesForLibPrep';
2675 17 Sep 14 nicklas 49     Wizard.showLoadingAnimation('Loading Library plates...');
2675 17 Sep 14 nicklas 50     Wizard.asyncJsonRequest(url, libreg.initializeStep1);
2675 17 Sep 14 nicklas 51   }
2675 17 Sep 14 nicklas 52
2675 17 Sep 14 nicklas 53
2675 17 Sep 14 nicklas 54   libreg.initializeStep1 = function(response)
2675 17 Sep 14 nicklas 55   {
2675 17 Sep 14 nicklas 56     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 57     var bioplates = response.bioplates;
2675 17 Sep 14 nicklas 58
2675 17 Sep 14 nicklas 59     var plates = frm.bioplate;
2675 17 Sep 14 nicklas 60     if (bioplates.length > 0)
2675 17 Sep 14 nicklas 61     {
2675 17 Sep 14 nicklas 62       for (var i=0; i < bioplates.length; i++)
2675 17 Sep 14 nicklas 63       {
2675 17 Sep 14 nicklas 64         var bioplate = bioplates[i];
3725 27 Jan 16 nicklas 65         var name = bioplate.name;
5883 26 Mar 20 nicklas 66         var warning = bioplate.numFiles == 0 ? ' ( ! )' : '';
3725 27 Jan 16 nicklas 67         var option = new Option(name + warning, bioplate.id);
2675 17 Sep 14 nicklas 68         option.bioplate = bioplate;
2675 17 Sep 14 nicklas 69         plates.options[plates.length] = option;
2675 17 Sep 14 nicklas 70       }
2675 17 Sep 14 nicklas 71     }
2675 17 Sep 14 nicklas 72     else
2675 17 Sep 14 nicklas 73     {
5883 26 Mar 20 nicklas 74       Wizard.setFatalError('No Library bioplates available for processing.');
2675 17 Sep 14 nicklas 75       return;
2675 17 Sep 14 nicklas 76     }
2675 17 Sep 14 nicklas 77
2675 17 Sep 14 nicklas 78     libreg.bioPlateOnChange();
2675 17 Sep 14 nicklas 79     libreg.outcomeOnChange();
2675 17 Sep 14 nicklas 80     frm.bioplate.focus();
2675 17 Sep 14 nicklas 81
2675 17 Sep 14 nicklas 82     Doc.show('step-1');
2675 17 Sep 14 nicklas 83     Doc.show('gonext');
2675 17 Sep 14 nicklas 84   }
2675 17 Sep 14 nicklas 85   
2675 17 Sep 14 nicklas 86   libreg.bioPlateOnChange = function()
2675 17 Sep 14 nicklas 87   {
2675 17 Sep 14 nicklas 88     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 89     var selectedPlate = frm.bioplate[frm.bioplate.selectedIndex].bioplate;
5883 26 Mar 20 nicklas 90     if (selectedPlate.numFiles == 0)
2675 17 Sep 14 nicklas 91     {
2675 17 Sep 14 nicklas 92       Wizard.setInputStatus('bioplate', 'warning', 'No quality control PDF has been registered for this plate');
2675 17 Sep 14 nicklas 93     }
2675 17 Sep 14 nicklas 94     else
2675 17 Sep 14 nicklas 95     {
2675 17 Sep 14 nicklas 96       Wizard.setInputStatus('bioplate', 'valid');
2675 17 Sep 14 nicklas 97     }
2675 17 Sep 14 nicklas 98   }
2675 17 Sep 14 nicklas 99
2675 17 Sep 14 nicklas 100   libreg.outcomeOnChange = function()
2675 17 Sep 14 nicklas 101   {
2675 17 Sep 14 nicklas 102     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 103     var failed = Doc.element('outcomeFailed').checked
3834 11 Apr 16 nicklas 104     Doc.element('useCaliper').disabled = failed;
2675 17 Sep 14 nicklas 105     if (failed)
2675 17 Sep 14 nicklas 106     {
2675 17 Sep 14 nicklas 107       Doc.addClass(frm.libComments, 'required');
2675 17 Sep 14 nicklas 108     }
2675 17 Sep 14 nicklas 109     else
2675 17 Sep 14 nicklas 110     {
2675 17 Sep 14 nicklas 111       Doc.removeClass(frm.libComments, 'required');
2675 17 Sep 14 nicklas 112     }
2675 17 Sep 14 nicklas 113   }
2675 17 Sep 14 nicklas 114
2675 17 Sep 14 nicklas 115   
2675 17 Sep 14 nicklas 116   libreg.validateStep1 = function(event)
2675 17 Sep 14 nicklas 117   {}
2675 17 Sep 14 nicklas 118   
2675 17 Sep 14 nicklas 119   libreg.initializeStep2 = function()
2675 17 Sep 14 nicklas 120   {
2675 17 Sep 14 nicklas 121     var frm = document.forms['reggie'];  
2675 17 Sep 14 nicklas 122
2675 17 Sep 14 nicklas 123     var failed = Doc.element('outcomeFailed').checked;
3834 11 Apr 16 nicklas 124     var useCaliper = !failed && Doc.element('useCaliper').checked;
2675 17 Sep 14 nicklas 125     Wizard.setCurrentStep(2);
2675 17 Sep 14 nicklas 126     if (failed)
2675 17 Sep 14 nicklas 127     {
2675 17 Sep 14 nicklas 128       Wizard.showGoNextConfirmation(true, 'Check to verify registration of failure.');
2675 17 Sep 14 nicklas 129       libreg.libCommentsOnChange();
3834 11 Apr 16 nicklas 130       Doc.hide('caliperFilesSection');
3834 11 Apr 16 nicklas 131       Doc.hide('qubitFilesSection');
3834 11 Apr 16 nicklas 132       Doc.hide('noCaliperFilesSection');
2675 17 Sep 14 nicklas 133     }
3834 11 Apr 16 nicklas 134     else if (!useCaliper) 
3834 11 Apr 16 nicklas 135     {
3834 11 Apr 16 nicklas 136       Doc.hide('caliperFilesSection');
3834 11 Apr 16 nicklas 137     }
3834 11 Apr 16 nicklas 138     else
3834 11 Apr 16 nicklas 139     {
3834 11 Apr 16 nicklas 140       Doc.hide('noCaliperFilesSection');
3834 11 Apr 16 nicklas 141     }
3834 11 Apr 16 nicklas 142     
2675 17 Sep 14 nicklas 143     Doc.show('gocancel');
2675 17 Sep 14 nicklas 144     Doc.show('goregister');
2675 17 Sep 14 nicklas 145     
2675 17 Sep 14 nicklas 146     var libInfo = libreg.getStoredInfo(frm.bioplate.value);
2675 17 Sep 14 nicklas 147     if (libInfo)
2675 17 Sep 14 nicklas 148     {
5883 26 Mar 20 nicklas 149       if (libInfo.amplificationDate) 
2675 17 Sep 14 nicklas 150       {
5883 26 Mar 20 nicklas 151         frm.amplificationDate.value = libInfo.amplificationDate;
5883 26 Mar 20 nicklas 152         frm.amplificationOperator.value = libInfo.amplificationOperator;
5883 26 Mar 20 nicklas 153         frm.amplificationDate.focus();
2675 17 Sep 14 nicklas 154       }
5883 26 Mar 20 nicklas 155       if (libInfo.cleanupDate) 
2675 17 Sep 14 nicklas 156       {
5883 26 Mar 20 nicklas 157         frm.cleanupDate.value = libInfo.cleanupDate;
5883 26 Mar 20 nicklas 158         frm.cleanupOperator.value = libInfo.cleanupOperator;
5883 26 Mar 20 nicklas 159         frm.cleanupDate.focus();
2675 17 Sep 14 nicklas 160       }
2675 17 Sep 14 nicklas 161       if (!failed)
2675 17 Sep 14 nicklas 162       {
3834 11 Apr 16 nicklas 163         if (useCaliper)
2675 17 Sep 14 nicklas 164         {
3834 11 Apr 16 nicklas 165           if (libInfo.wellTable)
3834 11 Apr 16 nicklas 166           {
3834 11 Apr 16 nicklas 167             frm.welltable.value = libInfo.wellTable;
3834 11 Apr 16 nicklas 168             Events.sendChangeEvent('welltable');
3834 11 Apr 16 nicklas 169           }
3834 11 Apr 16 nicklas 170           if (libInfo.caliperGxd)
3834 11 Apr 16 nicklas 171           {
3834 11 Apr 16 nicklas 172             frm.calipergxd.value = libInfo.caliperGxd;
3834 11 Apr 16 nicklas 173             Events.sendChangeEvent('calipergxd');
3834 11 Apr 16 nicklas 174           }
3834 11 Apr 16 nicklas 175           if (libInfo.caliperPdf)
3834 11 Apr 16 nicklas 176           {
3834 11 Apr 16 nicklas 177             frm.caliperpdf.value = libInfo.caliperPdf;
3834 11 Apr 16 nicklas 178             Events.sendChangeEvent('caliperpdf');
3834 11 Apr 16 nicklas 179           }
2675 17 Sep 14 nicklas 180         }
3834 11 Apr 16 nicklas 181         else
2675 17 Sep 14 nicklas 182         {
3834 11 Apr 16 nicklas 183           Events.sendChangeEvent('libSize');  
2675 17 Sep 14 nicklas 184         }
2675 17 Sep 14 nicklas 185         if (libInfo.qubitCsv)
2675 17 Sep 14 nicklas 186         {
2675 17 Sep 14 nicklas 187           frm.qubitcsv.value = libInfo.qubitCsv;
2675 17 Sep 14 nicklas 188           Events.sendChangeEvent('qubitcsv');
2675 17 Sep 14 nicklas 189         }
2675 17 Sep 14 nicklas 190       }
2675 17 Sep 14 nicklas 191       if (libInfo.libComments) 
2675 17 Sep 14 nicklas 192       {
2675 17 Sep 14 nicklas 193         frm.libComments.value = libInfo.libComments;
2675 17 Sep 14 nicklas 194         frm.libComments.focus();
2675 17 Sep 14 nicklas 195       }
2675 17 Sep 14 nicklas 196     }
2675 17 Sep 14 nicklas 197     
2675 17 Sep 14 nicklas 198     var plateName = frm.bioplate[frm.bioplate.selectedIndex].bioplate.name;
5300 14 Feb 19 nicklas 199     Data.set('qubitcsv', 'name-filter', plateName + '%.csv|'+plateName+'%.xlsx');
2675 17 Sep 14 nicklas 200     Data.set('welltable', 'name-filter', plateName + '%.csv');
2675 17 Sep 14 nicklas 201     Data.set('calipergxd', 'name-filter', plateName + '%.gxd');
2675 17 Sep 14 nicklas 202     Data.set('caliperpdf', 'name-filter', plateName + '%.pdf');
2675 17 Sep 14 nicklas 203     
5883 26 Mar 20 nicklas 204     frm.amplificationDate.focus();
2675 17 Sep 14 nicklas 205
2675 17 Sep 14 nicklas 206     // Load Library protocols
5883 26 Mar 20 nicklas 207     Reggie.loadProtocols('LIBRARY_PROTOCOL', 'libProtocol', 'LIBPREP_TARGET', 'Manual');
2675 17 Sep 14 nicklas 208
2675 17 Sep 14 nicklas 209     if (debug && !failed)
2675 17 Sep 14 nicklas 210     {
2925 13 Nov 14 nicklas 211       Wizard.showDebugTools();
2675 17 Sep 14 nicklas 212     }
2675 17 Sep 14 nicklas 213   }
2675 17 Sep 14 nicklas 214
2675 17 Sep 14 nicklas 215   libreg.prevalidateWellTable = function()
2675 17 Sep 14 nicklas 216   {
2675 17 Sep 14 nicklas 217     var frm = document.forms['reggie'];
3834 11 Apr 16 nicklas 218     var useCaliper = frm.useCaliper.checked;
3834 11 Apr 16 nicklas 219
2675 17 Sep 14 nicklas 220     var wellTable = frm.welltable.value;
2675 17 Sep 14 nicklas 221     var qubitCsv = frm.qubitcsv.value;
2675 17 Sep 14 nicklas 222
2675 17 Sep 14 nicklas 223     if (wellTable) Wizard.setInputStatus('welltable');
2675 17 Sep 14 nicklas 224     if (qubitCsv) Wizard.setInputStatus('qubitcsv');
2675 17 Sep 14 nicklas 225     Data.set('welltable', 'valid', 0);
2675 17 Sep 14 nicklas 226     Data.set('qubitcsv', 'valid', 0);
2675 17 Sep 14 nicklas 227
3834 11 Apr 16 nicklas 228     if (useCaliper && !wellTable || !qubitCsv) return;
2675 17 Sep 14 nicklas 229     
2675 17 Sep 14 nicklas 230     var url = '../LibPrep.servlet?ID='+App.getSessionId();
3834 11 Apr 16 nicklas 231     url += '&cmd='+(useCaliper ? 'PreValidateCaliperWellTable' : 'PreValidateQubitCsv');
2675 17 Sep 14 nicklas 232     url += '&bioplate='+frm.bioplate.value;
3834 11 Apr 16 nicklas 233     if (useCaliper)
3834 11 Apr 16 nicklas 234     {
3834 11 Apr 16 nicklas 235       url += '&csv='+encodeURIComponent(wellTable);
3834 11 Apr 16 nicklas 236     }
2675 17 Sep 14 nicklas 237     url += '&qubit='+encodeURIComponent(qubitCsv);
2675 17 Sep 14 nicklas 238     
3834 11 Apr 16 nicklas 239     if (useCaliper) Wizard.setInputStatus('welltable', 'checking', 'Checking...');
2675 17 Sep 14 nicklas 240     Wizard.setInputStatus('qubitcsv', 'checking', 'Checking...');
2675 17 Sep 14 nicklas 241     Wizard.asyncJsonRequest(url, libreg.onWellTableValidated, 'POST');
2675 17 Sep 14 nicklas 242   }
2675 17 Sep 14 nicklas 243
2675 17 Sep 14 nicklas 244   libreg.onWellTableValidated = function(response)
2675 17 Sep 14 nicklas 245   {
2675 17 Sep 14 nicklas 246     var qubit = response.qubit;
2675 17 Sep 14 nicklas 247     var welltable = response.welltable;
2675 17 Sep 14 nicklas 248     
2675 17 Sep 14 nicklas 249     Wizard.setInputStatus('welltable');
2675 17 Sep 14 nicklas 250     Wizard.setInputStatus('qubitcsv');
2675 17 Sep 14 nicklas 251
2675 17 Sep 14 nicklas 252     Wizard.showFinalMessage(response.messages);
2675 17 Sep 14 nicklas 253     
2675 17 Sep 14 nicklas 254     if (qubit.valid)
2675 17 Sep 14 nicklas 255     {
2675 17 Sep 14 nicklas 256       Wizard.setInputStatus('qubitcsv', qubit.warnings > 0 ? 'warning' : 'valid');
2675 17 Sep 14 nicklas 257       Data.set('qubitcsv', 'valid', 1);
2675 17 Sep 14 nicklas 258     }
2675 17 Sep 14 nicklas 259     else
2675 17 Sep 14 nicklas 260     {
2675 17 Sep 14 nicklas 261       Wizard.setInputStatus('qubitcsv', 'invalid');
2675 17 Sep 14 nicklas 262     }
2675 17 Sep 14 nicklas 263     
2675 17 Sep 14 nicklas 264     if (welltable)
2675 17 Sep 14 nicklas 265     {
2675 17 Sep 14 nicklas 266       if (welltable.valid)
2675 17 Sep 14 nicklas 267       {
2675 17 Sep 14 nicklas 268         Wizard.setInputStatus('welltable', welltable.warnings > 0 ? 'warning' : 'valid');
2675 17 Sep 14 nicklas 269         Data.set('welltable', 'valid', 1);
2675 17 Sep 14 nicklas 270       }
2675 17 Sep 14 nicklas 271       else
2675 17 Sep 14 nicklas 272       {
2675 17 Sep 14 nicklas 273         Wizard.setInputStatus('welltable', 'invalid');
2675 17 Sep 14 nicklas 274       }
2675 17 Sep 14 nicklas 275     }
2675 17 Sep 14 nicklas 276   }
2675 17 Sep 14 nicklas 277
2675 17 Sep 14 nicklas 278   var fileField;
2675 17 Sep 14 nicklas 279   libreg.generateFakeFile = function(event)
2675 17 Sep 14 nicklas 280   {
2675 17 Sep 14 nicklas 281     var target = event.currentTarget;
2675 17 Sep 14 nicklas 282     
2675 17 Sep 14 nicklas 283     if (location.protocol == 'https:')
2675 17 Sep 14 nicklas 284     {
2675 17 Sep 14 nicklas 285       Forms.showNotification(target, "For security reasons, this function can't be used on HTTPS servers.");
2675 17 Sep 14 nicklas 286       return;
2675 17 Sep 14 nicklas 287     }
2675 17 Sep 14 nicklas 288     
2675 17 Sep 14 nicklas 289     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 290     fileField = Data.get(target, 'file-field');
2675 17 Sep 14 nicklas 291     var path = Data.get(fileField, 'directory');
2675 17 Sep 14 nicklas 292
2675 17 Sep 14 nicklas 293     var url = '../LibPrep.servlet?ID='+App.getSessionId();
2675 17 Sep 14 nicklas 294     url += '&cmd='+Data.get(target, 'cmd');
2675 17 Sep 14 nicklas 295     url += '&bioplate='+frm.bioplate.value;
2675 17 Sep 14 nicklas 296     url += '&path='+encodeURIComponent(path);
2675 17 Sep 14 nicklas 297     
2675 17 Sep 14 nicklas 298     Wizard.setInputStatus(fileField, 'checking', 'Generating fake file...');
2675 17 Sep 14 nicklas 299     Wizard.asyncJsonRequest(url, libreg.fakeFileGenerated, 'POST');
2675 17 Sep 14 nicklas 300   }
2675 17 Sep 14 nicklas 301   
2675 17 Sep 14 nicklas 302   libreg.fakeFileGenerated = function(response)
2675 17 Sep 14 nicklas 303   {
2675 17 Sep 14 nicklas 304     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 305     var file = response.file;
2675 17 Sep 14 nicklas 306     frm[fileField].value = file.path;
2675 17 Sep 14 nicklas 307     Events.sendChangeEvent(fileField);
2675 17 Sep 14 nicklas 308   }
2675 17 Sep 14 nicklas 309
2675 17 Sep 14 nicklas 310   libreg.libCommentsOnChange = function()
2675 17 Sep 14 nicklas 311   {
2675 17 Sep 14 nicklas 312     var failed = Doc.element('outcomeFailed').checked;
2675 17 Sep 14 nicklas 313     if (!failed) return;
2675 17 Sep 14 nicklas 314
2675 17 Sep 14 nicklas 315     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 316     libCommentsIsValid = false;
2675 17 Sep 14 nicklas 317     Wizard.setInputStatus('libComments');
2675 17 Sep 14 nicklas 318     
2675 17 Sep 14 nicklas 319     var comments = frm.libComments.value;
2675 17 Sep 14 nicklas 320     if (comments == '')
2675 17 Sep 14 nicklas 321     {
2675 17 Sep 14 nicklas 322       Wizard.setInputStatus('libComments', 'invalid', 'Missing');
2675 17 Sep 14 nicklas 323       return;
2675 17 Sep 14 nicklas 324     }
2675 17 Sep 14 nicklas 325
2675 17 Sep 14 nicklas 326     Wizard.setInputStatus('libComments', 'valid');
2675 17 Sep 14 nicklas 327     libCommentsIsValid = true;
2675 17 Sep 14 nicklas 328   }
2675 17 Sep 14 nicklas 329
2675 17 Sep 14 nicklas 330   libreg.validateStep2 = function(event)
2675 17 Sep 14 nicklas 331   {
2675 17 Sep 14 nicklas 332     var valid = true;
5883 26 Mar 20 nicklas 333     valid &= Wizard.isValid('amplificationDate');
5883 26 Mar 20 nicklas 334     valid &= Wizard.isValid('cleanupDate');
2675 17 Sep 14 nicklas 335     
2675 17 Sep 14 nicklas 336     var failed = Doc.element('outcomeFailed').checked;
3834 11 Apr 16 nicklas 337     var useCaliper = Doc.element('useCaliper').checked;
2675 17 Sep 14 nicklas 338     if (failed)
2675 17 Sep 14 nicklas 339     {
2675 17 Sep 14 nicklas 340       valid &= libCommentsIsValid;
2675 17 Sep 14 nicklas 341     }
2675 17 Sep 14 nicklas 342     else
2675 17 Sep 14 nicklas 343     {
2675 17 Sep 14 nicklas 344       valid &= Wizard.isValid('qubitcsv');
3834 11 Apr 16 nicklas 345       if (useCaliper)
3834 11 Apr 16 nicklas 346       {
3834 11 Apr 16 nicklas 347         valid &= Wizard.isValid('welltable');
3834 11 Apr 16 nicklas 348       }
3834 11 Apr 16 nicklas 349       else
3834 11 Apr 16 nicklas 350       {
3834 11 Apr 16 nicklas 351         valid &= Wizard.isValid('libSize');
3834 11 Apr 16 nicklas 352       }
2675 17 Sep 14 nicklas 353     }
2675 17 Sep 14 nicklas 354     
2675 17 Sep 14 nicklas 355     if (!valid) event.preventDefault();
2675 17 Sep 14 nicklas 356   }
2675 17 Sep 14 nicklas 357
2675 17 Sep 14 nicklas 358   
2675 17 Sep 14 nicklas 359   libreg.submit = function()
2675 17 Sep 14 nicklas 360   {
2675 17 Sep 14 nicklas 361     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 362
2675 17 Sep 14 nicklas 363     var submitInfo = {};
2675 17 Sep 14 nicklas 364     submitInfo.bioplate = parseInt(frm.bioplate.value, 10);
2675 17 Sep 14 nicklas 365
2675 17 Sep 14 nicklas 366     var failed = Doc.element('outcomeFailed').checked;
3834 11 Apr 16 nicklas 367     var useCaliper = Doc.element('useCaliper').checked;
2675 17 Sep 14 nicklas 368     submitInfo.failed = failed;
2675 17 Sep 14 nicklas 369       
2675 17 Sep 14 nicklas 370     if (!failed)
2675 17 Sep 14 nicklas 371     {
2675 17 Sep 14 nicklas 372       libreg.saveToLocalStorage(frm.bioplate.value);
3834 11 Apr 16 nicklas 373       if (useCaliper)
3834 11 Apr 16 nicklas 374       {
3834 11 Apr 16 nicklas 375         submitInfo.wellTableCsv = frm.welltable.value;
3834 11 Apr 16 nicklas 376         submitInfo.caliperGxd = frm.calipergxd.value;
3834 11 Apr 16 nicklas 377         submitInfo.caliperPdf = frm.caliperpdf.value;
3834 11 Apr 16 nicklas 378       }
3834 11 Apr 16 nicklas 379       else
3834 11 Apr 16 nicklas 380       {
3835 11 Apr 16 nicklas 381         submitInfo.libSize = parseFloat(frm.libSize.value);
3834 11 Apr 16 nicklas 382       }
2675 17 Sep 14 nicklas 383       submitInfo.qubitCsv = frm.qubitcsv.value;
2675 17 Sep 14 nicklas 384     }
5883 26 Mar 20 nicklas 385     submitInfo.amplificationDate = frm.amplificationDate.value;
5883 26 Mar 20 nicklas 386     submitInfo.amplificationOperator = frm.amplificationOperator.value;
5883 26 Mar 20 nicklas 387     submitInfo.cleanupDate = frm.cleanupDate.value;
5883 26 Mar 20 nicklas 388     submitInfo.cleanupOperator = frm.cleanupOperator.value;
2675 17 Sep 14 nicklas 389     submitInfo.libProtocol = parseInt(frm.libProtocol.value, 10);
2675 17 Sep 14 nicklas 390     submitInfo.libComments = frm.libComments.value;
2675 17 Sep 14 nicklas 391     
2675 17 Sep 14 nicklas 392     var  url = '../LibPrep.servlet?ID='+App.getSessionId();
2675 17 Sep 14 nicklas 393     url += '&cmd=ImportLibPrepResults';
2675 17 Sep 14 nicklas 394     Wizard.showLoadingAnimation('Performing registration...');
2675 17 Sep 14 nicklas 395     Wizard.asyncJsonRequest(url, libreg.submissionResults, 'POST', JSON.stringify(submitInfo));
2675 17 Sep 14 nicklas 396   }
2675 17 Sep 14 nicklas 397
2675 17 Sep 14 nicklas 398   libreg.submissionResults = function(response)
2675 17 Sep 14 nicklas 399   {
2675 17 Sep 14 nicklas 400     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 401     libreg.removeFromLocalStorage(frm.bioplate.value);
2675 17 Sep 14 nicklas 402     Wizard.showFinalMessage(response.messages);
2675 17 Sep 14 nicklas 403     Doc.show('gorestart');
2675 17 Sep 14 nicklas 404   }
2675 17 Sep 14 nicklas 405
2675 17 Sep 14 nicklas 406   /**
2675 17 Sep 14 nicklas 407     Save as much information as possible about the library registration.
2675 17 Sep 14 nicklas 408     The information is stored in the localStorage()
2675 17 Sep 14 nicklas 409     under the key 'reggie.libplate.<id>.info' where
2675 17 Sep 14 nicklas 410     <id> is the ID of the library plate.
2675 17 Sep 14 nicklas 411   */
2675 17 Sep 14 nicklas 412   libreg.saveToLocalStorage = function(libPlateId)
2675 17 Sep 14 nicklas 413   {
2675 17 Sep 14 nicklas 414     if (!window.localStorage) return;
2675 17 Sep 14 nicklas 415
2675 17 Sep 14 nicklas 416     var frm = document.forms['reggie'];
2675 17 Sep 14 nicklas 417     var libInfo = {};
2675 17 Sep 14 nicklas 418     libInfo.id = libPlateId;
5883 26 Mar 20 nicklas 419     libInfo.amplificationDate = frm.amplificationDate.value;
5883 26 Mar 20 nicklas 420     libInfo.amplificationOperator = frm.amplificationOperator.value;
5883 26 Mar 20 nicklas 421     libInfo.cleanupDate = frm.cleanupDate.value;
5883 26 Mar 20 nicklas 422     libInfo.cleanupOperator = frm.cleanupOperator.value;
2675 17 Sep 14 nicklas 423     libInfo.wellTable = frm.welltable.value;
2675 17 Sep 14 nicklas 424     libInfo.caliperGxd = frm.calipergxd.value;
2675 17 Sep 14 nicklas 425     libInfo.caliperPdf = frm.caliperpdf.value;
2675 17 Sep 14 nicklas 426     libInfo.qubitCsv = frm.qubitcsv.value;
2675 17 Sep 14 nicklas 427     libInfo.libProtocol = frm.libProtocol.value;
2675 17 Sep 14 nicklas 428     libInfo.libComments = frm.libComments.value;
2675 17 Sep 14 nicklas 429     
2675 17 Sep 14 nicklas 430     window.localStorage.setItem('reggie.libplate.' + libPlateId + '.info', JSON.stringify(libInfo));
2675 17 Sep 14 nicklas 431     if (debug)
2675 17 Sep 14 nicklas 432     {
2675 17 Sep 14 nicklas 433       App.debug(libPlateId + ': ' + window.localStorage.getItem('reggie.libplate.' + libPlateId + '.info'));
2675 17 Sep 14 nicklas 434     }
2675 17 Sep 14 nicklas 435   }
2675 17 Sep 14 nicklas 436   
2675 17 Sep 14 nicklas 437
2675 17 Sep 14 nicklas 438   libreg.removeFromLocalStorage = function(libPlateId)
2675 17 Sep 14 nicklas 439   {
2675 17 Sep 14 nicklas 440     if (!window.localStorage) return;
2675 17 Sep 14 nicklas 441     if (debug) App.debug('removeFromLocalStorage:' + libPlateId);
2675 17 Sep 14 nicklas 442     window.localStorage.removeItem('reggie.libplate.' + libPlateId + '.info');
2675 17 Sep 14 nicklas 443   }
2675 17 Sep 14 nicklas 444
2675 17 Sep 14 nicklas 445   libreg.getStoredInfo = function(libPlateId)
2675 17 Sep 14 nicklas 446   {
2675 17 Sep 14 nicklas 447     if (!window.localStorage) return null;
2675 17 Sep 14 nicklas 448     var stored = null;
2675 17 Sep 14 nicklas 449     try
2675 17 Sep 14 nicklas 450     {
2675 17 Sep 14 nicklas 451       var info = window.localStorage.getItem('reggie.libplate.' + libPlateId + '.info');
2675 17 Sep 14 nicklas 452       if (debug) App.debug(libPlateId + ': ' + info);
2675 17 Sep 14 nicklas 453       stored = JSON.parse(info);
2675 17 Sep 14 nicklas 454     }
2675 17 Sep 14 nicklas 455     catch (e)
2675 17 Sep 14 nicklas 456     {
2675 17 Sep 14 nicklas 457       App.debug('Could not load stored information for lib plate ' + libPlateId + ': ' + e);
2675 17 Sep 14 nicklas 458     }
2675 17 Sep 14 nicklas 459     return stored;
2675 17 Sep 14 nicklas 460   }
2675 17 Sep 14 nicklas 461
2675 17 Sep 14 nicklas 462   
2675 17 Sep 14 nicklas 463   return libreg;
2675 17 Sep 14 nicklas 464 }();
2675 17 Sep 14 nicklas 465
2675 17 Sep 14 nicklas 466 Doc.onLoad(LibReg.initPage);
2675 17 Sep 14 nicklas 467