www/biomaterials/bioplates/list_bioplates.jsp

Code
Comments
Other
Rev Date Author Line
4704 11 Dec 08 martin 1 <%-- $Id$
4704 11 Dec 08 martin 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4704 11 Dec 08 martin 4   Copyright (C) 2007 Johan Enell, Martin Svensson
4704 11 Dec 08 martin 5
4704 11 Dec 08 martin 6   This file is part of BASE - BioArray Software Environment.
4704 11 Dec 08 martin 7   Available at http://base.thep.lu.se/
4704 11 Dec 08 martin 8
4704 11 Dec 08 martin 9   BASE is free software; you can redistribute it and/or
4704 11 Dec 08 martin 10   modify it under the terms of the GNU General Public License
4704 11 Dec 08 martin 11   as published by the Free Software Foundation; either version 3
4704 11 Dec 08 martin 12   of the License, or (at your option) any later version.
4704 11 Dec 08 martin 13
4704 11 Dec 08 martin 14   BASE is distributed in the hope that it will be useful,
4704 11 Dec 08 martin 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4704 11 Dec 08 martin 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4704 11 Dec 08 martin 17   GNU General Public License for more details.
4704 11 Dec 08 martin 18
4704 11 Dec 08 martin 19   You should have received a copy of the GNU General Public License
4704 11 Dec 08 martin 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4704 11 Dec 08 martin 21   ------------------------------------------------------------------
4704 11 Dec 08 martin 22
4704 11 Dec 08 martin 23   @author Nicklas
4704 11 Dec 08 martin 24   @version 2.0
4704 11 Dec 08 martin 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
4704 11 Dec 08 martin 27   import="net.sf.basedb.core.SessionControl"
4704 11 Dec 08 martin 28   import="net.sf.basedb.core.DbControl"
4704 11 Dec 08 martin 29   import="net.sf.basedb.core.Item"
4704 11 Dec 08 martin 30   import="net.sf.basedb.core.AnnotationType"
4704 11 Dec 08 martin 31   import="net.sf.basedb.core.AnnotationSet"
4704 11 Dec 08 martin 32   import="net.sf.basedb.core.Annotation"
4704 11 Dec 08 martin 33   import="net.sf.basedb.core.BioPlate"
4704 11 Dec 08 martin 34   import="net.sf.basedb.core.PlateGeometry"
5565 04 Feb 11 nicklas 35   import="net.sf.basedb.core.BioWell"
4704 11 Dec 08 martin 36   import="net.sf.basedb.core.ItemQuery"
4704 11 Dec 08 martin 37   import="net.sf.basedb.core.Include"
4704 11 Dec 08 martin 38   import="net.sf.basedb.core.Type"
5709 26 Aug 11 nicklas 39   import="net.sf.basedb.core.ItemSubtype"
4704 11 Dec 08 martin 40   import="net.sf.basedb.core.ItemResultIterator"
4704 11 Dec 08 martin 41   import="net.sf.basedb.core.ItemResultList"
4704 11 Dec 08 martin 42   import="net.sf.basedb.core.ItemContext"
4704 11 Dec 08 martin 43   import="net.sf.basedb.core.Nameable"
4704 11 Dec 08 martin 44   import="net.sf.basedb.core.Permission"
4704 11 Dec 08 martin 45   import="net.sf.basedb.core.PluginDefinition"
5527 13 Dec 10 nicklas 46   import="net.sf.basedb.core.Metadata"
5527 13 Dec 10 nicklas 47   import="net.sf.basedb.core.Metadata.PropertyPath"
4704 11 Dec 08 martin 48   import="net.sf.basedb.core.query.Hql"
4704 11 Dec 08 martin 49   import="net.sf.basedb.core.query.Restrictions"
4704 11 Dec 08 martin 50   import="net.sf.basedb.core.query.Expressions"
4704 11 Dec 08 martin 51   import="net.sf.basedb.core.plugin.GuiContext"
4704 11 Dec 08 martin 52   import="net.sf.basedb.core.plugin.Plugin"
4704 11 Dec 08 martin 53   import="net.sf.basedb.core.query.Orders"
4704 11 Dec 08 martin 54   import="net.sf.basedb.core.query.Hql"
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"
6541 29 Sep 14 nicklas 59   import="net.sf.basedb.core.snapshot.SnapshotManager"
4704 11 Dec 08 martin 60   import="net.sf.basedb.util.Enumeration"
4704 11 Dec 08 martin 61   import="net.sf.basedb.util.ShareableUtil"
4704 11 Dec 08 martin 62   import="net.sf.basedb.clients.web.Base"
4704 11 Dec 08 martin 63   import="net.sf.basedb.clients.web.ModeInfo"
4704 11 Dec 08 martin 64   import="net.sf.basedb.clients.web.PermissionUtil"
4704 11 Dec 08 martin 65   import="net.sf.basedb.clients.web.util.HTML"
4704 11 Dec 08 martin 66   import="net.sf.basedb.util.formatter.Formatter"
4704 11 Dec 08 martin 67   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4882 03 Apr 09 nicklas 68   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4882 03 Apr 09 nicklas 69   import="net.sf.basedb.clients.web.extensions.JspContext"
4882 03 Apr 09 nicklas 70   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 71   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4882 03 Apr 09 nicklas 72   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 73   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6038 29 Mar 12 nicklas 74   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
7337 12 Apr 17 nicklas 75   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
4882 03 Apr 09 nicklas 76   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
4704 11 Dec 08 martin 77   import="net.sf.basedb.util.Values"
4704 11 Dec 08 martin 78   import="java.util.Iterator"
4704 11 Dec 08 martin 79   import="java.util.List"
4704 11 Dec 08 martin 80   import="java.util.Map"
5996 05 Mar 12 nicklas 81   import="java.util.Date"
6541 29 Sep 14 nicklas 82   import="java.util.ArrayList"
4704 11 Dec 08 martin 83 %>
4704 11 Dec 08 martin 84 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
4704 11 Dec 08 martin 85 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4882 03 Apr 09 nicklas 86 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
4704 11 Dec 08 martin 87 <%!
4704 11 Dec 08 martin 88   private static final Item itemType = Item.BIOPLATE;
4704 11 Dec 08 martin 89   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
5527 13 Dec 10 nicklas 90
5527 13 Dec 10 nicklas 91   private static Enumeration<String, String> bioMaterialTypes = new Enumeration<String, String>();
5527 13 Dec 10 nicklas 92   static
5527 13 Dec 10 nicklas 93   {
5527 13 Dec 10 nicklas 94     bioMaterialTypes.add("", "-any-");
5527 13 Dec 10 nicklas 95     bioMaterialTypes.add(Integer.toString(Item.SAMPLE.getValue()), Item.SAMPLE.toString());
5527 13 Dec 10 nicklas 96     bioMaterialTypes.add(Integer.toString(Item.EXTRACT.getValue()), Item.EXTRACT.toString());
5527 13 Dec 10 nicklas 97   }
4704 11 Dec 08 martin 98 %>
4704 11 Dec 08 martin 99 <%
4704 11 Dec 08 martin 100 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
4704 11 Dec 08 martin 101 final String ID = sc.getId();
4704 11 Dec 08 martin 102 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
4704 11 Dec 08 martin 103 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
4704 11 Dec 08 martin 104
4704 11 Dec 08 martin 105 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
4704 11 Dec 08 martin 106 final String callback = request.getParameter("callback");
4704 11 Dec 08 martin 107 final String title = mode.generateTitle("bioplate", "bioplates");
7954 12 May 21 nicklas 108 final DbControl dc = sc.newDbControl(":List "+itemType);
4704 11 Dec 08 martin 109 ItemResultIterator<BioPlate> bioplates = null;
6541 29 Sep 14 nicklas 110 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
4704 11 Dec 08 martin 111 try
4704 11 Dec 08 martin 112 {
4704 11 Dec 08 martin 113   final ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
6541 29 Sep 14 nicklas 114   SnapshotManager manager = new SnapshotManager();
7337 12 Apr 17 nicklas 115   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
6541 29 Sep 14 nicklas 116   for (AnnotationType at : annotationTypeQuery.list(dc))
6541 29 Sep 14 nicklas 117   {
6541 29 Sep 14 nicklas 118     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
6541 29 Sep 14 nicklas 119   }
5709 26 Aug 11 nicklas 120
5709 26 Aug 11 nicklas 121   final ItemQuery<ItemSubtype> subtypesQuery = Base.getSubtypesQuery(null);
5709 26 Aug 11 nicklas 122   subtypesQuery.restrict(
5709 26 Aug 11 nicklas 123     Restrictions.in(
5709 26 Aug 11 nicklas 124       Hql.property("itemType"), 
5709 26 Aug 11 nicklas 125       Expressions.integer(Item.SAMPLE.getValue()), Expressions.integer(Item.EXTRACT.getValue())
5709 26 Aug 11 nicklas 126     ));
4704 11 Dec 08 martin 127   
4704 11 Dec 08 martin 128   final ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();
4704 11 Dec 08 martin 129   geometryQuery.order(Orders.asc(Hql.property("name")));
4704 11 Dec 08 martin 130   geometryQuery.setCacheResult(true);
4704 11 Dec 08 martin 131   
4704 11 Dec 08 martin 132   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 133   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
4704 11 Dec 08 martin 134   try
4704 11 Dec 08 martin 135   {
7914 23 Feb 21 nicklas 136     final ItemQuery<BioPlate> query = Base.getConfiguredQuery(dc, cc, jspContext, true, BioPlate.getQuery(), mode);
4704 11 Dec 08 martin 137     bioplates = query.iterate(dc);
4704 11 Dec 08 martin 138   }
4704 11 Dec 08 martin 139   catch (Throwable t)
4704 11 Dec 08 martin 140   {
4704 11 Dec 08 martin 141     cc.setMessage(t.getMessage());
4704 11 Dec 08 martin 142     t.printStackTrace();
4704 11 Dec 08 martin 143   }
4704 11 Dec 08 martin 144   int numListed = 0;
5996 05 Mar 12 nicklas 145   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
7604 25 Feb 19 nicklas 146   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 147   ExtensionsInvoker<ListColumnAction<BioPlate,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
4704 11 Dec 08 martin 148   %>
6260 27 Mar 13 nicklas 149   <base:page title="<%=title==null ? "Bioplates" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6260 27 Mar 13 nicklas 150   <base:head scripts="table.js,~bioplates.js" styles="table.css,toolbar.css">
4882 03 Apr 09 nicklas 151     <ext:scripts context="<%=jspContext%>" />
4882 03 Apr 09 nicklas 152     <ext:stylesheets context="<%=jspContext%>" />
4704 11 Dec 08 martin 153   </base:head>  
4704 11 Dec 08 martin 154   <base:body>
5951 09 Feb 12 nicklas 155     <h1><%=title==null ? "Bioplates" : title%></h1>
5951 09 Feb 12 nicklas 156     <div class="content">
4704 11 Dec 08 martin 157     <tbl:table 
5951 09 Feb 12 nicklas 158       id="bioplates"
4704 11 Dec 08 martin 159       columns="<%=cc.getSetting("columns")%>"
4704 11 Dec 08 martin 160       sortby="<%=cc.getSortProperty()%>" 
4704 11 Dec 08 martin 161       direction="<%=cc.getSortDirection()%>"
4704 11 Dec 08 martin 162       action="index.jsp"
4704 11 Dec 08 martin 163       sc="<%=sc%>"
4704 11 Dec 08 martin 164       item="<%=itemType%>"
6701 30 Jan 15 nicklas 165       filterrows="<%=cc.getFilterRows()%>"
5951 09 Feb 12 nicklas 166       subclass="fulltable"
7982 14 Jun 21 nicklas 167       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
4704 11 Dec 08 martin 168       >
4704 11 Dec 08 martin 169       <tbl:hidden 
4704 11 Dec 08 martin 170         name="mode" 
4704 11 Dec 08 martin 171         value="<%=mode.getName()%>" 
4704 11 Dec 08 martin 172       />
4704 11 Dec 08 martin 173       <tbl:hidden 
4704 11 Dec 08 martin 174         name="callback" 
4704 11 Dec 08 martin 175         value="<%=callback%>" 
4704 11 Dec 08 martin 176         skip="<%=callback == null%>" 
4704 11 Dec 08 martin 177       />
4704 11 Dec 08 martin 178       <tbl:columndef 
4704 11 Dec 08 martin 179         id="name"
4704 11 Dec 08 martin 180         property="name"
4704 11 Dec 08 martin 181         datatype="string"
4704 11 Dec 08 martin 182         title="Name"
4704 11 Dec 08 martin 183         sortable="true" 
4704 11 Dec 08 martin 184         filterable="true"
4704 11 Dec 08 martin 185         exportable="true"
4704 11 Dec 08 martin 186         show="always" 
4704 11 Dec 08 martin 187       />
4704 11 Dec 08 martin 188       <tbl:columndef 
4704 11 Dec 08 martin 189         id="id"
4704 11 Dec 08 martin 190         clazz="uniquecol"
4704 11 Dec 08 martin 191         property="id"
4704 11 Dec 08 martin 192         datatype="int"
4704 11 Dec 08 martin 193         title="ID"
4704 11 Dec 08 martin 194         sortable="true"
4704 11 Dec 08 martin 195         filterable="true"
4704 11 Dec 08 martin 196         exportable="true"
4704 11 Dec 08 martin 197       />
4704 11 Dec 08 martin 198       <tbl:columndef 
4704 11 Dec 08 martin 199         id="barcode"
4704 11 Dec 08 martin 200         property="barcode"
4704 11 Dec 08 martin 201         datatype="string"
4704 11 Dec 08 martin 202         title="Barcode"
4704 11 Dec 08 martin 203         sortable="true" 
4704 11 Dec 08 martin 204         filterable="true"
4704 11 Dec 08 martin 205         exportable="true"
4704 11 Dec 08 martin 206       />
5454 28 Oct 10 nicklas 207       <tbl:columndef 
5454 28 Oct 10 nicklas 208         id="destroyed"
5454 28 Oct 10 nicklas 209         property="destroyed"
5454 28 Oct 10 nicklas 210         datatype="boolean"
5454 28 Oct 10 nicklas 211         title="Destroyed"
5454 28 Oct 10 nicklas 212         sortable="true" 
5454 28 Oct 10 nicklas 213         filterable="true"
5454 28 Oct 10 nicklas 214         exportable="true"
5454 28 Oct 10 nicklas 215       />
5996 05 Mar 12 nicklas 216       <tbl:columndef 
5996 05 Mar 12 nicklas 217         id="eventDate"
5996 05 Mar 12 nicklas 218         property="eventDate"
5996 05 Mar 12 nicklas 219         datatype="date"
5996 05 Mar 12 nicklas 220         title="Created"
5996 05 Mar 12 nicklas 221         sortable="true" 
5996 05 Mar 12 nicklas 222         filterable="true"
5996 05 Mar 12 nicklas 223         exportable="true"
5996 05 Mar 12 nicklas 224         formatter="<%=dateFormatter%>"
5996 05 Mar 12 nicklas 225       />
5996 05 Mar 12 nicklas 226       <tbl:columndef 
5996 05 Mar 12 nicklas 227         id="entryDate"
5996 05 Mar 12 nicklas 228         property="entryDate"
5996 05 Mar 12 nicklas 229         datatype="date"
5996 05 Mar 12 nicklas 230         title="Registered"
5996 05 Mar 12 nicklas 231         sortable="true" 
5996 05 Mar 12 nicklas 232         filterable="true"
5996 05 Mar 12 nicklas 233         exportable="true"
5996 05 Mar 12 nicklas 234         formatter="<%=dateFormatter%>"
5996 05 Mar 12 nicklas 235       />
5565 04 Feb 11 nicklas 236       <tbl:columndef
5565 04 Feb 11 nicklas 237         id="freeWells"
5836 28 Oct 11 nicklas 238         property="freeWells"
5836 28 Oct 11 nicklas 239         datatype="int"
5565 04 Feb 11 nicklas 240         title="Free (total) wells"
5836 28 Oct 11 nicklas 241         sortable="true" 
5836 28 Oct 11 nicklas 242         filterable="true"
5836 28 Oct 11 nicklas 243         exportable="true"
5565 04 Feb 11 nicklas 244       />
4704 11 Dec 08 martin 245       <%
4704 11 Dec 08 martin 246       Enumeration<String, String> geometries = new Enumeration<String, String>();
4704 11 Dec 08 martin 247       ItemResultList<PlateGeometry> plateGeometries = geometryQuery.list(dc);
4704 11 Dec 08 martin 248       for (PlateGeometry pg : plateGeometries)
4704 11 Dec 08 martin 249       {
4704 11 Dec 08 martin 250         geometries.add(Integer.toString(pg.getId()), HTML.encodeTags(pg.getName()));
4704 11 Dec 08 martin 251       }
4704 11 Dec 08 martin 252       %>
4704 11 Dec 08 martin 253       <tbl:columndef 
4704 11 Dec 08 martin 254         id="plateGeometry"
5262 08 Mar 10 nicklas 255         property="plateGeometry"
5262 08 Mar 10 nicklas 256         sortproperty="plateGeometry.name"
6037 29 Mar 12 nicklas 257         exportproperty="plateGeometry.name:string"
4704 11 Dec 08 martin 258         datatype="int"
4704 11 Dec 08 martin 259         enumeration="<%=geometries%>"
4704 11 Dec 08 martin 260         title="Geometry"
4704 11 Dec 08 martin 261         sortable="true" 
4704 11 Dec 08 martin 262         filterable="true"
4704 11 Dec 08 martin 263         exportable="true"
4704 11 Dec 08 martin 264       />
4704 11 Dec 08 martin 265       <tbl:columndef 
5262 08 Mar 10 nicklas 266         id="bioPlateType"
5262 08 Mar 10 nicklas 267         property="bioPlateType.name"
5262 08 Mar 10 nicklas 268         datatype="string"
5708 25 Aug 11 nicklas 269         title="Bioplate type"
5262 08 Mar 10 nicklas 270         sortable="true" 
5262 08 Mar 10 nicklas 271         filterable="true"
5262 08 Mar 10 nicklas 272         exportable="true"
5262 08 Mar 10 nicklas 273       />
5527 13 Dec 10 nicklas 274       <tbl:columndef
5527 13 Dec 10 nicklas 275         id="bioMaterialType"
5527 13 Dec 10 nicklas 276         property="bioPlateType.bioMaterialType"
5527 13 Dec 10 nicklas 277         title="Biomaterial type"
5527 13 Dec 10 nicklas 278         datatype="int"
5527 13 Dec 10 nicklas 279         sortable="true" 
5527 13 Dec 10 nicklas 280         filterable="true" 
5527 13 Dec 10 nicklas 281         exportable="true"
5527 13 Dec 10 nicklas 282         enumeration="<%=bioMaterialTypes%>"
5527 13 Dec 10 nicklas 283       />
5262 08 Mar 10 nicklas 284       <tbl:columndef 
5709 26 Aug 11 nicklas 285         id="bioMaterialSubtype"
5709 26 Aug 11 nicklas 286         property="bioPlateType.itemSubtype"
5709 26 Aug 11 nicklas 287         sortproperty="bioPlateType.itemSubtype.name"
5709 26 Aug 11 nicklas 288         exportproperty="bioPlateType.itemSubtype.name:string"
5709 26 Aug 11 nicklas 289         datatype="int"
5709 26 Aug 11 nicklas 290         enumeration="<%=Enumeration.fromItems(subtypesQuery.list(dc), "-any-")%>"
5709 26 Aug 11 nicklas 291         title="Biomaterial subtype"
5709 26 Aug 11 nicklas 292         sortable="true" 
5709 26 Aug 11 nicklas 293         filterable="true"
5709 26 Aug 11 nicklas 294         exportable="true"
5709 26 Aug 11 nicklas 295       />
5709 26 Aug 11 nicklas 296       <tbl:columndef 
6061 13 Jun 12 nicklas 297         id="freezer"
6061 13 Jun 12 nicklas 298         property="freezer.name"
6061 13 Jun 12 nicklas 299         datatype="string"
6061 13 Jun 12 nicklas 300         title="Storage location"
6061 13 Jun 12 nicklas 301         sortable="true" 
6061 13 Jun 12 nicklas 302         filterable="true"
6061 13 Jun 12 nicklas 303         exportable="true"
6061 13 Jun 12 nicklas 304       />
6061 13 Jun 12 nicklas 305       <tbl:columndef 
6061 13 Jun 12 nicklas 306         id="section"
6061 13 Jun 12 nicklas 307         property="section"
6061 13 Jun 12 nicklas 308         datatype="string"
6061 13 Jun 12 nicklas 309         title="Section"
6061 13 Jun 12 nicklas 310         sortable="true" 
6061 13 Jun 12 nicklas 311         filterable="true"
6061 13 Jun 12 nicklas 312         exportable="true"
6061 13 Jun 12 nicklas 313       />
6061 13 Jun 12 nicklas 314       <tbl:columndef 
6061 13 Jun 12 nicklas 315         id="tray"
6061 13 Jun 12 nicklas 316         property="tray"
6061 13 Jun 12 nicklas 317         datatype="string"
6061 13 Jun 12 nicklas 318         title="Tray"
6061 13 Jun 12 nicklas 319         sortable="true" 
6061 13 Jun 12 nicklas 320         filterable="true"
6061 13 Jun 12 nicklas 321         exportable="true"
6061 13 Jun 12 nicklas 322       />
6061 13 Jun 12 nicklas 323       <tbl:columndef 
6061 13 Jun 12 nicklas 324         id="position"
6061 13 Jun 12 nicklas 325         property="position"
6061 13 Jun 12 nicklas 326         datatype="string"
6061 13 Jun 12 nicklas 327         title="Position"
6061 13 Jun 12 nicklas 328         sortable="true" 
6061 13 Jun 12 nicklas 329         filterable="true"
6061 13 Jun 12 nicklas 330         exportable="true"
6061 13 Jun 12 nicklas 331       />
6061 13 Jun 12 nicklas 332       <tbl:columndef 
4704 11 Dec 08 martin 333         id="owner"
4704 11 Dec 08 martin 334         property="owner.name"
4704 11 Dec 08 martin 335         datatype="string"
4704 11 Dec 08 martin 336         title="Owner"
4704 11 Dec 08 martin 337         sortable="true" 
4704 11 Dec 08 martin 338         filterable="true"
4704 11 Dec 08 martin 339         exportable="true"
4704 11 Dec 08 martin 340       />
4704 11 Dec 08 martin 341       <tbl:columndef 
4704 11 Dec 08 martin 342         id="description"
4704 11 Dec 08 martin 343         property="description"
4704 11 Dec 08 martin 344         datatype="string"
4704 11 Dec 08 martin 345         title="Description" 
4704 11 Dec 08 martin 346         sortable="true" 
4704 11 Dec 08 martin 347         filterable="true" 
4704 11 Dec 08 martin 348         exportable="true"
4704 11 Dec 08 martin 349       />      
4704 11 Dec 08 martin 350       <%
6541 29 Sep 14 nicklas 351       for (AnnotationLoaderUtil loader : annotationLoaders)
4704 11 Dec 08 martin 352       {
6541 29 Sep 14 nicklas 353         AnnotationType at = loader.getAnnotationType();
7605 26 Feb 19 nicklas 354         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
4704 11 Dec 08 martin 355         Enumeration<String, String> annotationEnum = null;
4704 11 Dec 08 martin 356         if (at.isEnumeration())
4704 11 Dec 08 martin 357         {
4704 11 Dec 08 martin 358           annotationEnum = new Enumeration<String, String>();
6784 18 Mar 15 nicklas 359           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
4704 11 Dec 08 martin 360           List<?> values = at.getValues();
4704 11 Dec 08 martin 361           for (Object value : values)
4704 11 Dec 08 martin 362           {
4704 11 Dec 08 martin 363             String encoded = formatter.format(value);
4704 11 Dec 08 martin 364             annotationEnum.add(encoded, encoded);
4704 11 Dec 08 martin 365           }
4704 11 Dec 08 martin 366         }
4704 11 Dec 08 martin 367         %>
4704 11 Dec 08 martin 368         <tbl:columndef 
4704 11 Dec 08 martin 369           id="<%="at"+at.getId()%>"
4704 11 Dec 08 martin 370           title="<%=HTML.encodeTags(at.getName())+" [A]"%>" 
4704 11 Dec 08 martin 371           property="<%="#"+at.getId()%>"
4704 11 Dec 08 martin 372           annotation="true"
4704 11 Dec 08 martin 373           datatype="<%=at.getValueType().getStringValue()%>"
4704 11 Dec 08 martin 374           enumeration="<%=annotationEnum%>"
5674 27 Jun 11 nicklas 375           smartenum="<%=at.getDisplayAsList() %>"
6027 23 Mar 12 nicklas 376           sortable="<%=at.getMultiplicity() == 1%>" 
4704 11 Dec 08 martin 377           filterable="true" 
4704 11 Dec 08 martin 378           exportable="true"
4704 11 Dec 08 martin 379           formatter="<%=formatter%>"
4704 11 Dec 08 martin 380           unit="<%=at.getDefaultUnit()%>"
4704 11 Dec 08 martin 381         />
4704 11 Dec 08 martin 382         <%
4704 11 Dec 08 martin 383       }
4704 11 Dec 08 martin 384       %>
4704 11 Dec 08 martin 385       <tbl:columndef
4704 11 Dec 08 martin 386         id="permission"
4704 11 Dec 08 martin 387         title="Permission"
4704 11 Dec 08 martin 388       />
5165 28 Oct 09 nicklas 389       <tbl:columndef
5165 28 Oct 09 nicklas 390         id="sharedTo"
5165 28 Oct 09 nicklas 391         title="Shared to"
5165 28 Oct 09 nicklas 392         filterable="true"
5165 28 Oct 09 nicklas 393         filterproperty="!sharedTo.name"
5165 28 Oct 09 nicklas 394         datatype="string"
4704 11 Dec 08 martin 395       />
6038 29 Mar 12 nicklas 396       <tbl:columndef 
6038 29 Mar 12 nicklas 397         id="xt-columns" 
6038 29 Mar 12 nicklas 398         extensions="<%=columnsInvoker%>" 
6038 29 Mar 12 nicklas 399         jspcontext="<%=jspContext%>" 
6038 29 Mar 12 nicklas 400       />
6604 18 Nov 14 nicklas 401       <div class="panelgroup bg-filled-50 bottomborder">
5951 09 Feb 12 nicklas 402         <tbl:toolbar
5951 09 Feb 12 nicklas 403           visible="<%=mode.hasToolbar()%>"
5951 09 Feb 12 nicklas 404           subclass="bottomborder"
5951 09 Feb 12 nicklas 405           >
5951 09 Feb 12 nicklas 406           <tbl:button 
6260 27 Mar 13 nicklas 407             id="btnNewItem"
5951 09 Feb 12 nicklas 408             disabled="<%=!createPermission%>" 
5951 09 Feb 12 nicklas 409             image="new.png" 
5951 09 Feb 12 nicklas 410             title="New&hellip;" 
5951 09 Feb 12 nicklas 411             tooltip="<%=createPermission ? "Create new bioplate" : "You do not have permission to create bioplate"%>" 
5951 09 Feb 12 nicklas 412           />
5951 09 Feb 12 nicklas 413           <tbl:button 
6260 27 Mar 13 nicklas 414             id="btnDeleteItems"
5951 09 Feb 12 nicklas 415             image="delete.png"
5951 09 Feb 12 nicklas 416             title="Delete" 
5951 09 Feb 12 nicklas 417             tooltip="Delete the selected items" 
5951 09 Feb 12 nicklas 418           />
5951 09 Feb 12 nicklas 419           <tbl:button 
6260 27 Mar 13 nicklas 420             id="btnRestoreItems"
5951 09 Feb 12 nicklas 421             image="restore.png"
5951 09 Feb 12 nicklas 422             title="Restore" 
5951 09 Feb 12 nicklas 423             tooltip="Restore the selected (deleted) items"
5951 09 Feb 12 nicklas 424           />
5951 09 Feb 12 nicklas 425           <tbl:button 
6260 27 Mar 13 nicklas 426             id="btnShareItems"
5951 09 Feb 12 nicklas 427             image="share.png"
5951 09 Feb 12 nicklas 428             title="Share&hellip;" 
5951 09 Feb 12 nicklas 429             tooltip="Share the selected items"
5951 09 Feb 12 nicklas 430           />
5951 09 Feb 12 nicklas 431           <tbl:button 
6260 27 Mar 13 nicklas 432             id="btnSetOwner"
5951 09 Feb 12 nicklas 433             image="take_ownership.png"
5951 09 Feb 12 nicklas 434             title="Set owner&hellip;"
5951 09 Feb 12 nicklas 435             tooltip="Change owner of the selected items"
5951 09 Feb 12 nicklas 436           />
5951 09 Feb 12 nicklas 437           <tbl:button 
6260 27 Mar 13 nicklas 438             id="btnColumns"
5951 09 Feb 12 nicklas 439             image="columns.png" 
5951 09 Feb 12 nicklas 440             title="Columns&hellip;" 
5951 09 Feb 12 nicklas 441             tooltip="Show, hide and re-order columns" 
5951 09 Feb 12 nicklas 442           />
5951 09 Feb 12 nicklas 443           <tbl:button 
6260 27 Mar 13 nicklas 444             id="btnImport"
6260 27 Mar 13 nicklas 445             data-plugin-type="IMPORT"
5951 09 Feb 12 nicklas 446             image="import.png" 
5951 09 Feb 12 nicklas 447             title="Import&hellip;" 
5951 09 Feb 12 nicklas 448             tooltip="Import data" 
5951 09 Feb 12 nicklas 449             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5951 09 Feb 12 nicklas 450           />
5951 09 Feb 12 nicklas 451           <tbl:button 
6260 27 Mar 13 nicklas 452             id="btnExport"
6260 27 Mar 13 nicklas 453             data-plugin-type="EXPORT"
5951 09 Feb 12 nicklas 454             image="export.png" 
5951 09 Feb 12 nicklas 455             title="Export&hellip;" 
5951 09 Feb 12 nicklas 456             tooltip="Export data" 
5951 09 Feb 12 nicklas 457             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5951 09 Feb 12 nicklas 458           />
5951 09 Feb 12 nicklas 459           <tbl:button 
6260 27 Mar 13 nicklas 460             id="btnRunPlugin"
6260 27 Mar 13 nicklas 461             data-plugin-type="OTHER"
5951 09 Feb 12 nicklas 462             image="runplugin.png" 
5951 09 Feb 12 nicklas 463             title="Run plugin&hellip;" 
5951 09 Feb 12 nicklas 464             tooltip="Run a plugin" 
5951 09 Feb 12 nicklas 465             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5951 09 Feb 12 nicklas 466           />
5951 09 Feb 12 nicklas 467           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 468             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5951 09 Feb 12 nicklas 469         </tbl:toolbar>
5951 09 Feb 12 nicklas 470         <tbl:panel>
6182 23 Oct 12 nicklas 471           <tbl:presetselector />
5951 09 Feb 12 nicklas 472           <tbl:navigator
5951 09 Feb 12 nicklas 473             page="<%=cc.getPage()%>" 
5951 09 Feb 12 nicklas 474             rowsperpage="<%=cc.getRowsPerPage()%>" 
5951 09 Feb 12 nicklas 475             totalrows="<%=bioplates == null ? 0 : bioplates.getTotalCount()%>" 
5951 09 Feb 12 nicklas 476             visible="<%=mode.hasNavigator()%>"
5951 09 Feb 12 nicklas 477           />
5951 09 Feb 12 nicklas 478         </tbl:panel>
5951 09 Feb 12 nicklas 479       </div>
4704 11 Dec 08 martin 480       <tbl:data>
5948 08 Feb 12 nicklas 481         <tbl:headers>
5948 08 Feb 12 nicklas 482           <tbl:headerrow>
7943 04 May 21 nicklas 483             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 484             <tbl:columnheaders />
5948 08 Feb 12 nicklas 485           </tbl:headerrow>
6701 30 Jan 15 nicklas 486           <%
6701 30 Jan 15 nicklas 487           int numFilters = cc.getNumPropertyFilters();
6701 30 Jan 15 nicklas 488           int numRows = cc.getFilterRows();
6701 30 Jan 15 nicklas 489           for (int filterNo = 0; filterNo < numRows; filterNo++)
6701 30 Jan 15 nicklas 490           {
6701 30 Jan 15 nicklas 491             boolean lastRow = filterNo == numRows-1;
6701 30 Jan 15 nicklas 492             %>
6701 30 Jan 15 nicklas 493             <tbl:headerrow>
7943 04 May 21 nicklas 494               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 495                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 496                   <div class="index"></div>
7943 04 May 21 nicklas 497                   <div class="check">
7943 04 May 21 nicklas 498                     <base:icon 
7943 04 May 21 nicklas 499                       subclass="link table-check"
7943 04 May 21 nicklas 500                       image="check_uncheck.png" 
7943 04 May 21 nicklas 501                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 502                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 503                     />
7943 04 May 21 nicklas 504                   </div>
7943 04 May 21 nicklas 505                   <div class="icons">
7943 04 May 21 nicklas 506                     <base:icon
7943 04 May 21 nicklas 507                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 508                       image="add.png"
7943 04 May 21 nicklas 509                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 510                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 511                     /><base:icon
7943 04 May 21 nicklas 512                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 513                       image="remove.png"
7943 04 May 21 nicklas 514                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 515                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 516                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 517                     />
7943 04 May 21 nicklas 518                   </div>
7943 04 May 21 nicklas 519                 </div>
6701 30 Jan 15 nicklas 520               </tbl:header>
6701 30 Jan 15 nicklas 521               <tbl:propertyfilter row="<%=filterNo%>" />
6701 30 Jan 15 nicklas 522             </tbl:headerrow>
6701 30 Jan 15 nicklas 523             <%
6701 30 Jan 15 nicklas 524           }
6701 30 Jan 15 nicklas 525           %>
7913 22 Feb 21 nicklas 526           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 527         </tbl:headers>
5948 08 Feb 12 nicklas 528         <tbl:rows>
4704 11 Dec 08 martin 529           <%
5951 09 Feb 12 nicklas 530           if (cc.getMessage() != null)
5951 09 Feb 12 nicklas 531           {
5951 09 Feb 12 nicklas 532             %>
6604 18 Nov 14 nicklas 533             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 534               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5951 09 Feb 12 nicklas 535             </tbl:panel>
5951 09 Feb 12 nicklas 536             <%
5951 09 Feb 12 nicklas 537             cc.setMessage(null);
5951 09 Feb 12 nicklas 538           }
4704 11 Dec 08 martin 539           int index = cc.getPage()*cc.getRowsPerPage();
4704 11 Dec 08 martin 540           int selectedItemId = cc.getId();
4704 11 Dec 08 martin 541           if (bioplates != null)
4704 11 Dec 08 martin 542           {
5527 13 Dec 10 nicklas 543             PropertyPath<BioPlate, Integer> bmType = 
5527 13 Dec 10 nicklas 544               Metadata.getInstance(BioPlate.class).getPropertyPath("bioPlateType.bioMaterialType", false);
4704 11 Dec 08 martin 545             while (bioplates.hasNext())
4704 11 Dec 08 martin 546             {
4704 11 Dec 08 martin 547               BioPlate item = bioplates.next();
4704 11 Dec 08 martin 548               int itemId = item.getId();
4704 11 Dec 08 martin 549               boolean deletePermission = item.hasPermission(Permission.DELETE);
4704 11 Dec 08 martin 550               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
4704 11 Dec 08 martin 551               boolean writePermission = item.hasPermission(Permission.WRITE);
4704 11 Dec 08 martin 552               String tooltip = mode.isSelectionMode() ? 
4704 11 Dec 08 martin 553                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
4704 11 Dec 08 martin 554               String name = HTML.encodeTags(item.getName());
4704 11 Dec 08 martin 555               index++;
4704 11 Dec 08 martin 556               numListed++;
4704 11 Dec 08 martin 557               %>
4704 11 Dec 08 martin 558               <tbl:row>
7943 04 May 21 nicklas 559                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 560                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 561                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 562                     <div class="check">
7943 04 May 21 nicklas 563                       <base:input
7943 04 May 21 nicklas 564                         type="checkbox" 
7943 04 May 21 nicklas 565                         name="<%=itemId%>" 
7943 04 May 21 nicklas 566                         value="<%=itemId%>" 
7943 04 May 21 nicklas 567                         title="<%=name%>" 
7943 04 May 21 nicklas 568                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 569                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 570                       />
7943 04 May 21 nicklas 571                       <base:input 
7943 04 May 21 nicklas 572                         type="radio" 
7943 04 May 21 nicklas 573                         name="item_id" 
7943 04 May 21 nicklas 574                         value="<%=itemId%>" 
7943 04 May 21 nicklas 575                         title="<%=name%>" 
7943 04 May 21 nicklas 576                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 577                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 578                       />
7943 04 May 21 nicklas 579                     </div>
7943 04 May 21 nicklas 580                     <div class="icons">
7943 04 May 21 nicklas 581                       <base:icon 
7943 04 May 21 nicklas 582                         image="deleted.png"
7943 04 May 21 nicklas 583                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 584                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 585                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 586                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 587                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 588                       /><base:icon 
7943 04 May 21 nicklas 589                         image="shared.png" 
7943 04 May 21 nicklas 590                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 591                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 592                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 593                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 594                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 595                       />
7943 04 May 21 nicklas 596                     </div>
7943 04 May 21 nicklas 597                   </div>
7943 04 May 21 nicklas 598                 </tbl:header>
6260 27 Mar 13 nicklas 599                 <tbl:cell column="name"><div 
6260 27 Mar 13 nicklas 600                   class="link table-item"
6260 27 Mar 13 nicklas 601                   data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 602                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6260 27 Mar 13 nicklas 603                   tabindex="0"
4704 11 Dec 08 martin 604                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4704 11 Dec 08 martin 605                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
4704 11 Dec 08 martin 606                 <tbl:cell column="barcode"><%=HTML.encodeTags(item.getBarcode())%></tbl:cell>
5454 28 Oct 10 nicklas 607                 <tbl:cell column="destroyed"><%=item.isDestroyed()%></tbl:cell>
5566 09 Feb 11 nicklas 608                 <tbl:cell column="freeWells"><%=item.getFreeWells()%> (<%=item.getTotalWells()%>)</tbl:cell>
4704 11 Dec 08 martin 609                 <tbl:cell column="owner"
4704 11 Dec 08 martin 610                   ><base:propertyvalue 
4704 11 Dec 08 martin 611                     item="<%=item%>" 
4704 11 Dec 08 martin 612                     property="owner"
4704 11 Dec 08 martin 613                     enableEditLink="<%=mode.hasEditLink()%>" 
4704 11 Dec 08 martin 614                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
4704 11 Dec 08 martin 615                   /></tbl:cell>
4704 11 Dec 08 martin 616                 <tbl:cell column="plateGeometry"
4704 11 Dec 08 martin 617                   ><base:propertyvalue 
4704 11 Dec 08 martin 618                     item="<%=item%>" 
4704 11 Dec 08 martin 619                     property="plateGeometry"
4704 11 Dec 08 martin 620                     enableEditLink="<%=mode.hasEditLink()%>" 
4704 11 Dec 08 martin 621                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
4704 11 Dec 08 martin 622                   /></tbl:cell>
4732 21 Jan 09 martin 623                 <tbl:cell column="freezer">
4732 21 Jan 09 martin 624                   <base:propertyvalue 
4732 21 Jan 09 martin 625                     item="<%=item%>" 
4732 21 Jan 09 martin 626                     property="freezer"
4732 21 Jan 09 martin 627                      enableEditLink="<%=mode.hasEditLink()%>" 
4732 21 Jan 09 martin 628                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
4732 21 Jan 09 martin 629                   />
4732 21 Jan 09 martin 630                 </tbl:cell>
6061 13 Jun 12 nicklas 631                 <tbl:cell column="section"><%=HTML.encodeTags(item.getSection())%></tbl:cell>                
6061 13 Jun 12 nicklas 632                 <tbl:cell column="tray"><%=HTML.encodeTags(item.getTray())%></tbl:cell>                
6061 13 Jun 12 nicklas 633                 <tbl:cell column="position"><%=HTML.encodeTags(item.getPosition())%></tbl:cell>                
5262 08 Mar 10 nicklas 634                 <tbl:cell column="bioPlateType">
5262 08 Mar 10 nicklas 635                   <base:propertyvalue 
5262 08 Mar 10 nicklas 636                     item="<%=item%>" 
5262 08 Mar 10 nicklas 637                     property="bioPlateType"
5262 08 Mar 10 nicklas 638                      enableEditLink="<%=mode.hasEditLink()%>" 
5262 08 Mar 10 nicklas 639                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5262 08 Mar 10 nicklas 640                   />
5262 08 Mar 10 nicklas 641                 </tbl:cell>
5527 13 Dec 10 nicklas 642                 <tbl:cell column="bioMaterialType"><%
5527 13 Dec 10 nicklas 643                   Integer i = bmType.getValue(dc, item);
5527 13 Dec 10 nicklas 644                   %><%=i == null ? "<i>- any -</i>" : Item.fromValue(i).toString() %></tbl:cell>
5709 26 Aug 11 nicklas 645                 <tbl:cell column="bioMaterialSubtype"><base:propertyvalue 
5709 26 Aug 11 nicklas 646                     item="<%=item%>" 
5709 26 Aug 11 nicklas 647                     property="bioPlateType.itemSubtype"
5709 26 Aug 11 nicklas 648                     enableEditLink="<%=mode.hasEditLink()%>" 
5709 26 Aug 11 nicklas 649                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5709 26 Aug 11 nicklas 650                     nulltext="<i>- any -</i>"
5709 26 Aug 11 nicklas 651                   /></tbl:cell>
5996 05 Mar 12 nicklas 652                 <tbl:cell column="eventDate" value="<%=item.getEventDate()%>" />
5996 05 Mar 12 nicklas 653                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
4704 11 Dec 08 martin 654                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>                
4704 11 Dec 08 martin 655                 <%
6541 29 Sep 14 nicklas 656                 if (item.isAnnotated())
4704 11 Dec 08 martin 657                 {
6541 29 Sep 14 nicklas 658                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
6541 29 Sep 14 nicklas 659                   for (AnnotationLoaderUtil loader : annotationLoaders)
4704 11 Dec 08 martin 660                   {
6721 10 Feb 15 nicklas 661                     %>
6721 10 Feb 15 nicklas 662                     <tbl:cell 
6721 10 Feb 15 nicklas 663                       column="<%="at"+loader.getId()%>"
6721 10 Feb 15 nicklas 664                       ><%
7337 12 Apr 17 nicklas 665                       if (loader.find(snapshot, psInfo.reset())) 
6721 10 Feb 15 nicklas 666                       {
6721 10 Feb 15 nicklas 667                         %><tbl:cellvalue 
6541 29 Sep 14 nicklas 668                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 669                           bulletlist="<%=loader.useBulletList() %>"
6541 29 Sep 14 nicklas 670                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 671                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
6721 10 Feb 15 nicklas 672                         /><%
6721 10 Feb 15 nicklas 673                       }
6721 10 Feb 15 nicklas 674                       %></tbl:cell>
6721 10 Feb 15 nicklas 675                     <%
4704 11 Dec 08 martin 676                   }
4704 11 Dec 08 martin 677                 }
4704 11 Dec 08 martin 678                 %>
4704 11 Dec 08 martin 679                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
4704 11 Dec 08 martin 680                 <tbl:cell column="sharedTo">
4704 11 Dec 08 martin 681                   <%
4704 11 Dec 08 martin 682                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
4704 11 Dec 08 martin 683                   while(sharees.hasNext())
4704 11 Dec 08 martin 684                   {
4704 11 Dec 08 martin 685                     Nameable n = sharees.next();
4704 11 Dec 08 martin 686                     if (mode.hasPropertyLink())
4704 11 Dec 08 martin 687                     {
4704 11 Dec 08 martin 688                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
4704 11 Dec 08 martin 689                     }
4704 11 Dec 08 martin 690                     else
4704 11 Dec 08 martin 691                     {
4704 11 Dec 08 martin 692                       out.write(HTML.encodeTags(n.getName()));
4704 11 Dec 08 martin 693                     }
4704 11 Dec 08 martin 694                     out.write(sharees.hasNext() ? ", " : "");
4704 11 Dec 08 martin 695                   }
4704 11 Dec 08 martin 696                   %>
4704 11 Dec 08 martin 697                 </tbl:cell>
6038 29 Mar 12 nicklas 698                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6038 29 Mar 12 nicklas 699                   <tbl:cell column="xt-columns" />
6038 29 Mar 12 nicklas 700                 </tbl:xt-cells>
4704 11 Dec 08 martin 701               </tbl:row>
4704 11 Dec 08 martin 702               <%
4704 11 Dec 08 martin 703               }
4704 11 Dec 08 martin 704             }
5951 09 Feb 12 nicklas 705           if (numListed == 0)
5951 09 Feb 12 nicklas 706           {
5951 09 Feb 12 nicklas 707             %>
6604 18 Nov 14 nicklas 708             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 709               <div class="messagecontainer note">
5951 09 Feb 12 nicklas 710                 <%=bioplates == null || bioplates.getTotalCount() == 0 ? "No plates were found" : "No plates on this page. Please select another page!" %>
5951 09 Feb 12 nicklas 711               </div>  
5951 09 Feb 12 nicklas 712             </tbl:panel>
5951 09 Feb 12 nicklas 713             <%
5951 09 Feb 12 nicklas 714           }
4704 11 Dec 08 martin 715           %>
5951 09 Feb 12 nicklas 716         </tbl:rows>
4704 11 Dec 08 martin 717       </tbl:data>
4704 11 Dec 08 martin 718     </tbl:table>
5951 09 Feb 12 nicklas 719     </div>
5951 09 Feb 12 nicklas 720
5951 09 Feb 12 nicklas 721     <base:buttongroup subclass="dialogbuttons">
6260 27 Mar 13 nicklas 722       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6260 27 Mar 13 nicklas 723       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6260 27 Mar 13 nicklas 724       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
4704 11 Dec 08 martin 725     </base:buttongroup>
4704 11 Dec 08 martin 726   </base:body>
4704 11 Dec 08 martin 727   </base:page>
4704 11 Dec 08 martin 728   <%
4704 11 Dec 08 martin 729 }
4704 11 Dec 08 martin 730 finally
4704 11 Dec 08 martin 731 {
4704 11 Dec 08 martin 732   if (bioplates != null) bioplates.close();
4704 11 Dec 08 martin 733   if (dc != null) dc.close();
4704 11 Dec 08 martin 734 }
4704 11 Dec 08 martin 735 %>