extensions/net.sf.basedb.meludi/trunk/resources/libprep/libprep_dilution_protocol2.jsp

Code
Comments
Other
Rev Date Author Line
3590 11 Nov 15 olle 1 <%@ page
3590 11 Nov 15 olle 2   pageEncoding="UTF-8"
3590 11 Nov 15 olle 3   session="false"
3590 11 Nov 15 olle 4   import="net.sf.basedb.core.User"
3590 11 Nov 15 olle 5   import="net.sf.basedb.core.DbControl"
3590 11 Nov 15 olle 6   import="net.sf.basedb.core.SessionControl"
3590 11 Nov 15 olle 7   import="net.sf.basedb.core.Application"
3590 11 Nov 15 olle 8   import="net.sf.basedb.core.Extract"
3590 11 Nov 15 olle 9   import="net.sf.basedb.core.BioMaterial"
3590 11 Nov 15 olle 10   import="net.sf.basedb.core.MeasuredBioMaterial"
3590 11 Nov 15 olle 11   import="net.sf.basedb.core.BioMaterialEventSource"
3590 11 Nov 15 olle 12   import="net.sf.basedb.core.BioPlate"
3590 11 Nov 15 olle 13   import="net.sf.basedb.core.BioWell"
3590 11 Nov 15 olle 14   import="net.sf.basedb.core.PermissionDeniedException"
4129 26 Sep 16 olle 15   import="net.sf.basedb.core.Project"
3590 11 Nov 15 olle 16   import="net.sf.basedb.core.ItemQuery"
3590 11 Nov 15 olle 17   import="net.sf.basedb.core.query.Restrictions"
3590 11 Nov 15 olle 18   import="net.sf.basedb.core.query.Hql"
3590 11 Nov 15 olle 19   import="net.sf.basedb.util.Values"
3590 11 Nov 15 olle 20   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
3590 11 Nov 15 olle 21   import="net.sf.basedb.util.extensions.Extension"
3590 11 Nov 15 olle 22   import="net.sf.basedb.clients.web.Base"  
3590 11 Nov 15 olle 23   import="net.sf.basedb.clients.web.util.HTML"
3590 11 Nov 15 olle 24   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
3590 11 Nov 15 olle 25   import="java.util.Arrays"
3590 11 Nov 15 olle 26   import="java.util.Enumeration"
3590 11 Nov 15 olle 27   import="java.util.Collections"
3590 11 Nov 15 olle 28 %>
3590 11 Nov 15 olle 29 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
3590 11 Nov 15 olle 30 <%
3590 11 Nov 15 olle 31 final SessionControl sc = Base.getExistingSessionControl(request, true);
3590 11 Nov 15 olle 32 final String ID = sc.getId();
3590 11 Nov 15 olle 33 final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.meludi");
3590 11 Nov 15 olle 34 final String root = request.getContextPath();
3590 11 Nov 15 olle 35 DbControl dc = null;
3590 11 Nov 15 olle 36 try
3590 11 Nov 15 olle 37 {
3590 11 Nov 15 olle 38   dc = sc.newDbControl();
3590 11 Nov 15 olle 39   final Extension meludi = ExtensionsControl.get(dc).getExtension("net.sf.basedb.meludi");
3590 11 Nov 15 olle 40   final User user = User.getById(dc, sc.getLoggedInUserId());
4129 26 Sep 16 olle 41   Project activeProject = Project.getById(dc, sc.getActiveProjectId());
4129 26 Sep 16 olle 42   String projectName = activeProject.getName();
3590 11 Nov 15 olle 43
3590 11 Nov 15 olle 44   String submitInfoJsonStr = Values.getStringOrNull(request.getParameter("hiddenSubmitInfo"));
3590 11 Nov 15 olle 45   Integer numItems = Values.getInteger(request.getParameter("hiddenNumItems"), null);
3590 11 Nov 15 olle 46 %>
3590 11 Nov 15 olle 47 <base:page id="protocol" type="iframe" favicon="<%=home+"/images/report.png"%>" noskin="true">
3590 11 Nov 15 olle 48 <base:head
3590 11 Nov 15 olle 49   scripts="~../meludi-2.js,~libprep_dilution_protocol.js" 
3590 11 Nov 15 olle 50   styles="~../css/meludi-2.css,~../css/printable.css"
3590 11 Nov 15 olle 51   >
3590 11 Nov 15 olle 52
3590 11 Nov 15 olle 53   <style>
3590 11 Nov 15 olle 54   h1
3590 11 Nov 15 olle 55   {
3590 11 Nov 15 olle 56     margin-top: 1em;
3590 11 Nov 15 olle 57   }
3590 11 Nov 15 olle 58   
3590 11 Nov 15 olle 59   h2
3590 11 Nov 15 olle 60   {
3590 11 Nov 15 olle 61     margin-bottom: 0;
3590 11 Nov 15 olle 62     font-size: 1.2em;
3590 11 Nov 15 olle 63   }
3590 11 Nov 15 olle 64   
3590 11 Nov 15 olle 65   table.protocolheader
3590 11 Nov 15 olle 66   {
3590 11 Nov 15 olle 67     width: 100%;
3590 11 Nov 15 olle 68     border: 1px solid #000000;
3590 11 Nov 15 olle 69     margin-bottom: 1em;
3590 11 Nov 15 olle 70 /*
3590 11 Nov 15 olle 71     border-collapse: collapse;
3590 11 Nov 15 olle 72 */
3590 11 Nov 15 olle 73   }
3590 11 Nov 15 olle 74   
3590 11 Nov 15 olle 75   table.protocolheader > tbody > tr
3590 11 Nov 15 olle 76   {
3590 11 Nov 15 olle 77     vertical-align: middle;
3590 11 Nov 15 olle 78     height: 2.5em;
3590 11 Nov 15 olle 79     max-height: 2.5em;
3590 11 Nov 15 olle 80     border-bottom: 1px solid #000000;
3590 11 Nov 15 olle 81     border-top: 1px solid #000000;
3590 11 Nov 15 olle 82   }
3590 11 Nov 15 olle 83
3590 11 Nov 15 olle 84   table.protocolheader > tbody > tr > th
3590 11 Nov 15 olle 85   {
3590 11 Nov 15 olle 86     text-align: left;
3590 11 Nov 15 olle 87     font-size: 1em;
3590 11 Nov 15 olle 88     background-color: #F0F0F0;
3590 11 Nov 15 olle 89     padding: 4px;
3590 11 Nov 15 olle 90     border-left: 1px solid #000000;
3590 11 Nov 15 olle 91     border-right: 1px solid #000000;
3590 11 Nov 15 olle 92   }
3590 11 Nov 15 olle 93
3590 11 Nov 15 olle 94   table.protocolheader > tbody > tr > th.subprompt
3590 11 Nov 15 olle 95   {
3590 11 Nov 15 olle 96     text-align: right;
3590 11 Nov 15 olle 97     font-weight: normal;
3590 11 Nov 15 olle 98   }
3590 11 Nov 15 olle 99
3590 11 Nov 15 olle 100   
3590 11 Nov 15 olle 101   table.protocolheader > tbody > tr > td
3590 11 Nov 15 olle 102   {
3590 11 Nov 15 olle 103     text-align: left;
3590 11 Nov 15 olle 104     font-size: 1em;
3590 11 Nov 15 olle 105     padding: 4px;
3590 11 Nov 15 olle 106   }
3590 11 Nov 15 olle 107   
3684 08 Jan 16 olle 108   .lowvolume
3684 08 Jan 16 olle 109   {
3684 08 Jan 16 olle 110     color: #C80000;
3684 08 Jan 16 olle 111   }
3684 08 Jan 16 olle 112
3590 11 Nov 15 olle 113   .colorbox 
3590 11 Nov 15 olle 114   {
3590 11 Nov 15 olle 115     display: inline-block;
3590 11 Nov 15 olle 116     width: 0.75em; 
3590 11 Nov 15 olle 117     height: 0.75em; 
3590 11 Nov 15 olle 118     border: 1px solid #000000;
3590 11 Nov 15 olle 119     margin-left: 0em;
3590 11 Nov 15 olle 120     margin-right: 0.5em;
3590 11 Nov 15 olle 121   }
3590 11 Nov 15 olle 122   
3590 11 Nov 15 olle 123   .patient-legend
3590 11 Nov 15 olle 124   {
3590 11 Nov 15 olle 125     width: 8em;
3590 11 Nov 15 olle 126     text-align: center !important;
3590 11 Nov 15 olle 127   }
3590 11 Nov 15 olle 128   
3590 11 Nov 15 olle 129   .allcases-legend
3590 11 Nov 15 olle 130   {
3590 11 Nov 15 olle 131     width: 8em;
3590 11 Nov 15 olle 132     text-align: center !important;
3590 11 Nov 15 olle 133   }
3590 11 Nov 15 olle 134   
3590 11 Nov 15 olle 135   .green
3590 11 Nov 15 olle 136   {
3590 11 Nov 15 olle 137     background-color: #D8F8D8;
3590 11 Nov 15 olle 138   }
3590 11 Nov 15 olle 139   .green.darker
3590 11 Nov 15 olle 140   {
3590 11 Nov 15 olle 141     background-color: #A0F8A0;
3590 11 Nov 15 olle 142   }
3590 11 Nov 15 olle 143   
3590 11 Nov 15 olle 144   .blue
3590 11 Nov 15 olle 145   {
3590 11 Nov 15 olle 146     background-color: #D8E8FF;
3590 11 Nov 15 olle 147   }
3590 11 Nov 15 olle 148   .blue.darker
3590 11 Nov 15 olle 149   {
3590 11 Nov 15 olle 150     background-color: #B8B8FF;
3590 11 Nov 15 olle 151   }
3590 11 Nov 15 olle 152   
3590 11 Nov 15 olle 153   .yellow
3590 11 Nov 15 olle 154   {
3590 11 Nov 15 olle 155     background-color: #FFFFD8;
3590 11 Nov 15 olle 156   }
3590 11 Nov 15 olle 157   .yellow.darker
3590 11 Nov 15 olle 158   {
3590 11 Nov 15 olle 159     background-color: #FFFFA0;
3590 11 Nov 15 olle 160   }
3590 11 Nov 15 olle 161   
3590 11 Nov 15 olle 162   .red
3590 11 Nov 15 olle 163   {
3590 11 Nov 15 olle 164     background-color: #FFC8C8;
3590 11 Nov 15 olle 165   }
3590 11 Nov 15 olle 166   .red.darker
3590 11 Nov 15 olle 167   {
3590 11 Nov 15 olle 168     background-color: #F8A0A0;
3590 11 Nov 15 olle 169   }
3590 11 Nov 15 olle 170
3590 11 Nov 15 olle 171   #allprepLabTrackingProtocolHeader
3590 11 Nov 15 olle 172   {
3590 11 Nov 15 olle 173     font-size: 1.2em;
3590 11 Nov 15 olle 174   }
3590 11 Nov 15 olle 175
3590 11 Nov 15 olle 176   .reagent
3590 11 Nov 15 olle 177   {
3590 11 Nov 15 olle 178     width: 70%;
3590 11 Nov 15 olle 179     height: 80%;
3590 11 Nov 15 olle 180     font-size: 0.9em;
3590 11 Nov 15 olle 181   }
3590 11 Nov 15 olle 182
3590 11 Nov 15 olle 183   .reagentheader
3590 11 Nov 15 olle 184   {
3590 11 Nov 15 olle 185     width: 30%;
3590 11 Nov 15 olle 186     height: 80%;
3590 11 Nov 15 olle 187     font-size: 0.9em;
3590 11 Nov 15 olle 188   }
3590 11 Nov 15 olle 189   </style>
3590 11 Nov 15 olle 190 </base:head>
3590 11 Nov 15 olle 191 <base:body>
3590 11 Nov 15 olle 192   <div class="paper">
3590 11 Nov 15 olle 193   <form name="meludi" id="wizard">
3590 11 Nov 15 olle 194
3590 11 Nov 15 olle 195   <div id="page-data" class="datacontainer"
3590 11 Nov 15 olle 196     data-submitinfo="<%=HTML.encodeTags(submitInfoJsonStr)%>"
3590 11 Nov 15 olle 197     data-numitems="<%=numItems%>"
4129 26 Sep 16 olle 198     data-projectname="<%=projectName%>"
3590 11 Nov 15 olle 199     data-meludiversion="<%=meludi.getAbout().getVersion()%>"
3590 11 Nov 15 olle 200   ></div>
3590 11 Nov 15 olle 201   
3590 11 Nov 15 olle 202   <div id="wizard-status"></div>
3590 11 Nov 15 olle 203   
3590 11 Nov 15 olle 204   <div id="all-protocol" style="display: none;">
3590 11 Nov 15 olle 205
3590 11 Nov 15 olle 206   <div id="print-instructions" class="noprint fullwidth">
3590 11 Nov 15 olle 207     <base:button id="print-button" image="<%=home+"/images/print.png"%>" title="Print&hellip;" />
3590 11 Nov 15 olle 208     <span id="printNote">
3590 11 Nov 15 olle 209     <b>Note!</b> 
3590 11 Nov 15 olle 210     For better printing reduce margins to about <i>5mm</i> and set page orientation
3590 11 Nov 15 olle 211     to <i>portrait</i>.
3590 11 Nov 15 olle 212     </span>
3590 11 Nov 15 olle 213     <br clear="all">
3590 11 Nov 15 olle 214   </div>
3590 11 Nov 15 olle 215
3590 11 Nov 15 olle 216   <h1 id="libraryPreparationDilutionProtocolHeader">Dilution protocol for library preparation v1.0<span class="meludi">MeLuDI <%=meludi.getAbout().getVersion() %></span></h1>
3590 11 Nov 15 olle 217
3590 11 Nov 15 olle 218 <!-- Table with two columns; left for start plate name, right for dilution protocol date -->
3590 11 Nov 15 olle 219   <table class="protocolheader">
4129 26 Sep 16 olle 220 <!--
3590 11 Nov 15 olle 221   <tr>
3590 11 Nov 15 olle 222     <th style="max-height: 1.5em; font-size: 0.9em;">Start plate</th>
3590 11 Nov 15 olle 223     <td><span id="startplateid" style="max-height: 1.5em; font-size: 0.9em;"></span></td>
3652 08 Dec 15 olle 224     <th style="max-height: 1.5em; font-size: 0.9em;" id="protocolDateName">Dilution protocol date</th>
3590 11 Nov 15 olle 225     <td><span id="dilutionProtocolDate" style="max-height: 1.5em; font-size: 0.9em;"></span></td>
3590 11 Nov 15 olle 226   </tr>
4129 26 Sep 16 olle 227 -->
4129 26 Sep 16 olle 228   <tr>
4129 26 Sep 16 olle 229     <th style="max-height: 1.5em; font-size: 0.9em;">Start plate</th>
4129 26 Sep 16 olle 230     <td><span id="startplateid" style="max-height: 1.5em; font-size: 0.9em;"></span></td>
4129 26 Sep 16 olle 231     <th style="max-height: 1.5em; font-size: 0.9em;" id="protocolDateName">Dilution protocol date</th>
4129 26 Sep 16 olle 232     <td><span id="dilutionProtocolDate" style="max-height: 1.5em; font-size: 0.9em;"></span></td>
4129 26 Sep 16 olle 233     <th style="max-height: 1.5em; font-size: 0.9em;" id="projectNameTitle">Project</th>
4129 26 Sep 16 olle 234     <td><span id="projectnameid" style="max-height: 1.5em; font-size: 0.9em;"></span></td>
4129 26 Sep 16 olle 235   </tr>
3590 11 Nov 15 olle 236   </tbody>
3590 11 Nov 15 olle 237   </table>
3590 11 Nov 15 olle 238 <BR>
3590 11 Nov 15 olle 239 10µl should be taken from the solution to each aliquot (FPA and FPB)
3590 11 Nov 15 olle 240 <BR>
3590 11 Nov 15 olle 241   <table class="protocolheader" border="1">
3590 11 Nov 15 olle 242     <tr id="extractionlist">
3590 11 Nov 15 olle 243       <th style="font-size: 0.9em; width: 12%;">Extract</th>
3590 11 Nov 15 olle 244       <th style="font-size: 0.9em; width: 10%;">DNA plate pos.</th>
3590 11 Nov 15 olle 245       <th style="font-size: 0.9em; width:  3%;">FPA pos.</th>
3590 11 Nov 15 olle 246       <th style="font-size: 0.9em; width:  3%;">FPB pos.</th>
3590 11 Nov 15 olle 247       <th style="font-size: 0.9em; width:  7%;">Volume DNA (µl)</th>
3590 11 Nov 15 olle 248       <th style="font-size: 0.9em; width:  7%;">Volume water (µl)</th>
3590 11 Nov 15 olle 249       <th style="font-size: 0.9em; width: 10%;">Solution volume (µl)</th>
3590 11 Nov 15 olle 250       <th style="font-size: 0.9em; width: 10%;">Dilution factor</th>
3590 11 Nov 15 olle 251       <th style="font-size: 0.9em; width: 10%;">ΔCt</th>
3590 11 Nov 15 olle 252       <th style="font-size: 0.9em; width: 10%;">DNA conc. Qubit (ng/µl)</th>
3590 11 Nov 15 olle 253       <th style="font-size: 0.9em; width: 18%;">Remark</th>
3590 11 Nov 15 olle 254     </tr>
3590 11 Nov 15 olle 255   <%
3590 11 Nov 15 olle 256   for (int itemNo = 0; itemNo < numItems; ++itemNo)
3590 11 Nov 15 olle 257   {
3590 11 Nov 15 olle 258     %>
3590 11 Nov 15 olle 259     <tr>
3590 11 Nov 15 olle 260       <td style="font-size: 0.9em; width: 12%; border-right: 1px solid #000000;"><div id="extract.<%=itemNo%>" >Extract <%=itemNo%></div></td>
3590 11 Nov 15 olle 261       <td style="font-size: 0.9em; width: 10%; text-align: center; border-right: 1px solid #000000;"><div id="dnaStorageBox.<%=itemNo%>" >DNA position <%=itemNo%></div></td>
3590 11 Nov 15 olle 262       <td style="font-size: 0.9em; width:  3%; text-align: center; border-right: 1px solid #000000;"><div id="fpaPos.<%=itemNo%>" >DNA volume <%=itemNo%></div></td>
3590 11 Nov 15 olle 263       <td style="font-size: 0.9em; width:  3%; text-align: center; border-right: 1px solid #000000;"><div id="fpbPos.<%=itemNo%>" >Water volume <%=itemNo%></div></td>
3590 11 Nov 15 olle 264       <td style="font-size: 0.9em; width:  7%; text-align: center; border-right: 1px solid #000000;"><div id="dnaVolume.<%=itemNo%>" >DNA volume <%=itemNo%></div></td>
3590 11 Nov 15 olle 265       <td style="font-size: 0.9em; width:  7%; text-align: center; border-right: 1px solid #000000;"><div id="waterVolume.<%=itemNo%>" >Water volume <%=itemNo%></div></td>
3590 11 Nov 15 olle 266       <td style="font-size: 0.9em; width: 10%; text-align: center; border-right: 1px solid #000000;"><div id="solutionVolume.<%=itemNo%>" >Solution volume <%=itemNo%></div></td>
3590 11 Nov 15 olle 267       <td style="font-size: 0.9em; width: 10%; text-align: center; border-right: 1px solid #000000;"><div id="dilutionFactor.<%=itemNo%>" >Dilution factor <%=itemNo%></div></td>
3590 11 Nov 15 olle 268       <td style="font-size: 0.9em; width: 10%; text-align: center; border-right: 1px solid #000000;"><div id="deltaCt.<%=itemNo%>" >Delta-Ct <%=itemNo%></div></td>
3590 11 Nov 15 olle 269       <td style="font-size: 0.9em; width: 10%; text-align: center; border-right: 1px solid #000000;"><div id="dnaConc.<%=itemNo%>" >DNA conc. <%=itemNo%></div></td>
3590 11 Nov 15 olle 270       <td style="font-size: 0.9em; width: 18%; border-right: 1px solid #000000;"><div id="remark.<%=itemNo%>" >Remark <%=itemNo%></div></td>
3590 11 Nov 15 olle 271     </tr>
3590 11 Nov 15 olle 272     <%
3590 11 Nov 15 olle 273   }
3590 11 Nov 15 olle 274   %>
3590 11 Nov 15 olle 275   </table>
3590 11 Nov 15 olle 276   <div class="pagebreak"></div>
3590 11 Nov 15 olle 277       
3590 11 Nov 15 olle 278   </div>
3590 11 Nov 15 olle 279   </form>
3590 11 Nov 15 olle 280   </div>
3590 11 Nov 15 olle 281 </base:body>
3590 11 Nov 15 olle 282 </base:page>
3590 11 Nov 15 olle 283 <%
3590 11 Nov 15 olle 284 }
3590 11 Nov 15 olle 285 finally
3590 11 Nov 15 olle 286 {
3590 11 Nov 15 olle 287   if (dc != null) dc.close();
3590 11 Nov 15 olle 288 }
3590 11 Nov 15 olle 289 %>