extensions/net.sf.basedb.reggie/trunk/resources/batch/import-transport-boxes.js

Code
Comments
Other
Rev Date Author Line
7139 27 Apr 23 nicklas 1 var TransportBox = function()
7139 27 Apr 23 nicklas 2 {
7139 27 Apr 23 nicklas 3   var transport = {};
7139 27 Apr 23 nicklas 4   var debug = 0;
7139 27 Apr 23 nicklas 5     
7139 27 Apr 23 nicklas 6   var importData;
7139 27 Apr 23 nicklas 7   var specimen;
7191 23 May 23 nicklas 8   var boxes;
7139 27 Apr 23 nicklas 9   
7139 27 Apr 23 nicklas 10   // Page initialization
7139 27 Apr 23 nicklas 11   transport.initPage = function()
7139 27 Apr 23 nicklas 12   {
7139 27 Apr 23 nicklas 13     // Step 1
7139 27 Apr 23 nicklas 14     Events.addEventHandler('step-1', 'wizard-validate', transport.validateStep1);
7139 27 Apr 23 nicklas 15
7139 27 Apr 23 nicklas 16     Wizard.initFileSelectionField('importfile');
7139 27 Apr 23 nicklas 17     Events.addEventHandler('importfile', 'change', transport.importFileOnChange);
7139 27 Apr 23 nicklas 18     Events.addEventHandler('sheet', 'change', transport.worksheetOnChange);
7139 27 Apr 23 nicklas 19     
7160 11 May 23 nicklas 20     Events.addEventHandler('downloadfile', 'click', Files.viewFileOnClick)
7147 08 May 23 nicklas 21     Events.addEventHandler('showSpecimen', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 22     Events.addEventHandler('showNoSpecimen', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 23     Events.addEventHandler('showCase', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 24     Events.addEventHandler('showBlood', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 25     Events.addEventHandler('showNothing', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 26     Events.addEventHandler('showNoConsent', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 27     Events.addEventHandler('showErrors', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 28     Events.addEventHandler('showWarnings', 'change', transport.toggleItemsToShow);
7147 08 May 23 nicklas 29     
7139 27 Apr 23 nicklas 30     // Navigation
7139 27 Apr 23 nicklas 31     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
7139 27 Apr 23 nicklas 32     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
7139 27 Apr 23 nicklas 33     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
7139 27 Apr 23 nicklas 34     Buttons.addClickHandler('goregister', Wizard.goRegister);
7139 27 Apr 23 nicklas 35     
7139 27 Apr 23 nicklas 36     // Final registration
7139 27 Apr 23 nicklas 37     Events.addEventHandler('wizard', 'wizard-submit', transport.submit);
7139 27 Apr 23 nicklas 38   
7139 27 Apr 23 nicklas 39     Doc.show('step-1');
7139 27 Apr 23 nicklas 40   }
7139 27 Apr 23 nicklas 41   
7139 27 Apr 23 nicklas 42   transport.importFileOnChange = function()
7139 27 Apr 23 nicklas 43   {
7139 27 Apr 23 nicklas 44     Doc.hide('worksheetSection');
7139 27 Apr 23 nicklas 45     Doc.hide('worksheetSection.help');
7160 11 May 23 nicklas 46     // Copy file id to the "Download" icon
7160 11 May 23 nicklas 47     Data.set('downloadfile', 'file-id', Data.get('importfile', 'file-id'));
7139 27 Apr 23 nicklas 48     transport.prevalidateImportFile();
7139 27 Apr 23 nicklas 49   }
7139 27 Apr 23 nicklas 50   
7139 27 Apr 23 nicklas 51   transport.worksheetOnChange = function()
7139 27 Apr 23 nicklas 52   {
7139 27 Apr 23 nicklas 53     transport.prevalidateImportFile();
7139 27 Apr 23 nicklas 54   }
7139 27 Apr 23 nicklas 55   
7139 27 Apr 23 nicklas 56   transport.validateStep1 = function(event)
7139 27 Apr 23 nicklas 57   {
7139 27 Apr 23 nicklas 58     if (!Wizard.isValid('importfile'))
7139 27 Apr 23 nicklas 59     {
7139 27 Apr 23 nicklas 60       event.preventDefault();
7139 27 Apr 23 nicklas 61     }
7139 27 Apr 23 nicklas 62   }
7139 27 Apr 23 nicklas 63
7147 08 May 23 nicklas 64   transport.toggleItemsToShow = function(event)
7147 08 May 23 nicklas 65   {
7147 08 May 23 nicklas 66     Doc.addOrRemoveClass('fileData', Data.get(event.currentTarget, 'toggle'));
7147 08 May 23 nicklas 67   }
7149 08 May 23 nicklas 68   
7149 08 May 23 nicklas 69   transport.resetItemsToShow = function(element, checked)
7149 08 May 23 nicklas 70   {
7149 08 May 23 nicklas 71     element = Doc.element(element);
7149 08 May 23 nicklas 72     element.checked = checked;
7149 08 May 23 nicklas 73     Doc.removeClass('fileData', Data.get(element, 'toggle'));
7149 08 May 23 nicklas 74   }
7149 08 May 23 nicklas 75   
7139 27 Apr 23 nicklas 76   transport.prevalidateImportFile = function()
7139 27 Apr 23 nicklas 77   {
7139 27 Apr 23 nicklas 78     Doc.hide('filePreview');
7141 02 May 23 nicklas 79     Doc.hide('fileData');
7139 27 Apr 23 nicklas 80     Wizard.hideWizardStatus();
7139 27 Apr 23 nicklas 81     Wizard.hideGoNextConfirmation();
7149 08 May 23 nicklas 82     transport.resetItemsToShow('showErrors', false);
7149 08 May 23 nicklas 83     transport.resetItemsToShow('showWarnings', false);
7149 08 May 23 nicklas 84     transport.resetItemsToShow('showNoConsent', false);
7149 08 May 23 nicklas 85     transport.resetItemsToShow('showSpecimen', true);
7149 08 May 23 nicklas 86     transport.resetItemsToShow('showNoSpecimen', true);
7149 08 May 23 nicklas 87     transport.resetItemsToShow('showCase', true);
7149 08 May 23 nicklas 88     transport.resetItemsToShow('showBlood', true);
7149 08 May 23 nicklas 89     transport.resetItemsToShow('showNothing', true);
7149 08 May 23 nicklas 90         
7139 27 Apr 23 nicklas 91     var frm = document.forms['reggie'];
7139 27 Apr 23 nicklas 92     var path = frm.importfile.value;
7139 27 Apr 23 nicklas 93     if (path == '') return;
7139 27 Apr 23 nicklas 94     
7139 27 Apr 23 nicklas 95     Wizard.setInputStatus('importfile');
7139 27 Apr 23 nicklas 96     Data.set('importfile', 'valid', 0);
7194 23 May 23 nicklas 97     Doc.hide('gocancel');
7194 23 May 23 nicklas 98     Doc.hide('goregister');
7194 23 May 23 nicklas 99     Doc.removeClass('goregister', 'disabled');
7139 27 Apr 23 nicklas 100
7139 27 Apr 23 nicklas 101     var url = '../ExternalSpecimen.servlet?ID='+App.getSessionId();
7139 27 Apr 23 nicklas 102     url += '&cmd=PreValidateTransportFile';
7139 27 Apr 23 nicklas 103     url += '&path='+encodeURIComponent(path);
7139 27 Apr 23 nicklas 104     url += '&sheet='+encodeURIComponent(frm.sheet.value);
7139 27 Apr 23 nicklas 105     
7162 12 May 23 nicklas 106     Wizard.showLoadingAnimation('Validating ' + Strings.encodeTags(path), 'transport-box-import-progress');
7139 27 Apr 23 nicklas 107     Wizard.asyncJsonRequest(url, transport.onImportFileValidated, 'POST');
7139 27 Apr 23 nicklas 108   }
7139 27 Apr 23 nicklas 109
7139 27 Apr 23 nicklas 110   transport.onImportFileValidated = function(response)
7139 27 Apr 23 nicklas 111   {
7139 27 Apr 23 nicklas 112     var frm = document.forms['reggie'];
7139 27 Apr 23 nicklas 113
7139 27 Apr 23 nicklas 114     Wizard.setInputStatus('importfile');
7141 02 May 23 nicklas 115     Wizard.showFinalMessage(response.messages);
7141 02 May 23 nicklas 116     
7139 27 Apr 23 nicklas 117     importData = response.importFile;
7139 27 Apr 23 nicklas 118     specimen = response.specimen;
7191 23 May 23 nicklas 119     boxes = response.boxes;
7139 27 Apr 23 nicklas 120
7139 27 Apr 23 nicklas 121     var sheetNames = importData.sheetNames;
7139 27 Apr 23 nicklas 122     if (sheetNames && sheetNames.length)
7139 27 Apr 23 nicklas 123     {
7139 27 Apr 23 nicklas 124       var currentSheet = frm.sheet.value;
7139 27 Apr 23 nicklas 125       frm.sheet.length = 0;
7139 27 Apr 23 nicklas 126       for (var sNo = 0; sNo < sheetNames.length; sNo++)
7139 27 Apr 23 nicklas 127       {
7139 27 Apr 23 nicklas 128         var sheet = sheetNames[sNo];
7139 27 Apr 23 nicklas 129         frm.sheet[frm.sheet.length] = new Option(sheet, sheet, false, currentSheet == sheet);
7139 27 Apr 23 nicklas 130       }
7139 27 Apr 23 nicklas 131       if (frm.sheet.length > 1) 
7139 27 Apr 23 nicklas 132       {
7139 27 Apr 23 nicklas 133         Doc.show('worksheetSection');
7139 27 Apr 23 nicklas 134         Doc.show('worksheetSection.help');
7139 27 Apr 23 nicklas 135       }
7139 27 Apr 23 nicklas 136     }
7139 27 Apr 23 nicklas 137     
7139 27 Apr 23 nicklas 138     Doc.element('filename').innerHTML = Strings.encodeTags(importData.filename);
7139 27 Apr 23 nicklas 139     Doc.element('numBoxes').innerHTML = importData.numBoxes;
7143 05 May 23 nicklas 140     Doc.element('numSamples').innerHTML = importData.numSamples;
7143 05 May 23 nicklas 141
7143 05 May 23 nicklas 142     Doc.element('numMappedToSpecimen').innerHTML = importData.numMappedToSpecimen;
7143 05 May 23 nicklas 143     Doc.element('numMappedToNoSpecimen').innerHTML = importData.numMappedToNoSpecimen;
7143 05 May 23 nicklas 144     Doc.element('numMappedToCase').innerHTML = importData.numMappedToCase;
7143 05 May 23 nicklas 145     Doc.element('numMappedToBlood').innerHTML = importData.numMappedToBlood;
7143 05 May 23 nicklas 146     Doc.element('numMappedToNothing').innerHTML = importData.numMappedToNothing;
7143 05 May 23 nicklas 147     Doc.element('numNoConsent').innerHTML = importData.numNoConsent;
7143 05 May 23 nicklas 148
7139 27 Apr 23 nicklas 149     Doc.element('numErrors').innerHTML = importData.errors;
7139 27 Apr 23 nicklas 150     Doc.element('numWarnings').innerHTML = importData.warnings;
7139 27 Apr 23 nicklas 151     
7139 27 Apr 23 nicklas 152     Doc.element('importPossible').innerHTML = importData.valid ? '<img src="../images/ok.png">Import is possible!' : '<img src="../images/error.png">Import is not possible!';
7191 23 May 23 nicklas 153
7191 23 May 23 nicklas 154     var html = '';
7191 23 May 23 nicklas 155     if (importData.valid)
7191 23 May 23 nicklas 156     {
7191 23 May 23 nicklas 157       for (var boxNo = 0; boxNo < boxes.length; boxNo++)
7191 23 May 23 nicklas 158       {
7191 23 May 23 nicklas 159         var box = boxes[boxNo];
7191 23 May 23 nicklas 160         html += '<div>';
7191 23 May 23 nicklas 161         html += '<b>'+Strings.encodeTags(box.name)+'</b>';
7191 23 May 23 nicklas 162         html += '<span>'+box.numSamples+' samples</span>';
7191 23 May 23 nicklas 163         html += '<span><input type="text" name="box.'+boxNo+'.comments" style="width: 80em;" title="Comments for this box"></span>';
7191 23 May 23 nicklas 164         html += '</div>';
7191 23 May 23 nicklas 165       }
7191 23 May 23 nicklas 166       Doc.element('boxComments').innerHTML = html;
7191 23 May 23 nicklas 167       Doc.show('boxComments');
7191 23 May 23 nicklas 168     }
7194 23 May 23 nicklas 169     else
7194 23 May 23 nicklas 170     {
7194 23 May 23 nicklas 171       Doc.element('boxComments').innerHTML = '';
7194 23 May 23 nicklas 172       Doc.hide('boxComments');
7194 23 May 23 nicklas 173     }
7139 27 Apr 23 nicklas 174     Doc.show('filePreview');
7139 27 Apr 23 nicklas 175
7139 27 Apr 23 nicklas 176     var html = '<table id="specimenTable">';
7139 27 Apr 23 nicklas 177     html += '<thead class="bg-filled-100">';
7176 17 May 23 nicklas 178     // Header row 1
7176 17 May 23 nicklas 179     html += '<tr class="header1">';
7176 17 May 23 nicklas 180     html += '<th></th>';
7176 17 May 23 nicklas 181     html += '<th class="dottedleft" colspan="4">'+Strings.encodeTags(importData.filename)+'</th>';
7176 17 May 23 nicklas 182     html += '<th class="dottedleft" colspan="3">Lorry</th>';
7176 17 May 23 nicklas 183     html += '<th class="dottedleft" colspan="2"></th>';
7176 17 May 23 nicklas 184     html += '<th class="dottedleft"></th>';
7176 17 May 23 nicklas 185     html += '</tr>';
7176 17 May 23 nicklas 186     // Header row 2
7139 27 Apr 23 nicklas 187     html += '<tr>';
7139 27 Apr 23 nicklas 188     html += '<th class="lineNo">Line #</th>';
7139 27 Apr 23 nicklas 189     html += '<th class="dottedleft">Clarity ID</th>';
7139 27 Apr 23 nicklas 190     html += '<th>SCAN-B ID</th>';
7139 27 Apr 23 nicklas 191     html += '<th>PAD</th>';
7143 05 May 23 nicklas 192     html += '<th>Transport box</th>';
7140 28 Apr 23 nicklas 193     html += '<th class="dottedleft">Storage box</th>'
7147 08 May 23 nicklas 194     html += '<th colspan="2">Mapped item</th>';
7143 05 May 23 nicklas 195     html += '<th class="dottedleft icon"></th>';
7143 05 May 23 nicklas 196     html += '<th>Messages/Actions</th>';
7139 27 Apr 23 nicklas 197     html += '<th class="dottedleft">Comment</th>';
7139 27 Apr 23 nicklas 198     html += '</thead>';
7139 27 Apr 23 nicklas 199     html += '<tbody>';
7139 27 Apr 23 nicklas 200     html += '</tr>';
7140 28 Apr 23 nicklas 201     var lastBox = null;
7139 27 Apr 23 nicklas 202     for (var sNo = 0; sNo < specimen.length; sNo++)
7139 27 Apr 23 nicklas 203     {
7139 27 Apr 23 nicklas 204       var sp = specimen[sNo];
7140 28 Apr 23 nicklas 205       var well = sp.well;
7140 28 Apr 23 nicklas 206       var box = well ? well.bioPlate : null;
7140 28 Apr 23 nicklas 207       var isNewBox = box && lastBox && box.name != lastBox;
7140 28 Apr 23 nicklas 208       if (box) lastBox = box.name;
7147 08 May 23 nicklas 209       var mappedTo = sp.mappedTo ? sp.mappedTo.itemType : 'Nothing';
7147 08 May 23 nicklas 210       mappedTo += sp.noConsent ? ' NoConsent' : ' HasConsent';
7147 08 May 23 nicklas 211       mappedTo += sp.errors ? ' HasError' : ' NoError';
7149 08 May 23 nicklas 212       mappedTo += sp.warnings ? ' HasWarning' : ' NoWarning';
7143 05 May 23 nicklas 213       
7143 05 May 23 nicklas 214       var icon = 'ok.png';
7149 08 May 23 nicklas 215       if (sp.warnings) icon = 'warning.png';
7143 05 May 23 nicklas 216       if (sp.errors) icon = 'error.png';
7143 05 May 23 nicklas 217       
7147 08 May 23 nicklas 218       html += '<tr class="highlight '+mappedTo+' '+(sNo % 4 < 2 ? 'evenrow' : 'oddrow') + '">';
7139 27 Apr 23 nicklas 219       html += '<td class="lineNo">'+sp.lineNo+'</td>';
7176 17 May 23 nicklas 220       html += '<td class="dottedleft shaded">';
7153 09 May 23 nicklas 221       if (sp.clarityId)
7153 09 May 23 nicklas 222       {
7153 09 May 23 nicklas 223         html += Strings.encodeTags(sp.clarityId);
7153 09 May 23 nicklas 224         html += '<img src="../images/case_summary.png" class="link case-summary" data-name="'+Strings.encodeTags(sp.clarityId)+'" title="Show case summary (popup window)">';
7153 09 May 23 nicklas 225       }
7153 09 May 23 nicklas 226       html += '</td>';
7176 17 May 23 nicklas 227       html += '<td class="shaded">';
7147 08 May 23 nicklas 228       if (sp.scanBId)
7147 08 May 23 nicklas 229       {
7153 09 May 23 nicklas 230         html += Strings.encodeTags(sp.scanBId);
7147 08 May 23 nicklas 231         html += '<img src="../images/case_summary.png" class="link case-summary" data-name="'+Strings.encodeTags(sp.scanBId)+'" title="Show case summary (popup window)">';
7147 08 May 23 nicklas 232       }
7147 08 May 23 nicklas 233       html += '</td>';
7176 17 May 23 nicklas 234       html += '<td class="shaded">';
7153 09 May 23 nicklas 235       if (sp.pad)
7153 09 May 23 nicklas 236       {
7153 09 May 23 nicklas 237         html += Strings.encodeTags(sp.pad);
7153 09 May 23 nicklas 238         html += '<img src="../images/case_summary.png" class="link case-summary" data-name="'+Strings.encodeTags(sp.pad)+'" title="Show case summary (popup window)">';
7153 09 May 23 nicklas 239       }
7153 09 May 23 nicklas 240       html += '</td>';
7176 17 May 23 nicklas 241       html += '<td class="shaded">'+Strings.encodeTags(sp.transportBox);
7176 17 May 23 nicklas 242       html += '<img src="../images/info.png" class="line-info" title="Line '+sp.lineNo+': '+Strings.encodeTags(sp.line)+'">';
7176 17 May 23 nicklas 243       html += '</td>';
7193 23 May 23 nicklas 244       html += '<td class="dottedleft storage-box '+(isNewBox?'new-box':'')+'">'+(well ? Strings.encodeTags(box.name+' '+well.location):'-')+'</td>';
7143 05 May 23 nicklas 245       html += '<td class="'+(isNewBox?'new-box':'')+'">';
7143 05 May 23 nicklas 246       if (sp.mappedTo)
7140 28 Apr 23 nicklas 247       {
7143 05 May 23 nicklas 248         html += Strings.encodeTags(sp.mappedTo.name);
7147 08 May 23 nicklas 249         html += '<img src="../images/case_summary.png" class="link case-summary" data-name="'+Strings.encodeTags(sp.mappedTo.name)+'" title="Show case summary (popup window)">';
7140 28 Apr 23 nicklas 250       }
7143 05 May 23 nicklas 251       html += '</td>';
7191 23 May 23 nicklas 252       html += '<td class="'+(isNewBox?'new-box':'')+'">';
7147 08 May 23 nicklas 253       if (sp.mappedTo && sp.mappedTo.itemType) 
7147 08 May 23 nicklas 254       {
7147 08 May 23 nicklas 255         html += '<span class="itemsubtype">'+Strings.encodeTags(sp.mappedTo.itemType)+'</span>';
7147 08 May 23 nicklas 256       }
7147 08 May 23 nicklas 257       html += '</td>';
7143 05 May 23 nicklas 258       html += '<td class="dottedleft icon"><img src="../images/'+icon+'"></td>';
7147 08 May 23 nicklas 259       html += '<td>';
7158 10 May 23 nicklas 260       if (sp.alternateAction)
7158 10 May 23 nicklas 261       {
7158 10 May 23 nicklas 262         html += '<div class="action">';
7158 10 May 23 nicklas 263         html += '<label><input type="radio" name="action.'+sNo+'" value="0" '+(sp.alternateIsDefault?'':'checked')+'>';
7158 10 May 23 nicklas 264         html += Strings.encodeTags(sp.action)+'</label></div>';
7158 10 May 23 nicklas 265         html += '<div class="action">';
7158 10 May 23 nicklas 266         html += '<label><input type="radio" name="action.'+sNo+'" value="1" '+(sp.alternateIsDefault?'checked':'')+'>';
7158 10 May 23 nicklas 267         html += Strings.encodeTags(sp.alternateAction)+'</label></div>';
7158 10 May 23 nicklas 268       }
7158 10 May 23 nicklas 269       else
7158 10 May 23 nicklas 270       {
7158 10 May 23 nicklas 271         html += '<div class="action">'+Strings.encodeTags(sp.action)+'</div>';
7158 10 May 23 nicklas 272       }
7141 02 May 23 nicklas 273       var startNo = 1;
7141 02 May 23 nicklas 274       if (sp.errors != null)
7140 28 Apr 23 nicklas 275       {
7141 02 May 23 nicklas 276         html += '<div class="messagecontainer error"><ol start="'+startNo+'">';
7141 02 May 23 nicklas 277         for (var errNo = 0; errNo < sp.errors.length; errNo++)
7141 02 May 23 nicklas 278         {
7141 02 May 23 nicklas 279           var msg = sp.errors[errNo];
7141 02 May 23 nicklas 280           if (msg.indexOf('[HTML]')==0)
7141 02 May 23 nicklas 281           {
7141 02 May 23 nicklas 282             html += '<li>'+msg.replace('[HTML]', '');
7141 02 May 23 nicklas 283           }
7141 02 May 23 nicklas 284           else
7141 02 May 23 nicklas 285           {
7141 02 May 23 nicklas 286             html += '<li>'+Strings.encodeTags(msg);
7141 02 May 23 nicklas 287           }
7141 02 May 23 nicklas 288         }
7159 11 May 23 nicklas 289         if (sp.otherPathNote && !sp.warnings)
7159 11 May 23 nicklas 290         {
7159 11 May 23 nicklas 291           html += '<li><b>Other path. note:</b> '+Strings.encodeTags(sp.otherPathNote);
7159 11 May 23 nicklas 292         }
7159 11 May 23 nicklas 293         
7141 02 May 23 nicklas 294         html += '</ol></div>';
7141 02 May 23 nicklas 295         startNo += sp.errors.length;
7140 28 Apr 23 nicklas 296       }
7141 02 May 23 nicklas 297       if (sp.warnings != null)
7141 02 May 23 nicklas 298       {
7141 02 May 23 nicklas 299         html += '<div class="messagecontainer note"><ol start="'+startNo+'">';
7141 02 May 23 nicklas 300         for (var warnNo = 0; warnNo < sp.warnings.length; warnNo++)
7141 02 May 23 nicklas 301         {
7141 02 May 23 nicklas 302           var msg = sp.warnings[warnNo];
7141 02 May 23 nicklas 303           if (msg.indexOf('[HTML]')==0)
7141 02 May 23 nicklas 304           {
7141 02 May 23 nicklas 305             html += '<li>'+msg.replace('[HTML]', '');
7141 02 May 23 nicklas 306           }
7141 02 May 23 nicklas 307           else
7141 02 May 23 nicklas 308           {
7141 02 May 23 nicklas 309             html += '<li>'+Strings.encodeTags(msg);
7141 02 May 23 nicklas 310           }
7141 02 May 23 nicklas 311         }
7159 11 May 23 nicklas 312         if (sp.otherPathNote)
7159 11 May 23 nicklas 313         {
7159 11 May 23 nicklas 314           html += '<li><b>Other path. note:</b> '+Strings.encodeTags(sp.otherPathNote);
7159 11 May 23 nicklas 315         }
7141 02 May 23 nicklas 316         html += '</ol></div>';
7141 02 May 23 nicklas 317         startNo += sp.warnings.length;
7141 02 May 23 nicklas 318       }
7141 02 May 23 nicklas 319
7140 28 Apr 23 nicklas 320       html += '</td>';
7159 11 May 23 nicklas 321       html += '<td class="dottedleft comment"><input type="text" name="comment.'+sNo+'" value="'+Strings.encodeTags(sp.comment)+'"></td>';
7139 27 Apr 23 nicklas 322       html += '</tr>';
7139 27 Apr 23 nicklas 323     }
7139 27 Apr 23 nicklas 324     html += '</tbody>';
7139 27 Apr 23 nicklas 325     html += '</table>';
7139 27 Apr 23 nicklas 326     
7139 27 Apr 23 nicklas 327     Doc.element('fileData').innerHTML = html;
7141 02 May 23 nicklas 328     if (specimen.length > 0) Doc.show('fileData');
7139 27 Apr 23 nicklas 329     
7147 08 May 23 nicklas 330     var cs = Doc.element('fileData').getElementsByClassName('case-summary');
7147 08 May 23 nicklas 331     for (var i = 0; i < cs.length; i++)
7147 08 May 23 nicklas 332     {
7147 08 May 23 nicklas 333       Events.addEventHandler(cs[i], 'click', Reggie.openCaseSummaryPopupOnEvent);
7147 08 May 23 nicklas 334     }
7147 08 May 23 nicklas 335     
7191 23 May 23 nicklas 336     Doc.show('gocancel');
7191 23 May 23 nicklas 337     Doc.show('goregister');
7139 27 Apr 23 nicklas 338     if (importData.valid)
7139 27 Apr 23 nicklas 339     {
7139 27 Apr 23 nicklas 340       Wizard.setInputStatus('importfile', importData.warnings > 0 ? 'warning' : 'valid');
7139 27 Apr 23 nicklas 341       Data.set('importfile', 'valid', 1);
7139 27 Apr 23 nicklas 342       if (importData.warnings > 0)
7139 27 Apr 23 nicklas 343       {
7139 27 Apr 23 nicklas 344         Wizard.showGoNextConfirmation(true, 'Check to verify registration of file with warnings.');
7139 27 Apr 23 nicklas 345       }
7139 27 Apr 23 nicklas 346     }
7139 27 Apr 23 nicklas 347     else
7139 27 Apr 23 nicklas 348     {
7139 27 Apr 23 nicklas 349       Wizard.setInputStatus('importfile', 'invalid');
7143 05 May 23 nicklas 350       Doc.addClass('goregister', 'disabled');
7139 27 Apr 23 nicklas 351     }
7139 27 Apr 23 nicklas 352   }
7139 27 Apr 23 nicklas 353
7139 27 Apr 23 nicklas 354   transport.submit = function()
7139 27 Apr 23 nicklas 355   {
7139 27 Apr 23 nicklas 356     var frm = document.forms['reggie'];
7139 27 Apr 23 nicklas 357     var path = frm.importfile.value;
7139 27 Apr 23 nicklas 358
7139 27 Apr 23 nicklas 359     var url = '../ExternalSpecimen.servlet?ID='+App.getSessionId();
7139 27 Apr 23 nicklas 360     url += '&cmd=ImportFromTransportFile';
7139 27 Apr 23 nicklas 361     url += '&path='+encodeURIComponent(path);
7139 27 Apr 23 nicklas 362     url += '&sheet='+encodeURIComponent(frm.sheet.value);
7139 27 Apr 23 nicklas 363     
7161 11 May 23 nicklas 364     var submitInfo = {};
7191 23 May 23 nicklas 365     var boxInfo = {};
7191 23 May 23 nicklas 366     submitInfo.boxes = boxInfo;
7191 23 May 23 nicklas 367     for (var boxNo = 0; boxNo < boxes.length; boxNo++)
7191 23 May 23 nicklas 368     {
7191 23 May 23 nicklas 369       var box = boxes[boxNo];
7191 23 May 23 nicklas 370       var tmp = {};
7191 23 May 23 nicklas 371       tmp.comment = frm['box.'+boxNo+'.comments'].value;
7191 23 May 23 nicklas 372       boxInfo[box.name] = tmp;
7191 23 May 23 nicklas 373     }
7191 23 May 23 nicklas 374     var samples = [];
7191 23 May 23 nicklas 375     submitInfo.samples = samples;
7161 11 May 23 nicklas 376     for (var sNo = 0; sNo < specimen.length; sNo++)
7161 11 May 23 nicklas 377     {
7161 11 May 23 nicklas 378       var sp = specimen[sNo];
7161 11 May 23 nicklas 379       var tmp = {};
7161 11 May 23 nicklas 380       tmp.clarityId = sp.clarityId;
7161 11 May 23 nicklas 381       tmp.comment = frm['comment.'+sNo].value;
7161 11 May 23 nicklas 382       if (frm['action.'+sNo] && frm['action.'+sNo].value == 1)
7161 11 May 23 nicklas 383       {
7161 11 May 23 nicklas 384         tmp.alternateAction = true;
7161 11 May 23 nicklas 385       }
7191 23 May 23 nicklas 386       samples[samples.length] = tmp;
7161 11 May 23 nicklas 387     }
7162 12 May 23 nicklas 388     Wizard.showLoadingAnimation('Performing registration...', 'transport-box-import-progress');
7161 11 May 23 nicklas 389     Wizard.asyncJsonRequest(url, transport.submissionResults, 'POST', JSON.stringify(submitInfo));
7139 27 Apr 23 nicklas 390   }
7139 27 Apr 23 nicklas 391   
7139 27 Apr 23 nicklas 392   transport.submissionResults = function(response)
7139 27 Apr 23 nicklas 393   {
7139 27 Apr 23 nicklas 394     Wizard.showFinalMessage(response.messages);
7139 27 Apr 23 nicklas 395     Doc.show('gorestart');
7139 27 Apr 23 nicklas 396   }
7139 27 Apr 23 nicklas 397
7139 27 Apr 23 nicklas 398   return transport;
7139 27 Apr 23 nicklas 399 }();
7139 27 Apr 23 nicklas 400
7139 27 Apr 23 nicklas 401 Doc.onLoad(TransportBox.initPage);
7139 27 Apr 23 nicklas 402