extensions/net.sf.basedb.reggie/trunk/resources/personal/retraction_protocol.js

Code
Comments
Other
Rev Date Author Line
2839 20 Oct 14 olle 1 var RetractionProtocol = function()
2839 20 Oct 14 olle 2 {
2839 20 Oct 14 olle 3   var rp = {};
2839 20 Oct 14 olle 4   var debug = 0;
6731 05 May 22 nicklas 5   var showLabelColumn = false;
2839 20 Oct 14 olle 6   
2839 20 Oct 14 olle 7   // Page initialization
2839 20 Oct 14 olle 8   rp.initPage = function()
2839 20 Oct 14 olle 9   {
2839 20 Oct 14 olle 10     Buttons.addClickHandler('print-button', Wizard.goPrint);
3323 11 May 15 nicklas 11     var url = '../Retraction.servlet?ID='+App.getSessionId();
2839 20 Oct 14 olle 12     url += '&cmd=GetProtocolInfo';
5639 03 Oct 19 nicklas 13     url += '&caseName=' + encodeURIComponent(Data.get('page-data', 'casename'));
5639 03 Oct 19 nicklas 14     url += '&patientId=' + encodeURIComponent(Data.get('page-data', 'patient-id'));
2839 20 Oct 14 olle 15     Wizard.showLoadingAnimation('Creating protocol...');
2839 20 Oct 14 olle 16     Wizard.asyncJsonRequest(url, rp.initializeProtocol);
2839 20 Oct 14 olle 17   }
2839 20 Oct 14 olle 18
2839 20 Oct 14 olle 19   rp.initializeProtocol = function(response)
2839 20 Oct 14 olle 20   {
2839 20 Oct 14 olle 21     var patientInfo = response.patient;
2839 20 Oct 14 olle 22
5639 03 Oct 19 nicklas 23     // Patient and case info
4312 18 Jan 17 nicklas 24     var patientName = patientInfo ? patientInfo.name : 'No patient information is registered for this case.';
5639 03 Oct 19 nicklas 25     Doc.element('patient').innerHTML = Strings.encodeTags(patientName);
5639 03 Oct 19 nicklas 26     Doc.element('allcases').innerHTML = Strings.encodeTags(response.allCaseNames.join(', '));
2839 20 Oct 14 olle 27
2839 20 Oct 14 olle 28     // Item data
5639 03 Oct 19 nicklas 29     var html = '';
5639 03 Oct 19 nicklas 30     html += rp.tableRowsForItems('Specimen', response.specimen);
5639 03 Oct 19 nicklas 31     html += rp.tableRowsForItems('Lysate', response.lysate);
5639 03 Oct 19 nicklas 32     html += rp.tableRowsForItems('RNA', response.rna);
5639 03 Oct 19 nicklas 33     html += rp.tableRowsForItems('DNA', response.dna);
5639 03 Oct 19 nicklas 34     html += rp.tableRowsForItems('FlowThrough', response.flowThrough);
5639 03 Oct 19 nicklas 35     html += rp.tableRowsForItems('BloodDNA', response.bloodDna);
5639 03 Oct 19 nicklas 36     Doc.element('itemList').innerHTML = html;
5639 03 Oct 19 nicklas 37     
6731 05 May 22 nicklas 38     if (showLabelColumn)
6731 05 May 22 nicklas 39     {
6731 05 May 22 nicklas 40       Doc.removeClass('itemTable', 'nolabels');
6731 05 May 22 nicklas 41       Doc.show('protocol-footer');
6731 05 May 22 nicklas 42     }
6731 05 May 22 nicklas 43     
2839 20 Oct 14 olle 44     Doc.show('all-protocol');
2839 20 Oct 14 olle 45   }
2839 20 Oct 14 olle 46   
5639 03 Oct 19 nicklas 47   rp.tableRowsForItems = function(itemType, items)
2839 20 Oct 14 olle 48   {
5639 03 Oct 19 nicklas 49     if (!items || items.length == 0) return '';
2839 20 Oct 14 olle 50     // Table item row
2839 20 Oct 14 olle 51     var html = '';
5639 03 Oct 19 nicklas 52     for (var itemNo = 0; itemNo < items.length; itemNo++)
2839 20 Oct 14 olle 53     {
5639 03 Oct 19 nicklas 54       var item = items[itemNo];
5642 04 Oct 19 nicklas 55       var isDestroyed = item.RetractStatus == 'Destroyed';
6731 05 May 22 nicklas 56       if (item.label) showLabelColumn = true;
5639 03 Oct 19 nicklas 57       
5642 04 Oct 19 nicklas 58       html += '<tr class="'+(isDestroyed ? 'destroyed' : '')+'">';
5639 03 Oct 19 nicklas 59       html += '<td>'+itemType+'</td>';
5639 03 Oct 19 nicklas 60       html += '<td>'+Strings.encodeTags(item.name)+'</td>';
6731 05 May 22 nicklas 61       html += '<td class="label">'+Strings.encodeTags(item.label)+'</td>';
5639 03 Oct 19 nicklas 62       html += '<td>'+rp.asBoxPosition(item.bioWell)+'</td>';
5639 03 Oct 19 nicklas 63       html += '<td>'+rp.asFreezerLocation(item.bioWell)+'</td>';
5642 04 Oct 19 nicklas 64       if (isDestroyed)
5642 04 Oct 19 nicklas 65       {
5642 04 Oct 19 nicklas 66         html += '<td>Already destroyed</td>';
5642 04 Oct 19 nicklas 67       }
5642 04 Oct 19 nicklas 68       else
5642 04 Oct 19 nicklas 69       {
5642 04 Oct 19 nicklas 70         html += '<td><div class="colorbox"></div>Destroyed</td>';
5642 04 Oct 19 nicklas 71       }
5639 03 Oct 19 nicklas 72       html += '</tr>';
2839 20 Oct 14 olle 73     }
5639 03 Oct 19 nicklas 74     return html;
2839 20 Oct 14 olle 75   }
2839 20 Oct 14 olle 76
2839 20 Oct 14 olle 77   // A biowell as plate name
5639 03 Oct 19 nicklas 78   rp.asBoxPosition = function(well)
2839 20 Oct 14 olle 79   {
2839 20 Oct 14 olle 80     if (!well) return '';
2839 20 Oct 14 olle 81     var plate = well.bioPlate;
5639 03 Oct 19 nicklas 82     return Strings.encodeTags(plate.name + ' ' + well.location);
2839 20 Oct 14 olle 83   }
2839 20 Oct 14 olle 84
2839 20 Oct 14 olle 85   // A biowell as the location
5639 03 Oct 19 nicklas 86   rp.asFreezerLocation = function(well)
2839 20 Oct 14 olle 87   {
5639 03 Oct 19 nicklas 88     if (!well) return '<i>- unknown -</i>';
5639 03 Oct 19 nicklas 89     var storage = well.bioPlate.storage;
5639 03 Oct 19 nicklas 90     if (!storage) return '<i>- unknown -</i>';
5639 03 Oct 19 nicklas 91     
5639 03 Oct 19 nicklas 92     var location = [];
5639 03 Oct 19 nicklas 93     if (storage.name) location[location.length] = storage.name;
5639 03 Oct 19 nicklas 94     if (storage.section) location[location.length] = 'Section ' +storage.section;
5639 03 Oct 19 nicklas 95     if (storage.tray) location[location.length] = 'Tray ' +storage.tray;
5639 03 Oct 19 nicklas 96     if (storage.position) location[location.length] = 'Position ' +storage.position;
5639 03 Oct 19 nicklas 97     
5639 03 Oct 19 nicklas 98     return location.join(', ');
2839 20 Oct 14 olle 99   }
2839 20 Oct 14 olle 100
2839 20 Oct 14 olle 101   return rp;
2839 20 Oct 14 olle 102 }();
2839 20 Oct 14 olle 103
2839 20 Oct 14 olle 104 Doc.onLoad(RetractionProtocol.initPage);
2839 20 Oct 14 olle 105