extensions/net.sf.basedb.reggie/trunk/resources/analysis/hisat_start.js

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