source: extensions/net.sf.basedb.reggie/trunk/resources/analysis/demux_start.jsp @ 2593

Last change on this file since 2593 was 2593, checked in by Nicklas Nordborg, 8 years ago

Resetting debug flags.

File size: 22.6 KB
Line 
1<%@ page
2  pageEncoding="UTF-8"
3  session="false"
4  import="net.sf.basedb.core.User"
5  import="net.sf.basedb.core.DbControl"
6  import="net.sf.basedb.core.SessionControl"
7  import="net.sf.basedb.core.Application"
8  import="net.sf.basedb.clients.web.Base" 
9  import="net.sf.basedb.clients.web.util.HTML" 
10  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
11%>
12<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
13<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
14<%
15final SessionControl sc = Base.getExistingSessionControl(request, true);
16final String ID = sc.getId();
17final float scale = Base.getScale(sc);
18final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie");
19DbControl dc = null;
20try
21{
22  dc = sc.newDbControl();
23  final User user = User.getById(dc, sc.getLoggedInUserId());
24%>
25<base:page type="default" >
26<base:head scripts="ajax.js" styles="path.css">
27  <link rel="stylesheet" type="text/css" href="../css/reggie.css">
28  <script language="JavaScript" src="../reggie.js" type="text/javascript" charset="UTF-8"></script>
29
30<script language="JavaScript">
31
32var debug = 0;
33var currentStep = 1;
34var readStringIsValid = [];
35var clusterIsValid = false;
36
37function init()
38{
39  var frm = document.forms['reggie'];
40  var seqRuns = getSequencingRuns();
41
42  // Load confirmed SequencingRun items that has not been demuxed
43  if (seqRuns != null && seqRuns.length > 0)
44  {
45    for (var runNo=0; runNo < seqRuns.length; runNo++)
46    {
47      var seqRun = seqRuns[runNo];
48      var option = getOptionForSeqRun(seqRun);
49      frm.seqRuns.options[frm.seqRuns.length] = option;
50    }
51    sequencingRunOnChange();
52  }
53  else
54  {
55    setInputStatus('seqRuns', 'No new sequencing runs available for processing', 'invalid');
56  }
57
58  // All is ok
59  frm.seqRuns.focus();
60}
61
62function getOptionForSeqRun(seqRun)
63{
64  var flowCell = seqRun.flowCell;
65  var name = seqRun.name+': ';
66  var numPools = flowCell.pools.length;
67  var firstPoolNum = getPoolNum(flowCell.pools[0].name);
68  var lastPoolNum = getPoolNum(flowCell.pools[flowCell.pools.length-1].name);
69
70  if (lastPoolNum - firstPoolNum == numPools - 1)
71  {
72    if (numPools > 1)
73    {
74      // Display: PoolN -- PoolY
75      name += flowCell.pools[0].name + ' — ' + flowCell.pools[flowCell.pools.length-1].name;
76    }
77    else
78    {
79      name += flowCell.pools[0].name;
80    }
81  }
82  else
83  {
84    // Display: PoolN + x more...
85    name += flowCell.pools[0].name + ' + ' + (numPools-1) + ' more...';
86  }
87
88  // Tooltip is always all pools
89  var title = '';
90  for (var poolNo=0; poolNo < numPools; poolNo++)
91  {
92    var pool = flowCell.pools[poolNo];
93    if (poolNo > 0) title += ', ';
94    title += pool.name;
95  }
96
97  var option = new Option(name, seqRun.id);
98  option.title = title;
99  option.seqRun = seqRun;
100  return option;
101}
102
103function getPoolNum(poolName)
104{
105  var num = poolName.match(/Pool(\d+)/);
106  return num ? parseInt(num[1], 10) : null;
107}
108
109function goNextAuto()
110{
111  goNext(false);
112}
113
114function goNext(manual)
115{
116  setInnerHTML('gonext.message', '');
117  if (currentStep == 1)
118  {
119    if (step1IsValid()) gotoStep2();
120  }
121  setCurrentStep(currentStep);
122}
123
124function step1IsValid()
125{
126  var frm = document.forms['reggie'];
127  for (var seqNo = 0; seqNo < frm.seqRuns.length; seqNo++)
128  {
129    if (frm.seqRuns[seqNo].selected) return true;
130  }
131  setInputStatus('seqRuns', 'Select at least one sequencing run', 'invalid');
132  return false;
133}
134
135function step2IsValid()
136{
137  if (!clusterIsValid) return false;
138 
139  var frm = document.forms['reggie'];
140  for (var seqNo = 0; seqNo < frm.seqRuns.length; seqNo++)
141  {
142    if (frm.seqRuns[seqNo].selected) 
143    {
144      if (!readStringIsValid[seqNo]) return false;
145    }
146  }
147  return true;
148}
149
150
151function getSequencingRuns()
152{
153  var frm = document.forms['reggie']; 
154 
155  var request = Ajax.getXmlHttpRequest();
156  try
157  {
158    showLoadingAnimation('Loading sequencing runs...');
159    var url = '../DemuxMerge.servlet?ID=<%=ID%>&cmd=GetConfirmedSequencingRuns';   
160    request.open("GET", url, false); 
161    request.send(null);
162  }
163  finally
164  {
165    hideLoadingAnimation();
166  }
167 
168  if (debug) Main.debug(request.responseText);
169  var response = JSON.parse(request.responseText); 
170  if (response.status != 'ok')
171  {
172    setFatalError(response.message);
173    return false;
174  }
175 
176  return response.sequencingRuns;
177}
178
179
180function formatDate(value)
181{
182  if (!value) return '';
183  if (value.length == 8)
184  {
185    // YYYYMMDD
186    value = value.substr(0, 4) + '-' + value.substr(4, 2) + '-' + value.substr(6, 2);
187  }
188  else if (value.length == 13)
189  {
190    // YYYYMMDD HHMM
191    value = value.substr(0, 4) + '-' + value.substr(4, 2) + '-' + value.substr(6, 2) + ' ' + value.substr(9, 2) + ':' + value.substr(11, 2);
192  }
193  return value;
194}
195
196
197function gotoStep2()
198{
199  var frm = document.forms['reggie'];
200 
201  // Disable controls
202  frm.seqRuns.disabled = true;
203
204  currentStep = 2;
205  Main.show('step.2.section');
206  Main.addClass(document.getElementById('step.1.section'), 'disabled');
207  Main.show('gocancel');
208  Main.show('goregister');
209  Main.hide('gonext');
210 
211  // ReadString input fields
212  var html = '';
213  for (var seqNo = 0; seqNo < frm.seqRuns.length; seqNo++)
214  {
215    if (frm.seqRuns[seqNo].selected)
216    {
217      var seqRun = frm.seqRuns[seqNo].seqRun;
218      var fc = seqRun.flowCell;
219     
220      html += '<tr valign="top" style="border-top: 1em solid transparent;">';
221      html += '<td class="prompt">'+Main.encodeTags(seqRun.name)+'</td>';
222      html += '<td>'+seqRun.SequencingCycles+'</td>';
223      html += '<td class="status"></td>';
224      html += '<td class="help"></td>';
225      html += '</tr>';
226     
227      html += '<tr valign="top">';
228      html += '<td class="subprompt">ReadString</td>';
229      html += '<td><input type="text" class="required" name="readString.'+seqNo+'" value="'+seqRun.ReadString+'" style="width: 11em;" onblur="readStringOnBlur('+seqNo+')"></td>';
230      html += '<td class="status" id="readString.'+seqNo+'.status"></td>';
231      html += '<td class="help"><span id="readString.'+seqNo+'.message"></span></td>';
232      html += '</tr>';
233     
234      html += '<tr>';
235      html += '<td class="subprompt">Omit lanes</td>';
236      html += '<td>';
237      for (var laneNo = 1; laneNo <= fc.numLanes; laneNo++)
238      {
239        var checked = fc.FailedLanes.indexOf(laneNo) >= 0 ? 'checked' : '';
240        html += '<label><input type="checkbox" name="omitLanes.'+seqNo+'" value="'+laneNo+'" ' + checked + '>'+laneNo+'</label> ';
241      }
242      html += '</td>';
243      html += '<td class="status"></td>';
244      html += '<td class="help">By default, failed lanes are omitted</td>';
245      html += '</tr>';
246     
247    }
248  }
249  setInnerHTML('SequencingRun-section', html);
250  for (var seqNo = 0; seqNo < frm.seqRuns.length; seqNo++)
251  {
252    if (frm.seqRuns[seqNo].selected)
253    {
254      readStringOnBlur(seqNo);
255    }
256  }
257 
258  // Load demux protocols
259  var demuxProtocols = getProtocols('DEMUX_PROTOCOL');
260  for (var i = 0; i < demuxProtocols.length; i++)
261  {
262    var protocol = demuxProtocols[i];
263    frm.demuxProtocol[frm.demuxProtocol.length] = new Option(protocol.name, protocol.id, protocol.isDefault);
264    setInputStatus('demuxProtocol', '', 'valid');
265  }
266  if (frm.demuxProtocol.length == 0)
267  {
268    frm.demuxProtocol[0] = new Option('- none -', '');
269  }
270 
271  // Load demux software
272  var software = getSoftware('DEMUX_SOFTWARE');
273  for (var i = 0; i < software.length; i++)
274  {
275    var sw = software[i];
276    frm.demuxSoftware[frm.demuxSoftware.length] = new Option(sw.name, sw.id, sw.isDefault);
277    setInputStatus('demuxSoftware', '', 'valid');
278  }
279  if (frm.demuxSoftware.length == 0)
280  {
281    frm.demuxSoftware[0] = new Option('- none -', '');
282  }
283 
284  // Load clusters
285  var clusters = getClusters();
286  for (var i = 0; i < clusters.length; i++)
287  {
288    var cl = clusters[i];
289    var option = new Option(cl.name, cl.id);
290    option.cluster = cl;
291    frm.clusters[frm.clusters.length] = option;
292    setInputStatus('clusters', '', 'valid');
293    clusterIsValid = true;
294  }
295  if (frm.clusters.length == 0)
296  {
297    setInputStatus('clusters', 'No available Open Grid clusters', 'invalid');
298    clusterIsValid = false;
299  }
300  else
301  {
302    clusterOnChange();
303  }
304  // Check debug by default if debug is set or not on a secure server (=production server)
305  frm.debug.checked = debug || location.protocol != 'https:';
306 
307  // Load merge protocols
308  var mergeProtocols = getProtocols('MERGE_PROTOCOL');
309  for (var i = 0; i < mergeProtocols.length; i++)
310  {
311    var protocol = mergeProtocols[i];
312    frm.mergeProtocol[frm.mergeProtocol.length] = new Option(protocol.name, protocol.id, protocol.isDefault);
313    setInputStatus('mergeProtocol', '', 'valid');
314  }
315  if (frm.mergeProtocol.length == 0)
316  {
317    frm.mergeProtocol[0] = new Option('- none -', '');
318  }
319 
320  // Load merge software
321  var software = getSoftware('MERGE_SOFTWARE');
322  for (var i = 0; i < software.length; i++)
323  {
324    var sw = software[i];
325    frm.mergeSoftware[frm.mergeSoftware.length] = new Option(sw.name, sw.id, sw.isDefault);
326    setInputStatus('mergeSoftware', '', 'valid');
327  }
328  if (frm.mergeSoftware.length == 0)
329  {
330    frm.mergeSoftware[0] = new Option('- none -', '');
331  }
332}
333
334function clusterOnChange()
335{
336  var frm = document.forms['reggie'];
337 
338  var cluster = frm.clusters[frm.clusters.selectedIndex].cluster;
339  if (cluster.priorities && cluster.priorities.length > 0)
340  {
341    frm.priority.length = 0;
342    for (var pNo = 0; pNo < cluster.priorities.length; pNo++)
343    {
344      var p = cluster.priorities[pNo];
345      frm.priority[frm.priority.length] = new Option(p.name + ' ('+p.value+')', p.value, p['default']);
346    }
347    Main.show('job-priority');
348  }
349  else
350  {
351    Main.hide('job-priority');
352  }
353}
354
355function readStringOnBlur(seqNo)
356{
357  var frm = document.forms['reggie'];
358
359  var readString = frm['readString.'+seqNo].value;
360  setInputStatus('readString.'+seqNo, '', '');
361  readStringIsValid[seqNo] = false;
362 
363  if (!readString.match(/^(\d+[TBS])+$/))
364  {
365    setInputStatus('readString.'+seqNo, 'Invalid read string', 'invalid');
366    return;
367  }
368  setInputStatus('readString.'+seqNo, '', 'valid');
369  readStringIsValid[seqNo] = true;
370 
371}
372
373function getProtocols(subtype)
374{
375  var request = Ajax.getXmlHttpRequest();
376  try
377  {
378    showLoadingAnimation('Loading ' + subtype + ' protocols...');
379    var url = '../Protocol.servlet?ID=<%=ID%>&cmd=GetProtocols&subtype='+subtype;   
380    request.open("GET", url, false); 
381    request.send(null);
382  }
383  finally
384  {
385    hideLoadingAnimation();
386  }
387
388  if (debug) Main.debug(request.responseText);
389  var response = JSON.parse(request.responseText); 
390  if (response.status != 'ok')
391  {
392    setFatalError(response.message);
393    return false;
394  }
395  return response.protocols;
396}
397
398function getSoftware(subtype)
399{
400  var request = Ajax.getXmlHttpRequest();
401  try
402  {
403    showLoadingAnimation('Loading ' + subtype + ' hardware...');
404    var url = '../Software.servlet?ID=<%=ID%>&cmd=GetSoftware&subtype='+subtype;   
405    request.open("GET", url, false); 
406    request.send(null);
407  }
408  finally
409  {
410    hideLoadingAnimation();
411  }
412
413  if (debug) Main.debug(request.responseText);
414  var response = JSON.parse(request.responseText); 
415  if (response.status != 'ok')
416  {
417    setFatalError(response.message);
418    return false;
419  }
420  return response.software;
421}
422
423function getClusters()
424{
425  var request = Ajax.getXmlHttpRequest();
426  try
427  {
428    showLoadingAnimation('Loading Open Grid Scheduler clusters...');
429    var url = '../OpenGrid.servlet?ID=<%=ID%>&cmd=GetHostInfo';   
430    request.open("GET", url, false); 
431    request.send(null);
432  }
433  finally
434  {
435    hideLoadingAnimation();
436  }
437
438  if (debug) Main.debug(request.responseText);
439  var response = JSON.parse(request.responseText); 
440  if (response.status != 'ok')
441  {
442    setFatalError(response.message);
443    return false;
444  }
445  return response.clusters;
446}
447
448
449function goRegister()
450{
451  if (!step2IsValid()) return;
452
453  var frm = document.forms['reggie'];
454 
455  frm.demuxSoftware.disabled = true;
456  frm.demuxProtocol.disabled = true;
457  frm.mergeSoftware.disabled = true;
458  frm.mergeProtocol.disabled = true;
459  frm.priority.disabled = true;
460  frm.debug.disabled = true;
461 
462  Main.addClass(document.getElementById('step.2.section'), 'disabled');
463 
464  Main.hide('goregister');
465  Main.hide('gocancel');
466  Main.hide('gonext.message');
467 
468  var submitInfo = {};
469 
470  submitInfo.demuxSoftware = parseInt(frm.demuxSoftware.value);
471  submitInfo.demuxProtocol = parseInt(frm.demuxProtocol.value);
472  submitInfo.mergeSoftware = parseInt(frm.mergeSoftware.value);
473  submitInfo.mergeProtocol = parseInt(frm.mergeProtocol.value);
474  submitInfo.cluster = frm.clusters.value;
475  if (frm.priority.selectedIndex >= 0)
476  {
477    submitInfo.priority = parseInt(frm.priority.value);
478  }
479  submitInfo.debug = frm.debug.checked;
480 
481  var sequencingRuns = [];
482  submitInfo.sequencingRuns = sequencingRuns;
483 
484  for (var seqNo = 0; seqNo < frm.seqRuns.length; seqNo++)
485  {
486    if (frm.seqRuns[seqNo].selected) 
487    {
488      frm['readString.'+seqNo].disabled = true;
489      var seqRun = {};
490      seqRun.id = frm.seqRuns[seqNo].seqRun.id;
491      seqRun.ReadString = frm['readString.'+seqNo].value;
492     
493      var omitLanes = [];
494      var checkboxes = frm['omitLanes.'+seqNo];
495      for (var i = 0; i < checkboxes.length; i++)
496      {
497        if (checkboxes[i].checked) 
498        {
499          omitLanes[omitLanes.length] = parseInt(checkboxes[i].value);
500        }
501      }
502      seqRun.OmitLanes = omitLanes;
503      sequencingRuns[sequencingRuns.length] = seqRun;
504    }
505  }
506 
507  if (debug) Main.debug(JSON.stringify(submitInfo));
508  var url = '../DemuxMerge.servlet?ID=<%=ID%>&cmd=StartDemuxAndMerge';
509  var request = Ajax.getXmlHttpRequest();
510  try
511  {
512    showLoadingAnimation('Performing registration...');
513    request.open("POST", url, false);
514    request.send(JSON.stringify(submitInfo));
515  }
516  finally
517  {
518    hideLoadingAnimation();
519  }
520 
521  if (debug) Main.debug(request.responseText);
522  var response = JSON.parse(request.responseText);
523 
524  if (response.messages && response.messages.length > 0)
525  {
526    var msg = '<ul>';
527    for (var i = 0; i < response.messages.length; i++)
528    {
529      var msgLine = response.messages[i];
530      if (msgLine.indexOf('[Warning]') >= 0)
531      {
532        msg += '<li class="warning">' + msgLine.replace('[Warning]', '');
533      }
534      else
535      {
536        msg += '<li>' + msgLine;
537      }
538    }
539    msg += '</ul>';
540    setInnerHTML('messages', msg);
541    Main.show('messages');
542  }
543 
544  if (response.status != 'ok')
545  {
546    Main.addClass(document.getElementById('messages'), 'failure');
547    setFatalError(response.message);
548    return false;
549  }
550
551  Main.show('gorestart');
552}
553
554
555var subtypeSeqRun = null;
556function selectSeqRuns()
557{
558  var frm = document.forms['reggie'];
559  if (frm.seqRuns.disabled) return;
560 
561  if (subtypeSeqRun == null)
562  {
563    var request = Ajax.getXmlHttpRequest();
564    var url = '../Subtype.servlet?ID=<%=ID%>&cmd=GetSubtypeInfo&name=SEQUENCING_RUN';
565    request.open("GET", url, false); 
566    request.send(null);
567
568    if (debug) Main.debug(request.responseText);
569    var response = JSON.parse(request.responseText); 
570    if (response.status != 'ok')
571    {
572      setFatalError(response.message);
573      return false;
574    }
575    subtypeSeqRun = response.subtype;
576  }
577 
578  var url = getRoot() + 'views/derivedbioassays/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectmultiple&callback=setSeqRunCallback';
579  url += '&tmpfilter:INT:itemSubtype='+subtypeSeqRun.id;
580  Main.openPopup(url, 'SelectSequencingRuns', 1000, 700);
581}
582
583function setSeqRunCallback(id, name)
584{
585  var frm = document.forms['reggie'];
586  var seqRunList = frm.seqRuns;
587  for (var i = 0; i < seqRunList.length; i++)
588  {
589    if (seqRunList[i].value == id)
590    {
591      seqRunList[i].selected = true;
592      setInputStatus('seqRuns', '', '');
593      return;
594    }
595  }
596 
597  // Get more information about the selected sequencing run
598  var request = Ajax.getXmlHttpRequest();
599  var url = '../DemuxMerge.servlet?ID=<%=ID%>&cmd=GetSequencingRunInfo&id=' + id;   
600  request.open("GET", url, false); 
601  request.send(null);
602 
603  if (debug) Main.debug(request.responseText);
604  var response = JSON.parse(request.responseText);
605  if (response.status != 'ok')
606  {
607    setFatalError(response.message);
608    return false;
609  }
610 
611  var seqRun = response.sequencingRun;
612  var option = getOptionForSeqRun(seqRun);
613  option.selected = true;
614  seqRunList[seqRunList.length] = option;
615  setInputStatus('seqRuns', '', '');
616}
617
618</script>
619<style>
620
621</style>
622</base:head>
623<base:body onload="init()">
624
625  <p:path><p:pathelement 
626    title="Reggie" href="<%="../index.jsp?ID="+ID%>" 
627    /><p:pathelement title="Start demux and merge" 
628    /></p:path>
629
630  <div class="content">
631  <%
632  if (sc.getActiveProjectId() == 0)
633  {
634    %>
635    <div class="messagecontainer note" style="width: 950px; margin-left: 20px; margin-bottom: 20px; margin-right: 0px; font-weight: bold; color: #cc0000;">
636      No project has been selected. You may proceed with the registration but
637      created items will not be shared.
638    </div>
639    <%
640  }
641  %>
642
643  <form name="reggie" onsubmit="return false;">
644 
645  <div id="step.1.section">
646  <table class="stepform">
647  <tr>
648    <td rowspan="3" class="stepno">1</td>
649    <td class="steptitle">Select sequencing runs</td>
650  </tr>
651  <tr>
652    <td class="stepfields">
653      <table style="border-collapse: collapse;">
654      <tr valign="top">
655        <td class="prompt">Sequencing runs</td>
656        <td class="input"><select class="required" style="width:90%;" multiple
657            name="seqRuns" id="seqRuns"></select>
658           
659          <base:buttongroup style="margin-top: 0.5em;">
660            <base:button title="Select manually&hellip;" onclick="selectSeqRuns()" id="btnSelectSeqRuns" />
661          </base:buttongroup>
662        </td>
663        <td class="status" id="seqRuns.status"></td>
664        <td class="help"><span id="seqRuns.message" class="message" style="display: none;"></span>
665          Select the sequencing runs that should be demuxed. Data for libraries that are found
666          in multiple places are merged to a single item for that library.
667        </td>
668      </tr>
669      </table>
670    </td>
671  </tr>
672  </table>
673  </div>
674 
675  <div id="step.2.section" style="display: none;">
676  <table class="stepform">
677  <tr>
678    <td rowspan="3" class="stepno">2</td>
679    <td class="steptitle" id="step.2.title">Demux and merge information</td>
680  </tr>
681  <tr>
682    <td class="stepfields">
683      <table style="border-collapse: collapse;">
684      <tr valign="top" style="background-color: #E8E8E8;">
685        <td class="prompt">Demux</td>
686        <td class="input"></td>
687        <td class="status"></td>
688        <td class="help"></td>
689      </tr>
690      <tr valign="top">
691        <td class="subprompt">Software</td>
692        <td class="input"><select style="width:90%" name="demuxSoftware" id="demuxSoftware" 
693          onkeypress="focusOnEnter(event, 'demuxProtocol')"></select></td>
694        <td class="status" id="demuxSoftware.status"></td>
695        <td class="help"><span id="demuxSoftware.message" class="message" style="display: none;"></span>
696          Select the software to use for demuxing.
697        </td>
698      </tr>
699      <tr valign="top">
700        <td class="subprompt">Protocol</td>
701        <td class="input"><select style="width:90%" name="demuxProtocol" id="demuxProtocol" 
702          onkeypress="focusOnEnter(event, 'fc-0.externalId')"></select></td>
703        <td class="status" id="demuxProtocol.status"></td>
704        <td class="help"><span id="demuxProtocol.message" class="message" style="display: none;"></span>
705          Select the protocol used for demuxing.
706        </td>
707      </tr>
708      <tbody id="SequencingRun-section"></tbody>
709      <tr valign="top" style="background-color: #E8E8E8;">
710        <td class="prompt">Merge</td>
711        <td class="input"></td>
712        <td class="status"></td>
713        <td class="help"></td>
714      </tr>
715      <tr valign="top">
716        <td class="subprompt">Software</td>
717        <td class="input"><select style="width:90%" name="mergeSoftware" id="mergeSoftware" 
718          onkeypress="focusOnEnter(event, 'mergeProtocol')"></select></td>
719        <td class="status" id="mergeSoftware.status"></td>
720        <td class="help"><span id="mergeSoftware.message" class="message" style="display: none;"></span>
721          Select the software to use for merging the FASTQ files.
722        </td>
723      </tr>
724      <tr valign="top">
725        <td class="subprompt">Protocol</td>
726        <td class="input"><select style="width:90%" name="mergeProtocol" id="mergeProtocol" 
727          onkeypress="focusOnEnter(event, 'clusters')"></select></td>
728        <td class="status" id="mergeProtocol.status"></td>
729        <td class="help"><span id="mergeProtocol.message" class="message" style="display: none;"></span>
730          Select the protocol used for merging.
731        </td>
732      </tr>
733      <tr valign="top" style="background-color: #E8E8E8;">
734        <td class="prompt">Open Grid Scheduler</td>
735        <td class="input"></td>
736        <td class="status"></td>
737        <td class="help"></td>
738      </tr>
739      <tr valign="top">
740        <td class="subprompt">Cluster</td>
741        <td class="input"><select style="width:90%" name="clusters" id="clusters" class="required"
742          onchange="clusterOnChange()"></select></td>
743        <td class="status" id="clusters.status"></td>
744        <td class="help"><span id="clusters.message" class="message" style="display: none;"></span>
745          Select the cluster to use for running the software.
746        </td>
747      </tr>
748      <tr valign="top" id="job-priority" style="display: none;">
749        <td class="subprompt">Job priority</td>
750        <td class="input"><select style="width:90%" name="priority" id="priority"></select></td>
751        <td class="status" id="priority.status"></td>
752        <td class="help"><span id="priority.message" class="message" style="display: none;"></span>
753          Select the priority of the job.
754        </td>
755      </tr>
756      <tr valign="top">
757        <td class="subprompt">Debug</td>
758        <td class="input"><input type="checkbox" name="debug"></td>
759        <td class="status" id="debug.status"></td>
760        <td class="help"><span id="debug.message" class="message" style="display: none;"></span>
761          When running in debug mode only part of the sequenced data is used and
762          temporary files are not removed from the cluster node.
763        </td>
764      </tr>
765      </table>
766    </td>
767  </tr>
768  </table>
769  </div>
770   
771  <div class="loading" id="loading" style="display: none;"><table><tr><td><img src="../images/loading.gif"></td><td id="loading.msg">Please wait...</td></tr></table></div>
772 
773  <div class="messagecontainer error" id="errorMessage" style="display: none; width: 950px; margin-left: 20px; margin-bottom: 0px;"></div>
774 
775  <div id="messages" class="success" style="display: none; width: 950px; margin-left: 20px; margin-top: 20px;"></div>
776 
777  <table style="margin-left: 20px; margin-top: 10px;" class="navigation">
778    <tr>
779      <td><base:button id="gocancel" title="Cancel" onclick="goRestart(false)" style="display: none;"/></td>
780      <td><base:button id="gonext" title="Next" image="<%=home+"/images/gonext.png"%>" onclick="goNext(true)"/></td>
781      <td><base:button id="goregister" title="Register" image="<%=home+"/images/import.png"%>" onclick="goRegister()" style="display: none;"/></td>
782      <td><base:button id="gorestart" title="Restart" image="<%=home+"/images/goback.png"%>" onclick="goRestart(true)" style="display: none;"/></td>
783      <td id="gonext.message" class="message"></td>
784    </tr>
785  </table>
786 
787  </form>
788  </div>
789 
790</base:body>
791</base:page>
792<%
793}
794finally
795{
796  if (dc != null) dc.close();
797}
798%>
Note: See TracBrowser for help on using the repository browser.