extensions/net.sf.basedb.meludi/trunk/resources/libprep/add_consumables_lot_number_file.js

Code
Comments
Other
Rev Date Author Line
3538 13 Oct 15 olle 1 var ExtractionReg = function()
3538 13 Oct 15 olle 2 {
3538 13 Oct 15 olle 3   var exreg = {};
3538 13 Oct 15 olle 4   var debug = 0;
3538 13 Oct 15 olle 5   
3538 13 Oct 15 olle 6   var reagentFileIsValid = false;
3538 13 Oct 15 olle 7   var consumablesFileIsValid = false;
3538 13 Oct 15 olle 8   var jsonConsumables = {};
3538 13 Oct 15 olle 9   
3538 13 Oct 15 olle 10   // Page initialization
3538 13 Oct 15 olle 11   exreg.initPage = function()
3538 13 Oct 15 olle 12   {
3538 13 Oct 15 olle 13     // Step 1
3538 13 Oct 15 olle 14     Events.addEventHandler('step-1', 'wizard-validate', exreg.validateStep1);
3538 13 Oct 15 olle 15     Events.addEventHandler('consumablesFile', 'change', exreg.consumablesFileOnChange);
3609 19 Nov 15 olle 16     Events.addEventHandler('expirationDate', 'blur', Wizard.validateDate);
3609 19 Nov 15 olle 17     Events.addEventHandler('expirationDate', 'blur', exreg.expirationDateOnChange);
3538 13 Oct 15 olle 18
3538 13 Oct 15 olle 19     // Step 2
3538 13 Oct 15 olle 20     Events.addEventHandler('step-2', 'wizard-initialize', exreg.initializeStep2);
3538 13 Oct 15 olle 21 /*
3538 13 Oct 15 olle 22     Events.addEventHandler('step-2', 'wizard-validate', exreg.validateStep2);
3538 13 Oct 15 olle 23 */
3538 13 Oct 15 olle 24
3538 13 Oct 15 olle 25     Buttons.addClickHandler('downloadReagentLotNoFile', exreg.downloadReagentLotNoFile);
3538 13 Oct 15 olle 26     
3538 13 Oct 15 olle 27     // Navigation
3538 13 Oct 15 olle 28     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
3538 13 Oct 15 olle 29     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
3538 13 Oct 15 olle 30     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
3538 13 Oct 15 olle 31     Buttons.addClickHandler('goregister', Wizard.goRegister);
3538 13 Oct 15 olle 32 /*
3538 13 Oct 15 olle 33     Buttons.addClickHandler('gocreate', exreg.createProtocol);
3538 13 Oct 15 olle 34 */
3538 13 Oct 15 olle 35     
3538 13 Oct 15 olle 36     // Final registration
3538 13 Oct 15 olle 37     Events.addEventHandler('wizard', 'wizard-submit', exreg.submit);
3538 13 Oct 15 olle 38
3538 13 Oct 15 olle 39     exreg.initializeStep1();
3538 13 Oct 15 olle 40   }
3538 13 Oct 15 olle 41
3538 13 Oct 15 olle 42   exreg.initializeStep1 = function()
3538 13 Oct 15 olle 43   {
3538 13 Oct 15 olle 44     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 45
3538 13 Oct 15 olle 46     Wizard.setCurrentStep(1);
3538 13 Oct 15 olle 47     Doc.show('step-1');
3538 13 Oct 15 olle 48     Doc.show('gonext');
3538 13 Oct 15 olle 49   }
3538 13 Oct 15 olle 50
3538 13 Oct 15 olle 51   exreg.validateStep1 = function(event)
3538 13 Oct 15 olle 52   {
3538 13 Oct 15 olle 53     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 54 //alert("exreg.validateStep1(): consumablesFileIsValid = " + consumablesFileIsValid);
3538 13 Oct 15 olle 55     if (!consumablesFileIsValid)
3538 13 Oct 15 olle 56     {
3538 13 Oct 15 olle 57       event.preventDefault();
3538 13 Oct 15 olle 58     }
3538 13 Oct 15 olle 59     else
3538 13 Oct 15 olle 60     {
3538 13 Oct 15 olle 61       Wizard.setInputStatus('consumablesFile', 'valid');
3538 13 Oct 15 olle 62     }
3538 13 Oct 15 olle 63   }
3538 13 Oct 15 olle 64   
3538 13 Oct 15 olle 65   exreg.consumablesFileOnChange = function()
3538 13 Oct 15 olle 66   {
3538 13 Oct 15 olle 67     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 68     var file = frm.consumablesFile.files[0];
3538 13 Oct 15 olle 69     
3538 13 Oct 15 olle 70     var reader = new FileReader();
3538 13 Oct 15 olle 71     reader.onload = exreg.consumablesFileLoaded;
3538 13 Oct 15 olle 72     reader.readAsText(file);
3538 13 Oct 15 olle 73   }
3538 13 Oct 15 olle 74
3538 13 Oct 15 olle 75   exreg.consumablesFileLoaded = function(event)
3538 13 Oct 15 olle 76   {
3538 13 Oct 15 olle 77     exreg.parseConsumablesFile(event.target.result);
3538 13 Oct 15 olle 78   }
3538 13 Oct 15 olle 79
3538 13 Oct 15 olle 80   exreg.parseConsumablesFile = function(data)
3538 13 Oct 15 olle 81   {
3538 13 Oct 15 olle 82     var frm = document.forms['meludi'];
3551 20 Oct 15 olle 83     var expirationDate = frm.expirationDate.value;
3551 20 Oct 15 olle 84
3538 13 Oct 15 olle 85     consumablesFileIsValid = false;
3538 13 Oct 15 olle 86
3538 13 Oct 15 olle 87     // Column data are stored in JSONArrays
3538 13 Oct 15 olle 88     var jsonHeaders = [];
3551 20 Oct 15 olle 89     var jsonKitName = [];
3538 13 Oct 15 olle 90     var jsonLibraryPrepBox1 = [];
3538 13 Oct 15 olle 91     var jsonIndexKit = [];
3538 13 Oct 15 olle 92     var jsonContentSetBox3 = [];
3538 13 Oct 15 olle 93     var jsonOligoPoolA_FPA = [];
3538 13 Oct 15 olle 94     var jsonOligoPoolB_FPB = [];
3538 13 Oct 15 olle 95     var jsonOligoHybridizationSequencingReagent3 = [];
3538 13 Oct 15 olle 96     var jsonStringentWash1_SW1 = [];
3538 13 Oct 15 olle 97     var jsonExtensionLigationMix3 = [];
3538 13 Oct 15 olle 98     var jsonPcrMasterMix2_PMM2 = [];
3538 13 Oct 15 olle 99     var jsonUB1 = [];
3538 13 Oct 15 olle 100     var jsonTDP = [];
3538 13 Oct 15 olle 101     var jsonFilterplate = [];
3538 13 Oct 15 olle 102     
3538 13 Oct 15 olle 103     var jsonIndexPrimerA701 = [];
3538 13 Oct 15 olle 104     var jsonIndexPrimerA702 = [];
3538 13 Oct 15 olle 105     var jsonIndexPrimerA703 = [];
3538 13 Oct 15 olle 106     var jsonIndexPrimerA704 = [];
3538 13 Oct 15 olle 107     var jsonIndexPrimerA705 = [];
3538 13 Oct 15 olle 108     var jsonIndexPrimerA706 = [];
3538 13 Oct 15 olle 109     var jsonIndexPrimerA707 = [];
3538 13 Oct 15 olle 110     var jsonIndexPrimerA708 = [];
3538 13 Oct 15 olle 111     var jsonIndexPrimerA709 = [];
3538 13 Oct 15 olle 112     var jsonIndexPrimerA710 = [];
3538 13 Oct 15 olle 113     var jsonIndexPrimerA711 = [];
3538 13 Oct 15 olle 114     var jsonIndexPrimerA712 = [];
3538 13 Oct 15 olle 115     
3538 13 Oct 15 olle 116     var jsonIndexPrimerA501 = [];
3538 13 Oct 15 olle 117     var jsonIndexPrimerA502 = [];
3538 13 Oct 15 olle 118     var jsonIndexPrimerA503 = [];
3538 13 Oct 15 olle 119     var jsonIndexPrimerA504 = [];
3538 13 Oct 15 olle 120     var jsonIndexPrimerA505 = [];
3538 13 Oct 15 olle 121     var jsonIndexPrimerA506 = [];
3538 13 Oct 15 olle 122     var jsonIndexPrimerA507 = [];
3538 13 Oct 15 olle 123     var jsonIndexPrimerA508 = [];
3538 13 Oct 15 olle 124
3551 20 Oct 15 olle 125     var jsonExpirationDate = [];
3551 20 Oct 15 olle 126
3538 13 Oct 15 olle 127     // Find column separator as first character after first occurrence of search string
3538 13 Oct 15 olle 128     var separator = ExtractUtils.findSeparator(data, "Consumables");
3538 13 Oct 15 olle 129     if (separator == null)
3538 13 Oct 15 olle 130     {
3538 13 Oct 15 olle 131       // Comma is default separator
3538 13 Oct 15 olle 132       separator = ',';
3538 13 Oct 15 olle 133     }
3538 13 Oct 15 olle 134 //alert("add_consumables_lot_number_file.js::parseConsumablesFile(): separator = \"" + separator + "\"");
3538 13 Oct 15 olle 135     var columnSplitRegexp = new RegExp(" *" + separator + " *",'');
3538 13 Oct 15 olle 136     var lines = data.split(/[\n\r]+/);
3538 13 Oct 15 olle 137 //alert("add_consumables_lot_number_file.js::parseConsumablesFile(): lines.length = " + lines.length);
3538 13 Oct 15 olle 138     //var columns = lines[0].split(columnSplitRegexp);
3538 13 Oct 15 olle 139
3538 13 Oct 15 olle 140     var numImported = 0;
3538 13 Oct 15 olle 141     for (var i = 1; i < lines.length; i++)
3538 13 Oct 15 olle 142     {
3538 13 Oct 15 olle 143       if (lines[i].match(/^\s*$/)) continue; // Ignore empty lines
3538 13 Oct 15 olle 144       var columns = lines[i].split(columnSplitRegexp);
3538 13 Oct 15 olle 145 //alert("add_consumables_lot_number_file.js::parseConsumablesFile(): i = " + i + " columns[0] = " + columns[0] + " columns[1] = " + columns[1]);
3538 13 Oct 15 olle 146       // First column is either empty, or equal to barcode sequence for index primers
3538 13 Oct 15 olle 147       header = columns[1];
3538 13 Oct 15 olle 148       firstDataIndex = 2;
3538 13 Oct 15 olle 149       // Skip lines without data
3538 13 Oct 15 olle 150       if (header != '')
3538 13 Oct 15 olle 151       {
3538 13 Oct 15 olle 152         jsonHeaders[jsonHeaders.length] = header;
3538 13 Oct 15 olle 153
3538 13 Oct 15 olle 154         for (var j = 0; j < (columns.length - firstDataIndex); j++)
3538 13 Oct 15 olle 155         {
3538 13 Oct 15 olle 156           var data = columns[firstDataIndex + j];
3538 13 Oct 15 olle 157           if (header == 'TruSight Tumor Library Preparation partI')
3538 13 Oct 15 olle 158           {
3551 20 Oct 15 olle 159             jsonKitName[j] = data;
3538 13 Oct 15 olle 160           }
3538 13 Oct 15 olle 161           else if (header == 'TruSight Tumor Library Prep Box 1')
3538 13 Oct 15 olle 162           {
3538 13 Oct 15 olle 163             jsonLibraryPrepBox1[j] = data;
3538 13 Oct 15 olle 164           }
3538 13 Oct 15 olle 165           else if (header == 'TruSight Tumor Index Kit')
3538 13 Oct 15 olle 166           {
3538 13 Oct 15 olle 167             jsonIndexKit[j] = data;
3538 13 Oct 15 olle 168           }
3538 13 Oct 15 olle 169           else if (header == 'TruSight Tumor Content Set Box 3')
3538 13 Oct 15 olle 170           {
3538 13 Oct 15 olle 171             jsonContentSetBox3[j] = data;
3538 13 Oct 15 olle 172           }
3538 13 Oct 15 olle 173           else if (header == 'TruSight Tumor Oligo Pool A (FPA)')
3538 13 Oct 15 olle 174           {
3538 13 Oct 15 olle 175             jsonOligoPoolA_FPA[j] = data;
3538 13 Oct 15 olle 176           }
3538 13 Oct 15 olle 177           else if (header == 'TruSight Tumor Oligo Pool B (FPB)')
3538 13 Oct 15 olle 178           {
3538 13 Oct 15 olle 179             jsonOligoPoolB_FPB[j] = data;
3538 13 Oct 15 olle 180           }
3538 13 Oct 15 olle 181           else if (header == 'Oligo Hybridization for Sequencing Reagent 3 (OHS3)')
3538 13 Oct 15 olle 182           {
3538 13 Oct 15 olle 183             jsonOligoHybridizationSequencingReagent3[j] = data;
3538 13 Oct 15 olle 184           }
3538 13 Oct 15 olle 185           else if (header == 'Stringent Wash 1 (SW1)')
3538 13 Oct 15 olle 186           {
3538 13 Oct 15 olle 187             jsonStringentWash1_SW1[j] = data;
3538 13 Oct 15 olle 188           }
3538 13 Oct 15 olle 189           else if (header == 'Extension Ligation Mix 3 (ELM3)')
3538 13 Oct 15 olle 190           {
3538 13 Oct 15 olle 191             jsonExtensionLigationMix3[j] = data;
3538 13 Oct 15 olle 192           }
3538 13 Oct 15 olle 193           else if (header == 'PCR Master Mix 2 (PMM2)')
3538 13 Oct 15 olle 194           {
3538 13 Oct 15 olle 195             jsonPcrMasterMix2_PMM2[j] = data;
3538 13 Oct 15 olle 196           }
3538 13 Oct 15 olle 197           else if (header == 'UB1')
3538 13 Oct 15 olle 198           {
3538 13 Oct 15 olle 199             jsonUB1[j] = data;
3538 13 Oct 15 olle 200           }
3538 13 Oct 15 olle 201           else if (header == 'TDP')
3538 13 Oct 15 olle 202           {
3538 13 Oct 15 olle 203             jsonTDP[j] = data;
3538 13 Oct 15 olle 204           }
3538 13 Oct 15 olle 205           else if (header == 'Filterplate')
3538 13 Oct 15 olle 206           {
3538 13 Oct 15 olle 207             jsonFilterplate[j] = data;
3538 13 Oct 15 olle 208           }
3538 13 Oct 15 olle 209           else if (header == 'Index Primer A701')
3538 13 Oct 15 olle 210           {
3538 13 Oct 15 olle 211             jsonIndexPrimerA701[j] = data;
3538 13 Oct 15 olle 212           }
3538 13 Oct 15 olle 213           else if (header == 'Index Primer A702')
3538 13 Oct 15 olle 214           {
3538 13 Oct 15 olle 215             jsonIndexPrimerA702[j] = data;
3538 13 Oct 15 olle 216           }
3538 13 Oct 15 olle 217           else if (header == 'Index Primer A703')
3538 13 Oct 15 olle 218           {
3538 13 Oct 15 olle 219             jsonIndexPrimerA703[j] = data;
3538 13 Oct 15 olle 220           }
3538 13 Oct 15 olle 221           else if (header == 'Index Primer A704')
3538 13 Oct 15 olle 222           {
3538 13 Oct 15 olle 223             jsonIndexPrimerA704[j] = data;
3538 13 Oct 15 olle 224           }
3538 13 Oct 15 olle 225           else if (header == 'Index Primer A705')
3538 13 Oct 15 olle 226           {
3538 13 Oct 15 olle 227             jsonIndexPrimerA705[j] = data;
3538 13 Oct 15 olle 228           }
3538 13 Oct 15 olle 229           else if (header == 'Index Primer A706')
3538 13 Oct 15 olle 230           {
3538 13 Oct 15 olle 231             jsonIndexPrimerA706[j] = data;
3538 13 Oct 15 olle 232           }
3538 13 Oct 15 olle 233           else if (header == 'Index Primer A707')
3538 13 Oct 15 olle 234           {
3538 13 Oct 15 olle 235             jsonIndexPrimerA707[j] = data;
3538 13 Oct 15 olle 236           }
3538 13 Oct 15 olle 237           else if (header == 'Index Primer A708')
3538 13 Oct 15 olle 238           {
3538 13 Oct 15 olle 239             jsonIndexPrimerA708[j] = data;
3538 13 Oct 15 olle 240           }
3538 13 Oct 15 olle 241           else if (header == 'Index Primer A709')
3538 13 Oct 15 olle 242           {
3538 13 Oct 15 olle 243             jsonIndexPrimerA709[j] = data;
3538 13 Oct 15 olle 244           }
3538 13 Oct 15 olle 245           else if (header == 'Index Primer A710')
3538 13 Oct 15 olle 246           {
3538 13 Oct 15 olle 247             jsonIndexPrimerA710[j] = data;
3538 13 Oct 15 olle 248           }
3538 13 Oct 15 olle 249           else if (header == 'Index Primer A711')
3538 13 Oct 15 olle 250           {
3538 13 Oct 15 olle 251             jsonIndexPrimerA711[j] = data;
3538 13 Oct 15 olle 252           }
3538 13 Oct 15 olle 253           else if (header == 'Index Primer A712')
3538 13 Oct 15 olle 254           {
3538 13 Oct 15 olle 255             jsonIndexPrimerA712[j] = data;
3538 13 Oct 15 olle 256           }
3538 13 Oct 15 olle 257           else if (header == 'Index Primer A501')
3538 13 Oct 15 olle 258           {
3538 13 Oct 15 olle 259             jsonIndexPrimerA501[j] = data;
3538 13 Oct 15 olle 260           }
3538 13 Oct 15 olle 261           else if (header == 'Index Primer A502')
3538 13 Oct 15 olle 262           {
3538 13 Oct 15 olle 263             jsonIndexPrimerA502[j] = data;
3538 13 Oct 15 olle 264           }
3538 13 Oct 15 olle 265           else if (header == 'Index Primer A503')
3538 13 Oct 15 olle 266           {
3538 13 Oct 15 olle 267             jsonIndexPrimerA503[j] = data;
3538 13 Oct 15 olle 268           }
3538 13 Oct 15 olle 269           else if (header == 'Index Primer A504')
3538 13 Oct 15 olle 270           {
3538 13 Oct 15 olle 271             jsonIndexPrimerA504[j] = data;
3538 13 Oct 15 olle 272           }
3538 13 Oct 15 olle 273           else if (header == 'Index Primer A505')
3538 13 Oct 15 olle 274           {
3538 13 Oct 15 olle 275             jsonIndexPrimerA505[j] = data;
3538 13 Oct 15 olle 276           }
3538 13 Oct 15 olle 277           else if (header == 'Index Primer A506')
3538 13 Oct 15 olle 278           {
3538 13 Oct 15 olle 279             jsonIndexPrimerA506[j] = data;
3538 13 Oct 15 olle 280           }
3538 13 Oct 15 olle 281           else if (header == 'Index Primer A507')
3538 13 Oct 15 olle 282           {
3538 13 Oct 15 olle 283             jsonIndexPrimerA507[j] = data;
3538 13 Oct 15 olle 284           }
3538 13 Oct 15 olle 285           else if (header == 'Index Primer A508')
3538 13 Oct 15 olle 286           {
3538 13 Oct 15 olle 287             jsonIndexPrimerA508[j] = data;
3538 13 Oct 15 olle 288           }
3609 19 Nov 15 olle 289           // Expiration date is set to same date for all kits in same consumables file
3551 20 Oct 15 olle 290           jsonExpirationDate[j] = expirationDate;
3538 13 Oct 15 olle 291         }
3538 13 Oct 15 olle 292       }
3538 13 Oct 15 olle 293     }
3551 20 Oct 15 olle 294     // Add header for expiration date
3551 20 Oct 15 olle 295     jsonHeaders[jsonHeaders.length] = "Expiration date";
3538 13 Oct 15 olle 296
3538 13 Oct 15 olle 297     jsonConsumables['Headers'] = jsonHeaders;
3538 13 Oct 15 olle 298
3551 20 Oct 15 olle 299     jsonConsumables['KitName'] = jsonKitName;
3538 13 Oct 15 olle 300     jsonConsumables['LibraryPrepBox1'] = jsonLibraryPrepBox1;
3538 13 Oct 15 olle 301     jsonConsumables['IndexKit'] = jsonIndexKit;
3538 13 Oct 15 olle 302     jsonConsumables['ContentSetBox3'] = jsonContentSetBox3;
3538 13 Oct 15 olle 303     jsonConsumables['OligoPoolA_FPA'] = jsonOligoPoolA_FPA;
3538 13 Oct 15 olle 304     jsonConsumables['OligoPoolB_FPB'] = jsonOligoPoolB_FPB;
3538 13 Oct 15 olle 305     jsonConsumables['OligoHybridizationSequencingReagent3'] = jsonOligoHybridizationSequencingReagent3;
3538 13 Oct 15 olle 306     jsonConsumables['StringentWash1_SW1'] = jsonStringentWash1_SW1;
3538 13 Oct 15 olle 307     jsonConsumables['ExtensionLigationMix3'] = jsonExtensionLigationMix3;
3538 13 Oct 15 olle 308     jsonConsumables['PcrMasterMix2_PMM2'] = jsonPcrMasterMix2_PMM2;
3538 13 Oct 15 olle 309     jsonConsumables['UB1'] = jsonUB1;
3538 13 Oct 15 olle 310     jsonConsumables['TDP'] = jsonTDP;
3538 13 Oct 15 olle 311     jsonConsumables['Filterplate'] = jsonFilterplate;
3538 13 Oct 15 olle 312
3538 13 Oct 15 olle 313     jsonConsumables['IndexPrimerA701'] = jsonIndexPrimerA701;
3538 13 Oct 15 olle 314     jsonConsumables['IndexPrimerA702'] = jsonIndexPrimerA702;
3538 13 Oct 15 olle 315     jsonConsumables['IndexPrimerA703'] = jsonIndexPrimerA703;
3538 13 Oct 15 olle 316     jsonConsumables['IndexPrimerA704'] = jsonIndexPrimerA704;
3538 13 Oct 15 olle 317     jsonConsumables['IndexPrimerA705'] = jsonIndexPrimerA705;
3538 13 Oct 15 olle 318     jsonConsumables['IndexPrimerA706'] = jsonIndexPrimerA706;
3538 13 Oct 15 olle 319     jsonConsumables['IndexPrimerA707'] = jsonIndexPrimerA707;
3538 13 Oct 15 olle 320     jsonConsumables['IndexPrimerA708'] = jsonIndexPrimerA708;
3538 13 Oct 15 olle 321     jsonConsumables['IndexPrimerA709'] = jsonIndexPrimerA709;
3538 13 Oct 15 olle 322     jsonConsumables['IndexPrimerA710'] = jsonIndexPrimerA710;
3538 13 Oct 15 olle 323     jsonConsumables['IndexPrimerA711'] = jsonIndexPrimerA711;
3538 13 Oct 15 olle 324     jsonConsumables['IndexPrimerA712'] = jsonIndexPrimerA712;
3538 13 Oct 15 olle 325
3538 13 Oct 15 olle 326     jsonConsumables['IndexPrimerA501'] = jsonIndexPrimerA501;
3538 13 Oct 15 olle 327     jsonConsumables['IndexPrimerA502'] = jsonIndexPrimerA502;
3538 13 Oct 15 olle 328     jsonConsumables['IndexPrimerA503'] = jsonIndexPrimerA503;
3538 13 Oct 15 olle 329     jsonConsumables['IndexPrimerA504'] = jsonIndexPrimerA504;
3538 13 Oct 15 olle 330     jsonConsumables['IndexPrimerA505'] = jsonIndexPrimerA505;
3538 13 Oct 15 olle 331     jsonConsumables['IndexPrimerA506'] = jsonIndexPrimerA506;
3538 13 Oct 15 olle 332     jsonConsumables['IndexPrimerA507'] = jsonIndexPrimerA507;
3538 13 Oct 15 olle 333     jsonConsumables['IndexPrimerA508'] = jsonIndexPrimerA508;
3538 13 Oct 15 olle 334
3551 20 Oct 15 olle 335     jsonConsumables['ExpirationDate'] = jsonExpirationDate;
3551 20 Oct 15 olle 336
3538 13 Oct 15 olle 337     Wizard.setInputStatus('consumablesFile', 'valid');
3538 13 Oct 15 olle 338     consumablesFileIsValid = true;
3538 13 Oct 15 olle 339   }
3538 13 Oct 15 olle 340
3609 19 Nov 15 olle 341   exreg.expirationDateOnChange = function()
3538 13 Oct 15 olle 342   {
3538 13 Oct 15 olle 343     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 344     
3609 19 Nov 15 olle 345     var expirationDateIsValid = Wizard.isValid('expirationDate');
3609 19 Nov 15 olle 346     
3609 19 Nov 15 olle 347     if (!expirationDateIsValid) return;
3538 13 Oct 15 olle 348
3609 19 Nov 15 olle 349     var expirationDate = frm.expirationDate.value;
3538 13 Oct 15 olle 350
3609 19 Nov 15 olle 351     // Update expiration date in jsonConsumables JSONObject, if consumables file already has been loaded
3609 19 Nov 15 olle 352     var jsonExpirationDate = jsonConsumables['ExpirationDate'];
3609 19 Nov 15 olle 353     if (jsonExpirationDate)
3538 13 Oct 15 olle 354     {
3609 19 Nov 15 olle 355       for (var j = 0; j < jsonExpirationDate.length; j++)
3538 13 Oct 15 olle 356       {
3609 19 Nov 15 olle 357         // Expiration date is set to same date for all kits in same consumables file
3609 19 Nov 15 olle 358         jsonExpirationDate[j] = expirationDate;
3538 13 Oct 15 olle 359       }
3609 19 Nov 15 olle 360       jsonConsumables['ExpirationDate'] = jsonExpirationDate;
3538 13 Oct 15 olle 361     }
3538 13 Oct 15 olle 362   }
3538 13 Oct 15 olle 363
3538 13 Oct 15 olle 364   exreg.initializeStep2 = function()
3538 13 Oct 15 olle 365   {
3538 13 Oct 15 olle 366     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 367     var consumablesFileName = frm.consumablesFile.value;
3538 13 Oct 15 olle 368     Doc.element('detailsConsumablesFileName').innerHTML = '<b>Consumables file: ' + consumablesFileName + '</b>';
3538 13 Oct 15 olle 369 //alert("exreg.initializeStep2(): Start consumablesFile = " + consumablesFileName);
3538 13 Oct 15 olle 370     var html = '<table id="detailsTable" class="step-form">';
3538 13 Oct 15 olle 371
3538 13 Oct 15 olle 372     // First header row
3538 13 Oct 15 olle 373     html += '<thead>';
3538 13 Oct 15 olle 374     html += '<tr>';
3538 13 Oct 15 olle 375     html += '<th>TruSight Tumor Library Preparation partI</th>';
3538 13 Oct 15 olle 376     html += '<th class="dottedleft">TruSight Tumor Library Prep Box 1</th>';
3538 13 Oct 15 olle 377     html += '<th class="dottedleft">TruSight Tumor Index Kit</th>';
3538 13 Oct 15 olle 378     html += '<th class="dottedleft">TruSight Tumor Content Set Box 3</th>';
3538 13 Oct 15 olle 379     html += '<th class="dottedleft">TruSight Tumor Oligo Pool A (FPA)</th>';
3538 13 Oct 15 olle 380     html += '<th class="dottedleft">TruSight Tumor Oligo Pool B (FPB)</th>';
3538 13 Oct 15 olle 381     html += '<th class="dottedleft">Oligo Hybridization for Sequencing Reagent 3 (OHS3)</th>';
3538 13 Oct 15 olle 382     html += '<th class="dottedleft">Stringent Wash 1 (SW1)</th>';
3538 13 Oct 15 olle 383     html += '<th class="dottedleft">Extension Ligation Mix 3 (ELM3)</th>';
3538 13 Oct 15 olle 384     html += '<th class="dottedleft">PCR Master Mix 2 (PMM2)</th>';
3538 13 Oct 15 olle 385     html += '<th class="dottedleft">UB1</th>';
3538 13 Oct 15 olle 386     html += '<th class="dottedleft">TDP</th>';
3538 13 Oct 15 olle 387     html += '<th class="dottedleft">Filterplate</th>';
3538 13 Oct 15 olle 388     html += '<th colspan="12" class="dottedleft">Index 1 Primers Lot Number</th>';
3538 13 Oct 15 olle 389     html += '<th colspan="8" class="dottedleft">Index 2 Primers Lot Number</th>';
3551 20 Oct 15 olle 390     html += '<th class="dottedleft">Expiration date</th>';
3538 13 Oct 15 olle 391     html += '</tr>';
3538 13 Oct 15 olle 392     // Second header row
3538 13 Oct 15 olle 393     html += '<tr>';
3538 13 Oct 15 olle 394     html += '<th></th>';
3538 13 Oct 15 olle 395     html += '<th class="dottedleft"></th>';
3538 13 Oct 15 olle 396     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 397     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 398     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 399     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 400     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 401     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 402     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 403     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 404     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 405     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 406     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 407     // Index 1 Primers Lot Number
3538 13 Oct 15 olle 408     html += '<td class="dottedleft">ATCACGAC</td>';
3538 13 Oct 15 olle 409     html += '<td class="dottedleft">ACAGTGGT</td>';
3538 13 Oct 15 olle 410     html += '<td class="dottedleft">CAGATCCA</td>';
3538 13 Oct 15 olle 411     html += '<td class="dottedleft">ACAAACGG</td>';
3538 13 Oct 15 olle 412     html += '<td class="dottedleft">ACCCAGCA</td>';
3538 13 Oct 15 olle 413     html += '<td class="dottedleft">AACCCCTC</td>';
3538 13 Oct 15 olle 414     html += '<td class="dottedleft">CCCAACCT</td>';
3538 13 Oct 15 olle 415     html += '<td class="dottedleft">CACCACAC</td>';
3538 13 Oct 15 olle 416     html += '<td class="dottedleft">GAAACCCA</td>';
3538 13 Oct 15 olle 417     html += '<td class="dottedleft">TGTGACCA</td>';
3538 13 Oct 15 olle 418     html += '<td class="dottedleft">AGGGTCAA</td>';
3538 13 Oct 15 olle 419     html += '<td class="dottedleft">AGGAGTGG</td>';
3538 13 Oct 15 olle 420     // Index 2 Primers Lot Number
3538 13 Oct 15 olle 421     html += '<td class="dottedleft">TGAACCTT</td>';
3538 13 Oct 15 olle 422     html += '<td class="dottedleft">TGCTAAGT</td>';
3538 13 Oct 15 olle 423     html += '<td class="dottedleft">TGTTCTCT</td>';
3538 13 Oct 15 olle 424     html += '<td class="dottedleft">TAAGACAC</td>';
3538 13 Oct 15 olle 425     html += '<td class="dottedleft">CTAATCGA</td>';
3538 13 Oct 15 olle 426     html += '<td class="dottedleft">CTAGAACA</td>';
3538 13 Oct 15 olle 427     html += '<td class="dottedleft">TAAGTTCC</td>';
3538 13 Oct 15 olle 428     html += '<td class="dottedleft">TAGACCTA</td>';
3538 13 Oct 15 olle 429     html += '</tr>';
3538 13 Oct 15 olle 430     // Third header row
3538 13 Oct 15 olle 431     html += '<tr>';
3538 13 Oct 15 olle 432     html += '<th></th>';
3538 13 Oct 15 olle 433     html += '<th class="dottedleft"></th>';
3538 13 Oct 15 olle 434     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 435     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 436     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 437     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 438     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 439     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 440     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 441     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 442     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 443     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 444     html += '<td class="dottedleft"></td>';
3538 13 Oct 15 olle 445     // Index 1 Primers Lot Number
3538 13 Oct 15 olle 446     html += '<td class="dottedleft">A701</td>';
3538 13 Oct 15 olle 447     html += '<td class="dottedleft">A702</td>';
3538 13 Oct 15 olle 448     html += '<td class="dottedleft">A703</td>';
3538 13 Oct 15 olle 449     html += '<td class="dottedleft">A704</td>';
3538 13 Oct 15 olle 450     html += '<td class="dottedleft">A705</td>';
3538 13 Oct 15 olle 451     html += '<td class="dottedleft">A706</td>';
3538 13 Oct 15 olle 452     html += '<td class="dottedleft">A707</td>';
3538 13 Oct 15 olle 453     html += '<td class="dottedleft">A708</td>';
3538 13 Oct 15 olle 454     html += '<td class="dottedleft">A709</td>';
3538 13 Oct 15 olle 455     html += '<td class="dottedleft">A710</td>';
3538 13 Oct 15 olle 456     html += '<td class="dottedleft">A711</td>';
3538 13 Oct 15 olle 457     html += '<td class="dottedleft">A712</td>';
3538 13 Oct 15 olle 458     // Index 2 Primers Lot Number
3538 13 Oct 15 olle 459     html += '<td class="dottedleft">A501</td>';
3538 13 Oct 15 olle 460     html += '<td class="dottedleft">A502</td>';
3538 13 Oct 15 olle 461     html += '<td class="dottedleft">A503</td>';
3538 13 Oct 15 olle 462     html += '<td class="dottedleft">A504</td>';
3538 13 Oct 15 olle 463     html += '<td class="dottedleft">A505</td>';
3538 13 Oct 15 olle 464     html += '<td class="dottedleft">A506</td>';
3538 13 Oct 15 olle 465     html += '<td class="dottedleft">A507</td>';
3538 13 Oct 15 olle 466     html += '<td class="dottedleft">A508</td>';
3538 13 Oct 15 olle 467     html += '</tr>';
3538 13 Oct 15 olle 468     html += '</thead>';
3538 13 Oct 15 olle 469     html += '<tbody>';
3538 13 Oct 15 olle 470
3538 13 Oct 15 olle 471     // Get JSONArrays with data for kits
3538 13 Oct 15 olle 472
3538 13 Oct 15 olle 473     var jsonHeaders = jsonConsumables['Headers'];
3538 13 Oct 15 olle 474
3551 20 Oct 15 olle 475     var jsonKitName = jsonConsumables['KitName'];
3538 13 Oct 15 olle 476     var jsonLibraryPrepBox1 = jsonConsumables['LibraryPrepBox1'];
3538 13 Oct 15 olle 477     var jsonIndexKit = jsonConsumables['IndexKit'];
3538 13 Oct 15 olle 478     var jsonContentSetBox3 = jsonConsumables['ContentSetBox3'];
3538 13 Oct 15 olle 479     var jsonOligoPoolA_FPA = jsonConsumables['OligoPoolA_FPA'];
3538 13 Oct 15 olle 480     var jsonOligoPoolB_FPB = jsonConsumables['OligoPoolB_FPB'];
3538 13 Oct 15 olle 481     var jsonOligoHybridizationSequencingReagent3 = jsonConsumables['OligoHybridizationSequencingReagent3'];
3538 13 Oct 15 olle 482     var jsonStringentWash1_SW1 = jsonConsumables['StringentWash1_SW1'];
3538 13 Oct 15 olle 483     var jsonExtensionLigationMix3 = jsonConsumables['ExtensionLigationMix3'];
3538 13 Oct 15 olle 484     var jsonPcrMasterMix2_PMM2 = jsonConsumables['PcrMasterMix2_PMM2'];
3538 13 Oct 15 olle 485     var jsonUB1 = jsonConsumables['UB1'];
3538 13 Oct 15 olle 486     var jsonTDP = jsonConsumables['TDP'];
3538 13 Oct 15 olle 487     var jsonFilterplate = jsonConsumables['Filterplate'];
3538 13 Oct 15 olle 488     
3538 13 Oct 15 olle 489     var jsonIndexPrimerA701 = jsonConsumables['IndexPrimerA701'];
3538 13 Oct 15 olle 490     var jsonIndexPrimerA702 = jsonConsumables['IndexPrimerA702'];
3538 13 Oct 15 olle 491     var jsonIndexPrimerA703 = jsonConsumables['IndexPrimerA703'];
3538 13 Oct 15 olle 492     var jsonIndexPrimerA704 = jsonConsumables['IndexPrimerA704'];
3538 13 Oct 15 olle 493     var jsonIndexPrimerA705 = jsonConsumables['IndexPrimerA705'];
3538 13 Oct 15 olle 494     var jsonIndexPrimerA706 = jsonConsumables['IndexPrimerA706'];
3538 13 Oct 15 olle 495     var jsonIndexPrimerA707 = jsonConsumables['IndexPrimerA707'];
3538 13 Oct 15 olle 496     var jsonIndexPrimerA708 = jsonConsumables['IndexPrimerA708'];
3538 13 Oct 15 olle 497     var jsonIndexPrimerA709 = jsonConsumables['IndexPrimerA709'];
3538 13 Oct 15 olle 498     var jsonIndexPrimerA710 = jsonConsumables['IndexPrimerA710'];
3538 13 Oct 15 olle 499     var jsonIndexPrimerA711 = jsonConsumables['IndexPrimerA711'];
3538 13 Oct 15 olle 500     var jsonIndexPrimerA712 = jsonConsumables['IndexPrimerA712'];
3538 13 Oct 15 olle 501     
3538 13 Oct 15 olle 502     var jsonIndexPrimerA501 = jsonConsumables['IndexPrimerA501'];
3538 13 Oct 15 olle 503     var jsonIndexPrimerA502 = jsonConsumables['IndexPrimerA502'];
3538 13 Oct 15 olle 504     var jsonIndexPrimerA503 = jsonConsumables['IndexPrimerA503'];
3538 13 Oct 15 olle 505     var jsonIndexPrimerA504 = jsonConsumables['IndexPrimerA504'];
3538 13 Oct 15 olle 506     var jsonIndexPrimerA505 = jsonConsumables['IndexPrimerA505'];
3538 13 Oct 15 olle 507     var jsonIndexPrimerA506 = jsonConsumables['IndexPrimerA506'];
3538 13 Oct 15 olle 508     var jsonIndexPrimerA507 = jsonConsumables['IndexPrimerA507'];
3538 13 Oct 15 olle 509     var jsonIndexPrimerA508 = jsonConsumables['IndexPrimerA508'];
3538 13 Oct 15 olle 510
3551 20 Oct 15 olle 511     var jsonExpirationDate = jsonConsumables['ExpirationDate'];
3538 13 Oct 15 olle 512
3551 20 Oct 15 olle 513     var numItems = jsonKitName.length;
3551 20 Oct 15 olle 514
3538 13 Oct 15 olle 515     for (var i = 0; i < numItems; i++)
3538 13 Oct 15 olle 516     {
3538 13 Oct 15 olle 517       html += '<tr class="highlight">';
3551 20 Oct 15 olle 518       html += '<th>' + Strings.encodeTags(jsonKitName[i]) + '</th>';
3538 13 Oct 15 olle 519       html += '<td class="dottedleft">' + Strings.encodeTags(jsonLibraryPrepBox1[i]) + '</td>';
3538 13 Oct 15 olle 520       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexKit[i]) + '</td>';
3538 13 Oct 15 olle 521       html += '<td class="dottedleft">' + Strings.encodeTags(jsonContentSetBox3[i]) + '</td>';
3538 13 Oct 15 olle 522       html += '<td class="dottedleft">' + Strings.encodeTags(jsonOligoPoolA_FPA[i]) + '</td>';
3538 13 Oct 15 olle 523       html += '<td class="dottedleft">' + Strings.encodeTags(jsonOligoPoolB_FPB[i]) + '</td>';
3538 13 Oct 15 olle 524       html += '<td class="dottedleft">' + Strings.encodeTags(jsonOligoHybridizationSequencingReagent3[i]) + '</td>';
3538 13 Oct 15 olle 525       html += '<td class="dottedleft">' + Strings.encodeTags(jsonStringentWash1_SW1[i]) + '</td>';
3538 13 Oct 15 olle 526       html += '<td class="dottedleft">' + Strings.encodeTags(jsonExtensionLigationMix3[i]) + '</td>';
3538 13 Oct 15 olle 527       html += '<td class="dottedleft">' + Strings.encodeTags(jsonPcrMasterMix2_PMM2[i]) + '</td>';
3538 13 Oct 15 olle 528       html += '<td class="dottedleft">' + Strings.encodeTags(jsonUB1[i]) + '</td>';
3538 13 Oct 15 olle 529       html += '<td class="dottedleft">' + Strings.encodeTags(jsonTDP[i]) + '</td>';
3538 13 Oct 15 olle 530       html += '<td class="dottedleft">' + Strings.encodeTags(jsonFilterplate[i]) + '</td>';
3538 13 Oct 15 olle 531
3538 13 Oct 15 olle 532       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA701[i]) + '</td>';
3538 13 Oct 15 olle 533       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA702[i]) + '</td>';
3538 13 Oct 15 olle 534       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA703[i]) + '</td>';
3538 13 Oct 15 olle 535       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA704[i]) + '</td>';
3538 13 Oct 15 olle 536       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA705[i]) + '</td>';
3538 13 Oct 15 olle 537       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA706[i]) + '</td>';
3538 13 Oct 15 olle 538       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA707[i]) + '</td>';
3538 13 Oct 15 olle 539       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA708[i]) + '</td>';
3538 13 Oct 15 olle 540       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA709[i]) + '</td>';
3538 13 Oct 15 olle 541       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA710[i]) + '</td>';
3538 13 Oct 15 olle 542       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA711[i]) + '</td>';
3538 13 Oct 15 olle 543       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA712[i]) + '</td>';
3538 13 Oct 15 olle 544
3538 13 Oct 15 olle 545       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA501[i]) + '</td>';
3538 13 Oct 15 olle 546       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA502[i]) + '</td>';
3538 13 Oct 15 olle 547       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA503[i]) + '</td>';
3538 13 Oct 15 olle 548       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA504[i]) + '</td>';
3538 13 Oct 15 olle 549       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA505[i]) + '</td>';
3538 13 Oct 15 olle 550       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA506[i]) + '</td>';
3538 13 Oct 15 olle 551       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA507[i]) + '</td>';
3538 13 Oct 15 olle 552       html += '<td class="dottedleft">' + Strings.encodeTags(jsonIndexPrimerA508[i]) + '</td>';
3538 13 Oct 15 olle 553
3551 20 Oct 15 olle 554       html += '<td class="dottedleft">' + Strings.encodeTags(jsonExpirationDate[i]) + '</td>';
3551 20 Oct 15 olle 555
3538 13 Oct 15 olle 556       html += '</tr>';
3538 13 Oct 15 olle 557     }
3538 13 Oct 15 olle 558     html += '</tbody>';
3538 13 Oct 15 olle 559     html += '</table>';
3538 13 Oct 15 olle 560     Doc.element('detailsSection').innerHTML = html;
3538 13 Oct 15 olle 561
3538 13 Oct 15 olle 562     Wizard.setCurrentStep(2);
3538 13 Oct 15 olle 563     Doc.show('gocancel');
3538 13 Oct 15 olle 564     Doc.show('gocreate');
3538 13 Oct 15 olle 565     Doc.show('goregister');
3538 13 Oct 15 olle 566     
3538 13 Oct 15 olle 567     Wizard.keepSessionAlive();
3538 13 Oct 15 olle 568 //alert("exreg.initializeStep2(): End consumablesFile = " + consumablesFileName);
3538 13 Oct 15 olle 569   }
3538 13 Oct 15 olle 570
3538 13 Oct 15 olle 571   exreg.downloadReagentLotNoFile = function()
3538 13 Oct 15 olle 572   {
3538 13 Oct 15 olle 573     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 574     var file = frm.consumablesFile.files[0];
3538 13 Oct 15 olle 575     var reagentInfo = {};
3538 13 Oct 15 olle 576     var url = '../LibPrep.servlet?ID='+App.getSessionId();
3538 13 Oct 15 olle 577     url += '&cmd=PrepareDownloadReagentLotNoFile';
3553 20 Oct 15 olle 578     url += '&referenceName='+encodeURIComponent(frm.consumablesFile.value);
3546 16 Oct 15 olle 579     url += '&expirationDate='+encodeURIComponent(frm.expirationDate.value);
3538 13 Oct 15 olle 580
3538 13 Oct 15 olle 581     // Reagents
3538 13 Oct 15 olle 582     reagentInfo = jsonConsumables;
3538 13 Oct 15 olle 583
3538 13 Oct 15 olle 584     // POST
3538 13 Oct 15 olle 585     Wizard.showLoadingAnimation('Performing registration...');
3538 13 Oct 15 olle 586     Wizard.asyncJsonRequest(url, exreg.downloadReagentLotNoFileResults, 'POST', JSON.stringify(reagentInfo));
3538 13 Oct 15 olle 587   }
3538 13 Oct 15 olle 588
3538 13 Oct 15 olle 589   exreg.downloadReagentLotNoFileResults = function(response)
3538 13 Oct 15 olle 590   {
3538 13 Oct 15 olle 591     var tmpFilePath = response;
3538 13 Oct 15 olle 592     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 593     var url = '../LibPrep.servlet?ID='+App.getSessionId();
3538 13 Oct 15 olle 594     url += '&cmd=DownloadReagentLotNoFile';
3553 20 Oct 15 olle 595     url += '&referenceName='+encodeURIComponent(frm.consumablesFile.value);
3546 16 Oct 15 olle 596     url += '&expirationDate='+encodeURIComponent(frm.expirationDate.value);
3538 13 Oct 15 olle 597     url += '&tmpFilePath='+encodeURIComponent(tmpFilePath);
3538 13 Oct 15 olle 598     window.open(url);
3538 13 Oct 15 olle 599   }
3538 13 Oct 15 olle 600
3538 13 Oct 15 olle 601 /*  
3538 13 Oct 15 olle 602   exreg.downloadReagentLotNoFile_Old = function()
3538 13 Oct 15 olle 603   {
3538 13 Oct 15 olle 604     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 605     
3538 13 Oct 15 olle 606     var reagentInfo = {};
3538 13 Oct 15 olle 607     var url = '../Extraction.servlet?ID='+App.getSessionId();
3538 13 Oct 15 olle 608     url += '&cmd=DownloadReagentLotNoFile';
3538 13 Oct 15 olle 609     url += '&startListName='+encodeURIComponent(frm.startListName.value);
3538 13 Oct 15 olle 610     url += '&isolationDate='+encodeURIComponent(frm.isolationDate.value);
3538 13 Oct 15 olle 611     
3538 13 Oct 15 olle 612     // Reagents
3538 13 Oct 15 olle 613     for (var i = 0; i < exreg.REAGENTS.length; i++)
3538 13 Oct 15 olle 614     {
3538 13 Oct 15 olle 615       var rg = exreg.REAGENTS[i];
3538 13 Oct 15 olle 616       reagentInfo[rg] = frm[rg].value;
3538 13 Oct 15 olle 617     }
3538 13 Oct 15 olle 618
3538 13 Oct 15 olle 619     url += '&reagentInfo=' + encodeURIComponent(JSON.stringify(reagentInfo));
3538 13 Oct 15 olle 620     window.open(url);
3538 13 Oct 15 olle 621   }
3538 13 Oct 15 olle 622 */
3538 13 Oct 15 olle 623   
3538 13 Oct 15 olle 624   exreg.validateStep2 = function(event)
3538 13 Oct 15 olle 625   {
3538 13 Oct 15 olle 626     var valid = true;
3538 13 Oct 15 olle 627     valid &= consumablesFileIsValid;
3538 13 Oct 15 olle 628     
3538 13 Oct 15 olle 629 //alert("exreg.validateStep2(): valid = " + valid);
3538 13 Oct 15 olle 630     if (!valid) event.preventDefault();
3538 13 Oct 15 olle 631   }
3538 13 Oct 15 olle 632
3538 13 Oct 15 olle 633   exreg.submit = function()
3538 13 Oct 15 olle 634   {
3538 13 Oct 15 olle 635     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 636     
3538 13 Oct 15 olle 637     var submitInfo = {};
3538 13 Oct 15 olle 638     submitInfo = jsonConsumables;
3538 13 Oct 15 olle 639
3538 13 Oct 15 olle 640     // Library preparation reagent file
3553 20 Oct 15 olle 641     submitInfo.referenceName = frm.consumablesFile.value;
3546 16 Oct 15 olle 642     submitInfo.expirationDate = frm.expirationDate.value;
3538 13 Oct 15 olle 643
3538 13 Oct 15 olle 644     var url = '../LibPrep.servlet?ID='+App.getSessionId();
3627 26 Nov 15 olle 645     url += '&cmd=RegisterKits';
3538 13 Oct 15 olle 646     Wizard.showLoadingAnimation('Performing registration...');
3538 13 Oct 15 olle 647     Wizard.asyncJsonRequest(url, exreg.submissionResults, 'POST', JSON.stringify(submitInfo));
3538 13 Oct 15 olle 648   }
3538 13 Oct 15 olle 649   
3538 13 Oct 15 olle 650   exreg.submissionResults = function(response)
3538 13 Oct 15 olle 651   {
3538 13 Oct 15 olle 652     Wizard.showFinalMessage(response.messages);
3538 13 Oct 15 olle 653     Doc.show('gorestart');
3538 13 Oct 15 olle 654 /*
3538 13 Oct 15 olle 655     Doc.show('gocreate');
3538 13 Oct 15 olle 656 */
3538 13 Oct 15 olle 657   }
3538 13 Oct 15 olle 658
3538 13 Oct 15 olle 659   exreg.createProtocol = function()
3538 13 Oct 15 olle 660   {
3538 13 Oct 15 olle 661     var frm = document.forms['meludi'];
3538 13 Oct 15 olle 662     var submitInfo = {};
3538 13 Oct 15 olle 663     submitInfo.items = [];
3538 13 Oct 15 olle 664
3538 13 Oct 15 olle 665     submitInfo.docMode = 'report';
3538 13 Oct 15 olle 666     // Get list of selected extract source items
3538 13 Oct 15 olle 667     var selItemsList = exreg.getSelectedItemsList();
3538 13 Oct 15 olle 668     var numItems = selItemsList.length;
3538 13 Oct 15 olle 669     var totNumItems = numItems;
3538 13 Oct 15 olle 670     for (var i = 0; i < totNumItems; i++)
3538 13 Oct 15 olle 671     {
3538 13 Oct 15 olle 672       var item = null;
3538 13 Oct 15 olle 673       item = selItemsList[i];
3538 13 Oct 15 olle 674       submitInfo.items[submitInfo.items.length] = item;
3538 13 Oct 15 olle 675     }
3538 13 Oct 15 olle 676
3538 13 Oct 15 olle 677     // Extraction
3538 13 Oct 15 olle 678     submitInfo.startListName = frm.startListName.value;
3538 13 Oct 15 olle 679     submitInfo.isolationDate = frm.isolationDate.value;
3538 13 Oct 15 olle 680     submitInfo.extractionOperator = frm.extractionOperator.value;
3538 13 Oct 15 olle 681     submitInfo.extractionProtocol = parseInt(frm.extractionProtocolId.value, 10);
3538 13 Oct 15 olle 682     var extractionProtocolName = frm.extractionProtocolName.value;
3538 13 Oct 15 olle 683     var protocolVersionNo = '';
3538 13 Oct 15 olle 684     if (extractionProtocolName)
3538 13 Oct 15 olle 685     {
3538 13 Oct 15 olle 686       protocolVersionNo = extractionProtocolName;
3538 13 Oct 15 olle 687       // Remove part of string up to and including last "v"
3538 13 Oct 15 olle 688       var vIndex = protocolVersionNo.indexOf('v');
3538 13 Oct 15 olle 689       while (vIndex >= 0)
3538 13 Oct 15 olle 690       {
3538 13 Oct 15 olle 691         // Remove part of string up to and including first "v"
3538 13 Oct 15 olle 692         protocolVersionNo = protocolVersionNo.substring(vIndex + 1);
3538 13 Oct 15 olle 693         vIndex = protocolVersionNo.indexOf('v');
3538 13 Oct 15 olle 694       }
3538 13 Oct 15 olle 695     }
3538 13 Oct 15 olle 696     var protocolPreviewFlag = null;
3538 13 Oct 15 olle 697     if (trackingProtocolPreview)
3538 13 Oct 15 olle 698     {
3538 13 Oct 15 olle 699       protocolPreviewFlag = 'true';
3538 13 Oct 15 olle 700     }
3538 13 Oct 15 olle 701     submitInfo.extractionProtocolName = extractionProtocolName;
3538 13 Oct 15 olle 702     submitInfo.protocolVersionNo = protocolVersionNo;
3538 13 Oct 15 olle 703     submitInfo.protocolPreviewFlag = protocolPreviewFlag;
3538 13 Oct 15 olle 704     submitInfo.dnaDefaultVolume = ExtractUtils.getNumber(frm.dnaDefaultVolume.value);
3538 13 Oct 15 olle 705     
3538 13 Oct 15 olle 706     // QIAcube
3538 13 Oct 15 olle 707     submitInfo.qiacubeDate = frm.qiacubeDate.value;
3538 13 Oct 15 olle 708     submitInfo.qiacubeOperator = frm.qiacubeOperator.value;
3538 13 Oct 15 olle 709     submitInfo.qiacubeRunNo = parseInt(frm.qiacubeRunNo.value, 10);
3538 13 Oct 15 olle 710
3538 13 Oct 15 olle 711     // Specimen reagents
3538 13 Oct 15 olle 712     submitInfo.xyleneSpecimen = frm.xyleneSpecimen.value;
3538 13 Oct 15 olle 713     submitInfo.etoh995Specimen = frm.etoh995Specimen.value;
3538 13 Oct 15 olle 714     submitInfo.allPrepFfpeKit = frm.allPrepFfpeKit.value;
3538 13 Oct 15 olle 715     submitInfo.bufferPkdSpecimen = frm.bufferPkdSpecimen.value;
3538 13 Oct 15 olle 716     submitInfo.bufferAtlSpecimen = frm.bufferAtlSpecimen.value;
3538 13 Oct 15 olle 717     submitInfo.proteinaseKSpecimen = frm.proteinaseKSpecimen.value;
3538 13 Oct 15 olle 718     submitInfo.rnaseASpecimen = frm.rnaseASpecimen.value;
3538 13 Oct 15 olle 719
3538 13 Oct 15 olle 720     // QIAcube
3538 13 Oct 15 olle 721     submitInfo.etoh995 = frm.etoh995.value;
3538 13 Oct 15 olle 722     submitInfo.bufferRlt = frm.bufferRlt.value;
3538 13 Oct 15 olle 723     submitInfo.bufferFrn = frm.bufferFrn.value;
3538 13 Oct 15 olle 724     submitInfo.bufferRpe = frm.bufferRpe.value;
3538 13 Oct 15 olle 725     submitInfo.bufferAl = frm.bufferAl.value;
3538 13 Oct 15 olle 726     submitInfo.bufferAw1 = frm.bufferAw1.value;
3538 13 Oct 15 olle 727     submitInfo.bufferAw2 = frm.bufferAw2.value;
3538 13 Oct 15 olle 728     submitInfo.bufferAte = frm.bufferAte.value;
3538 13 Oct 15 olle 729     submitInfo.bufferRdd = frm.bufferRdd.value;
3538 13 Oct 15 olle 730     submitInfo.rnaseFreeWater = frm.rnaseFreeWater.value;
3538 13 Oct 15 olle 731     submitInfo.dnaseMix = frm.dnaseMix.value;
3538 13 Oct 15 olle 732     submitInfo.rneasyMinEluteSpinColumn = frm.rneasyMinEluteSpinColumn.value;
3538 13 Oct 15 olle 733     submitInfo.qiaampMinEluteSpinColumn = frm.qiaampMinEluteSpinColumn.value;
3538 13 Oct 15 olle 734
3538 13 Oct 15 olle 735     // Quality control reagents
3538 13 Oct 15 olle 736     submitInfo.kapaSybrFast = frm.kapaSybrFast.value;
3538 13 Oct 15 olle 737     submitInfo.qualityControlPrimersQcpRgt = frm.qualityControlPrimersQcpRgt.value;
3538 13 Oct 15 olle 738     submitInfo.qualityControlTemplateQct = frm.qualityControlTemplateQct.value;
3538 13 Oct 15 olle 739     submitInfo.qubitDnaHighSens = frm.qubitDnaHighSens.value;
3538 13 Oct 15 olle 740     submitInfo.qubitDnaBroadRange = frm.qubitDnaBroadRange.value;
3538 13 Oct 15 olle 741
3538 13 Oct 15 olle 742     // Save values in hidden input fields for retrieval after HTML request
3538 13 Oct 15 olle 743     var submitInfoJsonStr = JSON.stringify(submitInfo);
3538 13 Oct 15 olle 744     frm.hiddenSubmitInfo.value = submitInfoJsonStr;
3538 13 Oct 15 olle 745     frm.hiddenNumItems.value = submitInfo.items.length;
3538 13 Oct 15 olle 746     frm.hiddenCounterBalanceInfoRow.value = counterBalanceInfoRow;
3538 13 Oct 15 olle 747
3538 13 Oct 15 olle 748     // Calling frm.submit() will change jsp file to extraction_protocol2.jsp
3538 13 Oct 15 olle 749     frm.submit();
3538 13 Oct 15 olle 750   }
3538 13 Oct 15 olle 751
3538 13 Oct 15 olle 752   return exreg;
3538 13 Oct 15 olle 753 }();
3538 13 Oct 15 olle 754
3538 13 Oct 15 olle 755 Doc.onLoad(ExtractionReg.initPage);
3538 13 Oct 15 olle 756