www/views/experiments/explorer/search/list.jsp

Code
Comments
Other
Rev Date Author Line
2487 04 Aug 06 nicklas 1 <%-- $Id$
2487 04 Aug 06 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2006 Johan Enell, Nicklas Nordborg
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell
2487 04 Aug 06 nicklas 5
2487 04 Aug 06 nicklas 6   This file is part of BASE - BioArray Software Environment.
2487 04 Aug 06 nicklas 7   Available at http://base.thep.lu.se/
2487 04 Aug 06 nicklas 8
2487 04 Aug 06 nicklas 9   BASE is free software; you can redistribute it and/or
2487 04 Aug 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
2487 04 Aug 06 nicklas 12   of the License, or (at your option) any later version.
2487 04 Aug 06 nicklas 13
2487 04 Aug 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2487 04 Aug 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2487 04 Aug 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2487 04 Aug 06 nicklas 17   GNU General Public License for more details.
2487 04 Aug 06 nicklas 18
2487 04 Aug 06 nicklas 19   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2487 04 Aug 06 nicklas 21   ------------------------------------------------------------------
2487 04 Aug 06 nicklas 22
2487 04 Aug 06 nicklas 23   @author Nicklas
2487 04 Aug 06 nicklas 24   @version 2.0
2487 04 Aug 06 nicklas 25 --%>
7943 04 May 21 nicklas 26 <%@page import="net.sf.basedb.clients.web.ModeInfo"%>
5426 24 Sep 10 nicklas 27 <%@ page pageEncoding="UTF-8" session="false"
2487 04 Aug 06 nicklas 28   import="net.sf.basedb.core.SessionControl"
2487 04 Aug 06 nicklas 29   import="net.sf.basedb.core.DbControl"
2487 04 Aug 06 nicklas 30   import="net.sf.basedb.core.Item"
2487 04 Aug 06 nicklas 31   import="net.sf.basedb.core.ItemContext"
4306 21 May 08 nicklas 32   import="net.sf.basedb.core.Permission"
2487 04 Aug 06 nicklas 33   import="net.sf.basedb.core.BioAssaySet"
2487 04 Aug 06 nicklas 34   import="net.sf.basedb.core.Experiment"
2487 04 Aug 06 nicklas 35   import="net.sf.basedb.core.RawDataType"
2487 04 Aug 06 nicklas 36   import="net.sf.basedb.core.ExtendedProperties"
2487 04 Aug 06 nicklas 37   import="net.sf.basedb.core.ExtendedProperty"
5711 30 Aug 11 nicklas 38   import="net.sf.basedb.core.DynamicReporterQuery"
2487 04 Aug 06 nicklas 39   import="net.sf.basedb.core.DynamicResultIterator"
2487 04 Aug 06 nicklas 40   import="net.sf.basedb.core.VirtualColumn"
2487 04 Aug 06 nicklas 41   import="net.sf.basedb.core.data.ReporterData"
2487 04 Aug 06 nicklas 42   import="net.sf.basedb.core.query.Restrictions"
2487 04 Aug 06 nicklas 43   import="net.sf.basedb.core.query.Expressions"
2487 04 Aug 06 nicklas 44   import="net.sf.basedb.core.query.Dynamic"
2487 04 Aug 06 nicklas 45   import="net.sf.basedb.core.query.Orders"
2487 04 Aug 06 nicklas 46   import="net.sf.basedb.core.query.Selects"
2487 04 Aug 06 nicklas 47   import="net.sf.basedb.core.query.Aggregations"
2487 04 Aug 06 nicklas 48   import="net.sf.basedb.core.query.JoinType"
2487 04 Aug 06 nicklas 49   import="net.sf.basedb.core.query.SqlResult"
2487 04 Aug 06 nicklas 50   import="net.sf.basedb.clients.web.Base"
2487 04 Aug 06 nicklas 51   import="net.sf.basedb.clients.web.DynamicUtil"
2487 04 Aug 06 nicklas 52   import="net.sf.basedb.clients.web.ExperimentExplorer"
2487 04 Aug 06 nicklas 53   import="net.sf.basedb.clients.web.WebException"
2753 20 Oct 06 nicklas 54   import="net.sf.basedb.util.Values"
2487 04 Aug 06 nicklas 55   import="net.sf.basedb.clients.web.util.HTML"
2487 04 Aug 06 nicklas 56   import="net.sf.basedb.clients.web.taglib.table.TableColumn"
2487 04 Aug 06 nicklas 57   import="java.util.Date"
2487 04 Aug 06 nicklas 58   import="java.util.Map"
2487 04 Aug 06 nicklas 59   import="java.util.HashMap"
2487 04 Aug 06 nicklas 60   import="java.util.List"
2487 04 Aug 06 nicklas 61   import="java.util.LinkedList"
2487 04 Aug 06 nicklas 62 %>
2487 04 Aug 06 nicklas 63 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2487 04 Aug 06 nicklas 64 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
2487 04 Aug 06 nicklas 65 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2487 04 Aug 06 nicklas 66 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
2487 04 Aug 06 nicklas 67 <%!
2487 04 Aug 06 nicklas 68   private static final Item itemType = Item.REPORTER;
2487 04 Aug 06 nicklas 69 %>
2487 04 Aug 06 nicklas 70
2487 04 Aug 06 nicklas 71 <%
2487 04 Aug 06 nicklas 72 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
2487 04 Aug 06 nicklas 73 final String ID = sc.getId();
2487 04 Aug 06 nicklas 74 final float scale = Base.getScale(sc);
2487 04 Aug 06 nicklas 75 final String root = request.getContextPath();
7943 04 May 21 nicklas 76 final ModeInfo mode = ModeInfo.DEFAULT;
2487 04 Aug 06 nicklas 77
2487 04 Aug 06 nicklas 78 final int bioAssaySetId = Values.getInt(request.getParameter("bioassayset_id"));
7954 12 May 21 nicklas 79 final DbControl dc = sc.newDbControl(":Experiment explorer - Search");
2502 09 Aug 06 nicklas 80 DynamicResultIterator reporters = null;
5711 30 Aug 11 nicklas 81 long totalReporters = 0;
2487 04 Aug 06 nicklas 82 try
2487 04 Aug 06 nicklas 83 {
2487 04 Aug 06 nicklas 84   String title = null;
2487 04 Aug 06 nicklas 85   final BioAssaySet bioAssaySet = BioAssaySet.getById(dc, bioAssaySetId);
2487 04 Aug 06 nicklas 86   final Experiment experiment = bioAssaySet.getExperiment();
2487 04 Aug 06 nicklas 87   final RawDataType rawDataType = experiment.getRawDataType();
2487 04 Aug 06 nicklas 88   
2487 04 Aug 06 nicklas 89   final ExperimentExplorer explorer = ExperimentExplorer.getExplorer(bioAssaySet);
2490 08 Aug 06 nicklas 90   final ItemContext cc = explorer.getAndSetReporterContext(sc, null);
2487 04 Aug 06 nicklas 91   final String subContext = cc.getSubContext();
2487 04 Aug 06 nicklas 92
5885 22 Nov 11 nicklas 93   List<TableColumn> allColumns = new LinkedList<TableColumn>();
5885 22 Nov 11 nicklas 94   DynamicUtil.addReporterColumns(allColumns, dc, experiment.getVirtualDb().getReporterCloneTemplate(), "", "@", "");
2487 04 Aug 06 nicklas 95   
5885 22 Nov 11 nicklas 96   DynamicUtil.SelectedInfo selected = DynamicUtil.getSelectedColumns(cc, allColumns, false);
5885 22 Nov 11 nicklas 97   List<TableColumn> selectedColumns = selected.selectedColumns;
2487 04 Aug 06 nicklas 98   
2502 09 Aug 06 nicklas 99   try
2502 09 Aug 06 nicklas 100   {
5711 30 Aug 11 nicklas 101     DynamicReporterQuery reporterQuery = explorer.getReporterQuery(dc, selected.selectedProperties);
5885 22 Nov 11 nicklas 102     reporterQuery.setFailSafe(true);
5711 30 Aug 11 nicklas 103     totalReporters = explorer.getMatchingReporters(dc);
2502 09 Aug 06 nicklas 104     reporters = reporterQuery.iterate(dc);
2502 09 Aug 06 nicklas 105   }
2502 09 Aug 06 nicklas 106   catch (Throwable t)
2502 09 Aug 06 nicklas 107   {
2502 09 Aug 06 nicklas 108     cc.setMessage(t.getMessage());
5711 30 Aug 11 nicklas 109     t.printStackTrace();
2502 09 Aug 06 nicklas 110   }
2502 09 Aug 06 nicklas 111   int numListed = 0;
2487 04 Aug 06 nicklas 112   %>
2487 04 Aug 06 nicklas 113   <base:page title="<%=title%>">
7943 04 May 21 nicklas 114   <base:head scripts="table.js,tabcontrol-2.js,~list.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
7943 04 May 21 nicklas 115   <style>
7943 04 May 21 nicklas 116     .row-index > div
7943 04 May 21 nicklas 117     {
7943 04 May 21 nicklas 118       grid-template-columns: 1fr !important;
7943 04 May 21 nicklas 119     }
7943 04 May 21 nicklas 120     .row-index .index
7943 04 May 21 nicklas 121     {
7943 04 May 21 nicklas 122       padding-right: 3px;
7943 04 May 21 nicklas 123     }
7943 04 May 21 nicklas 124   </style
7943 04 May 21 nicklas 125   </base:head>
2487 04 Aug 06 nicklas 126   <base:body>
5952 10 Feb 12 nicklas 127     <p:path><p:pathelement
5952 10 Feb 12 nicklas 128       title="Experiments" href="<%="../../index.jsp?ID="+ID%>" 
5952 10 Feb 12 nicklas 129       /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" 
6143 20 Sep 12 nicklas 130         href="<%="../../bioassaysets/index.jsp?ID="+ID+"&amp;experiment_id="+experiment.getId()%>" 
5952 10 Feb 12 nicklas 131       /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>" 
6143 20 Sep 12 nicklas 132         href="<%="../../bioassaysets/index.jsp?ID="+ID+"&amp;cmd=ViewItem&amp;item_id="+bioAssaySetId%>" 
5952 10 Feb 12 nicklas 133       /><p:pathelement title="Explorer" /></p:path>
5952 10 Feb 12 nicklas 134     <t:tabcontrol 
5952 10 Feb 12 nicklas 135       id="explorer"
5952 10 Feb 12 nicklas 136       subclass="mastertabcontrol content"
6315 06 Sep 13 nicklas 137       remember="false" active="search">
2487 04 Aug 06 nicklas 138     <t:tab id="search" title="Reporter search">
2487 04 Aug 06 nicklas 139     <tbl:table 
2487 04 Aug 06 nicklas 140       id="reporters" 
2487 04 Aug 06 nicklas 141       columns="<%=cc.getSetting("columns")%>"
2487 04 Aug 06 nicklas 142       sortby="<%=cc.getSortProperty()%>" 
2487 04 Aug 06 nicklas 143       direction="<%=cc.getSortDirection()%>"
2487 04 Aug 06 nicklas 144       action="index.jsp"
2487 04 Aug 06 nicklas 145       sc="<%=sc%>"
2487 04 Aug 06 nicklas 146       item="<%=itemType%>"
2487 04 Aug 06 nicklas 147       subcontext="<%=subContext%>"
6700 30 Jan 15 nicklas 148       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 149       subclass="fulltable"
7982 14 Jun 21 nicklas 150       stickyheaders="<%=cc.getSetting("columns.sticky", "externalId")%>"
2487 04 Aug 06 nicklas 151       >
2487 04 Aug 06 nicklas 152       <tbl:hidden 
2487 04 Aug 06 nicklas 153         name="bioassayset_id" 
2487 04 Aug 06 nicklas 154         value="<%=String.valueOf(bioAssaySetId)%>" 
2487 04 Aug 06 nicklas 155       />
2487 04 Aug 06 nicklas 156       <%
5885 22 Nov 11 nicklas 157       for (TableColumn tc : allColumns)
2487 04 Aug 06 nicklas 158       {
2487 04 Aug 06 nicklas 159         %>
2487 04 Aug 06 nicklas 160         <tbl:columndef
2487 04 Aug 06 nicklas 161           id="<%=tc.getId()%>"
4387 11 Aug 08 nicklas 162           clazz="<%="externalId".equals(tc.getId()) ? "uniquecol" : "columnheader"%>"
2487 04 Aug 06 nicklas 163           property="<%=tc.getProperty()%>"
2487 04 Aug 06 nicklas 164           datatype="<%=tc.getDatatype().getStringValue()%>"
2487 04 Aug 06 nicklas 165           title="<%=tc.getTitle()%>"
2487 04 Aug 06 nicklas 166           sortable="<%=tc.getSortable()%>"
2487 04 Aug 06 nicklas 167           filterable="<%=tc.getFilterable()%>"
2487 04 Aug 06 nicklas 168           exportable="<%=tc.getExportable()%>"
2487 04 Aug 06 nicklas 169           show="<%=tc.getShow()%>"
2733 16 Oct 06 nicklas 170           formatter="<%=tc.getFormatter()%>"
2487 04 Aug 06 nicklas 171         />
2487 04 Aug 06 nicklas 172         <%
2487 04 Aug 06 nicklas 173       }
2487 04 Aug 06 nicklas 174       %>
5885 22 Nov 11 nicklas 175       <tbl:columndef 
5885 22 Nov 11 nicklas 176         id="reporterList"
5885 22 Nov 11 nicklas 177         property="£reporterList"
5885 22 Nov 11 nicklas 178         datatype="int"
5885 22 Nov 11 nicklas 179         title="Reporter list"
5885 22 Nov 11 nicklas 180         filterable="true"
5885 22 Nov 11 nicklas 181         enumeration="<%=Base.getReporterListsEnum(dc)%>"
5885 22 Nov 11 nicklas 182         multiple="false"
5885 22 Nov 11 nicklas 183       />      
5952 10 Feb 12 nicklas 184       
6604 18 Nov 14 nicklas 185       <div class="panelgroup bg-filled-50 bottomborder">
6612 21 Nov 14 nicklas 186         <tbl:toolbar subclass="bottomborder">
5952 10 Feb 12 nicklas 187           <tbl:button 
6315 06 Sep 13 nicklas 188             id="btnColumns"
5952 10 Feb 12 nicklas 189             image="columns.png" 
5952 10 Feb 12 nicklas 190             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 191             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 192           />
5952 10 Feb 12 nicklas 193           <tbl:button
6315 06 Sep 13 nicklas 194             id="btnNewReporterList"
5952 10 Feb 12 nicklas 195             image="add.png"
5952 10 Feb 12 nicklas 196             title="New reporter list&hellip;"
5952 10 Feb 12 nicklas 197             tooltip="Create a new reporter list from matching reporters"
5952 10 Feb 12 nicklas 198             visible="<%=sc.hasPermission(Permission.CREATE, Item.REPORTERLIST)%>"
5952 10 Feb 12 nicklas 199           />
5952 10 Feb 12 nicklas 200         </tbl:toolbar>
5952 10 Feb 12 nicklas 201         <tbl:panel>
6182 23 Oct 12 nicklas 202           <tbl:presetselector />
5952 10 Feb 12 nicklas 203           <tbl:navigator
5952 10 Feb 12 nicklas 204             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 205             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 206             totalrows="<%=totalReporters%>" 
5952 10 Feb 12 nicklas 207           />
5952 10 Feb 12 nicklas 208         </tbl:panel>
5952 10 Feb 12 nicklas 209       </div>
2487 04 Aug 06 nicklas 210       <tbl:data>
5949 08 Feb 12 nicklas 211         <tbl:headers>
5949 08 Feb 12 nicklas 212           <tbl:headerrow>
7943 04 May 21 nicklas 213             <tbl:header clazz="row-index bg-filled-100" />
5949 08 Feb 12 nicklas 214             <tbl:columnheaders />
5949 08 Feb 12 nicklas 215           </tbl:headerrow>
6700 30 Jan 15 nicklas 216           <%
6700 30 Jan 15 nicklas 217           int numFilters = cc.getNumPropertyFilters();
6700 30 Jan 15 nicklas 218           int numRows = cc.getFilterRows();
6700 30 Jan 15 nicklas 219           for (int filterNo = 0; filterNo < numRows; filterNo++)
6700 30 Jan 15 nicklas 220           {
6700 30 Jan 15 nicklas 221             boolean lastRow = filterNo == numRows-1;
6700 30 Jan 15 nicklas 222             %>
6700 30 Jan 15 nicklas 223             <tbl:headerrow>
7943 04 May 21 nicklas 224               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 225                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 226                   <div class="icons">
7943 04 May 21 nicklas 227                     <base:icon
7943 04 May 21 nicklas 228                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 229                       image="add.png"
7943 04 May 21 nicklas 230                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 231                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 232                     /><base:icon
7943 04 May 21 nicklas 233                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 234                       image="remove.png"
7943 04 May 21 nicklas 235                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 236                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 237                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 238                     />
7943 04 May 21 nicklas 239                   </div>
7943 04 May 21 nicklas 240                 </div>
6700 30 Jan 15 nicklas 241               </tbl:header>
7943 04 May 21 nicklas 242
6700 30 Jan 15 nicklas 243               <tbl:propertyfilter row="<%=filterNo%>" />
6700 30 Jan 15 nicklas 244             </tbl:headerrow>
6700 30 Jan 15 nicklas 245             <%
6700 30 Jan 15 nicklas 246           }
6700 30 Jan 15 nicklas 247           %>
5949 08 Feb 12 nicklas 248         </tbl:headers>
2487 04 Aug 06 nicklas 249         <tbl:rows>
2487 04 Aug 06 nicklas 250       <%
5952 10 Feb 12 nicklas 251       if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 252       {
5952 10 Feb 12 nicklas 253         %>
6604 18 Nov 14 nicklas 254         <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 255           <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 256         </tbl:panel>
5952 10 Feb 12 nicklas 257         <%
5952 10 Feb 12 nicklas 258         cc.setMessage(null);
5952 10 Feb 12 nicklas 259       }
5885 22 Nov 11 nicklas 260       int rowIndex = cc.getPage()*cc.getRowsPerPage();
2502 09 Aug 06 nicklas 261       if (reporters != null)
2487 04 Aug 06 nicklas 262       {
6315 06 Sep 13 nicklas 263         boolean writeReporterPermission = sc.hasPermission(Permission.WRITE, Item.REPORTER);
6315 06 Sep 13 nicklas 264         String tooltip = "View this item" + (writeReporterPermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2502 09 Aug 06 nicklas 265         while (reporters.hasNext())
2502 09 Aug 06 nicklas 266         {
2502 09 Aug 06 nicklas 267           SqlResult item = reporters.next();
2502 09 Aug 06 nicklas 268           int itemId = item.getInt(1);
5885 22 Nov 11 nicklas 269           rowIndex++;
2502 09 Aug 06 nicklas 270           numListed++;
2502 09 Aug 06 nicklas 271           %>
2502 09 Aug 06 nicklas 272           <tbl:row>
7943 04 May 21 nicklas 273             <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 274               <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 275                 <div class="index <%=rowIndex>999?"index-smaller":""%>"><span class="link auto-init" 
6315 06 Sep 13 nicklas 276                 data-auto-init="view-reporter"
7943 04 May 21 nicklas 277                 data-index="<%=rowIndex-1%>"><%=rowIndex%></span></div>
7943 04 May 21 nicklas 278               </div>
7943 04 May 21 nicklas 279             </tbl:header>
2502 09 Aug 06 nicklas 280             <%
5885 22 Nov 11 nicklas 281             int colIndex = 2;
5885 22 Nov 11 nicklas 282             for (TableColumn tc : selectedColumns)
2502 09 Aug 06 nicklas 283             {
5885 22 Nov 11 nicklas 284               String name = tc.getId();
5885 22 Nov 11 nicklas 285               if ("externalId".equals(name))
2747 19 Oct 06 enell 286               {
2747 19 Oct 06 enell 287                 %>
6315 06 Sep 13 nicklas 288                 <tbl:cell column="externalId"><div 
6315 06 Sep 13 nicklas 289                   class="link table-item"
6315 06 Sep 13 nicklas 290                   data-item-id="<%=itemId%>"
6315 06 Sep 13 nicklas 291                   data-no-edit="<%=writeReporterPermission ? 0 : 1%>"
6315 06 Sep 13 nicklas 292                   tabindex="0"
6315 06 Sep 13 nicklas 293                   title="<%=tooltip%>"><%=HTML.encodeTags(item.getString(colIndex))%></div></tbl:cell>
5885 22 Nov 11 nicklas 294                 <%
2747 19 Oct 06 enell 295               }
5885 22 Nov 11 nicklas 296               else
5885 22 Nov 11 nicklas 297               {
5885 22 Nov 11 nicklas 298                 %>
5885 22 Nov 11 nicklas 299                 <tbl:cell column="<%=name%>"><tbl:cellvalue value="<%=item.getObject(colIndex)%>" /></tbl:cell>
5885 22 Nov 11 nicklas 300                 <%
5885 22 Nov 11 nicklas 301               }
5885 22 Nov 11 nicklas 302               colIndex++;
2502 09 Aug 06 nicklas 303             }
2733 16 Oct 06 nicklas 304             %>
2502 09 Aug 06 nicklas 305           </tbl:row>
2487 04 Aug 06 nicklas 306           <%
2502 09 Aug 06 nicklas 307         }
2487 04 Aug 06 nicklas 308       }
2502 09 Aug 06 nicklas 309       if (numListed == 0)
2502 09 Aug 06 nicklas 310       {
2502 09 Aug 06 nicklas 311         %>
6604 18 Nov 14 nicklas 312         <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 313           <div class="messagecontainer note">
5952 10 Feb 12 nicklas 314           <%=totalReporters == 0 ? "No reporters were found" : "No reporters on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 315           </div>
5952 10 Feb 12 nicklas 316         </tbl:panel>
2502 09 Aug 06 nicklas 317         <%
2502 09 Aug 06 nicklas 318       }
2502 09 Aug 06 nicklas 319       %>
5952 10 Feb 12 nicklas 320       </tbl:rows>
5952 10 Feb 12 nicklas 321       </tbl:data>
2487 04 Aug 06 nicklas 322       </tbl:table>
2487 04 Aug 06 nicklas 323     </t:tab>
2487 04 Aug 06 nicklas 324
2487 04 Aug 06 nicklas 325     <t:tab id="view" title="Reporter view" />
2487 04 Aug 06 nicklas 326     </t:tabcontrol>
2487 04 Aug 06 nicklas 327
2487 04 Aug 06 nicklas 328   </base:body>
2487 04 Aug 06 nicklas 329   </base:page>
2487 04 Aug 06 nicklas 330   <%
2487 04 Aug 06 nicklas 331 }
2487 04 Aug 06 nicklas 332 finally
2487 04 Aug 06 nicklas 333 {
2502 09 Aug 06 nicklas 334   if (reporters != null) reporters.close();
2487 04 Aug 06 nicklas 335   if (dc != null) dc.close();
2487 04 Aug 06 nicklas 336 }
2487 04 Aug 06 nicklas 337
2487 04 Aug 06 nicklas 338 %>