extensions/net.sf.basedb.reggie/trunk/resources/outtake/define.js

Code
Comments
Other
Rev Date Author Line
4146 03 Oct 16 nicklas 1 var Outtake = function()
4146 03 Oct 16 nicklas 2 {
4146 03 Oct 16 nicklas 3   var outtake = {};
4146 03 Oct 16 nicklas 4   var debug = 0;
4146 03 Oct 16 nicklas 5   
6326 14 Jun 21 nicklas 6   var subtypeSelected = null;
4146 03 Oct 16 nicklas 7   
4153 05 Oct 16 nicklas 8   var sourceList;
4146 03 Oct 16 nicklas 9   var sourceListIsValid = false;
4146 03 Oct 16 nicklas 10   var nameIsValid = false;
4146 03 Oct 16 nicklas 11   var targetAmountIsValid = false;
4146 03 Oct 16 nicklas 12   var targetVolumeIsValid = false;
6326 14 Jun 21 nicklas 13
6326 14 Jun 21 nicklas 14   var needTargetAmount = true;
6326 14 Jun 21 nicklas 15   var needTargetVolume = true;
4146 03 Oct 16 nicklas 16   
6326 14 Jun 21 nicklas 17   
4146 03 Oct 16 nicklas 18   // Page initialization
4146 03 Oct 16 nicklas 19   outtake.initPage = function()
4146 03 Oct 16 nicklas 20   {
4146 03 Oct 16 nicklas 21     // Step 1
4146 03 Oct 16 nicklas 22     Events.addEventHandler('step-1', 'wizard-validate', outtake.validateStep1);
6326 14 Jun 21 nicklas 23     Events.addEventHandler('outtakeType', 'change', outtake.outtakeTypeOnChange);
4146 03 Oct 16 nicklas 24     Buttons.addClickHandler('sourceList.select', outtake.selectSourceList);
4146 03 Oct 16 nicklas 25     Events.addEventHandler('sourceList', 'base-selected', outtake.sourceListSelected);
4146 03 Oct 16 nicklas 26     Events.addEventHandler('outtakeName', 'blur', outtake.nameOnChange);
4146 03 Oct 16 nicklas 27     Events.addEventHandler('targetAmount', 'keypress', Events.numberOnly);
4146 03 Oct 16 nicklas 28     Events.addEventHandler('targetAmount', 'blur', outtake.targetAmountOnChange);
4146 03 Oct 16 nicklas 29     Events.addEventHandler('targetVolume', 'keypress', Events.numberOnly);
4146 03 Oct 16 nicklas 30     Events.addEventHandler('targetVolume', 'blur', outtake.targetVolumeOnChange);
4146 03 Oct 16 nicklas 31     
4146 03 Oct 16 nicklas 32     // Navigation
4146 03 Oct 16 nicklas 33     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
4146 03 Oct 16 nicklas 34     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
4146 03 Oct 16 nicklas 35     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
4146 03 Oct 16 nicklas 36     Buttons.addClickHandler('goregister', Wizard.goRegister);
4146 03 Oct 16 nicklas 37     
4146 03 Oct 16 nicklas 38     // Final registration
4146 03 Oct 16 nicklas 39     Events.addEventHandler('wizard', 'wizard-submit', outtake.submit);
4146 03 Oct 16 nicklas 40
4146 03 Oct 16 nicklas 41     Doc.show('step-1');
4146 03 Oct 16 nicklas 42     Doc.show('goregister');
4153 05 Oct 16 nicklas 43     Doc.element('outtakeName').focus();
4146 03 Oct 16 nicklas 44   }
4146 03 Oct 16 nicklas 45
6326 14 Jun 21 nicklas 46   outtake.outtakeTypeOnChange = function()
6326 14 Jun 21 nicklas 47   {
6326 14 Jun 21 nicklas 48     var frm = document.forms['reggie'];
6326 14 Jun 21 nicklas 49
6326 14 Jun 21 nicklas 50     subtypeSelected = null;
6326 14 Jun 21 nicklas 51     
6326 14 Jun 21 nicklas 52     var type = frm.outtakeType.value;
7037 13 Feb 23 nicklas 53     if (type == 'RNA' || type == 'DNA' || type == 'BLOOD_DNA')
6326 14 Jun 21 nicklas 54     {
6326 14 Jun 21 nicklas 55       needTargetAmount = true;
6326 14 Jun 21 nicklas 56       needTargetVolume = true;
6326 14 Jun 21 nicklas 57     }
6326 14 Jun 21 nicklas 58     else
6326 14 Jun 21 nicklas 59     {
6326 14 Jun 21 nicklas 60       needTargetAmount = false;
6326 14 Jun 21 nicklas 61       needTargetVolume = true;
6326 14 Jun 21 nicklas 62     }
6326 14 Jun 21 nicklas 63     
6326 14 Jun 21 nicklas 64     Doc.showHide('targetAmountSection', needTargetAmount);
6326 14 Jun 21 nicklas 65     Doc.showHide('targetVolumeSection', needTargetVolume);
6326 14 Jun 21 nicklas 66     Doc.showHide('targetConcSection', needTargetVolume && needTargetAmount);
6326 14 Jun 21 nicklas 67     
6326 14 Jun 21 nicklas 68     if (frm.sourceList.value) outtake.sourceListSelected();
6326 14 Jun 21 nicklas 69   }
6326 14 Jun 21 nicklas 70
4146 03 Oct 16 nicklas 71   outtake.selectSourceList = function()
4146 03 Oct 16 nicklas 72   {
4146 03 Oct 16 nicklas 73     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 74     
6326 14 Jun 21 nicklas 75     if (subtypeSelected == null) subtypeSelected = Reggie.getSubtypeInfo(frm.outtakeType.value);
4146 03 Oct 16 nicklas 76     
4146 03 Oct 16 nicklas 77     var url = '&resetTemporary=1';
4146 03 Oct 16 nicklas 78     if (frm.sourceList.length > 1)
4146 03 Oct 16 nicklas 79     {
4146 03 Oct 16 nicklas 80       var id = Math.abs(parseInt(frm.sourceList[1].value));        
4146 03 Oct 16 nicklas 81       url += '&item_id='+id;
4146 03 Oct 16 nicklas 82     }
4146 03 Oct 16 nicklas 83     url += '&tmpfilter:INT:memberType='+Data.int('page-data', 'extract-type');
6326 14 Jun 21 nicklas 84     url += '&tmpfilter:INT:itemSubtype='+encodeURIComponent(subtypeSelected.id);
4146 03 Oct 16 nicklas 85     Dialogs.selectItem('ITEMLIST', 'sourceList', 0, url);
4146 03 Oct 16 nicklas 86   }
4146 03 Oct 16 nicklas 87   
4146 03 Oct 16 nicklas 88   outtake.sourceListSelected = function(event)
4146 03 Oct 16 nicklas 89   {
4156 07 Oct 16 nicklas 90     Wizard.setNoConfirmOnFirstStep(false);
4146 03 Oct 16 nicklas 91     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 92     
4153 05 Oct 16 nicklas 93     Doc.element('listType').innerHTML = '';
4153 05 Oct 16 nicklas 94     Doc.element('listSize').innerHTML = '';
4153 05 Oct 16 nicklas 95     Doc.element('listRemainingQuantity').innerHTML = '';
6220 20 Apr 21 nicklas 96     Doc.element('listConc').innerHTML = '';
4153 05 Oct 16 nicklas 97
6326 14 Jun 21 nicklas 98     if (event)
6326 14 Jun 21 nicklas 99     {
6326 14 Jun 21 nicklas 100       var list = event.detail;
6326 14 Jun 21 nicklas 101       frm.sourceList[0] = new Option(list.name, list.id);
6326 14 Jun 21 nicklas 102       frm.sourceList.selectedIndex = 0;
6326 14 Jun 21 nicklas 103     }
4146 03 Oct 16 nicklas 104     Wizard.setInputStatus('sourceList', 'checking', 'Checking list...');
4146 03 Oct 16 nicklas 105     
4146 03 Oct 16 nicklas 106     var url = '../Outtake.servlet?ID='+App.getSessionId();
4146 03 Oct 16 nicklas 107     url += '&cmd=CheckSourceList';
6326 14 Jun 21 nicklas 108     url += '&outtakeType='+frm.outtakeType.value;
6326 14 Jun 21 nicklas 109     url += '&listId='+frm.sourceList.value;
4146 03 Oct 16 nicklas 110     Wizard.asyncJsonRequest(url, outtake.sourceListValidated);
4146 03 Oct 16 nicklas 111   }
4146 03 Oct 16 nicklas 112   
4146 03 Oct 16 nicklas 113   
4146 03 Oct 16 nicklas 114   outtake.sourceListValidated = function(response)
4146 03 Oct 16 nicklas 115   {
4153 05 Oct 16 nicklas 116     sourceListIsValid = false;
4153 05 Oct 16 nicklas 117     Wizard.setInputStatus('sourceList');
4153 05 Oct 16 nicklas 118     Wizard.setInputStatus('listRemainingQuantity');
6220 20 Apr 21 nicklas 119     Wizard.setInputStatus('listConc');
4153 05 Oct 16 nicklas 120     Wizard.setInputStatus('targetAmount');
4153 05 Oct 16 nicklas 121     Wizard.setInputStatus('targetVolume');
4994 02 Oct 18 nicklas 122     Wizard.hideGoNextConfirmation();
4153 05 Oct 16 nicklas 123     
4146 03 Oct 16 nicklas 124     var frm = document.forms['reggie'];
4153 05 Oct 16 nicklas 125     sourceList = response.list;
4153 05 Oct 16 nicklas 126     
4153 05 Oct 16 nicklas 127     var listType = sourceList.itemType;
4153 05 Oct 16 nicklas 128     if (sourceList.subtype)
4153 05 Oct 16 nicklas 129     {
4153 05 Oct 16 nicklas 130       listType += ' (' + Strings.encodeTags(sourceList.subtype.name) + ')';
4153 05 Oct 16 nicklas 131     }
4153 05 Oct 16 nicklas 132     Doc.element('listType').innerHTML = listType;
4153 05 Oct 16 nicklas 133     Doc.element('listSize').innerHTML = sourceList.size;
4153 05 Oct 16 nicklas 134     
6326 14 Jun 21 nicklas 135     if (needTargetAmount || needTargetVolume)
4153 05 Oct 16 nicklas 136     {
6326 14 Jun 21 nicklas 137       var remainingQuantity = sourceList.remainingQuantity;
6326 14 Jun 21 nicklas 138       if (remainingQuantity)
4153 05 Oct 16 nicklas 139       {
6326 14 Jun 21 nicklas 140         var remainingQuantityUnit = needTargetAmount ? ' µg' : ' µl';
6326 14 Jun 21 nicklas 141         Doc.element('listRemainingQuantity').innerHTML = 
6326 14 Jun 21 nicklas 142           Reggie.formatNumber(remainingQuantity.min, remainingQuantityUnit+' (min), ', 2) +
6326 14 Jun 21 nicklas 143           Reggie.formatNumber(remainingQuantity.max, remainingQuantityUnit+' (max)', 2);
6326 14 Jun 21 nicklas 144         
6326 14 Jun 21 nicklas 145         if (remainingQuantity.nulls > 0)
6326 14 Jun 21 nicklas 146         {
6326 14 Jun 21 nicklas 147           Wizard.setInputStatus('listRemainingQuantity', 'warning', remainingQuantity.nulls + ' items have unknown remaining quantity');
6326 14 Jun 21 nicklas 148         }
4153 05 Oct 16 nicklas 149       }
4153 05 Oct 16 nicklas 150     }
6326 14 Jun 21 nicklas 151     else
4153 05 Oct 16 nicklas 152     {
6326 14 Jun 21 nicklas 153       Doc.element('listRemainingQuantity').innerHTML = '';
6326 14 Jun 21 nicklas 154     }
6326 14 Jun 21 nicklas 155
6326 14 Jun 21 nicklas 156     if (needTargetAmount && needTargetVolume)
6326 14 Jun 21 nicklas 157     {
6326 14 Jun 21 nicklas 158       var conc = sourceList.cnc;
6326 14 Jun 21 nicklas 159       if (conc)
4153 05 Oct 16 nicklas 160       {
6326 14 Jun 21 nicklas 161         Doc.element('listConc').innerHTML = 
6326 14 Jun 21 nicklas 162           Reggie.formatNumber(conc.min, ' ng/µl (min), ', 2) +
6326 14 Jun 21 nicklas 163           Reggie.formatNumber(conc.max, ' ng/µl (max)', 2);
6326 14 Jun 21 nicklas 164         
6326 14 Jun 21 nicklas 165         if (ndConc.nulls > 0)
6326 14 Jun 21 nicklas 166         {
6326 14 Jun 21 nicklas 167           Wizard.setInputStatus('listConc', 'warning', conc.nulls + ' items have unknown concentration');
6326 14 Jun 21 nicklas 168         }
4153 05 Oct 16 nicklas 169       }
4153 05 Oct 16 nicklas 170     }
6326 14 Jun 21 nicklas 171     else
6326 14 Jun 21 nicklas 172     {
6326 14 Jun 21 nicklas 173       Doc.element('listConc').innerHTML = '';
6326 14 Jun 21 nicklas 174     }
4153 05 Oct 16 nicklas 175
6326 14 Jun 21 nicklas 176
4153 05 Oct 16 nicklas 177     if (sourceList.size == 0)
4153 05 Oct 16 nicklas 178     {
4153 05 Oct 16 nicklas 179       Wizard.setInputStatus('sourceList', 'invalid', 'The list is empty');
4153 05 Oct 16 nicklas 180       return;
4153 05 Oct 16 nicklas 181     }
4153 05 Oct 16 nicklas 182     else if (sourceList.itemType != 'EXTRACT')
4153 05 Oct 16 nicklas 183     {
4153 05 Oct 16 nicklas 184       Wizard.setInputStatus('sourceList', 'invalid', 'The list must contain extract items');
4153 05 Oct 16 nicklas 185       return;
4153 05 Oct 16 nicklas 186     }
4153 05 Oct 16 nicklas 187     
4146 03 Oct 16 nicklas 188     sourceListIsValid = true;
4994 02 Oct 18 nicklas 189     if (sourceList.numDoNotUse > 0)
4153 05 Oct 16 nicklas 190     {
4994 02 Oct 18 nicklas 191       Wizard.setInputStatus('sourceList', 'warning', sourceList.numDoNotUse + ' items have been marked with DoNotUse');
4994 02 Oct 18 nicklas 192       Wizard.showGoNextConfirmation(true, 'Confirm using the list with ' + sourceList.numDoNotUse + ' items marked as DoNotUse');
4994 02 Oct 18 nicklas 193     }
6326 14 Jun 21 nicklas 194     else if (sourceList.numIncorrectSubtype > 1)
4994 02 Oct 18 nicklas 195     {
6326 14 Jun 21 nicklas 196       Wizard.setInputStatus('sourceList', 'warning', 'The list have '+sourceList.numIncorrectSubtype+' items that are not '+frm.outtakeType.value);
4153 05 Oct 16 nicklas 197     }
4153 05 Oct 16 nicklas 198     else
4153 05 Oct 16 nicklas 199     {
4153 05 Oct 16 nicklas 200       Wizard.setInputStatus('sourceList', 'valid');
4153 05 Oct 16 nicklas 201     }
4153 05 Oct 16 nicklas 202     frm.targetAmount.focus();
4153 05 Oct 16 nicklas 203     outtake.checkTargetAmountAndVolume();
4146 03 Oct 16 nicklas 204   }
4146 03 Oct 16 nicklas 205   
4146 03 Oct 16 nicklas 206   outtake.nameOnChange = function()
4146 03 Oct 16 nicklas 207   {
4146 03 Oct 16 nicklas 208     nameIsValid = false;
4146 03 Oct 16 nicklas 209
4146 03 Oct 16 nicklas 210     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 211     var name = frm.outtakeName.value;
4146 03 Oct 16 nicklas 212       
4146 03 Oct 16 nicklas 213     if (name == '')
4146 03 Oct 16 nicklas 214     {
4146 03 Oct 16 nicklas 215       Wizard.setInputStatus('outtakeName', 'invalid', 'Missing');
4146 03 Oct 16 nicklas 216       return;
4146 03 Oct 16 nicklas 217     }
4146 03 Oct 16 nicklas 218       
4146 03 Oct 16 nicklas 219     Wizard.setInputStatus('outtakeName', 'valid');
4146 03 Oct 16 nicklas 220     nameIsValid = true; 
4156 07 Oct 16 nicklas 221     Wizard.setNoConfirmOnFirstStep(false);
4146 03 Oct 16 nicklas 222   }
4146 03 Oct 16 nicklas 223   
4146 03 Oct 16 nicklas 224   outtake.targetAmountOnChange = function()
4146 03 Oct 16 nicklas 225   {
4153 05 Oct 16 nicklas 226     Wizard.setInputStatus('targetAmount');
4146 03 Oct 16 nicklas 227     targetAmountIsValid = false;
4146 03 Oct 16 nicklas 228
4146 03 Oct 16 nicklas 229     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 230     var targetAmount = frm.targetAmount.value;
4146 03 Oct 16 nicklas 231     
4146 03 Oct 16 nicklas 232     if (targetAmount == '')
4146 03 Oct 16 nicklas 233     {
4146 03 Oct 16 nicklas 234       Wizard.setInputStatus('targetAmount', 'invalid', 'Missing');
4146 03 Oct 16 nicklas 235       return;
4146 03 Oct 16 nicklas 236     }
4146 03 Oct 16 nicklas 237     if (parseFloat(targetAmount) <= 0)
4146 03 Oct 16 nicklas 238     {
4146 03 Oct 16 nicklas 239       Wizard.setInputStatus('targetAmount', 'invalid', 'Must be &gt;0');
4146 03 Oct 16 nicklas 240       return;
4146 03 Oct 16 nicklas 241     }
4153 05 Oct 16 nicklas 242     
4156 07 Oct 16 nicklas 243     Wizard.setNoConfirmOnFirstStep(false);
4146 03 Oct 16 nicklas 244     Wizard.setInputStatus('targetAmount', 'valid');
4153 05 Oct 16 nicklas 245     targetAmountIsValid = true;
4153 05 Oct 16 nicklas 246     outtake.checkTargetAmountAndVolume();
4146 03 Oct 16 nicklas 247   }
4146 03 Oct 16 nicklas 248
4146 03 Oct 16 nicklas 249   outtake.targetVolumeOnChange = function()
4146 03 Oct 16 nicklas 250   {
4153 05 Oct 16 nicklas 251     Wizard.setInputStatus('targetVolume');
4146 03 Oct 16 nicklas 252     targetVolumeIsValid = false;
4146 03 Oct 16 nicklas 253
4146 03 Oct 16 nicklas 254     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 255     var targetVolume = frm.targetVolume.value;
4146 03 Oct 16 nicklas 256     
4146 03 Oct 16 nicklas 257     if (targetVolume == '')
4146 03 Oct 16 nicklas 258     {
4146 03 Oct 16 nicklas 259       Wizard.setInputStatus('targetVolume', 'invalid', 'Missing');
4146 03 Oct 16 nicklas 260       return;
4146 03 Oct 16 nicklas 261     }
4146 03 Oct 16 nicklas 262     if (parseFloat(targetVolume) <= 0)
4146 03 Oct 16 nicklas 263     {
4146 03 Oct 16 nicklas 264       Wizard.setInputStatus('targetVolume', 'invalid', 'Must be &gt;0');
4146 03 Oct 16 nicklas 265       return;
4146 03 Oct 16 nicklas 266     }
4156 07 Oct 16 nicklas 267
4156 07 Oct 16 nicklas 268     Wizard.setNoConfirmOnFirstStep(false);
4146 03 Oct 16 nicklas 269     Wizard.setInputStatus('targetVolume', 'valid');
4153 05 Oct 16 nicklas 270     targetVolumeIsValid = true;
4153 05 Oct 16 nicklas 271     
4153 05 Oct 16 nicklas 272     outtake.checkTargetAmountAndVolume();
4146 03 Oct 16 nicklas 273   }
4146 03 Oct 16 nicklas 274   
4153 05 Oct 16 nicklas 275   outtake.checkTargetAmountAndVolume = function()
4153 05 Oct 16 nicklas 276   {
4153 05 Oct 16 nicklas 277     var frm = document.forms['reggie'];
4153 05 Oct 16 nicklas 278     
4153 05 Oct 16 nicklas 279     var targetAmount = parseFloat(frm.targetAmount.value);
4153 05 Oct 16 nicklas 280     var targetVolume = parseFloat(frm.targetVolume.value);
4153 05 Oct 16 nicklas 281     var targetConc = 1000 * targetAmount / targetVolume;
4153 05 Oct 16 nicklas 282     
6326 14 Jun 21 nicklas 283     if (needTargetAmount && needTargetVolume)
4153 05 Oct 16 nicklas 284     {
6326 14 Jun 21 nicklas 285       if (!isNaN(targetConc))
6326 14 Jun 21 nicklas 286       {
6326 14 Jun 21 nicklas 287         Doc.element('targetConcentration').innerHTML = Reggie.formatNumber(targetConc, ' ng/µl', 2);
6326 14 Jun 21 nicklas 288       }
4153 05 Oct 16 nicklas 289     }
4153 05 Oct 16 nicklas 290     
4153 05 Oct 16 nicklas 291     if (sourceList)
4153 05 Oct 16 nicklas 292     {
6326 14 Jun 21 nicklas 293       if (needTargetAmount)
4153 05 Oct 16 nicklas 294       {
6326 14 Jun 21 nicklas 295         if (sourceList.remainingQuantity && sourceList.remainingQuantity.min < targetAmount)
6326 14 Jun 21 nicklas 296         {
6326 14 Jun 21 nicklas 297           Wizard.setInputStatus('targetAmount', 'warning', 'Some items in the list have less remaining quantity: '+ Reggie.formatNumber(sourceList.remainingQuantity.min, ' µg', 2));
6326 14 Jun 21 nicklas 298         }
4153 05 Oct 16 nicklas 299       }
4153 05 Oct 16 nicklas 300       
6326 14 Jun 21 nicklas 301       if (needTargetAmount && needTargetVolume)
4153 05 Oct 16 nicklas 302       {
6326 14 Jun 21 nicklas 303         if (sourceList.conc && sourceList.conc.min < targetConc)
6326 14 Jun 21 nicklas 304         {
6326 14 Jun 21 nicklas 305           Wizard.setInputStatus('targetVolume', 'warning', 'Some items in the list has too low concentration: '+ Reggie.formatNumber(sourceList.ndConc.min, ' ng/µl', 2));
6326 14 Jun 21 nicklas 306         }
4153 05 Oct 16 nicklas 307       }
6326 14 Jun 21 nicklas 308       else if (needTargetVolume)
6326 14 Jun 21 nicklas 309       {
6326 14 Jun 21 nicklas 310         if (sourceList.remainingQuantity && sourceList.remainingQuantity.min < targetVolume)
6326 14 Jun 21 nicklas 311         {
6326 14 Jun 21 nicklas 312           Wizard.setInputStatus('targetVolume', 'warning', 'Some items in the list have less remaining quantity: '+ Reggie.formatNumber(sourceList.remainingQuantity.min, ' µl', 2));
6326 14 Jun 21 nicklas 313         }
6326 14 Jun 21 nicklas 314       }
6326 14 Jun 21 nicklas 315
4153 05 Oct 16 nicklas 316     }
4153 05 Oct 16 nicklas 317   }
4153 05 Oct 16 nicklas 318   
4146 03 Oct 16 nicklas 319   outtake.validateStep1 = function(event)
4146 03 Oct 16 nicklas 320   {
4146 03 Oct 16 nicklas 321     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 322     if (!frm.sourceList.value) 
4146 03 Oct 16 nicklas 323     {
4146 03 Oct 16 nicklas 324       Wizard.setInputStatus('sourceList', 'invalid', 'A source list is required');
4146 03 Oct 16 nicklas 325       event.preventDefault();
4146 03 Oct 16 nicklas 326     }
4146 03 Oct 16 nicklas 327     
4146 03 Oct 16 nicklas 328     var valid = true;
4146 03 Oct 16 nicklas 329     valid &= sourceListIsValid;
4146 03 Oct 16 nicklas 330     valid &= nameIsValid;
6326 14 Jun 21 nicklas 331     if (needTargetAmount) valid &= targetAmountIsValid;
6326 14 Jun 21 nicklas 332     if (needTargetVolume) valid &= targetVolumeIsValid;
4146 03 Oct 16 nicklas 333     
4146 03 Oct 16 nicklas 334     if (!valid) event.preventDefault();
4146 03 Oct 16 nicklas 335   }
4146 03 Oct 16 nicklas 336   
4146 03 Oct 16 nicklas 337   outtake.submit = function()
4146 03 Oct 16 nicklas 338   {
4146 03 Oct 16 nicklas 339     var frm = document.forms['reggie'];
4146 03 Oct 16 nicklas 340     
4146 03 Oct 16 nicklas 341     var submitInfo = {};
4146 03 Oct 16 nicklas 342     
4146 03 Oct 16 nicklas 343     submitInfo.sourceList = parseInt(frm.sourceList.value);
6326 14 Jun 21 nicklas 344     submitInfo.outtakeType = frm.outtakeType.value;
4146 03 Oct 16 nicklas 345     submitInfo.outtakeName = frm.outtakeName.value;
6326 14 Jun 21 nicklas 346     if (needTargetAmount) 
6326 14 Jun 21 nicklas 347     {
6326 14 Jun 21 nicklas 348       submitInfo.targetAmount = parseFloat(frm.targetAmount.value);
6326 14 Jun 21 nicklas 349     }
6326 14 Jun 21 nicklas 350     if (needTargetVolume)
6326 14 Jun 21 nicklas 351     {
6326 14 Jun 21 nicklas 352       submitInfo.targetVolume = parseFloat(frm.targetVolume.value);
6326 14 Jun 21 nicklas 353     }
4146 03 Oct 16 nicklas 354     submitInfo.comments = frm.comments.value;
4146 03 Oct 16 nicklas 355
4146 03 Oct 16 nicklas 356     var url = '../Outtake.servlet?ID='+App.getSessionId();
4146 03 Oct 16 nicklas 357     url += '&cmd=DefineOuttake';
4146 03 Oct 16 nicklas 358     Wizard.showLoadingAnimation('Performing registration...');
4146 03 Oct 16 nicklas 359     Wizard.asyncJsonRequest(url, outtake.submissionResults, 'POST', JSON.stringify(submitInfo));
4146 03 Oct 16 nicklas 360   }
4146 03 Oct 16 nicklas 361   
4146 03 Oct 16 nicklas 362   outtake.submissionResults = function(response)
4146 03 Oct 16 nicklas 363   {
4146 03 Oct 16 nicklas 364     Wizard.showFinalMessage(response.messages);
4146 03 Oct 16 nicklas 365     Doc.show('gorestart');
4146 03 Oct 16 nicklas 366   }
4146 03 Oct 16 nicklas 367   
4146 03 Oct 16 nicklas 368   return outtake;
4146 03 Oct 16 nicklas 369 }();
4146 03 Oct 16 nicklas 370
4146 03 Oct 16 nicklas 371 Doc.onLoad(Outtake.initPage);
4146 03 Oct 16 nicklas 372