extensions/net.sf.basedb.meludi/trunk/resources/sampleproc/edit_dnarna_details.js

Code
Comments
Other
Rev Date Author Line
3176 06 Mar 15 olle 1 var Details = function()
3176 06 Mar 15 olle 2 {
3176 06 Mar 15 olle 3   var details = {};
3176 06 Mar 15 olle 4   var debug = 0;
3176 06 Mar 15 olle 5   
3176 06 Mar 15 olle 6   // Page initialization
3176 06 Mar 15 olle 7   details.initPage = function()
3176 06 Mar 15 olle 8   {
3176 06 Mar 15 olle 9     Buttons.addClickHandler('close', App.closeWindow);
3176 06 Mar 15 olle 10     Buttons.addClickHandler('btnSave', details.saveDetails);
3176 06 Mar 15 olle 11
3176 06 Mar 15 olle 12     Events.addEventHandler('dnaVolume', 'keypress', Events.numberOnly);
3176 06 Mar 15 olle 13     Events.addEventHandler('rnaVolume', 'keypress', Events.numberOnly);
3176 06 Mar 15 olle 14     
3176 06 Mar 15 olle 15     var index = Data.int('page-data', 'index');
3176 06 Mar 15 olle 16     var frm = document.forms['details'];
3176 06 Mar 15 olle 17     var pfrm = window.opener.document.forms['meludi'];
3313 07 May 15 olle 18
3176 06 Mar 15 olle 19     //var specimen = pfrm.extractSourceItems[index].specimen;
3176 06 Mar 15 olle 20     var selItemsList = getSelectedItemsList();
3176 06 Mar 15 olle 21     var item = selItemsList[index];
3176 06 Mar 15 olle 22     var specimen = item;
3176 06 Mar 15 olle 23
3365 03 Jun 15 olle 24 /*
3176 06 Mar 15 olle 25     frm.qiacubePosition.value = specimen.qiacubePosition;
3365 03 Jun 15 olle 26 */
3176 06 Mar 15 olle 27     frm.dnaVolume.value = specimen.dna.volume;
3176 06 Mar 15 olle 28     frm.rnaVolume.value = specimen.rna.volume;
3176 06 Mar 15 olle 29
3176 06 Mar 15 olle 30     frm.specimenComment.value = specimen.comment || '';
3176 06 Mar 15 olle 31     frm.dnaComment.value = specimen.dna.comment || '';
3176 06 Mar 15 olle 32     frm.rnaComment.value = specimen.rna.comment || '';
3176 06 Mar 15 olle 33
3176 06 Mar 15 olle 34     var reagents = window.opener.ExtractionReg.REAGENTS;
3176 06 Mar 15 olle 35     for (var i = 0; i < reagents.length; i++)
3176 06 Mar 15 olle 36     {
3176 06 Mar 15 olle 37       var rg = reagents[i];
3176 06 Mar 15 olle 38       frm[rg].value = specimen[rg] || '';
3176 06 Mar 15 olle 39       Doc.element(rg+'.default').innerHTML = Strings.encodeTags(pfrm[rg].value);
3176 06 Mar 15 olle 40     }
3176 06 Mar 15 olle 41     
3176 06 Mar 15 olle 42     details.checkForm();
3365 03 Jun 15 olle 43 /*
3176 06 Mar 15 olle 44     frm.qiacubePosition.focus();
3365 03 Jun 15 olle 45 */
3365 03 Jun 15 olle 46     frm.specimenComment.focus();
3176 06 Mar 15 olle 47   }
3176 06 Mar 15 olle 48   
3176 06 Mar 15 olle 49   details.checkForm = function()
3176 06 Mar 15 olle 50   {
3176 06 Mar 15 olle 51     var frm = document.forms['details'];
3176 06 Mar 15 olle 52     
3176 06 Mar 15 olle 53     var index = Data.int('page-data', 'index');
3176 06 Mar 15 olle 54     var selItemsList = getSelectedItemsList();
3176 06 Mar 15 olle 55     var item = selItemsList[index];
3176 06 Mar 15 olle 56
3365 03 Jun 15 olle 57 /*
3176 06 Mar 15 olle 58     // Qiacube position
3176 06 Mar 15 olle 59     var qiacubePositionStr = frm.qiacubePosition.value;
3352 26 May 15 olle 60     if (ExtractUtils.isSpecimen(item))
3176 06 Mar 15 olle 61     {
3176 06 Mar 15 olle 62       // Check prefix indicating QIAcube instrument
3176 06 Mar 15 olle 63       var qiacubeInstrPrefix = qiacubePositionStr.substring(0,1);
3176 06 Mar 15 olle 64       if (/^[A-Z]$/.test(qiacubeInstrPrefix) == false)
3176 06 Mar 15 olle 65       {
3176 06 Mar 15 olle 66         Forms.showNotification('qiacubePosition', 'QIAcube instrument prefix must be uppercase letter A-Z.');
3176 06 Mar 15 olle 67         return false;
3176 06 Mar 15 olle 68       }
3176 06 Mar 15 olle 69       // Remove prefix indicating QIAcube instrument
3176 06 Mar 15 olle 70       qiacubePositionStr = qiacubePositionStr.substring(1);
3176 06 Mar 15 olle 71       var qiacubePosition = parseInt(qiacubePositionStr, 10);
3176 06 Mar 15 olle 72       if (qiacubePosition < 1 || qiacubePosition > 12)
3176 06 Mar 15 olle 73       {
3176 06 Mar 15 olle 74         Forms.showNotification('qiacubePosition', 'QIAcube position must be between 1 and 12.');
3176 06 Mar 15 olle 75         return false;
3176 06 Mar 15 olle 76       }
3176 06 Mar 15 olle 77     }
3176 06 Mar 15 olle 78     else
3176 06 Mar 15 olle 79     {
3176 06 Mar 15 olle 80       if (qiacubePositionStr)
3176 06 Mar 15 olle 81       {
3176 06 Mar 15 olle 82         Forms.showNotification('qiacubePosition', 'Input RNA and DNA do not have a QIAcube position.');
3176 06 Mar 15 olle 83         return false;
3176 06 Mar 15 olle 84       }
3176 06 Mar 15 olle 85     }
3365 03 Jun 15 olle 86 */
3176 06 Mar 15 olle 87
3176 06 Mar 15 olle 88     // DNA
3176 06 Mar 15 olle 89     var dnaVolume = parseFloat(frm.dnaVolume.value);
3176 06 Mar 15 olle 90     if (!(dnaVolume > 0))
3176 06 Mar 15 olle 91     {
3176 06 Mar 15 olle 92       Forms.showNotification('dnaVolume', 'Invalid value for DNA volume.');
3176 06 Mar 15 olle 93       return false;
3176 06 Mar 15 olle 94     }
3176 06 Mar 15 olle 95
3176 06 Mar 15 olle 96     // RNA
3176 06 Mar 15 olle 97     var rnaVolume = parseFloat(frm.rnaVolume.value);
3176 06 Mar 15 olle 98     if (!(rnaVolume > 0))
3176 06 Mar 15 olle 99     {
3176 06 Mar 15 olle 100       Forms.showNotification('rnaVolume', 'Invalid value for RNA volume.');
3176 06 Mar 15 olle 101       showError('Invalid value for RNA volume.');
3176 06 Mar 15 olle 102       return false;
3176 06 Mar 15 olle 103     }
3176 06 Mar 15 olle 104
3176 06 Mar 15 olle 105     return true;
3176 06 Mar 15 olle 106   }
3176 06 Mar 15 olle 107
3176 06 Mar 15 olle 108   details.saveDetails = function()
3176 06 Mar 15 olle 109   {
3176 06 Mar 15 olle 110     if (!details.checkForm()) return;
3176 06 Mar 15 olle 111     
3176 06 Mar 15 olle 112     var index = Data.int('page-data', 'index');
3176 06 Mar 15 olle 113     var mode = Data.get('page-data', 'mode');
3176 06 Mar 15 olle 114     //var specimen = window.opener.document.forms['meludi'].extractSourceItems[index].specimen;
3176 06 Mar 15 olle 115     //var specimen = pfrm.extractSourceItems[index].specimen;
3176 06 Mar 15 olle 116     var selItemsList = getSelectedItemsList();
3176 06 Mar 15 olle 117     var item = selItemsList[index];
3176 06 Mar 15 olle 118     var specimen = item;
3176 06 Mar 15 olle 119     var frm = document.forms['details'];
3176 06 Mar 15 olle 120
3365 03 Jun 15 olle 121 /*
3176 06 Mar 15 olle 122     specimen.qiacubePosition = frm.qiacubePosition.value;
3365 03 Jun 15 olle 123 */
3176 06 Mar 15 olle 124     specimen.comment = frm.specimenComment.value;
3176 06 Mar 15 olle 125
3176 06 Mar 15 olle 126     specimen.dna.volume = parseFloat(frm.dnaVolume.value);
3176 06 Mar 15 olle 127     specimen.dna.comment = frm.dnaComment.value;
3176 06 Mar 15 olle 128     specimen.rna.volume = parseFloat(frm.rnaVolume.value);
3176 06 Mar 15 olle 129     specimen.rna.comment = frm.rnaComment.value;
3176 06 Mar 15 olle 130
3176 06 Mar 15 olle 131     if (mode != null && mode == 'ExtractionReg')
3176 06 Mar 15 olle 132     {
3176 06 Mar 15 olle 133       var reagents = window.opener.ExtractionReg.REAGENTS;
3176 06 Mar 15 olle 134       for (var i = 0; i < reagents.length; i++)
3176 06 Mar 15 olle 135       {
3176 06 Mar 15 olle 136         var rg = reagents[i];
3176 06 Mar 15 olle 137         specimen[rg] = frm[rg].value || null;
3176 06 Mar 15 olle 138       }
3176 06 Mar 15 olle 139     }
3176 06 Mar 15 olle 140
3176 06 Mar 15 olle 141     if (mode != null && mode == 'ExtractionReg')
3176 06 Mar 15 olle 142     {
3176 06 Mar 15 olle 143       window.opener.ExtractionReg.updateDetailsTable();
3176 06 Mar 15 olle 144     }
3176 06 Mar 15 olle 145     else
3176 06 Mar 15 olle 146     {
3176 06 Mar 15 olle 147       window.opener.ExtractionPrep.updateDetailsTable();
3176 06 Mar 15 olle 148     }
3176 06 Mar 15 olle 149     window.close();
3176 06 Mar 15 olle 150   }
3176 06 Mar 15 olle 151
3176 06 Mar 15 olle 152   getSelectedItemsList = function()
3176 06 Mar 15 olle 153   {
3176 06 Mar 15 olle 154     var pfrm = window.opener.document.forms['meludi'];
3176 06 Mar 15 olle 155     
3176 06 Mar 15 olle 156     // Get number of selected extract source items
3176 06 Mar 15 olle 157     var numItems = 0;
3176 06 Mar 15 olle 158     var selItemsList = [];
3176 06 Mar 15 olle 159     for (var i = 0; i < pfrm.extractSourceItems.length; i++)
3176 06 Mar 15 olle 160     {
3176 06 Mar 15 olle 161       if (pfrm.extractSourceItems[i].selected)
3176 06 Mar 15 olle 162       {
3212 27 Mar 15 olle 163         if (pfrm.extractSourceItems[i].item != null)
3176 06 Mar 15 olle 164         {
3212 27 Mar 15 olle 165           selItemsList[numItems] = pfrm.extractSourceItems[i].item;
3176 06 Mar 15 olle 166           numItems++;
3176 06 Mar 15 olle 167         }
3176 06 Mar 15 olle 168       }
3176 06 Mar 15 olle 169     }
3176 06 Mar 15 olle 170     return selItemsList;
3176 06 Mar 15 olle 171   }
3176 06 Mar 15 olle 172   
3176 06 Mar 15 olle 173   return details;
3176 06 Mar 15 olle 174 }();
3176 06 Mar 15 olle 175
3176 06 Mar 15 olle 176 Doc.onLoad(Details.initPage);
3176 06 Mar 15 olle 177