www/views/experiments/bioassays/list_bioassays.jsp

Code
Comments
Other
Rev Date Author Line
2099 21 Mar 06 nicklas 1 <%-- $Id$
2099 21 Mar 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell
2099 21 Mar 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
2099 21 Mar 06 nicklas 8
2099 21 Mar 06 nicklas 9   BASE is free software; you can redistribute it and/or
2099 21 Mar 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
2099 21 Mar 06 nicklas 12   of the License, or (at your option) any later version.
2099 21 Mar 06 nicklas 13
2099 21 Mar 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2099 21 Mar 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2099 21 Mar 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2099 21 Mar 06 nicklas 17   GNU General Public License for more details.
2099 21 Mar 06 nicklas 18
2099 21 Mar 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/>.
2099 21 Mar 06 nicklas 21   ------------------------------------------------------------------
2099 21 Mar 06 nicklas 22
2099 21 Mar 06 nicklas 23   @author Nicklas
2099 21 Mar 06 nicklas 24   @version 2.0
2099 21 Mar 06 nicklas 25 --%>
7604 25 Feb 19 nicklas 26 <%@page import="net.sf.basedb.clients.web.extensions.plot.OverviewPlotAction"%>
5426 24 Sep 10 nicklas 27 <%@ page pageEncoding="UTF-8" session="false"
2099 21 Mar 06 nicklas 28   import="net.sf.basedb.core.SessionControl"
2099 21 Mar 06 nicklas 29   import="net.sf.basedb.core.DbControl"
2099 21 Mar 06 nicklas 30   import="net.sf.basedb.core.Item"
2099 21 Mar 06 nicklas 31   import="net.sf.basedb.core.ItemContext"
2099 21 Mar 06 nicklas 32   import="net.sf.basedb.core.Experiment"
2099 21 Mar 06 nicklas 33   import="net.sf.basedb.core.BioAssaySet"
2099 21 Mar 06 nicklas 34   import="net.sf.basedb.core.BioAssay"
2424 26 Jun 06 nicklas 35   import="net.sf.basedb.core.RawBioAssay"
2892 10 Nov 06 nicklas 36   import="net.sf.basedb.core.AnnotationSet"
2892 10 Nov 06 nicklas 37   import="net.sf.basedb.core.AnnotationType"
4560 06 Oct 08 nicklas 38   import="net.sf.basedb.core.Annotation"
6942 31 Aug 15 nicklas 39   import="net.sf.basedb.core.Unit"
2099 21 Mar 06 nicklas 40   import="net.sf.basedb.core.ItemQuery"
2099 21 Mar 06 nicklas 41   import="net.sf.basedb.core.ItemResultIterator"
2099 21 Mar 06 nicklas 42   import="net.sf.basedb.core.ItemResultList"
2099 21 Mar 06 nicklas 43   import="net.sf.basedb.core.Permission"
2099 21 Mar 06 nicklas 44   import="net.sf.basedb.core.PluginDefinition"
2099 21 Mar 06 nicklas 45   import="net.sf.basedb.core.PermissionDeniedException"
2099 21 Mar 06 nicklas 46   import="net.sf.basedb.core.RawDataType"
2424 26 Jun 06 nicklas 47   import="net.sf.basedb.core.Type"
2424 26 Jun 06 nicklas 48   import="net.sf.basedb.core.Include"
2099 21 Mar 06 nicklas 49   import="net.sf.basedb.core.query.Restrictions"
2099 21 Mar 06 nicklas 50   import="net.sf.basedb.core.query.Expressions"
2099 21 Mar 06 nicklas 51   import="net.sf.basedb.core.query.Orders"
2099 21 Mar 06 nicklas 52   import="net.sf.basedb.core.query.Hql"
2099 21 Mar 06 nicklas 53   import="net.sf.basedb.core.plugin.GuiContext"
2099 21 Mar 06 nicklas 54   import="net.sf.basedb.core.plugin.Plugin"
6541 29 Sep 14 nicklas 55   import="net.sf.basedb.core.snapshot.AnnotationLoaderUtil"
6541 29 Sep 14 nicklas 56   import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
6541 29 Sep 14 nicklas 57   import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
6541 29 Sep 14 nicklas 58   import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
5130 13 Oct 09 nicklas 59   import="net.sf.basedb.core.snapshot.SnapshotManager"
2099 21 Mar 06 nicklas 60   import="net.sf.basedb.util.Tree"
2892 10 Nov 06 nicklas 61   import="net.sf.basedb.util.Enumeration"
4232 17 Apr 08 nicklas 62   import="net.sf.basedb.util.BioAssaySetUtil"
2099 21 Mar 06 nicklas 63   import="net.sf.basedb.clients.web.Base"
2099 21 Mar 06 nicklas 64   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 65   import="net.sf.basedb.clients.web.PermissionUtil"
2099 21 Mar 06 nicklas 66   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 67   import="net.sf.basedb.util.Values"
2942 22 Nov 06 nicklas 68   import="net.sf.basedb.util.formatter.Formatter"
2942 22 Nov 06 nicklas 69   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4871 01 Apr 09 nicklas 70   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4871 01 Apr 09 nicklas 71   import="net.sf.basedb.clients.web.extensions.JspContext"
4871 01 Apr 09 nicklas 72   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 73   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4871 01 Apr 09 nicklas 74   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7337 12 Apr 17 nicklas 75   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
4871 01 Apr 09 nicklas 76   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
2099 21 Mar 06 nicklas 77   import="java.util.List"
2099 21 Mar 06 nicklas 78   import="java.util.LinkedList"
6541 29 Sep 14 nicklas 79   import="java.util.ArrayList"
2099 21 Mar 06 nicklas 80   import="java.util.Map"
2099 21 Mar 06 nicklas 81   import="java.util.HashMap"
2099 21 Mar 06 nicklas 82   import="java.util.Iterator"
2099 21 Mar 06 nicklas 83   import="java.util.Collection"
2099 21 Mar 06 nicklas 84 %>
2099 21 Mar 06 nicklas 85 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2099 21 Mar 06 nicklas 86 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
2099 21 Mar 06 nicklas 87 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2099 21 Mar 06 nicklas 88 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4871 01 Apr 09 nicklas 89 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2099 21 Mar 06 nicklas 90 <%!
2099 21 Mar 06 nicklas 91   private static final Item itemType = Item.BIOASSAY;
2099 21 Mar 06 nicklas 92   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
2099 21 Mar 06 nicklas 93 %>
2099 21 Mar 06 nicklas 94 <%
2099 21 Mar 06 nicklas 95 final int bioAssaySetId = Values.getInt(request.getParameter("bioassayset_id"));
2099 21 Mar 06 nicklas 96 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
2099 21 Mar 06 nicklas 97 final String ID = sc.getId();
2099 21 Mar 06 nicklas 98 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2099 21 Mar 06 nicklas 99
2099 21 Mar 06 nicklas 100 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
2099 21 Mar 06 nicklas 101 final String callback = request.getParameter("callback");
2738 17 Oct 06 nicklas 102 final String title = mode.generateTitle("bioassay", "bioassays");
7954 12 May 21 nicklas 103 final DbControl dc = sc.newDbControl(":List "+itemType);
2099 21 Mar 06 nicklas 104 ItemResultIterator<BioAssay> bioAssays = null;
6541 29 Sep 14 nicklas 105 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
4093 18 Jan 08 enell 106 ItemResultList<AnnotationType> experimentalFactors = null;
2099 21 Mar 06 nicklas 107 try
2099 21 Mar 06 nicklas 108 {
6691 21 Jan 15 nicklas 109   ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
6541 29 Sep 14 nicklas 110   SnapshotManager manager = new SnapshotManager();
7337 12 Apr 17 nicklas 111   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
6541 29 Sep 14 nicklas 112   for (AnnotationType at : annotationTypeQuery.list(dc))
6541 29 Sep 14 nicklas 113   {
6541 29 Sep 14 nicklas 114     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
6541 29 Sep 14 nicklas 115   }
6691 21 Jan 15 nicklas 116   annotationTypeQuery = Base.getInheritedAnnotationColumns(cc.getSetting("columns"));
6691 21 Jan 15 nicklas 117   for (AnnotationType at : annotationTypeQuery.list(dc))
6691 21 Jan 15 nicklas 118   {
6691 21 Jan 15 nicklas 119     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at, false, true));
6691 21 Jan 15 nicklas 120   }
2099 21 Mar 06 nicklas 121   final BioAssaySet bioAssaySet = BioAssaySet.getById(dc, bioAssaySetId);
2099 21 Mar 06 nicklas 122   final Experiment experiment = bioAssaySet.getExperiment();
4338 17 Jun 08 nicklas 123   final boolean hasDbSpots = bioAssaySet.getNumSpots() > 0;
4093 18 Jan 08 enell 124   final ItemQuery<AnnotationType> experimentalFactorQuery = experiment.getExperimentalFactors();
4093 18 Jan 08 enell 125   experimentalFactorQuery.include(Include.MINE, Include.SHARED, Include.IN_PROJECT, Include.OTHERS);
2678 28 Sep 06 nicklas 126   final int experimentId = experiment.getId();
2099 21 Mar 06 nicklas 127   final RawDataType rawDataType = experiment.getRawDataType();
6413 05 Feb 14 nicklas 128   final boolean createPermission = experiment.hasPermission(Permission.USE);
6413 05 Feb 14 nicklas 129   final boolean deletePermission = bioAssaySet.hasPermission(Permission.DELETE);
6413 05 Feb 14 nicklas 130   final boolean writePermission = bioAssaySet.hasPermission(Permission.WRITE);
2099 21 Mar 06 nicklas 131
2424 26 Jun 06 nicklas 132   // Query for raw bioassays related to the current bioassay
2424 26 Jun 06 nicklas 133   final ItemQuery<RawBioAssay> rawQuery = RawBioAssay.getQuery();
2424 26 Jun 06 nicklas 134   rawQuery.include(Include.MINE, Include.SHARED, Include.IN_PROJECT, Include.OTHERS);
2424 26 Jun 06 nicklas 135   rawQuery.join(Hql.innerJoin("bioAssays", "bas"));
2424 26 Jun 06 nicklas 136   rawQuery.restrict(Restrictions.eq(Hql.alias("bas"), Expressions.parameter("bioAssay"))); 
2424 26 Jun 06 nicklas 137   rawQuery.order(Orders.asc(Hql.property("name"))); 
2424 26 Jun 06 nicklas 138   
2099 21 Mar 06 nicklas 139   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
4093 18 Jan 08 enell 140   experimentalFactors = experimentalFactorQuery.list(dc);
7914 23 Feb 21 nicklas 141   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, 
7914 23 Feb 21 nicklas 142       guiContext, bioAssaySet);
2099 21 Mar 06 nicklas 143   try
2099 21 Mar 06 nicklas 144   {
7914 23 Feb 21 nicklas 145     final ItemQuery<BioAssay> query = Base.getConfiguredQuery(dc, cc, jspContext, true, bioAssaySet.getBioAssays(), mode);
4093 18 Jan 08 enell 146     query.join(Hql.leftJoin("rawParents", "rba"));
4232 17 Apr 08 nicklas 147     query.setDistinct(true);
2099 21 Mar 06 nicklas 148     bioAssays = query.iterate(dc);
2099 21 Mar 06 nicklas 149   }
2099 21 Mar 06 nicklas 150   catch (Throwable t)
2099 21 Mar 06 nicklas 151   {
4093 18 Jan 08 enell 152     t.printStackTrace();
2099 21 Mar 06 nicklas 153     cc.setMessage(t.getMessage());
2099 21 Mar 06 nicklas 154   }
2099 21 Mar 06 nicklas 155   int numListed = 0;
7604 25 Feb 19 nicklas 156   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7605 26 Feb 19 nicklas 157   ExtensionsInvoker<OverviewPlotAction> overviewPlotInvoker = ExtensionsControl.useExtensions(jspContext, 
4908 28 Apr 09 nicklas 158       "net.sf.basedb.clients.web.bioassayset.overviewplots");
2099 21 Mar 06 nicklas 159   %>
6315 06 Sep 13 nicklas 160   <base:page title="<%=title%>" type="<%=mode.getPageType()%>" id="list-page">
6315 06 Sep 13 nicklas 161   <base:head scripts="table.js,tabcontrol-2.js,~bioassays.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
4871 01 Apr 09 nicklas 162     <ext:scripts context="<%=jspContext%>" />
4871 01 Apr 09 nicklas 163     <ext:stylesheets context="<%=jspContext%>" />
2099 21 Mar 06 nicklas 164   </base:head>
2099 21 Mar 06 nicklas 165   <base:body>
2738 17 Oct 06 nicklas 166     <%
2738 17 Oct 06 nicklas 167     if (!mode.isSelectionMode())
2738 17 Oct 06 nicklas 168     {
2738 17 Oct 06 nicklas 169       %>
5952 10 Feb 12 nicklas 170       <p:path><p:pathelement 
5952 10 Feb 12 nicklas 171         title="Experiments" href="<%="../index.jsp?ID="+ID%>" 
5952 10 Feb 12 nicklas 172         /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" 
6143 20 Sep 12 nicklas 173           href="<%="../bioassaysets/index.jsp?ID="+ID+"&amp;experiment_id="+experiment.getId()%>" 
5952 10 Feb 12 nicklas 174         /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
5952 10 Feb 12 nicklas 175         /></p:path>
2738 17 Oct 06 nicklas 176       <%
2738 17 Oct 06 nicklas 177     }
5952 10 Feb 12 nicklas 178     else
5952 10 Feb 12 nicklas 179     {
5952 10 Feb 12 nicklas 180       %>
5952 10 Feb 12 nicklas 181       <h1><%=title %></h1>
5952 10 Feb 12 nicklas 182       <%
5952 10 Feb 12 nicklas 183     }
2738 17 Oct 06 nicklas 184     %>
5952 10 Feb 12 nicklas 185     <t:tabcontrol 
5952 10 Feb 12 nicklas 186       id="main"
5952 10 Feb 12 nicklas 187       subclass="mastertabcontrol content"
6315 06 Sep 13 nicklas 188       active="bioassays" notabs="<%=mode.isSelectionMode() %>">
6315 06 Sep 13 nicklas 189     <t:tab id="bioassayset.properties" title="Properties" />
2099 21 Mar 06 nicklas 190     
6315 06 Sep 13 nicklas 191     <t:tab id="bioassayset.annotations" title="Annotations" 
2892 10 Nov 06 nicklas 192         tooltip="View annotation values" />
2892 10 Nov 06 nicklas 193     
2099 21 Mar 06 nicklas 194     <t:tab id="bioassays" title="Bioassays">
2099 21 Mar 06 nicklas 195     <tbl:table 
6315 06 Sep 13 nicklas 196       id="bioassays" 
2099 21 Mar 06 nicklas 197       columns="<%=cc.getSetting("columns")%>"
2099 21 Mar 06 nicklas 198       sortby="<%=cc.getSortProperty()%>" 
2099 21 Mar 06 nicklas 199       direction="<%=cc.getSortDirection()%>"
2099 21 Mar 06 nicklas 200       action="index.jsp"
2099 21 Mar 06 nicklas 201       sc="<%=sc%>"
2099 21 Mar 06 nicklas 202       item="<%=itemType%>"
6700 30 Jan 15 nicklas 203       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 204       subclass="fulltable"
6691 21 Jan 15 nicklas 205       data-inherited-annotations="true"
7982 14 Jun 21 nicklas 206       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
2099 21 Mar 06 nicklas 207       >
2099 21 Mar 06 nicklas 208       <tbl:hidden 
2099 21 Mar 06 nicklas 209         name="mode" 
2099 21 Mar 06 nicklas 210         value="<%=mode.getName()%>" 
2099 21 Mar 06 nicklas 211       />
2099 21 Mar 06 nicklas 212       <tbl:hidden 
2099 21 Mar 06 nicklas 213         name="bioassayset_id" 
2099 21 Mar 06 nicklas 214         value="<%=String.valueOf(bioAssaySetId)%>" 
2099 21 Mar 06 nicklas 215       />
2099 21 Mar 06 nicklas 216       <tbl:hidden 
2099 21 Mar 06 nicklas 217         name="callback" 
2099 21 Mar 06 nicklas 218         value="<%=callback%>" 
2099 21 Mar 06 nicklas 219         skip="<%=callback == null%>" 
2099 21 Mar 06 nicklas 220       />
2099 21 Mar 06 nicklas 221       <tbl:columndef 
2099 21 Mar 06 nicklas 222         id="name"
2099 21 Mar 06 nicklas 223         property="name"
2099 21 Mar 06 nicklas 224         datatype="string"
2099 21 Mar 06 nicklas 225         title="Name"
2099 21 Mar 06 nicklas 226         sortable="true" 
2099 21 Mar 06 nicklas 227         filterable="true"
2099 21 Mar 06 nicklas 228         exportable="true"
2099 21 Mar 06 nicklas 229         show="always" 
2099 21 Mar 06 nicklas 230       />
2099 21 Mar 06 nicklas 231       <tbl:columndef 
4332 12 Jun 08 martin 232         id="id"
4387 11 Aug 08 nicklas 233         clazz="uniquecol"
4332 12 Jun 08 martin 234         property="id"
4332 12 Jun 08 martin 235         datatype="int"
4332 12 Jun 08 martin 236         title="ID"
4332 12 Jun 08 martin 237         sortable="true"
4332 12 Jun 08 martin 238         filterable="true"
4332 12 Jun 08 martin 239         exportable="true"
4332 12 Jun 08 martin 240       />
4332 12 Jun 08 martin 241       <tbl:columndef 
2099 21 Mar 06 nicklas 242         id="spots"
2099 21 Mar 06 nicklas 243         property="numSpots"
2099 21 Mar 06 nicklas 244         datatype="int"
4338 17 Jun 08 nicklas 245         title="Spots in db"
2099 21 Mar 06 nicklas 246         sortable="true" 
2099 21 Mar 06 nicklas 247         filterable="true"
2099 21 Mar 06 nicklas 248         exportable="true"
2099 21 Mar 06 nicklas 249       />
4338 17 Jun 08 nicklas 250       <tbl:columndef 
4338 17 Jun 08 nicklas 251         id="fileSpots"
4338 17 Jun 08 nicklas 252         property="numFileSpots"
4338 17 Jun 08 nicklas 253         datatype="int"
4338 17 Jun 08 nicklas 254         title="Spots in file"
4338 17 Jun 08 nicklas 255         sortable="true" 
4338 17 Jun 08 nicklas 256         filterable="true"
4338 17 Jun 08 nicklas 257         exportable="true"
4338 17 Jun 08 nicklas 258       />
2424 26 Jun 06 nicklas 259       <tbl:columndef
2424 26 Jun 06 nicklas 260         id="rawBioAssays"
2424 26 Jun 06 nicklas 261         title="Raw bioassays"
2424 26 Jun 06 nicklas 262       />
2099 21 Mar 06 nicklas 263       <tbl:columndef 
2099 21 Mar 06 nicklas 264         id="description"
2099 21 Mar 06 nicklas 265         property="description"
2099 21 Mar 06 nicklas 266         datatype="string"
2099 21 Mar 06 nicklas 267         title="Description" 
2099 21 Mar 06 nicklas 268         sortable="true" 
2099 21 Mar 06 nicklas 269         filterable="true" 
2099 21 Mar 06 nicklas 270         exportable="true"
2099 21 Mar 06 nicklas 271       />
2099 21 Mar 06 nicklas 272       <tbl:columndef 
2099 21 Mar 06 nicklas 273         id="tools"
2099 21 Mar 06 nicklas 274         title="Tools" 
2738 17 Oct 06 nicklas 275         show="<%=mode.isSelectionMode() ? "never" : "auto"%>"
2099 21 Mar 06 nicklas 276       />
2892 10 Nov 06 nicklas 277       <%
6541 29 Sep 14 nicklas 278       for (AnnotationLoaderUtil loader : annotationLoaders)
2892 10 Nov 06 nicklas 279       {
6541 29 Sep 14 nicklas 280         AnnotationType at = loader.getAnnotationType();
2892 10 Nov 06 nicklas 281         Enumeration<String, String> annotationEnum = null;
7605 26 Feb 19 nicklas 282         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
2892 10 Nov 06 nicklas 283         if (at.isEnumeration())
2892 10 Nov 06 nicklas 284         {
2892 10 Nov 06 nicklas 285           annotationEnum = new Enumeration<String, String>();
6784 18 Mar 15 nicklas 286           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
2892 10 Nov 06 nicklas 287           List<?> values = at.getValues();
2892 10 Nov 06 nicklas 288           for (Object value : values)
2892 10 Nov 06 nicklas 289           {
2942 22 Nov 06 nicklas 290             String encoded = formatter.format(value);
2892 10 Nov 06 nicklas 291             annotationEnum.add(encoded, encoded);
2892 10 Nov 06 nicklas 292           }
2892 10 Nov 06 nicklas 293         }
2892 10 Nov 06 nicklas 294         %>
2892 10 Nov 06 nicklas 295         <tbl:columndef 
6691 21 Jan 15 nicklas 296           id="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+at.getId()%>"
6691 21 Jan 15 nicklas 297           title="<%=HTML.encodeTags(at.getName())+(loader.isSearchingInheritedAnnotations() ? " [I]" : " [A]")%>" 
6691 21 Jan 15 nicklas 298           property="<%=(loader.isSearchingInheritedAnnotations() ? "##" : "#")+at.getId()%>"
2892 10 Nov 06 nicklas 299           annotation="true"
2892 10 Nov 06 nicklas 300           datatype="<%=at.getValueType().getStringValue()%>"
2892 10 Nov 06 nicklas 301           enumeration="<%=annotationEnum%>"
5674 27 Jun 11 nicklas 302           smartenum="<%=at.getDisplayAsList() %>"
6691 21 Jan 15 nicklas 303           sortable="<%=at.getMultiplicity() == 1 && !loader.isSearchingInheritedAnnotations()%>" 
2892 10 Nov 06 nicklas 304           filterable="true" 
2892 10 Nov 06 nicklas 305           exportable="true"
2942 22 Nov 06 nicklas 306           formatter="<%=formatter%>"
4560 06 Oct 08 nicklas 307           unit="<%=at.getDefaultUnit()%>"
2892 10 Nov 06 nicklas 308         />
2892 10 Nov 06 nicklas 309         <%
2892 10 Nov 06 nicklas 310       }
2892 10 Nov 06 nicklas 311       %>
4093 18 Jan 08 enell 312       <%
4093 18 Jan 08 enell 313       for (AnnotationType at : experimentalFactors)
4093 18 Jan 08 enell 314       {
4093 18 Jan 08 enell 315         Enumeration<String, String> annotationEnum = null;
7605 26 Feb 19 nicklas 316         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
4093 18 Jan 08 enell 317         if (at.isEnumeration())
4093 18 Jan 08 enell 318         {
4093 18 Jan 08 enell 319           annotationEnum = new Enumeration<String, String>();
6784 18 Mar 15 nicklas 320           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
4093 18 Jan 08 enell 321           List<?> values = at.getValues();
4093 18 Jan 08 enell 322           for (Object value : values)
4093 18 Jan 08 enell 323           {
4093 18 Jan 08 enell 324             String encoded = formatter.format(value);
4093 18 Jan 08 enell 325             annotationEnum.add(encoded, encoded);
4093 18 Jan 08 enell 326           }
4093 18 Jan 08 enell 327         }
4093 18 Jan 08 enell 328         %>
4093 18 Jan 08 enell 329         <tbl:columndef 
4093 18 Jan 08 enell 330           id="<%="ef"+at.getId()%>"
4093 18 Jan 08 enell 331           title="<%=HTML.encodeTags(at.getName())+" [EF]"%>" 
4093 18 Jan 08 enell 332           property="<%="$rba.##"+at.getId()%>"
4978 23 Jun 09 nicklas 333           exportproperty="<%="#" + at.getId() %>"
4093 18 Jan 08 enell 334           annotation="true"
4093 18 Jan 08 enell 335           datatype="<%=at.getValueType().getStringValue()%>"
4093 18 Jan 08 enell 336           enumeration="<%=annotationEnum%>"
4093 18 Jan 08 enell 337           sortable="false" 
4093 18 Jan 08 enell 338           filterable="true" 
4978 23 Jun 09 nicklas 339           exportable="true"
4093 18 Jan 08 enell 340           formatter="<%=formatter%>"
4093 18 Jan 08 enell 341         />
4093 18 Jan 08 enell 342         <%
4093 18 Jan 08 enell 343       }
4093 18 Jan 08 enell 344       %>
6604 18 Nov 14 nicklas 345       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 346         <tbl:toolbar
5952 10 Feb 12 nicklas 347           subclass="bottomborder"
5952 10 Feb 12 nicklas 348           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 349           >
5952 10 Feb 12 nicklas 350           <tbl:button 
6315 06 Sep 13 nicklas 351             id="btnColumns"
5952 10 Feb 12 nicklas 352             image="columns.png" 
5952 10 Feb 12 nicklas 353             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 354             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 355           />
5952 10 Feb 12 nicklas 356           <tbl:button 
6315 06 Sep 13 nicklas 357             id="btnImport"
6315 06 Sep 13 nicklas 358             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 359             image="import.png" 
5952 10 Feb 12 nicklas 360             title="Import&hellip;" 
5952 10 Feb 12 nicklas 361             tooltip="Import data" 
5952 10 Feb 12 nicklas 362             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 363           />
5952 10 Feb 12 nicklas 364           <tbl:button 
6315 06 Sep 13 nicklas 365             id="btnExport"
6315 06 Sep 13 nicklas 366             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 367             image="export.png" 
5952 10 Feb 12 nicklas 368             title="Export&hellip;" 
5952 10 Feb 12 nicklas 369             tooltip="Export data" 
5952 10 Feb 12 nicklas 370             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 371           />
5952 10 Feb 12 nicklas 372           <tbl:button
6315 06 Sep 13 nicklas 373             id="btnFilter"
6315 06 Sep 13 nicklas 374             data-plugin-type="ANALYZE"
6315 06 Sep 13 nicklas 375             data-cmd="NewFilteredBioAssaySet"
5952 10 Feb 12 nicklas 376             disabled="<%=!createPermission%>"
5952 10 Feb 12 nicklas 377             image="filter.png"
5952 10 Feb 12 nicklas 378             title="Filter bioassay set&hellip;"
5952 10 Feb 12 nicklas 379             tooltip="<%=createPermission ? 
5952 10 Feb 12 nicklas 380               "Create a new bioassay set by filtering this bioassayset" :
5952 10 Feb 12 nicklas 381               "You do not have permission analyze this experiment"%>"
5952 10 Feb 12 nicklas 382             visible="<%=!mode.isSelectionMode()%>"
5952 10 Feb 12 nicklas 383            />
5952 10 Feb 12 nicklas 384           <tbl:button 
6315 06 Sep 13 nicklas 385             id="btnRunPlugin"
6315 06 Sep 13 nicklas 386             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 387             image="runplugin.png" 
5952 10 Feb 12 nicklas 388             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 389             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 390             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER) && !mode.isSelectionMode()%>"
5952 10 Feb 12 nicklas 391           />
5952 10 Feb 12 nicklas 392           <tbl:button 
6315 06 Sep 13 nicklas 393             id="btnAnalyze"
6315 06 Sep 13 nicklas 394             data-plugin-type="ANALYZE"
5952 10 Feb 12 nicklas 395             disabled="<%=!createPermission%>"
5952 10 Feb 12 nicklas 396             image="runplugin.png" 
5952 10 Feb 12 nicklas 397             title="Run analysis&hellip;" 
5952 10 Feb 12 nicklas 398             tooltip="<%=createPermission ? "Run an analysis plugin" : 
5952 10 Feb 12 nicklas 399               "You do not have permission to analyze this experiment"%>"
5952 10 Feb 12 nicklas 400             visible="<%=pluginCount.containsKey(Plugin.MainType.ANALYZE) && !mode.isSelectionMode()%>"
5952 10 Feb 12 nicklas 401           />
5952 10 Feb 12 nicklas 402           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 403             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 404         </tbl:toolbar>
5952 10 Feb 12 nicklas 405         <tbl:panel>
6182 23 Oct 12 nicklas 406           <tbl:presetselector />
5952 10 Feb 12 nicklas 407           <tbl:navigator
5952 10 Feb 12 nicklas 408             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 409             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 410             totalrows="<%=bioAssays == null ? 0 : bioAssays.getTotalCount()%>" 
5952 10 Feb 12 nicklas 411             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 412           />
5952 10 Feb 12 nicklas 413         </tbl:panel>
5952 10 Feb 12 nicklas 414       </div>
2099 21 Mar 06 nicklas 415       <tbl:data>
5948 08 Feb 12 nicklas 416         <tbl:headers>
5948 08 Feb 12 nicklas 417           <tbl:headerrow>
7943 04 May 21 nicklas 418             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 419             <tbl:columnheaders />
5948 08 Feb 12 nicklas 420           </tbl:headerrow>
6700 30 Jan 15 nicklas 421           <%
6700 30 Jan 15 nicklas 422           int numFilters = cc.getNumPropertyFilters();
6700 30 Jan 15 nicklas 423           int numRows = cc.getFilterRows();
6700 30 Jan 15 nicklas 424           for (int filterNo = 0; filterNo < numRows; filterNo++)
6700 30 Jan 15 nicklas 425           {
6700 30 Jan 15 nicklas 426             boolean lastRow = filterNo == numRows-1;
6700 30 Jan 15 nicklas 427             %>
6700 30 Jan 15 nicklas 428             <tbl:headerrow>
7943 04 May 21 nicklas 429               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 430                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 431                   <div class="index"></div>
7943 04 May 21 nicklas 432                   <div class="check">
7943 04 May 21 nicklas 433                     <base:icon 
7943 04 May 21 nicklas 434                       subclass="link table-check"
7943 04 May 21 nicklas 435                       image="check_uncheck.png" 
7943 04 May 21 nicklas 436                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 437                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 438                     />
7943 04 May 21 nicklas 439                   </div>
7943 04 May 21 nicklas 440                   <div class="icons">
7943 04 May 21 nicklas 441                     <base:icon
7943 04 May 21 nicklas 442                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 443                       image="add.png"
7943 04 May 21 nicklas 444                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 445                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 446                     /><base:icon
7943 04 May 21 nicklas 447                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 448                       image="remove.png"
7943 04 May 21 nicklas 449                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 450                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 451                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 452                     />
7943 04 May 21 nicklas 453                   </div>
7943 04 May 21 nicklas 454                 </div>
6700 30 Jan 15 nicklas 455               </tbl:header>
6700 30 Jan 15 nicklas 456               <tbl:propertyfilter row="<%=filterNo%>" />
6700 30 Jan 15 nicklas 457             </tbl:headerrow>
6700 30 Jan 15 nicklas 458             <%
6700 30 Jan 15 nicklas 459           }
6700 30 Jan 15 nicklas 460           %>
7913 22 Feb 21 nicklas 461           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 462         </tbl:headers>
5948 08 Feb 12 nicklas 463         <tbl:rows>
2099 21 Mar 06 nicklas 464           <%
5952 10 Feb 12 nicklas 465           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 466           {
5952 10 Feb 12 nicklas 467             %>
6604 18 Nov 14 nicklas 468             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 469               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 470             </tbl:panel>
5952 10 Feb 12 nicklas 471             <%
5952 10 Feb 12 nicklas 472             cc.setMessage(null);
5952 10 Feb 12 nicklas 473           }
2099 21 Mar 06 nicklas 474           int index = cc.getPage()*cc.getRowsPerPage();
2099 21 Mar 06 nicklas 475           int selectedItemId = cc.getId();
2099 21 Mar 06 nicklas 476           if (bioAssays != null)
2507 09 Aug 06 martin 477           {            
2099 21 Mar 06 nicklas 478             while (bioAssays.hasNext())
2099 21 Mar 06 nicklas 479             {
2099 21 Mar 06 nicklas 480               BioAssay item = bioAssays.next();
4338 17 Jun 08 nicklas 481               boolean bioAssayHasDbSpots = item.getNumSpots() > 0;
2099 21 Mar 06 nicklas 482               int itemId = item.getId();
2099 21 Mar 06 nicklas 483               String name = HTML.encodeTags(item.getName());
2507 09 Aug 06 martin 484               String tooltip = mode.isSelectionMode() ?
2507 09 Aug 06 martin 485                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2099 21 Mar 06 nicklas 486               index++;
2099 21 Mar 06 nicklas 487               numListed++;          
2099 21 Mar 06 nicklas 488               %>
2099 21 Mar 06 nicklas 489               <tbl:row>
7943 04 May 21 nicklas 490                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 491                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 492                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 493                     <div class="check">
7943 04 May 21 nicklas 494                       <base:input
7943 04 May 21 nicklas 495                         type="checkbox" 
7943 04 May 21 nicklas 496                         name="<%=itemId%>" 
7943 04 May 21 nicklas 497                         value="<%=itemId%>" 
7943 04 May 21 nicklas 498                         title="<%=name%>" 
7943 04 May 21 nicklas 499                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 500                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 501                       />
7943 04 May 21 nicklas 502                       <base:input 
7943 04 May 21 nicklas 503                         type="radio" 
7943 04 May 21 nicklas 504                         name="item_id" 
7943 04 May 21 nicklas 505                         value="<%=itemId%>" 
7943 04 May 21 nicklas 506                         title="<%=name%>" 
7943 04 May 21 nicklas 507                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 508                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 509                       />
7943 04 May 21 nicklas 510                     </div>
7943 04 May 21 nicklas 511                     <div class="icons"></div>
7943 04 May 21 nicklas 512                   </div>
7943 04 May 21 nicklas 513                 </tbl:header>
6315 06 Sep 13 nicklas 514                 <tbl:cell column="name"><div 
6315 06 Sep 13 nicklas 515                   class="link table-item"
6315 06 Sep 13 nicklas 516                   data-item-id="<%=itemId%>"
6315 06 Sep 13 nicklas 517                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6315 06 Sep 13 nicklas 518                   tabindex="0"
2433 27 Jun 06 nicklas 519                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4332 12 Jun 08 martin 520                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
2099 21 Mar 06 nicklas 521                 <tbl:cell column="spots"><%=item.getNumSpots()%></tbl:cell>
4338 17 Jun 08 nicklas 522                 <tbl:cell column="fileSpots"><%=item.getNumFileSpots()%></tbl:cell>
2099 21 Mar 06 nicklas 523                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
2424 26 Jun 06 nicklas 524                 <tbl:cell column="rawBioAssays">
2424 26 Jun 06 nicklas 525                   <%
2424 26 Jun 06 nicklas 526                   rawQuery.setParameter("bioAssay", itemId, Type.INT);
2424 26 Jun 06 nicklas 527                   try
2424 26 Jun 06 nicklas 528                   {
2424 26 Jun 06 nicklas 529                     String separator = "";
2424 26 Jun 06 nicklas 530                     for (RawBioAssay rba : rawQuery.list(dc))
2424 26 Jun 06 nicklas 531                     {
2424 26 Jun 06 nicklas 532                       out.write(separator);
2424 26 Jun 06 nicklas 533                       if (mode.hasPropertyLink())
2424 26 Jun 06 nicklas 534                       {
2424 26 Jun 06 nicklas 535                         out.write(Base.getLinkedName(ID, rba, false, mode.hasEditLink()));
2424 26 Jun 06 nicklas 536                       }
2424 26 Jun 06 nicklas 537                       else
2424 26 Jun 06 nicklas 538                       {
2424 26 Jun 06 nicklas 539                         out.write(HTML.encodeTags(rba.getName()));
2424 26 Jun 06 nicklas 540                       }
2424 26 Jun 06 nicklas 541                       separator = ", ";
2424 26 Jun 06 nicklas 542                     }
2424 26 Jun 06 nicklas 543                   }
2424 26 Jun 06 nicklas 544                   catch (Throwable t)
2424 26 Jun 06 nicklas 545                   {
2424 26 Jun 06 nicklas 546                     %>
2424 26 Jun 06 nicklas 547                     <div class="error"><%=t.getMessage()%></div>
2424 26 Jun 06 nicklas 548                     <%
2424 26 Jun 06 nicklas 549                   }
2424 26 Jun 06 nicklas 550                   %>
2424 26 Jun 06 nicklas 551                 </tbl:cell>
2892 10 Nov 06 nicklas 552                 <%
6541 29 Sep 14 nicklas 553                 if (item.isAnnotated())
2892 10 Nov 06 nicklas 554                 {
6541 29 Sep 14 nicklas 555                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
6541 29 Sep 14 nicklas 556                   for (AnnotationLoaderUtil loader : annotationLoaders)
2942 22 Nov 06 nicklas 557                   {
6721 10 Feb 15 nicklas 558                     %>
6721 10 Feb 15 nicklas 559                     <tbl:cell 
6721 10 Feb 15 nicklas 560                       column="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+loader.getId()%>"
6721 10 Feb 15 nicklas 561                       ><%
7337 12 Apr 17 nicklas 562                       if (loader.find(snapshot, psInfo.reset())) 
6721 10 Feb 15 nicklas 563                       {
6721 10 Feb 15 nicklas 564                         %><tbl:cellvalue 
6541 29 Sep 14 nicklas 565                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 566                           bulletlist="<%=loader.useBulletList() %>"
6541 29 Sep 14 nicklas 567                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 568                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
6721 10 Feb 15 nicklas 569                         /><%
6721 10 Feb 15 nicklas 570                       }
6721 10 Feb 15 nicklas 571                       %></tbl:cell>
6721 10 Feb 15 nicklas 572                     <%
2942 22 Nov 06 nicklas 573                   }
2892 10 Nov 06 nicklas 574                 }
4093 18 Jan 08 enell 575                 for (AnnotationType at : experimentalFactors)
4093 18 Jan 08 enell 576                 {
6942 31 Aug 15 nicklas 577                   Unit unit = at.getDefaultUnit();
6942 31 Aug 15 nicklas 578                   String symbol = unit == null ? null : unit.getDisplaySymbol();
4093 18 Jan 08 enell 579                   %>
4093 18 Jan 08 enell 580                   <tbl:cell column="<%="ef"+at.getId()%>"
4093 18 Jan 08 enell 581                     ><tbl:cellvalue
6541 29 Sep 14 nicklas 582                     list="<%=BioAssaySetUtil.getAnnotationValues(dc, manager, item, at)%>"
6942 31 Aug 15 nicklas 583                     suffix="<%=symbol%>"
4093 18 Jan 08 enell 584                   /></tbl:cell>
4093 18 Jan 08 enell 585                   <%
4093 18 Jan 08 enell 586                 }                
2892 10 Nov 06 nicklas 587                 %>
6143 20 Sep 12 nicklas 588                 <tbl:cell column="tools" style="white-space: nowrap;">
4338 17 Jun 08 nicklas 589                   <% 
4338 17 Jun 08 nicklas 590                   if (bioAssayHasDbSpots) 
4338 17 Jun 08 nicklas 591                   {
4338 17 Jun 08 nicklas 592                     %>
6315 06 Sep 13 nicklas 593                     <base:icon 
6315 06 Sep 13 nicklas 594                       subclass="link auto-init"
6315 06 Sep 13 nicklas 595                       data-auto-init="plotter"
6315 06 Sep 13 nicklas 596                       data-item-id="<%=itemId %>"
6315 06 Sep 13 nicklas 597                       image="plotter.png" 
6143 20 Sep 12 nicklas 598                       tooltip="A simple plot tool"
6143 20 Sep 12 nicklas 599                     />
6315 06 Sep 13 nicklas 600                     <base:icon 
6315 06 Sep 13 nicklas 601                       subclass="link auto-init"
6315 06 Sep 13 nicklas 602                       data-auto-init="spotdata"
6315 06 Sep 13 nicklas 603                       data-item-id="<%=itemId %>"
6315 06 Sep 13 nicklas 604                       image="table.png" 
6143 20 Sep 12 nicklas 605                       tooltip="View spot data as a table"
6143 20 Sep 12 nicklas 606                     />
4338 17 Jun 08 nicklas 607                     <%
4338 17 Jun 08 nicklas 608                   }
4338 17 Jun 08 nicklas 609                   %>
2102 22 Mar 06 nicklas 610                 </tbl:cell>
2099 21 Mar 06 nicklas 611               </tbl:row>
2099 21 Mar 06 nicklas 612               <%
2099 21 Mar 06 nicklas 613             }
2099 21 Mar 06 nicklas 614           }
5952 10 Feb 12 nicklas 615           if (numListed == 0)
5952 10 Feb 12 nicklas 616           {
5952 10 Feb 12 nicklas 617             %>
6604 18 Nov 14 nicklas 618             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 619               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 620               <%=bioAssays == null || bioAssays.getTotalCount() == 0 ? "No bioassays were found" : "No bioassays on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 621               </div>
5952 10 Feb 12 nicklas 622             </tbl:panel>
5952 10 Feb 12 nicklas 623             <%
5952 10 Feb 12 nicklas 624           }
2099 21 Mar 06 nicklas 625           %>
2099 21 Mar 06 nicklas 626           </tbl:rows>
2099 21 Mar 06 nicklas 627         </tbl:data>
2099 21 Mar 06 nicklas 628     </tbl:table>
2099 21 Mar 06 nicklas 629     </t:tab>
2099 21 Mar 06 nicklas 630     
4338 17 Jun 08 nicklas 631     <t:tab id="spotdata" title="Spot data" visible="<%=hasDbSpots%>" />
2678 28 Sep 06 nicklas 632     
6315 06 Sep 13 nicklas 633     <t:tab id="bioassayset.overviewplots" title="Overview plots" 
4908 28 Apr 09 nicklas 634       visible="<%=overviewPlotInvoker.getNumExtensions() > 0%>" />
2099 21 Mar 06 nicklas 635     </t:tabcontrol>
2099 21 Mar 06 nicklas 636
5952 10 Feb 12 nicklas 637     <base:buttongroup subclass="dialogbuttons">
6315 06 Sep 13 nicklas 638       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6315 06 Sep 13 nicklas 639       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6315 06 Sep 13 nicklas 640       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5952 10 Feb 12 nicklas 641     </base:buttongroup>
5952 10 Feb 12 nicklas 642
2099 21 Mar 06 nicklas 643   </base:body>
2099 21 Mar 06 nicklas 644   </base:page>
2099 21 Mar 06 nicklas 645   <%
2099 21 Mar 06 nicklas 646 }
2099 21 Mar 06 nicklas 647 finally
2099 21 Mar 06 nicklas 648 {
2099 21 Mar 06 nicklas 649   if (bioAssays != null) bioAssays.close();
2099 21 Mar 06 nicklas 650   if (dc != null) dc.close();
2099 21 Mar 06 nicklas 651 }
3675 16 Aug 07 jari 652 %>