4788 |
02 May 18 |
olle |
var CaseSummaryAltRec = function() |
4788 |
02 May 18 |
olle |
2 |
{ |
4788 |
02 May 18 |
olle |
var cs = {}; |
4788 |
02 May 18 |
olle |
var debug = 0; |
4788 |
02 May 18 |
olle |
var sampleItemPrefix = ''; |
4788 |
02 May 18 |
olle |
var sampleItemNumDigits = 5; |
5031 |
16 Oct 18 |
olle |
var sampleItemNameLength = 9; |
4788 |
02 May 18 |
olle |
var TRUNCATE_SIZE = [-1, 30, 20, 15]; |
5031 |
16 Oct 18 |
olle |
var defaultColClass = null; |
5092 |
14 Nov 18 |
olle |
var chainedItems = []; |
4788 |
02 May 18 |
olle |
var wizard_sub_name = ' (rec)' |
4788 |
02 May 18 |
olle |
12 |
|
4788 |
02 May 18 |
olle |
cs.initPage = function() |
4788 |
02 May 18 |
olle |
14 |
{ |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::initPage(): Start"); |
4788 |
02 May 18 |
olle |
Events.addEventHandler('showConfidential', 'change', cs.showConfidentialOnChange); |
4788 |
02 May 18 |
olle |
Events.doOnEnter('caseName_alt_rec', cs.caseSummary); |
5395 |
02 May 19 |
olle |
Buttons.addClickHandler('btnCaseSummary', cs.caseSummary); |
4788 |
02 May 18 |
olle |
Buttons.addClickHandler('printButton', cs.goPrint); |
4788 |
02 May 18 |
olle |
Buttons.addClickHandler('close', App.closeWindow); |
4788 |
02 May 18 |
olle |
21 |
|
4788 |
02 May 18 |
olle |
var caseName = Data.get('page-data', 'case-name'); |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::initPage(): caseName = " + caseName); |
4788 |
02 May 18 |
olle |
var isAdmin = Data.int('page-data', 'admin'); |
4788 |
02 May 18 |
olle |
var isPatientCurator = Data.int('page-data', 'patient-curator'); |
4788 |
02 May 18 |
olle |
26 |
|
4788 |
02 May 18 |
olle |
var url = '../CaseSummary.servlet?ID='+App.getSessionId(); |
4788 |
02 May 18 |
olle |
url += '&cmd=GetCaseInfo'; |
4788 |
02 May 18 |
olle |
url += '&caseName='+encodeURIComponent(caseName); |
4788 |
02 May 18 |
olle |
Wizard.showLoadingAnimation('Loading information about case: ' + Strings.encodeTags(caseName)); |
4788 |
02 May 18 |
olle |
Wizard.asyncJsonRequest(url, cs.caseInfoLoaded); |
4788 |
02 May 18 |
olle |
32 |
} |
4788 |
02 May 18 |
olle |
33 |
|
4788 |
02 May 18 |
olle |
cs.caseInfoLoaded = function(response) |
4788 |
02 May 18 |
olle |
35 |
{ |
4788 |
02 May 18 |
olle |
Doc.show('all-info'); |
4788 |
02 May 18 |
olle |
37 |
|
5092 |
14 Nov 18 |
olle |
var maxItemsInLeftCol = 1; |
5092 |
14 Nov 18 |
olle |
var maxItemsInRightCol = 1; |
5092 |
14 Nov 18 |
olle |
40 |
|
4788 |
02 May 18 |
olle |
var caseName = Data.get('page-data', 'case-name'); |
4788 |
02 May 18 |
olle |
var caseInfo = response.caseInfo; |
4788 |
02 May 18 |
olle |
var site = response.site; |
4788 |
02 May 18 |
olle |
var patient = response.patient; |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::caseInfoLoaded(): caseName = " + caseName + " caseInfo = " + JSON.stringify(caseInfo) + " site = " + JSON.stringify(site) + " patient = " + JSON.stringify(patient)); |
4788 |
02 May 18 |
olle |
cs.initSections(response.sections); |
4788 |
02 May 18 |
olle |
var consentOk = true; |
4788 |
02 May 18 |
olle |
sampleItemPrefix = response.sampleItemPrefix; |
4788 |
02 May 18 |
olle |
sampleItemNumDigits = response.sampleItemNumDigits; |
5031 |
16 Oct 18 |
olle |
sampleItemNameLength = sampleItemPrefix.length + sampleItemNumDigits + 2; |
4830 |
04 Jun 18 |
olle |
if (Doc.element('caseName') != null) |
4830 |
04 Jun 18 |
olle |
52 |
{ |
4830 |
04 Jun 18 |
olle |
Doc.element('caseName').setAttribute('title', 'Please enter a case id ("' + sampleItemPrefix + '" + ' + sampleItemNumDigits + ' digits)'); |
4830 |
04 Jun 18 |
olle |
54 |
} |
4788 |
02 May 18 |
olle |
var projInfo = response.projInfo; |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::caseInfoLoaded(): projInfo = " + JSON.stringify(projInfo)); |
4788 |
02 May 18 |
olle |
57 |
|
4788 |
02 May 18 |
olle |
if (projInfo) |
4788 |
02 May 18 |
olle |
59 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('project.name', cs.asLink('PROJECT', projInfo)); |
4788 |
02 May 18 |
olle |
cs.addColumn('project.description', Strings.encodeTags(projInfo.description)); |
4788 |
02 May 18 |
olle |
62 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
64 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('project.name', cs.asNoInfo('No project information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('project-details'); |
4788 |
02 May 18 |
olle |
67 |
} |
4788 |
02 May 18 |
olle |
68 |
|
4788 |
02 May 18 |
olle |
if (caseInfo) |
4788 |
02 May 18 |
olle |
70 |
{ |
4788 |
02 May 18 |
olle |
// Use returned case name, as it may have been found from personal number |
4788 |
02 May 18 |
olle |
if (!patient || patient.allCases.indexOf(caseName) == -1) |
4788 |
02 May 18 |
olle |
73 |
{ |
4788 |
02 May 18 |
olle |
caseName = caseInfo.name; |
4788 |
02 May 18 |
olle |
Data.set('page-data', 'case-name', caseName); |
4788 |
02 May 18 |
olle |
// Update header text to use the potentially changed case name |
4788 |
02 May 18 |
olle |
if (Doc.element('path-case-summary')) |
4788 |
02 May 18 |
olle |
78 |
{ |
4788 |
02 May 18 |
olle |
Doc.element('path-case-summary').innerHTML = 'Case summary' + wizard_sub_name + ' - ' + Strings.encodeTags(caseName); |
4788 |
02 May 18 |
olle |
80 |
} |
4788 |
02 May 18 |
olle |
81 |
} |
4788 |
02 May 18 |
olle |
82 |
|
5013 |
08 Oct 18 |
olle |
//alert("case_summary_alt_rec.js::caseInfoLoaded(): caseInfo.diagnosisConfirmed = " + caseInfo.diagnosisConfirmed); |
4788 |
02 May 18 |
olle |
consentOk = !caseInfo.consent || caseInfo.consent == 'Yes'; |
4788 |
02 May 18 |
olle |
cs.addColumn('case.name', cs.asLink('SAMPLE', caseInfo)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.registrationDate', cs.asDate(caseInfo.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.tubeContentType', Strings.encodeTags(caseInfo.tubeContentType)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.mutationAnalysis', Strings.encodeTags(caseInfo.mutationAnalysis)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.site', site ? site.name : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.consent', cs.asConsent(caseInfo.consent, cs.asDate(caseInfo.consentDate))); |
4879 |
27 Jun 18 |
olle |
cs.addColumn('case.diagnosisConfirmed', caseInfo.diagnosisConfirmed); |
4841 |
08 Jun 18 |
olle |
cs.addColumn('case.referralId', Strings.encodeTags(caseInfo.referralId)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.projectFocus', Strings.encodeTags(caseInfo.projectFocus)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.metastasisSite', Strings.encodeTags(caseInfo.metastasisSite)); |
5259 |
22 Jan 19 |
olle |
cs.addColumn('case.ffpeBlockOrderDate', cs.asDate(caseInfo.ffpeBlockOrderDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.nofTubes', caseInfo.nofTubes); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.otherPathNote', Strings.encodeTags(caseInfo.otherPathNote)); |
4788 |
02 May 18 |
olle |
cs.addColumn('case.description', Strings.encodeTags(caseInfo.description)); |
4788 |
02 May 18 |
olle |
99 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
101 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('case.name', cs.asNoInfo('No case information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('case-details'); |
4788 |
02 May 18 |
olle |
104 |
} |
4788 |
02 May 18 |
olle |
105 |
|
4788 |
02 May 18 |
olle |
if (patient) |
4788 |
02 May 18 |
olle |
107 |
{ |
4788 |
02 May 18 |
olle |
if (consentOk) |
4788 |
02 May 18 |
olle |
109 |
{ |
4788 |
02 May 18 |
olle |
try |
4788 |
02 May 18 |
olle |
111 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.name', cs.asLink('BIOSOURCE', patient)); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.registrationDate', cs.asDate(patient.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.personalNumber', cs.warnIfMissing(Strings.encodeTags(patient.personalNumber))); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.allFirstNames', cs.warnIfMissing(Strings.encodeTags(patient.allFirstNames))); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.familyName', cs.warnIfMissing(Strings.encodeTags(patient.familyName))); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.gender', Strings.encodeTags(patient.gender)); |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.allCases', cs.asCaseList(patient.allCases, caseName)); |
4788 |
02 May 18 |
olle |
119 |
} |
4788 |
02 May 18 |
olle |
catch (e) |
4788 |
02 May 18 |
olle |
121 |
{ |
4788 |
02 May 18 |
olle |
cs.logError('patient-info', e); |
4788 |
02 May 18 |
olle |
123 |
} |
4788 |
02 May 18 |
olle |
124 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
126 |
{ |
4788 |
02 May 18 |
olle |
Doc.hide('patient-info'); |
4788 |
02 May 18 |
olle |
128 |
} |
4788 |
02 May 18 |
olle |
129 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
131 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('patient.name', cs.asNoInfo('No patient information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('patient-details'); |
4788 |
02 May 18 |
olle |
134 |
} |
4788 |
02 May 18 |
olle |
135 |
|
5044 |
19 Oct 18 |
olle |
var yellowPrefixes = {}; |
4796 |
08 May 18 |
olle |
var blood = consentOk ? response.blood : null; |
4796 |
08 May 18 |
olle |
if (blood && blood.length > 0) |
4796 |
08 May 18 |
olle |
139 |
{ |
4796 |
08 May 18 |
olle |
for (var i = 0; i < blood.length; i++) |
4796 |
08 May 18 |
olle |
141 |
{ |
4796 |
08 May 18 |
olle |
try |
4796 |
08 May 18 |
olle |
143 |
{ |
4796 |
08 May 18 |
olle |
var b = blood[i]; |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.name', cs.asLink('SAMPLE', b)); |
4986 |
28 Sep 18 |
olle |
cs.addColumn('blood.tubeLabel', Strings.encodeTags(b.tubeLabel)); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.registrationDate', cs.asDate(b.registrationDate)); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.consent', cs.asConsent(b.consent, cs.asDate(b.consentDate))); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.bloodSample', Strings.encodeTags(b.bloodSample)); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.samplingDate', cs.warnIfMissing(cs.asDateTime(b.samplingDate))); |
5027 |
15 Oct 18 |
olle |
cs.addColumn('blood.arrivalDate', cs.warnIfMissing(cs.asDateTime(b.arrivalDate))); |
5027 |
15 Oct 18 |
olle |
//cs.addColumn('blood.freezerDate', cs.warnIfMissing(cs.asDateTime(b.freezerDate, b.samplingDate))); |
5027 |
15 Oct 18 |
olle |
cs.addColumn('blood.freezerDate', cs.asDateTime(b.freezerDate)); |
4831 |
05 Jun 18 |
olle |
cs.addColumn('blood.storageBox', cs.asBioPlateLocation(b.bioWell)); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.serum', Strings.encodeTags(b.serum)); |
5034 |
17 Oct 18 |
olle |
cs.addColumn('blood.arrivalOperator', Strings.encodeTags(b.arrivalOperator)); |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.comment', Strings.encodeTags(b.comment)); |
4796 |
08 May 18 |
olle |
158 |
} |
4796 |
08 May 18 |
olle |
catch (e) |
4796 |
08 May 18 |
olle |
160 |
{ |
4796 |
08 May 18 |
olle |
cs.logError('blood-info', e); |
4796 |
08 May 18 |
olle |
162 |
} |
4796 |
08 May 18 |
olle |
163 |
} |
4796 |
08 May 18 |
olle |
164 |
} |
4796 |
08 May 18 |
olle |
else |
4796 |
08 May 18 |
olle |
166 |
{ |
4796 |
08 May 18 |
olle |
if (consentOk) |
4796 |
08 May 18 |
olle |
168 |
{ |
4796 |
08 May 18 |
olle |
cs.addColumn('blood.name', cs.asNoInfo('No blood information has been registered')); |
4796 |
08 May 18 |
olle |
Doc.hide('blood-details'); |
4796 |
08 May 18 |
olle |
171 |
} |
4796 |
08 May 18 |
olle |
else |
4796 |
08 May 18 |
olle |
173 |
{ |
4796 |
08 May 18 |
olle |
Doc.hide('blood-info'); |
4796 |
08 May 18 |
olle |
175 |
} |
4796 |
08 May 18 |
olle |
176 |
} |
4796 |
08 May 18 |
olle |
177 |
|
4796 |
08 May 18 |
olle |
// Blood DNA |
4796 |
08 May 18 |
olle |
var bdna = consentOk ? response.bdna : null; |
4796 |
08 May 18 |
olle |
if (bdna && bdna.length > 0) |
4796 |
08 May 18 |
olle |
181 |
{ |
4796 |
08 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(bdna.length-1, TRUNCATE_SIZE.length)]; |
4796 |
08 May 18 |
olle |
for (var i = 0; i < bdna.length; i++) |
4796 |
08 May 18 |
olle |
184 |
{ |
4796 |
08 May 18 |
olle |
try |
4796 |
08 May 18 |
olle |
186 |
{ |
4796 |
08 May 18 |
olle |
var d = bdna[i]; |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.name', cs.asLink('EXTRACT', d)); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.registrationDate', cs.asDate(d.registrationDate)); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.storageBox', cs.asBioPlateLocation(d.bioWell)); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.remainingQuantity', cs.asQuantity(d.remainingQuantity, ' µg')); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.originalQuantity', cs.asQuantity(d.originalQuantity, ' µg')); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.ndConc', cs.asQuantity(d.ndConc, ' ng/µl')); |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.comment', cs.truncate(d.comment, truncateAt)); |
4796 |
08 May 18 |
olle |
195 |
} |
4796 |
08 May 18 |
olle |
catch (e) |
4796 |
08 May 18 |
olle |
197 |
{ |
4796 |
08 May 18 |
olle |
cs.logError('bdna-info', e); |
4796 |
08 May 18 |
olle |
199 |
} |
4796 |
08 May 18 |
olle |
200 |
} |
4796 |
08 May 18 |
olle |
201 |
} |
4796 |
08 May 18 |
olle |
else |
4796 |
08 May 18 |
olle |
203 |
{ |
4796 |
08 May 18 |
olle |
if (consentOk) |
4796 |
08 May 18 |
olle |
205 |
{ |
4796 |
08 May 18 |
olle |
cs.addColumn('bdna.name', cs.asNoInfo('No Blood DNA information has been registered')); |
4796 |
08 May 18 |
olle |
Doc.hide('bdna-details'); |
4796 |
08 May 18 |
olle |
208 |
} |
4796 |
08 May 18 |
olle |
else |
4796 |
08 May 18 |
olle |
210 |
{ |
4796 |
08 May 18 |
olle |
Doc.hide('bdna-info'); |
4796 |
08 May 18 |
olle |
212 |
} |
4796 |
08 May 18 |
olle |
213 |
} |
4796 |
08 May 18 |
olle |
214 |
|
4912 |
13 Jul 18 |
olle |
var ffpeblock = consentOk ? response.ffpeblock : null; |
4912 |
13 Jul 18 |
olle |
if (ffpeblock && ffpeblock.length > 0) |
4912 |
13 Jul 18 |
olle |
217 |
{ |
4912 |
13 Jul 18 |
olle |
for (var i = 0; i < ffpeblock.length; i++) |
4912 |
13 Jul 18 |
olle |
219 |
{ |
4912 |
13 Jul 18 |
olle |
try |
4912 |
13 Jul 18 |
olle |
221 |
{ |
4912 |
13 Jul 18 |
olle |
var b = ffpeblock[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = b.YellowLabel != null ? 'yellow-specimen' : null; |
5031 |
16 Oct 18 |
olle |
yellowPrefixes[b.name] = defaultColClass; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('ffpeblock.name', cs.asLink('SAMPLE', b)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('ffpeblock.name', cs.asLink('SAMPLE', b, 0, true)); |
4912 |
13 Jul 18 |
olle |
cs.addColumn('ffpeblock.registrationDate', cs.asDate(b.registrationDate)); |
4912 |
13 Jul 18 |
olle |
cs.addColumn('ffpeblock.consent', cs.asConsent(b.consent, cs.asDate(b.consentDate))); |
4912 |
13 Jul 18 |
olle |
cs.addColumn('ffpeblock.pad', cs.warnIfMissing(Strings.encodeTags(b.pad))); |
5074 |
06 Nov 18 |
olle |
cs.addColumn('ffpeblock.materialNumber', cs.warnIfMissing(Strings.encodeTags(b.materialNumber))); |
5160 |
30 Nov 18 |
olle |
cs.addColumn('ffpeblock.localisation', Strings.encodeTags(b.localisation)); |
5044 |
19 Oct 18 |
olle |
//cs.addColumn('ffpeblock.samplingDate', cs.warnIfMissing(cs.asDateTime(b.samplingDate))); |
5044 |
19 Oct 18 |
olle |
cs.addColumn('ffpeblock.arrivalDate', cs.warnIfMissing(cs.asDateTime(b.arrivalDate))); |
5135 |
22 Nov 18 |
olle |
cs.addColumn('ffpeblock.returnedDate', cs.warnIfMissing(cs.asDateTime(b.returnedDate))); |
5044 |
19 Oct 18 |
olle |
cs.addColumn('ffpeblock.operatorDeliveryComment', Strings.encodeTags(b.operatorDeliveryComment)); |
5044 |
19 Oct 18 |
olle |
//cs.addColumn('ffpeblock.otherPathNote', Strings.encodeTags(b.otherPathNote)); |
4912 |
13 Jul 18 |
olle |
237 |
} |
4912 |
13 Jul 18 |
olle |
catch (e) |
4912 |
13 Jul 18 |
olle |
239 |
{ |
4912 |
13 Jul 18 |
olle |
cs.logError('ffpeblock-info', e); |
4912 |
13 Jul 18 |
olle |
241 |
} |
4912 |
13 Jul 18 |
olle |
242 |
} |
4912 |
13 Jul 18 |
olle |
243 |
} |
4912 |
13 Jul 18 |
olle |
else |
4912 |
13 Jul 18 |
olle |
245 |
{ |
4912 |
13 Jul 18 |
olle |
if (consentOk) |
4912 |
13 Jul 18 |
olle |
247 |
{ |
4912 |
13 Jul 18 |
olle |
cs.addColumn('ffpeblock.name', cs.asNoInfo('No FFPE block information has been registered')); |
4912 |
13 Jul 18 |
olle |
Doc.hide('ffpeblock-details'); |
4912 |
13 Jul 18 |
olle |
250 |
} |
4912 |
13 Jul 18 |
olle |
else |
4912 |
13 Jul 18 |
olle |
252 |
{ |
4912 |
13 Jul 18 |
olle |
Doc.hide('ffpeblock-info'); |
4912 |
13 Jul 18 |
olle |
254 |
} |
4912 |
13 Jul 18 |
olle |
255 |
} |
4912 |
13 Jul 18 |
olle |
256 |
|
4788 |
02 May 18 |
olle |
var specimen = response.specimen; |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::caseInfoLoaded(): specimen = " + JSON.stringify(specimen)); |
4788 |
02 May 18 |
olle |
var numSpecimen = 0; |
4788 |
02 May 18 |
olle |
if (specimen && specimen.length > 0) |
4788 |
02 May 18 |
olle |
261 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(specimen.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < specimen.length; i++) |
4788 |
02 May 18 |
olle |
264 |
{ |
4788 |
02 May 18 |
olle |
var s = specimen[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = s.YellowLabel != null ? 'yellow-specimen' : null; |
5031 |
16 Oct 18 |
olle |
yellowPrefixes[s.name] = defaultColClass; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('specimen.name', cs.asLink('SAMPLE', s)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('specimen.name', cs.asLink('SAMPLE', s, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.registrationDate', cs.asDate(s.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.specimenType', Strings.encodeTags(s.specimenType)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.specimenInputType', Strings.encodeTags(s.specimenInputType)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.storageBox', cs.asBioPlateLocation(s.bioWell)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.samplingDate', cs.warnIfMissing(cs.asDateTime(s.samplingDate))); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.viableTumourCellsPercent', s.viableTumourCellsPercent); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.plNumber', cs.warnIfMissing(Strings.encodeTags(s.plNumber))); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.pad', cs.warnIfMissing(Strings.encodeTags(s.pad))); |
4788 |
02 May 18 |
olle |
278 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.remainingQuantity', cs.asQuantity(s.remainingQuantity, ' mg', 1000)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.originalQuantity', cs.asQuantity(s.originalQuantity, ' mg', 1000)); |
4788 |
02 May 18 |
olle |
281 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.nofSections', s.nofSections); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.operatorDeliveryComment', cs.truncate(s.operatorDeliveryComment, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.description', cs.truncate(s.description, truncateAt)); |
4788 |
02 May 18 |
olle |
285 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.startPlate', cs.asLink('BIOPLATE', s.startPlate)); |
4788 |
02 May 18 |
olle |
287 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.startList', cs.asLink('ITEMLIST', s.startList)); |
4788 |
02 May 18 |
olle |
numSpecimen++; |
4788 |
02 May 18 |
olle |
290 |
} |
4788 |
02 May 18 |
olle |
291 |
} |
4788 |
02 May 18 |
olle |
if (numSpecimen == 0) |
4788 |
02 May 18 |
olle |
293 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('specimen.name', cs.asNoInfo('No specimen information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('specimen-details'); |
4788 |
02 May 18 |
olle |
296 |
} |
4788 |
02 May 18 |
olle |
297 |
|
5093 |
14 Nov 18 |
olle |
var histology = response.histology; |
5093 |
14 Nov 18 |
olle |
if (histology && histology.length > 0) |
5093 |
14 Nov 18 |
olle |
300 |
{ |
5093 |
14 Nov 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(histology.length-1, TRUNCATE_SIZE.length)]; |
5093 |
14 Nov 18 |
olle |
maxItemsInLeftCol = Math.max(maxItemsInLeftCol, histology.length); |
5093 |
14 Nov 18 |
olle |
for (var i = 0; i < histology.length; i++) |
5093 |
14 Nov 18 |
olle |
304 |
{ |
5093 |
14 Nov 18 |
olle |
try |
5093 |
14 Nov 18 |
olle |
306 |
{ |
5093 |
14 Nov 18 |
olle |
var h = histology[i]; |
5093 |
14 Nov 18 |
olle |
defaultColClass = cs.getDefaultColClass(h, yellowPrefixes); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.name', cs.asLink('SAMPLE', h, 0, true)); |
5093 |
14 Nov 18 |
olle |
//cs.addColumn('histology.donotuse', cs.asDoNotUse(h)); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.registrationDate', cs.asDate(h.registrationDate)); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.partitionDate', cs.asDate(h.partitionDate)); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.usedQuantity', cs.asQuantity(h.originalQuantity, ' mg', 1000)); |
5093 |
14 Nov 18 |
olle |
314 |
|
5093 |
14 Nov 18 |
olle |
var embedded = h.embedDate ? true : false; |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.embedded', embedded ? cs.asDate(h.embedDate) : 'No'); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.embedProtocol', embedded ? cs.asLink('PROTOCOL', h.embedProtocol, truncateAt) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.paraffinBlock', embedded ? cs.asBioPlateLocation(h.bioWell) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.storageBox', embedded ? null : cs.asBioPlateLocation(h.bioWell)); |
5115 |
20 Nov 18 |
olle |
320 |
|
5115 |
20 Nov 18 |
olle |
// SCAN-B-rec start |
5115 |
20 Nov 18 |
olle |
var fStain = h.FStain; |
5115 |
20 Nov 18 |
olle |
var eStain = h.EStain; |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.stained', h.numStains ? 'Yes' : 'No'); |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.nofSlides', h.numStains); |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.heGlassF', fStain ? cs.asBioPlateLocation(fStain.bioWell) : null); |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.heGlassFTumourCellsPct', fStain ? fStain.tumourCellsPct : null); |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.heGlassE', eStain ? cs.asBioPlateLocation(eStain.bioWell) : null); |
5115 |
20 Nov 18 |
olle |
cs.addColumn('histology.heGlassETumourCellsPct', eStain ? eStain.tumourCellsPct : null); |
5115 |
20 Nov 18 |
olle |
// SCAN-B-rec end |
5115 |
20 Nov 18 |
olle |
331 |
|
5093 |
14 Nov 18 |
olle |
var stained = h.stainDate ? true : false; |
5093 |
14 Nov 18 |
olle |
var bestStain = stained ? h.bestStain : null; |
5093 |
14 Nov 18 |
olle |
var scored = bestStain && bestStain.ScoreComplete != null ? true : false; |
5115 |
20 Nov 18 |
olle |
335 |
|
5115 |
20 Nov 18 |
olle |
//cs.addColumn('histology.stained', stained ? cs.asDate(h.stainDate) : 'No'); |
5115 |
20 Nov 18 |
olle |
//cs.addColumn('histology.nofSlides', stained ? h.numStains : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.heGlass', bestStain ? cs.asBioPlateLocation(bestStain.bioWell) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.stainProtocol', stained ? cs.asLink('PROTOCOL', h.stainProtocol, truncateAt) : null); |
5093 |
14 Nov 18 |
olle |
340 |
|
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scored', (scored ? (bestStain.ScoreComplete ? 'Complete' : 'In progress') : 'No')+cs.asFileLink(bestStain ? bestStain.image : null, 'picture.png')); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreInvasiveCancer', scored ? cs.asPercent(bestStain.ScoreInvasiveCancer) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreInsituCancer', scored ? cs.asPercent(bestStain.ScoreInsituCancer) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreLymphocytes', scored ? cs.asPercent(bestStain.ScoreLymphocytes) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreNormal', scored ? cs.asPercent(bestStain.ScoreNormal) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreStroma', scored ? cs.asPercent(bestStain.ScoreStroma) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreFat', scored ? cs.asPercent(bestStain.ScoreFat) : null); |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.scoreComments', scored ? cs.truncate(bestStain.comments, truncateAt) : null); |
5093 |
14 Nov 18 |
olle |
349 |
} |
5093 |
14 Nov 18 |
olle |
catch (e) |
5093 |
14 Nov 18 |
olle |
351 |
{ |
5093 |
14 Nov 18 |
olle |
cs.logError('histology-info', e); |
5093 |
14 Nov 18 |
olle |
353 |
} |
5093 |
14 Nov 18 |
olle |
354 |
} |
5093 |
14 Nov 18 |
olle |
defaultColClass = null; |
5093 |
14 Nov 18 |
olle |
356 |
} |
5093 |
14 Nov 18 |
olle |
else |
5093 |
14 Nov 18 |
olle |
358 |
{ |
5093 |
14 Nov 18 |
olle |
cs.addColumn('histology.name', cs.asNoInfo('No histology information has been registered')); |
5093 |
14 Nov 18 |
olle |
Doc.hide('histology-details'); |
5093 |
14 Nov 18 |
olle |
361 |
} |
5093 |
14 Nov 18 |
olle |
362 |
|
4788 |
02 May 18 |
olle |
var rna = response.rna; |
4788 |
02 May 18 |
olle |
if (rna && rna.length > 0) |
4788 |
02 May 18 |
olle |
365 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(rna.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < rna.length; i++) |
4788 |
02 May 18 |
olle |
368 |
{ |
4788 |
02 May 18 |
olle |
var r = rna[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = yellowPrefixes[r.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('rna.name', cs.asLink('EXTRACT', r)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('rna.name', cs.asLink('EXTRACT', r, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.flag', r.flag ? cs.asFlagInfo(r.flag, 'flag.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.registrationDate', cs.asDate(r.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.specimenType', Strings.encodeTags(r.specimenType)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.samplingDate', cs.warnIfMissing(cs.asDateTime(r.samplingDate))); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.viableTumourCellsPercent', r.viableTumourCellsPercent); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.storageBox', cs.asBioPlateLocation(r.bioWell)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.usedQuantity', cs.asQuantity(r.usedQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.extractionDate', cs.asDate(r.extractionDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', r.extractionDate, 'RNA extraction: ' + r.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.extractionProtocol', cs.asLink('PROTOCOL', r.extractionProtocol, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.remainingQuantity', cs.asQuantity(r.remainingQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.originalQuantity', cs.asQuantity(r.originalQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
384 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.ndConc', cs.asQuantity(r.ndConc, ' ng/µl')); |
4788 |
02 May 18 |
olle |
386 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.operatorDeliveryComment', cs.truncate(r.operatorDeliveryComment, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.description', cs.truncate(r.description, truncateAt)); |
4788 |
02 May 18 |
olle |
389 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.startPlate', cs.asLink('BIOPLATE', r.startPlate)); |
4788 |
02 May 18 |
olle |
391 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.startList', cs.asLink('ITEMLIST', r.startList)); |
4788 |
02 May 18 |
olle |
393 |
/* |
4788 |
02 May 18 |
olle |
394 |
|
4788 |
02 May 18 |
olle |
var hasQc = r.nofQc ? true : false; |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qc', hasQc ? (r.qcDate ? cs.asDate(r.qcDate) : cs.asNoInfo('Waiting for Caliper...')) : 'No'); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.nofQc', hasQc ? r.nofQc : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qcProtocol', hasQc ? cs.asLink('PROTOCOL', r.qcProtocol, truncateAt) : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qcPlate', hasQc ? cs.asBioPlateLocation(r.qcPlate)+cs.asFileLink(r.qcPdf, 'pdffile.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qcRqs', hasQc && r.qcRqs ? Meludi.formatNumber(r.qcRqs, null, 1) : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qcRin', hasQc && r.qcRin ? Meludi.formatNumber(r.qcRin, null, 1) : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.qcDescription', hasQc ? cs.truncate(r.qcDescription, truncateAt) : null); |
4788 |
02 May 18 |
olle |
403 |
*/ |
4788 |
02 May 18 |
olle |
404 |
} |
4788 |
02 May 18 |
olle |
405 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
407 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('rna.name', cs.asNoInfo('No RNA information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('rna-details'); |
4788 |
02 May 18 |
olle |
410 |
} |
4788 |
02 May 18 |
olle |
411 |
|
4788 |
02 May 18 |
olle |
var dna = response.dna; |
4788 |
02 May 18 |
olle |
if (dna && dna.length > 0) |
4788 |
02 May 18 |
olle |
414 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(dna.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < dna.length; i++) |
4788 |
02 May 18 |
olle |
417 |
{ |
4788 |
02 May 18 |
olle |
var d = dna[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = yellowPrefixes[d.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('dna.name', cs.asLink('EXTRACT', d)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('dna.name', cs.asLink('EXTRACT', d, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.registrationDate', cs.asDate(d.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.specimenType', Strings.encodeTags(d.specimenType)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.samplingDate', cs.warnIfMissing(cs.asDateTime(d.samplingDate))); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.viableTumourCellsPercent', d.viableTumourCellsPercent); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.storageBox', cs.asBioPlateLocation(d.bioWell)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.extractionDate', cs.asDate(d.extractionDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', d.extractionDate, 'DNA extraction: ' + d.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.extractionProtocol', cs.asLink('PROTOCOL', d.extractionProtocol, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.remainingQuantity', cs.asQuantity(d.remainingQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.originalQuantity', cs.asQuantity(d.originalQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
431 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.ndConc', cs.asQuantity(d.ndConc, ' ng/µl')); |
4788 |
02 May 18 |
olle |
433 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.operatorDeliveryComment', cs.truncate(d.operatorDeliveryComment, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.description', cs.truncate(d.description, truncateAt)); |
4788 |
02 May 18 |
olle |
436 |
/* |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.startPlate', cs.asLink('BIOPLATE', d.startPlate)); |
4788 |
02 May 18 |
olle |
438 |
*/ |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.startList', cs.asLink('ITEMLIST', d.startList)); |
4788 |
02 May 18 |
olle |
440 |
} |
4788 |
02 May 18 |
olle |
441 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
443 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('dna.name', cs.asNoInfo('No DNA information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('dna-details'); |
4788 |
02 May 18 |
olle |
446 |
} |
4788 |
02 May 18 |
olle |
447 |
|
4788 |
02 May 18 |
olle |
448 |
/* |
4788 |
02 May 18 |
olle |
var mrna = response.mrna; |
4788 |
02 May 18 |
olle |
if (mrna && mrna.length > 0) |
4788 |
02 May 18 |
olle |
451 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(mrna.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < mrna.length; i++) |
4788 |
02 May 18 |
olle |
454 |
{ |
4788 |
02 May 18 |
olle |
var r = mrna[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = yellowPrefixes[r.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('mrna.name', cs.asLink('EXTRACT', r)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('mrna.name', cs.asLink('EXTRACT', r, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.registrationDate', cs.asDate(r.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.storageBox', cs.asBioPlateLocation(r.bioWell)+cs.asFileLink(r.platePdf, 'pdffile.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.result', (r.result && r.result != 'Successful') ? cs.asFailInfo(r.result, 'error.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.cleanupDate', cs.asDate(r.cleanupDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', r.cleanupDate, 'mRNA cleanup: ' + r.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.usedQuantity', cs.asQuantity(r.usedQuantity, ' µg')); |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.description', cs.truncate(r.description, truncateAt)); |
4788 |
02 May 18 |
olle |
465 |
} |
4788 |
02 May 18 |
olle |
466 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
468 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('mrna.name', cs.asNoInfo('No mRNA information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('mrna-details'); |
4788 |
02 May 18 |
olle |
471 |
} |
4788 |
02 May 18 |
olle |
472 |
|
4788 |
02 May 18 |
olle |
var cdna = response.cdna; |
4788 |
02 May 18 |
olle |
if (cdna && cdna.length > 0) |
4788 |
02 May 18 |
olle |
475 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(cdna.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < cdna.length; i++) |
4788 |
02 May 18 |
olle |
478 |
{ |
4788 |
02 May 18 |
olle |
var r = cdna[i]; |
5031 |
16 Oct 18 |
olle |
defaultColClass = yellowPrefixes[r.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('cdna.name', cs.asLink('EXTRACT', r)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('cdna.name', cs.asLink('EXTRACT', r, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.registrationDate', cs.asDate(r.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.storageBox', cs.asBioPlateLocation(r.bioWell)); |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.result', (r.result && r.result != 'Successful') ? cs.asFailInfo(r.result, 'error.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.synthesisDate', cs.asDate(r.synthesisDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', r.synthesisDate, 'cDNA synthesis: ' + r.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.description', cs.truncate(r.description, truncateAt)); |
4788 |
02 May 18 |
olle |
488 |
} |
4788 |
02 May 18 |
olle |
489 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
491 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('cdna.name', cs.asNoInfo('No cDNA information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('cdna-details'); |
4788 |
02 May 18 |
olle |
494 |
} |
4788 |
02 May 18 |
olle |
495 |
*/ |
4788 |
02 May 18 |
olle |
var lib = response.lib; |
4788 |
02 May 18 |
olle |
if (lib && lib.length > 0) |
4788 |
02 May 18 |
olle |
498 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(lib.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < lib.length; i++) |
4788 |
02 May 18 |
olle |
501 |
{ |
4788 |
02 May 18 |
olle |
var d = lib[i]; |
4788 |
02 May 18 |
olle |
var barcodeInfo = 'NA'; |
4788 |
02 May 18 |
olle |
if (d.index1 != null && d.index2 != null) |
4788 |
02 May 18 |
olle |
505 |
{ |
4788 |
02 May 18 |
olle |
barcodeInfo = cs.asLink('TAG', d.index2) + ',' + cs.asLink('TAG', d.index1); |
4788 |
02 May 18 |
olle |
507 |
} |
5031 |
16 Oct 18 |
olle |
defaultColClass = yellowPrefixes[d.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
//cs.addColumn('lib.name', cs.asLink('EXTRACT', d)); |
5092 |
14 Nov 18 |
olle |
cs.addColumn('lib.name', cs.asLink('EXTRACT', d, 0, true)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.registrationDate', cs.asDate(d.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.storageBox', cs.asBioPlateLocation(d.bioWell)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.result', (d.result && d.result != 'Successful') ? cs.asFailInfo(d.result, 'error.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.cleanupDate', cs.asDate(d.cleanupDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', d.cleanupDate, 'Library cleanup: ' + d.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.libPrepProtocol', cs.asLink('PROTOCOL', d.libPrepProtocol, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.libPrepKit', cs.asLink('KIT', d.libPrepKit, truncateAt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.remainingQuantity', cs.asQuantity(d.remainingQuantity, ' ng', 0.001)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.originalQuantity', cs.asQuantity(d.originalQuantity, ' ng', 0.001)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.barcode.name', barcodeInfo); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.ca_size', cs.asQuantity(d.ca_size, '')); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.molarity', cs.asQuantity(d.library_molarity_est, ' nM')); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.adapterFrac', cs.asPercent(d.library_frac_adpt)); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.qubitconc', cs.asQuantity(d.qubitconc, ' ng/µl')); |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.description', cs.truncate(d.description, truncateAt)); |
4788 |
02 May 18 |
olle |
525 |
} |
4788 |
02 May 18 |
olle |
526 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
528 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('lib.name', cs.asNoInfo('No library information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('lib-details'); |
4788 |
02 May 18 |
olle |
531 |
} |
4788 |
02 May 18 |
olle |
532 |
/* |
4788 |
02 May 18 |
olle |
var pooledLib = response.pooledlib; |
4788 |
02 May 18 |
olle |
if (pooledLib && pooledLib.length > 0) |
4788 |
02 May 18 |
olle |
535 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(pooledLib.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < pooledLib.length; i++) |
4788 |
02 May 18 |
olle |
538 |
{ |
4788 |
02 May 18 |
olle |
var r = pooledLib[i]; |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.name', cs.asLink('EXTRACT', r)); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.registrationDate', cs.asDate(r.registrationDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.poolDate', cs.asDate(r.poolDate)+cs.asLabEnvLink('http://givare2.onk.lu.se/', r.poolDate, 'Pooled library pooling: ' + r.name, 'thermometer.png')); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.remainingQuantity', cs.asQuantity(r.remainingQuantity, ' ng', 0.001)); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.originalQuantity', cs.asQuantity(r.originalQuantity, ' ng', 0.001)); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.poolMolarity', cs.asQuantity(r.poolMolarity, ' nM')); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.poolConc', cs.asQuantity(r.poolConc, ' ng/µl')); |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.description', cs.truncate(r.description, truncateAt)); |
4788 |
02 May 18 |
olle |
548 |
} |
4788 |
02 May 18 |
olle |
549 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
551 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('pooledlib.name', cs.asNoInfo('No pooled library information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('pooledlib-details'); |
4788 |
02 May 18 |
olle |
554 |
} |
4788 |
02 May 18 |
olle |
555 |
|
4788 |
02 May 18 |
olle |
var sequencingRuns = response.sequencingRun; |
4788 |
02 May 18 |
olle |
if (sequencingRuns && sequencingRuns.length > 0) |
4788 |
02 May 18 |
olle |
558 |
{ |
4788 |
02 May 18 |
olle |
var truncateAt = TRUNCATE_SIZE[Math.min(sequencingRuns.length-1, TRUNCATE_SIZE.length)]; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < sequencingRuns.length; i++) |
4788 |
02 May 18 |
olle |
561 |
{ |
4788 |
02 May 18 |
olle |
var sr = sequencingRuns[i]; |
4788 |
02 May 18 |
olle |
var fc = sr.flowCell; |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.name', cs.asLink('DERIVEDBIOASSAY', sr)); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.flowCell', cs.asLink('PHYSICALBIOASSAY', fc)); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.result', (sr.result && sr.result != 'Successful') ? cs.asFailInfo(sr.result, 'error.png') : null); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.clusterDate', cs.asDate(fc.clusterDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.startDate', cs.asDate(sr.startDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.endDate', cs.asDate(sr.endDate)); |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.description', cs.truncate(sr.description, truncateAt)); |
4788 |
02 May 18 |
olle |
571 |
} |
4788 |
02 May 18 |
olle |
572 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
574 |
{ |
4788 |
02 May 18 |
olle |
cs.addColumn('sequencingRun.name', cs.asNoInfo('No sequencing information has been registered')); |
4788 |
02 May 18 |
olle |
Doc.hide('sequencingRun-details'); |
4788 |
02 May 18 |
olle |
577 |
} |
4788 |
02 May 18 |
olle |
578 |
*/ |
4788 |
02 May 18 |
olle |
579 |
|
4788 |
02 May 18 |
olle |
var linkedItems = document.getElementsByClassName('linked-item'); |
4788 |
02 May 18 |
olle |
for (var itemNo = 0; itemNo < linkedItems.length; itemNo++) |
4788 |
02 May 18 |
olle |
582 |
{ |
4788 |
02 May 18 |
olle |
Events.addEventHandler(linkedItems[itemNo], 'click', Items.itemOnClick); |
4788 |
02 May 18 |
olle |
584 |
} |
4788 |
02 May 18 |
olle |
585 |
|
4788 |
02 May 18 |
olle |
var linkedFiles = document.getElementsByClassName('linked-file'); |
4788 |
02 May 18 |
olle |
for (var fileNo = 0; fileNo < linkedFiles.length; fileNo++) |
4788 |
02 May 18 |
olle |
588 |
{ |
4788 |
02 May 18 |
olle |
Events.addEventHandler(linkedFiles[fileNo], 'click', Files.viewFileOnClick); |
4788 |
02 May 18 |
olle |
590 |
} |
4788 |
02 May 18 |
olle |
591 |
|
4788 |
02 May 18 |
olle |
592 |
/* |
4788 |
02 May 18 |
olle |
var linkedLabEnvs = document.getElementsByClassName('linked-labenv'); |
4788 |
02 May 18 |
olle |
for (var labEnvNo = 0; labEnvNo < linkedLabEnvs.length; labEnvNo++) |
4788 |
02 May 18 |
olle |
595 |
{ |
4788 |
02 May 18 |
olle |
Events.addEventHandler(linkedLabEnvs[labEnvNo], 'click', LabEnvs.viewDataOnClick); |
4788 |
02 May 18 |
olle |
597 |
} |
4788 |
02 May 18 |
olle |
598 |
*/ |
4788 |
02 May 18 |
olle |
599 |
|
4788 |
02 May 18 |
olle |
var linkedCases = document.getElementsByClassName('linked-case'); |
4788 |
02 May 18 |
olle |
for (var caseNo = 0; caseNo < linkedCases.length; caseNo++) |
4788 |
02 May 18 |
olle |
602 |
{ |
4788 |
02 May 18 |
olle |
Events.addEventHandler(linkedCases[caseNo], 'click', cs.caseSummary); |
4788 |
02 May 18 |
olle |
604 |
} |
5092 |
14 Nov 18 |
olle |
605 |
|
5092 |
14 Nov 18 |
olle |
chainedItems = document.getElementsByClassName('chained-item'); |
5092 |
14 Nov 18 |
olle |
for (var itemNo = 0; itemNo < chainedItems.length; itemNo++) |
5092 |
14 Nov 18 |
olle |
608 |
{ |
5092 |
14 Nov 18 |
olle |
Events.addEventHandler(chainedItems[itemNo], 'click', cs.chainedItemOnClick); |
5092 |
14 Nov 18 |
olle |
610 |
} |
5092 |
14 Nov 18 |
olle |
611 |
|
5092 |
14 Nov 18 |
olle |
var highlight = Data.get('page-data', 'highlight')+'.'; |
5092 |
14 Nov 18 |
olle |
if (highlight) |
5092 |
14 Nov 18 |
olle |
614 |
{ |
5092 |
14 Nov 18 |
olle |
var targetList = highlight.split(','); |
5092 |
14 Nov 18 |
olle |
var rootItem = cs.highlightChainedItems(targetList, targetList[0]); |
5092 |
14 Nov 18 |
olle |
if (rootItem) |
5092 |
14 Nov 18 |
olle |
618 |
{ |
5092 |
14 Nov 18 |
olle |
Doc.addClass(rootItem.parentNode, 'rootitem'); |
5092 |
14 Nov 18 |
olle |
620 |
} |
5092 |
14 Nov 18 |
olle |
621 |
} |
5092 |
14 Nov 18 |
olle |
622 |
|
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::caseInfoLoaded(): End"); |
4788 |
02 May 18 |
olle |
624 |
} |
4788 |
02 May 18 |
olle |
625 |
|
5092 |
14 Nov 18 |
olle |
cs.chainedItemOnClick = function(event) |
5092 |
14 Nov 18 |
olle |
627 |
{ |
5092 |
14 Nov 18 |
olle |
// A possible list of 'chain-id' values that should be highlighted |
5092 |
14 Nov 18 |
olle |
var targetList = Data.get(event.currentTarget, 'chain-id').split(','); |
5092 |
14 Nov 18 |
olle |
cs.highlightChainedItems(targetList); |
5092 |
14 Nov 18 |
olle |
Doc.addClass(event.currentTarget.parentNode, 'rootitem'); |
5092 |
14 Nov 18 |
olle |
632 |
} |
5092 |
14 Nov 18 |
olle |
633 |
|
5092 |
14 Nov 18 |
olle |
634 |
/** |
5092 |
14 Nov 18 |
olle |
Highlight all items that share part of the name with the target |
5092 |
14 Nov 18 |
olle |
that was clicked. Note that parent items have a shorter name and |
5092 |
14 Nov 18 |
olle |
child items have a longer name so we need two tests. |
5092 |
14 Nov 18 |
olle |
638 |
*/ |
5092 |
14 Nov 18 |
olle |
cs.highlightChainedItems = function(targetList, scrollTo) |
5092 |
14 Nov 18 |
olle |
640 |
{ |
5092 |
14 Nov 18 |
olle |
// 'targetList' is a possible list of 'chain-id' values that should be highlighted |
5092 |
14 Nov 18 |
olle |
// 'autoScroll' is used as a marker so that that only the first <td> within the same <table> is scrolled into view |
5092 |
14 Nov 18 |
olle |
var autoScroll = new Date().getTime(); |
5092 |
14 Nov 18 |
olle |
var rootItem = null; |
5092 |
14 Nov 18 |
olle |
for (var itemNo = 0; itemNo < chainedItems.length; itemNo++) |
5092 |
14 Nov 18 |
olle |
646 |
{ |
5092 |
14 Nov 18 |
olle |
var item = chainedItems[itemNo]; |
5092 |
14 Nov 18 |
olle |
var chainId = Data.get(item, 'chain-id').split(','); |
5092 |
14 Nov 18 |
olle |
var inChain = cs.hasCommonElement(targetList, chainId); |
5092 |
14 Nov 18 |
olle |
Doc.addOrRemoveClass(item.parentNode, 'chained', inChain); |
5092 |
14 Nov 18 |
olle |
Doc.removeClass(item.parentNode, 'rootitem'); |
5092 |
14 Nov 18 |
olle |
652 |
|
5092 |
14 Nov 18 |
olle |
// This handles vertical scrolling to the root item |
5092 |
14 Nov 18 |
olle |
if (scrollTo && chainId.indexOf(scrollTo) >= 0) |
5092 |
14 Nov 18 |
olle |
655 |
{ |
5092 |
14 Nov 18 |
olle |
item.parentNode.scrollIntoView(); |
5092 |
14 Nov 18 |
olle |
scrollTo = null; |
5092 |
14 Nov 18 |
olle |
rootItem = item; |
5092 |
14 Nov 18 |
olle |
659 |
} |
5092 |
14 Nov 18 |
olle |
660 |
|
5092 |
14 Nov 18 |
olle |
if (inChain) |
5092 |
14 Nov 18 |
olle |
662 |
{ |
5092 |
14 Nov 18 |
olle |
// Try to scroll the highlighted item into view |
5092 |
14 Nov 18 |
olle |
// We need to get the <td> aligned left or right in the <div> that is the |
5092 |
14 Nov 18 |
olle |
// parent to the <table> |
5092 |
14 Nov 18 |
olle |
var td = item.parentNode; |
5092 |
14 Nov 18 |
olle |
var tbl = td.parentNode.parentNode.parentNode; // Moving: td -> tr -> thead -> table |
5092 |
14 Nov 18 |
olle |
var div = tbl.parentNode; |
5092 |
14 Nov 18 |
olle |
if (div.autoScroll != autoScroll) |
5092 |
14 Nov 18 |
olle |
670 |
{ |
5092 |
14 Nov 18 |
olle |
if (td.offsetLeft < div.scrollLeft) |
5092 |
14 Nov 18 |
olle |
672 |
{ |
5092 |
14 Nov 18 |
olle |
div.scrollLeft = td.offsetLeft; |
5092 |
14 Nov 18 |
olle |
div.autoScroll = autoScroll; |
5092 |
14 Nov 18 |
olle |
675 |
} |
5092 |
14 Nov 18 |
olle |
else if (td.offsetLeft + td.offsetWidth > div.scrollLeft + div.offsetWidth) |
5092 |
14 Nov 18 |
olle |
677 |
{ |
5092 |
14 Nov 18 |
olle |
div.scrollLeft = td.offsetLeft + td.offsetWidth - div.offsetWidth; |
5092 |
14 Nov 18 |
olle |
div.autoScroll = autoScroll; |
5092 |
14 Nov 18 |
olle |
680 |
} |
5092 |
14 Nov 18 |
olle |
681 |
} |
5092 |
14 Nov 18 |
olle |
682 |
} |
5092 |
14 Nov 18 |
olle |
683 |
} |
5092 |
14 Nov 18 |
olle |
return rootItem; |
5092 |
14 Nov 18 |
olle |
685 |
} |
5092 |
14 Nov 18 |
olle |
686 |
|
5092 |
14 Nov 18 |
olle |
687 |
/** |
5092 |
14 Nov 18 |
olle |
Check if the two lists have at least a pair of elements |
5092 |
14 Nov 18 |
olle |
were one is a substring of the other. |
5092 |
14 Nov 18 |
olle |
690 |
*/ |
5092 |
14 Nov 18 |
olle |
cs.hasCommonElement = function(list1, list2) |
5092 |
14 Nov 18 |
olle |
692 |
{ |
5092 |
14 Nov 18 |
olle |
for (var i1 = 0; i1 < list1.length; i1++) |
5092 |
14 Nov 18 |
olle |
694 |
{ |
5092 |
14 Nov 18 |
olle |
var e1 = list1[i1]; |
5092 |
14 Nov 18 |
olle |
for (var i2 = 0; i2 < list2.length; i2++) |
5092 |
14 Nov 18 |
olle |
697 |
{ |
5092 |
14 Nov 18 |
olle |
var e2 = list2[i2]; |
5092 |
14 Nov 18 |
olle |
if (e2.indexOf(e1) == 0 || e1.indexOf(e2) == 0) return true; |
5092 |
14 Nov 18 |
olle |
700 |
} |
5092 |
14 Nov 18 |
olle |
701 |
} |
5092 |
14 Nov 18 |
olle |
return false; |
5092 |
14 Nov 18 |
olle |
703 |
} |
5092 |
14 Nov 18 |
olle |
704 |
|
4788 |
02 May 18 |
olle |
cs.initSections = function(sections) |
4788 |
02 May 18 |
olle |
706 |
{ |
4788 |
02 May 18 |
olle |
for (var s = 0; s < sections.length; s++) |
4788 |
02 May 18 |
olle |
708 |
{ |
4788 |
02 May 18 |
olle |
var section = sections[s]; |
4788 |
02 May 18 |
olle |
710 |
|
4788 |
02 May 18 |
olle |
var details = Doc.element(section.id+'-details'); |
4788 |
02 May 18 |
olle |
// If the details section is 'forcibly' hidden (eg. no items of that type), ignore this call |
4788 |
02 May 18 |
olle |
if (details && details.style.display != 'none') |
4788 |
02 May 18 |
olle |
714 |
{ |
4788 |
02 May 18 |
olle |
var headerDiv = Doc.element(section.id+'-header'); |
4788 |
02 May 18 |
olle |
if (headerDiv) |
4788 |
02 May 18 |
olle |
717 |
{ |
4788 |
02 May 18 |
olle |
Doc.addClass(headerDiv, 'link'); |
4788 |
02 May 18 |
olle |
headerDiv.title = 'Hide/show details'; |
4788 |
02 May 18 |
olle |
headerDiv.sectionId = section.id; |
4788 |
02 May 18 |
olle |
Events.addEventHandler(headerDiv, 'click', cs.toggleDetails); |
4788 |
02 May 18 |
olle |
722 |
} |
4788 |
02 May 18 |
olle |
723 |
|
4788 |
02 May 18 |
olle |
var sectionDiv = Doc.element(section.id+'-info'); |
4788 |
02 May 18 |
olle |
Doc.addOrRemoveClass(sectionDiv, 'hide-details', section.hiddenDetails); |
4788 |
02 May 18 |
olle |
726 |
} |
4788 |
02 May 18 |
olle |
727 |
} |
4788 |
02 May 18 |
olle |
728 |
} |
4788 |
02 May 18 |
olle |
729 |
|
4788 |
02 May 18 |
olle |
cs.toggleDetails = function(event) |
4788 |
02 May 18 |
olle |
731 |
{ |
4788 |
02 May 18 |
olle |
var sectionId = event.currentTarget.sectionId; |
4788 |
02 May 18 |
olle |
var details = Doc.element(sectionId+'-details'); |
4788 |
02 May 18 |
olle |
// If the details section is 'forcibly' hidden (eg. no items of that type), ignore this call |
4788 |
02 May 18 |
olle |
if (details.style.display == 'none') return; |
4788 |
02 May 18 |
olle |
736 |
|
4788 |
02 May 18 |
olle |
// Add 'hide-details' class to main <div section-info> if it is visible |
4788 |
02 May 18 |
olle |
var section = Doc.element(sectionId+'-info'); |
4788 |
02 May 18 |
olle |
var isVisible = section.className.indexOf('hide-details') == -1; |
4788 |
02 May 18 |
olle |
Doc.addOrRemoveClass(section, 'hide-details', isVisible); |
4788 |
02 May 18 |
olle |
741 |
|
4788 |
02 May 18 |
olle |
// Save to BASE setting |
4788 |
02 May 18 |
olle |
var url = '../CaseSummary.servlet?ID='+App.getSessionId(); |
4788 |
02 May 18 |
olle |
url += '&cmd=SetSectionVisibility'; |
4788 |
02 May 18 |
olle |
url += '§ion='+sectionId+'&hidden='+(isVisible ? 1 : 0); |
4788 |
02 May 18 |
olle |
Wizard.asyncJsonRequest(url, null, 'POST'); |
4788 |
02 May 18 |
olle |
747 |
} |
4788 |
02 May 18 |
olle |
748 |
|
5092 |
14 Nov 18 |
olle |
cs.getDefaultColClass = function(item, yellowPrefixes) |
5092 |
14 Nov 18 |
olle |
750 |
{ |
5092 |
14 Nov 18 |
olle |
var defaultColClass = yellowPrefixes[item.name.substr(0,sampleItemNameLength)]; |
5092 |
14 Nov 18 |
olle |
752 |
/* |
5092 |
14 Nov 18 |
olle |
if (item.DO_NOT_USE) |
5092 |
14 Nov 18 |
olle |
754 |
{ |
5092 |
14 Nov 18 |
olle |
defaultColClass = 'donotuse ' + (defaultColClass || ''); |
5092 |
14 Nov 18 |
olle |
756 |
} |
5092 |
14 Nov 18 |
olle |
757 |
*/ |
5092 |
14 Nov 18 |
olle |
return defaultColClass; |
5092 |
14 Nov 18 |
olle |
759 |
} |
5092 |
14 Nov 18 |
olle |
760 |
|
5031 |
16 Oct 18 |
olle |
cs.addColumn = function(id, value, className) |
4788 |
02 May 18 |
olle |
762 |
{ |
4788 |
02 May 18 |
olle |
//alert("case_summary_alt_rec::addColumn(): Start"); |
4788 |
02 May 18 |
olle |
var tr = Doc.element(id); |
4788 |
02 May 18 |
olle |
var td = document.createElement('td'); |
5031 |
16 Oct 18 |
olle |
if (!className) className = defaultColClass; |
5031 |
16 Oct 18 |
olle |
if (className) td.className = className; |
4788 |
02 May 18 |
olle |
if (tr.hasAddedColumns) |
4788 |
02 May 18 |
olle |
769 |
{ |
4788 |
02 May 18 |
olle |
td.className = 'extra-column'; |
4788 |
02 May 18 |
olle |
tr.childNodes[tr.childNodes.length-1].className += ' fixed-column'; |
4788 |
02 May 18 |
olle |
772 |
} |
4788 |
02 May 18 |
olle |
tr.hasAddedColumns = true; |
4788 |
02 May 18 |
olle |
if (value != null) |
4788 |
02 May 18 |
olle |
775 |
{ |
4788 |
02 May 18 |
olle |
td.innerHTML = value == '' ? ' ' : value; |
4788 |
02 May 18 |
olle |
if (tr.className.indexOf('dynamic-column') >= 0) |
4788 |
02 May 18 |
olle |
778 |
{ |
4788 |
02 May 18 |
olle |
tr.style.display = 'table-row'; |
4788 |
02 May 18 |
olle |
780 |
} |
4788 |
02 May 18 |
olle |
781 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
783 |
{ |
4788 |
02 May 18 |
olle |
td.innerHTML = ' '; |
4788 |
02 May 18 |
olle |
785 |
} |
4788 |
02 May 18 |
olle |
tr.appendChild(td); |
4788 |
02 May 18 |
olle |
787 |
} |
4788 |
02 May 18 |
olle |
788 |
|
5092 |
14 Nov 18 |
olle |
cs.asLink = function(itemType, item, maxLength, chainable) |
4788 |
02 May 18 |
olle |
790 |
{ |
4788 |
02 May 18 |
olle |
var link = ''; |
4788 |
02 May 18 |
olle |
if (item) |
4788 |
02 May 18 |
olle |
793 |
{ |
4788 |
02 May 18 |
olle |
var name = cs.truncate(item.name, maxLength); |
4788 |
02 May 18 |
olle |
if (item.id) |
4788 |
02 May 18 |
olle |
796 |
{ |
4788 |
02 May 18 |
olle |
link = '<span class="link linked-item" data-item-type="'+itemType+'" data-item-id="'+item.id+'" data-no-edit="'+(item.editable ? 0 : 1)+'">'; |
4788 |
02 May 18 |
olle |
link += name + '</span>'; |
4788 |
02 May 18 |
olle |
799 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
801 |
{ |
4788 |
02 May 18 |
olle |
link = name; |
4788 |
02 May 18 |
olle |
803 |
} |
5092 |
14 Nov 18 |
olle |
if (chainable) |
5092 |
14 Nov 18 |
olle |
805 |
{ |
5092 |
14 Nov 18 |
olle |
var chainId = item.name; |
5092 |
14 Nov 18 |
olle |
if (chainable.length) chainId = chainable.join('.,'); |
5092 |
14 Nov 18 |
olle |
// NOTE! 'chain-id' is name of item + '.' to ensure correct matching of substrings ('foo.m2' is NOT in the same chain when starting at 'foo.m') |
5092 |
14 Nov 18 |
olle |
//link += '<img class="chained-item" data-chain-id="'+Strings.encodeTags(chainId)+'." title="Highlight all parent/child items" src="'+home+'/images/parent-child.png">'; |
5092 |
14 Nov 18 |
olle |
link += '<img class="chained-item" data-chain-id="'+Strings.encodeTags(chainId)+'." title="Highlight all parent/child items" src="../images/parent-child.png">'; |
5092 |
14 Nov 18 |
olle |
811 |
} |
4788 |
02 May 18 |
olle |
812 |
} |
4788 |
02 May 18 |
olle |
return link; |
4788 |
02 May 18 |
olle |
814 |
} |
4788 |
02 May 18 |
olle |
815 |
|
4788 |
02 May 18 |
olle |
cs.asFileLink = function(file, icon) |
4788 |
02 May 18 |
olle |
817 |
{ |
4788 |
02 May 18 |
olle |
var link = ''; |
4788 |
02 May 18 |
olle |
if (file) |
4788 |
02 May 18 |
olle |
820 |
{ |
4788 |
02 May 18 |
olle |
link = '<span class="link linked-file" data-file-id="'+file.id+'"><img src="../images/'+icon+'"></span>'; |
4788 |
02 May 18 |
olle |
822 |
} |
4788 |
02 May 18 |
olle |
return link; |
4788 |
02 May 18 |
olle |
824 |
} |
4788 |
02 May 18 |
olle |
825 |
|
4788 |
02 May 18 |
olle |
cs.asLabEnvLink = function(sensor, date, title, icon) |
4788 |
02 May 18 |
olle |
827 |
{ |
4788 |
02 May 18 |
olle |
var link = ''; |
4788 |
02 May 18 |
olle |
// Check if BASE extension LabEnv is installed |
4788 |
02 May 18 |
olle |
var homeLabEnv = Data.get('page-data', 'home-labenv'); |
4788 |
02 May 18 |
olle |
if (homeLabEnv) |
4788 |
02 May 18 |
olle |
832 |
{ |
4788 |
02 May 18 |
olle |
if (date) |
4788 |
02 May 18 |
olle |
834 |
{ |
4788 |
02 May 18 |
olle |
if (sensor) |
4788 |
02 May 18 |
olle |
836 |
{ |
4788 |
02 May 18 |
olle |
// Link to pop-up window with lab environment data for the chosen sensor and date |
4788 |
02 May 18 |
olle |
link = '<span class="link linked-labenv" data-sensor="'+sensor+'" data-date="'+date+'" data-title="'+title+'"><img src="../images/'+icon+'"></span>'; |
4788 |
02 May 18 |
olle |
839 |
} |
4788 |
02 May 18 |
olle |
840 |
} |
4788 |
02 May 18 |
olle |
841 |
} |
4788 |
02 May 18 |
olle |
return link; |
4788 |
02 May 18 |
olle |
843 |
} |
4788 |
02 May 18 |
olle |
844 |
|
4788 |
02 May 18 |
olle |
cs.asCaseList = function(allCases, mainCase) |
4788 |
02 May 18 |
olle |
846 |
{ |
4788 |
02 May 18 |
olle |
var html = ''; |
4788 |
02 May 18 |
olle |
for (var i = 0; i < allCases.length; i++) |
4788 |
02 May 18 |
olle |
849 |
{ |
4788 |
02 May 18 |
olle |
var cse = allCases[i]; |
4788 |
02 May 18 |
olle |
var cse2 = Strings.encodeTags(cse); |
4788 |
02 May 18 |
olle |
if (html != '') html += ', '; |
4788 |
02 May 18 |
olle |
if (cse != mainCase) |
4788 |
02 May 18 |
olle |
854 |
{ |
4788 |
02 May 18 |
olle |
html += '<span class="link linked-case" data-case-name="'+cse2+'" title="Show summary of case #'+cse2+'">'+cse2+'</span>'; |
4788 |
02 May 18 |
olle |
856 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
858 |
{ |
4788 |
02 May 18 |
olle |
html += '<b>' + cse2 + '</b>'; |
4788 |
02 May 18 |
olle |
860 |
} |
4788 |
02 May 18 |
olle |
861 |
} |
4788 |
02 May 18 |
olle |
return allCases.length > 1 ? html : null; |
4788 |
02 May 18 |
olle |
863 |
} |
4788 |
02 May 18 |
olle |
864 |
|
4788 |
02 May 18 |
olle |
865 |
|
4788 |
02 May 18 |
olle |
// Format value as a date |
4788 |
02 May 18 |
olle |
cs.asDate = function(value) |
4788 |
02 May 18 |
olle |
868 |
{ |
4788 |
02 May 18 |
olle |
if (!value) return ''; |
4788 |
02 May 18 |
olle |
if (value.length == 8) |
4788 |
02 May 18 |
olle |
871 |
{ |
4788 |
02 May 18 |
olle |
value = value.substr(0, 4) + '-' + value.substr(4, 2) + '-' + value.substr(6, 2); |
4788 |
02 May 18 |
olle |
873 |
} |
4788 |
02 May 18 |
olle |
return value; |
4788 |
02 May 18 |
olle |
875 |
} |
4788 |
02 May 18 |
olle |
876 |
|
4788 |
02 May 18 |
olle |
// Format as date+time value |
4788 |
02 May 18 |
olle |
cs.asDateTime = function(value, compareToDate) |
4788 |
02 May 18 |
olle |
879 |
{ |
4788 |
02 May 18 |
olle |
if (!value) return ''; |
4788 |
02 May 18 |
olle |
if (value.length == 8) |
4788 |
02 May 18 |
olle |
882 |
{ |
4788 |
02 May 18 |
olle |
value = cs.asDate(value); |
4788 |
02 May 18 |
olle |
884 |
} |
4788 |
02 May 18 |
olle |
else if (value.length == 13) |
4788 |
02 May 18 |
olle |
886 |
{ |
4788 |
02 May 18 |
olle |
// If the compareToDate is the same day as the 'value' date, skip the date and replace with white-space |
4788 |
02 May 18 |
olle |
if (compareToDate && value.substr(0, 8) == compareToDate.substr(0, 8)) |
4788 |
02 May 18 |
olle |
889 |
{ |
4788 |
02 May 18 |
olle |
value = '<span class="invisible">'+cs.asDate(value.substr(0, 8)) + '</span> ' + value.substr(9, 2) + ':'+value.substr(11, 2) |
4788 |
02 May 18 |
olle |
891 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
893 |
{ |
4788 |
02 May 18 |
olle |
value = cs.asDate(value.substr(0, 8)) + ' ' + value.substr(9, 2) + ':'+value.substr(11, 2); |
4788 |
02 May 18 |
olle |
895 |
} |
4788 |
02 May 18 |
olle |
896 |
} |
4788 |
02 May 18 |
olle |
return value; |
4788 |
02 May 18 |
olle |
898 |
} |
4788 |
02 May 18 |
olle |
899 |
|
4788 |
02 May 18 |
olle |
// Style the value as a quantity with (optional) unit |
4788 |
02 May 18 |
olle |
cs.asQuantity = function(value, unit, scale) |
4788 |
02 May 18 |
olle |
902 |
{ |
4788 |
02 May 18 |
olle |
var result = ''; |
4788 |
02 May 18 |
olle |
if (value != null) |
4788 |
02 May 18 |
olle |
905 |
{ |
4788 |
02 May 18 |
olle |
if (scale) value = value / scale; |
4788 |
02 May 18 |
olle |
result = Meludi.formatNumber(value, unit, 2); |
4788 |
02 May 18 |
olle |
908 |
} |
4788 |
02 May 18 |
olle |
return result; |
4788 |
02 May 18 |
olle |
910 |
} |
4788 |
02 May 18 |
olle |
911 |
|
4788 |
02 May 18 |
olle |
// Style the value as a percentage value |
4788 |
02 May 18 |
olle |
cs.asPercent = function(value) |
4788 |
02 May 18 |
olle |
914 |
{ |
4788 |
02 May 18 |
olle |
var result = ''; |
4788 |
02 May 18 |
olle |
if (value != null) |
4788 |
02 May 18 |
olle |
917 |
{ |
4788 |
02 May 18 |
olle |
result = value + '%'; |
4788 |
02 May 18 |
olle |
919 |
} |
4788 |
02 May 18 |
olle |
return result; |
4788 |
02 May 18 |
olle |
921 |
} |
4788 |
02 May 18 |
olle |
922 |
|
4788 |
02 May 18 |
olle |
923 |
|
4788 |
02 May 18 |
olle |
// Style the message as a warning message |
4788 |
02 May 18 |
olle |
cs.asWarning = function(message) |
4788 |
02 May 18 |
olle |
926 |
{ |
4788 |
02 May 18 |
olle |
message = '<span class="warning">' + message + '</span>'; |
4788 |
02 May 18 |
olle |
return message; |
4788 |
02 May 18 |
olle |
929 |
} |
4788 |
02 May 18 |
olle |
930 |
|
4788 |
02 May 18 |
olle |
// Generate a 'Missing' warning if the value is missing |
4788 |
02 May 18 |
olle |
cs.warnIfMissing = function(value) |
4788 |
02 May 18 |
olle |
933 |
{ |
4788 |
02 May 18 |
olle |
var message = value ? value : cs.asWarning('Missing'); |
4788 |
02 May 18 |
olle |
return message; |
4788 |
02 May 18 |
olle |
936 |
} |
4788 |
02 May 18 |
olle |
937 |
|
4788 |
02 May 18 |
olle |
// Style the message as a 'no information' message |
4788 |
02 May 18 |
olle |
cs.asNoInfo = function(message) |
4788 |
02 May 18 |
olle |
940 |
{ |
4788 |
02 May 18 |
olle |
message = '<span class="no-info">' + message + '</span>'; |
4788 |
02 May 18 |
olle |
return message; |
4788 |
02 May 18 |
olle |
943 |
} |
4788 |
02 May 18 |
olle |
944 |
|
4788 |
02 May 18 |
olle |
// Style the message as a 'flag information' message |
4788 |
02 May 18 |
olle |
cs.asFlagInfo = function(message, icon) |
4788 |
02 May 18 |
olle |
947 |
{ |
4788 |
02 May 18 |
olle |
message = '<span class="flag-info">' + message + ' ' + '<img src="../images/'+icon+'"></span>'; |
4788 |
02 May 18 |
olle |
return message; |
4788 |
02 May 18 |
olle |
950 |
} |
4788 |
02 May 18 |
olle |
951 |
|
4788 |
02 May 18 |
olle |
// Style the message as a 'fail information' message |
4788 |
02 May 18 |
olle |
cs.asFailInfo = function(message, icon) |
4788 |
02 May 18 |
olle |
954 |
{ |
4788 |
02 May 18 |
olle |
message = '<span class="fail-info">' + message + ' ' + '<img src="../images/'+icon+'"></span>'; |
4788 |
02 May 18 |
olle |
return message; |
4788 |
02 May 18 |
olle |
957 |
} |
4788 |
02 May 18 |
olle |
958 |
|
4788 |
02 May 18 |
olle |
cs.asConsent = function(consent, consentDate) |
4788 |
02 May 18 |
olle |
960 |
{ |
4788 |
02 May 18 |
olle |
var warn = !consent || !consentDate; |
4788 |
02 May 18 |
olle |
var message; |
4788 |
02 May 18 |
olle |
if (!consent) |
4788 |
02 May 18 |
olle |
964 |
{ |
4788 |
02 May 18 |
olle |
message = 'Missing' + (consentDate ? ', ' + consentDate : ''); |
4788 |
02 May 18 |
olle |
966 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
968 |
{ |
4788 |
02 May 18 |
olle |
message = consent + ', ' + (consentDate ? consentDate : 'Missing date'); |
4788 |
02 May 18 |
olle |
970 |
|
4788 |
02 May 18 |
olle |
971 |
} |
4788 |
02 May 18 |
olle |
return warn ? cs.asWarning(message) : message; |
4788 |
02 May 18 |
olle |
973 |
} |
4788 |
02 May 18 |
olle |
974 |
|
4788 |
02 May 18 |
olle |
// A biowell as the location |
4788 |
02 May 18 |
olle |
cs.asBioPlateLocation = function(well) |
4788 |
02 May 18 |
olle |
977 |
{ |
4788 |
02 May 18 |
olle |
if (!well) return ''; |
4788 |
02 May 18 |
olle |
var plate = well.bioPlate; |
4788 |
02 May 18 |
olle |
var text = cs.asLink('BIOPLATE', plate) + ' ' + well.location; |
4788 |
02 May 18 |
olle |
if (plate.storage) |
4788 |
02 May 18 |
olle |
982 |
{ |
4788 |
02 May 18 |
olle |
var storage = plate.storage; |
4788 |
02 May 18 |
olle |
var tmp = []; |
4788 |
02 May 18 |
olle |
if (storage.name) tmp[tmp.length] = Strings.encodeTags(storage.name); |
4788 |
02 May 18 |
olle |
if (storage.section) tmp[tmp.length] = 'section: ' +storage.section; |
4788 |
02 May 18 |
olle |
if (storage.tray) tmp[tmp.length] = 'tray: ' +storage.tray; |
4788 |
02 May 18 |
olle |
if (storage.position) tmp[tmp.length] = 'position: ' +storage.position; |
4788 |
02 May 18 |
olle |
989 |
|
4788 |
02 May 18 |
olle |
text = '<span class="more-info" title="' + tmp.join('; ')+'">' + text + ' </span>'; |
4788 |
02 May 18 |
olle |
991 |
} |
4788 |
02 May 18 |
olle |
return text; |
4788 |
02 May 18 |
olle |
993 |
} |
4788 |
02 May 18 |
olle |
994 |
|
4788 |
02 May 18 |
olle |
cs.truncate = function(value, maxLength) |
4788 |
02 May 18 |
olle |
996 |
{ |
4788 |
02 May 18 |
olle |
if (!value) return value; |
4788 |
02 May 18 |
olle |
if (maxLength > 2 && value.length > maxLength) |
4788 |
02 May 18 |
olle |
999 |
{ |
4788 |
02 May 18 |
olle |
var tmp = '<span class="truncated" title="'+value+'">'+Strings.encodeTags(value.substring(0, maxLength-2)) + '...</span>'; |
4788 |
02 May 18 |
olle |
value = tmp; |
4788 |
02 May 18 |
olle |
1002 |
} |
4788 |
02 May 18 |
olle |
else |
4788 |
02 May 18 |
olle |
1004 |
{ |
4788 |
02 May 18 |
olle |
value = Strings.encodeTags(value); |
4788 |
02 May 18 |
olle |
1006 |
} |
4788 |
02 May 18 |
olle |
return value; |
4788 |
02 May 18 |
olle |
1008 |
} |
4788 |
02 May 18 |
olle |
1009 |
|
4788 |
02 May 18 |
olle |
cs.showConfidentialOnChange = function() |
4788 |
02 May 18 |
olle |
1011 |
{ |
4788 |
02 May 18 |
olle |
var frm = document.forms['meludi']; |
4788 |
02 May 18 |
olle |
Doc.addOrRemoveClass('all-info', 'hide-confidential', !frm.showConfidential.checked); |
4788 |
02 May 18 |
olle |
1014 |
} |
4788 |
02 May 18 |
olle |
1015 |
|
4788 |
02 May 18 |
olle |
cs.caseSummary = function(event) |
4788 |
02 May 18 |
olle |
1017 |
{ |
5395 |
02 May 19 |
olle |
//alert("case_summary_alt_rec::caseSummary(): Start"); |
4788 |
02 May 18 |
olle |
var frm = document.forms['meludi']; |
4788 |
02 May 18 |
olle |
var caseName = Data.get(event.currentTarget, 'case-name'); |
5395 |
02 May 19 |
olle |
//alert("case_summary_alt_rec::caseSummary(): caseName from event = " + caseName); |
4788 |
02 May 18 |
olle |
if (!caseName) |
4788 |
02 May 18 |
olle |
1023 |
{ |
4788 |
02 May 18 |
olle |
caseName = frm.caseName_alt_rec.value; |
5395 |
02 May 19 |
olle |
//alert("case_summary_alt_rec::caseSummary(): caseName from input field caseName_alt_rec = " + caseName); |
4788 |
02 May 18 |
olle |
if (!caseName) |
4788 |
02 May 18 |
olle |
1027 |
{ |
4788 |
02 May 18 |
olle |
Forms.showNotification('caseName', 'Please enter a case id ("' + sampleItemPrefix + '" + ' + sampleItemNumDigits + ' digits)', null, null, 'left'); |
4788 |
02 May 18 |
olle |
return; |
4788 |
02 May 18 |
olle |
1030 |
} |
4788 |
02 May 18 |
olle |
1031 |
} |
4788 |
02 May 18 |
olle |
//var url = 'case_summary.jsp?ID='+App.getSessionId(); |
4788 |
02 May 18 |
olle |
var url = 'case_summary_alt_rec.jsp?ID='+App.getSessionId(); |
4788 |
02 May 18 |
olle |
url += '&caseName='+encodeURIComponent(caseName); |
4788 |
02 May 18 |
olle |
url += '&pageType='+Data.get('page-data', 'page-type'); |
5395 |
02 May 19 |
olle |
//alert("case_summary_alt_rec::caseSummary(): url = " + url); |
4788 |
02 May 18 |
olle |
location.href = url; |
4788 |
02 May 18 |
olle |
1038 |
} |
4788 |
02 May 18 |
olle |
1039 |
|
4788 |
02 May 18 |
olle |
cs.goPrint = function() |
4788 |
02 May 18 |
olle |
1041 |
{ |
4788 |
02 May 18 |
olle |
var caseName = Data.get('page-data', 'case-name'); |
4788 |
02 May 18 |
olle |
var printNote = '<b>Note!</b> For better printing set page orientation to <i>portrait</i>.<br>'; |
4788 |
02 May 18 |
olle |
printNote += ' You may have to <i>scale down</i> to fit everything on the width of the page.'; |
4788 |
02 May 18 |
olle |
Meludi.openPrintWindow('all-content', 'Case summary - ' + Strings.encodeTags(caseName), 'portrait', printNote, '../', 'case_summary.css'); |
4788 |
02 May 18 |
olle |
1046 |
} |
4788 |
02 May 18 |
olle |
1047 |
|
4788 |
02 May 18 |
olle |
cs.logError = function(section, err) |
4788 |
02 May 18 |
olle |
1049 |
{ |
4788 |
02 May 18 |
olle |
console.error(err); |
4788 |
02 May 18 |
olle |
section = Doc.element(section); |
4788 |
02 May 18 |
olle |
var div = document.createElement('div'); |
4788 |
02 May 18 |
olle |
div.className = 'messagecontainer error'; |
4788 |
02 May 18 |
olle |
div.innerHTML = err; |
4788 |
02 May 18 |
olle |
section.parentNode.insertBefore(div, section.nextSibling); |
4788 |
02 May 18 |
olle |
1056 |
} |
4788 |
02 May 18 |
olle |
1057 |
|
4788 |
02 May 18 |
olle |
return cs; |
4788 |
02 May 18 |
olle |
1059 |
}(); |
4788 |
02 May 18 |
olle |
1060 |
|
4788 |
02 May 18 |
olle |
var LabEnvs = function() |
4788 |
02 May 18 |
olle |
1062 |
{ |
4788 |
02 May 18 |
olle |
var labenvs = {}; |
4788 |
02 May 18 |
olle |
1064 |
|
4788 |
02 May 18 |
olle |
1065 |
/** |
4788 |
02 May 18 |
olle |
Event handler that calls 'labenv.jar/reports/labenvironmentdatabaseeventpopup.jsp' |
4788 |
02 May 18 |
olle |
when clicking on the attached target. The sensor id should be stored |
4788 |
02 May 18 |
olle |
in attribute 'data-sensor', the date in 'data-date', |
4788 |
02 May 18 |
olle |
and the title in 'data-title'. |
4788 |
02 May 18 |
olle |
1070 |
*/ |
4788 |
02 May 18 |
olle |
labenvs.viewDataOnClick = function(event) |
4788 |
02 May 18 |
olle |
1072 |
{ |
4788 |
02 May 18 |
olle |
var homeLabEnv = Data.get('page-data', 'home-labenv'); |
4788 |
02 May 18 |
olle |
var title = Data.get(event.currentTarget, 'title'); |
4788 |
02 May 18 |
olle |
var sensor = Data.get(event.currentTarget, 'sensor'); |
4788 |
02 May 18 |
olle |
var date = Data.get(event.currentTarget, 'date'); |
4788 |
02 May 18 |
olle |
var url = homeLabEnv; |
4788 |
02 May 18 |
olle |
url += '/reports/labenvironmentdatabaseeventpopup.jsp'; |
4788 |
02 May 18 |
olle |
url += '?ID='+App.getSessionId(); |
4788 |
02 May 18 |
olle |
url += '&pageTitle='+encodeURIComponent(title); |
4788 |
02 May 18 |
olle |
url += '&labSensorUrl='+encodeURIComponent(sensor); |
4788 |
02 May 18 |
olle |
url += '&originDate='+encodeURIComponent(date); |
4788 |
02 May 18 |
olle |
Dialogs.openPopup(url, title, 820, 768); |
4788 |
02 May 18 |
olle |
1084 |
} |
4788 |
02 May 18 |
olle |
1085 |
|
4788 |
02 May 18 |
olle |
return labenvs; |
4788 |
02 May 18 |
olle |
1087 |
}(); |
4788 |
02 May 18 |
olle |
1088 |
|
4788 |
02 May 18 |
olle |
Doc.onLoad(CaseSummaryAltRec.initPage); |