5060 |
29 Oct 18 |
olle |
var Istat = function() |
5060 |
29 Oct 18 |
olle |
2 |
{ |
5060 |
29 Oct 18 |
olle |
var istat = {}; |
5060 |
29 Oct 18 |
olle |
var debug = 0; |
5060 |
29 Oct 18 |
olle |
5 |
|
5060 |
29 Oct 18 |
olle |
var refVariantDefault = 'kit1_standard'; |
5060 |
29 Oct 18 |
olle |
7 |
|
5114 |
20 Nov 18 |
olle |
// Well validation variable for input specimen, DNA, RNA |
5114 |
20 Nov 18 |
olle |
var wellIsValid = []; |
5114 |
20 Nov 18 |
olle |
// Well validation variables for extracts from specimen |
5114 |
20 Nov 18 |
olle |
var dnaWellIsValid = []; |
5114 |
20 Nov 18 |
olle |
var rnaWellIsValid = []; |
5114 |
20 Nov 18 |
olle |
13 |
|
5060 |
29 Oct 18 |
olle |
// Page initialization |
5060 |
29 Oct 18 |
olle |
istat.initPage = function() |
5060 |
29 Oct 18 |
olle |
16 |
{ |
5060 |
29 Oct 18 |
olle |
// Step 1 |
5060 |
29 Oct 18 |
olle |
Events.addEventHandler('step-1', 'wizard-validate', istat.validateStep1); |
5060 |
29 Oct 18 |
olle |
Events.addEventHandler('extractSourceItems', 'change', istat.sourceItemsOnChange); |
5060 |
29 Oct 18 |
olle |
20 |
|
5060 |
29 Oct 18 |
olle |
// Step 2 |
5060 |
29 Oct 18 |
olle |
Events.addEventHandler('step-2', 'wizard-initialize', istat.initializeStep2); |
5060 |
29 Oct 18 |
olle |
Events.addEventHandler('step-2', 'wizard-validate', istat.validateStep2); |
5060 |
29 Oct 18 |
olle |
24 |
|
5060 |
29 Oct 18 |
olle |
// Navigation |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler('gocancel', Wizard.cancelWizard); |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler('gorestart', Wizard.restartWizard); |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler('gonext', Wizard.goNextOnClick); |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler('goregister', Wizard.goRegister); |
5060 |
29 Oct 18 |
olle |
30 |
|
5060 |
29 Oct 18 |
olle |
// Final registration |
5060 |
29 Oct 18 |
olle |
Events.addEventHandler('wizard', 'wizard-submit', istat.submit); |
5060 |
29 Oct 18 |
olle |
33 |
|
5060 |
29 Oct 18 |
olle |
// Get FFPE block items |
5060 |
29 Oct 18 |
olle |
var url = '../Extraction.servlet?ID='+App.getSessionId(); |
5061 |
30 Oct 18 |
olle |
url += '&cmd=GetFfpeBlocksUnusedForSection'; |
5060 |
29 Oct 18 |
olle |
Wizard.showLoadingAnimation('Loading unprocessed items...'); |
5060 |
29 Oct 18 |
olle |
Wizard.asyncJsonRequest(url, istat.initializeStep1); |
5060 |
29 Oct 18 |
olle |
39 |
} |
5060 |
29 Oct 18 |
olle |
40 |
|
5060 |
29 Oct 18 |
olle |
istat.initializeStep1 = function(response) |
5060 |
29 Oct 18 |
olle |
42 |
{ |
5060 |
29 Oct 18 |
olle |
var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
var items = response.items; |
5060 |
29 Oct 18 |
olle |
45 |
|
5060 |
29 Oct 18 |
olle |
var sourceItemList = frm.extractSourceItems; |
5060 |
29 Oct 18 |
olle |
if (items.length) |
5060 |
29 Oct 18 |
olle |
48 |
{ |
5060 |
29 Oct 18 |
olle |
var numItems = items.length; |
5060 |
29 Oct 18 |
olle |
for (var i=0; i < items.length; i++) |
5060 |
29 Oct 18 |
olle |
51 |
{ |
5060 |
29 Oct 18 |
olle |
var item = items[i]; |
5060 |
29 Oct 18 |
olle |
var name = (i+1) + ': ' + Strings.encodeTags(item.name); |
5060 |
29 Oct 18 |
olle |
if (item.pad) |
5060 |
29 Oct 18 |
olle |
55 |
{ |
5060 |
29 Oct 18 |
olle |
name += ' -- (PAD: ' + Strings.encodeTags(item.pad + ')'); |
5060 |
29 Oct 18 |
olle |
57 |
} |
5060 |
29 Oct 18 |
olle |
var selected = i < 8; |
5060 |
29 Oct 18 |
olle |
var option = new Option(name, item.id, selected, selected); |
5060 |
29 Oct 18 |
olle |
option.item = item; |
5060 |
29 Oct 18 |
olle |
if (item.yellowLabel) |
5060 |
29 Oct 18 |
olle |
62 |
{ |
5060 |
29 Oct 18 |
olle |
option.className = 'yellow'; |
5060 |
29 Oct 18 |
olle |
64 |
} |
5060 |
29 Oct 18 |
olle |
sourceItemList.options[sourceItemList.length] = option; |
5060 |
29 Oct 18 |
olle |
66 |
} |
5060 |
29 Oct 18 |
olle |
istat.sourceItemsOnChange(); |
5060 |
29 Oct 18 |
olle |
68 |
} |
5060 |
29 Oct 18 |
olle |
else |
5060 |
29 Oct 18 |
olle |
70 |
{ |
5060 |
29 Oct 18 |
olle |
Wizard.setFatalError('No sectioned FFPE block items available.'); |
5060 |
29 Oct 18 |
olle |
return; |
5060 |
29 Oct 18 |
olle |
73 |
} |
5060 |
29 Oct 18 |
olle |
74 |
|
5060 |
29 Oct 18 |
olle |
Wizard.setCurrentStep(1); |
5060 |
29 Oct 18 |
olle |
Doc.show('step-1'); |
5060 |
29 Oct 18 |
olle |
Doc.show('gonext'); |
5060 |
29 Oct 18 |
olle |
78 |
} |
5060 |
29 Oct 18 |
olle |
79 |
|
5060 |
29 Oct 18 |
olle |
istat.sourceItemsOnChange = function() |
5060 |
29 Oct 18 |
olle |
81 |
{ |
5060 |
29 Oct 18 |
olle |
sourceItemListIsValid = false; |
5060 |
29 Oct 18 |
olle |
Wizard.setInputStatus('extractSourceItems'); |
5060 |
29 Oct 18 |
olle |
84 |
|
5060 |
29 Oct 18 |
olle |
var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
var sourceItemList = frm.extractSourceItems; |
5060 |
29 Oct 18 |
olle |
87 |
|
5060 |
29 Oct 18 |
olle |
var numSelected = 0; |
5060 |
29 Oct 18 |
olle |
for (var i = 0; i < sourceItemList.length; i++) |
5060 |
29 Oct 18 |
olle |
90 |
{ |
5060 |
29 Oct 18 |
olle |
if (sourceItemList[i].selected) numSelected++; |
5060 |
29 Oct 18 |
olle |
92 |
} |
5060 |
29 Oct 18 |
olle |
93 |
|
5060 |
29 Oct 18 |
olle |
if (numSelected < 1) |
5060 |
29 Oct 18 |
olle |
95 |
{ |
5060 |
29 Oct 18 |
olle |
Wizard.setInputStatus('extractSourceItems', 'invalid', 'Must select a number of FFPE block items.'); |
5060 |
29 Oct 18 |
olle |
return; |
5060 |
29 Oct 18 |
olle |
98 |
} |
5060 |
29 Oct 18 |
olle |
99 |
|
5060 |
29 Oct 18 |
olle |
sourceItemListIsValid = true; |
5060 |
29 Oct 18 |
olle |
Wizard.setInputStatus('extractSourceItems', 'valid'); |
5060 |
29 Oct 18 |
olle |
102 |
} |
5060 |
29 Oct 18 |
olle |
103 |
|
5060 |
29 Oct 18 |
olle |
istat.validateStep1 = function(event) |
5060 |
29 Oct 18 |
olle |
105 |
{ |
5060 |
29 Oct 18 |
olle |
if (!sourceItemListIsValid) |
5060 |
29 Oct 18 |
olle |
107 |
{ |
5060 |
29 Oct 18 |
olle |
event.preventDefault(); |
5060 |
29 Oct 18 |
olle |
109 |
} |
5060 |
29 Oct 18 |
olle |
var valid = true; |
5060 |
29 Oct 18 |
olle |
111 |
} |
5060 |
29 Oct 18 |
olle |
112 |
|
5060 |
29 Oct 18 |
olle |
istat.initializeStep2 = function() |
5060 |
29 Oct 18 |
olle |
114 |
{ |
5060 |
29 Oct 18 |
olle |
var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
var ffpeBlockList = istat.getSelectedItemsList(); |
5060 |
29 Oct 18 |
olle |
117 |
|
5060 |
29 Oct 18 |
olle |
Doc.addClass('extractSourceItems', 'disabled'); |
5060 |
29 Oct 18 |
olle |
119 |
|
5060 |
29 Oct 18 |
olle |
var nofBlocks = ffpeBlockList.length; |
5114 |
20 Nov 18 |
olle |
121 |
|
5060 |
29 Oct 18 |
olle |
var html = ''; |
5060 |
29 Oct 18 |
olle |
123 |
|
5060 |
29 Oct 18 |
olle |
124 |
/* |
5060 |
29 Oct 18 |
olle |
// Add buttons for adding standard comments for all FFPE blocks |
5060 |
29 Oct 18 |
olle |
html += '<tr class="section-header">'; |
5060 |
29 Oct 18 |
olle |
html += '<td colspan="4">Standard comments</td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
129 |
|
5060 |
29 Oct 18 |
olle |
html += '<tr class="align-top">'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="subprompt"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td><div class="button basicbutton interactable" id="addCarvedOutComment" style="font-weight: normal;">Add "Utkarvad" (Carved out)</div></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="status" id="addCarvedOutComment.status"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="help"><span id="addCarvedOutComment.message" class="message"></span>Click button to add standard comment for all items.</td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
136 |
|
5060 |
29 Oct 18 |
olle |
html += '<tr class="align-top">'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="subprompt"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td><div class="button basicbutton interactable" id="addMnbComment" style="font-weight: normal;">Add "MNB" (Medium needle biopsy)</div></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="status" id="addMnbComment.status"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="help"><span id="addMnbComment.message" class="message"></span>Click button to add standard comment for all items.</td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
143 |
*/ |
5060 |
29 Oct 18 |
olle |
144 |
|
5060 |
29 Oct 18 |
olle |
for (var i=0; i < nofBlocks; i++) |
5060 |
29 Oct 18 |
olle |
146 |
{ |
5126 |
21 Nov 18 |
olle |
var ffpeBlockName = ffpeBlockList[i].name; |
5126 |
21 Nov 18 |
olle |
var ffpeSectionName = ffpeBlockName + '.s'; |
5060 |
29 Oct 18 |
olle |
var pad = ffpeBlockList[i].pad; |
5114 |
20 Nov 18 |
olle |
var materialNumber = ffpeBlockList[i].materialNumber; |
5060 |
29 Oct 18 |
olle |
var yellowLabelCheck = ''; |
5060 |
29 Oct 18 |
olle |
if (ffpeBlockList[i].yellowLabel == 'yellow') |
5060 |
29 Oct 18 |
olle |
153 |
{ |
5060 |
29 Oct 18 |
olle |
yellowLabelCheck = 'checked'; |
5060 |
29 Oct 18 |
olle |
155 |
} |
5060 |
29 Oct 18 |
olle |
var operatorDeliveryComment = ffpeBlockList[i].operatorDeliveryComment; |
5060 |
29 Oct 18 |
olle |
//alert("ffpe_section_registration_alt_rec.js::initializeStep2(): i = " + i + " ffpeSectionName = " + ffpeSectionName + " pad = " + pad + " yellowLabelCheck = " + yellowLabelCheck); |
5060 |
29 Oct 18 |
olle |
//var tubeIdentifier = 'TubeId' + blockName + i; |
5060 |
29 Oct 18 |
olle |
var tubeIdentifier = ffpeSectionName; |
5060 |
29 Oct 18 |
olle |
160 |
|
5060 |
29 Oct 18 |
olle |
html += '<tr class="section-header">'; |
5060 |
29 Oct 18 |
olle |
html += '<td colspan="4">FFPE section '+ffpeSectionName+'</td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
164 |
|
5060 |
29 Oct 18 |
olle |
var padMsg = 'PAD number for '+ffpeSectionName+'.'; |
5114 |
20 Nov 18 |
olle |
var materialNumberMsg = 'Material number (FFPE block number) for '+ffpeSectionName+'.'; |
5060 |
29 Oct 18 |
olle |
var yellowLabelMsg = 'Assigned yellow label for '+ffpeSectionName+' (selected for processing).'; |
5060 |
29 Oct 18 |
olle |
var nofSectionsMsg = 'Number of sections for '+ffpeSectionName+'.'; |
5832 |
21 Feb 20 |
olle |
//var pctViabTumourCellsMsg = '% Viable tumour cells for '+ffpeSectionName+'.'; |
5060 |
29 Oct 18 |
olle |
var opDelCmtMsg = 'In this field, enter information specific for for '+ffpeSectionName+'.'; |
5060 |
29 Oct 18 |
olle |
var disabledAttribute = ''; |
5060 |
29 Oct 18 |
olle |
172 |
|
5060 |
29 Oct 18 |
olle |
// PAD number (info only) |
5060 |
29 Oct 18 |
olle |
html += '<tr>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="subprompt">PAD</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td>'+pad+'</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="status" id="pad.'+i+'.status"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="help"><span id="pad.'+i+'.message" class="message"></span>'+padMsg+'<span id="pad.'+i+'.message" class="message"></span></td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
180 |
|
5114 |
20 Nov 18 |
olle |
// Material number (info only) |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">Material number</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td>'+materialNumber+'</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="materialNumber.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="materialNumber.'+i+'.message" class="message"></span>'+materialNumberMsg+'<span id="pad.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
188 |
|
5060 |
29 Oct 18 |
olle |
// Yellow label check box (info only) |
5060 |
29 Oct 18 |
olle |
html += '<tr>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="subprompt">Selected for processing</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="input">'; |
5060 |
29 Oct 18 |
olle |
html += '<label id="yellowLabel.'+i+'"><input type="checkbox" name="yellowLabel.'+i+'" id="yellowLabel.'+i+'" '+yellowLabelCheck+' '+disabledAttribute+' disabled>Yellow label</label>'; |
5060 |
29 Oct 18 |
olle |
html += '</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="status" id="yellowLabel.'+i+'.status"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="help"><span id="yellowLabel.'+i+'.message" class="message"></span>'+yellowLabelMsg+'<span id="yellowLabel.'+i+'.message" class="message"></span></td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
198 |
|
5114 |
20 Nov 18 |
olle |
var tubeContentTypeNameInternal = 'FFPE section'; |
5114 |
20 Nov 18 |
olle |
var tubeContentType = 'FFPE section'; |
5114 |
20 Nov 18 |
olle |
var tubeContentTypeName = 'Specimen'; |
5114 |
20 Nov 18 |
olle |
var tubeName = ffpeSectionName; |
5114 |
20 Nov 18 |
olle |
var extractsFromFirstSpecimenOnly = false; |
5114 |
20 Nov 18 |
olle |
204 |
|
5114 |
20 Nov 18 |
olle |
var boxMsg = 'No storage space allocated for specimen; all amount expected to be used.'; |
5137 |
22 Nov 18 |
olle |
var dnaBoxMsg = 'Box-number and position where the DNA extract will be placed.'; |
5137 |
22 Nov 18 |
olle |
var rnaBoxMsg = 'Box-number and position where the RNA extract will be placed.'; |
5137 |
22 Nov 18 |
olle |
var heGlassFBoxMsg = 'Box-number and position where the H&E glass "F" will be placed.'; |
5137 |
22 Nov 18 |
olle |
var heGlassEBoxMsg = 'Box-number and position where the H&E glass "E" will be placed.'; |
5114 |
20 Nov 18 |
olle |
var disabledAttribute = ''; |
5832 |
21 Feb 20 |
olle |
//var pctTumourCellsFMsg = '% Tumour cells for '+ffpeSectionName+'.F.' |
5832 |
21 Feb 20 |
olle |
//var pctTumourCellsEMsg = '% Tumour cells for '+ffpeSectionName+'.E.' |
5114 |
20 Nov 18 |
olle |
213 |
|
5114 |
20 Nov 18 |
olle |
214 |
/* |
5060 |
29 Oct 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">'+tubeContentTypeName+' '+tubeName+' '+'Box</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="box.'+i+'" id="box.'+i+'" style="width: 12em;" maxlength="12"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Row<input type="text" name="row.'+i+'" id="row.'+i+'" style="text-transform:uppercase; width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Column<input type="text" name="column.'+i+'" id="column.'+i+'" style="width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5060 |
29 Oct 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="box.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="box.'+i+'.message" class="message"></span>'+boxMsg+'<span id="position.'+i+'.message" class="message"></span></td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
225 |
*/ |
5060 |
29 Oct 18 |
olle |
226 |
|
5114 |
20 Nov 18 |
olle |
disabledAttribute = ''; |
5114 |
20 Nov 18 |
olle |
if (i == 0 || !extractsFromFirstSpecimenOnly) |
5114 |
20 Nov 18 |
olle |
229 |
{ |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">DNA extract'+' '+tubeName+'.d '+'Box</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="dnaBox.'+i+'" id="dnaBox.'+i+'" style="width: 12em;" maxlength="12"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Row<input type="text" name="dnaRow.'+i+'" id="dnaRow.'+i+'" style="text-transform:uppercase; width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Column<input type="text" name="dnaColumn.'+i+'" id="dnaColumn.'+i+'" style="width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="dnaBox.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="dnaBox.'+i+'.message" class="message"></span>'+dnaBoxMsg+'<span id="dnaPosition.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
240 |
|
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">RNA extract'+' '+tubeName+'.r '+'Box</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="rnaBox.'+i+'" id="rnaBox.'+i+'" style="width: 12em;" maxlength="12"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Row<input type="text" name="rnaRow.'+i+'" id="rnaRow.'+i+'" style="text-transform:uppercase; width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Column<input type="text" name="rnaColumn.'+i+'" id="rnaColumn.'+i+'" style="width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="rnaBox.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="rnaBox.'+i+'.message" class="message"></span>'+rnaBoxMsg+'<span id="rnaPosition.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
251 |
} |
5114 |
20 Nov 18 |
olle |
252 |
|
5114 |
20 Nov 18 |
olle |
// Number of sections |
5060 |
29 Oct 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">Number of sections</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="input">'; |
5214 |
09 Jan 19 |
olle |
//html += '<input type="text" name="nofSections.'+i+'" id="nofSections.'+i+'" style="width: 3em;" maxlength="2" value="1" '+disabledAttribute+'>'; |
5214 |
09 Jan 19 |
olle |
html += '<input type="text" name="nofSections.'+i+'" id="nofSections.'+i+'" style="width: 3em;" maxlength="2" value="" '+disabledAttribute+'>'; |
5060 |
29 Oct 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="nofSections.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="nofSections.'+i+'.message" class="message"></span>'+nofSectionsMsg+'<span id="nofSections.'+i+'.message" class="message"></span></td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5060 |
29 Oct 18 |
olle |
263 |
|
5060 |
29 Oct 18 |
olle |
// Operator delivery comment |
5060 |
29 Oct 18 |
olle |
html += '<tr class="align-top">'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="subprompt">Operator delivery comment</td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="input"><textarea rows="3" name="comment.'+i+'" id="comment.'+i+'">'+operatorDeliveryComment+'</textarea></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="status" id="comment.'+i+'.status"></td>'; |
5060 |
29 Oct 18 |
olle |
html += '<td class="help"><span id="comment.'+i+'.message" class="message"></span>'+opDelCmtMsg+'</td>'; |
5060 |
29 Oct 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
271 |
|
5114 |
20 Nov 18 |
olle |
// H&E glass "Front" |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5126 |
21 Nov 18 |
olle |
html += '<td class="subprompt">H&E glass'+' '+ffpeBlockName+'.F '+'Box</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="heGlassFBox.'+i+'" id="heGlassFBox.'+i+'" style="width: 12em;" maxlength="12"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
//html += ' Tray<input type="text" name="heGlassFTray.'+i+'" id="heGlassFTray.'+i+'" style="text-transform:uppercase; width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Position<input type="text" name="heGlassFPosition.'+i+'" id="heGlassFPosition.'+i+'" style="width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="heGlassFBox.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="heGlassFBox.'+i+'.message" class="message"></span>'+heGlassFBoxMsg+'<span id="heGlassFPosition.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
283 |
|
5832 |
21 Feb 20 |
olle |
284 |
/* |
5114 |
20 Nov 18 |
olle |
// H&E glass "Front" percentage of tumor cells |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">% Tumour cells</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="pctTumourCellsF.'+i+'" id="pctTumourCellsF.'+i+'" style="width: 3em;" maxlength="3"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="pctTumourCellsF.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="pctTumourCellsF.'+i+'.message" class="message"></span>'+pctTumourCellsFMsg+'<span id="pctTumourCellsF.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5832 |
21 Feb 20 |
olle |
294 |
*/ |
5114 |
20 Nov 18 |
olle |
295 |
|
5114 |
20 Nov 18 |
olle |
// H&E glass "End" |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5126 |
21 Nov 18 |
olle |
html += '<td class="subprompt">H&E glass'+' '+ffpeBlockName+'.E '+'Box</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="heGlassEBox.'+i+'" id="heGlassEBox.'+i+'" style="width: 12em;" maxlength="12"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
//html += ' Tray<input type="text" name="heGlassETray.'+i+'" id="heGlassETray.'+i+'" style="text-transform:uppercase; width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += ' Position<input type="text" name="heGlassEPosition.'+i+'" id="heGlassEPosition.'+i+'" style="width: 3em;" maxlength="2"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="heGlassEBox.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="heGlassEBox.'+i+'.message" class="message"></span>'+heGlassEBoxMsg+'<span id="heGlassEPosition.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5114 |
20 Nov 18 |
olle |
307 |
|
5832 |
21 Feb 20 |
olle |
308 |
/* |
5114 |
20 Nov 18 |
olle |
// H&E glass "End" percentage of tumor cells |
5114 |
20 Nov 18 |
olle |
html += '<tr>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="subprompt">% Tumour cells</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="input">'; |
5114 |
20 Nov 18 |
olle |
html += '<input type="text" name="pctTumourCellsE.'+i+'" id="pctTumourCellsE.'+i+'" style="width: 3em;" maxlength="3"'+disabledAttribute+'>'; |
5114 |
20 Nov 18 |
olle |
html += '</td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="status" id="pctTumourCellsE.'+i+'.status"></td>'; |
5114 |
20 Nov 18 |
olle |
html += '<td class="help"><span id="pctTumourCellsE.'+i+'.message" class="message"></span>'+pctTumourCellsEMsg+'<span id="pctTumourCellsE.'+i+'.message" class="message"></span></td>'; |
5114 |
20 Nov 18 |
olle |
html += '</tr>'; |
5832 |
21 Feb 20 |
olle |
318 |
*/ |
5060 |
29 Oct 18 |
olle |
319 |
} |
5060 |
29 Oct 18 |
olle |
Doc.element('ffpe-sections').innerHTML = html; |
5060 |
29 Oct 18 |
olle |
321 |
|
5060 |
29 Oct 18 |
olle |
322 |
/* |
5060 |
29 Oct 18 |
olle |
// Add click handlers for buttons for adding standard comments for all specimens/RNA/DNA |
5060 |
29 Oct 18 |
olle |
var addCarvedOutCommentGeneralButton = Doc.element('addCarvedOutComment'); |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler(addCarvedOutCommentGeneralButton, istat.addCommentGeneral, {'nofBlocks': nofBlocks, 'text-field': 'comment.', 'text': 'Utkarvad.'}); |
5060 |
29 Oct 18 |
olle |
var addMnbCommentGeneralButton = Doc.element('addMnbComment'); |
5060 |
29 Oct 18 |
olle |
Buttons.addClickHandler(addMnbCommentGeneralButton, istat.addCommentGeneral, {'nofBlocks': nofBlocks, 'text-field': 'comment.', 'text': 'MNB.'}); |
5060 |
29 Oct 18 |
olle |
328 |
*/ |
5060 |
29 Oct 18 |
olle |
329 |
|
5060 |
29 Oct 18 |
olle |
Doc.hide('gonext'); |
5060 |
29 Oct 18 |
olle |
Doc.show('goregister'); |
5060 |
29 Oct 18 |
olle |
Doc.show('gocancel'); |
5060 |
29 Oct 18 |
olle |
333 |
|
5114 |
20 Nov 18 |
olle |
//frm['nofSections.0'].focus(); |
5114 |
20 Nov 18 |
olle |
Wizard.setCurrentStep(2); |
5060 |
29 Oct 18 |
olle |
Doc.show('step-2'); |
5114 |
20 Nov 18 |
olle |
337 |
|
5114 |
20 Nov 18 |
olle |
var storageBoxSuffix = '_sp'; |
5114 |
20 Nov 18 |
olle |
339 |
|
5114 |
20 Nov 18 |
olle |
//var url = '../SpecimenTubeRegistration.servlet?ID='+App.getSessionId(); |
5114 |
20 Nov 18 |
olle |
var url = '../BaseLineRegistration.servlet?ID='+App.getSessionId(); |
5114 |
20 Nov 18 |
olle |
url += '&cmd=FindStoragePositions'; |
5114 |
20 Nov 18 |
olle |
//url += '&nofTubes='+frm.nofTubes.value; |
5114 |
20 Nov 18 |
olle |
url += '&nofTubes='+nofBlocks; |
5114 |
20 Nov 18 |
olle |
url += '&storageBoxSuffix='+storageBoxSuffix; |
5114 |
20 Nov 18 |
olle |
url += '&extractsFromFirstSpecimenOnly='+extractsFromFirstSpecimenOnly; |
5114 |
20 Nov 18 |
olle |
347 |
|
5114 |
20 Nov 18 |
olle |
Wizard.showLoadingAnimation('Looking for empty box positions...'); |
5114 |
20 Nov 18 |
olle |
Wizard.asyncJsonRequest(url, istat.storagePositionsLoaded); |
5060 |
29 Oct 18 |
olle |
350 |
} |
5060 |
29 Oct 18 |
olle |
351 |
|
5060 |
29 Oct 18 |
olle |
istat.addCommentGeneral = function(event) |
5060 |
29 Oct 18 |
olle |
353 |
{ |
5060 |
29 Oct 18 |
olle |
var nofBlocks = Data.get(event.currentTarget, 'nofBlocks', event.currentTarget.id); |
5060 |
29 Oct 18 |
olle |
var textFieldBase = Data.get(event.currentTarget, 'text-field', event.currentTarget.id); |
5060 |
29 Oct 18 |
olle |
// Get standard comment text to add |
5060 |
29 Oct 18 |
olle |
var text = Data.get(event.currentTarget, 'text', event.currentTarget.id); |
5060 |
29 Oct 18 |
olle |
// Loop over comment fields to update |
5060 |
29 Oct 18 |
olle |
for (var i=0; i < nofBlocks; i++) |
5060 |
29 Oct 18 |
olle |
360 |
{ |
5060 |
29 Oct 18 |
olle |
var textField = Doc.element(textFieldBase+i); |
5060 |
29 Oct 18 |
olle |
if (textField) |
5060 |
29 Oct 18 |
olle |
363 |
{ |
5060 |
29 Oct 18 |
olle |
if (text && text != '') |
5060 |
29 Oct 18 |
olle |
365 |
{ |
5060 |
29 Oct 18 |
olle |
// Check if current comment field already contains text |
5060 |
29 Oct 18 |
olle |
if (textField.value != '') |
5060 |
29 Oct 18 |
olle |
368 |
{ |
5060 |
29 Oct 18 |
olle |
// Add space to text in current comment field |
5060 |
29 Oct 18 |
olle |
textField.value += ' '; |
5060 |
29 Oct 18 |
olle |
371 |
} |
5060 |
29 Oct 18 |
olle |
// Add standard comment text |
5060 |
29 Oct 18 |
olle |
textField.value += text; |
5060 |
29 Oct 18 |
olle |
374 |
} |
5060 |
29 Oct 18 |
olle |
375 |
} |
5060 |
29 Oct 18 |
olle |
376 |
} |
5060 |
29 Oct 18 |
olle |
377 |
} |
5060 |
29 Oct 18 |
olle |
378 |
|
5114 |
20 Nov 18 |
olle |
istat.storagePositionsLoaded = function(response) |
5114 |
20 Nov 18 |
olle |
380 |
{ |
5114 |
20 Nov 18 |
olle |
var freeWells = response.wells; |
5114 |
20 Nov 18 |
olle |
//alert("ffpe_section_registration_alt_rec.js::storagePositionsLoaded(): freeWells = " + JSON.stringify(freeWells)); |
5114 |
20 Nov 18 |
olle |
var ihc = response.ihc; |
5114 |
20 Nov 18 |
olle |
var heglass = response.heglass; |
5114 |
20 Nov 18 |
olle |
//alert("ffpe_section_registration_alt_rec.js::storagePositionsLoaded(): heglass = " + JSON.stringify(heglass)); |
5114 |
20 Nov 18 |
olle |
var frm = document.forms['meludi']; |
5114 |
20 Nov 18 |
olle |
//var tubeContentType = frm.tubeContentType.value; |
5114 |
20 Nov 18 |
olle |
var tubeContentType = 'Specimen'; |
5114 |
20 Nov 18 |
olle |
//var nofTubes = parseInt(frm.nofTubes.value); |
5114 |
20 Nov 18 |
olle |
// Free wells are found for both DNA and RNA for each specimen tube |
5114 |
20 Nov 18 |
olle |
var nofTubes = freeWells.length/2; |
5114 |
20 Nov 18 |
olle |
//var extractsFromFirstSpecimenOnly = frm.extractsFromFirstSpecimenOnlyCB.checked; |
5114 |
20 Nov 18 |
olle |
var extractsFromFirstSpecimenOnly = false; |
5114 |
20 Nov 18 |
olle |
394 |
|
5114 |
20 Nov 18 |
olle |
// No storage space is allocated for first specimen, |
5114 |
20 Nov 18 |
olle |
// since all amount is expected to be used for analysis. |
5114 |
20 Nov 18 |
olle |
// Specimen tube with i == 0 is therefore skipped. |
5114 |
20 Nov 18 |
olle |
if (tubeContentType == 'Specimen') |
5114 |
20 Nov 18 |
olle |
399 |
{ |
5114 |
20 Nov 18 |
olle |
for (var i = 0; i < nofTubes; i++) |
5114 |
20 Nov 18 |
olle |
401 |
{ |
5114 |
20 Nov 18 |
olle |
//wellIndex = 3*i; |
5114 |
20 Nov 18 |
olle |
wellIndex = 2*i; |
5114 |
20 Nov 18 |
olle |
var specWell = null; |
5114 |
20 Nov 18 |
olle |
405 |
/* |
5114 |
20 Nov 18 |
olle |
if (i > 0) |
5114 |
20 Nov 18 |
olle |
407 |
{ |
5114 |
20 Nov 18 |
olle |
specWell = freeWells[wellIndex]; |
5114 |
20 Nov 18 |
olle |
if (!specWell || specWell == '') |
5114 |
20 Nov 18 |
olle |
410 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('box.'+i, 'invalid', 'Missing box'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
413 |
} |
5114 |
20 Nov 18 |
olle |
414 |
} |
5114 |
20 Nov 18 |
olle |
415 |
*/ |
5114 |
20 Nov 18 |
olle |
var dnaWell = null; |
5114 |
20 Nov 18 |
olle |
if (i == 0 || !extractsFromFirstSpecimenOnly) |
5114 |
20 Nov 18 |
olle |
418 |
{ |
5114 |
20 Nov 18 |
olle |
//dnaWell = freeWells[wellIndex+1]; |
5114 |
20 Nov 18 |
olle |
dnaWell = freeWells[wellIndex]; |
5114 |
20 Nov 18 |
olle |
//alert("ffpe_section_registration_alt_rec.js::storagePositionsLoaded(): i = " + i + " wellIndex = " + wellIndex + " dnaWell = " + JSON.stringify(dnaWell)); |
5114 |
20 Nov 18 |
olle |
if (!dnaWell || dnaWell == '') |
5114 |
20 Nov 18 |
olle |
423 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('dnaBox.'+i, 'invalid', 'Missing box'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
426 |
} |
5114 |
20 Nov 18 |
olle |
427 |
} |
5114 |
20 Nov 18 |
olle |
var rnaWell = null; |
5114 |
20 Nov 18 |
olle |
if (i == 0 || !extractsFromFirstSpecimenOnly) |
5114 |
20 Nov 18 |
olle |
430 |
{ |
5114 |
20 Nov 18 |
olle |
//rnaWell = freeWells[wellIndex+2]; |
5114 |
20 Nov 18 |
olle |
rnaWell = freeWells[wellIndex+1]; |
5114 |
20 Nov 18 |
olle |
if (!rnaWell || rnaWell == '') |
5114 |
20 Nov 18 |
olle |
434 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('rnaBox.'+i, 'invalid', 'Missing box'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
437 |
} |
5114 |
20 Nov 18 |
olle |
438 |
} |
5114 |
20 Nov 18 |
olle |
var heGlassFBox = heglass[wellIndex]; |
5114 |
20 Nov 18 |
olle |
var heGlassEBox = heglass[wellIndex+1]; |
5114 |
20 Nov 18 |
olle |
441 |
|
5114 |
20 Nov 18 |
olle |
// Update form fields for storage plates |
5114 |
20 Nov 18 |
olle |
443 |
/* |
5114 |
20 Nov 18 |
olle |
if (specWell) |
5114 |
20 Nov 18 |
olle |
445 |
{ |
5114 |
20 Nov 18 |
olle |
frm['box.'+i].value = specWell.bioPlate.name; |
5114 |
20 Nov 18 |
olle |
frm['row.'+i].value = Meludi.wellToAlpha(specWell.row); |
5114 |
20 Nov 18 |
olle |
frm['column.'+i].value = specWell.column+1; |
5114 |
20 Nov 18 |
olle |
449 |
} |
5114 |
20 Nov 18 |
olle |
450 |
*/ |
5114 |
20 Nov 18 |
olle |
451 |
|
5114 |
20 Nov 18 |
olle |
if (dnaWell) |
5114 |
20 Nov 18 |
olle |
453 |
{ |
5114 |
20 Nov 18 |
olle |
frm['dnaBox.'+i].value = dnaWell.bioPlate.name; |
5114 |
20 Nov 18 |
olle |
frm['dnaRow.'+i].value = Meludi.wellToAlpha(dnaWell.row); |
5114 |
20 Nov 18 |
olle |
frm['dnaColumn.'+i].value = dnaWell.column+1; |
5114 |
20 Nov 18 |
olle |
457 |
} |
5114 |
20 Nov 18 |
olle |
458 |
|
5114 |
20 Nov 18 |
olle |
if (rnaWell) |
5114 |
20 Nov 18 |
olle |
460 |
{ |
5114 |
20 Nov 18 |
olle |
frm['rnaBox.'+i].value = rnaWell.bioPlate.name; |
5114 |
20 Nov 18 |
olle |
frm['rnaRow.'+i].value = Meludi.wellToAlpha(rnaWell.row); |
5114 |
20 Nov 18 |
olle |
frm['rnaColumn.'+i].value = rnaWell.column+1; |
5114 |
20 Nov 18 |
olle |
464 |
} |
5114 |
20 Nov 18 |
olle |
465 |
|
5114 |
20 Nov 18 |
olle |
if (heGlassFBox) |
5114 |
20 Nov 18 |
olle |
467 |
{ |
5114 |
20 Nov 18 |
olle |
frm['heGlassFBox.'+i].value = heGlassFBox.storageBox; |
5114 |
20 Nov 18 |
olle |
frm['heGlassFPosition.'+i].value = heGlassFBox.position; |
5114 |
20 Nov 18 |
olle |
470 |
} |
5114 |
20 Nov 18 |
olle |
471 |
|
5114 |
20 Nov 18 |
olle |
if (heGlassEBox) |
5114 |
20 Nov 18 |
olle |
473 |
{ |
5114 |
20 Nov 18 |
olle |
frm['heGlassEBox.'+i].value = heGlassEBox.storageBox; |
5114 |
20 Nov 18 |
olle |
frm['heGlassEPosition.'+i].value = heGlassEBox.position; |
5114 |
20 Nov 18 |
olle |
476 |
} |
5114 |
20 Nov 18 |
olle |
477 |
|
5114 |
20 Nov 18 |
olle |
// Move focus to next field |
5114 |
20 Nov 18 |
olle |
479 |
/* |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'row.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('row.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'column.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'dnaBox.'+i }); |
5114 |
20 Nov 18 |
olle |
483 |
*/ |
5114 |
20 Nov 18 |
olle |
484 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaBox.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'dnaRow.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaRow.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'dnaColumn.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaColumn.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'rnaBox.'+i }); |
5114 |
20 Nov 18 |
olle |
488 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaBox.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'rnaRow.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaRow.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'rnaColumn.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaColumn.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'nofSections.'+i }); |
5114 |
20 Nov 18 |
olle |
492 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'comment.'+i }); |
5114 |
20 Nov 18 |
olle |
494 |
|
5114 |
20 Nov 18 |
olle |
// Form validation |
5114 |
20 Nov 18 |
olle |
496 |
/* |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'change', istat.wellOnChange, { 'boxtype': 'Specimen', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('row.'+i, 'change', istat.wellOnChange, { 'boxtype': 'Specimen', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'change', istat.wellOnChange, { 'boxtype': 'Specimen', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'keyup', istat.boxOnKeyUp, { 'boxtype': 'Specimen'}); |
5114 |
20 Nov 18 |
olle |
502 |
*/ |
5114 |
20 Nov 18 |
olle |
503 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaColumn.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaBox.'+i, 'change', istat.wellOnChange, { 'boxtype': 'DNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaRow.'+i, 'change', istat.wellOnChange, { 'boxtype': 'DNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaColumn.'+i, 'change', istat.wellOnChange, { 'boxtype': 'DNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('dnaBox.'+i, 'keyup', istat.boxOnKeyUp, { 'boxtype': 'DNA'}); |
5114 |
20 Nov 18 |
olle |
509 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaColumn.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaBox.'+i, 'change', istat.wellOnChange, { 'boxtype': 'RNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaRow.'+i, 'change', istat.wellOnChange, { 'boxtype': 'RNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaColumn.'+i, 'change', istat.wellOnChange, { 'boxtype': 'RNA', 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('rnaBox.'+i, 'keyup', istat.boxOnKeyUp, { 'boxtype': 'RNA'}); |
5114 |
20 Nov 18 |
olle |
515 |
|
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'change', istat.nofSectionsOnChange, { 'index': i }); |
5114 |
20 Nov 18 |
olle |
518 |
|
5114 |
20 Nov 18 |
olle |
wellIsValid[i] = true; |
5114 |
20 Nov 18 |
olle |
dnaWellIsValid[i] = true; |
5114 |
20 Nov 18 |
olle |
rnaWellIsValid[i] = true; |
5114 |
20 Nov 18 |
olle |
522 |
/* |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('position.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
524 |
*/ |
5114 |
20 Nov 18 |
olle |
525 |
/* |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('box.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
527 |
*/ |
5114 |
20 Nov 18 |
olle |
if (i == 0 || !extractsFromFirstSpecimenOnly) |
5114 |
20 Nov 18 |
olle |
529 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('dnaBox.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('rnaBox.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
532 |
} |
5114 |
20 Nov 18 |
olle |
if (tubeContentType == 'Specimen') |
5114 |
20 Nov 18 |
olle |
534 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
536 |
} |
5114 |
20 Nov 18 |
olle |
537 |
} |
5114 |
20 Nov 18 |
olle |
538 |
} |
5114 |
20 Nov 18 |
olle |
else if (tubeContentType == 'DNA' || tubeContentType == 'RNA' || tubeContentType == 'DNA_RNA') |
5114 |
20 Nov 18 |
olle |
540 |
{ |
5114 |
20 Nov 18 |
olle |
for (var i = 0; i < nofTubes; i++) |
5114 |
20 Nov 18 |
olle |
542 |
{ |
5114 |
20 Nov 18 |
olle |
var wellIndex = i; |
5114 |
20 Nov 18 |
olle |
var well = freeWells[wellIndex]; |
5114 |
20 Nov 18 |
olle |
if (!well || well == '') |
5114 |
20 Nov 18 |
olle |
546 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('box.'+i, 'invalid', 'Missing box'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
549 |
} |
5114 |
20 Nov 18 |
olle |
frm['box.'+i].value = well.bioPlate.name; |
5114 |
20 Nov 18 |
olle |
frm['row.'+i].value = Meludi.wellToAlpha(well.row); |
5114 |
20 Nov 18 |
olle |
frm['column.'+i].value = well.column+1; |
5114 |
20 Nov 18 |
olle |
553 |
|
5114 |
20 Nov 18 |
olle |
// Move focus to next field |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'row.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('row.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'column.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'nofSections.'+i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'keypress', Wizard.focusOnEnter, { 'next-focus': 'comment.'+i }); |
5114 |
20 Nov 18 |
olle |
559 |
|
5114 |
20 Nov 18 |
olle |
// Form validation |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'change', istat.wellOnChange, { 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('row.'+i, 'change', istat.wellOnChange, { 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('column.'+i, 'change', istat.wellOnChange, { 'index': i }); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('box.'+i, 'keyup', istat.boxOnKeyUp); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'keypress', Events.integerOnly); |
5114 |
20 Nov 18 |
olle |
Events.addEventHandler('nofSections.'+i, 'change', istat.nofSectionsOnChange, { 'index': i }); |
5114 |
20 Nov 18 |
olle |
568 |
|
5114 |
20 Nov 18 |
olle |
wellIsValid[i] = true; |
5114 |
20 Nov 18 |
olle |
570 |
/* |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('position.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
572 |
*/ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('box.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
if (tubeContentType == 'Specimen') |
5114 |
20 Nov 18 |
olle |
575 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections.'+i, 'valid'); |
5114 |
20 Nov 18 |
olle |
577 |
} |
5114 |
20 Nov 18 |
olle |
578 |
} |
5114 |
20 Nov 18 |
olle |
579 |
} |
5114 |
20 Nov 18 |
olle |
580 |
} |
5114 |
20 Nov 18 |
olle |
581 |
|
5114 |
20 Nov 18 |
olle |
istat.boxOnKeyUp = function(event) |
5114 |
20 Nov 18 |
olle |
583 |
{ |
5114 |
20 Nov 18 |
olle |
var frm = document.forms['meludi']; |
5114 |
20 Nov 18 |
olle |
var tubeContentType = frm.tubeContentType.value; |
5114 |
20 Nov 18 |
olle |
586 |
|
5114 |
20 Nov 18 |
olle |
var boxType = Data.get(event.currentTarget, 'boxtype'); |
5114 |
20 Nov 18 |
olle |
var index = Data.int(event.currentTarget, 'index'); |
5114 |
20 Nov 18 |
olle |
589 |
|
5114 |
20 Nov 18 |
olle |
// Get box prefix, default is for input tubes |
5114 |
20 Nov 18 |
olle |
var boxPrefix = 'box.'; |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'DNA') |
5114 |
20 Nov 18 |
olle |
593 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'dnaBox.'; |
5114 |
20 Nov 18 |
olle |
595 |
} |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'RNA') |
5114 |
20 Nov 18 |
olle |
597 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'rnaBox.'; |
5114 |
20 Nov 18 |
olle |
599 |
} |
5114 |
20 Nov 18 |
olle |
600 |
|
5114 |
20 Nov 18 |
olle |
// Check box name |
5114 |
20 Nov 18 |
olle |
var boxIsValid = true; |
5114 |
20 Nov 18 |
olle |
var box = frm[boxPrefix+index].value; |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index); |
5114 |
20 Nov 18 |
olle |
// Check for prefix "ML_" |
5114 |
20 Nov 18 |
olle |
if (box.indexOf('ML_') != 0) |
5114 |
20 Nov 18 |
olle |
607 |
{ |
5114 |
20 Nov 18 |
olle |
boxIsValid = false; |
5114 |
20 Nov 18 |
olle |
609 |
} |
5114 |
20 Nov 18 |
olle |
var suffix = '_sp'; |
5114 |
20 Nov 18 |
olle |
if (tubeContentType == 'DNA' || (boxType && boxType == 'DNA')) |
5114 |
20 Nov 18 |
olle |
612 |
{ |
5114 |
20 Nov 18 |
olle |
suffix = '_dna'; |
5114 |
20 Nov 18 |
olle |
614 |
} |
5114 |
20 Nov 18 |
olle |
else if (tubeContentType == 'RNA' || (boxType && boxType == 'RNA')) |
5114 |
20 Nov 18 |
olle |
616 |
{ |
5114 |
20 Nov 18 |
olle |
suffix = '_rna'; |
5114 |
20 Nov 18 |
olle |
618 |
} |
5114 |
20 Nov 18 |
olle |
// Check for suffix |
5114 |
20 Nov 18 |
olle |
if (box.indexOf(suffix) != (box.length - suffix.length)) |
5114 |
20 Nov 18 |
olle |
621 |
{ |
5114 |
20 Nov 18 |
olle |
boxIsValid = false; |
5114 |
20 Nov 18 |
olle |
623 |
} |
5114 |
20 Nov 18 |
olle |
624 |
|
5114 |
20 Nov 18 |
olle |
if (!boxIsValid) |
5114 |
20 Nov 18 |
olle |
626 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', 'Box name must start with "ML_" and end with "'+suffix+'"'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
629 |
} |
5114 |
20 Nov 18 |
olle |
630 |
} |
5114 |
20 Nov 18 |
olle |
631 |
|
5114 |
20 Nov 18 |
olle |
istat.wellOnChange = function(event) |
5114 |
20 Nov 18 |
olle |
633 |
{ |
5114 |
20 Nov 18 |
olle |
var frm = document.forms['meludi']; |
5114 |
20 Nov 18 |
olle |
var target = event.currentTarget; |
5114 |
20 Nov 18 |
olle |
636 |
|
5114 |
20 Nov 18 |
olle |
var boxType = Data.get(target, 'boxtype'); |
5114 |
20 Nov 18 |
olle |
var index = Data.int(target, 'index'); |
5114 |
20 Nov 18 |
olle |
639 |
|
5114 |
20 Nov 18 |
olle |
// Get well position prefixes, default is for input tubes |
5114 |
20 Nov 18 |
olle |
var boxPrefix = 'box.'; |
5114 |
20 Nov 18 |
olle |
var rowPrefix = 'row.'; |
5114 |
20 Nov 18 |
olle |
var columnPrefix = 'column.'; |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'DNA') |
5114 |
20 Nov 18 |
olle |
645 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'dnaBox.'; |
5114 |
20 Nov 18 |
olle |
rowPrefix = 'dnaRow.'; |
5114 |
20 Nov 18 |
olle |
columnPrefix = 'dnaColumn.'; |
5114 |
20 Nov 18 |
olle |
649 |
} |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'RNA') |
5114 |
20 Nov 18 |
olle |
651 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'rnaBox.'; |
5114 |
20 Nov 18 |
olle |
rowPrefix = 'rnaRow.'; |
5114 |
20 Nov 18 |
olle |
columnPrefix = 'rnaColumn.'; |
5114 |
20 Nov 18 |
olle |
655 |
} |
5114 |
20 Nov 18 |
olle |
var box = frm[boxPrefix+index].value; |
5114 |
20 Nov 18 |
olle |
var row = frm[rowPrefix+index].value; |
5114 |
20 Nov 18 |
olle |
var column = frm[columnPrefix+index].value; |
5114 |
20 Nov 18 |
olle |
659 |
|
5114 |
20 Nov 18 |
olle |
//wellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
if (!boxType || boxType == 'Specimen') |
5114 |
20 Nov 18 |
olle |
662 |
{ |
5114 |
20 Nov 18 |
olle |
wellIsValid[index] = false; |
5114 |
20 Nov 18 |
olle |
664 |
} |
5114 |
20 Nov 18 |
olle |
else if (boxType && boxType == 'DNA') |
5114 |
20 Nov 18 |
olle |
666 |
{ |
5114 |
20 Nov 18 |
olle |
dnaWellIsValid[index] = false; |
5114 |
20 Nov 18 |
olle |
668 |
} |
5114 |
20 Nov 18 |
olle |
else if (boxType && boxType == 'RNA') |
5114 |
20 Nov 18 |
olle |
670 |
{ |
5114 |
20 Nov 18 |
olle |
rnaWellIsValid[index] = false; |
5114 |
20 Nov 18 |
olle |
672 |
} |
5114 |
20 Nov 18 |
olle |
else |
5114 |
20 Nov 18 |
olle |
674 |
{ |
5114 |
20 Nov 18 |
olle |
wellIsValid[index] = false; |
5114 |
20 Nov 18 |
olle |
676 |
} |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index); |
5114 |
20 Nov 18 |
olle |
678 |
/* |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('position.'+index); |
5114 |
20 Nov 18 |
olle |
680 |
*/ |
5114 |
20 Nov 18 |
olle |
681 |
|
5114 |
20 Nov 18 |
olle |
if (box == '') |
5114 |
20 Nov 18 |
olle |
683 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', 'Missing box'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
686 |
} |
5114 |
20 Nov 18 |
olle |
687 |
|
5114 |
20 Nov 18 |
olle |
// Position errors are reported on box message line |
5114 |
20 Nov 18 |
olle |
if (row == '') |
5114 |
20 Nov 18 |
olle |
690 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', 'Missing row'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
693 |
} |
5114 |
20 Nov 18 |
olle |
694 |
|
5114 |
20 Nov 18 |
olle |
if (column == '') |
5114 |
20 Nov 18 |
olle |
696 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', 'Missing column'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
699 |
} |
5114 |
20 Nov 18 |
olle |
700 |
|
5114 |
20 Nov 18 |
olle |
// Check for duplicates |
5114 |
20 Nov 18 |
olle |
var nofTubes = parseInt(frm.nofTubes.value); |
5114 |
20 Nov 18 |
olle |
for (var i=0; i < nofTubes; i++) |
5114 |
20 Nov 18 |
olle |
704 |
{ |
5114 |
20 Nov 18 |
olle |
if (i != index) |
5114 |
20 Nov 18 |
olle |
706 |
{ |
5114 |
20 Nov 18 |
olle |
if (box == frm.elements[boxPrefix+i].value && row == frm[rowPrefix+i].value && column == frm[columnPrefix+i].value) |
5114 |
20 Nov 18 |
olle |
708 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', 'The position is already used once in this wizard'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
711 |
} |
5114 |
20 Nov 18 |
olle |
712 |
} |
5114 |
20 Nov 18 |
olle |
713 |
} |
5114 |
20 Nov 18 |
olle |
714 |
|
5114 |
20 Nov 18 |
olle |
//Wizard.setInputStatus('position.'+index, 'checking', 'Checking...'); |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'checking', 'Checking...'); |
5114 |
20 Nov 18 |
olle |
717 |
|
5114 |
20 Nov 18 |
olle |
// Seems to be ok -- check if used by another sample |
5114 |
20 Nov 18 |
olle |
var request = Ajax.getXmlHttpRequest(); |
5114 |
20 Nov 18 |
olle |
var url = '../SpecimenTubeRegistration.servlet?ID='+App.getSessionId(); |
5114 |
20 Nov 18 |
olle |
url += '&cmd=ValidateWell'; |
5114 |
20 Nov 18 |
olle |
url += '&box=' + encodeURIComponent(box); |
5114 |
20 Nov 18 |
olle |
url += '&row=' + encodeURIComponent(row); |
5114 |
20 Nov 18 |
olle |
url += '&column=' + encodeURIComponent(column); |
5114 |
20 Nov 18 |
olle |
725 |
|
5114 |
20 Nov 18 |
olle |
Wizard.asyncJsonRequest(url, function(response) { istat.onBoxValidated(response, boxType, index) } ); |
5114 |
20 Nov 18 |
olle |
727 |
} |
5114 |
20 Nov 18 |
olle |
728 |
|
5114 |
20 Nov 18 |
olle |
istat.onBoxValidated = function(response, boxType, index) |
5114 |
20 Nov 18 |
olle |
730 |
{ |
5114 |
20 Nov 18 |
olle |
// Get well position prefixes, default is for input tubes |
5114 |
20 Nov 18 |
olle |
var boxPrefix = 'box.'; |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'DNA') |
5114 |
20 Nov 18 |
olle |
734 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'dnaBox.'; |
5114 |
20 Nov 18 |
olle |
736 |
} |
5114 |
20 Nov 18 |
olle |
if (boxType && boxType == 'RNA') |
5114 |
20 Nov 18 |
olle |
738 |
{ |
5114 |
20 Nov 18 |
olle |
boxPrefix = 'rnaBox.'; |
5114 |
20 Nov 18 |
olle |
740 |
} |
5114 |
20 Nov 18 |
olle |
741 |
|
5114 |
20 Nov 18 |
olle |
//Wizard.setInputStatus('position.'+index); |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index); |
5114 |
20 Nov 18 |
olle |
if (response.message) |
5114 |
20 Nov 18 |
olle |
745 |
{ |
5114 |
20 Nov 18 |
olle |
//Wizard.setInputStatus(response.box ? 'box.'+index : 'position.'+index, 'invalid', Strings.encodeTags(response.message)); |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'invalid', Strings.encodeTags(response.message)); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
749 |
} |
5114 |
20 Nov 18 |
olle |
750 |
|
5114 |
20 Nov 18 |
olle |
//wellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
if (!boxType || boxType == 'Specimen') |
5114 |
20 Nov 18 |
olle |
753 |
{ |
5114 |
20 Nov 18 |
olle |
wellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
755 |
} |
5114 |
20 Nov 18 |
olle |
else if (boxType && boxType == 'DNA') |
5114 |
20 Nov 18 |
olle |
757 |
{ |
5114 |
20 Nov 18 |
olle |
dnaWellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
759 |
} |
5114 |
20 Nov 18 |
olle |
else if (boxType && boxType == 'RNA') |
5114 |
20 Nov 18 |
olle |
761 |
{ |
5114 |
20 Nov 18 |
olle |
rnaWellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
763 |
} |
5114 |
20 Nov 18 |
olle |
else |
5114 |
20 Nov 18 |
olle |
765 |
{ |
5114 |
20 Nov 18 |
olle |
wellIsValid[index] = true; |
5114 |
20 Nov 18 |
olle |
767 |
} |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus(boxPrefix+index, 'valid'); |
5114 |
20 Nov 18 |
olle |
769 |
/* |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('position.'+index, 'valid'); |
5114 |
20 Nov 18 |
olle |
771 |
*/ |
5114 |
20 Nov 18 |
olle |
772 |
} |
5114 |
20 Nov 18 |
olle |
773 |
|
5114 |
20 Nov 18 |
olle |
774 |
|
5114 |
20 Nov 18 |
olle |
istat.nofSectionsOnChange = function(event) |
5114 |
20 Nov 18 |
olle |
776 |
{ |
5114 |
20 Nov 18 |
olle |
var frm = document.forms['meludi']; |
5114 |
20 Nov 18 |
olle |
var target = event.currentTarget; |
5114 |
20 Nov 18 |
olle |
779 |
|
5114 |
20 Nov 18 |
olle |
var index = Data.int(target, 'index'); |
5114 |
20 Nov 18 |
olle |
var nofSections = frm['nofSections.'+index].value; |
5114 |
20 Nov 18 |
olle |
782 |
|
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections.'+index); |
5114 |
20 Nov 18 |
olle |
784 |
|
5114 |
20 Nov 18 |
olle |
if (nofSections == '') |
5114 |
20 Nov 18 |
olle |
786 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections'+index, 'invalid', 'Missing'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
789 |
} |
5114 |
20 Nov 18 |
olle |
if (parseInt(nofSections) < 1) |
5114 |
20 Nov 18 |
olle |
791 |
{ |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections'+index, 'invalid', 'Must be at least 1'); |
5114 |
20 Nov 18 |
olle |
return; |
5114 |
20 Nov 18 |
olle |
794 |
} |
5114 |
20 Nov 18 |
olle |
Wizard.setInputStatus('nofSections'+index, 'valid'); |
5114 |
20 Nov 18 |
olle |
796 |
} |
5114 |
20 Nov 18 |
olle |
797 |
|
5060 |
29 Oct 18 |
olle |
istat.validateStep2 = function(event) |
5060 |
29 Oct 18 |
olle |
799 |
{ |
5060 |
29 Oct 18 |
olle |
var valid = true; |
5060 |
29 Oct 18 |
olle |
//var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
802 |
|
5060 |
29 Oct 18 |
olle |
803 |
/* |
5060 |
29 Oct 18 |
olle |
// Check that all FFPE blocks have PAD numbers |
5060 |
29 Oct 18 |
olle |
var nofBlocks = ffpeBlockList.length; |
5060 |
29 Oct 18 |
olle |
for (var i = 0; i < nofBlocks; i++) |
5060 |
29 Oct 18 |
olle |
807 |
{ |
5060 |
29 Oct 18 |
olle |
if (frm['pad.'+i].value == '') |
5060 |
29 Oct 18 |
olle |
809 |
{ |
5060 |
29 Oct 18 |
olle |
Wizard.setInputStatus('pad.'+i, 'warning', 'Missing'); |
5060 |
29 Oct 18 |
olle |
valid = false; |
5060 |
29 Oct 18 |
olle |
812 |
} |
5060 |
29 Oct 18 |
olle |
813 |
} |
5060 |
29 Oct 18 |
olle |
814 |
*/ |
5060 |
29 Oct 18 |
olle |
if (!valid) |
5060 |
29 Oct 18 |
olle |
816 |
{ |
5060 |
29 Oct 18 |
olle |
event.preventDefault(); |
5060 |
29 Oct 18 |
olle |
818 |
} |
5060 |
29 Oct 18 |
olle |
819 |
} |
5060 |
29 Oct 18 |
olle |
820 |
|
5060 |
29 Oct 18 |
olle |
istat.submit = function() |
5060 |
29 Oct 18 |
olle |
822 |
{ |
5060 |
29 Oct 18 |
olle |
var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
var ffpeBlockList = istat.getSelectedItemsList(); |
5060 |
29 Oct 18 |
olle |
825 |
|
5060 |
29 Oct 18 |
olle |
var ffpeSectionInfo = {}; |
5060 |
29 Oct 18 |
olle |
var nofBlocks = ffpeBlockList.length; |
5060 |
29 Oct 18 |
olle |
ffpeSectionInfo.ffpeSections = []; |
5060 |
29 Oct 18 |
olle |
for (var i = 0; i < nofBlocks; i++) |
5060 |
29 Oct 18 |
olle |
830 |
{ |
5060 |
29 Oct 18 |
olle |
var ffpeSection ={}; |
5114 |
20 Nov 18 |
olle |
ffpeSection.name = ffpeBlockList[i].name + '.s'; |
5060 |
29 Oct 18 |
olle |
ffpeSection.blockName = ffpeBlockList[i].name; |
5060 |
29 Oct 18 |
olle |
//ffpeBlock.samplingDate = frm['samplingDate'].value; |
5060 |
29 Oct 18 |
olle |
//ffpeSection.arrivalDate = frm['arrivalDate'].value; |
5060 |
29 Oct 18 |
olle |
ffpeSection.pad = ffpeBlockList[i].pad; |
5114 |
20 Nov 18 |
olle |
ffpeSection.materialNumber = ffpeBlockList[i].materialNumber; |
5060 |
29 Oct 18 |
olle |
ffpeSection.yellowLabel = null; |
5060 |
29 Oct 18 |
olle |
var yellowLabelCB = false; |
5060 |
29 Oct 18 |
olle |
yellowLabelCB = frm['yellowLabel.'+i].checked; |
5060 |
29 Oct 18 |
olle |
if (yellowLabelCB) |
5060 |
29 Oct 18 |
olle |
842 |
{ |
5060 |
29 Oct 18 |
olle |
ffpeSection.yellowLabel = 'yellow'; |
5060 |
29 Oct 18 |
olle |
844 |
} |
5060 |
29 Oct 18 |
olle |
ffpeSection.nofSections = frm['nofSections.'+i].value; |
5114 |
20 Nov 18 |
olle |
//ffpeSection.viableTumourCellsPercent = frm['pctViabTumourCells.'+i].value; |
5060 |
29 Oct 18 |
olle |
ffpeSection.comment = frm['comment.'+i].value; |
5060 |
29 Oct 18 |
olle |
//ffpeBlock.operator = frm['operator'].value; |
5114 |
20 Nov 18 |
olle |
849 |
|
5114 |
20 Nov 18 |
olle |
ffpeSection.dnaBox = frm['dnaBox.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.dnaRow = frm['dnaRow.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.dnaColumn = frm['dnaColumn.'+i].value; |
5114 |
20 Nov 18 |
olle |
853 |
|
5114 |
20 Nov 18 |
olle |
ffpeSection.rnaBox = frm['rnaBox.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.rnaRow = frm['rnaRow.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.rnaColumn = frm['rnaColumn.'+i].value; |
5114 |
20 Nov 18 |
olle |
857 |
|
5114 |
20 Nov 18 |
olle |
ffpeSection.heGlassFBox = frm['heGlassFBox.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.heGlassFPosition = frm['heGlassFPosition.'+i].value; |
5832 |
21 Feb 20 |
olle |
//ffpeSection.pctTumourCellsF = frm['pctTumourCellsF.'+i].value; |
5114 |
20 Nov 18 |
olle |
861 |
|
5114 |
20 Nov 18 |
olle |
ffpeSection.heGlassEBox = frm['heGlassEBox.'+i].value; |
5114 |
20 Nov 18 |
olle |
ffpeSection.heGlassEPosition = frm['heGlassEPosition.'+i].value; |
5832 |
21 Feb 20 |
olle |
//ffpeSection.pctTumourCellsE = frm['pctTumourCellsE.'+i].value; |
5114 |
20 Nov 18 |
olle |
865 |
// |
5060 |
29 Oct 18 |
olle |
ffpeSectionInfo.ffpeSections[i] = ffpeSection; |
5060 |
29 Oct 18 |
olle |
867 |
} |
5060 |
29 Oct 18 |
olle |
var submitInfo = {}; |
5060 |
29 Oct 18 |
olle |
submitInfo.ffpeSectionInfo = ffpeSectionInfo; |
5060 |
29 Oct 18 |
olle |
870 |
|
5060 |
29 Oct 18 |
olle |
var url = '../BaseLineRegistration.servlet?ID='+App.getSessionId(); |
5060 |
29 Oct 18 |
olle |
url += '&cmd=RegisterFFPESections'; |
5060 |
29 Oct 18 |
olle |
Wizard.showLoadingAnimation('Registering FFPE section[s]...'); |
5060 |
29 Oct 18 |
olle |
Wizard.asyncJsonRequest(url, istat.submissionResults, 'POST', JSON.stringify(submitInfo)); |
5060 |
29 Oct 18 |
olle |
875 |
} |
5060 |
29 Oct 18 |
olle |
876 |
|
5060 |
29 Oct 18 |
olle |
istat.submissionResults = function(response) |
5060 |
29 Oct 18 |
olle |
878 |
{ |
5060 |
29 Oct 18 |
olle |
Wizard.showFinalMessage(response.messages); |
5060 |
29 Oct 18 |
olle |
Doc.show('gorestart'); |
5060 |
29 Oct 18 |
olle |
881 |
} |
5060 |
29 Oct 18 |
olle |
882 |
|
5060 |
29 Oct 18 |
olle |
istat.getSelectedItemsList = function() |
5060 |
29 Oct 18 |
olle |
884 |
{ |
5060 |
29 Oct 18 |
olle |
var frm = document.forms['meludi']; |
5060 |
29 Oct 18 |
olle |
886 |
|
5060 |
29 Oct 18 |
olle |
// Get number of selected extract source items |
5060 |
29 Oct 18 |
olle |
var numItems = 0; |
5060 |
29 Oct 18 |
olle |
var selItemsList = []; |
5060 |
29 Oct 18 |
olle |
for (var i = 0; i < frm.extractSourceItems.length; i++) |
5060 |
29 Oct 18 |
olle |
891 |
{ |
5060 |
29 Oct 18 |
olle |
if (frm.extractSourceItems[i].selected) |
5060 |
29 Oct 18 |
olle |
893 |
{ |
5060 |
29 Oct 18 |
olle |
if (frm.extractSourceItems[i].item != null) |
5060 |
29 Oct 18 |
olle |
895 |
{ |
5060 |
29 Oct 18 |
olle |
selItemsList[numItems] = frm.extractSourceItems[i].item; |
5060 |
29 Oct 18 |
olle |
numItems++; |
5060 |
29 Oct 18 |
olle |
898 |
} |
5060 |
29 Oct 18 |
olle |
899 |
} |
5060 |
29 Oct 18 |
olle |
900 |
} |
5060 |
29 Oct 18 |
olle |
return selItemsList; |
5060 |
29 Oct 18 |
olle |
902 |
} |
5060 |
29 Oct 18 |
olle |
903 |
|
5060 |
29 Oct 18 |
olle |
return istat; |
5060 |
29 Oct 18 |
olle |
905 |
}(); |
5060 |
29 Oct 18 |
olle |
906 |
|
5060 |
29 Oct 18 |
olle |
Doc.onLoad(Istat.initPage); |
5060 |
29 Oct 18 |
olle |
908 |
|