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

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