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

Code
Comments
Other
Rev Date Author Line
5924 29 Apr 20 nicklas 1 var Ssp = function()
5924 29 Apr 20 nicklas 2 {
5924 29 Apr 20 nicklas 3   var ssp = {};
5924 29 Apr 20 nicklas 4   var debug = 0;
5924 29 Apr 20 nicklas 5   var manuallySelected = [];
5924 29 Apr 20 nicklas 6   var selectionIsValid = false;
5924 29 Apr 20 nicklas 7   var rawDataType;
5924 29 Apr 20 nicklas 8   var pipeline;
5924 29 Apr 20 nicklas 9   var annotationTypePipeline;
5924 29 Apr 20 nicklas 10   var models;
5924 29 Apr 20 nicklas 11   var numModelsSelected = 0;
5924 29 Apr 20 nicklas 12   
5924 29 Apr 20 nicklas 13   // Page initialization
5924 29 Apr 20 nicklas 14   ssp.initPage = function()
5924 29 Apr 20 nicklas 15   {
5924 29 Apr 20 nicklas 16     // Step 1
5924 29 Apr 20 nicklas 17     Buttons.addClickHandler('btnSelectRawBioAssays', ssp.selectRawBioAssays);
5924 29 Apr 20 nicklas 18     Events.addEventHandler('rawBioAssays', 'base-selected', ssp.setRawBioAssayCallback);
5924 29 Apr 20 nicklas 19     Events.addEventHandler('rawBioAssays', 'change', ssp.rawBioAssaysOnChange);
5924 29 Apr 20 nicklas 20     Events.addEventHandler('step-1', 'wizard-validate', ssp.validateStep1);
5962 03 Jun 20 nicklas 21     Events.addEventHandler('which_all', 'change', ssp.whichOnChange);
5962 03 Jun 20 nicklas 22     Events.addEventHandler('which_selected', 'change', ssp.whichOnChange);
5962 03 Jun 20 nicklas 23     
5924 29 Apr 20 nicklas 24     // Step 2
5924 29 Apr 20 nicklas 25     Events.addEventHandler('step-2', 'wizard-initialize', ssp.initializeStep2);
5944 20 May 20 nicklas 26     Events.addEventHandler('presets', 'change', ssp.presetOnChange);
5924 29 Apr 20 nicklas 27     Events.addEventHandler('step-2', 'wizard-validate', ssp.validateStep2);
5924 29 Apr 20 nicklas 28     
5924 29 Apr 20 nicklas 29     // Navigation
5924 29 Apr 20 nicklas 30     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
5924 29 Apr 20 nicklas 31     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
5924 29 Apr 20 nicklas 32     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
5924 29 Apr 20 nicklas 33     Buttons.addClickHandler('goregister', Wizard.goRegister);
5924 29 Apr 20 nicklas 34       
5924 29 Apr 20 nicklas 35     // Final registration
5924 29 Apr 20 nicklas 36     Events.addEventHandler('wizard', 'wizard-submit', ssp.submit);
5924 29 Apr 20 nicklas 37
5924 29 Apr 20 nicklas 38     Wizard.showLoadingAnimation('Loading bioassays...');
5924 29 Apr 20 nicklas 39     var url = '../Ssp.servlet?ID='+App.getSessionId();
5924 29 Apr 20 nicklas 40     url += '&cmd=GetRawBioAssaysForSsp';
5924 29 Apr 20 nicklas 41     Wizard.asyncJsonRequest(url, ssp.initializeStep1);
5924 29 Apr 20 nicklas 42   }
5924 29 Apr 20 nicklas 43   
5924 29 Apr 20 nicklas 44   // --- Step 1 -----------------------------------
5924 29 Apr 20 nicklas 45   ssp.initializeStep1 = function(response)
5924 29 Apr 20 nicklas 46   {
5924 29 Apr 20 nicklas 47     var frm = document.forms['reggie'];
5924 29 Apr 20 nicklas 48     
5924 29 Apr 20 nicklas 49     rawDataType = response.rawDataType;
5924 29 Apr 20 nicklas 50     pipeline = response.pipeline;
5924 29 Apr 20 nicklas 51     
5924 29 Apr 20 nicklas 52     var rawBioAssays = response.rawBioAssays;
5924 29 Apr 20 nicklas 53     if (rawBioAssays.length > 0)
5924 29 Apr 20 nicklas 54     {
5924 29 Apr 20 nicklas 55       var firstPlate = null;
5924 29 Apr 20 nicklas 56       for (var rawNo=0; rawNo < rawBioAssays.length; rawNo++)
5924 29 Apr 20 nicklas 57       {
5924 29 Apr 20 nicklas 58         var raw = rawBioAssays[rawNo];
5924 29 Apr 20 nicklas 59         
5924 29 Apr 20 nicklas 60         var libPlate = raw.lib.bioWell ? raw.lib.bioWell.bioPlate : null;
5924 29 Apr 20 nicklas 61         if (firstPlate == null && libPlate != null) firstPlate = libPlate.name;
5924 29 Apr 20 nicklas 62         var option = ssp.createListOption(rawNo+1, raw, raw.DO_NOT_USE == null && libPlate != null && libPlate.name==firstPlate)
5924 29 Apr 20 nicklas 63         frm.rawBioAssays.options[frm.rawBioAssays.length] = option;
5924 29 Apr 20 nicklas 64       }
5924 29 Apr 20 nicklas 65       Events.sendChangeEvent('rawBioAssays');
5924 29 Apr 20 nicklas 66     }
5924 29 Apr 20 nicklas 67     else
5924 29 Apr 20 nicklas 68     {
5924 29 Apr 20 nicklas 69       Wizard.setInputStatus('rawBioAssays', 'invalid', 'No raw bioassays available for processing');
5924 29 Apr 20 nicklas 70     }
5924 29 Apr 20 nicklas 71
5924 29 Apr 20 nicklas 72     Doc.show('step-1');
5924 29 Apr 20 nicklas 73     Doc.show('gonext');
5924 29 Apr 20 nicklas 74   }
5924 29 Apr 20 nicklas 75   
5924 29 Apr 20 nicklas 76   ssp.validateStep1 = function(event)
5924 29 Apr 20 nicklas 77   {
5924 29 Apr 20 nicklas 78     if (!selectionIsValid) event.preventDefault();
5924 29 Apr 20 nicklas 79   }
5924 29 Apr 20 nicklas 80
5962 03 Jun 20 nicklas 81   ssp.whichOnChange = function()
5962 03 Jun 20 nicklas 82   {
5962 03 Jun 20 nicklas 83     var frm = document.forms['reggie'];
5962 03 Jun 20 nicklas 84     if (Doc.element('which_all').checked)
5962 03 Jun 20 nicklas 85     {
5962 03 Jun 20 nicklas 86       selectionIsValid = true;
5962 03 Jun 20 nicklas 87       Wizard.setInputStatus('rawBioAssays');
5962 03 Jun 20 nicklas 88       frm.rawBioAssays.disabled = true;
5962 03 Jun 20 nicklas 89       Doc.addClass('btnSelectRawBioAssays', 'disabled');
5962 03 Jun 20 nicklas 90     }
5962 03 Jun 20 nicklas 91     else
5962 03 Jun 20 nicklas 92     {
5962 03 Jun 20 nicklas 93       frm.rawBioAssays.disabled = false;
5962 03 Jun 20 nicklas 94       Doc.removeClass('btnSelectRawBioAssays', 'disabled');
5962 03 Jun 20 nicklas 95       Events.sendChangeEvent('rawBioAssays');
5962 03 Jun 20 nicklas 96     }
5962 03 Jun 20 nicklas 97   }
5962 03 Jun 20 nicklas 98   
5924 29 Apr 20 nicklas 99   ssp.selectRawBioAssays = function()
5924 29 Apr 20 nicklas 100   {
5924 29 Apr 20 nicklas 101     var frm = document.forms['reggie'];
5924 29 Apr 20 nicklas 102     if (frm.rawBioAssays.disabled) return;
5924 29 Apr 20 nicklas 103     // Reset list
5924 29 Apr 20 nicklas 104     manuallySelected = [];
5924 29 Apr 20 nicklas 105     var url = '&resetTemporary=1';
5924 29 Apr 20 nicklas 106     if (rawDataType) url += '&tmpfilter:STRING:rawDataType='+encodeURIComponent(rawDataType);
5924 29 Apr 20 nicklas 107     if (pipeline != null)
5924 29 Apr 20 nicklas 108     {
5924 29 Apr 20 nicklas 109       if (annotationTypePipeline == null)
5924 29 Apr 20 nicklas 110       {
5924 29 Apr 20 nicklas 111         annotationTypePipeline = Reggie.getAnnotationTypeInfo('PIPELINE');
5924 29 Apr 20 nicklas 112       }
5924 29 Apr 20 nicklas 113       url += '&tmpfilter:STRING:'+encodeURIComponent('#')+annotationTypePipeline.id+'='+encodeURIComponent(pipeline);
5924 29 Apr 20 nicklas 114     }
5924 29 Apr 20 nicklas 115     Dialogs.selectItem('RAWBIOASSAY', 'rawBioAssays', 1, url);
5924 29 Apr 20 nicklas 116   }
5924 29 Apr 20 nicklas 117
5924 29 Apr 20 nicklas 118   ssp.setRawBioAssayCallback = function(event)
5924 29 Apr 20 nicklas 119   {
5924 29 Apr 20 nicklas 120     var raw = event.detail;
5924 29 Apr 20 nicklas 121     
5924 29 Apr 20 nicklas 122     var opt = Reggie.getListOption('rawBioAssays', raw.id);
5924 29 Apr 20 nicklas 123     if (opt)
5924 29 Apr 20 nicklas 124     {
5924 29 Apr 20 nicklas 125       opt.selected = true;
5924 29 Apr 20 nicklas 126     }
5924 29 Apr 20 nicklas 127     else
5924 29 Apr 20 nicklas 128     {
5924 29 Apr 20 nicklas 129       manuallySelected[manuallySelected.length] = raw.id;
5924 29 Apr 20 nicklas 130     }
5924 29 Apr 20 nicklas 131     
5924 29 Apr 20 nicklas 132     if (raw.remaining == 0 && manuallySelected.length > 0)
5924 29 Apr 20 nicklas 133     {
5924 29 Apr 20 nicklas 134       var url = '../Ssp.servlet?ID='+App.getSessionId();
5924 29 Apr 20 nicklas 135       url += '&cmd=GetRawBioAssaysForSsp';
5924 29 Apr 20 nicklas 136       url += '&items='+manuallySelected.join(',');
5924 29 Apr 20 nicklas 137       Wizard.showLoadingAnimation('Loading bioassays...');
5924 29 Apr 20 nicklas 138       Wizard.asyncJsonRequest(url, ssp.manuallySelected);
5924 29 Apr 20 nicklas 139     }
5924 29 Apr 20 nicklas 140     else
5924 29 Apr 20 nicklas 141     {
5924 29 Apr 20 nicklas 142       Events.sendChangeEvent('rawBioAssays');
5924 29 Apr 20 nicklas 143     }
5924 29 Apr 20 nicklas 144   }
5924 29 Apr 20 nicklas 145
5924 29 Apr 20 nicklas 146   ssp.manuallySelected = function(response)
5924 29 Apr 20 nicklas 147   {
5924 29 Apr 20 nicklas 148     var rawBioAssays = response.rawBioAssays;
5924 29 Apr 20 nicklas 149     var frm = document.forms['reggie'];  
5924 29 Apr 20 nicklas 150
5924 29 Apr 20 nicklas 151     if (rawBioAssays != null && rawBioAssays.length > 0)
5924 29 Apr 20 nicklas 152     {
5924 29 Apr 20 nicklas 153       var offset = frm.rawBioAssays.length+1;
5924 29 Apr 20 nicklas 154       for (var rawNo=0; rawNo < rawBioAssays.length; rawNo++)
5924 29 Apr 20 nicklas 155       {
5924 29 Apr 20 nicklas 156         var raw = rawBioAssays[rawNo];
5924 29 Apr 20 nicklas 157         var option = ssp.createListOption(rawNo+offset, raw, raw.DO_NOT_USE == null);
5924 29 Apr 20 nicklas 158         frm.rawBioAssays.options[frm.rawBioAssays.length] = option;
5924 29 Apr 20 nicklas 159       }
5924 29 Apr 20 nicklas 160       Events.sendChangeEvent('rawBioAssays');
5924 29 Apr 20 nicklas 161     }
5924 29 Apr 20 nicklas 162   }
5924 29 Apr 20 nicklas 163   
5924 29 Apr 20 nicklas 164   ssp.createListOption = function(index, rawItem, selected)
5924 29 Apr 20 nicklas 165   {
5924 29 Apr 20 nicklas 166     var lib = rawItem.lib;
5924 29 Apr 20 nicklas 167     var isYellow = lib.specimen && lib.specimen.YellowLabel != null;
5924 29 Apr 20 nicklas 168     var libPlate = lib.bioWell ? lib.bioWell.bioPlate : null;
5924 29 Apr 20 nicklas 169     
5924 29 Apr 20 nicklas 170     var tooltip = null;
5924 29 Apr 20 nicklas 171     var name = (index) + ': ';
5924 29 Apr 20 nicklas 172     if (libPlate) name += libPlate.name + ' - ';
5924 29 Apr 20 nicklas 173     name += rawItem.name;
5924 29 Apr 20 nicklas 174     
5924 29 Apr 20 nicklas 175     if (rawItem.DO_NOT_USE)
5924 29 Apr 20 nicklas 176     {
5924 29 Apr 20 nicklas 177       name += ' [DoNotUse]';
5924 29 Apr 20 nicklas 178       tooltip = 'DoNotUse-'+Strings.encodeTags(rawItem.DO_NOT_USE+': '+rawItem.DO_NOT_USE_COMMENT);
5924 29 Apr 20 nicklas 179     }
5924 29 Apr 20 nicklas 180     else if (rawItem.AutoProcess == 'ReProcess')
5924 29 Apr 20 nicklas 181     {
5924 29 Apr 20 nicklas 182       name += ' [R]';
5924 29 Apr 20 nicklas 183     }
5924 29 Apr 20 nicklas 184     
5924 29 Apr 20 nicklas 185     var option = new Option(name, rawItem.id, false, selected);
5924 29 Apr 20 nicklas 186     if (isYellow) option.className = 'yellow';
5924 29 Apr 20 nicklas 187     if (tooltip) option.title = tooltip;
5924 29 Apr 20 nicklas 188     option.rawBioAssay = rawItem;
5924 29 Apr 20 nicklas 189     return option;
5924 29 Apr 20 nicklas 190   }
5924 29 Apr 20 nicklas 191
5924 29 Apr 20 nicklas 192   ssp.rawBioAssaysOnChange = function()
5924 29 Apr 20 nicklas 193   {
5924 29 Apr 20 nicklas 194     var frm = document.forms['reggie'];
5924 29 Apr 20 nicklas 195     
5924 29 Apr 20 nicklas 196     selectionIsValid = false;
5924 29 Apr 20 nicklas 197     var numSelected = 0;
5924 29 Apr 20 nicklas 198     var numDoNotUse = 0;
5924 29 Apr 20 nicklas 199     var invalidPipeline = null;
5924 29 Apr 20 nicklas 200
5924 29 Apr 20 nicklas 201     Wizard.setInputStatus('rawBioAssays');
5924 29 Apr 20 nicklas 202     Wizard.hideGoNextConfirmation();
5924 29 Apr 20 nicklas 203
5924 29 Apr 20 nicklas 204     for (var rawNo = 0; rawNo < frm.rawBioAssays.length; rawNo++)
5924 29 Apr 20 nicklas 205     {
5924 29 Apr 20 nicklas 206       if (frm.rawBioAssays[rawNo].selected) 
5924 29 Apr 20 nicklas 207       {
5924 29 Apr 20 nicklas 208         numSelected++;
5924 29 Apr 20 nicklas 209         
5924 29 Apr 20 nicklas 210         var raw = frm.rawBioAssays[rawNo].rawBioAssay;
5924 29 Apr 20 nicklas 211         if (raw.DO_NOT_USE) numDoNotUse++;
5924 29 Apr 20 nicklas 212         
5924 29 Apr 20 nicklas 213         if (pipeline && raw.pipeline && raw.pipeline != pipeline)
5924 29 Apr 20 nicklas 214         {
5924 29 Apr 20 nicklas 215           invalidPipeline = Strings.encodeTags(raw.name+' ('+raw.pipeline)+') is not intended for the '+pipeline+' pipeline.';
5924 29 Apr 20 nicklas 216         }
5924 29 Apr 20 nicklas 217       }
5924 29 Apr 20 nicklas 218     }
5924 29 Apr 20 nicklas 219     if (numSelected == 0)
5924 29 Apr 20 nicklas 220     {
5924 29 Apr 20 nicklas 221       Wizard.setInputStatus('rawBioAssays', 'invalid', 'Select at least one item');
5924 29 Apr 20 nicklas 222       return;
5924 29 Apr 20 nicklas 223     }
5924 29 Apr 20 nicklas 224     if (invalidPipeline) 
5924 29 Apr 20 nicklas 225     {
5924 29 Apr 20 nicklas 226       Wizard.setInputStatus('rawBioAssays', 'invalid', invalidPipeline);
5924 29 Apr 20 nicklas 227       return;
5924 29 Apr 20 nicklas 228     }
5924 29 Apr 20 nicklas 229     selectionIsValid = true;
5924 29 Apr 20 nicklas 230     
5924 29 Apr 20 nicklas 231     if (numDoNotUse > 0)
5924 29 Apr 20 nicklas 232     {
5924 29 Apr 20 nicklas 233       Wizard.setInputStatus('rawBioAssays', 'warning', numDoNotUse + ' selected items marked as DoNotUse');
5924 29 Apr 20 nicklas 234       Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse');
5924 29 Apr 20 nicklas 235     }
5924 29 Apr 20 nicklas 236     else
5924 29 Apr 20 nicklas 237     {
5924 29 Apr 20 nicklas 238       Wizard.setInputStatus('rawBioAssays', 'valid');
5924 29 Apr 20 nicklas 239     }
5924 29 Apr 20 nicklas 240   }
5924 29 Apr 20 nicklas 241   
5924 29 Apr 20 nicklas 242   ssp.initializeStep2 = function()
5924 29 Apr 20 nicklas 243   {
5924 29 Apr 20 nicklas 244     Wizard.showLoadingAnimation('Loading bioassays...');
5924 29 Apr 20 nicklas 245     var url = '../Ssp.servlet?ID='+App.getSessionId();
5924 29 Apr 20 nicklas 246     url += '&cmd=GetModels';
5924 29 Apr 20 nicklas 247     Wizard.asyncJsonRequest(url, ssp.modelsLoaded);
5924 29 Apr 20 nicklas 248   }
5924 29 Apr 20 nicklas 249
5924 29 Apr 20 nicklas 250   ssp.modelsLoaded = function(response)
5924 29 Apr 20 nicklas 251   {
5944 20 May 20 nicklas 252     var frm = document.forms['reggie'];
5944 20 May 20 nicklas 253
5924 29 Apr 20 nicklas 254     models = response.models;
5924 29 Apr 20 nicklas 255     if (models.length == 0)
5924 29 Apr 20 nicklas 256     {
5924 29 Apr 20 nicklas 257       Wizard.setFatalError('No SSP models have been configured in reggie-config.xml.');
5924 29 Apr 20 nicklas 258     }
5924 29 Apr 20 nicklas 259     
5944 20 May 20 nicklas 260     var presets = response.presets;
5944 20 May 20 nicklas 261     for (var pNo = 0; pNo < presets.length; pNo++)
5944 20 May 20 nicklas 262     {
5944 20 May 20 nicklas 263       var preset = presets[pNo];
5944 20 May 20 nicklas 264       var option = new Option(preset.name);
5944 20 May 20 nicklas 265       option.preset = preset;
5944 20 May 20 nicklas 266       frm.presets[frm.presets.length] = option;
5944 20 May 20 nicklas 267     }
5944 20 May 20 nicklas 268     
5924 29 Apr 20 nicklas 269     var html = '';
5924 29 Apr 20 nicklas 270     for (var mNo = 0; mNo < models.length; mNo++)
5924 29 Apr 20 nicklas 271     {
5924 29 Apr 20 nicklas 272       var model = models[mNo];
5944 20 May 20 nicklas 273       html += '<tr class="align-top" id="modelrow.'+mNo+'">';
5941 18 May 20 nicklas 274       html += '<td class="subprompt"><label for="model.'+mNo+'">'+Strings.encodeTags(model.name)+'</label></td>';
5941 18 May 20 nicklas 275       html += '<td style="width: 2em;"><input type="checkbox" name="model.'+mNo+'" id="model.'+mNo+'"></td>';
5941 18 May 20 nicklas 276       html += '<td class="input"><div class="modeldescription">'+(Strings.encodeTags(model.description) || '&nbsp;')+'</div></td>';
5941 18 May 20 nicklas 277       html += '<td class="status" id="model.'+mNo+'.status"></td>';
5941 18 May 20 nicklas 278       html += '<td class="help"><span id="model.'+mNo+'.message" class="message"></span></td>';
5927 29 Apr 20 nicklas 279       html += '</tr>';
5924 29 Apr 20 nicklas 280     }
5924 29 Apr 20 nicklas 281     Doc.element('models').innerHTML = html;
5941 18 May 20 nicklas 282     Forms.linkCheckboxesWithLabels(Doc.element('models'));
5924 29 Apr 20 nicklas 283     
5941 18 May 20 nicklas 284     for (var mNo = 0; mNo < models.length; mNo++)
5924 29 Apr 20 nicklas 285     {
5941 18 May 20 nicklas 286       var model = models[mNo];
5941 18 May 20 nicklas 287       var checkbox = Doc.element('model.'+mNo);
5941 18 May 20 nicklas 288       if (model.error)
5941 18 May 20 nicklas 289       {
5944 20 May 20 nicklas 290         Wizard.setInputStatus('model.'+mNo, 'warning', Reggie.softLineBreaks(model.error));
5941 18 May 20 nicklas 291         checkbox.disabled = true;
5941 18 May 20 nicklas 292       }
5941 18 May 20 nicklas 293       else
5941 18 May 20 nicklas 294       {
5941 18 May 20 nicklas 295         checkbox.checked = true;
5941 18 May 20 nicklas 296       }
5941 18 May 20 nicklas 297       Events.addEventHandler(checkbox, 'change', ssp.onModelSelected);
5924 29 Apr 20 nicklas 298     }
5941 18 May 20 nicklas 299     ssp.onModelSelected();
5924 29 Apr 20 nicklas 300     
5924 29 Apr 20 nicklas 301     Wizard.setCurrentStep(2);
5924 29 Apr 20 nicklas 302     Doc.show('goregister');
5924 29 Apr 20 nicklas 303     Doc.show('gocancel');
5924 29 Apr 20 nicklas 304     
5924 29 Apr 20 nicklas 305   }
5924 29 Apr 20 nicklas 306   
5944 20 May 20 nicklas 307   ssp.presetOnChange = function()
5944 20 May 20 nicklas 308   {
5944 20 May 20 nicklas 309     var frm = document.forms['reggie'];
5944 20 May 20 nicklas 310     var preset = frm.presets[frm.presets.selectedIndex].preset;
5944 20 May 20 nicklas 311     
5944 20 May 20 nicklas 312     for (var mNo = 0; mNo < models.length; mNo++)
5944 20 May 20 nicklas 313     {
5944 20 May 20 nicklas 314       var model = models[mNo];
5944 20 May 20 nicklas 315       if (!frm['model.'+mNo].disabled)
5944 20 May 20 nicklas 316       {
5944 20 May 20 nicklas 317         frm['model.'+mNo].checked = !preset || preset.models.indexOf(model.name) >= 0;
5944 20 May 20 nicklas 318       }
5944 20 May 20 nicklas 319     }
5944 20 May 20 nicklas 320     ssp.onModelSelected();
5944 20 May 20 nicklas 321   }
5944 20 May 20 nicklas 322   
5924 29 Apr 20 nicklas 323   ssp.onModelSelected = function()
5924 29 Apr 20 nicklas 324   {
5924 29 Apr 20 nicklas 325     var frm = document.forms['reggie'];
5924 29 Apr 20 nicklas 326     numModelsSelected = 0;
5924 29 Apr 20 nicklas 327     for (var mNo = 0; mNo < models.length; mNo++)
5924 29 Apr 20 nicklas 328     {
5924 29 Apr 20 nicklas 329       if (frm['model.'+mNo].checked) numModelsSelected++;
5944 20 May 20 nicklas 330       Doc.addOrRemoveClass('modelrow.'+mNo, 'selected', frm['model.'+mNo].checked);
5924 29 Apr 20 nicklas 331     }
5924 29 Apr 20 nicklas 332     
5924 29 Apr 20 nicklas 333     if (numModelsSelected > 0)
5924 29 Apr 20 nicklas 334     {
5924 29 Apr 20 nicklas 335       Wizard.setInputStatus('models', 'valid');
5927 29 Apr 20 nicklas 336       Doc.removeClass('models', 'invalid');
5924 29 Apr 20 nicklas 337     }
5924 29 Apr 20 nicklas 338     else
5924 29 Apr 20 nicklas 339     {
5924 29 Apr 20 nicklas 340       Wizard.setInputStatus('models', 'invalid', 'Select at least one model!');
5927 29 Apr 20 nicklas 341       Doc.addClass('models', 'invalid');
5924 29 Apr 20 nicklas 342     }
5924 29 Apr 20 nicklas 343   }
5924 29 Apr 20 nicklas 344   
5924 29 Apr 20 nicklas 345   ssp.validateStep2 = function(event)
5924 29 Apr 20 nicklas 346   {
5924 29 Apr 20 nicklas 347     if (numModelsSelected == 0) event.preventDefault();
5924 29 Apr 20 nicklas 348   }
5924 29 Apr 20 nicklas 349   
5924 29 Apr 20 nicklas 350   ssp.submit = function()
5924 29 Apr 20 nicklas 351   {
5924 29 Apr 20 nicklas 352     var frm = document.forms['reggie'];
5924 29 Apr 20 nicklas 353     var submitInfo = {};
5924 29 Apr 20 nicklas 354     
5924 29 Apr 20 nicklas 355     var selectedRba = [];
5924 29 Apr 20 nicklas 356     var selectedModels = [];
5924 29 Apr 20 nicklas 357     submitInfo.rawBioAssays = selectedRba;
5924 29 Apr 20 nicklas 358     submitInfo.models = selectedModels;
6025 26 Oct 20 nicklas 359     submitInfo.autoConfirm = frm.autoConfirm.checked;
5962 03 Jun 20 nicklas 360     
5962 03 Jun 20 nicklas 361     if (Doc.element('which_selected').checked)
5924 29 Apr 20 nicklas 362     {
5962 03 Jun 20 nicklas 363       for (var rawNo = 0; rawNo < frm.rawBioAssays.length; rawNo++)
5924 29 Apr 20 nicklas 364       {
5962 03 Jun 20 nicklas 365         if (frm.rawBioAssays[rawNo].selected) 
5962 03 Jun 20 nicklas 366         {
5962 03 Jun 20 nicklas 367           selectedRba[selectedRba.length] = frm.rawBioAssays[rawNo].rawBioAssay.id;
5962 03 Jun 20 nicklas 368         }
5924 29 Apr 20 nicklas 369       }
5924 29 Apr 20 nicklas 370     }
5924 29 Apr 20 nicklas 371     for (var mNo = 0; mNo < models.length; mNo++)
5924 29 Apr 20 nicklas 372     {
5924 29 Apr 20 nicklas 373       if (frm['model.'+mNo].checked)
5924 29 Apr 20 nicklas 374       {
5924 29 Apr 20 nicklas 375         selectedModels[selectedModels.length] = models[mNo].name;
5924 29 Apr 20 nicklas 376       }
5924 29 Apr 20 nicklas 377     }
5924 29 Apr 20 nicklas 378
5924 29 Apr 20 nicklas 379     var url = '../Ssp.servlet?ID='+App.getSessionId();
5924 29 Apr 20 nicklas 380     url += '&cmd=RunSsp';
5924 29 Apr 20 nicklas 381     Wizard.showLoadingAnimation('Performing registration...');
5924 29 Apr 20 nicklas 382     Wizard.asyncJsonRequest(url, ssp.submissionResults, 'POST', JSON.stringify(submitInfo));
5924 29 Apr 20 nicklas 383   }
5924 29 Apr 20 nicklas 384   
5924 29 Apr 20 nicklas 385   ssp.submissionResults = function(response)
5924 29 Apr 20 nicklas 386   {
5924 29 Apr 20 nicklas 387     Wizard.showFinalMessage(response.messages);
5924 29 Apr 20 nicklas 388     Doc.show('gorestart');
5924 29 Apr 20 nicklas 389   }
5924 29 Apr 20 nicklas 390   
5924 29 Apr 20 nicklas 391   
5924 29 Apr 20 nicklas 392   return ssp;
5924 29 Apr 20 nicklas 393 }();
5924 29 Apr 20 nicklas 394
5924 29 Apr 20 nicklas 395 Doc.onLoad(Ssp.initPage);
5924 29 Apr 20 nicklas 396