4157 |
07 Oct 16 |
nicklas |
var Picklist = function() |
4157 |
07 Oct 16 |
nicklas |
2 |
{ |
4157 |
07 Oct 16 |
nicklas |
var picklist = {}; |
4157 |
07 Oct 16 |
nicklas |
var debug = 0; |
4157 |
07 Oct 16 |
nicklas |
5 |
|
4157 |
07 Oct 16 |
nicklas |
var lysatesIsValid = false; |
4157 |
07 Oct 16 |
nicklas |
7 |
|
4157 |
07 Oct 16 |
nicklas |
// Page initialization |
4157 |
07 Oct 16 |
nicklas |
picklist.initPage = function() |
4157 |
07 Oct 16 |
nicklas |
10 |
{ |
4157 |
07 Oct 16 |
nicklas |
var pageId = Doc.getPageId(); |
4157 |
07 Oct 16 |
nicklas |
if (pageId == 'protocol') |
4157 |
07 Oct 16 |
nicklas |
13 |
{ |
4164 |
20 Oct 16 |
nicklas |
Buttons.addClickHandler('print-button', Wizard.goPrint); |
4164 |
20 Oct 16 |
nicklas |
15 |
|
4164 |
20 Oct 16 |
nicklas |
var url = '../Outtake.servlet?ID='+App.getSessionId(); |
4164 |
20 Oct 16 |
nicklas |
url += '&cmd=GetOuttakeInfo'; |
4164 |
20 Oct 16 |
nicklas |
url += '&workListId='+Data.int('page-data', 'list-id'); |
4166 |
21 Oct 16 |
nicklas |
url += '&useExternalId='+Data.int('page-data', 'use-external-id'); |
4164 |
20 Oct 16 |
nicklas |
Wizard.showLoadingAnimation('Loading aliquot information...'); |
4164 |
20 Oct 16 |
nicklas |
Wizard.asyncJsonRequest(url, picklist.initializeProtocol); |
4157 |
07 Oct 16 |
nicklas |
22 |
} |
4157 |
07 Oct 16 |
nicklas |
else |
4157 |
07 Oct 16 |
nicklas |
24 |
{ |
4157 |
07 Oct 16 |
nicklas |
Events.addEventHandler('workList', 'change', picklist.worklistOnChange); |
5310 |
15 Feb 19 |
nicklas |
Buttons.addClickHandler('downloadLabelsCsv', picklist.downloadLabels); |
5310 |
15 Feb 19 |
nicklas |
Buttons.addClickHandler('downloadLabelsXlsx', picklist.downloadLabels); |
4157 |
07 Oct 16 |
nicklas |
Buttons.addClickHandler('gocreate', picklist.viewProtocol); |
4157 |
07 Oct 16 |
nicklas |
29 |
|
4157 |
07 Oct 16 |
nicklas |
var url = '../Outtake.servlet?ID='+App.getSessionId(); |
4157 |
07 Oct 16 |
nicklas |
url += '&cmd=GetOuttakeWorklists'; |
4157 |
07 Oct 16 |
nicklas |
Wizard.showLoadingAnimation('Loading outtake work lists...'); |
4157 |
07 Oct 16 |
nicklas |
Wizard.asyncJsonRequest(url, picklist.initializeStep1); |
4157 |
07 Oct 16 |
nicklas |
34 |
} |
4157 |
07 Oct 16 |
nicklas |
35 |
} |
4157 |
07 Oct 16 |
nicklas |
36 |
|
4157 |
07 Oct 16 |
nicklas |
picklist.initializeStep1 = function(response) |
4157 |
07 Oct 16 |
nicklas |
38 |
{ |
4157 |
07 Oct 16 |
nicklas |
var frm = document.forms['reggie']; |
4157 |
07 Oct 16 |
nicklas |
var workLists = response.workLists; |
4157 |
07 Oct 16 |
nicklas |
41 |
|
4157 |
07 Oct 16 |
nicklas |
var workList = frm.workList; |
4157 |
07 Oct 16 |
nicklas |
if (workLists.length > 0) |
4157 |
07 Oct 16 |
nicklas |
44 |
{ |
4157 |
07 Oct 16 |
nicklas |
for (var i=0; i < workLists.length; i++) |
4157 |
07 Oct 16 |
nicklas |
46 |
{ |
4157 |
07 Oct 16 |
nicklas |
var list = workLists[i]; |
6326 |
14 Jun 21 |
nicklas |
var name = list.name + ' (' + list.size+(list.parentType?' '+list.parentType : '') + ')'; |
4157 |
07 Oct 16 |
nicklas |
var option = new Option(name, list.id); |
4157 |
07 Oct 16 |
nicklas |
option.workList = list; |
4157 |
07 Oct 16 |
nicklas |
workList.options[workList.length] = option; |
4157 |
07 Oct 16 |
nicklas |
52 |
} |
4157 |
07 Oct 16 |
nicklas |
Events.sendChangeEvent(workList); |
4157 |
07 Oct 16 |
nicklas |
54 |
} |
4157 |
07 Oct 16 |
nicklas |
else |
4157 |
07 Oct 16 |
nicklas |
56 |
{ |
4157 |
07 Oct 16 |
nicklas |
Wizard.setFatalError('No outtake works lists available for processing.'); |
4157 |
07 Oct 16 |
nicklas |
return; |
4157 |
07 Oct 16 |
nicklas |
59 |
} |
4157 |
07 Oct 16 |
nicklas |
60 |
|
4157 |
07 Oct 16 |
nicklas |
Doc.show('step-1'); |
4157 |
07 Oct 16 |
nicklas |
Doc.show('gocreate'); |
4157 |
07 Oct 16 |
nicklas |
Doc.show('golabels'); |
4157 |
07 Oct 16 |
nicklas |
64 |
} |
4157 |
07 Oct 16 |
nicklas |
65 |
|
4157 |
07 Oct 16 |
nicklas |
picklist.worklistOnChange = function() |
4157 |
07 Oct 16 |
nicklas |
67 |
{ |
4157 |
07 Oct 16 |
nicklas |
var frm = document.forms['reggie']; |
4157 |
07 Oct 16 |
nicklas |
var workList = frm.workList[frm.workList.selectedIndex].workList; |
4157 |
07 Oct 16 |
nicklas |
Doc.element('comments').innerHTML = Strings.encodeTags(workList.comments); |
4157 |
07 Oct 16 |
nicklas |
71 |
} |
4157 |
07 Oct 16 |
nicklas |
72 |
|
4157 |
07 Oct 16 |
nicklas |
picklist.viewProtocol = function() |
4157 |
07 Oct 16 |
nicklas |
74 |
{ |
4157 |
07 Oct 16 |
nicklas |
var frm = document.forms['reggie']; |
4157 |
07 Oct 16 |
nicklas |
frm.submit(); |
4157 |
07 Oct 16 |
nicklas |
77 |
} |
4157 |
07 Oct 16 |
nicklas |
78 |
|
4157 |
07 Oct 16 |
nicklas |
picklist.downloadLabels = function(event) |
4157 |
07 Oct 16 |
nicklas |
80 |
{ |
4157 |
07 Oct 16 |
nicklas |
var frm = document.forms['reggie']; |
5310 |
15 Feb 19 |
nicklas |
var format = Data.get(event.currentTarget, 'format'); |
4157 |
07 Oct 16 |
nicklas |
83 |
|
4157 |
07 Oct 16 |
nicklas |
var url = '../Outtake.servlet?ID='+App.getSessionId(); |
4157 |
07 Oct 16 |
nicklas |
url += '&cmd=DownloadLabels'; |
4157 |
07 Oct 16 |
nicklas |
url += '&workListId='+frm.workList.value; |
4166 |
21 Oct 16 |
nicklas |
if (frm.useExternalId.checked) |
4166 |
21 Oct 16 |
nicklas |
88 |
{ |
4166 |
21 Oct 16 |
nicklas |
url += '&useExternalId=1'; |
4166 |
21 Oct 16 |
nicklas |
90 |
} |
5310 |
15 Feb 19 |
nicklas |
url += '&format='+encodeURIComponent(format); |
4157 |
07 Oct 16 |
nicklas |
location.href = url; |
4157 |
07 Oct 16 |
nicklas |
93 |
} |
4157 |
07 Oct 16 |
nicklas |
94 |
|
4164 |
20 Oct 16 |
nicklas |
picklist.initializeProtocol = function(response) |
4164 |
20 Oct 16 |
nicklas |
96 |
{ |
4164 |
20 Oct 16 |
nicklas |
var html = ''; |
4164 |
20 Oct 16 |
nicklas |
98 |
|
4164 |
20 Oct 16 |
nicklas |
var list = response.list; |
6326 |
14 Jun 21 |
nicklas |
var needTargetAmount = list.TargetAmount > 0; |
6326 |
14 Jun 21 |
nicklas |
var needTargetVolume = list.TargetVolume > 0; |
4164 |
20 Oct 16 |
nicklas |
102 |
|
6326 |
14 Jun 21 |
nicklas |
Doc.element('parentType').innerHTML = Strings.encodeTags(list.parentType); |
6326 |
14 Jun 21 |
nicklas |
if (needTargetAmount) |
6326 |
14 Jun 21 |
nicklas |
105 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.element('targetAmount').innerHTML = Reggie.formatNumber(list.TargetAmount, ' µg', 1); |
6326 |
14 Jun 21 |
nicklas |
107 |
} |
6326 |
14 Jun 21 |
nicklas |
else |
6326 |
14 Jun 21 |
nicklas |
109 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.hide('targetAmountSection'); |
6326 |
14 Jun 21 |
nicklas |
111 |
} |
6326 |
14 Jun 21 |
nicklas |
if (needTargetVolume) |
6326 |
14 Jun 21 |
nicklas |
113 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.element('targetVolume').innerHTML = Reggie.formatNumber(list.TargetVolume, ' µl', 1); |
6326 |
14 Jun 21 |
nicklas |
115 |
} |
6326 |
14 Jun 21 |
nicklas |
else |
6326 |
14 Jun 21 |
nicklas |
117 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.hide('targetVolumeSection'); |
6326 |
14 Jun 21 |
nicklas |
119 |
} |
6326 |
14 Jun 21 |
nicklas |
if (needTargetAmount && needTargetVolume) |
6326 |
14 Jun 21 |
nicklas |
121 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.element('targetConcentration').innerHTML = Reggie.formatNumber(1000 * list.TargetAmount / list.TargetVolume, ' ng/µl', 2); |
6326 |
14 Jun 21 |
nicklas |
123 |
} |
6326 |
14 Jun 21 |
nicklas |
else |
6326 |
14 Jun 21 |
nicklas |
125 |
{ |
6326 |
14 Jun 21 |
nicklas |
Doc.hide('targetConcentrationSection'); |
6326 |
14 Jun 21 |
nicklas |
127 |
} |
6326 |
14 Jun 21 |
nicklas |
128 |
|
4164 |
20 Oct 16 |
nicklas |
var aliquots = response.aliquots; |
4164 |
20 Oct 16 |
nicklas |
var newBoxes = []; |
4168 |
21 Oct 16 |
nicklas |
var lastAliquotBox = -1; |
4164 |
20 Oct 16 |
nicklas |
var lastRow = -1; |
4168 |
21 Oct 16 |
nicklas |
var lastStorageBox = -1; |
4164 |
20 Oct 16 |
nicklas |
var numRows = 0; |
6730 |
05 May 22 |
nicklas |
var showLabelColumn = false; |
4164 |
20 Oct 16 |
nicklas |
136 |
|
4164 |
20 Oct 16 |
nicklas |
for (var aliquotNo = 0; aliquotNo < aliquots.length; aliquotNo++) |
4164 |
20 Oct 16 |
nicklas |
138 |
{ |
4164 |
20 Oct 16 |
nicklas |
var a = aliquots[aliquotNo]; |
4164 |
20 Oct 16 |
nicklas |
var p = a.parent; |
6730 |
05 May 22 |
nicklas |
if (p.label) showLabelColumn = true; |
6220 |
20 Apr 21 |
nicklas |
var storageBox = p.bioWell ? p.bioWell.bioPlate : { 'name': 'Unknown box', 'id': 0 }; |
4164 |
20 Oct 16 |
nicklas |
var aliquotBox = a.bioWell.bioPlate; |
4164 |
20 Oct 16 |
nicklas |
var markNewBox = false; |
4164 |
20 Oct 16 |
nicklas |
var markNewRow = false; |
4168 |
21 Oct 16 |
nicklas |
if (lastAliquotBox != aliquotBox.id) |
4164 |
20 Oct 16 |
nicklas |
147 |
{ |
4164 |
20 Oct 16 |
nicklas |
newBoxes[newBoxes.length] = Strings.encodeTags(aliquotBox.name); |
4168 |
21 Oct 16 |
nicklas |
lastAliquotBox = aliquotBox.id; |
4164 |
20 Oct 16 |
nicklas |
markNewBox = true; |
4164 |
20 Oct 16 |
nicklas |
151 |
} |
4168 |
21 Oct 16 |
nicklas |
var displayFreezer = false; |
4168 |
21 Oct 16 |
nicklas |
if (lastStorageBox != storageBox.id) |
4168 |
21 Oct 16 |
nicklas |
154 |
{ |
4168 |
21 Oct 16 |
nicklas |
lastStorageBox = storageBox.id; |
4168 |
21 Oct 16 |
nicklas |
displayFreezer = true; |
4168 |
21 Oct 16 |
nicklas |
157 |
|
4168 |
21 Oct 16 |
nicklas |
158 |
} |
4164 |
20 Oct 16 |
nicklas |
if (lastRow != a.bioWell.row) |
4164 |
20 Oct 16 |
nicklas |
160 |
{ |
4164 |
20 Oct 16 |
nicklas |
lastRow = a.bioWell.row; |
4164 |
20 Oct 16 |
nicklas |
numRows++; |
4172 |
24 Oct 16 |
nicklas |
markNewRow = true; |
4172 |
24 Oct 16 |
nicklas |
164 |
} |
4172 |
24 Oct 16 |
nicklas |
165 |
|
4172 |
24 Oct 16 |
nicklas |
if (displayFreezer || markNewBox) |
4172 |
24 Oct 16 |
nicklas |
167 |
{ |
4172 |
24 Oct 16 |
nicklas |
markNewRow = true; |
4172 |
24 Oct 16 |
nicklas |
var freezer = storageBox.storage; |
4172 |
24 Oct 16 |
nicklas |
170 |
|
4172 |
24 Oct 16 |
nicklas |
html += '<tr class="box-row'+(numRows % 2 == 0 ? ' odd-row' : '')+'">'; |
6730 |
05 May 22 |
nicklas |
html += '<td colspan="5">'; |
4172 |
24 Oct 16 |
nicklas |
html += Strings.encodeTags(storageBox.name); |
4172 |
24 Oct 16 |
nicklas |
if (freezer) |
4168 |
21 Oct 16 |
nicklas |
175 |
{ |
4172 |
24 Oct 16 |
nicklas |
html += '<span class="freezer"> - '+Strings.encodeTags(freezer.name); |
4172 |
24 Oct 16 |
nicklas |
if (freezer.section) html += '; Section ' + Strings.encodeTags(freezer.section); |
4172 |
24 Oct 16 |
nicklas |
if (freezer.tray) html += '; Tray ' + Strings.encodeTags(freezer.tray); |
4172 |
24 Oct 16 |
nicklas |
if (freezer.position) html += '; Position ' + Strings.encodeTags(freezer.position); |
4172 |
24 Oct 16 |
nicklas |
html += '</span>'; |
4168 |
21 Oct 16 |
nicklas |
181 |
} |
4172 |
24 Oct 16 |
nicklas |
html += '</td>'; |
4172 |
24 Oct 16 |
nicklas |
//html += '<td colspan="2" class="leftborder"></td>'; |
6730 |
05 May 22 |
nicklas |
html += '<td class="leftborder new-box" colspan="2">'+Strings.encodeTags(aliquotBox.name)+'</td>'; |
4172 |
24 Oct 16 |
nicklas |
html += '<td class="leftborder"></td>'; |
4172 |
24 Oct 16 |
nicklas |
html += '</tr>'; |
4164 |
20 Oct 16 |
nicklas |
187 |
} |
4164 |
20 Oct 16 |
nicklas |
188 |
|
4164 |
20 Oct 16 |
nicklas |
var remarks = []; |
4165 |
21 Oct 16 |
nicklas |
var dilution = {}; |
4165 |
21 Oct 16 |
nicklas |
if (a.dilution) |
4164 |
20 Oct 16 |
nicklas |
192 |
{ |
4165 |
21 Oct 16 |
nicklas |
dilution = a.dilution; |
6326 |
14 Jun 21 |
nicklas |
if (needTargetAmount) |
4164 |
20 Oct 16 |
nicklas |
195 |
{ |
6326 |
14 Jun 21 |
nicklas |
if (dilution.amount < list.TargetAmount) |
6326 |
14 Jun 21 |
nicklas |
197 |
{ |
6326 |
14 Jun 21 |
nicklas |
// Not enough remaining quantity -- take as much as possible |
6326 |
14 Jun 21 |
nicklas |
remarks[remarks.length] = 'Remain: ' + Reggie.formatNumber(dilution.amount, ' µg', 1); |
6326 |
14 Jun 21 |
nicklas |
200 |
} |
6326 |
14 Jun 21 |
nicklas |
else if (dilution.amount > list.TargetAmount) |
6326 |
14 Jun 21 |
nicklas |
202 |
{ |
6326 |
14 Jun 21 |
nicklas |
// Typically happens to avoid taking less than 1µl |
6326 |
14 Jun 21 |
nicklas |
remarks[remarks.length] = 'Large mix: ' + Reggie.formatNumber(dilution.amount, ' µg', 1); |
6326 |
14 Jun 21 |
nicklas |
205 |
} |
4164 |
20 Oct 16 |
nicklas |
206 |
} |
6326 |
14 Jun 21 |
nicklas |
else if (needTargetVolume) |
4164 |
20 Oct 16 |
nicklas |
208 |
{ |
6326 |
14 Jun 21 |
nicklas |
if (dilution.volume < list.TargetVolume) |
6326 |
14 Jun 21 |
nicklas |
210 |
{ |
6326 |
14 Jun 21 |
nicklas |
// Not enough remaining quantity -- take as much as possible |
6326 |
14 Jun 21 |
nicklas |
remarks[remarks.length] = 'Remain: ' + Reggie.formatNumber(dilution.volume, ' µl', 1); |
6326 |
14 Jun 21 |
nicklas |
213 |
} |
4164 |
20 Oct 16 |
nicklas |
214 |
} |
4165 |
21 Oct 16 |
nicklas |
if (dilution.water < 0) |
4164 |
20 Oct 16 |
nicklas |
216 |
{ |
4172 |
24 Oct 16 |
nicklas |
// Happens when source concentration is lower that target concentration |
6220 |
20 Apr 21 |
nicklas |
remarks[remarks.length] = 'Conc: ' + Reggie.formatNumber(p.conc, ' ng/µl', 2); |
4165 |
21 Oct 16 |
nicklas |
dilution.water = null; |
4164 |
20 Oct 16 |
nicklas |
220 |
} |
4164 |
20 Oct 16 |
nicklas |
221 |
} |
6326 |
14 Jun 21 |
nicklas |
else |
6326 |
14 Jun 21 |
nicklas |
223 |
{ |
6326 |
14 Jun 21 |
nicklas |
if (!p.remainingQuantity) |
6326 |
14 Jun 21 |
nicklas |
225 |
{ |
6326 |
14 Jun 21 |
nicklas |
remarks[remarks.length] = 'Remain: unknown'; |
6326 |
14 Jun 21 |
nicklas |
227 |
} |
6326 |
14 Jun 21 |
nicklas |
else if (!p.NdConc) |
6326 |
14 Jun 21 |
nicklas |
229 |
{ |
6326 |
14 Jun 21 |
nicklas |
remarks[remarks.length] = 'Conc: unknown'; |
6326 |
14 Jun 21 |
nicklas |
231 |
} |
6326 |
14 Jun 21 |
nicklas |
232 |
} |
4164 |
20 Oct 16 |
nicklas |
233 |
|
4164 |
20 Oct 16 |
nicklas |
var rowClass = []; |
4164 |
20 Oct 16 |
nicklas |
if (markNewRow && numRows > 1) rowClass[rowClass.length] = 'new-row'; |
4164 |
20 Oct 16 |
nicklas |
if (markNewBox && newBoxes.length > 1) rowClass[rowClass.length] = 'new-box'; |
4164 |
20 Oct 16 |
nicklas |
if (newBoxes.length % 2 == 0) rowClass[rowClass.length] = 'odd-box'; |
4164 |
20 Oct 16 |
nicklas |
if (numRows % 2 == 0) rowClass[rowClass.length] = 'odd-row'; |
4164 |
20 Oct 16 |
nicklas |
239 |
|
4164 |
20 Oct 16 |
nicklas |
html += '<tr class="'+rowClass.join(' ')+'">'; |
4164 |
20 Oct 16 |
nicklas |
html += '<th>'+Strings.encodeTags(p.name)+'</th>'; |
6730 |
05 May 22 |
nicklas |
html += '<td class="label">'+Strings.encodeTags(p.label)+'</td>'; |
4172 |
24 Oct 16 |
nicklas |
html += '<td class="box">'+picklist.asStorageLocation(p.bioWell, false)+'</td>'; |
4165 |
21 Oct 16 |
nicklas |
html += '<td class="volume leftborder">' + (Numbers.formatNumber(dilution.volume, 1) || '-') + '</td>'; |
4165 |
21 Oct 16 |
nicklas |
html += '<td class="water">' + (Numbers.formatNumber(dilution.water, 1) || '-') + '</td>'; |
6730 |
05 May 22 |
nicklas |
html += '<th class="leftborder new-box">'+Strings.encodeTags(a.externalId || a.name)+'</th>'; |
6730 |
05 May 22 |
nicklas |
html += '<td class="box new-box">'+(a.bioWell.location)+'</td>'; |
4164 |
20 Oct 16 |
nicklas |
html += '<td class="leftborder">' + remarks.join(', ') + '</td>'; |
4164 |
20 Oct 16 |
nicklas |
html += '</tr>'; |
4164 |
20 Oct 16 |
nicklas |
250 |
} |
4164 |
20 Oct 16 |
nicklas |
251 |
|
4164 |
20 Oct 16 |
nicklas |
Doc.element('newBoxes').innerHTML = newBoxes.join(', '); |
4164 |
20 Oct 16 |
nicklas |
253 |
|
4164 |
20 Oct 16 |
nicklas |
Doc.element('aliquot-list').innerHTML = html; |
6730 |
05 May 22 |
nicklas |
if (showLabelColumn) |
6730 |
05 May 22 |
nicklas |
256 |
{ |
6730 |
05 May 22 |
nicklas |
Doc.removeClass('aliquot-table', 'nolabels'); |
6730 |
05 May 22 |
nicklas |
Doc.show('protocol-footer'); |
6730 |
05 May 22 |
nicklas |
259 |
} |
4164 |
20 Oct 16 |
nicklas |
Doc.show('all-protocol'); |
4164 |
20 Oct 16 |
nicklas |
261 |
} |
4164 |
20 Oct 16 |
nicklas |
262 |
|
4168 |
21 Oct 16 |
nicklas |
picklist.asStorageLocation = function(well, displayFreezer) |
4164 |
20 Oct 16 |
nicklas |
264 |
{ |
4164 |
20 Oct 16 |
nicklas |
if (!well) return ''; |
4164 |
20 Oct 16 |
nicklas |
var plate = well.bioPlate; |
4168 |
21 Oct 16 |
nicklas |
var location = ''; |
4168 |
21 Oct 16 |
nicklas |
if (plate.storage && displayFreezer) |
4164 |
20 Oct 16 |
nicklas |
269 |
{ |
4164 |
20 Oct 16 |
nicklas |
var storage = plate.storage; |
4168 |
21 Oct 16 |
nicklas |
location += Strings.encodeTags(storage.name); |
4168 |
21 Oct 16 |
nicklas |
if (storage.section) location += '; Section ' + Strings.encodeTags(storage.section); |
4164 |
20 Oct 16 |
nicklas |
if (storage.tray) location += '; Tray ' + Strings.encodeTags(storage.tray); |
4164 |
20 Oct 16 |
nicklas |
if (storage.position) location += '; Position ' + Strings.encodeTags(storage.position); |
4168 |
21 Oct 16 |
nicklas |
location += '<br>'; |
4164 |
20 Oct 16 |
nicklas |
276 |
} |
4168 |
21 Oct 16 |
nicklas |
location += Strings.encodeTags(plate.name + ' ' + well.location); |
4164 |
20 Oct 16 |
nicklas |
return location; |
4164 |
20 Oct 16 |
nicklas |
279 |
} |
4164 |
20 Oct 16 |
nicklas |
280 |
|
4157 |
07 Oct 16 |
nicklas |
return picklist; |
4157 |
07 Oct 16 |
nicklas |
282 |
}(); |
4157 |
07 Oct 16 |
nicklas |
283 |
|
4157 |
07 Oct 16 |
nicklas |
Doc.onLoad(Picklist.initPage); |
4157 |
07 Oct 16 |
nicklas |
285 |
|