extensions/net.sf.basedb.reggie/trunk/resources/analysis/import_fastq.js

Code
Comments
Other
Rev Date Author Line
6180 24 Mar 21 nicklas 1 var Fastq = function()
6180 24 Mar 21 nicklas 2 {
6180 24 Mar 21 nicklas 3   var fastq = {};
6935 05 Dec 22 nicklas 4   var debug = 0;
6180 24 Mar 21 nicklas 5   var selectionIsValid = false;
6180 24 Mar 21 nicklas 6   var clusterIsValid = false;
6180 24 Mar 21 nicklas 7   
6180 24 Mar 21 nicklas 8   // Page initialization
6180 24 Mar 21 nicklas 9   fastq.initPage = function()
6180 24 Mar 21 nicklas 10   {
6180 24 Mar 21 nicklas 11     
6180 24 Mar 21 nicklas 12     // Step 1
6215 16 Apr 21 nicklas 13     Events.addEventHandler('demuxedSequences', 'change', fastq.demuxedSequencesOnChange);
6180 24 Mar 21 nicklas 14     Events.addEventHandler('step-1', 'wizard-validate', fastq.validateStep1);
6180 24 Mar 21 nicklas 15
6180 24 Mar 21 nicklas 16     // Step 2
6180 24 Mar 21 nicklas 17     Events.addEventHandler('step-2', 'wizard-initialize', fastq.initializeStep2);
6180 24 Mar 21 nicklas 18     Events.addEventHandler('step-2', 'wizard-validate', fastq.validateStep2);
6180 24 Mar 21 nicklas 19     Events.addEventHandler('clusters', 'change', fastq.clusterOnChange);
7372 06 Oct 23 nicklas 20     Events.addEventHandler('debug', 'change', fastq.debugOnChange);
7372 06 Oct 23 nicklas 21     Events.addEventHandler('override', 'change', fastq.overrideOnChange);
6180 24 Mar 21 nicklas 22     Events.addEventHandler('mergeSoftware', 'change', fastq.softwareOnChange);
6180 24 Mar 21 nicklas 23
6180 24 Mar 21 nicklas 24     // Navigation
6180 24 Mar 21 nicklas 25     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
6180 24 Mar 21 nicklas 26     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
6180 24 Mar 21 nicklas 27     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
6180 24 Mar 21 nicklas 28     Buttons.addClickHandler('goregister', Wizard.goRegister);
6180 24 Mar 21 nicklas 29       
6180 24 Mar 21 nicklas 30     // Final registration
6180 24 Mar 21 nicklas 31     Events.addEventHandler('wizard', 'wizard-submit', fastq.submit);
6180 24 Mar 21 nicklas 32
6180 24 Mar 21 nicklas 33     Wizard.showLoadingAnimation('Loading bioassays...');
6180 24 Mar 21 nicklas 34     var url = '../Fastq.servlet?ID='+App.getSessionId();
6215 16 Apr 21 nicklas 35     url += '&cmd=GetDemuxedSequencesForImport';
6180 24 Mar 21 nicklas 36     Wizard.asyncJsonRequest(url, fastq.initializeStep1);
6180 24 Mar 21 nicklas 37   }
6180 24 Mar 21 nicklas 38   
6180 24 Mar 21 nicklas 39   // --- Step 1 -----------------------------------
6180 24 Mar 21 nicklas 40   fastq.initializeStep1 = function(response)
6180 24 Mar 21 nicklas 41   {
6215 16 Apr 21 nicklas 42     var demuxedSequences = response.demuxedSequences;
6180 24 Mar 21 nicklas 43     var frm = document.forms['reggie'];  
6215 16 Apr 21 nicklas 44     if (demuxedSequences.length == 0)
6180 24 Mar 21 nicklas 45     {
6215 16 Apr 21 nicklas 46       Wizard.setFatalError('No demuxed sequences available for importing.');
6180 24 Mar 21 nicklas 47       return;
6180 24 Mar 21 nicklas 48     }
6180 24 Mar 21 nicklas 49
6180 24 Mar 21 nicklas 50     var firstPlate = null;
6215 16 Apr 21 nicklas 51     for (var msNo=0; msNo < demuxedSequences.length; msNo++)
6180 24 Mar 21 nicklas 52     {
6215 16 Apr 21 nicklas 53       var ms = demuxedSequences[msNo];
6180 24 Mar 21 nicklas 54       var libPlate = ms.lib.bioWell ? ms.lib.bioWell.bioPlate : null;
6180 24 Mar 21 nicklas 55       if (firstPlate == null && libPlate != null) firstPlate = libPlate.name;
6180 24 Mar 21 nicklas 56       var option = fastq.createListOption(msNo+1, ms, ms.DO_NOT_USE == null && libPlate != null && libPlate.name==firstPlate)
6215 16 Apr 21 nicklas 57       frm.demuxedSequences.options[frm.demuxedSequences.length] = option;
6180 24 Mar 21 nicklas 58     }
6215 16 Apr 21 nicklas 59     Events.sendChangeEvent('demuxedSequences');
6180 24 Mar 21 nicklas 60     
6180 24 Mar 21 nicklas 61     Doc.show('step-1');
6180 24 Mar 21 nicklas 62     Doc.show('gonext');
6180 24 Mar 21 nicklas 63
6215 16 Apr 21 nicklas 64     frm.demuxedSequences.focus();
6180 24 Mar 21 nicklas 65   }
6180 24 Mar 21 nicklas 66   
6180 24 Mar 21 nicklas 67   fastq.validateStep1 = function(event)
6180 24 Mar 21 nicklas 68   {
6180 24 Mar 21 nicklas 69     if (!selectionIsValid) event.preventDefault();
6180 24 Mar 21 nicklas 70   }
6180 24 Mar 21 nicklas 71   
6215 16 Apr 21 nicklas 72   fastq.createListOption = function(index, demuxItem, selected)
6180 24 Mar 21 nicklas 73   {
6215 16 Apr 21 nicklas 74     var lib = demuxItem.lib;
6180 24 Mar 21 nicklas 75     var isYellow = lib.specimen && lib.specimen.YellowLabel != null;
6180 24 Mar 21 nicklas 76     var libPlate = lib.bioWell ? lib.bioWell.bioPlate : null;
6180 24 Mar 21 nicklas 77     
6180 24 Mar 21 nicklas 78     var tooltip = null;
6180 24 Mar 21 nicklas 79     var name = (index) + ': ';
6180 24 Mar 21 nicklas 80     if (libPlate) name += libPlate.name + ' - ';
6215 16 Apr 21 nicklas 81     name += demuxItem.name;
6180 24 Mar 21 nicklas 82     
6215 16 Apr 21 nicklas 83     if (demuxItem.DO_NOT_USE)
6180 24 Mar 21 nicklas 84     {
6180 24 Mar 21 nicklas 85       name += ' [DoNotUse]';
6215 16 Apr 21 nicklas 86       tooltip = 'DoNotUse-'+Strings.encodeTags(demuxItem.DO_NOT_USE+': '+demuxItem.DO_NOT_USE_COMMENT);
6180 24 Mar 21 nicklas 87     }
6215 16 Apr 21 nicklas 88     else if (demuxItem.AutoProcess == 'ReProcess')
6180 24 Mar 21 nicklas 89     {
6180 24 Mar 21 nicklas 90       name += ' [R]';
6180 24 Mar 21 nicklas 91     }
6180 24 Mar 21 nicklas 92     
6215 16 Apr 21 nicklas 93     var option = new Option(name, demuxItem.id, false, selected);
6180 24 Mar 21 nicklas 94     if (isYellow) option.className = 'yellow';
6180 24 Mar 21 nicklas 95     if (tooltip) option.title = tooltip;
6215 16 Apr 21 nicklas 96     option.demuxedSequences = demuxItem;
6180 24 Mar 21 nicklas 97     return option;
6180 24 Mar 21 nicklas 98   }
6180 24 Mar 21 nicklas 99   
6215 16 Apr 21 nicklas 100   fastq.demuxedSequencesOnChange = function()
6180 24 Mar 21 nicklas 101   {
6180 24 Mar 21 nicklas 102     var frm = document.forms['reggie'];
6180 24 Mar 21 nicklas 103     selectionIsValid = false;
6180 24 Mar 21 nicklas 104     var numSelected = 0;
6180 24 Mar 21 nicklas 105     var numDoNotUse = 0;
6214 15 Apr 21 nicklas 106     var invalidSelection = null;
6180 24 Mar 21 nicklas 107     
6215 16 Apr 21 nicklas 108     Wizard.setInputStatus('demuxedSequences');
6180 24 Mar 21 nicklas 109     Wizard.hideGoNextConfirmation();
6215 16 Apr 21 nicklas 110     for (var msNo = 0; msNo < frm.demuxedSequences.length; msNo++)
6180 24 Mar 21 nicklas 111     {
6215 16 Apr 21 nicklas 112       if (frm.demuxedSequences[msNo].selected) 
6180 24 Mar 21 nicklas 113       {
6180 24 Mar 21 nicklas 114         numSelected++;
6215 16 Apr 21 nicklas 115         var ms = frm.demuxedSequences[msNo].demuxedSequences;
6180 24 Mar 21 nicklas 116         if (ms.DO_NOT_USE) numDoNotUse++;
6180 24 Mar 21 nicklas 117         if (ms.pipeline && ms.pipeline != 'RNAseq')
6180 24 Mar 21 nicklas 118         {
6214 15 Apr 21 nicklas 119           invalidSelection = Strings.encodeTags(ms.name+' ('+ms.pipeline)+') is not intended for the RNAseq pipeline.';
6180 24 Mar 21 nicklas 120         }
6214 15 Apr 21 nicklas 121         else if (ms.rawFastq.length == 0)
6213 15 Apr 21 nicklas 122         {
6214 15 Apr 21 nicklas 123           invalidSelection = Strings.encodeTags(ms.name+' is missing RawFASTQ information');
6213 15 Apr 21 nicklas 124         }
6215 16 Apr 21 nicklas 125         else if (!ms.DataFilesFolder)
6214 15 Apr 21 nicklas 126         {
6215 16 Apr 21 nicklas 127           invalidSelection = Strings.encodeTags(ms.name+' is missing DataFilesFolder information');
6214 15 Apr 21 nicklas 128         }
6180 24 Mar 21 nicklas 129       }
6180 24 Mar 21 nicklas 130     }
6180 24 Mar 21 nicklas 131     
6180 24 Mar 21 nicklas 132     if (numSelected == 0)
6180 24 Mar 21 nicklas 133     {
6215 16 Apr 21 nicklas 134       Wizard.setInputStatus('demuxedSequences', 'invalid', 'Select at least one item');
6180 24 Mar 21 nicklas 135       return;
6180 24 Mar 21 nicklas 136     }
6214 15 Apr 21 nicklas 137     if (invalidSelection) 
6180 24 Mar 21 nicklas 138     {
6215 16 Apr 21 nicklas 139       Wizard.setInputStatus('demuxedSequences', 'invalid', invalidSelection);
6180 24 Mar 21 nicklas 140       return;
6180 24 Mar 21 nicklas 141     }
6180 24 Mar 21 nicklas 142     selectionIsValid = true;
6180 24 Mar 21 nicklas 143     
6180 24 Mar 21 nicklas 144     if (numDoNotUse > 0)
6180 24 Mar 21 nicklas 145     {
6215 16 Apr 21 nicklas 146       Wizard.setInputStatus('demuxedSequences', 'warning', numDoNotUse + ' selected items marked as DoNotUse');
6180 24 Mar 21 nicklas 147       Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse');
6180 24 Mar 21 nicklas 148     }
6180 24 Mar 21 nicklas 149     else
6180 24 Mar 21 nicklas 150     {
6215 16 Apr 21 nicklas 151       Wizard.setInputStatus('demuxedSequences', 'valid');
6180 24 Mar 21 nicklas 152     }
6180 24 Mar 21 nicklas 153   }
6180 24 Mar 21 nicklas 154   
6180 24 Mar 21 nicklas 155   // --- Step 2 -----------------------------------
6180 24 Mar 21 nicklas 156   fastq.initializeStep2 = function()
6180 24 Mar 21 nicklas 157   {
6180 24 Mar 21 nicklas 158     Wizard.setCurrentStep(2);
6180 24 Mar 21 nicklas 159     
6180 24 Mar 21 nicklas 160     // Check debug by default if debug is set or not on a secure server (=production server)
6180 24 Mar 21 nicklas 161     var frm = document.forms['reggie'];
6180 24 Mar 21 nicklas 162     frm.debug.checked = debug || location.protocol != 'https:';
6180 24 Mar 21 nicklas 163
6213 15 Apr 21 nicklas 164     Reggie.loadProtocols('MERGE_PROTOCOL', 'mergeProtocol', 'PIPELINE,MERGE_TYPE', 'RNAseq,Import');
6213 15 Apr 21 nicklas 165     Reggie.loadSoftware('MERGE_SOFTWARE', 'mergeSoftware', 'PIPELINE,MERGE_TYPE,PARAMETER_SET', 'RNAseq,Import');
6180 24 Mar 21 nicklas 166     
6735 09 May 22 nicklas 167     // Load clusters
7372 06 Oct 23 nicklas 168     var url = '../OpenGrid.servlet?ID='+App.getSessionId() + '&cmd=GetHostInfo&config=demux';
6180 24 Mar 21 nicklas 169     Doc.addClass('clusters', 'list-loading');
6180 24 Mar 21 nicklas 170     frm.clusters[0] = new Option('loading...');
6180 24 Mar 21 nicklas 171     Wizard.asyncJsonRequest(url, fastq.clustersLoaded);
6180 24 Mar 21 nicklas 172
6180 24 Mar 21 nicklas 173     Doc.show('goregister');
6180 24 Mar 21 nicklas 174     Doc.show('gocancel');
6180 24 Mar 21 nicklas 175   }
6180 24 Mar 21 nicklas 176   
6180 24 Mar 21 nicklas 177   fastq.validateStep2 = function(event)
6180 24 Mar 21 nicklas 178   {
6180 24 Mar 21 nicklas 179     if (!clusterIsValid) event.preventDefault();
6180 24 Mar 21 nicklas 180   }
6180 24 Mar 21 nicklas 181   
6180 24 Mar 21 nicklas 182   fastq.clustersLoaded = function(response)
6180 24 Mar 21 nicklas 183   {
6180 24 Mar 21 nicklas 184     Doc.removeClass('clusters', 'list-loading');
6180 24 Mar 21 nicklas 185     var frm = document.forms['reggie'];
6180 24 Mar 21 nicklas 186     var clusters = response.hosts;
6180 24 Mar 21 nicklas 187     frm.clusters.length = 0;
6180 24 Mar 21 nicklas 188     for (var i = 0; i < clusters.length; i++)
6180 24 Mar 21 nicklas 189     {
6180 24 Mar 21 nicklas 190       var cl = clusters[i];
6180 24 Mar 21 nicklas 191       var option = new Option(cl.connection.name, cl.id);
6180 24 Mar 21 nicklas 192       option.cluster = cl;
6180 24 Mar 21 nicklas 193       frm.clusters[frm.clusters.length] = option;
6180 24 Mar 21 nicklas 194       Wizard.setInputStatus('clusters', 'valid');
6180 24 Mar 21 nicklas 195       clusterIsValid = true;
6180 24 Mar 21 nicklas 196     }
6180 24 Mar 21 nicklas 197     if (frm.clusters.length == 0)
6180 24 Mar 21 nicklas 198     {
6735 09 May 22 nicklas 199       Wizard.setInputStatus('clusters', 'invalid', 'No available clusters');
6180 24 Mar 21 nicklas 200       clusterIsValid = false;
6180 24 Mar 21 nicklas 201     }
6180 24 Mar 21 nicklas 202     else
6180 24 Mar 21 nicklas 203     {
6180 24 Mar 21 nicklas 204       fastq.clusterOnChange();
6180 24 Mar 21 nicklas 205     }
6180 24 Mar 21 nicklas 206   }
6180 24 Mar 21 nicklas 207   
6180 24 Mar 21 nicklas 208   fastq.softwareOnChange = function(event)
6180 24 Mar 21 nicklas 209   {
6180 24 Mar 21 nicklas 210     var target = event.currentTarget;
6180 24 Mar 21 nicklas 211     var item = target[target.selectedIndex].item;
6180 24 Mar 21 nicklas 212     if (!item) item = {};
6180 24 Mar 21 nicklas 213     
6180 24 Mar 21 nicklas 214     Doc.element(target.id+'.parameterSet').innerHTML = Strings.encodeTags(item.ParameterSet || 'default');
6180 24 Mar 21 nicklas 215     Doc.element(target.id+'.description').innerHTML = Strings.encodeTags(item.description);
6180 24 Mar 21 nicklas 216     Wizard.setInputStatus(target.id, 'valid');
6180 24 Mar 21 nicklas 217
6180 24 Mar 21 nicklas 218     if (item.ParameterSet)
6180 24 Mar 21 nicklas 219     {
6180 24 Mar 21 nicklas 220       var url = '../Install.servlet?ID='+App.getSessionId();
6180 24 Mar 21 nicklas 221       url += '&cmd=GetParameterSetInfo';
6180 24 Mar 21 nicklas 222       url += '&parameterSet='+encodeURIComponent(item.ParameterSet);
6180 24 Mar 21 nicklas 223       url += '&targetId='+target.id;
6180 24 Mar 21 nicklas 224       Wizard.asyncJsonRequest(url, fastq.parameterSetInfoLoaded);
6180 24 Mar 21 nicklas 225     }
7372 06 Oct 23 nicklas 226     fastq.updateSubmitOptions();
6180 24 Mar 21 nicklas 227   }
6180 24 Mar 21 nicklas 228   
6180 24 Mar 21 nicklas 229   fastq.parameterSetInfoLoaded = function(response)
6180 24 Mar 21 nicklas 230   {
6180 24 Mar 21 nicklas 231     if (!response.parameters || response.parameters.length == 0)
6180 24 Mar 21 nicklas 232     {
6180 24 Mar 21 nicklas 233       Wizard.setInputStatus(response.targetId, 'warning', 'Can\'t find \'' + Strings.encodeTags(response.parameterSet) + '\' parameter set in reggie-config.xml');
6180 24 Mar 21 nicklas 234     }
6180 24 Mar 21 nicklas 235   }
6180 24 Mar 21 nicklas 236   
6180 24 Mar 21 nicklas 237   fastq.clusterOnChange = function()
6180 24 Mar 21 nicklas 238   {
6180 24 Mar 21 nicklas 239     var frm = document.forms['reggie'];
6180 24 Mar 21 nicklas 240     var cluster = frm.clusters[frm.clusters.selectedIndex].cluster;
6180 24 Mar 21 nicklas 241     if (cluster.priorities && cluster.priorities.length > 0)
6180 24 Mar 21 nicklas 242     {
6180 24 Mar 21 nicklas 243       frm.priority.length = 0;
6180 24 Mar 21 nicklas 244       for (var pNo = 0; pNo < cluster.priorities.length; pNo++)
6180 24 Mar 21 nicklas 245       {
6180 24 Mar 21 nicklas 246         var p = cluster.priorities[pNo];
6180 24 Mar 21 nicklas 247         frm.priority[frm.priority.length] = new Option(p.name + ' ('+p.value+')', p.value, p['default'], p['default']);
6180 24 Mar 21 nicklas 248       }
6180 24 Mar 21 nicklas 249       Doc.show('job-priority');
6180 24 Mar 21 nicklas 250     }
6180 24 Mar 21 nicklas 251     else
6180 24 Mar 21 nicklas 252     {
6180 24 Mar 21 nicklas 253       Doc.hide('job-priority');
6180 24 Mar 21 nicklas 254     }
6980 17 Jan 23 nicklas 255     if (cluster.partitions && cluster.partitions.length > 0)
6980 17 Jan 23 nicklas 256     {
6980 17 Jan 23 nicklas 257       frm.partition.length = 0;
6980 17 Jan 23 nicklas 258       for (var pNo = 0; pNo < cluster.partitions.length; pNo++)
6980 17 Jan 23 nicklas 259       {
6980 17 Jan 23 nicklas 260         var p = cluster.partitions[pNo];
6980 17 Jan 23 nicklas 261         var title = p.name;
6980 17 Jan 23 nicklas 262         if (p.description) title += ' ('+p.description+')';
6980 17 Jan 23 nicklas 263         frm.partition[frm.partition.length] = new Option(title, p.value, p['default'], p['default']);
6980 17 Jan 23 nicklas 264       }
6980 17 Jan 23 nicklas 265       Doc.show('job-partition');
6980 17 Jan 23 nicklas 266     }
6980 17 Jan 23 nicklas 267     else
6980 17 Jan 23 nicklas 268     {
6980 17 Jan 23 nicklas 269       Doc.hide('job-partition');
6980 17 Jan 23 nicklas 270     }
7372 06 Oct 23 nicklas 271     fastq.updateSubmitOptions();
6180 24 Mar 21 nicklas 272   }
6180 24 Mar 21 nicklas 273   
7372 06 Oct 23 nicklas 274   fastq.debugOnChange = function()
7372 06 Oct 23 nicklas 275   {
7372 06 Oct 23 nicklas 276     fastq.updateSubmitOptions();
7372 06 Oct 23 nicklas 277   }
7372 06 Oct 23 nicklas 278   
7372 06 Oct 23 nicklas 279   fastq.updateSubmitOptions = function()
7372 06 Oct 23 nicklas 280   {
7372 06 Oct 23 nicklas 281     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 282     var config = frm.clusters[frm.clusters.selectedIndex]?.cluster?.config?.demux;
7372 06 Oct 23 nicklas 283     if (config)
7372 06 Oct 23 nicklas 284     {
7372 06 Oct 23 nicklas 285       var parameterSet = frm.mergeSoftware[frm.mergeSoftware.selectedIndex]?.item?.ParameterSet;
7372 06 Oct 23 nicklas 286       Doc.element('submitOptions').innerHTML = Reggie.getSubmitOptions(config, frm.debug.checked, parameterSet, 'submit-import');
7372 06 Oct 23 nicklas 287       frm.override.disabled = false;
7372 06 Oct 23 nicklas 288     }
7372 06 Oct 23 nicklas 289   }
7372 06 Oct 23 nicklas 290   
7372 06 Oct 23 nicklas 291   fastq.overrideOnChange = function()
7372 06 Oct 23 nicklas 292   {
7372 06 Oct 23 nicklas 293     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 294     Doc.showHide('submitOptions', !frm.override.checked);
7372 06 Oct 23 nicklas 295     Doc.showHide('submitOptionsOverride', frm.override.checked);
7372 06 Oct 23 nicklas 296     if (frm.submitOptionsOverride.value=='') 
7372 06 Oct 23 nicklas 297     {
7372 06 Oct 23 nicklas 298       frm.submitOptionsOverride.value = Doc.element('submitOptions').innerHTML;
7372 06 Oct 23 nicklas 299     }
7372 06 Oct 23 nicklas 300   }
6180 24 Mar 21 nicklas 301
6180 24 Mar 21 nicklas 302   fastq.submit = function()
6180 24 Mar 21 nicklas 303   {
6180 24 Mar 21 nicklas 304     var frm = document.forms['reggie'];
6180 24 Mar 21 nicklas 305       
6180 24 Mar 21 nicklas 306     var submitInfo = {};
6180 24 Mar 21 nicklas 307     submitInfo.mergeSoftware = parseInt(frm.mergeSoftware.value);
6180 24 Mar 21 nicklas 308     submitInfo.mergeProtocol = parseInt(frm.mergeProtocol.value);
6180 24 Mar 21 nicklas 309     submitInfo.cluster = frm.clusters.value;
6180 24 Mar 21 nicklas 310     if (frm.priority.selectedIndex >= 0)
6180 24 Mar 21 nicklas 311     {
6180 24 Mar 21 nicklas 312       submitInfo.priority = parseInt(frm.priority.value);
6180 24 Mar 21 nicklas 313     }
6980 17 Jan 23 nicklas 314     if (frm.partition.selectedIndex >= 0)
6980 17 Jan 23 nicklas 315     {
6980 17 Jan 23 nicklas 316       submitInfo.partition = frm.partition.value;
6980 17 Jan 23 nicklas 317     }
7372 06 Oct 23 nicklas 318     if (frm.override.checked)
7372 06 Oct 23 nicklas 319     {
7372 06 Oct 23 nicklas 320       submitInfo.submitOptionsOverride = frm.submitOptionsOverride.value;
7372 06 Oct 23 nicklas 321     }
6180 24 Mar 21 nicklas 322     submitInfo.debug = frm.debug.checked;
6180 24 Mar 21 nicklas 323     submitInfo.autoConfirm = frm.autoConfirm.checked;
6180 24 Mar 21 nicklas 324     
6215 16 Apr 21 nicklas 325     var demuxedSequences = [];
6215 16 Apr 21 nicklas 326     submitInfo.demuxedSequences = demuxedSequences;
6180 24 Mar 21 nicklas 327       
6215 16 Apr 21 nicklas 328     for (var msNo = 0; msNo < frm.demuxedSequences.length; msNo++)
6180 24 Mar 21 nicklas 329     {
6215 16 Apr 21 nicklas 330       if (frm.demuxedSequences[msNo].selected) 
6180 24 Mar 21 nicklas 331       {
6180 24 Mar 21 nicklas 332         var ms = {};
6215 16 Apr 21 nicklas 333         ms.id = frm.demuxedSequences[msNo].demuxedSequences.id;
6215 16 Apr 21 nicklas 334         demuxedSequences[demuxedSequences.length] = ms;
6180 24 Mar 21 nicklas 335       }
6180 24 Mar 21 nicklas 336     }
6180 24 Mar 21 nicklas 337
6180 24 Mar 21 nicklas 338     var url = '../Fastq.servlet?ID='+App.getSessionId();
6180 24 Mar 21 nicklas 339     url += '&cmd=ImportFastq';
6180 24 Mar 21 nicklas 340
6180 24 Mar 21 nicklas 341     Wizard.showLoadingAnimation('Performing registration...');
6180 24 Mar 21 nicklas 342     Wizard.asyncJsonRequest(url, fastq.submissionResults, 'POST', JSON.stringify(submitInfo));
6180 24 Mar 21 nicklas 343   }
6180 24 Mar 21 nicklas 344   
6180 24 Mar 21 nicklas 345   fastq.submissionResults = function(response)
6180 24 Mar 21 nicklas 346   {
6180 24 Mar 21 nicklas 347     Wizard.showFinalMessage(response.messages);
6180 24 Mar 21 nicklas 348     Doc.show('gorestart');
6180 24 Mar 21 nicklas 349   }
6180 24 Mar 21 nicklas 350
6180 24 Mar 21 nicklas 351   return fastq;
6180 24 Mar 21 nicklas 352 }();
6180 24 Mar 21 nicklas 353
6180 24 Mar 21 nicklas 354 Doc.onLoad(Fastq.initPage);
6180 24 Mar 21 nicklas 355