extensions/net.sf.basedb.meludi/trunk/resources/personal/ffpe_block_returnal_alt_rec.js

Code
Comments
Other
Rev Date Author Line
5062 30 Oct 18 olle 1 var Istat = function()
5062 30 Oct 18 olle 2 {
5062 30 Oct 18 olle 3   var istat = {};
5062 30 Oct 18 olle 4   var debug = 0;
5062 30 Oct 18 olle 5   
5062 30 Oct 18 olle 6   // Page initialization
5062 30 Oct 18 olle 7   istat.initPage = function()
5062 30 Oct 18 olle 8   {
5062 30 Oct 18 olle 9     // Step 1
5062 30 Oct 18 olle 10     Events.addEventHandler('step-1', 'wizard-validate', istat.validateStep1);
5062 30 Oct 18 olle 11     Events.addEventHandler('extractSourceItems', 'change', istat.sourceItemsOnChange);
5062 30 Oct 18 olle 12
5062 30 Oct 18 olle 13     // Navigation
5062 30 Oct 18 olle 14     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
5062 30 Oct 18 olle 15     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
5062 30 Oct 18 olle 16     //Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
5062 30 Oct 18 olle 17     Buttons.addClickHandler('goregister', Wizard.goRegister);
5171 03 Dec 18 olle 18     Buttons.addClickHandler('today', istat.returnedDateToday);
5062 30 Oct 18 olle 19     
5062 30 Oct 18 olle 20     // Final registration
5062 30 Oct 18 olle 21     Events.addEventHandler('wizard', 'wizard-submit', istat.submit);
5062 30 Oct 18 olle 22
5062 30 Oct 18 olle 23     // Get FFPE block items
5062 30 Oct 18 olle 24     var url = '../Extraction.servlet?ID='+App.getSessionId();
5062 30 Oct 18 olle 25     url += '&cmd=GetUnreturnedFfpeBlocks';    
5062 30 Oct 18 olle 26     Wizard.showLoadingAnimation('Loading unprocessed items...');
5062 30 Oct 18 olle 27     Wizard.asyncJsonRequest(url, istat.initializeStep1);
5062 30 Oct 18 olle 28   }
5062 30 Oct 18 olle 29   
5062 30 Oct 18 olle 30   istat.initializeStep1 = function(response)
5062 30 Oct 18 olle 31   {
5062 30 Oct 18 olle 32     var frm = document.forms['meludi'];
5062 30 Oct 18 olle 33     var items = response.items;
5062 30 Oct 18 olle 34     
5062 30 Oct 18 olle 35     var sourceItemList = frm.extractSourceItems;
5062 30 Oct 18 olle 36     if (items.length)
5062 30 Oct 18 olle 37     {
5062 30 Oct 18 olle 38       var numItems = items.length;
5062 30 Oct 18 olle 39       for (var i=0; i < items.length; i++)
5062 30 Oct 18 olle 40       {
5062 30 Oct 18 olle 41         var item = items[i];
5062 30 Oct 18 olle 42         var name = (i+1) + ': ' + Strings.encodeTags(item.name);
5062 30 Oct 18 olle 43         if (item.pad)
5062 30 Oct 18 olle 44         {
5062 30 Oct 18 olle 45           name += ' -- (PAD: ' + Strings.encodeTags(item.pad + ')');
5062 30 Oct 18 olle 46         }
5062 30 Oct 18 olle 47         var selected = i < 8;
5062 30 Oct 18 olle 48         var option = new Option(name, item.id, selected, selected);
5062 30 Oct 18 olle 49         option.item = item;
5062 30 Oct 18 olle 50         if (item.yellowLabel)
5062 30 Oct 18 olle 51         {
5062 30 Oct 18 olle 52           option.className = 'yellow';
5062 30 Oct 18 olle 53         }
5062 30 Oct 18 olle 54         sourceItemList.options[sourceItemList.length] = option;
5062 30 Oct 18 olle 55       }
5062 30 Oct 18 olle 56       istat.sourceItemsOnChange();
5062 30 Oct 18 olle 57     }
5062 30 Oct 18 olle 58     else
5062 30 Oct 18 olle 59     {
5062 30 Oct 18 olle 60       Wizard.setFatalError('No unreturned FFPE block items available.');
5062 30 Oct 18 olle 61       return;
5062 30 Oct 18 olle 62     }
5062 30 Oct 18 olle 63
5062 30 Oct 18 olle 64     Wizard.setCurrentStep(1);
5062 30 Oct 18 olle 65     Doc.show('step-1');
5062 30 Oct 18 olle 66     Doc.show('goregister');
5062 30 Oct 18 olle 67     Doc.show('gocancel');
5062 30 Oct 18 olle 68   }
5062 30 Oct 18 olle 69
5062 30 Oct 18 olle 70   istat.sourceItemsOnChange = function()
5062 30 Oct 18 olle 71   {
5062 30 Oct 18 olle 72     sourceItemListIsValid = false;
5062 30 Oct 18 olle 73     Wizard.setInputStatus('extractSourceItems');
5062 30 Oct 18 olle 74     
5062 30 Oct 18 olle 75     var frm = document.forms['meludi'];
5062 30 Oct 18 olle 76     var sourceItemList = frm.extractSourceItems;
5062 30 Oct 18 olle 77     
5062 30 Oct 18 olle 78     var numSelected = 0;
5062 30 Oct 18 olle 79     for (var i = 0; i < sourceItemList.length; i++)
5062 30 Oct 18 olle 80     {
5062 30 Oct 18 olle 81       if (sourceItemList[i].selected) numSelected++;
5062 30 Oct 18 olle 82     }
5062 30 Oct 18 olle 83
5062 30 Oct 18 olle 84     if (numSelected < 1)
5062 30 Oct 18 olle 85     {
5062 30 Oct 18 olle 86       Wizard.setInputStatus('extractSourceItems', 'invalid', 'Must select a number of FFPE block items.');
5062 30 Oct 18 olle 87       return;
5062 30 Oct 18 olle 88     }
5062 30 Oct 18 olle 89     
5062 30 Oct 18 olle 90     sourceItemListIsValid = true;
5062 30 Oct 18 olle 91     Wizard.setInputStatus('extractSourceItems', 'valid');
5062 30 Oct 18 olle 92   }
5062 30 Oct 18 olle 93
5062 30 Oct 18 olle 94   istat.validateStep1 = function(event)
5062 30 Oct 18 olle 95   {
5062 30 Oct 18 olle 96     var frm = document.forms['meludi'];
5062 30 Oct 18 olle 97     var ffpeBlockList = istat.getSelectedItemsList();
5062 30 Oct 18 olle 98     var nofBlocks = ffpeBlockList.length;
5062 30 Oct 18 olle 99     if (!sourceItemListIsValid)
5062 30 Oct 18 olle 100     {
5062 30 Oct 18 olle 101       event.preventDefault();
5062 30 Oct 18 olle 102     }
5062 30 Oct 18 olle 103     var ffpeBlockList = istat.getSelectedItemsList();
5062 30 Oct 18 olle 104     var nofBlocks = ffpeBlockList.length;
5062 30 Oct 18 olle 105     if (nofBlocks == 0)
5062 30 Oct 18 olle 106     {
5062 30 Oct 18 olle 107       event.preventDefault();
5062 30 Oct 18 olle 108     }
5062 30 Oct 18 olle 109     var returnedDate = frm['returnedDate'].value;
5062 30 Oct 18 olle 110     if (!returnedDate)
5062 30 Oct 18 olle 111     {
5062 30 Oct 18 olle 112       Wizard.setInputStatus('returnedDate', 'invalid', 'Must enter a returned date.');
5062 30 Oct 18 olle 113       event.preventDefault();
5062 30 Oct 18 olle 114     }
5062 30 Oct 18 olle 115     var valid = true;
5062 30 Oct 18 olle 116   }
5062 30 Oct 18 olle 117
5062 30 Oct 18 olle 118   istat.submit = function()
5062 30 Oct 18 olle 119   {
5062 30 Oct 18 olle 120     var frm = document.forms['meludi'];
5062 30 Oct 18 olle 121     var ffpeBlockList = istat.getSelectedItemsList();
5062 30 Oct 18 olle 122     
5062 30 Oct 18 olle 123     var ffpeBlockInfo = {};
5062 30 Oct 18 olle 124     var nofBlocks = ffpeBlockList.length;
5062 30 Oct 18 olle 125     ffpeBlockInfo.ffpeBlocks = [];
5062 30 Oct 18 olle 126     for (var i = 0; i < nofBlocks; i++)
5062 30 Oct 18 olle 127     {
5062 30 Oct 18 olle 128       var ffpeBlock ={};
5062 30 Oct 18 olle 129       ffpeBlock.name = ffpeBlockList[i].name;
5062 30 Oct 18 olle 130       ffpeBlock.pad = ffpeBlockList[i].pad;
5062 30 Oct 18 olle 131       ffpeBlock.yellowLabel = ffpeBlockList[i].yellowLabel;
5062 30 Oct 18 olle 132       ffpeBlockInfo.ffpeBlocks[i] = ffpeBlock;
5062 30 Oct 18 olle 133     }
5062 30 Oct 18 olle 134     var returnedDate = frm['returnedDate'].value;
5062 30 Oct 18 olle 135     ffpeBlockInfo.returnedDate = returnedDate;
5062 30 Oct 18 olle 136
5062 30 Oct 18 olle 137     var submitInfo = {};
5062 30 Oct 18 olle 138     submitInfo.ffpeBlockInfo = ffpeBlockInfo;
5062 30 Oct 18 olle 139
5062 30 Oct 18 olle 140     var url = '../BaseLineRegistration.servlet?ID='+App.getSessionId();
5062 30 Oct 18 olle 141     url += '&cmd=RegisterReturnedFFPEBlocks';
5062 30 Oct 18 olle 142     Wizard.showLoadingAnimation('Registering returned FFPE block[s]...');
5062 30 Oct 18 olle 143     Wizard.asyncJsonRequest(url, istat.submissionResults, 'POST', JSON.stringify(submitInfo));
5062 30 Oct 18 olle 144   }
5062 30 Oct 18 olle 145   
5062 30 Oct 18 olle 146   istat.submissionResults = function(response)
5062 30 Oct 18 olle 147   {
5062 30 Oct 18 olle 148     Wizard.showFinalMessage(response.messages);
5062 30 Oct 18 olle 149     Doc.show('gorestart');
5062 30 Oct 18 olle 150   }
5062 30 Oct 18 olle 151
5062 30 Oct 18 olle 152   istat.getSelectedItemsList = function()
5062 30 Oct 18 olle 153   {
5062 30 Oct 18 olle 154     var frm = document.forms['meludi'];
5062 30 Oct 18 olle 155     
5062 30 Oct 18 olle 156     // Get number of selected extract source items
5062 30 Oct 18 olle 157     var numItems = 0;
5062 30 Oct 18 olle 158     var selItemsList = [];
5062 30 Oct 18 olle 159     for (var i = 0; i < frm.extractSourceItems.length; i++)
5062 30 Oct 18 olle 160     {
5062 30 Oct 18 olle 161       if (frm.extractSourceItems[i].selected)
5062 30 Oct 18 olle 162       {
5062 30 Oct 18 olle 163         if (frm.extractSourceItems[i].item != null)
5062 30 Oct 18 olle 164         {
5062 30 Oct 18 olle 165           selItemsList[numItems] = frm.extractSourceItems[i].item;
5062 30 Oct 18 olle 166           numItems++;
5062 30 Oct 18 olle 167         }
5062 30 Oct 18 olle 168       }
5062 30 Oct 18 olle 169     }
5062 30 Oct 18 olle 170     return selItemsList;
5062 30 Oct 18 olle 171   }
5062 30 Oct 18 olle 172
5171 03 Dec 18 olle 173   Date.prototype.yyyymmdd = function()
5171 03 Dec 18 olle 174   {
5171 03 Dec 18 olle 175     var mm = this.getMonth() + 1; // getMonth() is zero-based
5171 03 Dec 18 olle 176     var dd = this.getDate();
5171 03 Dec 18 olle 177
5171 03 Dec 18 olle 178     return [this.getFullYear(),
5171 03 Dec 18 olle 179       (mm>9 ? '' : '0') + mm,
5171 03 Dec 18 olle 180       (dd>9 ? '' : '0') + dd
5171 03 Dec 18 olle 181       ].join('');
5171 03 Dec 18 olle 182   };
5171 03 Dec 18 olle 183
5171 03 Dec 18 olle 184   istat.returnedDateToday = function()
5171 03 Dec 18 olle 185   {
5171 03 Dec 18 olle 186     var frm = document.forms['meludi'];
5171 03 Dec 18 olle 187
5171 03 Dec 18 olle 188     // Get today's date and insert into date field
5171 03 Dec 18 olle 189     var date = new Date();
5171 03 Dec 18 olle 190     frm['returnedDate'].value = date.yyyymmdd();
5171 03 Dec 18 olle 191   }
5171 03 Dec 18 olle 192
5062 30 Oct 18 olle 193   return istat;
5062 30 Oct 18 olle 194 }();
5062 30 Oct 18 olle 195
5062 30 Oct 18 olle 196 Doc.onLoad(Istat.initPage);
5062 30 Oct 18 olle 197