extensions/net.sf.basedb.reggie/trunk/resources/outtake/register.js

Code
Comments
Other
Rev Date Author Line
4165 21 Oct 16 nicklas 1 var Register = function()
4165 21 Oct 16 nicklas 2 {
4165 21 Oct 16 nicklas 3   var register = {};
4165 21 Oct 16 nicklas 4   var debug = 0;
4165 21 Oct 16 nicklas 5   
4179 27 Oct 16 nicklas 6   var aliquots;
4179 27 Oct 16 nicklas 7   var allNames;
4179 27 Oct 16 nicklas 8   
4165 21 Oct 16 nicklas 9   // Page initialization
4165 21 Oct 16 nicklas 10   register.initPage = function()
4165 21 Oct 16 nicklas 11   {
4165 21 Oct 16 nicklas 12     // Step 1
4165 21 Oct 16 nicklas 13     Events.addEventHandler('step-1', 'wizard-validate', register.validateStep1);
4165 21 Oct 16 nicklas 14     Events.addEventHandler('workList', 'change', register.worklistOnChange);
4165 21 Oct 16 nicklas 15     Events.addEventHandler('completedDate', 'change', Wizard.validateDate);
4165 21 Oct 16 nicklas 16     Events.addEventHandler('outcomeSuccess', 'click', register.outcomeOnChange);
4165 21 Oct 16 nicklas 17     Events.addEventHandler('outcomeFailed', 'click', register.outcomeOnChange);
4165 21 Oct 16 nicklas 18
4179 27 Oct 16 nicklas 19     // Step 2
4179 27 Oct 16 nicklas 20     Events.addEventHandler('step-2', 'wizard-initialize', register.initializeStep2);
4179 27 Oct 16 nicklas 21     Events.addEventHandler('except', 'change', register.exceptChange);
4179 27 Oct 16 nicklas 22     Buttons.addClickHandler('btnBrowseExcept', register.browseExcept);
4179 27 Oct 16 nicklas 23     Events.addEventHandler('btnBrowseExcept', 'base-selected', register.exceptSelected);
4179 27 Oct 16 nicklas 24
4165 21 Oct 16 nicklas 25     // Navigation
4165 21 Oct 16 nicklas 26     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
4165 21 Oct 16 nicklas 27     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
4165 21 Oct 16 nicklas 28     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
4165 21 Oct 16 nicklas 29     Buttons.addClickHandler('goregister', Wizard.goRegister);
4165 21 Oct 16 nicklas 30     
4165 21 Oct 16 nicklas 31     // Final registration
4165 21 Oct 16 nicklas 32     Events.addEventHandler('wizard', 'wizard-submit', register.submit);
4165 21 Oct 16 nicklas 33     
4165 21 Oct 16 nicklas 34     var url = '../Outtake.servlet?ID='+App.getSessionId();
4165 21 Oct 16 nicklas 35     url += '&cmd=GetOuttakeWorklists';
4165 21 Oct 16 nicklas 36     Wizard.showLoadingAnimation('Loading outtake work lists...');
4165 21 Oct 16 nicklas 37     Wizard.asyncJsonRequest(url, register.initializeStep1);
4165 21 Oct 16 nicklas 38   }
4165 21 Oct 16 nicklas 39
4165 21 Oct 16 nicklas 40   register.initializeStep1 = function(response)
4165 21 Oct 16 nicklas 41   {
4165 21 Oct 16 nicklas 42     var frm = document.forms['reggie'];
4165 21 Oct 16 nicklas 43     var workLists = response.workLists;
4165 21 Oct 16 nicklas 44     
4165 21 Oct 16 nicklas 45     var workList = frm.workList;
4165 21 Oct 16 nicklas 46     if (workLists.length > 0)
4165 21 Oct 16 nicklas 47     {
4165 21 Oct 16 nicklas 48       for (var i=0; i < workLists.length; i++)
4165 21 Oct 16 nicklas 49       {
4165 21 Oct 16 nicklas 50         var list = workLists[i];
6326 14 Jun 21 nicklas 51         var name = list.name + ' (' + list.size+(list.parentType?' '+list.parentType : '') + ')';
4165 21 Oct 16 nicklas 52         var option = new Option(name, list.id);
4165 21 Oct 16 nicklas 53         option.workList = list;
4165 21 Oct 16 nicklas 54         workList.options[workList.length] = option;
4165 21 Oct 16 nicklas 55       }
4165 21 Oct 16 nicklas 56       Events.sendChangeEvent(workList);
4165 21 Oct 16 nicklas 57     }
4165 21 Oct 16 nicklas 58     else
4165 21 Oct 16 nicklas 59     {
4165 21 Oct 16 nicklas 60       Wizard.setFatalError('No outtake works lists available for processing.');
4165 21 Oct 16 nicklas 61       return;
4165 21 Oct 16 nicklas 62     }
4165 21 Oct 16 nicklas 63     
4165 21 Oct 16 nicklas 64     Doc.show('step-1');
4179 27 Oct 16 nicklas 65     Doc.show('goregister');
4165 21 Oct 16 nicklas 66   }
4165 21 Oct 16 nicklas 67   
4165 21 Oct 16 nicklas 68   register.worklistOnChange = function()
4165 21 Oct 16 nicklas 69   {
4165 21 Oct 16 nicklas 70     var frm = document.forms['reggie'];
4165 21 Oct 16 nicklas 71     var workList = frm.workList[frm.workList.selectedIndex].workList;
4165 21 Oct 16 nicklas 72     frm.comments.value = workList.comments;
4165 21 Oct 16 nicklas 73   }
4165 21 Oct 16 nicklas 74
4165 21 Oct 16 nicklas 75   register.validateStep1 = function(event)
4165 21 Oct 16 nicklas 76   {
4165 21 Oct 16 nicklas 77     var frm = document.forms['reggie'];
4179 27 Oct 16 nicklas 78     var valid = frm.workList.selectedIndex >= 0;
4179 27 Oct 16 nicklas 79     valid &= Wizard.isValid('completedDate');
4179 27 Oct 16 nicklas 80
4179 27 Oct 16 nicklas 81     if (!valid)
4165 21 Oct 16 nicklas 82     {
4165 21 Oct 16 nicklas 83       event.preventDefault();
4165 21 Oct 16 nicklas 84     }
4165 21 Oct 16 nicklas 85   }
4165 21 Oct 16 nicklas 86
4165 21 Oct 16 nicklas 87   
4179 27 Oct 16 nicklas 88   register.outcomeOnChange = function()
4179 27 Oct 16 nicklas 89   {
4179 27 Oct 16 nicklas 90     var failed = Doc.element('outcomeFailed').checked
4179 27 Oct 16 nicklas 91     Doc.showHide('gonext', failed);
4179 27 Oct 16 nicklas 92     Doc.showHide('goregister', !failed);
4179 27 Oct 16 nicklas 93   }
4179 27 Oct 16 nicklas 94
4165 21 Oct 16 nicklas 95   register.initializeStep2 = function()
4165 21 Oct 16 nicklas 96   {
4165 21 Oct 16 nicklas 97     var frm = document.forms['reggie'];
4179 27 Oct 16 nicklas 98
4179 27 Oct 16 nicklas 99     var url = '../Outtake.servlet?ID='+App.getSessionId();
4179 27 Oct 16 nicklas 100     url += '&cmd=GetOuttakeInfo';
4179 27 Oct 16 nicklas 101     url += '&workListId='+frm.workList.value;
4179 27 Oct 16 nicklas 102     Wizard.showLoadingAnimation('Loading aliquot information...');
4179 27 Oct 16 nicklas 103     Wizard.asyncJsonRequest(url, register.aliquotsLoaded);
4179 27 Oct 16 nicklas 104   }
4179 27 Oct 16 nicklas 105   
4179 27 Oct 16 nicklas 106   register.aliquotsLoaded = function(response)
4179 27 Oct 16 nicklas 107   {
4179 27 Oct 16 nicklas 108     aliquots = response.aliquots;
4179 27 Oct 16 nicklas 109     allNames = [];
4179 27 Oct 16 nicklas 110     var aliquots = response.aliquots;
4165 21 Oct 16 nicklas 111     
4179 27 Oct 16 nicklas 112     for (var aliquotNo = 0; aliquotNo < aliquots.length; aliquotNo++)
4179 27 Oct 16 nicklas 113     {
4179 27 Oct 16 nicklas 114       var a = aliquots[aliquotNo];
4179 27 Oct 16 nicklas 115       var p = a.parent;
4179 27 Oct 16 nicklas 116       allNames[a.name] = a.id;
4179 27 Oct 16 nicklas 117       allNames[p.name] = a.id;
4179 27 Oct 16 nicklas 118     }
4179 27 Oct 16 nicklas 119     
4165 21 Oct 16 nicklas 120     Wizard.setCurrentStep(2);
4165 21 Oct 16 nicklas 121     Doc.show('goregister');
4165 21 Oct 16 nicklas 122     Doc.show('gocancel');
4165 21 Oct 16 nicklas 123   }
4165 21 Oct 16 nicklas 124   
4179 27 Oct 16 nicklas 125   
4179 27 Oct 16 nicklas 126   register.exceptChange = function()
4165 21 Oct 16 nicklas 127   {
4165 21 Oct 16 nicklas 128     var frm = document.forms['reggie'];
4179 27 Oct 16 nicklas 129     if (frm.except.length > 0)
4179 27 Oct 16 nicklas 130     {
4179 27 Oct 16 nicklas 131       Wizard.setInputStatus('except', 'valid');
4179 27 Oct 16 nicklas 132     }
4179 27 Oct 16 nicklas 133     else
4179 27 Oct 16 nicklas 134     {
4179 27 Oct 16 nicklas 135       Wizard.setInputStatus('except');
4179 27 Oct 16 nicklas 136     }
4179 27 Oct 16 nicklas 137   }
4179 27 Oct 16 nicklas 138   
4179 27 Oct 16 nicklas 139   var exceptMessages;
4179 27 Oct 16 nicklas 140   register.browseExcept = function()
4179 27 Oct 16 nicklas 141   {
4179 27 Oct 16 nicklas 142     var frm = document.forms['reggie'];
4179 27 Oct 16 nicklas 143     var workList = frm.workList[frm.workList.selectedIndex].workList;
4165 21 Oct 16 nicklas 144     
4179 27 Oct 16 nicklas 145     var currentExcept = Link.getIdsInList(frm.except, workList.itemType);
4179 27 Oct 16 nicklas 146     exceptMessages = [];
4179 27 Oct 16 nicklas 147     Wizard.showFinalMessage(exceptMessages);
4179 27 Oct 16 nicklas 148     var url = '&resetTemporary=1&exclude='+currentExcept.join(',');
4179 27 Oct 16 nicklas 149     url += '&tmpfilter:INT:§itemLists='+frm.workList.value;
4179 27 Oct 16 nicklas 150     Dialogs.selectItem(workList.itemType, 'btnBrowseExcept', 1, url);
4165 21 Oct 16 nicklas 151   }
4165 21 Oct 16 nicklas 152   
4179 27 Oct 16 nicklas 153   
4179 27 Oct 16 nicklas 154   register.exceptSelected = function(event)
4165 21 Oct 16 nicklas 155   {
4179 27 Oct 16 nicklas 156     var item = event.detail;
4179 27 Oct 16 nicklas 157     if (register.checkItemIsAliquot(item))
4179 27 Oct 16 nicklas 158     {
4179 27 Oct 16 nicklas 159       Link.addItem('except', item.itemType, item);
4179 27 Oct 16 nicklas 160     }
4179 27 Oct 16 nicklas 161     else
4179 27 Oct 16 nicklas 162     {
4179 27 Oct 16 nicklas 163       exceptMessages[exceptMessages.length] = '[Warning]'+Strings.encodeTags(item.name) + ' is not in the selected work list';
4179 27 Oct 16 nicklas 164     }
4179 27 Oct 16 nicklas 165     if (item.remaining == 0)
4179 27 Oct 16 nicklas 166     {
4179 27 Oct 16 nicklas 167       Events.sendChangeEvent('except');
4179 27 Oct 16 nicklas 168       Wizard.showFinalMessage(exceptMessages);
4179 27 Oct 16 nicklas 169     }
4165 21 Oct 16 nicklas 170   }
4165 21 Oct 16 nicklas 171   
4179 27 Oct 16 nicklas 172   register.checkItemIsAliquot = function(item)
4179 27 Oct 16 nicklas 173   {
4179 27 Oct 16 nicklas 174     var id = allNames[item.name];
4179 27 Oct 16 nicklas 175     if (id) item.id = id;
4179 27 Oct 16 nicklas 176     return id;
4179 27 Oct 16 nicklas 177   }
4179 27 Oct 16 nicklas 178   
4165 21 Oct 16 nicklas 179   register.submit = function()
4165 21 Oct 16 nicklas 180   {
4165 21 Oct 16 nicklas 181     var frm = document.forms['reggie'];
4179 27 Oct 16 nicklas 182     var workList = frm.workList[frm.workList.selectedIndex].workList;
4165 21 Oct 16 nicklas 183
4165 21 Oct 16 nicklas 184     var submitInfo = {};
4165 21 Oct 16 nicklas 185     submitInfo.workList = parseInt(frm.workList.value, 10);
4165 21 Oct 16 nicklas 186
4179 27 Oct 16 nicklas 187     var failed = Doc.element('outcomeFailed').checked;
4179 27 Oct 16 nicklas 188     submitInfo.failed = failed;
4179 27 Oct 16 nicklas 189     if (failed)
4179 27 Oct 16 nicklas 190     {
4179 27 Oct 16 nicklas 191       submitInfo.sampleConsumed = Doc.element('sampleConsumedYes').checked;
4179 27 Oct 16 nicklas 192       submitInfo.except = Link.getIdsInList(frm.except, workList.itemType);
4179 27 Oct 16 nicklas 193     }
4165 21 Oct 16 nicklas 194     
4165 21 Oct 16 nicklas 195     submitInfo.completedDate = frm.completedDate.value;
4165 21 Oct 16 nicklas 196     submitInfo.comments = frm.comments.value;
4165 21 Oct 16 nicklas 197     
4165 21 Oct 16 nicklas 198     var  url = '../Outtake.servlet?ID='+App.getSessionId();
4165 21 Oct 16 nicklas 199     url += '&cmd=RegisterOuttakeComplete';
4165 21 Oct 16 nicklas 200     Wizard.showLoadingAnimation('Performing registration...');
4165 21 Oct 16 nicklas 201     Wizard.asyncJsonRequest(url, register.submissionResults, 'POST', JSON.stringify(submitInfo));
4165 21 Oct 16 nicklas 202   }
4165 21 Oct 16 nicklas 203   
4165 21 Oct 16 nicklas 204   register.submissionResults = function(response)
4165 21 Oct 16 nicklas 205   {
4165 21 Oct 16 nicklas 206     Wizard.showFinalMessage(response.messages);
4165 21 Oct 16 nicklas 207     Doc.show('gorestart');
4165 21 Oct 16 nicklas 208   }
4165 21 Oct 16 nicklas 209
4165 21 Oct 16 nicklas 210   return register;
4165 21 Oct 16 nicklas 211 }();
4165 21 Oct 16 nicklas 212
4165 21 Oct 16 nicklas 213 Doc.onLoad(Register.initPage);
4165 21 Oct 16 nicklas 214