extensions/net.sf.basedb.reggie/trunk/resources/libprep/flowcell_protocol2.jsp

Code
Comments
Other
Rev Date Author Line
2033 02 Oct 13 olle 1 <%@ page
2033 02 Oct 13 olle 2   pageEncoding="UTF-8"
2033 02 Oct 13 olle 3   session="false"
2033 02 Oct 13 olle 4   import="net.sf.basedb.core.User"
2033 02 Oct 13 olle 5   import="net.sf.basedb.core.DbControl"
2033 02 Oct 13 olle 6   import="net.sf.basedb.core.SessionControl"
2033 02 Oct 13 olle 7   import="net.sf.basedb.core.Application"
2033 02 Oct 13 olle 8   import="net.sf.basedb.core.Extract"
2033 02 Oct 13 olle 9   import="net.sf.basedb.core.BioMaterial"
2033 02 Oct 13 olle 10   import="net.sf.basedb.core.MeasuredBioMaterial"
2033 02 Oct 13 olle 11   import="net.sf.basedb.core.BioMaterialEventSource"
2033 02 Oct 13 olle 12   import="net.sf.basedb.core.BioPlate"
2033 02 Oct 13 olle 13   import="net.sf.basedb.core.BioWell"
2033 02 Oct 13 olle 14   import="net.sf.basedb.core.PermissionDeniedException"
2033 02 Oct 13 olle 15   import="net.sf.basedb.core.ItemQuery"
2033 02 Oct 13 olle 16   import="net.sf.basedb.core.query.Restrictions"
2033 02 Oct 13 olle 17   import="net.sf.basedb.core.query.Hql"
2033 02 Oct 13 olle 18   import="net.sf.basedb.util.Values"
2033 02 Oct 13 olle 19   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
2033 02 Oct 13 olle 20   import="net.sf.basedb.util.extensions.Extension"
2033 02 Oct 13 olle 21   import="net.sf.basedb.clients.web.Base"  
2033 02 Oct 13 olle 22   import="net.sf.basedb.clients.web.util.HTML"
2033 02 Oct 13 olle 23   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
2653 11 Sep 14 nicklas 24   import="java.util.Arrays"
2033 02 Oct 13 olle 25 %>
2653 11 Sep 14 nicklas 26 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2033 02 Oct 13 olle 27 <%
3976 26 May 16 nicklas 28 final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true);
2033 02 Oct 13 olle 29 final String ID = sc.getId();
2033 02 Oct 13 olle 30 final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie");
2033 02 Oct 13 olle 31 final String root = request.getContextPath();
2033 02 Oct 13 olle 32 DbControl dc = null;
2033 02 Oct 13 olle 33 try
2033 02 Oct 13 olle 34 {
2033 02 Oct 13 olle 35   dc = sc.newDbControl();
2033 02 Oct 13 olle 36   final Extension reggie = ExtensionsControl.get(dc).getExtension("net.sf.basedb.reggie");
2033 02 Oct 13 olle 37   final User user = User.getById(dc, sc.getLoggedInUserId());
2033 02 Oct 13 olle 38   
2653 11 Sep 14 nicklas 39   Integer[] flowCells = Values.getInt(request.getParameterValues("flowcells"));
2033 02 Oct 13 olle 40   
2653 11 Sep 14 nicklas 41 %>
3026 11 Dec 14 nicklas 42 <base:page id="protocol" type="iframe" favicon="<%=home+"/images/flowcell.png"%>" noskin="true">
2653 11 Sep 14 nicklas 43 <base:head
2653 11 Sep 14 nicklas 44   scripts="~../reggie-2.js,~flowcell_protocol.js" 
2653 11 Sep 14 nicklas 45   styles="~../css/reggie-2.css,~../css/printable.css"
2653 11 Sep 14 nicklas 46   >
2033 02 Oct 13 olle 47
2033 02 Oct 13 olle 48   <style>
2201 20 Jan 14 nicklas 49   h1
2201 20 Jan 14 nicklas 50   {
2201 20 Jan 14 nicklas 51     margin-top: 1em;
2201 20 Jan 14 nicklas 52   }
2201 20 Jan 14 nicklas 53   
2063 14 Oct 13 nicklas 54   h2
2063 14 Oct 13 nicklas 55   {
2063 14 Oct 13 nicklas 56     margin-bottom: 0;
2063 14 Oct 13 nicklas 57     font-size: 1.2em;
2063 14 Oct 13 nicklas 58   }
2063 14 Oct 13 nicklas 59   
2033 02 Oct 13 olle 60   table.protocolheader
2033 02 Oct 13 olle 61   {
2033 02 Oct 13 olle 62     width: 100%;
2033 02 Oct 13 olle 63     border: 1px solid #000000;
2033 02 Oct 13 olle 64     margin-bottom: 1em;
2033 02 Oct 13 olle 65     border-collapse: collapse;
2112 30 Oct 13 nicklas 66   }
2112 30 Oct 13 nicklas 67   
2112 30 Oct 13 nicklas 68   table.flowcell
2112 30 Oct 13 nicklas 69   {
2412 09 May 14 nicklas 70     min-height: 22em;
2412 09 May 14 nicklas 71     height: 22em;
2033 02 Oct 13 olle 72   }
2033 02 Oct 13 olle 73
2033 02 Oct 13 olle 74   table.protocolheader > tbody > tr
2033 02 Oct 13 olle 75   {
2063 14 Oct 13 nicklas 76     vertical-align: middle;
2063 14 Oct 13 nicklas 77     height: 2.5em;
2063 14 Oct 13 nicklas 78     max-height: 2.5em;
2063 14 Oct 13 nicklas 79     border-bottom: 1px solid #000000;
2201 20 Jan 14 nicklas 80     border-top: 1px solid #000000;
2033 02 Oct 13 olle 81   }
2033 02 Oct 13 olle 82
2033 02 Oct 13 olle 83   table.protocolheader > tbody > tr > th
2033 02 Oct 13 olle 84   {
2033 02 Oct 13 olle 85     text-align: left;
2033 02 Oct 13 olle 86     font-size: 1em;
2033 02 Oct 13 olle 87     background-color: #F0F0F0;
2063 14 Oct 13 nicklas 88     padding: 4px;
2063 14 Oct 13 nicklas 89     border-right: 1px solid #000000;
2033 02 Oct 13 olle 90   }
2063 14 Oct 13 nicklas 91
2063 14 Oct 13 nicklas 92   table.protocolheader > tbody > tr > th.subprompt
2063 14 Oct 13 nicklas 93   {
2063 14 Oct 13 nicklas 94     text-align: right;
2063 14 Oct 13 nicklas 95     font-weight: normal;
2063 14 Oct 13 nicklas 96   }
2063 14 Oct 13 nicklas 97
2033 02 Oct 13 olle 98   
2033 02 Oct 13 olle 99   table.protocolheader > tbody > tr > td
2033 02 Oct 13 olle 100   {
2033 02 Oct 13 olle 101     text-align: left;
2033 02 Oct 13 olle 102     font-size: 1em;
2063 14 Oct 13 nicklas 103     padding: 4px;
2033 02 Oct 13 olle 104   }
2033 02 Oct 13 olle 105   
2061 11 Oct 13 nicklas 106   .colorbox 
2061 11 Oct 13 nicklas 107   {
2061 11 Oct 13 nicklas 108     display: inline-block;
2201 20 Jan 14 nicklas 109     width: 0.75em; 
2201 20 Jan 14 nicklas 110     height: 0.75em; 
2061 11 Oct 13 nicklas 111     border: 1px solid #000000;
2201 20 Jan 14 nicklas 112     margin-left: 0em;
2061 11 Oct 13 nicklas 113     margin-right: 0.5em;
2061 11 Oct 13 nicklas 114   }
2061 11 Oct 13 nicklas 115   
2063 14 Oct 13 nicklas 116   .pools
2033 02 Oct 13 olle 117   {
2033 02 Oct 13 olle 118     width: 100%;
2033 02 Oct 13 olle 119     border-collapse: collapse;
2033 02 Oct 13 olle 120   }
2033 02 Oct 13 olle 121   
2063 14 Oct 13 nicklas 122   .pools tr
2033 02 Oct 13 olle 123   {
2063 14 Oct 13 nicklas 124     height: 2.5em;
2063 14 Oct 13 nicklas 125     border-bottom: 1px dotted #666666;
2033 02 Oct 13 olle 126   }
2063 14 Oct 13 nicklas 127
2063 14 Oct 13 nicklas 128   .pools tr:last-child
2033 02 Oct 13 olle 129   {
2063 14 Oct 13 nicklas 130     border-bottom: 0;
2033 02 Oct 13 olle 131   }
2033 02 Oct 13 olle 132   
2063 14 Oct 13 nicklas 133   .pools td, .pools th
2033 02 Oct 13 olle 134   {
2063 14 Oct 13 nicklas 135     text-align: left;
2063 14 Oct 13 nicklas 136     font-size: 1em;
2063 14 Oct 13 nicklas 137     padding: 2px;
2033 02 Oct 13 olle 138   }
2033 02 Oct 13 olle 139   
2063 14 Oct 13 nicklas 140   .pools th
2033 02 Oct 13 olle 141   {
2063 14 Oct 13 nicklas 142     background-color: #F0F0F0;
2063 14 Oct 13 nicklas 143     border-bottom: 1px solid #000000;
2033 02 Oct 13 olle 144   }
2033 02 Oct 13 olle 145   
2063 14 Oct 13 nicklas 146   .pools .lane-no
2033 02 Oct 13 olle 147   {
2063 14 Oct 13 nicklas 148     width: 5em;
2033 02 Oct 13 olle 149     text-align: center;
2033 02 Oct 13 olle 150   }
2033 02 Oct 13 olle 151   
2063 14 Oct 13 nicklas 152   .pools .pool-name
2033 02 Oct 13 olle 153   {
2063 14 Oct 13 nicklas 154     width: 8em;
2112 30 Oct 13 nicklas 155     text-align: center;
2033 02 Oct 13 olle 156   }
2033 02 Oct 13 olle 157   
2112 30 Oct 13 nicklas 158   .pool-legend
2112 30 Oct 13 nicklas 159   {
2112 30 Oct 13 nicklas 160     width: 8em;
2112 30 Oct 13 nicklas 161     text-align: center !important;
2112 30 Oct 13 nicklas 162   }
2112 30 Oct 13 nicklas 163   
2112 30 Oct 13 nicklas 164   .green
2112 30 Oct 13 nicklas 165   {
2112 30 Oct 13 nicklas 166     background-color: #D8F8D8;
2112 30 Oct 13 nicklas 167   }
2112 30 Oct 13 nicklas 168   .green.darker
2112 30 Oct 13 nicklas 169   {
2112 30 Oct 13 nicklas 170     background-color: #A0F8A0;
2112 30 Oct 13 nicklas 171   }
2112 30 Oct 13 nicklas 172   
2112 30 Oct 13 nicklas 173   .blue
2112 30 Oct 13 nicklas 174   {
2112 30 Oct 13 nicklas 175     background-color: #D8E8FF;
2112 30 Oct 13 nicklas 176   }
2112 30 Oct 13 nicklas 177   .blue.darker
2112 30 Oct 13 nicklas 178   {
2112 30 Oct 13 nicklas 179     background-color: #B8B8FF;
2112 30 Oct 13 nicklas 180   }
2112 30 Oct 13 nicklas 181   
2112 30 Oct 13 nicklas 182   .yellow
2112 30 Oct 13 nicklas 183   {
2112 30 Oct 13 nicklas 184     background-color: #FFFFD8;
2112 30 Oct 13 nicklas 185   }
2112 30 Oct 13 nicklas 186   .yellow.darker
2112 30 Oct 13 nicklas 187   {
2112 30 Oct 13 nicklas 188     background-color: #FFFFA0;
2112 30 Oct 13 nicklas 189   }
2112 30 Oct 13 nicklas 190   
2112 30 Oct 13 nicklas 191   .red
2112 30 Oct 13 nicklas 192   {
2112 30 Oct 13 nicklas 193     background-color: #FFC8C8;
2112 30 Oct 13 nicklas 194   }
2112 30 Oct 13 nicklas 195   .red.darker
2112 30 Oct 13 nicklas 196   {
2112 30 Oct 13 nicklas 197     background-color: #F8A0A0;
2112 30 Oct 13 nicklas 198   }
2033 02 Oct 13 olle 199   </style>
2653 11 Sep 14 nicklas 200 </base:head>
2653 11 Sep 14 nicklas 201 <base:body>
2033 02 Oct 13 olle 202   <div class="paper">
2653 11 Sep 14 nicklas 203   <form name="reggie" id="wizard">
2653 11 Sep 14 nicklas 204   
2653 11 Sep 14 nicklas 205   <div id="page-data" class="datacontainer"
2653 11 Sep 14 nicklas 206     data-flowcells="<%=Values.getString(Arrays.asList(flowCells), ",", true)%>"
2653 11 Sep 14 nicklas 207   ></div>
2653 11 Sep 14 nicklas 208   
2662 12 Sep 14 nicklas 209   <div id="wizard-status"></div>
2662 12 Sep 14 nicklas 210   
2662 12 Sep 14 nicklas 211   <div id="all-protocol" style="display: none;">
2662 12 Sep 14 nicklas 212
2653 11 Sep 14 nicklas 213   <div id="print-instructions" class="noprint fullwidth">
2970 24 Nov 14 nicklas 214     <base:button id="print-button" image="<%=home+"/images/print.png"%>" title="Print&hellip;" />
2970 24 Nov 14 nicklas 215     <span id="printNote">
2033 02 Oct 13 olle 216     <b>Note!</b> 
2033 02 Oct 13 olle 217     For better printing reduce margins to about <i>5mm</i> and set page orientation
2047 07 Oct 13 olle 218     to <i>portrait</i>.
2970 24 Nov 14 nicklas 219     </span>
2033 02 Oct 13 olle 220     <br clear="all">
2033 02 Oct 13 olle 221   </div>
2033 02 Oct 13 olle 222   <%
2653 11 Sep 14 nicklas 223   for (int fcNo = 0; fcNo < flowCells.length; ++fcNo)
2033 02 Oct 13 olle 224   {
3625 26 Nov 15 nicklas 225     if (fcNo > 0)
3625 26 Nov 15 nicklas 226     {
3625 26 Nov 15 nicklas 227       %>
3625 26 Nov 15 nicklas 228       <div class="pagebreak"></div>
3625 26 Nov 15 nicklas 229       <%
3625 26 Nov 15 nicklas 230     }
2033 02 Oct 13 olle 231     %>
3625 26 Nov 15 nicklas 232     <h1>Lab protocol for sequencing <span class="reggie">Reggie <%=reggie.getAbout().getVersion() %></span></h1>
2201 20 Jan 14 nicklas 233
2201 20 Jan 14 nicklas 234     <table class="protocolheader">
2653 11 Sep 14 nicklas 235     <tr id="all-pools-<%=fcNo%>">
2201 20 Jan 14 nicklas 236       <th style="width: 15%;">Used pools</th>
2201 20 Jan 14 nicklas 237     </tr>
2201 20 Jan 14 nicklas 238     </table>
2201 20 Jan 14 nicklas 239     
2653 11 Sep 14 nicklas 240     <table class="protocolheader flowcell">
2653 11 Sep 14 nicklas 241     <tr>
3625 26 Nov 15 nicklas 242       <th style="width: 25%;">Flow cell</th>
2653 11 Sep 14 nicklas 243       <td style="width: 35%;"><div id="flowCellName.<%=fcNo%>" >Flow cell name <%=fcNo%></div></td>
3625 26 Nov 15 nicklas 244       <td style="width: 40%; padding: 0; vertical-align: top; border-left: 1px solid #000000;" rowspan="9">
2063 14 Oct 13 nicklas 245         <table class="pools">
2063 14 Oct 13 nicklas 246         <tr>
2063 14 Oct 13 nicklas 247           <th class="lane-no">Lane</th>
2063 14 Oct 13 nicklas 248           <th class="pool-name">Pool name</th>
2063 14 Oct 13 nicklas 249           <th class="remarks">Remarks</th>
2063 14 Oct 13 nicklas 250         </tr>
2653 11 Sep 14 nicklas 251         <tbody id="pools.<%=fcNo%>"></tbody>
2063 14 Oct 13 nicklas 252         </table>
2063 14 Oct 13 nicklas 253       </td>
2033 02 Oct 13 olle 254     </tr>
2033 02 Oct 13 olle 255     <tr>
2412 09 May 14 nicklas 256       <th>Flow cell type</th>
2653 11 Sep 14 nicklas 257       <td id="flowCellType.<%=fcNo%>"></td>
2412 09 May 14 nicklas 258     </tr>
2412 09 May 14 nicklas 259     <tr>
2063 14 Oct 13 nicklas 260       <th>Flow cell ID</th>
2653 11 Sep 14 nicklas 261       <td id="flowCellId.<%=fcNo%>"></td>
2063 14 Oct 13 nicklas 262     </tr>
3625 26 Nov 15 nicklas 263
2063 14 Oct 13 nicklas 264     <tr>
3625 26 Nov 15 nicklas 265       <th>Start date</th>
2107 29 Oct 13 nicklas 266       <td></td>
2107 29 Oct 13 nicklas 267     </tr>
2107 29 Oct 13 nicklas 268     <tr>
2063 14 Oct 13 nicklas 269       <th>Operator</th>
2033 02 Oct 13 olle 270       <td></td>
2033 02 Oct 13 olle 271     </tr>
3625 26 Nov 15 nicklas 272
2063 14 Oct 13 nicklas 273     <tr>
3625 26 Nov 15 nicklas 274       <th>Sequencing machine</th>
2033 02 Oct 13 olle 275       <td></td>
2033 02 Oct 13 olle 276     </tr>
2063 14 Oct 13 nicklas 277     
2201 20 Jan 14 nicklas 278     <tr>
2412 09 May 14 nicklas 279       <th>Sequencer position</th>
3625 26 Nov 15 nicklas 280       <td><b><div class="colorbox"></div>A <span id="pos.b.<%=fcNo%>"><div class="colorbox" style="margin-left: 2em;"></div>__</b></span></td>
2201 20 Jan 14 nicklas 281     </tr>
3625 26 Nov 15 nicklas 282     
2201 20 Jan 14 nicklas 283     <tr>
2201 20 Jan 14 nicklas 284       <th>Sequencing cycles</th>
3625 26 Nov 15 nicklas 285       <td><span id="sequencingCycles.<%=fcNo%>"></span> <span style="color: #999999;">(Read1 - Index - Read2)</span></td>
2201 20 Jan 14 nicklas 286     </tr>
2201 20 Jan 14 nicklas 287     
2201 20 Jan 14 nicklas 288     <tr>
2653 11 Sep 14 nicklas 289       <th>End date+time</th>
3625 26 Nov 15 nicklas 290       <td></td>
2201 20 Jan 14 nicklas 291     </tr>
3625 26 Nov 15 nicklas 292     
2201 20 Jan 14 nicklas 293     <tr style="height: 10em; vertical-align: top;">
2201 20 Jan 14 nicklas 294       <th>Comments</th>
3625 26 Nov 15 nicklas 295       <td id="flowCellDescription.<%=fcNo%>"></td>
2201 20 Jan 14 nicklas 296     </tr>
2201 20 Jan 14 nicklas 297     </table>
3625 26 Nov 15 nicklas 298     
2033 02 Oct 13 olle 299     <%
2033 02 Oct 13 olle 300   }
2033 02 Oct 13 olle 301   %>
2033 02 Oct 13 olle 302   </div>
2033 02 Oct 13 olle 303   </form>
2033 02 Oct 13 olle 304   </div>
2653 11 Sep 14 nicklas 305 </base:body>
2653 11 Sep 14 nicklas 306 </base:page>
2033 02 Oct 13 olle 307 <%
2033 02 Oct 13 olle 308 }
2033 02 Oct 13 olle 309 finally
2033 02 Oct 13 olle 310 {
2033 02 Oct 13 olle 311   if (dc != null) dc.close();
2033 02 Oct 13 olle 312 }
2033 02 Oct 13 olle 313 %>