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

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