2641 |
09 Sep 14 |
nicklas |
var Check = function() |
2641 |
09 Sep 14 |
nicklas |
2 |
{ |
2641 |
09 Sep 14 |
nicklas |
var check = {}; |
2656 |
11 Sep 14 |
nicklas |
var debug = 0; |
2641 |
09 Sep 14 |
nicklas |
5 |
|
2641 |
09 Sep 14 |
nicklas |
var currentLaneNo = 1; |
2642 |
09 Sep 14 |
nicklas |
var expectedCycles = 0; |
5862 |
11 Mar 20 |
nicklas |
var expectedTiles = -1; |
5862 |
11 Mar 20 |
nicklas |
var expectedTilesAlt = -1; |
2645 |
10 Sep 14 |
nicklas |
var readString |
2642 |
09 Sep 14 |
nicklas |
var seqRun; |
2641 |
09 Sep 14 |
nicklas |
12 |
|
2641 |
09 Sep 14 |
nicklas |
check.initPage = function() |
2641 |
09 Sep 14 |
nicklas |
14 |
{ |
2641 |
09 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
7031 |
09 Feb 23 |
nicklas |
Events.addEventHandler('timeout', 'keypress', Events.integerOnly); |
2641 |
09 Sep 14 |
nicklas |
Buttons.addClickHandler('close', App.closeWindow); |
2641 |
09 Sep 14 |
nicklas |
18 |
|
2641 |
09 Sep 14 |
nicklas |
var url = '../SequencingRun.servlet?ID='+App.getSessionId(); |
2641 |
09 Sep 14 |
nicklas |
url += '&cmd=GetSeqRunInfoForDataCheck'; |
2641 |
09 Sep 14 |
nicklas |
url += '&seqrun='+Data.get('page-data', 'seqrun-id'); |
2641 |
09 Sep 14 |
nicklas |
Wizard.asyncJsonRequest(url, check.seqRunLoaded); |
2641 |
09 Sep 14 |
nicklas |
23 |
|
6735 |
09 May 22 |
nicklas |
// Load clusters |
6661 |
01 Apr 22 |
nicklas |
var url = '../OpenGrid.servlet?ID='+App.getSessionId() + '&cmd=GetHostInfo&config=check-illumina-directory'; |
2641 |
09 Sep 14 |
nicklas |
Doc.addClass('clusters', 'list-loading'); |
2641 |
09 Sep 14 |
nicklas |
frm.clusters[0] = new Option('loading...'); |
2641 |
09 Sep 14 |
nicklas |
Wizard.asyncJsonRequest(url, check.clustersLoaded); |
2641 |
09 Sep 14 |
nicklas |
29 |
} |
2641 |
09 Sep 14 |
nicklas |
30 |
|
2641 |
09 Sep 14 |
nicklas |
31 |
|
2641 |
09 Sep 14 |
nicklas |
check.seqRunLoaded = function(response) |
2641 |
09 Sep 14 |
nicklas |
33 |
{ |
2641 |
09 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
2642 |
09 Sep 14 |
nicklas |
seqRun = response.seqRun; |
2641 |
09 Sep 14 |
nicklas |
36 |
|
2641 |
09 Sep 14 |
nicklas |
Doc.element('sequencingrun').innerHTML = Strings.encodeTags(seqRun.name); |
2641 |
09 Sep 14 |
nicklas |
Doc.element('flowCellId').innerHTML = Strings.encodeTags(seqRun.flowCell.FlowCellID); |
2641 |
09 Sep 14 |
nicklas |
Doc.element('dataFilesFolder').innerHTML = Strings.encodeTags(seqRun.DataFilesFolder); |
2641 |
09 Sep 14 |
nicklas |
Doc.element('sequencingCycles').innerHTML = Strings.encodeTags(seqRun.SequencingCycles); |
5478 |
10 Jun 19 |
nicklas |
Doc.element('flowCellType').innerHTML = Strings.encodeTags(seqRun.flowCell.FlowCellType) +'; ' + Strings.encodeTags(seqRun.pipeline); |
2642 |
09 Sep 14 |
nicklas |
if (!frm.readString.value) |
2642 |
09 Sep 14 |
nicklas |
43 |
{ |
2642 |
09 Sep 14 |
nicklas |
frm.readString.value = seqRun.ReadString; |
2642 |
09 Sep 14 |
nicklas |
45 |
} |
2641 |
09 Sep 14 |
nicklas |
46 |
|
5862 |
11 Mar 20 |
nicklas |
if (seqRun.flowCell.FlowCellType == 'NovaSeq') |
5862 |
11 Mar 20 |
nicklas |
48 |
{ |
5862 |
11 Mar 20 |
nicklas |
Doc.element('genseq').disabled = true; |
5862 |
11 Mar 20 |
nicklas |
50 |
} |
5862 |
11 Mar 20 |
nicklas |
51 |
|
2910 |
10 Nov 14 |
nicklas |
var omitLanes = Data.json('page-data', 'omit-lanes'); |
2910 |
10 Nov 14 |
nicklas |
53 |
|
2641 |
09 Sep 14 |
nicklas |
var html = ''; |
2642 |
09 Sep 14 |
nicklas |
var numLanes = seqRun.flowCell.numLanes; |
2641 |
09 Sep 14 |
nicklas |
for (var laneNo = 1; laneNo <= numLanes; laneNo++) |
2641 |
09 Sep 14 |
nicklas |
57 |
{ |
2910 |
10 Nov 14 |
nicklas |
var checked = omitLanes.indexOf(laneNo) == -1 ? 'checked' : ''; |
2910 |
10 Nov 14 |
nicklas |
html += '<tr><th class="subprompt">Lane ' + laneNo + '<input type="checkbox" name="lane.'+laneNo+'" '+checked+'></td>'; |
2641 |
09 Sep 14 |
nicklas |
html += '<td id="lane.'+laneNo+'.status" class="status"></td>'; |
2641 |
09 Sep 14 |
nicklas |
html += '<td><span id="lane.'+laneNo+'.message" class="message" data-display="block"></span></td>'; |
2641 |
09 Sep 14 |
nicklas |
html += '</tr>'; |
2641 |
09 Sep 14 |
nicklas |
63 |
} |
2641 |
09 Sep 14 |
nicklas |
64 |
|
2641 |
09 Sep 14 |
nicklas |
Doc.element('lanes-section').innerHTML = html; |
2641 |
09 Sep 14 |
nicklas |
66 |
} |
2641 |
09 Sep 14 |
nicklas |
67 |
|
2641 |
09 Sep 14 |
nicklas |
check.clustersLoaded = function(response) |
2641 |
09 Sep 14 |
nicklas |
69 |
{ |
2641 |
09 Sep 14 |
nicklas |
Doc.removeClass('clusters', 'list-loading'); |
2641 |
09 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
4306 |
17 Jan 17 |
nicklas |
var clusters = response.hosts; |
2641 |
09 Sep 14 |
nicklas |
frm.clusters.length = 0; |
2641 |
09 Sep 14 |
nicklas |
for (var i = 0; i < clusters.length; i++) |
2641 |
09 Sep 14 |
nicklas |
75 |
{ |
2641 |
09 Sep 14 |
nicklas |
var cl = clusters[i]; |
4306 |
17 Jan 17 |
nicklas |
cl.nodes = []; |
4306 |
17 Jan 17 |
nicklas |
for (var n = 0; n < cl.config.nodes.length; n++) |
2890 |
03 Nov 14 |
nicklas |
79 |
{ |
4306 |
17 Jan 17 |
nicklas |
var node = cl.config.nodes[n]; |
4306 |
17 Jan 17 |
nicklas |
var option = new Option(node.name+'@'+cl.connection.name, node.name+'@'+cl.id); |
2890 |
03 Nov 14 |
nicklas |
option.cluster = cl; |
2890 |
03 Nov 14 |
nicklas |
option.node = node; |
2890 |
03 Nov 14 |
nicklas |
frm.clusters[frm.clusters.length] = option; |
2890 |
03 Nov 14 |
nicklas |
85 |
} |
4306 |
17 Jan 17 |
nicklas |
var option = new Option(cl.connection.name, cl.id); |
2641 |
09 Sep 14 |
nicklas |
option.cluster = cl; |
2641 |
09 Sep 14 |
nicklas |
frm.clusters[frm.clusters.length] = option; |
2641 |
09 Sep 14 |
nicklas |
89 |
} |
2641 |
09 Sep 14 |
nicklas |
if (frm.clusters.length == 0) |
2641 |
09 Sep 14 |
nicklas |
91 |
{ |
6735 |
09 May 22 |
nicklas |
Wizard.setFatalError('No available clusters'); |
2641 |
09 Sep 14 |
nicklas |
93 |
} |
2641 |
09 Sep 14 |
nicklas |
else |
2641 |
09 Sep 14 |
nicklas |
95 |
{ |
2641 |
09 Sep 14 |
nicklas |
Doc.show('check'); |
2641 |
09 Sep 14 |
nicklas |
Buttons.addClickHandler('check', check.performCheck); |
2641 |
09 Sep 14 |
nicklas |
98 |
} |
2641 |
09 Sep 14 |
nicklas |
99 |
} |
2641 |
09 Sep 14 |
nicklas |
100 |
|
2641 |
09 Sep 14 |
nicklas |
101 |
|
2641 |
09 Sep 14 |
nicklas |
check.performCheck = function() |
2641 |
09 Sep 14 |
nicklas |
103 |
{ |
2641 |
09 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
2641 |
09 Sep 14 |
nicklas |
105 |
|
2645 |
10 Sep 14 |
nicklas |
readString = frm.readString.value; |
5530 |
27 Jun 19 |
nicklas |
if (!readString.match(/^(\d+[TBMS])+$/)) |
2641 |
09 Sep 14 |
nicklas |
108 |
{ |
2641 |
09 Sep 14 |
nicklas |
Forms.showNotification(frm.readString, 'Not a valid read string', null, 'pointer-below'); |
2641 |
09 Sep 14 |
nicklas |
return; |
2641 |
09 Sep 14 |
nicklas |
111 |
} |
2641 |
09 Sep 14 |
nicklas |
112 |
|
2645 |
10 Sep 14 |
nicklas |
// Reset data |
2641 |
09 Sep 14 |
nicklas |
Doc.addClass('check', 'disabled'); |
2645 |
10 Sep 14 |
nicklas |
currentLaneNo = 1; |
5862 |
11 Mar 20 |
nicklas |
if (seqRun.flowCell.FlowCellType == 'NextSeq') |
5862 |
11 Mar 20 |
nicklas |
117 |
{ |
5862 |
11 Mar 20 |
nicklas |
expectedTiles = 216; |
5862 |
11 Mar 20 |
nicklas |
119 |
} |
5862 |
11 Mar 20 |
nicklas |
else if (seqRun.flowCell.FlowCellType == 'HiSeq') |
5862 |
11 Mar 20 |
nicklas |
121 |
{ |
5862 |
11 Mar 20 |
nicklas |
expectedTiles = 96; // 8-lane HiSeq has 96 |
5862 |
11 Mar 20 |
nicklas |
expectedTilesAlt = 64; // 2-lane HiSeq has 64 |
5862 |
11 Mar 20 |
nicklas |
124 |
} |
2645 |
10 Sep 14 |
nicklas |
expectedCycles = 0; |
5530 |
27 Jun 19 |
nicklas |
var reads = readString.match(/\d+(?=T|B|M)/g); |
2645 |
10 Sep 14 |
nicklas |
for (var i = 0; i < reads.length; i++) |
2642 |
09 Sep 14 |
nicklas |
128 |
{ |
2645 |
10 Sep 14 |
nicklas |
expectedCycles += parseInt(reads[i]); |
2642 |
09 Sep 14 |
nicklas |
130 |
} |
2641 |
09 Sep 14 |
nicklas |
131 |
|
2645 |
10 Sep 14 |
nicklas |
check.runNextCheck(); |
2645 |
10 Sep 14 |
nicklas |
133 |
} |
2645 |
10 Sep 14 |
nicklas |
134 |
|
2645 |
10 Sep 14 |
nicklas |
135 |
|
2645 |
10 Sep 14 |
nicklas |
check.runNextCheck = function() |
2645 |
10 Sep 14 |
nicklas |
137 |
{ |
2645 |
10 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
2645 |
10 Sep 14 |
nicklas |
139 |
|
2910 |
10 Nov 14 |
nicklas |
if (!frm['lane.'+currentLaneNo].checked) |
2910 |
10 Nov 14 |
nicklas |
141 |
{ |
2910 |
10 Nov 14 |
nicklas |
setTimeout(check.checkPerformed, 100); |
2910 |
10 Nov 14 |
nicklas |
return; |
2910 |
10 Nov 14 |
nicklas |
144 |
} |
2910 |
10 Nov 14 |
nicklas |
145 |
|
2890 |
03 Nov 14 |
nicklas |
var selected = frm.clusters[frm.clusters.selectedIndex]; |
2890 |
03 Nov 14 |
nicklas |
var cluster = selected.cluster; |
2890 |
03 Nov 14 |
nicklas |
var node = selected.node; |
2890 |
03 Nov 14 |
nicklas |
149 |
|
2641 |
09 Sep 14 |
nicklas |
var url = '../SequencingRun.servlet?ID='+App.getSessionId(); |
2641 |
09 Sep 14 |
nicklas |
url += '&cmd=CheckIlluminaDataFiles'; |
2641 |
09 Sep 14 |
nicklas |
url += '&seqrun='+Data.get('page-data', 'seqrun-id'); |
2645 |
10 Sep 14 |
nicklas |
url += '&readString='+encodeURIComponent(readString); |
2890 |
03 Nov 14 |
nicklas |
url += '&cluster='+encodeURIComponent(cluster.id); |
2890 |
03 Nov 14 |
nicklas |
if (node) |
2890 |
03 Nov 14 |
nicklas |
156 |
{ |
4306 |
17 Jan 17 |
nicklas |
url += '&node='+encodeURIComponent(node.name); |
2890 |
03 Nov 14 |
nicklas |
158 |
} |
2641 |
09 Sep 14 |
nicklas |
url += '&lane='+currentLaneNo; |
7031 |
09 Feb 23 |
nicklas |
url += '&timeout='+encodeURIComponent(frm.timeout.value); |
2641 |
09 Sep 14 |
nicklas |
161 |
|
2641 |
09 Sep 14 |
nicklas |
Wizard.setInputStatus('lane.'+currentLaneNo, 'checking', 'Checking...'); |
2641 |
09 Sep 14 |
nicklas |
Wizard.asyncJsonRequest(url, check.checkPerformed); |
2641 |
09 Sep 14 |
nicklas |
164 |
} |
2641 |
09 Sep 14 |
nicklas |
165 |
|
2641 |
09 Sep 14 |
nicklas |
check.checkPerformed = function(response) |
2641 |
09 Sep 14 |
nicklas |
167 |
{ |
2642 |
09 Sep 14 |
nicklas |
var frm = document.forms['reggie']; |
2910 |
10 Nov 14 |
nicklas |
if (!response) |
2910 |
10 Nov 14 |
nicklas |
170 |
{ |
2910 |
10 Nov 14 |
nicklas |
Wizard.setInputStatus('lane.'+currentLaneNo, '', 'Skipped'); |
2910 |
10 Nov 14 |
nicklas |
172 |
} |
2910 |
10 Nov 14 |
nicklas |
else |
2910 |
10 Nov 14 |
nicklas |
174 |
{ |
2910 |
10 Nov 14 |
nicklas |
var exitStatus = response.exitStatus; |
6678 |
19 Apr 22 |
nicklas |
check.setPicardStatus(currentLaneNo, exitStatus, response.stdout || response.stderr, response.stderr); |
2910 |
10 Nov 14 |
nicklas |
177 |
} |
2910 |
10 Nov 14 |
nicklas |
178 |
|
2910 |
10 Nov 14 |
nicklas |
if (currentLaneNo < seqRun.flowCell.numLanes) |
2910 |
10 Nov 14 |
nicklas |
180 |
{ |
2910 |
10 Nov 14 |
nicklas |
currentLaneNo++; |
2910 |
10 Nov 14 |
nicklas |
check.runNextCheck(); |
2910 |
10 Nov 14 |
nicklas |
183 |
} |
2910 |
10 Nov 14 |
nicklas |
else |
2910 |
10 Nov 14 |
nicklas |
185 |
{ |
2910 |
10 Nov 14 |
nicklas |
Doc.removeClass('check', 'disabled'); |
2910 |
10 Nov 14 |
nicklas |
187 |
} |
2910 |
10 Nov 14 |
nicklas |
188 |
} |
2910 |
10 Nov 14 |
nicklas |
189 |
|
2910 |
10 Nov 14 |
nicklas |
check.setPicardStatus = function(laneNo, exitStatus, stdout, stderr) |
2910 |
10 Nov 14 |
nicklas |
191 |
{ |
2910 |
10 Nov 14 |
nicklas |
var status = exitStatus == 0 ? 'valid' : 'invalid'; |
2910 |
10 Nov 14 |
nicklas |
var msg = ''; |
2910 |
10 Nov 14 |
nicklas |
194 |
|
2641 |
09 Sep 14 |
nicklas |
if (exitStatus == 0) |
2641 |
09 Sep 14 |
nicklas |
196 |
{ |
2642 |
09 Sep 14 |
nicklas |
var cycles; |
2642 |
09 Sep 14 |
nicklas |
var tiles; |
2910 |
10 Nov 14 |
nicklas |
var lines = stdout.split(/\n/); |
2910 |
10 Nov 14 |
nicklas |
for (var lineNo = 0; lineNo < lines.length; lineNo++) |
2642 |
09 Sep 14 |
nicklas |
201 |
{ |
2910 |
10 Nov 14 |
nicklas |
var line = lines[lineNo]; |
2642 |
09 Sep 14 |
nicklas |
var c = line.indexOf('Expected cycles'); |
2642 |
09 Sep 14 |
nicklas |
if (c > 0) |
2642 |
09 Sep 14 |
nicklas |
205 |
{ |
2642 |
09 Sep 14 |
nicklas |
cycles = line.substring(c).match(/\d+/g); |
2642 |
09 Sep 14 |
nicklas |
207 |
} |
2642 |
09 Sep 14 |
nicklas |
var t = line.indexOf('Expected tiles'); |
2642 |
09 Sep 14 |
nicklas |
if (t > 0) |
2642 |
09 Sep 14 |
nicklas |
210 |
{ |
2642 |
09 Sep 14 |
nicklas |
tiles = line.substring(t).match(/\d+/g); |
2642 |
09 Sep 14 |
nicklas |
212 |
} |
2642 |
09 Sep 14 |
nicklas |
213 |
} |
2642 |
09 Sep 14 |
nicklas |
214 |
|
2910 |
10 Nov 14 |
nicklas |
msg = (cycles == null ? 'unknown' : cycles.length) + ' cycles'; |
2642 |
09 Sep 14 |
nicklas |
if (cycles == null || cycles.length != expectedCycles) |
2642 |
09 Sep 14 |
nicklas |
217 |
{ |
2642 |
09 Sep 14 |
nicklas |
msg += ' (expected ' + expectedCycles + ')'; |
2642 |
09 Sep 14 |
nicklas |
status = 'warning'; |
2642 |
09 Sep 14 |
nicklas |
220 |
} |
2642 |
09 Sep 14 |
nicklas |
221 |
|
5862 |
11 Mar 20 |
nicklas |
if (expectedTiles > 0) |
2642 |
09 Sep 14 |
nicklas |
223 |
{ |
5862 |
11 Mar 20 |
nicklas |
msg += '; ' + (tiles == null ? 'unknown' : tiles.length) + ' tiles'; |
5862 |
11 Mar 20 |
nicklas |
if (tiles == null || (tiles.length != expectedTiles && tiles.length != expectedTilesAlt)) |
5862 |
11 Mar 20 |
nicklas |
226 |
{ |
5862 |
11 Mar 20 |
nicklas |
msg += ' (expected ' + expectedTiles; |
5862 |
11 Mar 20 |
nicklas |
if (expectedTiles != expectedTilesAlt) msg += ' or ' + expectedTilesAlt; |
5862 |
11 Mar 20 |
nicklas |
msg += ')'; |
5862 |
11 Mar 20 |
nicklas |
status = 'warning'; |
5862 |
11 Mar 20 |
nicklas |
231 |
} |
2642 |
09 Sep 14 |
nicklas |
232 |
} |
2641 |
09 Sep 14 |
nicklas |
233 |
} |
2641 |
09 Sep 14 |
nicklas |
else |
2641 |
09 Sep 14 |
nicklas |
235 |
{ |
5531 |
27 Jun 19 |
nicklas |
msg = check.extractPicardErrorMessage(stderr || stdout); |
2641 |
09 Sep 14 |
nicklas |
237 |
} |
2920 |
11 Nov 14 |
nicklas |
238 |
|
2910 |
10 Nov 14 |
nicklas |
Wizard.setInputStatus('lane.'+laneNo, status, msg); |
2910 |
10 Nov 14 |
nicklas |
240 |
} |
2910 |
10 Nov 14 |
nicklas |
241 |
|
5531 |
27 Jun 19 |
nicklas |
// Strings that appear in picard output that is not related to any error |
5531 |
27 Jun 19 |
nicklas |
var PICARD_OK_STRINGS = ['Checking lane', 'Expected cycles', 'Expected tiles', 'Loading lib']; |
2641 |
09 Sep 14 |
nicklas |
244 |
|
5531 |
27 Jun 19 |
nicklas |
245 |
/** |
5531 |
27 Jun 19 |
nicklas |
Try to extract a "good" error message from the output from picard. |
5531 |
27 Jun 19 |
nicklas |
We loop over the output backwards since error messages are most likely |
5531 |
27 Jun 19 |
nicklas |
to be at the end. Each line is also checked if it contains text indicating |
5531 |
27 Jun 19 |
nicklas |
that it comes from an informational message (PICARD_OK_STRINGS). Finally, |
5531 |
27 Jun 19 |
nicklas |
we split the line by \t and if there is at least 4 columns we skip the |
5531 |
27 Jun 19 |
nicklas |
first two (since they contain 'INFO' and a timestamp). |
5531 |
27 Jun 19 |
nicklas |
252 |
*/ |
5531 |
27 Jun 19 |
nicklas |
check.extractPicardErrorMessage = function(stdout) |
5531 |
27 Jun 19 |
nicklas |
254 |
{ |
5862 |
11 Mar 20 |
nicklas |
App.debug(stdout); |
5531 |
27 Jun 19 |
nicklas |
var lines = stdout.split(/\n/); |
5531 |
27 Jun 19 |
nicklas |
var errorLines = []; |
5862 |
11 Mar 20 |
nicklas |
var stackTraceLines = []; |
5531 |
27 Jun 19 |
nicklas |
for (var lineNo = lines.length - 1; lineNo >= 0; lineNo--) |
5531 |
27 Jun 19 |
nicklas |
260 |
{ |
5531 |
27 Jun 19 |
nicklas |
var line = lines[lineNo]; |
5531 |
27 Jun 19 |
nicklas |
if (!line) continue; |
5531 |
27 Jun 19 |
nicklas |
263 |
|
5531 |
27 Jun 19 |
nicklas |
var lineIsOk = false; |
5531 |
27 Jun 19 |
nicklas |
for (var i = 0; i < PICARD_OK_STRINGS.length; i++) |
5531 |
27 Jun 19 |
nicklas |
266 |
{ |
5531 |
27 Jun 19 |
nicklas |
if (line.indexOf(PICARD_OK_STRINGS[i]) > 0) |
5531 |
27 Jun 19 |
nicklas |
268 |
{ |
5531 |
27 Jun 19 |
nicklas |
lineIsOk = true; |
5531 |
27 Jun 19 |
nicklas |
break; |
5531 |
27 Jun 19 |
nicklas |
271 |
} |
5531 |
27 Jun 19 |
nicklas |
272 |
} |
5531 |
27 Jun 19 |
nicklas |
273 |
|
5531 |
27 Jun 19 |
nicklas |
if (!lineIsOk) |
5531 |
27 Jun 19 |
nicklas |
275 |
{ |
5862 |
11 Mar 20 |
nicklas |
if (line.indexOf('at picard.') > 0) |
5531 |
27 Jun 19 |
nicklas |
277 |
{ |
5862 |
11 Mar 20 |
nicklas |
// Line from a stacktrace -- we need to revert the order |
5862 |
11 Mar 20 |
nicklas |
stackTraceLines[stackTraceLines.length] = line; |
5531 |
27 Jun 19 |
nicklas |
280 |
} |
5862 |
11 Mar 20 |
nicklas |
else |
5862 |
11 Mar 20 |
nicklas |
282 |
{ |
5862 |
11 Mar 20 |
nicklas |
var cols = line.split('\t'); |
5862 |
11 Mar 20 |
nicklas |
if (cols.length > 3 && cols[0]=='INFO') |
5862 |
11 Mar 20 |
nicklas |
285 |
{ |
5862 |
11 Mar 20 |
nicklas |
line = cols.slice(2).join('\t'); |
5862 |
11 Mar 20 |
nicklas |
287 |
} |
5862 |
11 Mar 20 |
nicklas |
errorLines[errorLines.length] = line; |
5862 |
11 Mar 20 |
nicklas |
289 |
} |
5531 |
27 Jun 19 |
nicklas |
290 |
} |
5531 |
27 Jun 19 |
nicklas |
291 |
} |
5862 |
11 Mar 20 |
nicklas |
292 |
|
5862 |
11 Mar 20 |
nicklas |
if (stackTraceLines.length > 0) |
5862 |
11 Mar 20 |
nicklas |
294 |
{ |
5862 |
11 Mar 20 |
nicklas |
errorLines = errorLines.concat(stackTraceLines.reverse()); |
5862 |
11 Mar 20 |
nicklas |
296 |
} |
5862 |
11 Mar 20 |
nicklas |
297 |
|
5531 |
27 Jun 19 |
nicklas |
return errorLines.join('\n'); |
5531 |
27 Jun 19 |
nicklas |
299 |
} |
5531 |
27 Jun 19 |
nicklas |
300 |
|
2641 |
09 Sep 14 |
nicklas |
return check; |
2641 |
09 Sep 14 |
nicklas |
302 |
}(); |
2641 |
09 Sep 14 |
nicklas |
303 |
|
2641 |
09 Sep 14 |
nicklas |
Doc.onLoad(Check.initPage); |