extensions/net.sf.basedb.reggie/trunk/resources/mipsprep/mips_protocol2.jsp

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