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

Code
Comments
Other
Rev Date Author Line
7092 04 Apr 23 nicklas 1 var BwaMem2 = function()
7092 04 Apr 23 nicklas 2 {
7092 04 Apr 23 nicklas 3   var bwa = {};
7092 04 Apr 23 nicklas 4   var debug = 0;
7092 04 Apr 23 nicklas 5   
7092 04 Apr 23 nicklas 6   var JOB_IMAGE = { 'DONE': 'ok.png', 'ERROR': 'error.png'};
7092 04 Apr 23 nicklas 7   
7092 04 Apr 23 nicklas 8   var alignedSequences;
7092 04 Apr 23 nicklas 9   
7092 04 Apr 23 nicklas 10   // Page initialization
7092 04 Apr 23 nicklas 11   bwa.initPage = function()
7092 04 Apr 23 nicklas 12   {
7092 04 Apr 23 nicklas 13     
7092 04 Apr 23 nicklas 14     // Step 1
7092 04 Apr 23 nicklas 15
7092 04 Apr 23 nicklas 16     // Navigation
7092 04 Apr 23 nicklas 17     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
7092 04 Apr 23 nicklas 18     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
7092 04 Apr 23 nicklas 19     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
7092 04 Apr 23 nicklas 20     Buttons.addClickHandler('goregister', Wizard.goRegister);
7092 04 Apr 23 nicklas 21       
7092 04 Apr 23 nicklas 22     // Final registration
7092 04 Apr 23 nicklas 23     Events.addEventHandler('wizard', 'wizard-submit', bwa.submit);
7092 04 Apr 23 nicklas 24
7092 04 Apr 23 nicklas 25     Wizard.showLoadingAnimation('Loading bioassays...');
7092 04 Apr 23 nicklas 26     var url = '../BwaMem2.servlet?ID='+App.getSessionId();
7092 04 Apr 23 nicklas 27     url += '&cmd=GetUnconfirmedAlignedSequences';
7092 04 Apr 23 nicklas 28     Wizard.asyncJsonRequest(url, bwa.initializeStep1);
7092 04 Apr 23 nicklas 29   }
7092 04 Apr 23 nicklas 30   
7092 04 Apr 23 nicklas 31   // --- Step 1 -----------------------------------
7092 04 Apr 23 nicklas 32   bwa.initializeStep1 = function(response)
7092 04 Apr 23 nicklas 33   {
7092 04 Apr 23 nicklas 34     alignedSequences = response.alignedSequences;
7092 04 Apr 23 nicklas 35     if (alignedSequences.length == 0)
7092 04 Apr 23 nicklas 36     {
7092 04 Apr 23 nicklas 37       Wizard.setFatalError('No aligned sequences available for processing.');
7092 04 Apr 23 nicklas 38       return;
7092 04 Apr 23 nicklas 39     }
7119 19 Apr 23 nicklas 40     var limits = response.limits;
7092 04 Apr 23 nicklas 41     
7092 04 Apr 23 nicklas 42     var html = '<table id="alignedSequencesTable">';
7092 04 Apr 23 nicklas 43     html += '<thead class="bg-filled-100">';
7092 04 Apr 23 nicklas 44     // Header row
7092 04 Apr 23 nicklas 45     html += '<tr>';
7092 04 Apr 23 nicklas 46     html += '<th></th>';
7092 04 Apr 23 nicklas 47     html += '<th class="dottedleft">Sample</th>';
7114 14 Apr 23 nicklas 48     html += '<th class="dottedleft">PF Reads</th>';
7114 14 Apr 23 nicklas 49     html += '<th>Aligned pairs</th>';
7114 14 Apr 23 nicklas 50     html += '<th>Duplicates</th>';
7114 14 Apr 23 nicklas 51     html += '<th class="dottedleft">PF Bases</th>';
7114 14 Apr 23 nicklas 52     html += '<th>Q30 Bases</th>';
7114 14 Apr 23 nicklas 53     html += '<th>Mean</th>';
7092 04 Apr 23 nicklas 54     html += '<th class="dottedleft" colspan="3">Genotypes QC</th>'
7092 04 Apr 23 nicklas 55     html += '<th class="dottedleft"></th>';
7092 04 Apr 23 nicklas 56     html += '<th class="dottedleft"></th>';
7092 04 Apr 23 nicklas 57     html += '<th class="dottedleft" colspan="2">Actions</th>';
7092 04 Apr 23 nicklas 58     html += '<th class="dottedleft">Comment</th>';
7092 04 Apr 23 nicklas 59     html += '</tr>';
7092 04 Apr 23 nicklas 60     
7092 04 Apr 23 nicklas 61     html += '<tr>';
7092 04 Apr 23 nicklas 62     html += '<th>Library</th>';
7092 04 Apr 23 nicklas 63     html += '<th class="dottedleft">type</th>';
7114 14 Apr 23 nicklas 64     
7114 14 Apr 23 nicklas 65     html += '<th class="dottedleft">(millions)</th>';
7114 14 Apr 23 nicklas 66     html += '<th>(millions)</th>';
7114 14 Apr 23 nicklas 67     html += '<th>(optical)</th>';
7114 14 Apr 23 nicklas 68     
7114 14 Apr 23 nicklas 69     html += '<th class="dottedleft">(billions)</th>';
7114 14 Apr 23 nicklas 70     html += '<th>(billions)</th>';
7114 14 Apr 23 nicklas 71     html += '<th>coverage</th>';
7114 14 Apr 23 nicklas 72     
7092 04 Apr 23 nicklas 73     html += '<th class="dottedleft">Count</th>';
7092 04 Apr 23 nicklas 74     html += '<th>HET</th>';
7092 04 Apr 23 nicklas 75     html += '<th class="icon-col"></th>';
7092 04 Apr 23 nicklas 76     html += '<th class="dottedleft">Job</th>';
7092 04 Apr 23 nicklas 77     html += '<th class="dottedleft">Files</th>';
7092 04 Apr 23 nicklas 78     html += '<th><span id="realign" data-prefix="realign" class="interactable link" title="Toggle selection – use CTRL, ALT or SHIFT to clear">Re-align</span></th>';
7119 19 Apr 23 nicklas 79     html += '<th><span id="confirmAlign" data-prefix="confirm" class="interactable link" title="Toggle selection – use CTRL, ALT or SHIFT to clear">Confirm</span></th>';
7092 04 Apr 23 nicklas 80     html += '<th class="dottedleft"></th>';
7092 04 Apr 23 nicklas 81     html += '</tr>';
7092 04 Apr 23 nicklas 82     html += '</thead>';
7092 04 Apr 23 nicklas 83     html += '<tbody>';
7092 04 Apr 23 nicklas 84     var numWithError = 0;
7092 04 Apr 23 nicklas 85     for (var alignedNo = 0; alignedNo < alignedSequences.length; alignedNo++)
7092 04 Apr 23 nicklas 86     {
7092 04 Apr 23 nicklas 87       var aligned = alignedSequences[alignedNo];
7092 04 Apr 23 nicklas 88       var merged = aligned.merged;
7092 04 Apr 23 nicklas 89       
7120 20 Apr 23 nicklas 90       var reads = merged.READS == null ? '-' : Numbers.formatNumber(merged.READS/1000000, 1);
7120 20 Apr 23 nicklas 91       var alignedReads = aligned.ALIGNED_PAIRS == null ? '-' : Numbers.formatNumber(aligned.ALIGNED_PAIRS/1000000, 1);
7120 20 Apr 23 nicklas 92       var alignedPercent = aligned.ALIGNED_PAIRS && merged.READS ? ' ('+Numbers.formatNumber(100*aligned.ALIGNED_PAIRS/merged.READS, 1, '%')+')' : '';
7120 20 Apr 23 nicklas 93       var pfBases = aligned.PF_BASES == null ? '-' : Numbers.formatNumber(aligned.PF_BASES/1000000000, 1);
7120 20 Apr 23 nicklas 94       var q30Bases = aligned.PF_Q30_BASES == null ? '-' : Numbers.formatNumber(aligned.PF_Q30_BASES/1000000000, 1);
7120 20 Apr 23 nicklas 95       var q30Percent = aligned.PF_Q30_BASES && aligned.PF_BASES ? ' ('+Numbers.formatNumber(100*aligned.PF_Q30_BASES/aligned.PF_BASES, 1, '%')+')' : '';
7120 20 Apr 23 nicklas 96       var percentDuplicates = aligned.FRACTION_DUPLICATION == null ? '-' : Numbers.formatNumber(100*aligned.FRACTION_DUPLICATION, 1, '%');
7120 20 Apr 23 nicklas 97       var opticalDuplicates = aligned.FRACTION_OPTICAL_DUPLICATION == null ? '' : ' ('+Numbers.formatNumber(100*aligned.FRACTION_OPTICAL_DUPLICATION, 1, '%')+')';
7120 20 Apr 23 nicklas 98       var meanCoverage = aligned.MEAN_COVERAGE == null ? '-' : Numbers.formatNumber(aligned.MEAN_COVERAGE, 1);
7092 04 Apr 23 nicklas 99       var genotypeCount = aligned.QC_GENOTYPE_COUNT || '-';
7120 20 Apr 23 nicklas 100       var hetPct = aligned.QC_GENOTYPE_HET_PCT == null ? '' : Numbers.formatNumber(aligned.QC_GENOTYPE_HET_PCT, 0, '%');
7092 04 Apr 23 nicklas 101       var job = aligned.job;
7134 24 Apr 23 nicklas 102
7092 04 Apr 23 nicklas 103       var isError = job.status == 'ERROR';
7092 04 Apr 23 nicklas 104       
7119 19 Apr 23 nicklas 105       // Warnings
7119 19 Apr 23 nicklas 106       var alignedWarning = '';
7119 19 Apr 23 nicklas 107       var duplicationWarning = '';
7119 19 Apr 23 nicklas 108       var hetWarning = '';
7119 19 Apr 23 nicklas 109       var coverageWarning = '';
7134 24 Apr 23 nicklas 110       if (!job.debug)
7119 19 Apr 23 nicklas 111       {
7134 24 Apr 23 nicklas 112         if (aligned.ALIGNED_PAIRS != null && aligned.ALIGNED_PAIRS < limits.minAlignedPairs)
7134 24 Apr 23 nicklas 113         {
7134 24 Apr 23 nicklas 114           alignedWarning = ' <img src="../images/warning.png" title="Less than '+Reggie.formatCount(limits.minAlignedPairs) + ' aligned pairs">';
7134 24 Apr 23 nicklas 115         }
7134 24 Apr 23 nicklas 116         if (aligned.FRACTION_DUPLICATION != null && aligned.FRACTION_DUPLICATION > limits.maxFractionDuplication)
7134 24 Apr 23 nicklas 117         {
7134 24 Apr 23 nicklas 118           duplicationWarning = ' <img src="../images/warning.png" title="More than '+Math.round(100*limits.maxFractionDuplication)+'% duplication">';
7134 24 Apr 23 nicklas 119         }
7134 24 Apr 23 nicklas 120         if (aligned.QC_GENOTYPE_HET_PCT != null && aligned.QC_GENOTYPE_HET_PCT > limits.maxHetPct)
7134 24 Apr 23 nicklas 121         {
7134 24 Apr 23 nicklas 122           hetWarning = ' <img src="../images/warning.png" title="More than '+Math.round(limits.maxHetPct)+'% HET may indicate contamination">';
7134 24 Apr 23 nicklas 123         }
7134 24 Apr 23 nicklas 124         if (aligned.MEAN_COVERAGE != null && aligned.MEAN_COVERAGE < limits.minMeanCoverage)
7134 24 Apr 23 nicklas 125         {
7134 24 Apr 23 nicklas 126           coverageWarning = ' <img src="../images/warning.png" title="Less than '+Math.round(limits.minMeanCoverage)+' coverage">';
7134 24 Apr 23 nicklas 127         }
7119 19 Apr 23 nicklas 128       }
7119 19 Apr 23 nicklas 129       
7092 04 Apr 23 nicklas 130       html += '<tr class="highlight ' + (alignedNo % 4 < 2 ? 'evenrow' : 'oddrow') + '">';
7092 04 Apr 23 nicklas 131       html += '<td class="prompt if-yellow">'+aligned.name+'</td>';
7092 04 Apr 23 nicklas 132       html += '<td class="dottedleft">'+(aligned.PIPELINE=='DNA/Tumor/WGS'?'Tumor':'Normal')+'</td>';
7092 04 Apr 23 nicklas 133       html += '<td class="dottedleft">'+reads+'</td>';
7119 19 Apr 23 nicklas 134       html += '<td>'+alignedReads+alignedPercent+alignedWarning+'</td>';
7119 19 Apr 23 nicklas 135       html += '<td>'+percentDuplicates+opticalDuplicates+duplicationWarning+'</td>';
7119 19 Apr 23 nicklas 136
7114 14 Apr 23 nicklas 137       html += '<td class="dottedleft">'+pfBases+'</td>';
7114 14 Apr 23 nicklas 138       html += '<td>'+q30Bases+q30Percent+'</td>';
7092 04 Apr 23 nicklas 139
7119 19 Apr 23 nicklas 140       html += '<td>'+meanCoverage+coverageWarning+'</td>';
7092 04 Apr 23 nicklas 141       html += '<td class="dottedleft">'+genotypeCount+'</td>';
7119 19 Apr 23 nicklas 142       html += '<td>'+hetPct+hetWarning+'</td>';
7092 04 Apr 23 nicklas 143       html += '<td class="icon-col">';
7092 04 Apr 23 nicklas 144       if  (aligned.qcVcf)
7092 04 Apr 23 nicklas 145       {
7092 04 Apr 23 nicklas 146         html += '<span class="link vcf-link" data-file-id="'+aligned.qcVcf.id+'" data-item-id="'+aligned.id+'" title="View VCF statistics"><img src="../images/vcf_file.png"></span>';
7092 04 Apr 23 nicklas 147       }
7092 04 Apr 23 nicklas 148       html += '</td>';
7092 04 Apr 23 nicklas 149       html += '<td class="dottedleft">';
7092 04 Apr 23 nicklas 150       html += '<span class="link item-link" data-item-type="JOB" data-item-id="'+job.id+'" title="'+Strings.encodeTags(job.statusMessage)+'"><img src="../images/'+JOB_IMAGE[job.status]+'"></span>';
7134 24 Apr 23 nicklas 151       if (job.debug)
7134 24 Apr 23 nicklas 152       {
7134 24 Apr 23 nicklas 153         html += '<img src="../images/'+(isError?'bug-red':'bug-green')+'.png" title="This job was run in DEBUG mode">'
7134 24 Apr 23 nicklas 154       }
7092 04 Apr 23 nicklas 155       html += '</td>';
7092 04 Apr 23 nicklas 156       if (aligned.DataFilesFolder && job.server)
7092 04 Apr 23 nicklas 157       {
7092 04 Apr 23 nicklas 158         html += '<td class="dottedleft">';
7092 04 Apr 23 nicklas 159         html += '<span class="link file-link" data-server="'+Strings.encodeTags(job.server)+'" data-folder="'+Strings.encodeTags(aligned.DataFilesFolder)+'" data-item-id="'+aligned.id+'" title="View generated files"><img src="../images/remote_folder.png"></span>';
7092 04 Apr 23 nicklas 160         html += '</td>';
7092 04 Apr 23 nicklas 161       }
7092 04 Apr 23 nicklas 162       else
7092 04 Apr 23 nicklas 163       {
7092 04 Apr 23 nicklas 164         html += '<td class="dottedleft">-</td>';
7092 04 Apr 23 nicklas 165       }
7092 04 Apr 23 nicklas 166       
7119 19 Apr 23 nicklas 167       var confirmChecked = !isError ? ' checked' : '';
7092 04 Apr 23 nicklas 168       var realignChecked = isError ? ' checked' : '';
7119 19 Apr 23 nicklas 169       var confirmDisabled = isError ? ' disabled' : '';
7092 04 Apr 23 nicklas 170       if (isError) numWithError++;
7092 04 Apr 23 nicklas 171
7092 04 Apr 23 nicklas 172       html += '<td><input type="checkbox" name="realign.'+aligned.id+'"'+realignChecked+'></td>';
7119 19 Apr 23 nicklas 173       html += '<td><input type="checkbox" name="confirm.'+aligned.id+'"'+confirmChecked+confirmDisabled+'></td>';
7092 04 Apr 23 nicklas 174       html += '<td class="dottedleft comment"><input type="text" name="comment.'+aligned.id+'"></td>';
7092 04 Apr 23 nicklas 175       html += '</tr>';
7092 04 Apr 23 nicklas 176
7092 04 Apr 23 nicklas 177     }
7092 04 Apr 23 nicklas 178     html += '</tbody>';
7092 04 Apr 23 nicklas 179     html += '</table>';
7092 04 Apr 23 nicklas 180     Doc.element('alignedSequences').innerHTML = html;
7092 04 Apr 23 nicklas 181     if (numWithError > 0) Doc.show('delete-items', 'table');
7092 04 Apr 23 nicklas 182     
7092 04 Apr 23 nicklas 183     Events.addEventHandler('realign', 'click', bwa.toggleSelection);
7119 19 Apr 23 nicklas 184     Events.addEventHandler('confirmAlign', 'click', bwa.toggleSelection);
7092 04 Apr 23 nicklas 185     
7092 04 Apr 23 nicklas 186     // Add click handler to items
7092 04 Apr 23 nicklas 187     var clickableItems = document.getElementsByClassName('item-link');
7092 04 Apr 23 nicklas 188     for (var i = 0; i < clickableItems.length; i++)
7092 04 Apr 23 nicklas 189     {
7092 04 Apr 23 nicklas 190       Events.addEventHandler(clickableItems[i], 'click', Items.itemOnClick);
7092 04 Apr 23 nicklas 191     }
7092 04 Apr 23 nicklas 192     
7092 04 Apr 23 nicklas 193     // Add click handler to file links
7092 04 Apr 23 nicklas 194     var clickableItems = document.getElementsByClassName('file-link');
7092 04 Apr 23 nicklas 195     for (var i = 0; i < clickableItems.length; i++)
7092 04 Apr 23 nicklas 196     {
7092 04 Apr 23 nicklas 197       Events.addEventHandler(clickableItems[i], 'click', bwa.fileLinkOnClick);
7092 04 Apr 23 nicklas 198     }
7092 04 Apr 23 nicklas 199
7092 04 Apr 23 nicklas 200     // Add click handler to VCF files
7092 04 Apr 23 nicklas 201     var clickableItems = document.getElementsByClassName('vcf-link');
7092 04 Apr 23 nicklas 202     for (var i = 0; i < clickableItems.length; i++)
7092 04 Apr 23 nicklas 203     {
7092 04 Apr 23 nicklas 204       Events.addEventHandler(clickableItems[i], 'click', bwa.vcfLinkOnClick);
7092 04 Apr 23 nicklas 205     }
7092 04 Apr 23 nicklas 206
7092 04 Apr 23 nicklas 207     Doc.show('step-1');
7092 04 Apr 23 nicklas 208     Doc.show('goregister');
7092 04 Apr 23 nicklas 209   }
7092 04 Apr 23 nicklas 210   
7092 04 Apr 23 nicklas 211   bwa.fileLinkOnClick = function(event)
7092 04 Apr 23 nicklas 212   {
7092 04 Apr 23 nicklas 213     var folder = Data.get(event.currentTarget, 'folder');
7092 04 Apr 23 nicklas 214     var server = Data.get(event.currentTarget, 'server');
7092 04 Apr 23 nicklas 215     var itemId = Data.get(event.currentTarget, 'item-id');
7092 04 Apr 23 nicklas 216     server = server.replace(/\s*\[.*\]/, '');
7092 04 Apr 23 nicklas 217     var url = '../analysis/view_remote_files.jsp?ID=' + App.getSessionId();
7092 04 Apr 23 nicklas 218     url += '&clusterId='+server;
7092 04 Apr 23 nicklas 219     url += '&archive=project-archive-dna';
7092 04 Apr 23 nicklas 220     url += '&path='+encodeURIComponent(folder);
7092 04 Apr 23 nicklas 221     url += '&itemType=DERIVEDBIOASSAY&itemId='+itemId;
7092 04 Apr 23 nicklas 222     Dialogs.openPopup(url, 'ViewProjectFiles', 750, 500);
7092 04 Apr 23 nicklas 223   }
7092 04 Apr 23 nicklas 224   
7092 04 Apr 23 nicklas 225   bwa.vcfLinkOnClick = function(event)
7092 04 Apr 23 nicklas 226   {
7092 04 Apr 23 nicklas 227     var fileId = Data.int(event.currentTarget, 'file-id');
7092 04 Apr 23 nicklas 228     var itemId = Data.get(event.currentTarget, 'item-id');
7092 04 Apr 23 nicklas 229
7092 04 Apr 23 nicklas 230     var url = '../analysis/view_genotypes.jsp?ID=' + App.getSessionId();
7092 04 Apr 23 nicklas 231     url += '&fileId='+fileId;
7092 04 Apr 23 nicklas 232     url += '&itemId='+itemId;
7092 04 Apr 23 nicklas 233     Dialogs.openPopup(url, 'ViewVcf', 750, 500);
7092 04 Apr 23 nicklas 234   }
7092 04 Apr 23 nicklas 235   
7092 04 Apr 23 nicklas 236   bwa.toggleSelection = function(event)
7092 04 Apr 23 nicklas 237   {
7092 04 Apr 23 nicklas 238     var prefix = Data.get(event.currentTarget, 'prefix');
7092 04 Apr 23 nicklas 239     var specialKey = event.altKey || event.ctrlKey || event.shiftKey;
7092 04 Apr 23 nicklas 240     
7092 04 Apr 23 nicklas 241     var frm = document.forms['reggie'];
7092 04 Apr 23 nicklas 242     for (var alignedNo = 0; alignedNo < alignedSequences.length; alignedNo++)
7092 04 Apr 23 nicklas 243     {
7092 04 Apr 23 nicklas 244       var aligned = alignedSequences[alignedNo];
7092 04 Apr 23 nicklas 245       var chk = frm[prefix+'.'+aligned.id];
7092 04 Apr 23 nicklas 246       if (chk && !chk.disabled)
7092 04 Apr 23 nicklas 247       {
7092 04 Apr 23 nicklas 248         chk.checked = specialKey ? false : !chk.checked;
7092 04 Apr 23 nicklas 249       }
7092 04 Apr 23 nicklas 250     }
7092 04 Apr 23 nicklas 251   }
7092 04 Apr 23 nicklas 252   
7092 04 Apr 23 nicklas 253   bwa.submit = function()
7092 04 Apr 23 nicklas 254   {
7092 04 Apr 23 nicklas 255     var frm = document.forms['reggie'];
7092 04 Apr 23 nicklas 256     var submitInfo = {};
7092 04 Apr 23 nicklas 257     submitInfo.deleteItemsCreatedByFailedJobs = frm.deleteItemsCreatedByFailedJobs.checked;
7092 04 Apr 23 nicklas 258     
7092 04 Apr 23 nicklas 259     var all = [];
7092 04 Apr 23 nicklas 260     submitInfo.alignedSequences = all;
7092 04 Apr 23 nicklas 261     for (var alignedNo = 0; alignedNo < alignedSequences.length; alignedNo++)
7092 04 Apr 23 nicklas 262     {
7092 04 Apr 23 nicklas 263       var aligned = alignedSequences[alignedNo];
7092 04 Apr 23 nicklas 264       var tmp = {};
7092 04 Apr 23 nicklas 265       tmp.id = aligned.id;
7092 04 Apr 23 nicklas 266       
7092 04 Apr 23 nicklas 267       tmp.realign = frm['realign.'+aligned.id].checked;
7119 19 Apr 23 nicklas 268       tmp.confirm = frm['confirm.'+aligned.id].checked;
7092 04 Apr 23 nicklas 269       tmp.comment = frm['comment.'+aligned.id].value;
7092 04 Apr 23 nicklas 270       
7092 04 Apr 23 nicklas 271       all[all.length] = tmp;
7092 04 Apr 23 nicklas 272     }
7092 04 Apr 23 nicklas 273     
7092 04 Apr 23 nicklas 274     var url = '../BwaMem2.servlet?ID='+App.getSessionId();
7092 04 Apr 23 nicklas 275     url += '&cmd=RegisterBwaMem2Alignment';
7092 04 Apr 23 nicklas 276     Wizard.showLoadingAnimation('Performing registration...');
7092 04 Apr 23 nicklas 277     Wizard.asyncJsonRequest(url, bwa.submissionResults, 'POST', JSON.stringify(submitInfo));
7092 04 Apr 23 nicklas 278   }
7092 04 Apr 23 nicklas 279   
7092 04 Apr 23 nicklas 280   bwa.submissionResults = function(response)
7092 04 Apr 23 nicklas 281   {
7092 04 Apr 23 nicklas 282     Wizard.showFinalMessage(response.messages);
7092 04 Apr 23 nicklas 283     Doc.show('gorestart');
7092 04 Apr 23 nicklas 284   }
7092 04 Apr 23 nicklas 285   
7092 04 Apr 23 nicklas 286   
7092 04 Apr 23 nicklas 287   return bwa;
7092 04 Apr 23 nicklas 288 }();
7092 04 Apr 23 nicklas 289
7092 04 Apr 23 nicklas 290 Doc.onLoad(BwaMem2.initPage);
7092 04 Apr 23 nicklas 291