extensions/net.sf.basedb.reggie/trunk/resources/dnaseq-analysis/bwamem2_start.js

Code
Comments
Other
Rev Date Author Line
7084 28 Mar 23 nicklas 1 var BwaMem2 = function()
7084 28 Mar 23 nicklas 2 {
7084 28 Mar 23 nicklas 3   var bwa = {};
7084 28 Mar 23 nicklas 4   var debug = 0;
7084 28 Mar 23 nicklas 5   var selectionIsValid = false;
7084 28 Mar 23 nicklas 6   var subtypeMergedSequences = null;
7084 28 Mar 23 nicklas 7   var annotationTypePipeline = null;
7084 28 Mar 23 nicklas 8   var clusterIsValid = false;
7084 28 Mar 23 nicklas 9   var manuallySelected = [];
7084 28 Mar 23 nicklas 10   
7084 28 Mar 23 nicklas 11   // Page initialization
7084 28 Mar 23 nicklas 12   bwa.initPage = function()
7084 28 Mar 23 nicklas 13   {
7084 28 Mar 23 nicklas 14     
7084 28 Mar 23 nicklas 15     // Step 1
7084 28 Mar 23 nicklas 16     Buttons.addClickHandler('btnSelectMergedSequences', bwa.selectMergedSequences);
7084 28 Mar 23 nicklas 17     Events.addEventHandler('mergedSequences', 'base-selected', bwa.setMergedSequenceCallback);
7084 28 Mar 23 nicklas 18     Events.addEventHandler('mergedSequences', 'change', bwa.mergedSequencesOnChange);
7084 28 Mar 23 nicklas 19     Events.addEventHandler('step-1', 'wizard-validate', bwa.validateStep1);
7084 28 Mar 23 nicklas 20
7084 28 Mar 23 nicklas 21     // Step 2
7084 28 Mar 23 nicklas 22     Events.addEventHandler('step-2', 'wizard-initialize', bwa.initializeStep2);
7084 28 Mar 23 nicklas 23     Events.addEventHandler('step-2', 'wizard-validate', bwa.validateStep2);
7084 28 Mar 23 nicklas 24     Events.addEventHandler('clusters', 'change', bwa.clusterOnChange);
7372 06 Oct 23 nicklas 25     Events.addEventHandler('debug', 'change', bwa.debugOnChange);
7372 06 Oct 23 nicklas 26     Events.addEventHandler('override', 'change', bwa.overrideOnChange);
7084 28 Mar 23 nicklas 27     Events.addEventHandler('alignSoftware', 'change', bwa.softwareOnChange);
7084 28 Mar 23 nicklas 28
7084 28 Mar 23 nicklas 29     // Navigation
7084 28 Mar 23 nicklas 30     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
7084 28 Mar 23 nicklas 31     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
7084 28 Mar 23 nicklas 32     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
7084 28 Mar 23 nicklas 33     Buttons.addClickHandler('goregister', Wizard.goRegister);
7084 28 Mar 23 nicklas 34       
7084 28 Mar 23 nicklas 35     // Final registration
7084 28 Mar 23 nicklas 36     Events.addEventHandler('wizard', 'wizard-submit', bwa.submit);
7084 28 Mar 23 nicklas 37
7084 28 Mar 23 nicklas 38     Wizard.showLoadingAnimation('Loading bioassays...');
7084 28 Mar 23 nicklas 39     var url = '../BwaMem2.servlet?ID='+App.getSessionId();
7084 28 Mar 23 nicklas 40     url += '&cmd=GetMergedSequencesForBwaMem2';
7084 28 Mar 23 nicklas 41     Wizard.asyncJsonRequest(url, bwa.initializeStep1);
7084 28 Mar 23 nicklas 42   }
7084 28 Mar 23 nicklas 43   
7084 28 Mar 23 nicklas 44   // --- Step 1 -----------------------------------
7084 28 Mar 23 nicklas 45   bwa.initializeStep1 = function(response)
7084 28 Mar 23 nicklas 46   {
7084 28 Mar 23 nicklas 47     var mergedSequences = response.mergedSequences;
7084 28 Mar 23 nicklas 48     var frm = document.forms['reggie'];  
7084 28 Mar 23 nicklas 49
7084 28 Mar 23 nicklas 50     if (mergedSequences != null && mergedSequences.length > 0)
7084 28 Mar 23 nicklas 51     {
7084 28 Mar 23 nicklas 52       for (var msNo=0; msNo < mergedSequences.length; msNo++)
7084 28 Mar 23 nicklas 53       {
7084 28 Mar 23 nicklas 54         var ms = mergedSequences[msNo];
7084 28 Mar 23 nicklas 55         var option = bwa.createListOption(msNo+1, ms, ms.DO_NOT_USE == null)
7084 28 Mar 23 nicklas 56         frm.mergedSequences.options[frm.mergedSequences.length] = option;
7084 28 Mar 23 nicklas 57       }
7084 28 Mar 23 nicklas 58       Events.sendChangeEvent('mergedSequences');
7084 28 Mar 23 nicklas 59     }
7084 28 Mar 23 nicklas 60     else
7084 28 Mar 23 nicklas 61     {
7084 28 Mar 23 nicklas 62       Wizard.setInputStatus('mergedSequences', 'invalid', 'No new sequences available for processing');
7084 28 Mar 23 nicklas 63     }
7084 28 Mar 23 nicklas 64     
7084 28 Mar 23 nicklas 65     Doc.show('step-1');
7084 28 Mar 23 nicklas 66     Doc.show('gonext');
7084 28 Mar 23 nicklas 67
7084 28 Mar 23 nicklas 68     frm.mergedSequences.focus();
7084 28 Mar 23 nicklas 69   }
7084 28 Mar 23 nicklas 70   
7084 28 Mar 23 nicklas 71   bwa.validateStep1 = function(event)
7084 28 Mar 23 nicklas 72   {
7084 28 Mar 23 nicklas 73     if (!selectionIsValid) event.preventDefault();
7084 28 Mar 23 nicklas 74   }
7084 28 Mar 23 nicklas 75   
7084 28 Mar 23 nicklas 76   bwa.selectMergedSequences = function()
7084 28 Mar 23 nicklas 77   {
7084 28 Mar 23 nicklas 78     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 79     if (frm.mergedSequences.disabled) return;
7084 28 Mar 23 nicklas 80     
7084 28 Mar 23 nicklas 81     if (subtypeMergedSequences == null)
7084 28 Mar 23 nicklas 82     {
7084 28 Mar 23 nicklas 83       subtypeMergedSequences = Reggie.getSubtypeInfo('MERGED_SEQUENCES');
7084 28 Mar 23 nicklas 84     }
7084 28 Mar 23 nicklas 85     if (annotationTypePipeline == null)
7084 28 Mar 23 nicklas 86     {
7084 28 Mar 23 nicklas 87       annotationTypePipeline = Reggie.getAnnotationTypeInfo('PIPELINE');
7084 28 Mar 23 nicklas 88     }
7084 28 Mar 23 nicklas 89     
7084 28 Mar 23 nicklas 90     // Reset list
7084 28 Mar 23 nicklas 91     manuallySelected = [];
7084 28 Mar 23 nicklas 92     var url = '&resetTemporary=1';
7084 28 Mar 23 nicklas 93     url += '&tmpfilter:INT:itemSubtype='+subtypeMergedSequences.id;
7084 28 Mar 23 nicklas 94     url += '&tmpfilter:STRING:'+encodeURIComponent('#')+annotationTypePipeline.id+'='+encodeURIComponent('DNA/Normal/WGS|DNA/Tumor/WGS');
7084 28 Mar 23 nicklas 95     Dialogs.selectItem('DERIVEDBIOASSAY', 'mergedSequences', 1, url);
7084 28 Mar 23 nicklas 96   }
7084 28 Mar 23 nicklas 97
7084 28 Mar 23 nicklas 98   bwa.setMergedSequenceCallback = function(event)
7084 28 Mar 23 nicklas 99   {
7084 28 Mar 23 nicklas 100     var ms = event.detail;
7084 28 Mar 23 nicklas 101     
7084 28 Mar 23 nicklas 102     var opt = Reggie.getListOption('mergedSequences', ms.id);
7084 28 Mar 23 nicklas 103     if (opt)
7084 28 Mar 23 nicklas 104     {
7084 28 Mar 23 nicklas 105       opt.selected = true;
7084 28 Mar 23 nicklas 106     }
7084 28 Mar 23 nicklas 107     else
7084 28 Mar 23 nicklas 108     {
7084 28 Mar 23 nicklas 109       manuallySelected[manuallySelected.length] = ms.id;
7084 28 Mar 23 nicklas 110     }
7084 28 Mar 23 nicklas 111     
7084 28 Mar 23 nicklas 112     if (ms.remaining == 0 && manuallySelected.length > 0)
7084 28 Mar 23 nicklas 113     {
7084 28 Mar 23 nicklas 114       var url = '../BwaMem2.servlet?ID='+App.getSessionId();
7084 28 Mar 23 nicklas 115       url += '&cmd=GetMergedSequencesForBwaMem2';
7084 28 Mar 23 nicklas 116       url += '&items='+manuallySelected.join(',');
7084 28 Mar 23 nicklas 117       Wizard.showLoadingAnimation('Loading bioassays...');
7084 28 Mar 23 nicklas 118       Wizard.asyncJsonRequest(url, bwa.manuallySelected);
7084 28 Mar 23 nicklas 119     }
7084 28 Mar 23 nicklas 120     else
7084 28 Mar 23 nicklas 121     {
7084 28 Mar 23 nicklas 122       Events.sendChangeEvent('mergedSequences');
7084 28 Mar 23 nicklas 123     }
7084 28 Mar 23 nicklas 124   }
7084 28 Mar 23 nicklas 125
7084 28 Mar 23 nicklas 126   bwa.manuallySelected = function(response)
7084 28 Mar 23 nicklas 127   {
7084 28 Mar 23 nicklas 128     var mergedSequences = response.mergedSequences;
7084 28 Mar 23 nicklas 129     var frm = document.forms['reggie'];  
7084 28 Mar 23 nicklas 130
7084 28 Mar 23 nicklas 131     if (mergedSequences != null && mergedSequences.length > 0)
7084 28 Mar 23 nicklas 132     {
7084 28 Mar 23 nicklas 133       var offset = frm.mergedSequences.length+1;
7084 28 Mar 23 nicklas 134       for (var msNo=0; msNo < mergedSequences.length; msNo++)
7084 28 Mar 23 nicklas 135       {
7084 28 Mar 23 nicklas 136         var ms = mergedSequences[msNo];
7084 28 Mar 23 nicklas 137         var option = bwa.createListOption(msNo+offset, ms, ms.DO_NOT_USE == null);
7084 28 Mar 23 nicklas 138         frm.mergedSequences.options[frm.mergedSequences.length] = option;
7084 28 Mar 23 nicklas 139       }
7084 28 Mar 23 nicklas 140       Events.sendChangeEvent('mergedSequences');
7084 28 Mar 23 nicklas 141     }
7084 28 Mar 23 nicklas 142   }
7084 28 Mar 23 nicklas 143   
7084 28 Mar 23 nicklas 144   bwa.createListOption = function(index, mergedItem, selected)
7084 28 Mar 23 nicklas 145   {
7084 28 Mar 23 nicklas 146     var tooltip = null;
7084 28 Mar 23 nicklas 147     var name = (index) + ': '+mergedItem.name;
7084 28 Mar 23 nicklas 148     if (mergedItem.pipeline) name += ' ('+mergedItem.pipeline+')';
7084 28 Mar 23 nicklas 149     
7084 28 Mar 23 nicklas 150     if (mergedItem.DO_NOT_USE)
7084 28 Mar 23 nicklas 151     {
7084 28 Mar 23 nicklas 152       name += ' [DoNotUse]';
7084 28 Mar 23 nicklas 153       tooltip = 'DoNotUse-'+Strings.encodeTags(mergedItem.DO_NOT_USE+': '+mergedItem.DO_NOT_USE_COMMENT);
7084 28 Mar 23 nicklas 154     }
7084 28 Mar 23 nicklas 155     else if (mergedItem.AutoProcess == 'ReProcess')
7084 28 Mar 23 nicklas 156     {
7084 28 Mar 23 nicklas 157       name += ' [R]';
7084 28 Mar 23 nicklas 158     }
7084 28 Mar 23 nicklas 159     
7084 28 Mar 23 nicklas 160     var option = new Option(name, mergedItem.id, false, selected);
7084 28 Mar 23 nicklas 161     if (tooltip) option.title = tooltip;
7084 28 Mar 23 nicklas 162     option.mergedSequences = mergedItem;
7084 28 Mar 23 nicklas 163     return option;
7084 28 Mar 23 nicklas 164   }
7084 28 Mar 23 nicklas 165   
7084 28 Mar 23 nicklas 166   bwa.mergedSequencesOnChange = function()
7084 28 Mar 23 nicklas 167   {
7084 28 Mar 23 nicklas 168     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 169     selectionIsValid = false;
7084 28 Mar 23 nicklas 170     var numSelected = 0;
7084 28 Mar 23 nicklas 171     var numDoNotUse = 0;
7084 28 Mar 23 nicklas 172     var invalidPipeline = null;
7084 28 Mar 23 nicklas 173     
7084 28 Mar 23 nicklas 174     Wizard.setInputStatus('mergedSequences');
7084 28 Mar 23 nicklas 175     Wizard.hideGoNextConfirmation();
7084 28 Mar 23 nicklas 176     for (var msNo = 0; msNo < frm.mergedSequences.length; msNo++)
7084 28 Mar 23 nicklas 177     {
7084 28 Mar 23 nicklas 178       if (frm.mergedSequences[msNo].selected) 
7084 28 Mar 23 nicklas 179       {
7084 28 Mar 23 nicklas 180         numSelected++;
7084 28 Mar 23 nicklas 181         var ms = frm.mergedSequences[msNo].mergedSequences;
7084 28 Mar 23 nicklas 182         if (ms.DO_NOT_USE) numDoNotUse++;
7084 28 Mar 23 nicklas 183         if (ms.pipeline && ms.pipeline != 'DNA/Tumor/WGS' && ms.pipeline != 'DNA/Normal/WGS')
7084 28 Mar 23 nicklas 184         {
7084 28 Mar 23 nicklas 185           invalidPipeline = Strings.encodeTags(ms.name+' ('+ms.pipeline)+') is not intended for the DNA/*/WGS pipeline.';
7084 28 Mar 23 nicklas 186         }
7084 28 Mar 23 nicklas 187       }
7084 28 Mar 23 nicklas 188     }
7084 28 Mar 23 nicklas 189     
7084 28 Mar 23 nicklas 190     if (numSelected == 0)
7084 28 Mar 23 nicklas 191     {
7084 28 Mar 23 nicklas 192       Wizard.setInputStatus('mergedSequences', 'invalid', 'Select at least one item');
7084 28 Mar 23 nicklas 193       return;
7084 28 Mar 23 nicklas 194     }
7084 28 Mar 23 nicklas 195     if (invalidPipeline) 
7084 28 Mar 23 nicklas 196     {
7084 28 Mar 23 nicklas 197       Wizard.setInputStatus('mergedSequences', 'invalid', invalidPipeline);
7084 28 Mar 23 nicklas 198       return;
7084 28 Mar 23 nicklas 199     }
7084 28 Mar 23 nicklas 200     selectionIsValid = true;
7084 28 Mar 23 nicklas 201     
7084 28 Mar 23 nicklas 202     if (numDoNotUse > 0)
7084 28 Mar 23 nicklas 203     {
7084 28 Mar 23 nicklas 204       Wizard.setInputStatus('mergedSequences', 'warning', numDoNotUse + ' selected items marked as DoNotUse');
7084 28 Mar 23 nicklas 205       Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse');
7084 28 Mar 23 nicklas 206     }
7084 28 Mar 23 nicklas 207     else
7084 28 Mar 23 nicklas 208     {
7084 28 Mar 23 nicklas 209       Wizard.setInputStatus('mergedSequences', 'valid');
7084 28 Mar 23 nicklas 210     }
7084 28 Mar 23 nicklas 211   }
7084 28 Mar 23 nicklas 212   
7084 28 Mar 23 nicklas 213   // --- Step 2 -----------------------------------
7084 28 Mar 23 nicklas 214   bwa.initializeStep2 = function()
7084 28 Mar 23 nicklas 215   {
7084 28 Mar 23 nicklas 216     Wizard.setCurrentStep(2);
7084 28 Mar 23 nicklas 217     
7084 28 Mar 23 nicklas 218     // Check debug by default if debug is set or not on a secure server (=production server)
7084 28 Mar 23 nicklas 219     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 220     frm.debug.checked = debug || location.protocol != 'https:';
7084 28 Mar 23 nicklas 221
7131 24 Apr 23 nicklas 222     Reggie.loadProtocols('ALIGNMENT_PROTOCOL', 'alignProtocol', 'ALIGNMENT_TYPE,PIPELINE', 'Bwa-mem2');
7131 24 Apr 23 nicklas 223     Reggie.loadSoftware('ALIGNMENT_SOFTWARE', 'alignSoftware', 'ALIGNMENT_TYPE,PIPELINE,PARAMETER_SET', 'Bwa-mem2');
7084 28 Mar 23 nicklas 224     
7084 28 Mar 23 nicklas 225     // Load clusters
7084 28 Mar 23 nicklas 226     var url = '../OpenGrid.servlet?ID='+App.getSessionId() + '&cmd=GetHostInfo&config=align-bwa-mem2';
7084 28 Mar 23 nicklas 227     Doc.addClass('clusters', 'list-loading');
7084 28 Mar 23 nicklas 228     frm.clusters[0] = new Option('loading...');
7084 28 Mar 23 nicklas 229     Wizard.asyncJsonRequest(url, bwa.clustersLoaded);
7084 28 Mar 23 nicklas 230
7084 28 Mar 23 nicklas 231     Doc.show('goregister');
7084 28 Mar 23 nicklas 232     Doc.show('gocancel');
7084 28 Mar 23 nicklas 233   }
7084 28 Mar 23 nicklas 234   
7084 28 Mar 23 nicklas 235   bwa.validateStep2 = function(event)
7084 28 Mar 23 nicklas 236   {
7084 28 Mar 23 nicklas 237     if (!clusterIsValid) event.preventDefault();
7084 28 Mar 23 nicklas 238   }
7084 28 Mar 23 nicklas 239   
7084 28 Mar 23 nicklas 240   bwa.clustersLoaded = function(response)
7084 28 Mar 23 nicklas 241   {
7084 28 Mar 23 nicklas 242     Doc.removeClass('clusters', 'list-loading');
7084 28 Mar 23 nicklas 243     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 244     var clusters = response.hosts;
7084 28 Mar 23 nicklas 245     frm.clusters.length = 0;
7084 28 Mar 23 nicklas 246     for (var i = 0; i < clusters.length; i++)
7084 28 Mar 23 nicklas 247     {
7084 28 Mar 23 nicklas 248       var cl = clusters[i];
7084 28 Mar 23 nicklas 249       var option = new Option(cl.connection.name, cl.id);
7084 28 Mar 23 nicklas 250       option.cluster = cl;
7084 28 Mar 23 nicklas 251       frm.clusters[frm.clusters.length] = option;
7084 28 Mar 23 nicklas 252       Wizard.setInputStatus('clusters', 'valid');
7084 28 Mar 23 nicklas 253       clusterIsValid = true;
7084 28 Mar 23 nicklas 254     }
7084 28 Mar 23 nicklas 255     if (frm.clusters.length == 0)
7084 28 Mar 23 nicklas 256     {
7084 28 Mar 23 nicklas 257       Wizard.setInputStatus('clusters', 'invalid', 'No available clusters');
7084 28 Mar 23 nicklas 258       clusterIsValid = false;
7084 28 Mar 23 nicklas 259     }
7084 28 Mar 23 nicklas 260     else
7084 28 Mar 23 nicklas 261     {
7084 28 Mar 23 nicklas 262       bwa.clusterOnChange();
7084 28 Mar 23 nicklas 263     }
7084 28 Mar 23 nicklas 264   }
7084 28 Mar 23 nicklas 265   
7084 28 Mar 23 nicklas 266   bwa.softwareOnChange = function(event)
7084 28 Mar 23 nicklas 267   {
7084 28 Mar 23 nicklas 268     var target = event.currentTarget;
7084 28 Mar 23 nicklas 269     var item = target[target.selectedIndex].item;
7084 28 Mar 23 nicklas 270     if (!item) item = {};
7084 28 Mar 23 nicklas 271     
7084 28 Mar 23 nicklas 272     Doc.element(target.id+'.parameterSet').innerHTML = Strings.encodeTags(item.ParameterSet || 'default');
7084 28 Mar 23 nicklas 273     Doc.element(target.id+'.description').innerHTML = Strings.encodeTags(item.description);
7084 28 Mar 23 nicklas 274     Wizard.setInputStatus(target.id, 'valid');
7084 28 Mar 23 nicklas 275
7084 28 Mar 23 nicklas 276     if (item.ParameterSet)
7084 28 Mar 23 nicklas 277     {
7084 28 Mar 23 nicklas 278       var url = '../Install.servlet?ID='+App.getSessionId();
7084 28 Mar 23 nicklas 279       url += '&cmd=GetParameterSetInfo';
7084 28 Mar 23 nicklas 280       url += '&parameterSet='+encodeURIComponent(item.ParameterSet);
7084 28 Mar 23 nicklas 281       url += '&targetId='+target.id;
7084 28 Mar 23 nicklas 282       Wizard.asyncJsonRequest(url, bwa.parameterSetInfoLoaded);
7084 28 Mar 23 nicklas 283     }
7372 06 Oct 23 nicklas 284     bwa.updateSubmitOptions();
7084 28 Mar 23 nicklas 285   }
7084 28 Mar 23 nicklas 286   
7084 28 Mar 23 nicklas 287   bwa.parameterSetInfoLoaded = function(response)
7084 28 Mar 23 nicklas 288   {
7084 28 Mar 23 nicklas 289     if (!response.parameters || response.parameters.length == 0)
7084 28 Mar 23 nicklas 290     {
7084 28 Mar 23 nicklas 291       Wizard.setInputStatus(response.targetId, 'warning', 'Can\'t find \'' + Strings.encodeTags(response.parameterSet) + '\' parameter set in reggie-config.xml');
7084 28 Mar 23 nicklas 292     }
7084 28 Mar 23 nicklas 293   }
7084 28 Mar 23 nicklas 294   
7084 28 Mar 23 nicklas 295   bwa.clusterOnChange = function()
7084 28 Mar 23 nicklas 296   {
7084 28 Mar 23 nicklas 297     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 298     var cluster = frm.clusters[frm.clusters.selectedIndex].cluster;
7084 28 Mar 23 nicklas 299     if (cluster.priorities && cluster.priorities.length > 0)
7084 28 Mar 23 nicklas 300     {
7084 28 Mar 23 nicklas 301       frm.priority.length = 0;
7084 28 Mar 23 nicklas 302       for (var pNo = 0; pNo < cluster.priorities.length; pNo++)
7084 28 Mar 23 nicklas 303       {
7084 28 Mar 23 nicklas 304         var p = cluster.priorities[pNo];
7084 28 Mar 23 nicklas 305         frm.priority[frm.priority.length] = new Option(p.name + ' ('+p.value+')', p.value, p['default'], p['default']);
7084 28 Mar 23 nicklas 306       }
7084 28 Mar 23 nicklas 307       Doc.show('job-priority');
7084 28 Mar 23 nicklas 308     }
7084 28 Mar 23 nicklas 309     else
7084 28 Mar 23 nicklas 310     {
7084 28 Mar 23 nicklas 311       Doc.hide('job-priority');
7084 28 Mar 23 nicklas 312     }
7084 28 Mar 23 nicklas 313     if (cluster.partitions && cluster.partitions.length > 0)
7084 28 Mar 23 nicklas 314     {
7084 28 Mar 23 nicklas 315       frm.partition.length = 0;
7084 28 Mar 23 nicklas 316       for (var pNo = 0; pNo < cluster.partitions.length; pNo++)
7084 28 Mar 23 nicklas 317       {
7084 28 Mar 23 nicklas 318         var p = cluster.partitions[pNo];
7084 28 Mar 23 nicklas 319         var title = p.name;
7084 28 Mar 23 nicklas 320         if (p.description) title += ' ('+p.description+')';
7084 28 Mar 23 nicklas 321         frm.partition[frm.partition.length] = new Option(title, p.value, p['default'], p['default']);
7084 28 Mar 23 nicklas 322       }
7084 28 Mar 23 nicklas 323       Doc.show('job-partition');
7084 28 Mar 23 nicklas 324     }
7084 28 Mar 23 nicklas 325     else
7084 28 Mar 23 nicklas 326     {
7084 28 Mar 23 nicklas 327       Doc.hide('job-partition');
7084 28 Mar 23 nicklas 328     }
7372 06 Oct 23 nicklas 329     bwa.updateSubmitOptions();
7084 28 Mar 23 nicklas 330   }
7084 28 Mar 23 nicklas 331   
7372 06 Oct 23 nicklas 332   bwa.debugOnChange = function()
7372 06 Oct 23 nicklas 333   {
7372 06 Oct 23 nicklas 334     bwa.updateSubmitOptions();
7372 06 Oct 23 nicklas 335   }
7372 06 Oct 23 nicklas 336   
7372 06 Oct 23 nicklas 337   bwa.updateSubmitOptions = function()
7372 06 Oct 23 nicklas 338   {
7372 06 Oct 23 nicklas 339     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 340     var config = frm.clusters[frm.clusters.selectedIndex]?.cluster?.config?.['align-bwa-mem2'];
7372 06 Oct 23 nicklas 341     if (config)
7372 06 Oct 23 nicklas 342     {
7372 06 Oct 23 nicklas 343       var parameterSet = frm.alignSoftware[frm.alignSoftware.selectedIndex]?.item?.ParameterSet;
7372 06 Oct 23 nicklas 344       Doc.element('submitOptions').innerHTML = Reggie.getSubmitOptions(config, frm.debug.checked, parameterSet);
7372 06 Oct 23 nicklas 345       frm.override.disabled = false;
7372 06 Oct 23 nicklas 346     }
7372 06 Oct 23 nicklas 347   }
7372 06 Oct 23 nicklas 348   
7372 06 Oct 23 nicklas 349   bwa.overrideOnChange = function()
7372 06 Oct 23 nicklas 350   {
7372 06 Oct 23 nicklas 351     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 352     Doc.showHide('submitOptions', !frm.override.checked);
7372 06 Oct 23 nicklas 353     Doc.showHide('submitOptionsOverride', frm.override.checked);
7372 06 Oct 23 nicklas 354     if (frm.submitOptionsOverride.value=='') 
7372 06 Oct 23 nicklas 355     {
7372 06 Oct 23 nicklas 356       frm.submitOptionsOverride.value = Doc.element('submitOptions').innerHTML;
7372 06 Oct 23 nicklas 357     }
7372 06 Oct 23 nicklas 358   }
7372 06 Oct 23 nicklas 359   
7084 28 Mar 23 nicklas 360
7084 28 Mar 23 nicklas 361   bwa.submit = function()
7084 28 Mar 23 nicklas 362   {
7084 28 Mar 23 nicklas 363     var frm = document.forms['reggie'];
7084 28 Mar 23 nicklas 364       
7084 28 Mar 23 nicklas 365     var submitInfo = {};
7084 28 Mar 23 nicklas 366     submitInfo.alignSoftware = parseInt(frm.alignSoftware.value);
7084 28 Mar 23 nicklas 367     submitInfo.alignProtocol = parseInt(frm.alignProtocol.value);
7084 28 Mar 23 nicklas 368     submitInfo.cluster = frm.clusters.value;
7084 28 Mar 23 nicklas 369     if (frm.priority.selectedIndex >= 0)
7084 28 Mar 23 nicklas 370     {
7084 28 Mar 23 nicklas 371       submitInfo.priority = parseInt(frm.priority.value);
7084 28 Mar 23 nicklas 372     }
7084 28 Mar 23 nicklas 373     if (frm.partition.selectedIndex >= 0)
7084 28 Mar 23 nicklas 374     {
7084 28 Mar 23 nicklas 375       submitInfo.partition = frm.partition.value;
7084 28 Mar 23 nicklas 376     }
7372 06 Oct 23 nicklas 377     if (frm.override.checked)
7372 06 Oct 23 nicklas 378     {
7372 06 Oct 23 nicklas 379       submitInfo.submitOptionsOverride = frm.submitOptionsOverride.value;
7372 06 Oct 23 nicklas 380     }
7084 28 Mar 23 nicklas 381     submitInfo.debug = frm.debug.checked;
7084 28 Mar 23 nicklas 382     submitInfo.autoConfirm = frm.autoConfirm.checked;
7084 28 Mar 23 nicklas 383       
7084 28 Mar 23 nicklas 384     var mergedSequences = [];
7084 28 Mar 23 nicklas 385     submitInfo.mergedSequences = mergedSequences;
7084 28 Mar 23 nicklas 386       
7084 28 Mar 23 nicklas 387     for (var msNo = 0; msNo < frm.mergedSequences.length; msNo++)
7084 28 Mar 23 nicklas 388     {
7084 28 Mar 23 nicklas 389       if (frm.mergedSequences[msNo].selected) 
7084 28 Mar 23 nicklas 390       {
7084 28 Mar 23 nicklas 391         var ms = {};
7084 28 Mar 23 nicklas 392         ms.id = frm.mergedSequences[msNo].mergedSequences.id;
7084 28 Mar 23 nicklas 393         mergedSequences[mergedSequences.length] = ms;
7084 28 Mar 23 nicklas 394       }
7084 28 Mar 23 nicklas 395     }
7084 28 Mar 23 nicklas 396
7084 28 Mar 23 nicklas 397     var url = '../BwaMem2.servlet?ID='+App.getSessionId();
7084 28 Mar 23 nicklas 398     url += '&cmd=StartBwaMem2Alignment';
7084 28 Mar 23 nicklas 399
7084 28 Mar 23 nicklas 400     Wizard.showLoadingAnimation('Performing registration...');
7084 28 Mar 23 nicklas 401     Wizard.asyncJsonRequest(url, bwa.submissionResults, 'POST', JSON.stringify(submitInfo));
7084 28 Mar 23 nicklas 402   }
7084 28 Mar 23 nicklas 403   
7084 28 Mar 23 nicklas 404   bwa.submissionResults = function(response)
7084 28 Mar 23 nicklas 405   {
7084 28 Mar 23 nicklas 406     Wizard.showFinalMessage(response.messages);
7084 28 Mar 23 nicklas 407     Doc.show('gorestart');
7084 28 Mar 23 nicklas 408   }
7084 28 Mar 23 nicklas 409
7084 28 Mar 23 nicklas 410   return bwa;
7084 28 Mar 23 nicklas 411 }();
7084 28 Mar 23 nicklas 412
7084 28 Mar 23 nicklas 413 Doc.onLoad(BwaMem2.initPage);
7084 28 Mar 23 nicklas 414