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

Code
Comments
Other
Rev Date Author Line
1814 30 Jan 13 nicklas 1 <%@ page
1814 30 Jan 13 nicklas 2   pageEncoding="UTF-8"
1814 30 Jan 13 nicklas 3   session="false"
1814 30 Jan 13 nicklas 4   import="net.sf.basedb.core.User"
1814 30 Jan 13 nicklas 5   import="net.sf.basedb.core.DbControl"
1814 30 Jan 13 nicklas 6   import="net.sf.basedb.core.SessionControl"
1814 30 Jan 13 nicklas 7   import="net.sf.basedb.core.Application"
1814 30 Jan 13 nicklas 8   import="net.sf.basedb.core.Extract"
1814 30 Jan 13 nicklas 9   import="net.sf.basedb.core.BioMaterial"
1814 30 Jan 13 nicklas 10   import="net.sf.basedb.core.MeasuredBioMaterial"
1814 30 Jan 13 nicklas 11   import="net.sf.basedb.core.BioMaterialEventSource"
1814 30 Jan 13 nicklas 12   import="net.sf.basedb.core.BioPlate"
1814 30 Jan 13 nicklas 13   import="net.sf.basedb.core.BioWell"
1814 30 Jan 13 nicklas 14   import="net.sf.basedb.core.PermissionDeniedException"
1814 30 Jan 13 nicklas 15   import="net.sf.basedb.core.ItemQuery"
1814 30 Jan 13 nicklas 16   import="net.sf.basedb.core.query.Restrictions"
1814 30 Jan 13 nicklas 17   import="net.sf.basedb.core.query.Hql"
1814 30 Jan 13 nicklas 18   import="net.sf.basedb.util.Values"
1814 30 Jan 13 nicklas 19   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
1814 30 Jan 13 nicklas 20   import="net.sf.basedb.util.extensions.Extension"
1814 30 Jan 13 nicklas 21   import="net.sf.basedb.clients.web.Base"  
1814 30 Jan 13 nicklas 22   import="net.sf.basedb.clients.web.util.HTML"
1814 30 Jan 13 nicklas 23   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
1814 30 Jan 13 nicklas 24   import="java.util.List"
1814 30 Jan 13 nicklas 25   import="java.util.ArrayList"
1814 30 Jan 13 nicklas 26 %>
2673 16 Sep 14 nicklas 27 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1814 30 Jan 13 nicklas 28 <%
3976 26 May 16 nicklas 29 final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true);
1814 30 Jan 13 nicklas 30 final String ID = sc.getId();
1814 30 Jan 13 nicklas 31 final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie");
1814 30 Jan 13 nicklas 32 final String root = request.getContextPath();
1814 30 Jan 13 nicklas 33 DbControl dc = null;
1814 30 Jan 13 nicklas 34 try
1814 30 Jan 13 nicklas 35 {
1814 30 Jan 13 nicklas 36   dc = sc.newDbControl();
1814 30 Jan 13 nicklas 37   final Extension reggie = ExtensionsControl.get(dc).getExtension("net.sf.basedb.reggie");
1814 30 Jan 13 nicklas 38   final User user = User.getById(dc, sc.getLoggedInUserId());
1894 04 Mar 13 nicklas 39   int libPlateId = Values.getInt(request.getParameter("bioplate"));
1814 30 Jan 13 nicklas 40   String poolSchema = request.getParameter("poolSchema");
1814 30 Jan 13 nicklas 41   String barcodeVariant = request.getParameter("barcodeVariant");
1814 30 Jan 13 nicklas 42   
1894 04 Mar 13 nicklas 43   BioPlate plate = BioPlate.getById(dc, libPlateId);
1814 30 Jan 13 nicklas 44   int columns = plate.getColumns();
1814 30 Jan 13 nicklas 45   int rows = plate.getRows();
1814 30 Jan 13 nicklas 46   String view = Values.getString(request.getParameter("view"), "list");
2673 16 Sep 14 nicklas 47   String title = "Lab protocol for " + HTML.encodeTags(plate.getName()) + " - " + (view.equals("list") ? "list" : "table");
1814 30 Jan 13 nicklas 48 %>
3026 11 Dec 14 nicklas 49 <base:page id="protocol" type="iframe" favicon="<%=home+"/images/libprep.png"%>" title="<%=title%>" noskin="true">
2673 16 Sep 14 nicklas 50 <base:head
2673 16 Sep 14 nicklas 51   scripts="~../reggie-2.js,~pools.js,~plate.js,~libprep_protocol.js" 
2673 16 Sep 14 nicklas 52   styles="~../css/reggie-2.css,~../css/printable.css,~../css/plate.css"
2673 16 Sep 14 nicklas 53   >
1814 30 Jan 13 nicklas 54   <style>
1814 30 Jan 13 nicklas 55   table.protocolheader
1814 30 Jan 13 nicklas 56   {
1814 30 Jan 13 nicklas 57     width: 100%;
2001 29 May 13 nicklas 58     border: 1px solid #000000;
2001 29 May 13 nicklas 59     margin-bottom: 1em;
2001 29 May 13 nicklas 60     border-collapse: collapse;
1814 30 Jan 13 nicklas 61   }
1814 30 Jan 13 nicklas 62
1814 30 Jan 13 nicklas 63   table.protocolheader > tbody > tr
1814 30 Jan 13 nicklas 64   {
2001 29 May 13 nicklas 65     vertical-align: top;
1814 30 Jan 13 nicklas 66     height: 1.25em;
1814 30 Jan 13 nicklas 67   }
1814 30 Jan 13 nicklas 68
1814 30 Jan 13 nicklas 69   table.protocolheader > tbody > tr > th
1814 30 Jan 13 nicklas 70   {
1814 30 Jan 13 nicklas 71     text-align: left;
1814 30 Jan 13 nicklas 72     font-size: 1em;
2001 29 May 13 nicklas 73     background-color: #F0F0F0;
2001 29 May 13 nicklas 74     padding: 2px;
1814 30 Jan 13 nicklas 75   }
1814 30 Jan 13 nicklas 76   
2001 29 May 13 nicklas 77   table.protocolheader > tbody > tr > td
2001 29 May 13 nicklas 78   {
2001 29 May 13 nicklas 79     text-align: left;
2001 29 May 13 nicklas 80     font-size: 1em;
2001 29 May 13 nicklas 81     padding: 2px;
2001 29 May 13 nicklas 82   }
2001 29 May 13 nicklas 83   
1814 30 Jan 13 nicklas 84   #listview
1814 30 Jan 13 nicklas 85   {
1814 30 Jan 13 nicklas 86     width: 100%;
1814 30 Jan 13 nicklas 87     font-size: 85%;
1814 30 Jan 13 nicklas 88     border-collapse: collapse;
1814 30 Jan 13 nicklas 89     border: 1px solid #000000;
1814 30 Jan 13 nicklas 90   }
1814 30 Jan 13 nicklas 91   
1814 30 Jan 13 nicklas 92   #listview tr.evencol
1814 30 Jan 13 nicklas 93   {
1898 07 Mar 13 nicklas 94     background-color: #F0F0F0;
1814 30 Jan 13 nicklas 95   }
1814 30 Jan 13 nicklas 96   
1814 30 Jan 13 nicklas 97   #listview thead
1814 30 Jan 13 nicklas 98   {
1814 30 Jan 13 nicklas 99     border: 1px solid #000000;
1898 07 Mar 13 nicklas 100     background-color: #F0F0F0;
1814 30 Jan 13 nicklas 101   }
1814 30 Jan 13 nicklas 102   
1814 30 Jan 13 nicklas 103   #listview tbody
1814 30 Jan 13 nicklas 104   {
1814 30 Jan 13 nicklas 105     page-break-inside: avoid;
1814 30 Jan 13 nicklas 106     border-top: 1px solid #000000;
1814 30 Jan 13 nicklas 107     border-bottom: 1px solid #000000;
1814 30 Jan 13 nicklas 108   }
1814 30 Jan 13 nicklas 109   
1814 30 Jan 13 nicklas 110   #listview th
1814 30 Jan 13 nicklas 111   {
1814 30 Jan 13 nicklas 112     border-left: 1px solid #000000;
1814 30 Jan 13 nicklas 113   }
1814 30 Jan 13 nicklas 114   
1814 30 Jan 13 nicklas 115   #listview td
1814 30 Jan 13 nicklas 116   {
1814 30 Jan 13 nicklas 117     border-left: 1px solid #000000;
1814 30 Jan 13 nicklas 118     border-top: 1px dotted #666666;
1814 30 Jan 13 nicklas 119     vertical-align: middle;
3760 19 Feb 16 nicklas 120     padding: 1px;
1814 30 Jan 13 nicklas 121   }
1814 30 Jan 13 nicklas 122   
1814 30 Jan 13 nicklas 123   #listview .col-num
1814 30 Jan 13 nicklas 124   {
1814 30 Jan 13 nicklas 125     width: 1.75em;
1814 30 Jan 13 nicklas 126     text-align: center;
1814 30 Jan 13 nicklas 127     font-size: 125%;
1814 30 Jan 13 nicklas 128     font-weight: bold;
1814 30 Jan 13 nicklas 129     vertical-align: top;
1814 30 Jan 13 nicklas 130   }
1814 30 Jan 13 nicklas 131   
1814 30 Jan 13 nicklas 132   #listview .lib
1814 30 Jan 13 nicklas 133   {
1814 30 Jan 13 nicklas 134     width: 15em;
1814 30 Jan 13 nicklas 135     text-align: center;
1814 30 Jan 13 nicklas 136   }
1814 30 Jan 13 nicklas 137   
1814 30 Jan 13 nicklas 138   #listview .empty .lib
1814 30 Jan 13 nicklas 139   {
1814 30 Jan 13 nicklas 140     font-style: italic;
1814 30 Jan 13 nicklas 141     color: #666666;
1814 30 Jan 13 nicklas 142     text-align: center;
1814 30 Jan 13 nicklas 143   }
1814 30 Jan 13 nicklas 144   
1814 30 Jan 13 nicklas 145   #listview .workplate, #listview .barcode
1814 30 Jan 13 nicklas 146   {
1814 30 Jan 13 nicklas 147     width: 7em;
1814 30 Jan 13 nicklas 148     text-align: center;
1814 30 Jan 13 nicklas 149   }
1814 30 Jan 13 nicklas 150   #listview .remarks
1814 30 Jan 13 nicklas 151   {
1814 30 Jan 13 nicklas 152     vertical-align: top;
1814 30 Jan 13 nicklas 153     padding-left: 0.25em;
1814 30 Jan 13 nicklas 154   }
1814 30 Jan 13 nicklas 155   
1814 30 Jan 13 nicklas 156   /* Divide the 12 wells across the full page */
1814 30 Jan 13 nicklas 157   #plateview .well
1814 30 Jan 13 nicklas 158   {
1814 30 Jan 13 nicklas 159     width: 8.2%;
1814 30 Jan 13 nicklas 160     max-width: 8.2%;
1814 30 Jan 13 nicklas 161     min-width: 8.2%;
1925 11 Apr 13 nicklas 162     padding: 4px;
1814 30 Jan 13 nicklas 163   }
1925 11 Apr 13 nicklas 164   
1925 11 Apr 13 nicklas 165   #plateview .well:hover
1925 11 Apr 13 nicklas 166   {
1925 11 Apr 13 nicklas 167     padding: 3px;
1925 11 Apr 13 nicklas 168   }
1814 30 Jan 13 nicklas 169     
1814 30 Jan 13 nicklas 170   #plateview .rowheader
1814 30 Jan 13 nicklas 171   {
1814 30 Jan 13 nicklas 172     width: 2em;
1814 30 Jan 13 nicklas 173   }
1814 30 Jan 13 nicklas 174   
1814 30 Jan 13 nicklas 175   #plateview .lib
1814 30 Jan 13 nicklas 176   {
1814 30 Jan 13 nicklas 177     font-weight: bold;
1925 11 Apr 13 nicklas 178     margin-bottom: 0.25em;
1814 30 Jan 13 nicklas 179   }
1814 30 Jan 13 nicklas 180   #plateview .remarks
1814 30 Jan 13 nicklas 181   {
1814 30 Jan 13 nicklas 182     color: #C80000;
1814 30 Jan 13 nicklas 183     font-style: italic;
1814 30 Jan 13 nicklas 184   }
2837 20 Oct 14 nicklas 185   
2837 20 Oct 14 nicklas 186   #plateview .well.primary.empty
2837 20 Oct 14 nicklas 187   {
2837 20 Oct 14 nicklas 188     background-color: #FFFFFF;
2837 20 Oct 14 nicklas 189   }
2837 20 Oct 14 nicklas 190   
3760 19 Feb 16 nicklas 191   #plateview .yellow-specimen .if-yellow
3760 19 Feb 16 nicklas 192   {
3760 19 Feb 16 nicklas 193     background-image: url('../images/yellow-label-small.png');
3760 19 Feb 16 nicklas 194     background-position: 1px 50%;
3760 19 Feb 16 nicklas 195     background-repeat: no-repeat;
3760 19 Feb 16 nicklas 196     /* Grow background without shifting text position veritcally, move to right to make room for icon*/
3760 19 Feb 16 nicklas 197     padding: 4px 4px 3px 14px;
3760 19 Feb 16 nicklas 198     margin: -4px -4px -1px -4px;
3760 19 Feb 16 nicklas 199   }
3760 19 Feb 16 nicklas 200   
1814 30 Jan 13 nicklas 201   </style>
2673 16 Sep 14 nicklas 202 </base:head>
2673 16 Sep 14 nicklas 203 <base:body>
1814 30 Jan 13 nicklas 204   <div class="paper <%=view.equals("list") ? "" : "landscape"%>">
2673 16 Sep 14 nicklas 205
2673 16 Sep 14 nicklas 206   <form name="reggie" id="wizard">
2673 16 Sep 14 nicklas 207   
2673 16 Sep 14 nicklas 208   <div id="page-data" class="datacontainer"
2673 16 Sep 14 nicklas 209     data-view="<%=view%>"
2673 16 Sep 14 nicklas 210     data-libplate="<%=libPlateId%>"
2673 16 Sep 14 nicklas 211     data-schema="<%=poolSchema%>"
2673 16 Sep 14 nicklas 212     data-barcode-variant="<%=barcodeVariant%>"
2673 16 Sep 14 nicklas 213     data-rows="<%=rows%>"
2673 16 Sep 14 nicklas 214     data-columns="<%=columns%>"
3760 19 Feb 16 nicklas 215     data-home-url="<%=home%>"
2673 16 Sep 14 nicklas 216   ></div>
2673 16 Sep 14 nicklas 217
2673 16 Sep 14 nicklas 218   <div id="wizard-status"></div>
2673 16 Sep 14 nicklas 219
2673 16 Sep 14 nicklas 220   <div id="all-protocol" style="display: none;">
2673 16 Sep 14 nicklas 221
2673 16 Sep 14 nicklas 222   <div id="print-instructions" class="noprint fullwidth">
2970 24 Nov 14 nicklas 223     <base:button id="print-button" image="<%=home+"/images/print.png"%>" title="Print&hellip;" />
2970 24 Nov 14 nicklas 224     <span id="printNote">
1814 30 Jan 13 nicklas 225     <b>Note!</b> 
1814 30 Jan 13 nicklas 226     <%
1814 30 Jan 13 nicklas 227     if (view.equals("list"))
1814 30 Jan 13 nicklas 228     {
1814 30 Jan 13 nicklas 229       %>
1814 30 Jan 13 nicklas 230       For better printing reduce margins to about <i>5mm</i> and set page orientation
1814 30 Jan 13 nicklas 231       to <i>portrait</i>. To fit everything on a single page, scale down to <i>60-70%</i>.
1814 30 Jan 13 nicklas 232       <%
1814 30 Jan 13 nicklas 233     }
1814 30 Jan 13 nicklas 234     else
1814 30 Jan 13 nicklas 235     {
1814 30 Jan 13 nicklas 236       %>
1814 30 Jan 13 nicklas 237       For better printing reduce margins to about <i>5mm</i> and set page orientation
1814 30 Jan 13 nicklas 238       to <i>landscape</i>. The recommended scale is <i>100%</i>.
1814 30 Jan 13 nicklas 239       <%
1814 30 Jan 13 nicklas 240     }
1814 30 Jan 13 nicklas 241     %>
2970 24 Nov 14 nicklas 242     </span>
1814 30 Jan 13 nicklas 243     <br clear="all">
1814 30 Jan 13 nicklas 244   </div>
2673 16 Sep 14 nicklas 245
1814 30 Jan 13 nicklas 246   
1894 04 Mar 13 nicklas 247   <h1>Lab protocol for library preparation <span class="reggie">Reggie <%=reggie.getAbout().getVersion() %></span></h1>
1814 30 Jan 13 nicklas 248
2001 29 May 13 nicklas 249   <table style="width: 100%;" class="protocolheader">
2001 29 May 13 nicklas 250   <tr style="border-bottom: 1px solid #000000;">
2001 29 May 13 nicklas 251     <th style="width: 15%;">Work plate</th>
2001 29 May 13 nicklas 252     <td style="width: 30%; border-right: 1px solid #000000;"><%=HTML.encodeTags(plate.getName())%></td>
2001 29 May 13 nicklas 253     <th style="width: 15%;">LibPrep</th>
2001 29 May 13 nicklas 254     <th style="width: 20%;">Date</th>
2001 29 May 13 nicklas 255     <th style="width: 20%;">Operator</th>
1814 30 Jan 13 nicklas 256   </tr>
2001 29 May 13 nicklas 257   <tr>
2001 29 May 13 nicklas 258     <td rowspan="2" colspan="2" style="width: 50%; border-right: 1px solid #000000;"><%=HTML.niceFormat(plate.getDescription()) %></td>
2001 29 May 13 nicklas 259     <td style="border-right: 1px solid #000000;">Amplification</td>
2001 29 May 13 nicklas 260     <td style="border-right: 1px solid #000000;"></td>
2001 29 May 13 nicklas 261     <td></td>
1814 30 Jan 13 nicklas 262   </tr>
2001 29 May 13 nicklas 263   <tr style="border-top: 1px solid #CCCCCC;">
2001 29 May 13 nicklas 264     <td style="border-right: 1px solid #000000;">Cleanup</td>
2001 29 May 13 nicklas 265     <td style="border-right: 1px solid #000000;"></td>
2001 29 May 13 nicklas 266     <td></td>
2001 29 May 13 nicklas 267   </tr>
1814 30 Jan 13 nicklas 268   </table>
1814 30 Jan 13 nicklas 269
1814 30 Jan 13 nicklas 270   <%
1814 30 Jan 13 nicklas 271   if (view.equals("list"))
1814 30 Jan 13 nicklas 272   {
1814 30 Jan 13 nicklas 273     %>
2673 16 Sep 14 nicklas 274     <div id="listviewcontainer">
1814 30 Jan 13 nicklas 275     <table style="width: 100%;" id="listview">
1814 30 Jan 13 nicklas 276     <thead>
1814 30 Jan 13 nicklas 277       <tr class="toprow">
1814 30 Jan 13 nicklas 278         <th></th>
1814 30 Jan 13 nicklas 279         <th class="lib"></th>
1814 30 Jan 13 nicklas 280         <th class="workplate">Work</th>
1814 30 Jan 13 nicklas 281         <th class="barcode">TruSeq</th>
1814 30 Jan 13 nicklas 282         <th></th>
1814 30 Jan 13 nicklas 283       </tr>
1814 30 Jan 13 nicklas 284       <tr>
1814 30 Jan 13 nicklas 285         <th></th>
1814 30 Jan 13 nicklas 286         <th class="lib">Library</th>
1814 30 Jan 13 nicklas 287         <th class="workplate">plate</th>
1814 30 Jan 13 nicklas 288         <th class="barcode">index</th>
1814 30 Jan 13 nicklas 289         <th>Remarks</th>
1814 30 Jan 13 nicklas 290       </tr>
1814 30 Jan 13 nicklas 291     </thead>
1814 30 Jan 13 nicklas 292     <%
1814 30 Jan 13 nicklas 293     WellCoordinateFormatter rowF = new WellCoordinateFormatter(true);
1814 30 Jan 13 nicklas 294     WellCoordinateFormatter colF = new WellCoordinateFormatter(false);
1814 30 Jan 13 nicklas 295     for (int c = 0; c < columns; ++c)
1814 30 Jan 13 nicklas 296     {
1814 30 Jan 13 nicklas 297       String rowClass = c % 2 == 0 ? "evencol" : "oddcol";
1814 30 Jan 13 nicklas 298       %>
1814 30 Jan 13 nicklas 299       <tbody>
1814 30 Jan 13 nicklas 300       <%
1814 30 Jan 13 nicklas 301       for (int r = 0; r < rows; ++r)
1814 30 Jan 13 nicklas 302       {
1814 30 Jan 13 nicklas 303         String idSuffix = c + "." + r;
1814 30 Jan 13 nicklas 304         %>
1814 30 Jan 13 nicklas 305         <tr class="<%=rowClass%> empty" id="row.<%=idSuffix%>">
1814 30 Jan 13 nicklas 306           <%
1814 30 Jan 13 nicklas 307           if (r == 0)
1814 30 Jan 13 nicklas 308           {
1814 30 Jan 13 nicklas 309             %>
2218 10 Feb 14 nicklas 310             <td id="col.<%=c%>" class="col-num" rowspan="<%=rows%>"><%=c+1%></td>
1814 30 Jan 13 nicklas 311             <%
1814 30 Jan 13 nicklas 312           }
1814 30 Jan 13 nicklas 313           %>
3760 19 Feb 16 nicklas 314           <td class="lib if-yellow" id="lib.<%=idSuffix%>">empty</td>
1814 30 Jan 13 nicklas 315           <td class="workplate"><%=rowF.format(r)+colF.format(c)%></td>
1814 30 Jan 13 nicklas 316           <td class="barcode" id="barcode.<%=idSuffix%>"></td>
1814 30 Jan 13 nicklas 317           <td class="remarks" id="remarks.<%=idSuffix%>"></td>
1814 30 Jan 13 nicklas 318         </tr>
1814 30 Jan 13 nicklas 319         <%
1814 30 Jan 13 nicklas 320       }
1814 30 Jan 13 nicklas 321       %>
1814 30 Jan 13 nicklas 322       </tbody>
1814 30 Jan 13 nicklas 323       <%
1814 30 Jan 13 nicklas 324     }
1814 30 Jan 13 nicklas 325     %>
1814 30 Jan 13 nicklas 326     </table>
1933 17 Apr 13 nicklas 327     </div>
1814 30 Jan 13 nicklas 328     <%
1814 30 Jan 13 nicklas 329   }
1814 30 Jan 13 nicklas 330   else
1814 30 Jan 13 nicklas 331   {
1814 30 Jan 13 nicklas 332     %>
2673 16 Sep 14 nicklas 333     <div id="plateviewcontainer">
1933 17 Apr 13 nicklas 334     <table class="plate" style="margin: 0em 0 0 0; width: 100%;" id="plateview">
1814 30 Jan 13 nicklas 335     <%
1814 30 Jan 13 nicklas 336     WellCoordinateFormatter rowF = new WellCoordinateFormatter(true);
1814 30 Jan 13 nicklas 337     WellCoordinateFormatter colF = new WellCoordinateFormatter(false);
1814 30 Jan 13 nicklas 338     %>
1814 30 Jan 13 nicklas 339     <tr class="header">
1814 30 Jan 13 nicklas 340       <th></th>
1814 30 Jan 13 nicklas 341       <%
1814 30 Jan 13 nicklas 342       for (int c = 0; c < columns; ++c)
1814 30 Jan 13 nicklas 343       {
1814 30 Jan 13 nicklas 344         %>
1814 30 Jan 13 nicklas 345         <th id="col.<%=c%>"><%=colF.format(c)%></th>
1814 30 Jan 13 nicklas 346         <%
1814 30 Jan 13 nicklas 347       }
1814 30 Jan 13 nicklas 348       %>
1814 30 Jan 13 nicklas 349     </tr>
1814 30 Jan 13 nicklas 350     <tbody>
1814 30 Jan 13 nicklas 351     <%
1814 30 Jan 13 nicklas 352     for (int r = 0; r < rows; ++r)
1814 30 Jan 13 nicklas 353     {
1814 30 Jan 13 nicklas 354       String row = rowF.format(r);
1814 30 Jan 13 nicklas 355       %>
1814 30 Jan 13 nicklas 356       <tr class="row-<%=r%>">
1814 30 Jan 13 nicklas 357         <th id="row.<%=r%>" class="rowheader"><%=row%></th>
1814 30 Jan 13 nicklas 358         <%
1814 30 Jan 13 nicklas 359         for (int c = 0; c < columns; ++c)
1814 30 Jan 13 nicklas 360         {
1814 30 Jan 13 nicklas 361           %>
1814 30 Jan 13 nicklas 362           <td class="well col-<%=c%>" id="well.<%=r%>.<%=c%>"></td>
1814 30 Jan 13 nicklas 363           <%
1814 30 Jan 13 nicklas 364         }
1814 30 Jan 13 nicklas 365         %>
1814 30 Jan 13 nicklas 366       </tr>
1814 30 Jan 13 nicklas 367       <%
1814 30 Jan 13 nicklas 368     }
1814 30 Jan 13 nicklas 369     %>
1814 30 Jan 13 nicklas 370     </tbody>
1814 30 Jan 13 nicklas 371     <tr id="pool-row">
1814 30 Jan 13 nicklas 372       <th colspan="13">&nbsp;</th>
1814 30 Jan 13 nicklas 373     </tr>
1814 30 Jan 13 nicklas 374     </table>
1933 17 Apr 13 nicklas 375     </div>
1814 30 Jan 13 nicklas 376     <%
1814 30 Jan 13 nicklas 377   }
1814 30 Jan 13 nicklas 378   %>
2673 16 Sep 14 nicklas 379 </div>
2673 16 Sep 14 nicklas 380 </form>
2673 16 Sep 14 nicklas 381 </div>
2673 16 Sep 14 nicklas 382 </base:body>
2673 16 Sep 14 nicklas 383 </base:page>
1814 30 Jan 13 nicklas 384 <%
1814 30 Jan 13 nicklas 385 }
1814 30 Jan 13 nicklas 386 finally
1814 30 Jan 13 nicklas 387 {
1814 30 Jan 13 nicklas 388   if (dc != null) dc.close();
1814 30 Jan 13 nicklas 389 }
1814 30 Jan 13 nicklas 390 %>