4642 |
28 Nov 17 |
nicklas |
var GenoType = function() |
4642 |
28 Nov 17 |
nicklas |
2 |
{ |
4642 |
28 Nov 17 |
nicklas |
var gt = {}; |
4642 |
28 Nov 17 |
nicklas |
var debug = 0; |
5547 |
07 Aug 19 |
nicklas |
var selectionIsValid = false; |
4642 |
28 Nov 17 |
nicklas |
var subtypeAlignedSequences = null; |
5547 |
07 Aug 19 |
nicklas |
var annotationTypePipeline = null; |
4648 |
15 Dec 17 |
nicklas |
var alignedSequences; |
5547 |
07 Aug 19 |
nicklas |
var manuallySelected = []; |
4642 |
28 Nov 17 |
nicklas |
10 |
|
4642 |
28 Nov 17 |
nicklas |
// Page initialization |
4642 |
28 Nov 17 |
nicklas |
gt.initPage = function() |
4642 |
28 Nov 17 |
nicklas |
13 |
{ |
4642 |
28 Nov 17 |
nicklas |
14 |
|
4642 |
28 Nov 17 |
nicklas |
// Step 1 |
4642 |
28 Nov 17 |
nicklas |
Buttons.addClickHandler('btnSelectAlignedSequences', gt.selectAlignedSequences); |
4642 |
28 Nov 17 |
nicklas |
Events.addEventHandler('alignedSequences', 'base-selected', gt.setAlignedSequenceCallback); |
5547 |
07 Aug 19 |
nicklas |
Events.addEventHandler('alignedSequences', 'change', gt.alignedSequencesOnChange); |
4642 |
28 Nov 17 |
nicklas |
Events.addEventHandler('step-1', 'wizard-validate', gt.validateStep1); |
4642 |
28 Nov 17 |
nicklas |
20 |
|
4646 |
14 Dec 17 |
nicklas |
// Step 2 |
4646 |
14 Dec 17 |
nicklas |
Events.addEventHandler('step-2', 'wizard-initialize', gt.initializeStep2); |
4646 |
14 Dec 17 |
nicklas |
23 |
|
4642 |
28 Nov 17 |
nicklas |
// Navigation |
4642 |
28 Nov 17 |
nicklas |
Buttons.addClickHandler('gocancel', Wizard.cancelWizard); |
4642 |
28 Nov 17 |
nicklas |
Buttons.addClickHandler('gorestart', Wizard.restartWizard); |
4642 |
28 Nov 17 |
nicklas |
Buttons.addClickHandler('gonext', Wizard.goNextOnClick); |
4642 |
28 Nov 17 |
nicklas |
Buttons.addClickHandler('goregister', Wizard.goRegister); |
4642 |
28 Nov 17 |
nicklas |
29 |
|
4642 |
28 Nov 17 |
nicklas |
// Final registration |
4642 |
28 Nov 17 |
nicklas |
Events.addEventHandler('wizard', 'wizard-submit', gt.submit); |
4642 |
28 Nov 17 |
nicklas |
32 |
|
4642 |
28 Nov 17 |
nicklas |
Wizard.showLoadingAnimation('Loading bioassays...'); |
4642 |
28 Nov 17 |
nicklas |
var url = '../Genotype.servlet?ID='+App.getSessionId(); |
4642 |
28 Nov 17 |
nicklas |
url += '&cmd=GetAlignedSequencesForGenotypeQc'; |
4642 |
28 Nov 17 |
nicklas |
Wizard.asyncJsonRequest(url, gt.initializeStep1); |
4642 |
28 Nov 17 |
nicklas |
37 |
} |
4642 |
28 Nov 17 |
nicklas |
38 |
|
4642 |
28 Nov 17 |
nicklas |
// --- Step 1 ----------------------------------- |
4642 |
28 Nov 17 |
nicklas |
gt.initializeStep1 = function(response) |
4642 |
28 Nov 17 |
nicklas |
41 |
{ |
4642 |
28 Nov 17 |
nicklas |
var alignedSequences = response.alignedSequences; |
4642 |
28 Nov 17 |
nicklas |
var frm = document.forms['reggie']; |
4642 |
28 Nov 17 |
nicklas |
44 |
|
7202 |
25 May 23 |
nicklas |
var msg = response.existingTumorsCount + ' tumors'; |
7202 |
25 May 23 |
nicklas |
if (response.existingNormalsCount) msg += ' and '+response.existingNormalsCount+' normals'; |
6591 |
21 Feb 22 |
nicklas |
Doc.element('alreadyChecked').innerHTML = msg; |
4646 |
14 Dec 17 |
nicklas |
48 |
|
4642 |
28 Nov 17 |
nicklas |
if (alignedSequences != null && alignedSequences.length > 0) |
4642 |
28 Nov 17 |
nicklas |
50 |
{ |
4642 |
28 Nov 17 |
nicklas |
var firstPlate = null; |
4925 |
13 Aug 18 |
nicklas |
var numNoPatient = 0; |
4642 |
28 Nov 17 |
nicklas |
for (var asNo=0; asNo < alignedSequences.length; asNo++) |
4642 |
28 Nov 17 |
nicklas |
54 |
{ |
4642 |
28 Nov 17 |
nicklas |
var seq = alignedSequences[asNo]; |
4642 |
28 Nov 17 |
nicklas |
var lib = seq.lib; |
7214 |
29 May 23 |
nicklas |
var libPlate = seq.bioWell ? seq.bioWell.bioPlate : null; |
4642 |
28 Nov 17 |
nicklas |
if (firstPlate == null && libPlate != null) firstPlate = libPlate.name; |
5547 |
07 Aug 19 |
nicklas |
59 |
|
5547 |
07 Aug 19 |
nicklas |
if (!seq.patient) numNoPatient++; |
4642 |
28 Nov 17 |
nicklas |
61 |
|
5547 |
07 Aug 19 |
nicklas |
var option = gt.createListOption(asNo+1, seq, seq.DO_NOT_USE == null && libPlate != null && libPlate.name==firstPlate); |
4642 |
28 Nov 17 |
nicklas |
frm.alignedSequences.options[frm.alignedSequences.length] = option; |
4642 |
28 Nov 17 |
nicklas |
64 |
} |
4925 |
13 Aug 18 |
nicklas |
65 |
|
4925 |
13 Aug 18 |
nicklas |
if (numNoPatient > 0) |
4925 |
13 Aug 18 |
nicklas |
67 |
{ |
4925 |
13 Aug 18 |
nicklas |
Wizard.showGoNextConfirmation(true, 'Some alignments have no patient information and will be excluded from the genotype check.'); |
4925 |
13 Aug 18 |
nicklas |
69 |
} |
5547 |
07 Aug 19 |
nicklas |
Events.sendChangeEvent('alignedSequences'); |
4642 |
28 Nov 17 |
nicklas |
71 |
} |
4642 |
28 Nov 17 |
nicklas |
else |
4642 |
28 Nov 17 |
nicklas |
73 |
{ |
4649 |
20 Dec 17 |
nicklas |
Wizard.setInputStatus('alignedSequences', 'invalid', 'No new alignments available for processing'); |
4642 |
28 Nov 17 |
nicklas |
75 |
} |
4642 |
28 Nov 17 |
nicklas |
76 |
|
4642 |
28 Nov 17 |
nicklas |
Doc.show('step-1'); |
4646 |
14 Dec 17 |
nicklas |
Doc.show('gonext'); |
4642 |
28 Nov 17 |
nicklas |
79 |
|
4642 |
28 Nov 17 |
nicklas |
frm.alignedSequences.focus(); |
4642 |
28 Nov 17 |
nicklas |
81 |
} |
4642 |
28 Nov 17 |
nicklas |
82 |
|
4642 |
28 Nov 17 |
nicklas |
gt.validateStep1 = function(event) |
4642 |
28 Nov 17 |
nicklas |
84 |
{ |
5547 |
07 Aug 19 |
nicklas |
if (!selectionIsValid) event.preventDefault(); |
4642 |
28 Nov 17 |
nicklas |
86 |
} |
4642 |
28 Nov 17 |
nicklas |
87 |
|
4642 |
28 Nov 17 |
nicklas |
gt.selectAlignedSequences = function() |
4642 |
28 Nov 17 |
nicklas |
89 |
{ |
4642 |
28 Nov 17 |
nicklas |
var frm = document.forms['reggie']; |
4642 |
28 Nov 17 |
nicklas |
if (frm.alignedSequences.disabled) return; |
4642 |
28 Nov 17 |
nicklas |
92 |
|
4642 |
28 Nov 17 |
nicklas |
if (subtypeAlignedSequences == null) |
4642 |
28 Nov 17 |
nicklas |
94 |
{ |
4642 |
28 Nov 17 |
nicklas |
subtypeAlignedSequences = Reggie.getSubtypeInfo('ALIGNED_SEQUENCES'); |
4642 |
28 Nov 17 |
nicklas |
96 |
} |
5547 |
07 Aug 19 |
nicklas |
if (annotationTypePipeline == null) |
5547 |
07 Aug 19 |
nicklas |
98 |
{ |
5547 |
07 Aug 19 |
nicklas |
annotationTypePipeline = Reggie.getAnnotationTypeInfo('PIPELINE'); |
5547 |
07 Aug 19 |
nicklas |
100 |
} |
4642 |
28 Nov 17 |
nicklas |
101 |
|
5547 |
07 Aug 19 |
nicklas |
// Reset list |
5547 |
07 Aug 19 |
nicklas |
manuallySelected = []; |
4642 |
28 Nov 17 |
nicklas |
var url = '&resetTemporary=1'; |
4642 |
28 Nov 17 |
nicklas |
url += '&tmpfilter:INT:itemSubtype='+subtypeAlignedSequences.id; |
5547 |
07 Aug 19 |
nicklas |
url += '&tmpfilter:STRING:'+encodeURIComponent('#')+annotationTypePipeline.id+'='+encodeURIComponent('RNAseq/Hisat/StringTie'); |
4642 |
28 Nov 17 |
nicklas |
Dialogs.selectItem('DERIVEDBIOASSAY', 'alignedSequences', 1, url); |
4642 |
28 Nov 17 |
nicklas |
108 |
} |
4642 |
28 Nov 17 |
nicklas |
109 |
|
4642 |
28 Nov 17 |
nicklas |
gt.setAlignedSequenceCallback = function(event) |
4642 |
28 Nov 17 |
nicklas |
111 |
{ |
4642 |
28 Nov 17 |
nicklas |
var ms = event.detail; |
4642 |
28 Nov 17 |
nicklas |
113 |
|
5547 |
07 Aug 19 |
nicklas |
var opt = Reggie.getListOption('alignedSequences', ms.id); |
5547 |
07 Aug 19 |
nicklas |
if (opt) |
4642 |
28 Nov 17 |
nicklas |
116 |
{ |
5547 |
07 Aug 19 |
nicklas |
opt.selected = true; |
5547 |
07 Aug 19 |
nicklas |
118 |
} |
5547 |
07 Aug 19 |
nicklas |
else |
5547 |
07 Aug 19 |
nicklas |
120 |
{ |
5547 |
07 Aug 19 |
nicklas |
manuallySelected[manuallySelected.length] = ms.id; |
5547 |
07 Aug 19 |
nicklas |
122 |
} |
5547 |
07 Aug 19 |
nicklas |
123 |
|
5547 |
07 Aug 19 |
nicklas |
if (ms.remaining == 0 && manuallySelected.length > 0) |
5547 |
07 Aug 19 |
nicklas |
125 |
{ |
5547 |
07 Aug 19 |
nicklas |
var url = '../Genotype.servlet?ID='+App.getSessionId(); |
5547 |
07 Aug 19 |
nicklas |
url += '&cmd=GetAlignedSequencesForGenotypeQc'; |
5547 |
07 Aug 19 |
nicklas |
url += '&items='+manuallySelected.join(','); |
5547 |
07 Aug 19 |
nicklas |
Wizard.showLoadingAnimation('Loading bioassays...'); |
5547 |
07 Aug 19 |
nicklas |
Wizard.asyncJsonRequest(url, gt.manuallySelected); |
5547 |
07 Aug 19 |
nicklas |
131 |
} |
5547 |
07 Aug 19 |
nicklas |
else |
5547 |
07 Aug 19 |
nicklas |
133 |
{ |
5547 |
07 Aug 19 |
nicklas |
Events.sendChangeEvent('alignedSequences'); |
5547 |
07 Aug 19 |
nicklas |
135 |
} |
5547 |
07 Aug 19 |
nicklas |
136 |
|
5547 |
07 Aug 19 |
nicklas |
137 |
} |
5547 |
07 Aug 19 |
nicklas |
gt.manuallySelected = function(response) |
5547 |
07 Aug 19 |
nicklas |
139 |
{ |
5547 |
07 Aug 19 |
nicklas |
var alignedSequences = response.alignedSequences; |
5547 |
07 Aug 19 |
nicklas |
var frm = document.forms['reggie']; |
5547 |
07 Aug 19 |
nicklas |
142 |
|
5547 |
07 Aug 19 |
nicklas |
if (alignedSequences != null && alignedSequences.length > 0) |
5547 |
07 Aug 19 |
nicklas |
144 |
{ |
5547 |
07 Aug 19 |
nicklas |
var offset = frm.alignedSequences.length+1; |
5547 |
07 Aug 19 |
nicklas |
for (var asNo=0; asNo < alignedSequences.length; asNo++) |
4642 |
28 Nov 17 |
nicklas |
147 |
{ |
5547 |
07 Aug 19 |
nicklas |
var as = alignedSequences[asNo]; |
5547 |
07 Aug 19 |
nicklas |
var option = gt.createListOption(asNo+offset, as, as.DO_NOT_USE == null); |
5547 |
07 Aug 19 |
nicklas |
frm.alignedSequences.options[frm.alignedSequences.length] = option; |
4642 |
28 Nov 17 |
nicklas |
151 |
} |
5547 |
07 Aug 19 |
nicklas |
Events.sendChangeEvent('alignedSequences'); |
4642 |
28 Nov 17 |
nicklas |
153 |
} |
5547 |
07 Aug 19 |
nicklas |
154 |
} |
4642 |
28 Nov 17 |
nicklas |
155 |
|
5547 |
07 Aug 19 |
nicklas |
gt.createListOption = function(index, alignedItem, selected) |
5547 |
07 Aug 19 |
nicklas |
157 |
{ |
5547 |
07 Aug 19 |
nicklas |
var lib = alignedItem.lib; |
5547 |
07 Aug 19 |
nicklas |
var isYellow = lib.specimen && lib.specimen.YellowLabel != null; |
7211 |
29 May 23 |
nicklas |
var libPlate = alignedItem.bioWell ? alignedItem.bioWell.bioPlate : null; |
5547 |
07 Aug 19 |
nicklas |
161 |
|
5547 |
07 Aug 19 |
nicklas |
var tooltip = null; |
5547 |
07 Aug 19 |
nicklas |
163 |
|
5547 |
07 Aug 19 |
nicklas |
var name = (index) + ': '; |
5547 |
07 Aug 19 |
nicklas |
if (libPlate) name += libPlate.name + ' - '; |
5547 |
07 Aug 19 |
nicklas |
name += alignedItem.name; |
5547 |
07 Aug 19 |
nicklas |
if (!alignedItem.patient) name += ' (no patient data)'; |
5547 |
07 Aug 19 |
nicklas |
168 |
|
5547 |
07 Aug 19 |
nicklas |
var option = new Option(name, alignedItem.id, false, selected && alignedItem.patient); |
5547 |
07 Aug 19 |
nicklas |
if (isYellow) option.className = 'yellow'; |
5547 |
07 Aug 19 |
nicklas |
if (tooltip) option.title = tooltip; |
5547 |
07 Aug 19 |
nicklas |
if (!alignedItem.patient) option.disabled = true; |
5547 |
07 Aug 19 |
nicklas |
option.alignedSequences = alignedItem; |
7211 |
29 May 23 |
nicklas |
return option; |
5547 |
07 Aug 19 |
nicklas |
175 |
} |
5547 |
07 Aug 19 |
nicklas |
176 |
|
5547 |
07 Aug 19 |
nicklas |
177 |
|
5547 |
07 Aug 19 |
nicklas |
gt.alignedSequencesOnChange = function() |
5547 |
07 Aug 19 |
nicklas |
179 |
{ |
5547 |
07 Aug 19 |
nicklas |
var frm = document.forms['reggie']; |
5547 |
07 Aug 19 |
nicklas |
181 |
|
5547 |
07 Aug 19 |
nicklas |
selectionIsValid = false; |
5547 |
07 Aug 19 |
nicklas |
var numSelected = 0; |
5547 |
07 Aug 19 |
nicklas |
var numDoNotUse = 0; |
5547 |
07 Aug 19 |
nicklas |
var invalidPipeline = null; |
4642 |
28 Nov 17 |
nicklas |
Wizard.setInputStatus('alignedSequences'); |
5547 |
07 Aug 19 |
nicklas |
Wizard.hideGoNextConfirmation(); |
5547 |
07 Aug 19 |
nicklas |
188 |
|
5547 |
07 Aug 19 |
nicklas |
for (var asNo = 0; asNo < frm.alignedSequences.length; asNo++) |
5547 |
07 Aug 19 |
nicklas |
190 |
{ |
5547 |
07 Aug 19 |
nicklas |
if (frm.alignedSequences[asNo].selected) |
5547 |
07 Aug 19 |
nicklas |
192 |
{ |
5547 |
07 Aug 19 |
nicklas |
numSelected++; |
5547 |
07 Aug 19 |
nicklas |
var as = frm.alignedSequences[asNo].alignedSequences; |
5547 |
07 Aug 19 |
nicklas |
if (as.DO_NOT_USE) numDoNotUse++; |
5547 |
07 Aug 19 |
nicklas |
if (as.pipeline && as.pipeline != 'RNAseq/Hisat/StringTie') |
5547 |
07 Aug 19 |
nicklas |
197 |
{ |
5547 |
07 Aug 19 |
nicklas |
invalidPipeline = Strings.encodeTags(as.name+' ('+as.pipeline)+') is not intended for the RNAseq/Hisat/StringTie pipeline.'; |
5547 |
07 Aug 19 |
nicklas |
199 |
} |
5547 |
07 Aug 19 |
nicklas |
200 |
} |
5547 |
07 Aug 19 |
nicklas |
201 |
} |
5547 |
07 Aug 19 |
nicklas |
202 |
|
5547 |
07 Aug 19 |
nicklas |
if (numSelected == 0) |
5547 |
07 Aug 19 |
nicklas |
204 |
{ |
5547 |
07 Aug 19 |
nicklas |
Wizard.setInputStatus('alignedSequences', 'invalid', 'Select at least one item'); |
5547 |
07 Aug 19 |
nicklas |
return; |
5547 |
07 Aug 19 |
nicklas |
207 |
} |
5547 |
07 Aug 19 |
nicklas |
if (invalidPipeline) |
5547 |
07 Aug 19 |
nicklas |
209 |
{ |
5547 |
07 Aug 19 |
nicklas |
Wizard.setInputStatus('alignedSequences', 'invalid', invalidPipeline); |
5547 |
07 Aug 19 |
nicklas |
return; |
5547 |
07 Aug 19 |
nicklas |
212 |
} |
5547 |
07 Aug 19 |
nicklas |
selectionIsValid = true; |
5547 |
07 Aug 19 |
nicklas |
if (numDoNotUse > 0) |
5547 |
07 Aug 19 |
nicklas |
215 |
{ |
5547 |
07 Aug 19 |
nicklas |
Wizard.setInputStatus('alignedSequences', 'warning', numDoNotUse + ' selected items marked as DoNotUse'); |
5547 |
07 Aug 19 |
nicklas |
Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse'); |
5547 |
07 Aug 19 |
nicklas |
218 |
} |
5547 |
07 Aug 19 |
nicklas |
else |
5547 |
07 Aug 19 |
nicklas |
220 |
{ |
5547 |
07 Aug 19 |
nicklas |
Wizard.setInputStatus('alignedSequences', 'valid'); |
5547 |
07 Aug 19 |
nicklas |
222 |
} |
4642 |
28 Nov 17 |
nicklas |
223 |
} |
4642 |
28 Nov 17 |
nicklas |
224 |
|
4646 |
14 Dec 17 |
nicklas |
gt.initializeStep2 = function() |
4642 |
28 Nov 17 |
nicklas |
226 |
{ |
4642 |
28 Nov 17 |
nicklas |
var frm = document.forms['reggie']; |
4646 |
14 Dec 17 |
nicklas |
228 |
|
4642 |
28 Nov 17 |
nicklas |
var submitInfo = {}; |
4642 |
28 Nov 17 |
nicklas |
var alignedSequences = []; |
4642 |
28 Nov 17 |
nicklas |
submitInfo.alignedSequences = alignedSequences; |
4642 |
28 Nov 17 |
nicklas |
232 |
|
4642 |
28 Nov 17 |
nicklas |
for (var asNo = 0; asNo < frm.alignedSequences.length; asNo++) |
4642 |
28 Nov 17 |
nicklas |
234 |
{ |
4642 |
28 Nov 17 |
nicklas |
if (frm.alignedSequences[asNo].selected) |
4642 |
28 Nov 17 |
nicklas |
236 |
{ |
4642 |
28 Nov 17 |
nicklas |
var as = {}; |
4642 |
28 Nov 17 |
nicklas |
as.id = frm.alignedSequences[asNo].alignedSequences.id; |
4642 |
28 Nov 17 |
nicklas |
alignedSequences[alignedSequences.length] = as; |
4642 |
28 Nov 17 |
nicklas |
240 |
} |
4642 |
28 Nov 17 |
nicklas |
241 |
} |
4642 |
28 Nov 17 |
nicklas |
242 |
|
4642 |
28 Nov 17 |
nicklas |
var url = '../Genotype.servlet?ID='+App.getSessionId(); |
4642 |
28 Nov 17 |
nicklas |
url += '&cmd=GenotypeQcCheck'; |
4646 |
14 Dec 17 |
nicklas |
Wizard.showLoadingAnimation('Comparing genotypes...', 'genotypes-progress'); |
4646 |
14 Dec 17 |
nicklas |
Wizard.asyncJsonRequest(url, gt.checkCompleted, 'POST', JSON.stringify(submitInfo)); |
4646 |
14 Dec 17 |
nicklas |
247 |
} |
4646 |
14 Dec 17 |
nicklas |
248 |
|
4646 |
14 Dec 17 |
nicklas |
gt.checkCompleted = function(response) |
4646 |
14 Dec 17 |
nicklas |
250 |
{ |
4648 |
15 Dec 17 |
nicklas |
alignedSequences = response.alignedSequences; |
4646 |
14 Dec 17 |
nicklas |
252 |
|
4646 |
14 Dec 17 |
nicklas |
var html = '<table id="compareTable">'; |
4646 |
14 Dec 17 |
nicklas |
html += '<thead class="bg-filled-100">'; |
4646 |
14 Dec 17 |
nicklas |
html += '<tr>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th colspan="3">Comparisons</th>'; |
4648 |
15 Dec 17 |
nicklas |
html += '<th class="dottedleft"></th>'; |
4649 |
20 Dec 17 |
nicklas |
html += '<th colspan="2">ALIGNED_PAIRS</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft" colspan="3">Genotypes</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft" colspan="2"></th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th class="dottedleft" colspan="4"></th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft" colspan="2">Actions</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft"></th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '</tr>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<tr>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th>Total</th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th>Same PAT</th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th>Skipped</th>'; |
4648 |
15 Dec 17 |
nicklas |
html += '<th class="dottedleft">Libplate</th>'; |
4648 |
15 Dec 17 |
nicklas |
html += '<th>(millions)</th>'; |
4649 |
20 Dec 17 |
nicklas |
html += '<th>Dup.</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft">Total</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th>HET</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="icon-col"></th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th class="dottedleft">Alignment</th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th class="icon-col"></th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th class="dottedleft icon-col"></th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th colspan="2">Warnings and messages</th>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<th class="icon-col"></th>'; |
6670 |
07 Apr 22 |
nicklas |
html += '<th class="dottedleft"><span id="disable" data-prefix="disable" class="interactable link" title="Toggle selection – use CTRL, ALT or SHIFT to clear">Disable</span></th>'; |
6670 |
07 Apr 22 |
nicklas |
html += '<th><span id="flagrna" data-prefix="flag" class="interactable link" title="Toggle selection – use CTRL, ALT or SHIFT to clear">Flag</span></th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '<th class="dottedleft">Comment</th>'; |
4646 |
14 Dec 17 |
nicklas |
html += '</tr>'; |
4646 |
14 Dec 17 |
nicklas |
html += '</thead>'; |
4646 |
14 Dec 17 |
nicklas |
285 |
|
4728 |
04 Apr 18 |
nicklas |
var htmlNoMessages = ''; |
4728 |
04 Apr 18 |
nicklas |
var htmlNoWarnings = ''; |
7214 |
29 May 23 |
nicklas |
var htmlLowWarnings = ''; |
4646 |
14 Dec 17 |
nicklas |
289 |
|
4648 |
15 Dec 17 |
nicklas |
for (var aNo = 0; aNo < alignedSequences.length; aNo++) |
4646 |
14 Dec 17 |
nicklas |
291 |
{ |
4648 |
15 Dec 17 |
nicklas |
var aligned = alignedSequences[aNo]; |
4648 |
15 Dec 17 |
nicklas |
var lib = aligned.lib; |
4671 |
07 Feb 18 |
nicklas |
var cmp = aligned.compare; |
4671 |
07 Feb 18 |
nicklas |
var vcf = cmp.vcf; |
7211 |
29 May 23 |
nicklas |
var libWell = aligned.bioWell; |
4671 |
07 Feb 18 |
nicklas |
297 |
|
4648 |
15 Dec 17 |
nicklas |
var alignedReads = aligned.ALIGNED_PAIRS == null ? '-' : Reggie.formatNumber(aligned.ALIGNED_PAIRS/1000000, null, 2); |
4649 |
20 Dec 17 |
nicklas |
var duplication = aligned.FRACTION_DUPLICATION == null ? '-' : Reggie.formatNumber(100*aligned.FRACTION_DUPLICATION, '%', -1); |
4671 |
07 Feb 18 |
nicklas |
var hetPercentage = vcf.gtCount ? Reggie.formatNumber(100*vcf.hetCount/vcf.gtCount, '%', -1) : '-'; |
4648 |
15 Dec 17 |
nicklas |
301 |
|
4646 |
14 Dec 17 |
nicklas |
var disableChecked = cmp.recommendDisable ? "checked" : ""; |
4646 |
14 Dec 17 |
nicklas |
var flagChecked = cmp.recommendFlag ? "checked" : ""; |
4646 |
14 Dec 17 |
nicklas |
304 |
|
4728 |
04 Apr 18 |
nicklas |
var rowspan = cmp.messages.length || 1; |
4728 |
04 Apr 18 |
nicklas |
306 |
|
4728 |
04 Apr 18 |
nicklas |
var tmp = '<tbody class="highlight"><tr>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+cmp.total+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+(cmp.samePat || '')+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+(cmp.skipped || '')+'</td>'; |
7211 |
29 May 23 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="dottedleft text-col">'+(libWell ? Strings.encodeTags(libWell.bioPlate.name + ' ' + libWell.location) : '-')+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+alignedReads+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+duplication+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="dottedleft">'+vcf.gtCount+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'">'+hetPercentage+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="icon-col">'; |
4648 |
15 Dec 17 |
nicklas |
tmp += '<span class="link vcf-link" data-file-id="'+vcf.fileId+'" data-item-id="'+aligned.id+'" title="View genotype statistics"><img src="../images/vcf_file.png"></span>'; |
4646 |
14 Dec 17 |
nicklas |
tmp += '</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="dottedleft text-col">'+Strings.encodeTags(aligned.name)+'</td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="icon-col"><span class="link case-summary" data-name="'+Strings.encodeTags(aligned.name)+'" title="Show case summary"><img src="../images/case_summary.png"></span></td>'; |
4728 |
04 Apr 18 |
nicklas |
321 |
|
4728 |
04 Apr 18 |
nicklas |
// The first message is on the main <tr> |
7214 |
29 May 23 |
nicklas |
var numHighWarnings = 0; |
7214 |
29 May 23 |
nicklas |
var numLowWarnings = 0; |
4728 |
04 Apr 18 |
nicklas |
if (cmp.messages.length > 0) |
4646 |
14 Dec 17 |
nicklas |
326 |
{ |
4728 |
04 Apr 18 |
nicklas |
var msg = cmp.messages[0]; |
7214 |
29 May 23 |
nicklas |
if (msg.warningLevel == 'HIGH') numHighWarnings++; |
7214 |
29 May 23 |
nicklas |
if (msg.warningLevel == 'LOW') numLowWarnings++; |
4728 |
04 Apr 18 |
nicklas |
tmp += gt.getMessageHtml(msg, aligned, vcf); |
4646 |
14 Dec 17 |
nicklas |
331 |
} |
4646 |
14 Dec 17 |
nicklas |
else |
4646 |
14 Dec 17 |
nicklas |
333 |
{ |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td class="dottedleft icon-col"></td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td class="text-col" colspan="2"></td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td class="icon-col"></td>'; |
4646 |
14 Dec 17 |
nicklas |
337 |
} |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="dottedleft"><input type="checkbox" name="disable.'+aligned.id+'" '+disableChecked+'></td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'"><input type="checkbox" name="flag.'+aligned.id+'" '+flagChecked+'></td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<td rowspan="'+rowspan+'" class="dottedleft comment"><input type="text" name="comment.'+aligned.id+'" value="'+Strings.encodeTags(aligned.QC_GENOTYPE_COMMENT)+'"></td>'; |
4728 |
04 Apr 18 |
nicklas |
tmp += '</tr>'; |
4728 |
04 Apr 18 |
nicklas |
342 |
|
4728 |
04 Apr 18 |
nicklas |
// If there are more messages, add more <tr> |
4728 |
04 Apr 18 |
nicklas |
for (var mNo = 1; mNo < cmp.messages.length; mNo++) |
4648 |
15 Dec 17 |
nicklas |
345 |
{ |
4728 |
04 Apr 18 |
nicklas |
var msg = cmp.messages[mNo]; |
7214 |
29 May 23 |
nicklas |
if (msg.warningLevel == 'HIGH') numHighWarnings++; |
7214 |
29 May 23 |
nicklas |
if (msg.warningLevel == 'LOW') numLowWarnings++; |
4728 |
04 Apr 18 |
nicklas |
tmp += '<tr>'+gt.getMessageHtml(msg, aligned, vcf) + '</tr>'; |
4648 |
15 Dec 17 |
nicklas |
350 |
} |
4728 |
04 Apr 18 |
nicklas |
tmp += '</tbody>'; |
4646 |
14 Dec 17 |
nicklas |
352 |
|
4728 |
04 Apr 18 |
nicklas |
if (cmp.messages.length == 0) |
4646 |
14 Dec 17 |
nicklas |
354 |
{ |
4728 |
04 Apr 18 |
nicklas |
// No messages are sorted last in the list |
4728 |
04 Apr 18 |
nicklas |
htmlNoMessages += tmp; |
4646 |
14 Dec 17 |
nicklas |
357 |
} |
7214 |
29 May 23 |
nicklas |
else if (numLowWarnings == 0 && numHighWarnings == 0) |
4648 |
15 Dec 17 |
nicklas |
359 |
{ |
4728 |
04 Apr 18 |
nicklas |
// No warnings are sorted in the middle |
4728 |
04 Apr 18 |
nicklas |
htmlNoWarnings += tmp; |
4648 |
15 Dec 17 |
nicklas |
362 |
} |
7214 |
29 May 23 |
nicklas |
else if (numHighWarnings == 0) |
7214 |
29 May 23 |
nicklas |
364 |
{ |
7214 |
29 May 23 |
nicklas |
htmlLowWarnings += tmp; |
7214 |
29 May 23 |
nicklas |
366 |
} |
4646 |
14 Dec 17 |
nicklas |
else |
4646 |
14 Dec 17 |
nicklas |
368 |
{ |
4728 |
04 Apr 18 |
nicklas |
// Items with at least one warning are sorted first |
4646 |
14 Dec 17 |
nicklas |
html += tmp; |
4646 |
14 Dec 17 |
nicklas |
371 |
} |
4646 |
14 Dec 17 |
nicklas |
372 |
} |
4728 |
04 Apr 18 |
nicklas |
373 |
|
7286 |
15 Aug 23 |
nicklas |
html += htmlLowWarnings; |
4728 |
04 Apr 18 |
nicklas |
html += htmlNoWarnings; |
4728 |
04 Apr 18 |
nicklas |
html += htmlNoMessages; |
4646 |
14 Dec 17 |
nicklas |
html += '</table>'; |
4646 |
14 Dec 17 |
nicklas |
Doc.element('comparisons').innerHTML = html; |
4642 |
28 Nov 17 |
nicklas |
379 |
|
6670 |
07 Apr 22 |
nicklas |
Events.addEventHandler('flagrna', 'click', gt.toggleSelection); |
6670 |
07 Apr 22 |
nicklas |
Events.addEventHandler('disable', 'click', gt.toggleSelection); |
6670 |
07 Apr 22 |
nicklas |
382 |
|
4646 |
14 Dec 17 |
nicklas |
// Add click handler to VCF files |
4646 |
14 Dec 17 |
nicklas |
var clickableItems = document.getElementsByClassName('vcf-link'); |
4646 |
14 Dec 17 |
nicklas |
for (var i = 0; i < clickableItems.length; i++) |
4646 |
14 Dec 17 |
nicklas |
386 |
{ |
4646 |
14 Dec 17 |
nicklas |
Events.addEventHandler(clickableItems[i], 'click', gt.vcfLinkOnClick); |
4646 |
14 Dec 17 |
nicklas |
388 |
} |
4646 |
14 Dec 17 |
nicklas |
389 |
|
4678 |
12 Feb 18 |
nicklas |
// Case summary links |
4678 |
12 Feb 18 |
nicklas |
var cs = document.getElementsByClassName('case-summary'); |
4678 |
12 Feb 18 |
nicklas |
for (var i = 0; i < cs.length; i++) |
4678 |
12 Feb 18 |
nicklas |
393 |
{ |
5019 |
10 Oct 18 |
nicklas |
Events.addEventHandler(cs[i], 'click', Reggie.openCaseSummaryPopupOnEvent); |
4678 |
12 Feb 18 |
nicklas |
395 |
} |
4678 |
12 Feb 18 |
nicklas |
396 |
|
4648 |
15 Dec 17 |
nicklas |
Wizard.setCurrentStep(2); |
4646 |
14 Dec 17 |
nicklas |
Doc.show('step-2'); |
4646 |
14 Dec 17 |
nicklas |
Doc.show('goregister'); |
4646 |
14 Dec 17 |
nicklas |
Doc.show('gocancel'); |
4646 |
14 Dec 17 |
nicklas |
401 |
} |
4646 |
14 Dec 17 |
nicklas |
402 |
|
4728 |
04 Apr 18 |
nicklas |
403 |
|
4728 |
04 Apr 18 |
nicklas |
gt.getMessageHtml = function(message, aligned, vcf) |
4728 |
04 Apr 18 |
nicklas |
405 |
{ |
4728 |
04 Apr 18 |
nicklas |
var level = message.warningLevel; |
4728 |
04 Apr 18 |
nicklas |
var icon = null; |
4728 |
04 Apr 18 |
nicklas |
if (level == 'INFO') |
4728 |
04 Apr 18 |
nicklas |
409 |
{ |
4728 |
04 Apr 18 |
nicklas |
icon = 'ok.png'; |
4728 |
04 Apr 18 |
nicklas |
411 |
} |
4728 |
04 Apr 18 |
nicklas |
else if (level == 'LOW') |
4728 |
04 Apr 18 |
nicklas |
413 |
{ |
4728 |
04 Apr 18 |
nicklas |
icon = 'warning_small.png'; |
4728 |
04 Apr 18 |
nicklas |
415 |
} |
4728 |
04 Apr 18 |
nicklas |
else |
4728 |
04 Apr 18 |
nicklas |
417 |
{ |
4728 |
04 Apr 18 |
nicklas |
icon = 'warning.png'; |
4728 |
04 Apr 18 |
nicklas |
419 |
} |
4728 |
04 Apr 18 |
nicklas |
420 |
|
4728 |
04 Apr 18 |
nicklas |
var html = ''; |
4728 |
04 Apr 18 |
nicklas |
html += '<td class="dottedleft icon-col"><img src="../images/'+icon+'"></td>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<td class="text-col" title="'+(message.messageTooltip || '')+'">'+Strings.encodeTags(message.message) + '</td>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<td class="text-col">'; |
6588 |
18 Feb 22 |
nicklas |
if (message.otherAssay) |
4728 |
04 Apr 18 |
nicklas |
426 |
{ |
6588 |
18 Feb 22 |
nicklas |
html += gt.tagCommonPartOfName(aligned.name, message.otherAssay); |
5014 |
08 Oct 18 |
nicklas |
if (message.DO_NOT_USE) html += '<img src="../images/donotuse.png" title="DoNotUse-'+Strings.encodeTags(message.DO_NOT_USE + ': ' + message.DO_NOT_USE_COMMENT)+'">'; |
6588 |
18 Feb 22 |
nicklas |
if (message.flagged) html += '<img src="../images/flag.png" title="'+Strings.encodeTags(message.otherAssay)+' is already flagged">'; |
4728 |
04 Apr 18 |
nicklas |
if (message.currentVerifiedBy) |
4728 |
04 Apr 18 |
nicklas |
431 |
{ |
4728 |
04 Apr 18 |
nicklas |
var vicon = message.currentVerifiedBy == 'LYSATE' ? 'gt-verified-lysate.png' : 'gt-verified.png'; |
6588 |
18 Feb 22 |
nicklas |
html += '<img src="../images/'+vicon+'" title="'+Strings.encodeTags(message.otherAssay+' is already verified by '+message.currentVerifiedBy)+'">'; |
4728 |
04 Apr 18 |
nicklas |
434 |
} |
4728 |
04 Apr 18 |
nicklas |
435 |
} |
4728 |
04 Apr 18 |
nicklas |
html += '</td>'; |
4728 |
04 Apr 18 |
nicklas |
html += '<td class="icon-col">'; |
4728 |
04 Apr 18 |
nicklas |
if (message.vcf) |
4728 |
04 Apr 18 |
nicklas |
439 |
{ |
4728 |
04 Apr 18 |
nicklas |
html += ' <span class="link vcf-link" data-file-id="'+vcf.fileId+'" data-item-id="'+aligned.id+'"'; |
4728 |
04 Apr 18 |
nicklas |
html += ' data-item-id2="'+message.id+'" data-file-id2="'+message.vcf.fileId+'"'; |
4728 |
04 Apr 18 |
nicklas |
html += ' title="Compare genotypes (hold CTRL, ALT or SHIFT to open in a new popup)"><img src="../images/vcf_file.png"></span>'; |
4728 |
04 Apr 18 |
nicklas |
443 |
} |
4728 |
04 Apr 18 |
nicklas |
html += '</td>'; |
4728 |
04 Apr 18 |
nicklas |
return html; |
4728 |
04 Apr 18 |
nicklas |
446 |
} |
4728 |
04 Apr 18 |
nicklas |
447 |
|
4728 |
04 Apr 18 |
nicklas |
448 |
|
4728 |
04 Apr 18 |
nicklas |
gt.tagCommonPartOfName = function(name1, name2) |
4728 |
04 Apr 18 |
nicklas |
450 |
{ |
4728 |
04 Apr 18 |
nicklas |
var n1 = name1.split('.'); |
4728 |
04 Apr 18 |
nicklas |
var n2 = name2.split('.'); |
4728 |
04 Apr 18 |
nicklas |
var i = 0; |
4728 |
04 Apr 18 |
nicklas |
454 |
|
4728 |
04 Apr 18 |
nicklas |
var common = ''; |
4728 |
04 Apr 18 |
nicklas |
var sep = '.'; |
4728 |
04 Apr 18 |
nicklas |
while (i < n1.length && i < n2.length && n1[i] == n2[i]) |
4728 |
04 Apr 18 |
nicklas |
458 |
{ |
4728 |
04 Apr 18 |
nicklas |
common += n1[i] + sep; |
4728 |
04 Apr 18 |
nicklas |
i++; |
4728 |
04 Apr 18 |
nicklas |
461 |
} |
4728 |
04 Apr 18 |
nicklas |
462 |
|
4728 |
04 Apr 18 |
nicklas |
var diff = ''; |
4728 |
04 Apr 18 |
nicklas |
sep = ''; |
4728 |
04 Apr 18 |
nicklas |
while (i < n2.length) |
4728 |
04 Apr 18 |
nicklas |
466 |
{ |
4728 |
04 Apr 18 |
nicklas |
diff += sep + n2[i]; |
4728 |
04 Apr 18 |
nicklas |
i++; |
4728 |
04 Apr 18 |
nicklas |
sep = '.'; |
4728 |
04 Apr 18 |
nicklas |
470 |
} |
4728 |
04 Apr 18 |
nicklas |
471 |
|
4728 |
04 Apr 18 |
nicklas |
return '<span class="commonpart">'+Strings.encodeTags(common)+'</span><span class="diffpart">'+Strings.encodeTags(diff)+'</span>'; |
4728 |
04 Apr 18 |
nicklas |
473 |
} |
4728 |
04 Apr 18 |
nicklas |
474 |
|
4646 |
14 Dec 17 |
nicklas |
gt.vcfLinkOnClick = function(event) |
4646 |
14 Dec 17 |
nicklas |
476 |
{ |
4646 |
14 Dec 17 |
nicklas |
var fileId = Data.int(event.currentTarget, 'file-id'); |
4646 |
14 Dec 17 |
nicklas |
var itemId = Data.get(event.currentTarget, 'item-id'); |
4648 |
15 Dec 17 |
nicklas |
var fileId2 = Data.int(event.currentTarget, 'file-id2'); |
4648 |
15 Dec 17 |
nicklas |
var itemId2 = Data.get(event.currentTarget, 'item-id2'); |
4681 |
21 Feb 18 |
nicklas |
var specialKey = event.altKey || event.ctrlKey || event.shiftKey; |
4681 |
21 Feb 18 |
nicklas |
482 |
|
4646 |
14 Dec 17 |
nicklas |
var url = 'view_genotypes.jsp?ID=' + App.getSessionId(); |
4646 |
14 Dec 17 |
nicklas |
url += '&fileId='+fileId; |
4646 |
14 Dec 17 |
nicklas |
url += '&itemId='+itemId; |
4648 |
15 Dec 17 |
nicklas |
url += '&fileId2='+fileId2; |
4648 |
15 Dec 17 |
nicklas |
url += '&itemId2='+itemId2; |
4648 |
15 Dec 17 |
nicklas |
488 |
|
4681 |
21 Feb 18 |
nicklas |
Dialogs.openPopup(url, (specialKey ? 'ViewVcf'+itemId+itemId2 : 'ViewVcf'), 900, 600); |
4646 |
14 Dec 17 |
nicklas |
490 |
} |
6670 |
07 Apr 22 |
nicklas |
491 |
|
6670 |
07 Apr 22 |
nicklas |
gt.toggleSelection = function(event) |
6670 |
07 Apr 22 |
nicklas |
493 |
{ |
6670 |
07 Apr 22 |
nicklas |
var prefix = Data.get(event.currentTarget, 'prefix'); |
6670 |
07 Apr 22 |
nicklas |
var specialKey = event.altKey || event.ctrlKey || event.shiftKey; |
6670 |
07 Apr 22 |
nicklas |
496 |
|
6670 |
07 Apr 22 |
nicklas |
var frm = document.forms['reggie']; |
6670 |
07 Apr 22 |
nicklas |
for (var alignedNo = 0; alignedNo < alignedSequences.length; alignedNo++) |
6670 |
07 Apr 22 |
nicklas |
499 |
{ |
6670 |
07 Apr 22 |
nicklas |
var aligned = alignedSequences[alignedNo]; |
6670 |
07 Apr 22 |
nicklas |
var chk = frm[prefix+'.'+aligned.id]; |
6670 |
07 Apr 22 |
nicklas |
if (chk && !chk.disabled) |
6670 |
07 Apr 22 |
nicklas |
503 |
{ |
6670 |
07 Apr 22 |
nicklas |
chk.checked = specialKey ? false : !chk.checked; |
6670 |
07 Apr 22 |
nicklas |
505 |
} |
6670 |
07 Apr 22 |
nicklas |
506 |
} |
6670 |
07 Apr 22 |
nicklas |
507 |
} |
4646 |
14 Dec 17 |
nicklas |
508 |
|
4646 |
14 Dec 17 |
nicklas |
gt.submit = function() |
4646 |
14 Dec 17 |
nicklas |
510 |
{ |
4646 |
14 Dec 17 |
nicklas |
var frm = document.forms['reggie']; |
4646 |
14 Dec 17 |
nicklas |
var submitInfo = {}; |
4648 |
15 Dec 17 |
nicklas |
var list = []; |
4648 |
15 Dec 17 |
nicklas |
submitInfo.alignedSequences = list; |
4646 |
14 Dec 17 |
nicklas |
515 |
|
4648 |
15 Dec 17 |
nicklas |
for (var aNo = 0; aNo < alignedSequences.length; aNo++) |
4646 |
14 Dec 17 |
nicklas |
517 |
{ |
4648 |
15 Dec 17 |
nicklas |
var aligned = alignedSequences[aNo]; |
4649 |
20 Dec 17 |
nicklas |
var cmp = aligned.compare; |
4649 |
20 Dec 17 |
nicklas |
520 |
|
4646 |
14 Dec 17 |
nicklas |
var tmp = {}; |
4648 |
15 Dec 17 |
nicklas |
tmp.id = aligned.id; |
4648 |
15 Dec 17 |
nicklas |
tmp.disable = frm['disable.'+aligned.id].checked; |
4728 |
04 Apr 18 |
nicklas |
var verified = []; |
4728 |
04 Apr 18 |
nicklas |
tmp.verified = verified; |
4728 |
04 Apr 18 |
nicklas |
var flag = null; |
4728 |
04 Apr 18 |
nicklas |
if (frm['flag.'+aligned.id].checked) |
4728 |
04 Apr 18 |
nicklas |
528 |
{ |
4728 |
04 Apr 18 |
nicklas |
flag = []; |
4728 |
04 Apr 18 |
nicklas |
tmp.flag = flag; |
4728 |
04 Apr 18 |
nicklas |
flag[flag.length] = aligned.id; |
4728 |
04 Apr 18 |
nicklas |
532 |
} |
4728 |
04 Apr 18 |
nicklas |
for (var mNo = 0; mNo < cmp.messages.length; mNo++) |
4728 |
04 Apr 18 |
nicklas |
534 |
{ |
4728 |
04 Apr 18 |
nicklas |
var msg = cmp.messages[mNo]; |
4728 |
04 Apr 18 |
nicklas |
if (msg.id) |
4649 |
20 Dec 17 |
nicklas |
537 |
{ |
7201 |
25 May 23 |
nicklas |
if (flag && msg.assayType == 'TUMOR' && msg.warningLevel != 'INFO') |
4728 |
04 Apr 18 |
nicklas |
539 |
{ |
4728 |
04 Apr 18 |
nicklas |
flag[flag.length] = msg.id; |
4728 |
04 Apr 18 |
nicklas |
541 |
} |
4728 |
04 Apr 18 |
nicklas |
if (msg.verifiedBy) |
4728 |
04 Apr 18 |
nicklas |
543 |
{ |
7200 |
25 May 23 |
nicklas |
verified[verified.length] = { 'id': msg.id, 'verifiedBy': msg.verifiedBy, 'assayType': msg.assayType }; |
4728 |
04 Apr 18 |
nicklas |
545 |
} |
4649 |
20 Dec 17 |
nicklas |
546 |
} |
4649 |
20 Dec 17 |
nicklas |
547 |
} |
4728 |
04 Apr 18 |
nicklas |
548 |
|
4648 |
15 Dec 17 |
nicklas |
tmp.comment = frm['comment.'+aligned.id].value; |
4648 |
15 Dec 17 |
nicklas |
list[list.length] = tmp; |
4646 |
14 Dec 17 |
nicklas |
551 |
} |
4646 |
14 Dec 17 |
nicklas |
552 |
|
4646 |
14 Dec 17 |
nicklas |
var url = '../Genotype.servlet?ID='+App.getSessionId(); |
4646 |
14 Dec 17 |
nicklas |
url += '&cmd=RegisterQcCheck'; |
4646 |
14 Dec 17 |
nicklas |
Wizard.showLoadingAnimation('Registering...'); |
4642 |
28 Nov 17 |
nicklas |
Wizard.asyncJsonRequest(url, gt.submissionResults, 'POST', JSON.stringify(submitInfo)); |
4642 |
28 Nov 17 |
nicklas |
557 |
} |
4642 |
28 Nov 17 |
nicklas |
558 |
|
4642 |
28 Nov 17 |
nicklas |
gt.submissionResults = function(response) |
4642 |
28 Nov 17 |
nicklas |
560 |
{ |
4642 |
28 Nov 17 |
nicklas |
Wizard.showFinalMessage(response.messages); |
4642 |
28 Nov 17 |
nicklas |
Doc.show('gorestart'); |
4642 |
28 Nov 17 |
nicklas |
563 |
} |
4642 |
28 Nov 17 |
nicklas |
564 |
|
4642 |
28 Nov 17 |
nicklas |
return gt; |
4642 |
28 Nov 17 |
nicklas |
566 |
}(); |
4642 |
28 Nov 17 |
nicklas |
567 |
|
4642 |
28 Nov 17 |
nicklas |
Doc.onLoad(GenoType.initPage); |
4642 |
28 Nov 17 |
nicklas |
569 |
|