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

Code
Comments
Other
Rev Date Author Line
2669 15 Sep 14 nicklas 1 var LibQC = function()
2669 15 Sep 14 nicklas 2 {
2669 15 Sep 14 nicklas 3   var libqc = {};
2702 26 Sep 14 nicklas 4   var debug = 0;
2669 15 Sep 14 nicklas 5   
2669 15 Sep 14 nicklas 6   var bioplateIsValid = false;
2669 15 Sep 14 nicklas 7   var qcCommentsIsValid = false;
2669 15 Sep 14 nicklas 8
2669 15 Sep 14 nicklas 9   // Page initialization
2669 15 Sep 14 nicklas 10   libqc.initPage = function()
2669 15 Sep 14 nicklas 11   {
2669 15 Sep 14 nicklas 12     // Step 1
2669 15 Sep 14 nicklas 13     Events.addEventHandler('bioplate', 'change', libqc.bioplateOnChange);
2669 15 Sep 14 nicklas 14     Events.addEventHandler('step-1', 'wizard-validate', libqc.validateStep1);
2669 15 Sep 14 nicklas 15     Buttons.addClickHandler('btnSelectLibPlate', libqc.selectLibPlate);
2669 15 Sep 14 nicklas 16     Events.addEventHandler('bioplate', 'base-selected', libqc.libPlateSelected);
2669 15 Sep 14 nicklas 17     
2669 15 Sep 14 nicklas 18     // Step 2
2669 15 Sep 14 nicklas 19     Events.addEventHandler('step-2', 'wizard-initialize', libqc.initializeStep2);
2669 15 Sep 14 nicklas 20     Events.addEventHandler('step-2', 'wizard-validate', libqc.validateStep2);
2669 15 Sep 14 nicklas 21     Events.addEventHandler('qcDate', 'blur', Wizard.validateDate);
2669 15 Sep 14 nicklas 22     Events.addEventHandler('qccomments', 'blur',libqc.commentsOnChange);
2669 15 Sep 14 nicklas 23     Wizard.initFileSelectionField('pdfqc');
2669 15 Sep 14 nicklas 24
2669 15 Sep 14 nicklas 25     // Navigation
2669 15 Sep 14 nicklas 26     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
2669 15 Sep 14 nicklas 27     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
2669 15 Sep 14 nicklas 28     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
2669 15 Sep 14 nicklas 29     Buttons.addClickHandler('goregister', Wizard.goRegister);
2669 15 Sep 14 nicklas 30     
2669 15 Sep 14 nicklas 31     // Final registration
2669 15 Sep 14 nicklas 32     Events.addEventHandler('wizard', 'wizard-submit', libqc.submit);
2669 15 Sep 14 nicklas 33     
2669 15 Sep 14 nicklas 34     var url = '../LibPrep.servlet?ID='+App.getSessionId();
2669 15 Sep 14 nicklas 35     url += '&cmd=GetLibraryPlatesForLibPrep';
2669 15 Sep 14 nicklas 36     Wizard.showLoadingAnimation('Loading Library plates...');
2669 15 Sep 14 nicklas 37     Wizard.asyncJsonRequest(url, libqc.initializeStep1);
2669 15 Sep 14 nicklas 38   }
2669 15 Sep 14 nicklas 39
2669 15 Sep 14 nicklas 40
2669 15 Sep 14 nicklas 41   libqc.initializeStep1 = function(response)
2669 15 Sep 14 nicklas 42   {
2669 15 Sep 14 nicklas 43     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 44     var bioplates = response.bioplates;
2669 15 Sep 14 nicklas 45
2669 15 Sep 14 nicklas 46     var plates = frm.bioplate;
2669 15 Sep 14 nicklas 47     if (bioplates.length > 0)
2669 15 Sep 14 nicklas 48     {
2669 15 Sep 14 nicklas 49       for (var i=0; i < bioplates.length; i++)
2669 15 Sep 14 nicklas 50       {
2669 15 Sep 14 nicklas 51         var bioplate = bioplates[i];
2669 15 Sep 14 nicklas 52         var option = new Option(bioplate.name, bioplate.id);
2669 15 Sep 14 nicklas 53         option.plate = bioplate;
2669 15 Sep 14 nicklas 54         plates.options[plates.length] = option;
2669 15 Sep 14 nicklas 55       }
2669 15 Sep 14 nicklas 56     }
2669 15 Sep 14 nicklas 57
2669 15 Sep 14 nicklas 58     frm.bioplate.focus();
2669 15 Sep 14 nicklas 59     libqc.bioPlateOnChange();
2669 15 Sep 14 nicklas 60
2669 15 Sep 14 nicklas 61     Doc.show('step-1');
2669 15 Sep 14 nicklas 62     Doc.show('gonext');
2669 15 Sep 14 nicklas 63   }
2669 15 Sep 14 nicklas 64   
2669 15 Sep 14 nicklas 65   libqc.bioPlateOnChange = function()
2669 15 Sep 14 nicklas 66   {
2669 15 Sep 14 nicklas 67     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 68     bioplateIsValid = false;
2669 15 Sep 14 nicklas 69
2669 15 Sep 14 nicklas 70     if (frm.bioplate.length == 0)
2669 15 Sep 14 nicklas 71     {
2669 15 Sep 14 nicklas 72       Wizard.setInputStatus('bioplate', 'invalid', 'No Library plate available for processing.');
2669 15 Sep 14 nicklas 73       return;
2669 15 Sep 14 nicklas 74     }
2669 15 Sep 14 nicklas 75     
2669 15 Sep 14 nicklas 76     bioplateIsValid = true;
2669 15 Sep 14 nicklas 77     Wizard.setInputStatus('bioplate', 'valid');
2669 15 Sep 14 nicklas 78   }
2669 15 Sep 14 nicklas 79
2669 15 Sep 14 nicklas 80   libqc.selectLibPlate = function()
2669 15 Sep 14 nicklas 81   {
2669 15 Sep 14 nicklas 82     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 83     if (frm.bioplate.disabled) return;
2669 15 Sep 14 nicklas 84     
2669 15 Sep 14 nicklas 85     var url = '&resetTemporary=1';
2669 15 Sep 14 nicklas 86     url += '&tmpfilter:STRING:bioPlateType.name=Library+plate';
2669 15 Sep 14 nicklas 87     Dialogs.selectItem('BIOPLATE', 'bioplate', 0, url);
2669 15 Sep 14 nicklas 88   }
2669 15 Sep 14 nicklas 89   
2669 15 Sep 14 nicklas 90   
2669 15 Sep 14 nicklas 91   libqc.libPlateSelected = function(event)
2669 15 Sep 14 nicklas 92   {
2669 15 Sep 14 nicklas 93     var id = event.detail.id;
2669 15 Sep 14 nicklas 94     var name = event.detail.name;
2669 15 Sep 14 nicklas 95     
2669 15 Sep 14 nicklas 96     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 97     var plateList = frm.bioplate;
2669 15 Sep 14 nicklas 98     for (var i = 0; i < plateList.length; i++)
2669 15 Sep 14 nicklas 99     {
2669 15 Sep 14 nicklas 100       if (plateList[i].value == id)
2669 15 Sep 14 nicklas 101       {
2669 15 Sep 14 nicklas 102         plateList[i].selected = true;
2808 15 Oct 14 nicklas 103         libqc.bioPlateOnChange();
2669 15 Sep 14 nicklas 104         return;
2669 15 Sep 14 nicklas 105       }
2669 15 Sep 14 nicklas 106     }
2669 15 Sep 14 nicklas 107     
2669 15 Sep 14 nicklas 108     var option = new Option(name, id, true, true);
2669 15 Sep 14 nicklas 109     plateList[plateList.length] = option;
2669 15 Sep 14 nicklas 110     libqc.bioPlateOnChange();
2669 15 Sep 14 nicklas 111   }
2669 15 Sep 14 nicklas 112
2669 15 Sep 14 nicklas 113
2669 15 Sep 14 nicklas 114   libqc.validateStep1 = function(event)
2669 15 Sep 14 nicklas 115   {
2669 15 Sep 14 nicklas 116     if (!bioplateIsValid) event.preventDefault();    
2669 15 Sep 14 nicklas 117   }
2669 15 Sep 14 nicklas 118   
2669 15 Sep 14 nicklas 119   libqc.initializeStep2 = function()
2669 15 Sep 14 nicklas 120   {
2669 15 Sep 14 nicklas 121     var frm = document.forms['reggie'];  
2669 15 Sep 14 nicklas 122     Wizard.setCurrentStep(2);
2669 15 Sep 14 nicklas 123     Doc.show('goregister');
2669 15 Sep 14 nicklas 124     Doc.show('gocancel');
2669 15 Sep 14 nicklas 125     Events.sendChangeEvent('pdfqc');
2669 15 Sep 14 nicklas 126     libqc.commentsOnChange();
2669 15 Sep 14 nicklas 127     frm.qcDate.focus();
2669 15 Sep 14 nicklas 128   }
2669 15 Sep 14 nicklas 129
2669 15 Sep 14 nicklas 130   libqc.commentsOnChange = function()
2669 15 Sep 14 nicklas 131   {
2669 15 Sep 14 nicklas 132     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 133     qcCommentsIsValid = false;
2669 15 Sep 14 nicklas 134     Wizard.setInputStatus('qccomments');
2669 15 Sep 14 nicklas 135     
2669 15 Sep 14 nicklas 136     var comments = frm.qccomments.value;
2669 15 Sep 14 nicklas 137     if (comments == '')
2669 15 Sep 14 nicklas 138     {
2669 15 Sep 14 nicklas 139       Wizard.setInputStatus('qccomments', 'invalid', 'Missing');
2669 15 Sep 14 nicklas 140       return;
2669 15 Sep 14 nicklas 141     }
2669 15 Sep 14 nicklas 142
2669 15 Sep 14 nicklas 143     Wizard.setInputStatus('qccomments', 'valid');
2669 15 Sep 14 nicklas 144     qcCommentsIsValid = true;
2669 15 Sep 14 nicklas 145   }
2669 15 Sep 14 nicklas 146
2669 15 Sep 14 nicklas 147   libqc.validateStep2 = function(event)
2669 15 Sep 14 nicklas 148   {
2669 15 Sep 14 nicklas 149     var valid = qcCommentsIsValid;
2669 15 Sep 14 nicklas 150     valid &= Wizard.isValid('pdfqc');
2669 15 Sep 14 nicklas 151     valid &= Wizard.isValid('qcDate');
2669 15 Sep 14 nicklas 152     
2669 15 Sep 14 nicklas 153     if (!valid) 
2669 15 Sep 14 nicklas 154     {
2669 15 Sep 14 nicklas 155       event.preventDefault();
2669 15 Sep 14 nicklas 156     }
2669 15 Sep 14 nicklas 157   }
2669 15 Sep 14 nicklas 158   
2669 15 Sep 14 nicklas 159   libqc.submit = function()
2669 15 Sep 14 nicklas 160   {
2669 15 Sep 14 nicklas 161     var frm = document.forms['reggie'];
2669 15 Sep 14 nicklas 162
2669 15 Sep 14 nicklas 163     var submitInfo = {};
2669 15 Sep 14 nicklas 164     submitInfo.bioplate = parseInt(frm.bioplate.value, 10);
2669 15 Sep 14 nicklas 165     submitInfo.qcDate = frm.qcDate.value;
2669 15 Sep 14 nicklas 166     submitInfo.qcPdf = frm.pdfqc.value;
2669 15 Sep 14 nicklas 167     submitInfo.qcComments = frm.qccomments.value;
2669 15 Sep 14 nicklas 168
2669 15 Sep 14 nicklas 169     var url = '../LibPrep.servlet?ID='+App.getSessionId();
2669 15 Sep 14 nicklas 170     url += '&cmd=ImportLibPrepQcResults';
2669 15 Sep 14 nicklas 171     Wizard.showLoadingAnimation('Performing registration...');
2669 15 Sep 14 nicklas 172     Wizard.asyncJsonRequest(url, libqc.submissionResults, 'POST', JSON.stringify(submitInfo));
2669 15 Sep 14 nicklas 173   }
2669 15 Sep 14 nicklas 174
2669 15 Sep 14 nicklas 175   libqc.submissionResults = function(response)
2669 15 Sep 14 nicklas 176   {
2669 15 Sep 14 nicklas 177     Wizard.showFinalMessage(response.messages);
2669 15 Sep 14 nicklas 178     Doc.show('gorestart');
2669 15 Sep 14 nicklas 179   }
2669 15 Sep 14 nicklas 180
2669 15 Sep 14 nicklas 181   return libqc;
2669 15 Sep 14 nicklas 182 }();
2669 15 Sep 14 nicklas 183
2669 15 Sep 14 nicklas 184 Doc.onLoad(LibQC.initPage);
2669 15 Sep 14 nicklas 185