3656 |
09 Dec 15 |
olle |
var InspectUsedKits = function() |
3656 |
09 Dec 15 |
olle |
2 |
{ |
3656 |
09 Dec 15 |
olle |
var inspectusedkits = {}; |
3656 |
09 Dec 15 |
olle |
4 |
|
3656 |
09 Dec 15 |
olle |
var debug = 0; |
3656 |
09 Dec 15 |
olle |
6 |
|
3656 |
09 Dec 15 |
olle |
var kitNum = 0; |
3656 |
09 Dec 15 |
olle |
var selectedKitName; |
3656 |
09 Dec 15 |
olle |
var plateNameIsValid = false; |
3656 |
09 Dec 15 |
olle |
var THIN_SPACE = ' '; |
3656 |
09 Dec 15 |
olle |
11 |
|
3656 |
09 Dec 15 |
olle |
// Page initialization |
3656 |
09 Dec 15 |
olle |
inspectusedkits.initPage = function() |
3656 |
09 Dec 15 |
olle |
14 |
{ |
3656 |
09 Dec 15 |
olle |
// Step 1 |
3656 |
09 Dec 15 |
olle |
Events.addEventHandler('step-1', 'wizard-initialize', inspectusedkits.initializeStep1); |
3656 |
09 Dec 15 |
olle |
Events.addEventHandler('nofReservedFpaCells', 'change', inspectusedkits.numReservedCellsOnChange); |
3656 |
09 Dec 15 |
olle |
inspectusedkits.initializeStep1(); |
3656 |
09 Dec 15 |
olle |
19 |
} |
3656 |
09 Dec 15 |
olle |
20 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.initializeStep1 = function() |
3656 |
09 Dec 15 |
olle |
22 |
{ |
3656 |
09 Dec 15 |
olle |
var frm = document.forms['meludi']; |
3656 |
09 Dec 15 |
olle |
var numItems = frm.nofReservedFpaCells.value; |
3656 |
09 Dec 15 |
olle |
25 |
|
3656 |
09 Dec 15 |
olle |
Wizard.setCurrentStep(1); |
3656 |
09 Dec 15 |
olle |
Doc.show('step-1'); |
3656 |
09 Dec 15 |
olle |
// Disable kit tables until they have been loaded |
3656 |
09 Dec 15 |
olle |
Doc.hide('kitplatetablecontent'); |
3656 |
09 Dec 15 |
olle |
// Hide lib prep kit menu, that is only used internally |
3656 |
09 Dec 15 |
olle |
Doc.hide('libPrepKit'); |
3656 |
09 Dec 15 |
olle |
32 |
|
3656 |
09 Dec 15 |
olle |
// Check what library preparation kits are available |
3656 |
09 Dec 15 |
olle |
var url = '../LibPrep.servlet?ID='+App.getSessionId(); |
3656 |
09 Dec 15 |
olle |
url += '&cmd=GetLibPrepKitsAsPlates'; |
3656 |
09 Dec 15 |
olle |
url += '&numItems=' + encodeURIComponent(numItems); |
3656 |
09 Dec 15 |
olle |
37 |
|
3656 |
09 Dec 15 |
olle |
Wizard.showLoadingAnimation('Loading information about kits...'); |
3656 |
09 Dec 15 |
olle |
Wizard.asyncJsonRequest(url, inspectusedkits.kitPlatesInfoLoaded); |
3656 |
09 Dec 15 |
olle |
40 |
} |
3656 |
09 Dec 15 |
olle |
41 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.kitPlatesInfoLoaded = function(response) |
3656 |
09 Dec 15 |
olle |
43 |
{ |
3656 |
09 Dec 15 |
olle |
var frm = document.forms['meludi']; |
3656 |
09 Dec 15 |
olle |
var nofReservedFpaCells = frm.nofReservedFpaCells.value; |
3656 |
09 Dec 15 |
olle |
var platesInfo = response.plates; |
3656 |
09 Dec 15 |
olle |
if (platesInfo) |
3656 |
09 Dec 15 |
olle |
48 |
{ |
3656 |
09 Dec 15 |
olle |
// Find header data |
3656 |
09 Dec 15 |
olle |
//var numItems = names.length; |
3656 |
09 Dec 15 |
olle |
var numItems = nofReservedFpaCells; |
3656 |
09 Dec 15 |
olle |
var numUsedActiveKits = 0; |
3656 |
09 Dec 15 |
olle |
var numUnusedActiveKits = 0; |
3656 |
09 Dec 15 |
olle |
var usedActiveKitsJsonArr = []; |
3656 |
09 Dec 15 |
olle |
var unusedActiveKitsJsonArr = []; |
3656 |
09 Dec 15 |
olle |
var activeKitsJsonArr = []; |
3656 |
09 Dec 15 |
olle |
for (var i = 0; i < platesInfo.length; i++) |
3656 |
09 Dec 15 |
olle |
58 |
{ |
3656 |
09 Dec 15 |
olle |
var plateInfo = platesInfo[i]; |
3656 |
09 Dec 15 |
olle |
var bioplate = plateInfo; |
3656 |
09 Dec 15 |
olle |
var expirationDate = bioplate.expirationDate; |
3656 |
09 Dec 15 |
olle |
var numTimesUsed = bioplate.timesUsed; |
3656 |
09 Dec 15 |
olle |
var unusedWellsJsonArr = bioplate.unusedWells; |
3656 |
09 Dec 15 |
olle |
var effUnusedWellsJsonArr = bioplate.effUnusedWells; |
3656 |
09 Dec 15 |
olle |
var reservedWellsJsonArr = bioplate.reservedWells; |
3656 |
09 Dec 15 |
olle |
var numUnusedWells = unusedWellsJsonArr.length; |
3656 |
09 Dec 15 |
olle |
var jsonKit = {}; |
3656 |
09 Dec 15 |
olle |
jsonKit['id'] = bioplate.kitId; |
3656 |
09 Dec 15 |
olle |
jsonKit['name'] = bioplate.kitName; |
3656 |
09 Dec 15 |
olle |
jsonKit['expirationDate'] = expirationDate; |
3656 |
09 Dec 15 |
olle |
jsonKit['numTimesUsed'] = numTimesUsed; |
3656 |
09 Dec 15 |
olle |
jsonKit['unusedWells'] = unusedWellsJsonArr; |
3656 |
09 Dec 15 |
olle |
jsonKit['effUnusedWells'] = effUnusedWellsJsonArr; |
3656 |
09 Dec 15 |
olle |
jsonKit['reservedWells'] = reservedWellsJsonArr; |
3656 |
09 Dec 15 |
olle |
jsonKit['numUnusedWells'] = numUnusedWells; |
3656 |
09 Dec 15 |
olle |
if (numUnusedWells < 48) |
3656 |
09 Dec 15 |
olle |
77 |
{ |
3656 |
09 Dec 15 |
olle |
numUsedActiveKits++; |
3656 |
09 Dec 15 |
olle |
usedActiveKitsJsonArr[usedActiveKitsJsonArr.length] = jsonKit; |
3656 |
09 Dec 15 |
olle |
80 |
} |
3656 |
09 Dec 15 |
olle |
else |
3656 |
09 Dec 15 |
olle |
82 |
{ |
3656 |
09 Dec 15 |
olle |
numUnusedActiveKits++; |
3656 |
09 Dec 15 |
olle |
unusedActiveKitsJsonArr[unusedActiveKitsJsonArr.length] = jsonKit; |
3656 |
09 Dec 15 |
olle |
85 |
} |
3656 |
09 Dec 15 |
olle |
86 |
} |
3656 |
09 Dec 15 |
olle |
// List used kits first |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < usedActiveKitsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
89 |
{ |
3656 |
09 Dec 15 |
olle |
activeKitsJsonArr[activeKitsJsonArr.length] = usedActiveKitsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
91 |
} |
3656 |
09 Dec 15 |
olle |
// List unused kits after |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < unusedActiveKitsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
94 |
{ |
3656 |
09 Dec 15 |
olle |
activeKitsJsonArr[activeKitsJsonArr.length] = unusedActiveKitsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
96 |
} |
3656 |
09 Dec 15 |
olle |
97 |
|
3656 |
09 Dec 15 |
olle |
// Form header |
3656 |
09 Dec 15 |
olle |
var html = ''; |
3656 |
09 Dec 15 |
olle |
html += '<b>Number of DNA items: ' + numItems + '</b><br>'; |
3656 |
09 Dec 15 |
olle |
101 |
/* |
3656 |
09 Dec 15 |
olle |
html += '<b>Unused and active kits (' + numUnusedActiveKits + ')</b><br>'; |
3656 |
09 Dec 15 |
olle |
html += '<b>Used and active kits (' + numUsedActiveKits + '):</b><br>'; |
3656 |
09 Dec 15 |
olle |
104 |
*/ |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
html += 'Gray wells: Used<br>'; |
3656 |
09 Dec 15 |
olle |
html += 'Dark green wells: Unused but ignored due to placement rules<br>'; |
3656 |
09 Dec 15 |
olle |
html += 'Light green wells: Unused<br>'; |
3656 |
09 Dec 15 |
olle |
html += 'Yellow wells: Unused and reserved for selected FPA aliquots<br>'; |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
111 |
|
3656 |
09 Dec 15 |
olle |
// Display data for used and active kits |
3656 |
09 Dec 15 |
olle |
var defaultKitSelected = false; |
3656 |
09 Dec 15 |
olle |
var checkedStr = ""; |
3656 |
09 Dec 15 |
olle |
kitNum = 0; |
3656 |
09 Dec 15 |
olle |
// Used and active kits |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>Used and active kits (' + numUsedActiveKits + '):</b></td>'; |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
for (var i = 0; i < platesInfo.length; i++) |
3656 |
09 Dec 15 |
olle |
121 |
{ |
3656 |
09 Dec 15 |
olle |
var plateInfo = platesInfo[i]; |
3656 |
09 Dec 15 |
olle |
var bioplate = plateInfo; |
3656 |
09 Dec 15 |
olle |
var unusedWellsJsonArr = bioplate.unusedWells; |
3656 |
09 Dec 15 |
olle |
var numUnusedWells = unusedWellsJsonArr.length; |
3656 |
09 Dec 15 |
olle |
if (numUnusedWells < 48) |
3656 |
09 Dec 15 |
olle |
127 |
{ |
3656 |
09 Dec 15 |
olle |
// Display half plate chart of unused wells for FPA aliquots |
3656 |
09 Dec 15 |
olle |
var kitName = bioplate.kitName; |
3656 |
09 Dec 15 |
olle |
var expirationDate = bioplate.expirationDate; |
3656 |
09 Dec 15 |
olle |
var timesUsed = bioplate.timesUsed; |
3656 |
09 Dec 15 |
olle |
var checkedStr = ""; |
3656 |
09 Dec 15 |
olle |
if (!defaultKitSelected) |
3656 |
09 Dec 15 |
olle |
134 |
{ |
3656 |
09 Dec 15 |
olle |
selectedKitName = kitName; |
3656 |
09 Dec 15 |
olle |
defaultKitSelected = true; |
3656 |
09 Dec 15 |
olle |
checkedStr = " checked"; |
3656 |
09 Dec 15 |
olle |
138 |
} |
3656 |
09 Dec 15 |
olle |
139 |
/* |
3656 |
09 Dec 15 |
olle |
html += '<td style="width: 3em;"><input type="radio" name="uselibprepkit.'+kitNum+'" id="uselibprepkit.'+kitNum+'" value="'+kitName+'"'+checkedStr+'><b>Kit: ' + kitName + '</b> [Exp. ' + Strings.encodeTags(expirationDate) + '] #Times used: ' + timesUsed + '</td><br>'; |
3656 |
09 Dec 15 |
olle |
141 |
*/ |
3656 |
09 Dec 15 |
olle |
html += '<td style="width: 3em;"><b>' + (kitNum + 1) + '. Kit: ' + kitName + '</b> [Exp. ' + Strings.encodeTags(expirationDate) + '] #Times used: ' + timesUsed + '</td><br>'; |
3656 |
09 Dec 15 |
olle |
html += inspectusedkits.buildKitInfoPlate(bioplate); |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
kitNum++; |
3656 |
09 Dec 15 |
olle |
146 |
} |
3656 |
09 Dec 15 |
olle |
147 |
} |
3656 |
09 Dec 15 |
olle |
// Unused kits |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>Unused kits (' + unusedActiveKitsJsonArr.length + '):</b></td>'; |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < unusedActiveKitsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
152 |
{ |
3656 |
09 Dec 15 |
olle |
var jsonKit = unusedActiveKitsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
var kitName = jsonKit['name']; |
3656 |
09 Dec 15 |
olle |
var expirationDate = jsonKit['expirationDate']; |
3656 |
09 Dec 15 |
olle |
var checkedStr = ""; |
3656 |
09 Dec 15 |
olle |
if (!defaultKitSelected) |
3656 |
09 Dec 15 |
olle |
158 |
{ |
3656 |
09 Dec 15 |
olle |
selectedKitName = kitName; |
3656 |
09 Dec 15 |
olle |
defaultKitSelected = true; |
3656 |
09 Dec 15 |
olle |
checkedStr = " checked"; |
3656 |
09 Dec 15 |
olle |
162 |
} |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
164 |
/* |
3656 |
09 Dec 15 |
olle |
html += '<td style="width: 3em;"><input type="radio" name="uselibprepkit.'+kitNum+'" id="uselibprepkit.'+kitNum+'" value="'+kitName+'"'+checkedStr+'><b>Kit: ' + kitName + '</b> [Exp. ' + Strings.encodeTags(expirationDate) + ']</td>'; |
3656 |
09 Dec 15 |
olle |
166 |
*/ |
3656 |
09 Dec 15 |
olle |
html += '<td style="width: 3em;"><b>' + (kitNum + 1) + '. Kit: ' + kitName + '</b> [Exp. ' + Strings.encodeTags(expirationDate) + ']</td>'; |
3656 |
09 Dec 15 |
olle |
kitNum++; |
3656 |
09 Dec 15 |
olle |
169 |
} |
3656 |
09 Dec 15 |
olle |
html += '<br>'; |
3656 |
09 Dec 15 |
olle |
if (activeKitsJsonArr.length == 0) |
3656 |
09 Dec 15 |
olle |
172 |
{ |
3656 |
09 Dec 15 |
olle |
Wizard.setFatalError('No library preparation kits available.'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
175 |
} |
3656 |
09 Dec 15 |
olle |
Doc.element('kitplatetablecontent').innerHTML = html; |
3656 |
09 Dec 15 |
olle |
Doc.show('kitplatetablecontent'); |
3656 |
09 Dec 15 |
olle |
178 |
|
3656 |
09 Dec 15 |
olle |
179 |
/* |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < kitNum; i++) |
3656 |
09 Dec 15 |
olle |
181 |
{ |
3656 |
09 Dec 15 |
olle |
// Add event handler for radio buttons |
3656 |
09 Dec 15 |
olle |
Events.addEventHandler('uselibprepkit.'+i, 'change', inspectusedkits.kitOnChange, { 'index': i }); |
3656 |
09 Dec 15 |
olle |
184 |
} |
3656 |
09 Dec 15 |
olle |
185 |
|
3656 |
09 Dec 15 |
olle |
// Library preparation kit selection menu (hidden, but used internally) |
3656 |
09 Dec 15 |
olle |
var libPrepKitList = frm.libPrepKit; |
3656 |
09 Dec 15 |
olle |
if (activeKitsJsonArr.length > 0) |
3656 |
09 Dec 15 |
olle |
189 |
{ |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < activeKitsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
191 |
{ |
3656 |
09 Dec 15 |
olle |
var jsonKit = activeKitsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
var kitName = jsonKit['name']; |
3656 |
09 Dec 15 |
olle |
var expirationDate = jsonKit['expirationDate']; |
3656 |
09 Dec 15 |
olle |
var numTimesUsed = jsonKit['numTimesUsed']; |
3656 |
09 Dec 15 |
olle |
var numUnusedWells = jsonKit['numUnusedWells']; |
3656 |
09 Dec 15 |
olle |
197 |
// |
3656 |
09 Dec 15 |
olle |
var name = Strings.encodeTags(kitName); |
3656 |
09 Dec 15 |
olle |
if (numUnusedWells != null && numTimesUsed != null) |
3656 |
09 Dec 15 |
olle |
200 |
{ |
3656 |
09 Dec 15 |
olle |
name += ' -- ('; |
3656 |
09 Dec 15 |
olle |
name += '#Unused wells: ' + numUnusedWells; |
3656 |
09 Dec 15 |
olle |
name += ' #Times used: ' + numTimesUsed; |
3656 |
09 Dec 15 |
olle |
name += ')'; |
3656 |
09 Dec 15 |
olle |
205 |
} |
3656 |
09 Dec 15 |
olle |
if (expirationDate) |
3656 |
09 Dec 15 |
olle |
207 |
{ |
3656 |
09 Dec 15 |
olle |
name += ' [Exp. ' + Strings.encodeTags(expirationDate) + ']'; |
3656 |
09 Dec 15 |
olle |
209 |
} |
3656 |
09 Dec 15 |
olle |
var selected = (i == 0); |
3656 |
09 Dec 15 |
olle |
var option = new Option(name, kitName, selected, selected); |
3656 |
09 Dec 15 |
olle |
option.jsonKit = jsonKit; |
3656 |
09 Dec 15 |
olle |
libPrepKitList.options[libPrepKitList.length] = option; |
3656 |
09 Dec 15 |
olle |
214 |
} |
3656 |
09 Dec 15 |
olle |
libPrepKitList.options[0].selected = true; |
3656 |
09 Dec 15 |
olle |
216 |
} |
3656 |
09 Dec 15 |
olle |
else |
3656 |
09 Dec 15 |
olle |
218 |
{ |
3656 |
09 Dec 15 |
olle |
Wizard.setFatalError('No library preparation kits available.'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
221 |
} |
3656 |
09 Dec 15 |
olle |
222 |
*/ |
3656 |
09 Dec 15 |
olle |
223 |
} |
3656 |
09 Dec 15 |
olle |
Doc.removeClass('gonext', 'disabled'); |
3656 |
09 Dec 15 |
olle |
225 |
} |
3656 |
09 Dec 15 |
olle |
226 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.kitOnChange = function(event) |
3656 |
09 Dec 15 |
olle |
228 |
{ |
3656 |
09 Dec 15 |
olle |
var frm = document.forms['meludi']; |
3656 |
09 Dec 15 |
olle |
var target = event.currentTarget; |
3656 |
09 Dec 15 |
olle |
231 |
|
3656 |
09 Dec 15 |
olle |
var index = Data.int(target, 'index'); |
3656 |
09 Dec 15 |
olle |
233 |
|
3656 |
09 Dec 15 |
olle |
extraMaterialIsValid = true; |
3656 |
09 Dec 15 |
olle |
235 |
|
3656 |
09 Dec 15 |
olle |
selectedKitName = frm['uselibprepkit.'+index].value; |
3656 |
09 Dec 15 |
olle |
237 |
|
3656 |
09 Dec 15 |
olle |
// Reset all other radio buttons |
3656 |
09 Dec 15 |
olle |
for (var i=0; i < kitNum; i++) |
3656 |
09 Dec 15 |
olle |
240 |
{ |
3656 |
09 Dec 15 |
olle |
if (i != index) |
3656 |
09 Dec 15 |
olle |
242 |
{ |
3656 |
09 Dec 15 |
olle |
Doc.element('uselibprepkit.'+i).checked = false; |
3656 |
09 Dec 15 |
olle |
244 |
} |
3656 |
09 Dec 15 |
olle |
245 |
} |
3656 |
09 Dec 15 |
olle |
246 |
} |
3656 |
09 Dec 15 |
olle |
247 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.numReservedCellsOnChange = function(event) |
3656 |
09 Dec 15 |
olle |
249 |
{ |
3656 |
09 Dec 15 |
olle |
inspectusedkits.initializeStep1(); |
3656 |
09 Dec 15 |
olle |
251 |
} |
3656 |
09 Dec 15 |
olle |
252 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.plateNameOnChange = function(event) |
3656 |
09 Dec 15 |
olle |
254 |
{ |
3656 |
09 Dec 15 |
olle |
var frm = document.forms['meludi']; |
3656 |
09 Dec 15 |
olle |
plateNameIsValid = false; |
3656 |
09 Dec 15 |
olle |
257 |
|
3656 |
09 Dec 15 |
olle |
var name = frm.plateName.value; |
3656 |
09 Dec 15 |
olle |
if (!name || name == '') |
3656 |
09 Dec 15 |
olle |
260 |
{ |
3656 |
09 Dec 15 |
olle |
Wizard.setInputStatus('plateName', 'invalid', 'Missing name'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
263 |
} |
3656 |
09 Dec 15 |
olle |
if (name.indexOf("LP") != 0) |
3656 |
09 Dec 15 |
olle |
265 |
{ |
3656 |
09 Dec 15 |
olle |
Wizard.setInputStatus('plateName', 'invalid', 'Plate name must start with prefix "LP"'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
268 |
} |
3656 |
09 Dec 15 |
olle |
if (name.length != 7) |
3656 |
09 Dec 15 |
olle |
270 |
{ |
3656 |
09 Dec 15 |
olle |
Wizard.setInputStatus('plateName', 'invalid', 'Plate name must consist of "LP" + 5 digits'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
273 |
} |
3656 |
09 Dec 15 |
olle |
274 |
|
3656 |
09 Dec 15 |
olle |
// Check if name exists |
3656 |
09 Dec 15 |
olle |
var url = '../Extraction.servlet?ID='+App.getSessionId(); |
3656 |
09 Dec 15 |
olle |
url += '&cmd=CheckIfStartPlateNameUsed'; |
3656 |
09 Dec 15 |
olle |
url += '&startPlateName=' + encodeURIComponent(name); |
3656 |
09 Dec 15 |
olle |
279 |
|
3656 |
09 Dec 15 |
olle |
Wizard.showLoadingAnimation('Loading information about plate...'); |
3656 |
09 Dec 15 |
olle |
Wizard.asyncJsonRequest(url, inspectusedkits.plateInfoLoaded); |
3656 |
09 Dec 15 |
olle |
282 |
} |
3656 |
09 Dec 15 |
olle |
283 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.plateInfoLoaded = function(response) |
3656 |
09 Dec 15 |
olle |
285 |
{ |
3656 |
09 Dec 15 |
olle |
var frm = document.forms['meludi']; |
3656 |
09 Dec 15 |
olle |
var plateInfo = response.startplate; |
3656 |
09 Dec 15 |
olle |
if (plateInfo) |
3656 |
09 Dec 15 |
olle |
289 |
{ |
3656 |
09 Dec 15 |
olle |
var plateName = plateInfo.name; |
3656 |
09 Dec 15 |
olle |
var plateId = plateInfo.id; |
3656 |
09 Dec 15 |
olle |
292 |
|
3656 |
09 Dec 15 |
olle |
if (plateId) |
3656 |
09 Dec 15 |
olle |
294 |
{ |
3656 |
09 Dec 15 |
olle |
plateNameIsValid = false; |
3656 |
09 Dec 15 |
olle |
Wizard.setInputStatus('plateName', 'invalid', 'Plate already exists with name "' + plateName + '" (ID = ' + plateId + ')'); |
3656 |
09 Dec 15 |
olle |
return; |
3656 |
09 Dec 15 |
olle |
298 |
} |
3656 |
09 Dec 15 |
olle |
299 |
} |
3656 |
09 Dec 15 |
olle |
plateNameIsValid = true; |
3656 |
09 Dec 15 |
olle |
Plate.name = name; |
3656 |
09 Dec 15 |
olle |
302 |
|
3656 |
09 Dec 15 |
olle |
Wizard.setInputStatus('plateName', 'valid'); |
3656 |
09 Dec 15 |
olle |
304 |
} |
3656 |
09 Dec 15 |
olle |
305 |
|
3656 |
09 Dec 15 |
olle |
inspectusedkits.buildKitInfoPlate = function(plate) |
3656 |
09 Dec 15 |
olle |
307 |
{ |
3656 |
09 Dec 15 |
olle |
var html = ''; |
3656 |
09 Dec 15 |
olle |
// Table row with kit data |
3656 |
09 Dec 15 |
olle |
html += '<tr class="align-top">'; |
3656 |
09 Dec 15 |
olle |
// Added data for kit |
3656 |
09 Dec 15 |
olle |
var kitName = plate.kitName; |
3656 |
09 Dec 15 |
olle |
var expirationDate = plate.expirationDate; |
3656 |
09 Dec 15 |
olle |
var timesUsed = plate.timesUsed; |
3656 |
09 Dec 15 |
olle |
315 |
// |
3656 |
09 Dec 15 |
olle |
var unusedWellsJsonArr = plate.unusedWells; |
3656 |
09 Dec 15 |
olle |
var effUnusedWellsJsonArr = plate.effUnusedWells; |
3656 |
09 Dec 15 |
olle |
var reservedWellsJsonArr = plate.reservedWells; |
3656 |
09 Dec 15 |
olle |
319 |
|
3656 |
09 Dec 15 |
olle |
320 |
/* |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>Kit name: ' + kitName + '</b></td><br>'; |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>Expiration date: ' + expirationDate + '</b></td><br>'; |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>#Times used: ' + timesUsed + '</b></td><br>'; |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>#Available wells: ' + unusedWellsJsonArr.length + '</b></td><br>'; |
3656 |
09 Dec 15 |
olle |
html += '<td class="prompt"><b>#Eff. available wells: ' + effUnusedWellsJsonArr.length + '</b></td><br>'; |
3656 |
09 Dec 15 |
olle |
326 |
*/ |
3656 |
09 Dec 15 |
olle |
// Kit as plate |
3656 |
09 Dec 15 |
olle |
// Only show FPA columns, i.e. columns 0-5 |
3656 |
09 Dec 15 |
olle |
var colNoEnd = 5; |
3656 |
09 Dec 15 |
olle |
if (plate.geometry.columns < colNoEnd) |
3656 |
09 Dec 15 |
olle |
331 |
{ |
3656 |
09 Dec 15 |
olle |
colNoEnd = plate.geometry.columns; |
3656 |
09 Dec 15 |
olle |
333 |
} |
3656 |
09 Dec 15 |
olle |
html += '<td>'; |
3656 |
09 Dec 15 |
olle |
html += '<table class="plate">'; |
3656 |
09 Dec 15 |
olle |
html += '<tr class="header"><th></th>'; |
3656 |
09 Dec 15 |
olle |
for (var colNo = 0; colNo <= colNoEnd; colNo++) |
3656 |
09 Dec 15 |
olle |
338 |
{ |
3656 |
09 Dec 15 |
olle |
html += '<th>'+(colNo+1)+'</th>'; |
3656 |
09 Dec 15 |
olle |
340 |
} |
3656 |
09 Dec 15 |
olle |
html += '</tr>'; |
3656 |
09 Dec 15 |
olle |
var wells = plate.bioWells; |
3656 |
09 Dec 15 |
olle |
var wellNo = 0; |
3656 |
09 Dec 15 |
olle |
for (var rowNo = 0; rowNo < plate.geometry.rows; rowNo++) |
3656 |
09 Dec 15 |
olle |
345 |
{ |
3656 |
09 Dec 15 |
olle |
html += '<tr class="row-'+rowNo+'">'; |
3656 |
09 Dec 15 |
olle |
html += '<th>'+Meludi.wellToAlpha(rowNo)+'</th>'; |
3656 |
09 Dec 15 |
olle |
for (var colNo = 0; colNo <= colNoEnd; colNo++) |
3656 |
09 Dec 15 |
olle |
349 |
{ |
3656 |
09 Dec 15 |
olle |
var well = wells[wellNo]; |
3656 |
09 Dec 15 |
olle |
well.extraVolume = 0; |
3656 |
09 Dec 15 |
olle |
well.comment = ''; |
3656 |
09 Dec 15 |
olle |
353 |
|
3656 |
09 Dec 15 |
olle |
if (well.bioMaterial) |
3656 |
09 Dec 15 |
olle |
355 |
{ |
3656 |
09 Dec 15 |
olle |
html += '<td id="well-'+well.id+'"'; |
3656 |
09 Dec 15 |
olle |
html += ' class="well selectable col-'+colNo+'"'; |
3656 |
09 Dec 15 |
olle |
html += ' title="'+Strings.encodeTags(well.bioMaterial.name)+'" data-well-id="'+well.id+'"'; |
3656 |
09 Dec 15 |
olle |
html += '>0'+THIN_SPACE+'µl</td>'; |
3656 |
09 Dec 15 |
olle |
360 |
} |
3656 |
09 Dec 15 |
olle |
else |
3656 |
09 Dec 15 |
olle |
362 |
{ |
3656 |
09 Dec 15 |
olle |
var wellName = Meludi.wellToAlpha(rowNo) + (colNo+1); |
3656 |
09 Dec 15 |
olle |
// Check if kit is used for current well |
3656 |
09 Dec 15 |
olle |
var usedWell = true; |
3656 |
09 Dec 15 |
olle |
for (var i = 0; i < unusedWellsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
367 |
{ |
3656 |
09 Dec 15 |
olle |
var nameOfUnusedWell = unusedWellsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
if (wellName == nameOfUnusedWell) |
3656 |
09 Dec 15 |
olle |
370 |
{ |
3656 |
09 Dec 15 |
olle |
usedWell = false; |
3656 |
09 Dec 15 |
olle |
372 |
} |
3656 |
09 Dec 15 |
olle |
373 |
} |
3656 |
09 Dec 15 |
olle |
var effUsedWell = true; |
3656 |
09 Dec 15 |
olle |
for (var i = 0; i < effUnusedWellsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
376 |
{ |
3656 |
09 Dec 15 |
olle |
var nameOfUnusedWell = effUnusedWellsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
if (wellName == nameOfUnusedWell) |
3656 |
09 Dec 15 |
olle |
379 |
{ |
3656 |
09 Dec 15 |
olle |
effUsedWell = false; |
3656 |
09 Dec 15 |
olle |
381 |
} |
3656 |
09 Dec 15 |
olle |
382 |
} |
3656 |
09 Dec 15 |
olle |
var reservedWell = false; |
3656 |
09 Dec 15 |
olle |
for (var i = 0; i < reservedWellsJsonArr.length; i++) |
3656 |
09 Dec 15 |
olle |
385 |
{ |
3656 |
09 Dec 15 |
olle |
var nameOfReservedWell = reservedWellsJsonArr[i]; |
3656 |
09 Dec 15 |
olle |
if (wellName == nameOfReservedWell) |
3656 |
09 Dec 15 |
olle |
388 |
{ |
3656 |
09 Dec 15 |
olle |
reservedWell = true; |
3656 |
09 Dec 15 |
olle |
390 |
} |
3656 |
09 Dec 15 |
olle |
391 |
} |
3656 |
09 Dec 15 |
olle |
if (usedWell) |
3656 |
09 Dec 15 |
olle |
393 |
{ |
3656 |
09 Dec 15 |
olle |
// Empty well |
3656 |
09 Dec 15 |
olle |
html += '<td class="kitwell empty col-'+colNo+'">'; |
3656 |
09 Dec 15 |
olle |
396 |
} |
3656 |
09 Dec 15 |
olle |
else |
3656 |
09 Dec 15 |
olle |
398 |
{ |
3656 |
09 Dec 15 |
olle |
// Unused well |
3656 |
09 Dec 15 |
olle |
//html += '<td class="kitwell unused col-'+colNo+'">'; |
3656 |
09 Dec 15 |
olle |
var new_html = ''; |
3656 |
09 Dec 15 |
olle |
if (effUsedWell) |
3656 |
09 Dec 15 |
olle |
403 |
{ |
3656 |
09 Dec 15 |
olle |
new_html = '<td class="kitwell unused col-'+colNo+'">'; |
3656 |
09 Dec 15 |
olle |
405 |
} |
3656 |
09 Dec 15 |
olle |
else |
3656 |
09 Dec 15 |
olle |
407 |
{ |
3656 |
09 Dec 15 |
olle |
new_html = '<td class="kitwell effunused col-'+colNo+'">'; |
3656 |
09 Dec 15 |
olle |
if (reservedWell) |
3656 |
09 Dec 15 |
olle |
410 |
{ |
3656 |
09 Dec 15 |
olle |
new_html = '<td class="kitwell reserved col-'+colNo+'">'; |
3656 |
09 Dec 15 |
olle |
412 |
} |
3656 |
09 Dec 15 |
olle |
413 |
} |
3656 |
09 Dec 15 |
olle |
html += new_html; |
3656 |
09 Dec 15 |
olle |
415 |
} |
3656 |
09 Dec 15 |
olle |
html += '<div class="name">' + wellName + '</div>'; |
3656 |
09 Dec 15 |
olle |
html += '</td>'; |
3656 |
09 Dec 15 |
olle |
418 |
} |
3656 |
09 Dec 15 |
olle |
wellNo++; |
3656 |
09 Dec 15 |
olle |
420 |
} |
3656 |
09 Dec 15 |
olle |
html += '</tr>'; |
3656 |
09 Dec 15 |
olle |
422 |
} |
3656 |
09 Dec 15 |
olle |
html += '</table>'; |
3656 |
09 Dec 15 |
olle |
html += '</td>'; |
3656 |
09 Dec 15 |
olle |
// Kit status |
3656 |
09 Dec 15 |
olle |
html += '<td class="status" id="libPrepKitAsPlate.status"></td>'; |
3656 |
09 Dec 15 |
olle |
// Kit message |
3656 |
09 Dec 15 |
olle |
//var kitMessage = 'Highlighted wells are unused.'; |
3656 |
09 Dec 15 |
olle |
var kitMessage = ''; |
3656 |
09 Dec 15 |
olle |
html += '<td class="help">'; |
3656 |
09 Dec 15 |
olle |
html += '<span id="libPrepKitAsPlate.message" class="message" ></span>'; |
3656 |
09 Dec 15 |
olle |
html += kitMessage; |
3656 |
09 Dec 15 |
olle |
html += '</td>'; |
3656 |
09 Dec 15 |
olle |
// End of table row with kit data |
3656 |
09 Dec 15 |
olle |
html += '</tr>'; |
3656 |
09 Dec 15 |
olle |
436 |
|
3656 |
09 Dec 15 |
olle |
return html; |
3656 |
09 Dec 15 |
olle |
438 |
} |
3656 |
09 Dec 15 |
olle |
439 |
|
3656 |
09 Dec 15 |
olle |
return inspectusedkits; |
3656 |
09 Dec 15 |
olle |
441 |
}(); |
3656 |
09 Dec 15 |
olle |
442 |
|
3656 |
09 Dec 15 |
olle |
Doc.onLoad(InspectUsedKits.initPage); |
3656 |
09 Dec 15 |
olle |
Doc.addElementInitializer(InspectUsedKits.initElements); |