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

Code
Comments
Other
Rev Date Author Line
2803 14 Oct 14 nicklas 1 var AutoSelect = function()
2803 14 Oct 14 nicklas 2 {
2803 14 Oct 14 nicklas 3   var autoselect = {};
2803 14 Oct 14 nicklas 4   var debug = 0;
3270 23 Apr 15 nicklas 5   var hasInitProtocols = false;
2803 14 Oct 14 nicklas 6
2803 14 Oct 14 nicklas 7   // Page initialization
2803 14 Oct 14 nicklas 8   autoselect.initPage = function()
2803 14 Oct 14 nicklas 9   {
2803 14 Oct 14 nicklas 10     Buttons.addClickHandler('close', App.closeWindow);
2803 14 Oct 14 nicklas 11     Buttons.addClickHandler('btnOk', autoselect.doAutoSelect);
2803 14 Oct 14 nicklas 12     
2803 14 Oct 14 nicklas 13     Events.addEventHandler('quantity_regular', 'keypress', Events.numberOnly);
2803 14 Oct 14 nicklas 14     Events.addEventHandler('quality_score', 'keypress', Events.numberOnly);
2906 07 Nov 14 nicklas 15     
2906 07 Nov 14 nicklas 16     Events.addEventHandler('preNormalized.0', 'click', autoselect.setPreNormalize);
2906 07 Nov 14 nicklas 17     Events.addEventHandler('preNormalized.1', 'click', autoselect.setPreNormalize);
3270 23 Apr 15 nicklas 18     
3270 23 Apr 15 nicklas 19     Events.addEventHandler('normalizationProtocol', 'change', autoselect.protocolOnChange);
5882 26 Mar 20 nicklas 20     Reggie.loadProtocols('RNA_NORMALIZATION_PROTOCOL', 'normalizationProtocol', 'LIBPREP_TARGET,RNA_TARGET_AMOUNT,RNA_MINIMAL_AMOUNT,RNA_TARGET_VOLUME', 'Manual');
2906 07 Nov 14 nicklas 21     autoselect.setPreNormalize();
2803 14 Oct 14 nicklas 22   }
2803 14 Oct 14 nicklas 23
2906 07 Nov 14 nicklas 24   autoselect.setPreNormalize = function()
2906 07 Nov 14 nicklas 25   {
2906 07 Nov 14 nicklas 26     var frm = document.forms['options'];
2906 07 Nov 14 nicklas 27     var preNormalize = frm.preNormalized[1].checked;
2906 07 Nov 14 nicklas 28     
3270 23 Apr 15 nicklas 29     Doc.element('normalizationProtocol').disabled = !preNormalize;
2906 07 Nov 14 nicklas 30     Doc.element('remainingQuantity').disabled = preNormalize;
2906 07 Nov 14 nicklas 31     Doc.element('quantity_regular').disabled = preNormalize;
2906 07 Nov 14 nicklas 32     Doc.element('qualityScore').disabled = preNormalize;
2906 07 Nov 14 nicklas 33     Doc.element('quality_score').disabled = preNormalize;
2906 07 Nov 14 nicklas 34     Doc.element('reProcess').disabled = preNormalize;
2906 07 Nov 14 nicklas 35     Doc.element('flag').disabled = preNormalize;  
2906 07 Nov 14 nicklas 36   }
2906 07 Nov 14 nicklas 37   
3270 23 Apr 15 nicklas 38   autoselect.protocolOnChange = function()
3270 23 Apr 15 nicklas 39   {
3270 23 Apr 15 nicklas 40     var frm = document.forms['options'];
3270 23 Apr 15 nicklas 41
3270 23 Apr 15 nicklas 42     if (!hasInitProtocols)
3270 23 Apr 15 nicklas 43     {
3270 23 Apr 15 nicklas 44       hasInitProtocols = true;
3832 07 Apr 16 nicklas 45       var selectedProtocol = Data.int('page-data', 'protocol-id');
3316 08 May 15 nicklas 46       
3270 23 Apr 15 nicklas 47       if (frm.normalizationProtocol.length == 0)
3270 23 Apr 15 nicklas 48       {
3270 23 Apr 15 nicklas 49         Wizard.setFatalError('No RNA normalization protocols found. Please ask the server administrator to create at least one protocol.');
3270 23 Apr 15 nicklas 50         return;
3270 23 Apr 15 nicklas 51       }
3316 08 May 15 nicklas 52       
3270 23 Apr 15 nicklas 53       for (var i=0; i < frm.normalizationProtocol.length; i++)
3270 23 Apr 15 nicklas 54       {
3270 23 Apr 15 nicklas 55         var p = frm.normalizationProtocol[i].item;
3832 07 Apr 16 nicklas 56         var unit = 'µg';
3832 07 Apr 16 nicklas 57         var factor = 1;
3832 07 Apr 16 nicklas 58         if (p.RNATargetAmount < 0.5)
3316 08 May 15 nicklas 59         {
3832 07 Apr 16 nicklas 60           unit = 'ng';
3832 07 Apr 16 nicklas 61           factor = 1000;
3316 08 May 15 nicklas 62         }
3832 07 Apr 16 nicklas 63         
3832 07 Apr 16 nicklas 64         var text = p.name + ' (';
3832 07 Apr 16 nicklas 65         if (p.RNAMinimalAmount) text += Reggie.formatNumber(p.RNAMinimalAmount * factor, '', 1) + '-';
3832 07 Apr 16 nicklas 66         text += p.RNATargetAmount ? Reggie.formatNumber(p.RNATargetAmount * factor, '', 1) : '? ';
3832 07 Apr 16 nicklas 67         text += unit;
3832 07 Apr 16 nicklas 68         text += ' in '+(p.RNATargetVolume || '? ')+'µl)';
3832 07 Apr 16 nicklas 69         frm.normalizationProtocol[i].text = text;
3832 07 Apr 16 nicklas 70         
3832 07 Apr 16 nicklas 71         if (p.id == selectedProtocol) frm.normalizationProtocol.selectedIndex = i;
3270 23 Apr 15 nicklas 72       }
3316 08 May 15 nicklas 73       
3270 23 Apr 15 nicklas 74     }
3270 23 Apr 15 nicklas 75   }
3270 23 Apr 15 nicklas 76
3270 23 Apr 15 nicklas 77   
2803 14 Oct 14 nicklas 78   autoselect.doAutoSelect = function()
2803 14 Oct 14 nicklas 79   {
2803 14 Oct 14 nicklas 80     var options = {};
2803 14 Oct 14 nicklas 81     var frm = document.forms['options'];
2803 14 Oct 14 nicklas 82     
2906 07 Nov 14 nicklas 83     var preNormalize = frm.preNormalized[1].checked;
2803 14 Oct 14 nicklas 84     var startDate = frm.startDate.value;
2803 14 Oct 14 nicklas 85     if (startDate && !Dates.isDate(startDate, 'yyyyMMdd'))
2803 14 Oct 14 nicklas 86     {
2803 14 Oct 14 nicklas 87       Forms.showNotification('startDate', 'Not a valid date');
2803 14 Oct 14 nicklas 88       return;
2803 14 Oct 14 nicklas 89     }
2803 14 Oct 14 nicklas 90     
2906 07 Nov 14 nicklas 91     if (!preNormalize)
2803 14 Oct 14 nicklas 92     {
2906 07 Nov 14 nicklas 93       var qRegular = parseFloat(frm.quantity_regular.value);
2906 07 Nov 14 nicklas 94       if (!(qRegular > 0))
2906 07 Nov 14 nicklas 95       {
2906 07 Nov 14 nicklas 96         Forms.showNotification('quantity_regular', 'Remaining quantity must be a number >0');
2906 07 Nov 14 nicklas 97         return;
2906 07 Nov 14 nicklas 98       }
2906 07 Nov 14 nicklas 99       
2906 07 Nov 14 nicklas 100       var qualityScore = parseFloat(frm.quality_score.value);
2906 07 Nov 14 nicklas 101       if (!(qualityScore > 0))
2906 07 Nov 14 nicklas 102       {
2906 07 Nov 14 nicklas 103         Forms.showNotification('quality_score', 'RQS/RIN must be a number >0')
2906 07 Nov 14 nicklas 104         return;
2906 07 Nov 14 nicklas 105       }
2803 14 Oct 14 nicklas 106     }
3270 23 Apr 15 nicklas 107     else
3270 23 Apr 15 nicklas 108     {
3270 23 Apr 15 nicklas 109       options.normalizationProtocol = parseInt(frm.normalizationProtocol.value);
3270 23 Apr 15 nicklas 110     }
2803 14 Oct 14 nicklas 111     
2906 07 Nov 14 nicklas 112
2906 07 Nov 14 nicklas 113     if (startDate) options.startDate = startDate;
2906 07 Nov 14 nicklas 114     if (preNormalize)
2803 14 Oct 14 nicklas 115     {
2906 07 Nov 14 nicklas 116       options.preNormalized = 1;
2803 14 Oct 14 nicklas 117     }
2906 07 Nov 14 nicklas 118     else
2906 07 Nov 14 nicklas 119     {
2906 07 Nov 14 nicklas 120       if (frm.remainingQuantity.checked) options.remainingQuantity = qRegular;
2906 07 Nov 14 nicklas 121       if (frm.qualityScore.checked) options.qualityScore = qualityScore;
2906 07 Nov 14 nicklas 122       if (frm.flag.checked) options.flag = 1;
2906 07 Nov 14 nicklas 123       if (frm.reProcess.checked) options.reProcess = 1;
2906 07 Nov 14 nicklas 124     }
2803 14 Oct 14 nicklas 125     
2803 14 Oct 14 nicklas 126     options.ignore = Data.json('page-data', 'ignore');
2803 14 Oct 14 nicklas 127     
2803 14 Oct 14 nicklas 128     var url = '../MRna.servlet?ID='+App.getSessionId();
2803 14 Oct 14 nicklas 129     url += '&cmd=AutoSelectRnaForMRna&numToSelect='+Data.get('page-data', 'num-to-select');
2803 14 Oct 14 nicklas 130     
2803 14 Oct 14 nicklas 131     Wizard.showLoadingAnimation('Finding RNA. Please wait...');
2803 14 Oct 14 nicklas 132     Wizard.asyncJsonRequest(url, autoselect.rnaSelected, 'POST', JSON.stringify(options));
2803 14 Oct 14 nicklas 133   }
2803 14 Oct 14 nicklas 134
2803 14 Oct 14 nicklas 135   autoselect.rnaSelected = function(response)
2803 14 Oct 14 nicklas 136   {
2803 14 Oct 14 nicklas 137     var rna = response.rna;
2803 14 Oct 14 nicklas 138     if (rna.length == 0)
2803 14 Oct 14 nicklas 139     {
2803 14 Oct 14 nicklas 140       Doc.addClass('btnOk', 'disabled');
2981 25 Nov 14 nicklas 141       Wizard.setFatalError('Could not find any unprocessed RNA at this time.');
2981 25 Nov 14 nicklas 142       return;
2803 14 Oct 14 nicklas 143     }
2803 14 Oct 14 nicklas 144     
2803 14 Oct 14 nicklas 145     window.opener.SelectRna.rnaSelected(response);
2803 14 Oct 14 nicklas 146     window.close();
2803 14 Oct 14 nicklas 147   }
2803 14 Oct 14 nicklas 148
2803 14 Oct 14 nicklas 149   return autoselect;
2803 14 Oct 14 nicklas 150 }();
2803 14 Oct 14 nicklas 151
2803 14 Oct 14 nicklas 152 Doc.onLoad(AutoSelect.initPage);
2803 14 Oct 14 nicklas 153