www/biomaterials/extracts/list_extracts.jsp

Code
Comments
Other
Rev Date Author Line
1872 31 Jan 06 nicklas 1 <%-- $Id$
1872 31 Jan 06 nicklas 2   ------------------------------------------------------------------
4889 06 Apr 09 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell, Martin Svensson
1872 31 Jan 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/
1872 31 Jan 06 nicklas 8
1872 31 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1872 31 Jan 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
1872 31 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1872 31 Jan 06 nicklas 13
1872 31 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1872 31 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1872 31 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1872 31 Jan 06 nicklas 17   GNU General Public License for more details.
1872 31 Jan 06 nicklas 18
1872 31 Jan 06 nicklas 19   You should have received a copy of the GNU General Public License
4510 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1872 31 Jan 06 nicklas 21   ------------------------------------------------------------------
1872 31 Jan 06 nicklas 22
1872 31 Jan 06 nicklas 23   @author Nicklas
1872 31 Jan 06 nicklas 24   @version 2.0
1872 31 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1872 31 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1872 31 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1872 31 Jan 06 nicklas 29   import="net.sf.basedb.core.Item"
1872 31 Jan 06 nicklas 30   import="net.sf.basedb.core.Extract"
2464 04 Jul 06 martin 31   import="net.sf.basedb.core.Sample"
5642 26 May 11 nicklas 32   import="net.sf.basedb.core.PhysicalBioAssay"
5750 20 Sep 11 nicklas 33   import="net.sf.basedb.core.RawBioAssay"
7587 06 Feb 19 nicklas 34   import="net.sf.basedb.core.DerivedBioAssay"
4730 15 Jan 09 martin 35   import="net.sf.basedb.core.BioPlate"
1872 31 Jan 06 nicklas 36   import="net.sf.basedb.core.BioMaterialEvent"
4730 15 Jan 09 martin 37   import="net.sf.basedb.core.BioWell"
6695 28 Jan 15 nicklas 38   import="net.sf.basedb.core.MeasuredBioMaterial"
5648 30 May 11 nicklas 39   import="net.sf.basedb.core.ItemSubtype"
1872 31 Jan 06 nicklas 40   import="net.sf.basedb.core.AnnotationType"
1872 31 Jan 06 nicklas 41   import="net.sf.basedb.core.AnnotationSet"
4560 06 Oct 08 nicklas 42   import="net.sf.basedb.core.Annotation"
4560 06 Oct 08 nicklas 43   import="net.sf.basedb.core.Quantity"
4560 06 Oct 08 nicklas 44   import="net.sf.basedb.core.Unit"
1872 31 Jan 06 nicklas 45   import="net.sf.basedb.core.ItemQuery"
1872 31 Jan 06 nicklas 46   import="net.sf.basedb.core.Include"
1872 31 Jan 06 nicklas 47   import="net.sf.basedb.core.ItemResultIterator"
1872 31 Jan 06 nicklas 48   import="net.sf.basedb.core.ItemResultList"
1872 31 Jan 06 nicklas 49   import="net.sf.basedb.core.ItemContext"
7813 19 May 20 nicklas 50   import="net.sf.basedb.core.ItemList"
3552 06 Jul 07 martin 51   import="net.sf.basedb.core.Nameable"
1872 31 Jan 06 nicklas 52   import="net.sf.basedb.core.Permission"
4730 15 Jan 09 martin 53   import="net.sf.basedb.core.PermissionDeniedException"
4869 31 Mar 09 martin 54   import="net.sf.basedb.core.PlateGeometry"
1872 31 Jan 06 nicklas 55   import="net.sf.basedb.core.PluginDefinition"
1872 31 Jan 06 nicklas 56   import="net.sf.basedb.core.query.Hql"
1872 31 Jan 06 nicklas 57   import="net.sf.basedb.core.query.Restrictions"
1872 31 Jan 06 nicklas 58   import="net.sf.basedb.core.query.Expressions"
2464 04 Jul 06 martin 59   import="net.sf.basedb.core.query.Orders"
1872 31 Jan 06 nicklas 60   import="net.sf.basedb.core.plugin.GuiContext"
1872 31 Jan 06 nicklas 61   import="net.sf.basedb.core.plugin.Plugin"
6541 29 Sep 14 nicklas 62   import="net.sf.basedb.core.snapshot.AnnotationLoaderUtil"
6541 29 Sep 14 nicklas 63   import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
6541 29 Sep 14 nicklas 64   import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
6541 29 Sep 14 nicklas 65   import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
6541 29 Sep 14 nicklas 66   import="net.sf.basedb.core.snapshot.SnapshotManager"
2464 04 Jul 06 martin 67   import="net.sf.basedb.core.Type"
1872 31 Jan 06 nicklas 68   import="net.sf.basedb.util.Enumeration"
3552 06 Jul 07 martin 69   import="net.sf.basedb.util.ShareableUtil"
4560 06 Oct 08 nicklas 70   import="net.sf.basedb.util.units.UnitUtil"
1872 31 Jan 06 nicklas 71   import="net.sf.basedb.clients.web.Base"
1872 31 Jan 06 nicklas 72   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 73   import="net.sf.basedb.clients.web.PermissionUtil"
1872 31 Jan 06 nicklas 74   import="net.sf.basedb.clients.web.util.HTML"
2942 22 Nov 06 nicklas 75   import="net.sf.basedb.util.formatter.Formatter"
4869 31 Mar 09 martin 76   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
7813 19 May 20 nicklas 77   import="net.sf.basedb.util.formatter.NameableFormatter"
7813 19 May 20 nicklas 78   import="net.sf.basedb.clients.web.formatter.LinkedItemFormatter"
2942 22 Nov 06 nicklas 79   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4882 03 Apr 09 nicklas 80   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4882 03 Apr 09 nicklas 81   import="net.sf.basedb.clients.web.extensions.JspContext"
4882 03 Apr 09 nicklas 82   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 83   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4882 03 Apr 09 nicklas 84   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 85   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6038 29 Mar 12 nicklas 86   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
7336 12 Apr 17 nicklas 87   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
4882 03 Apr 09 nicklas 88   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
2753 20 Oct 06 nicklas 89   import="net.sf.basedb.util.Values"
3552 06 Jul 07 martin 90   import="java.util.Iterator"
1872 31 Jan 06 nicklas 91   import="java.util.List"
1872 31 Jan 06 nicklas 92   import="java.util.Map"
2942 22 Nov 06 nicklas 93   import="java.util.Date"
6541 29 Sep 14 nicklas 94   import="java.util.ArrayList"
1872 31 Jan 06 nicklas 95 %>
1872 31 Jan 06 nicklas 96 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1872 31 Jan 06 nicklas 97 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4882 03 Apr 09 nicklas 98 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1872 31 Jan 06 nicklas 99 <%!
1872 31 Jan 06 nicklas 100   private static final Item itemType = Item.EXTRACT;
1872 31 Jan 06 nicklas 101   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
1872 31 Jan 06 nicklas 102 %>
1872 31 Jan 06 nicklas 103 <%
1872 31 Jan 06 nicklas 104 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1872 31 Jan 06 nicklas 105 final String ID = sc.getId();
1872 31 Jan 06 nicklas 106 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
1872 31 Jan 06 nicklas 107 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1872 31 Jan 06 nicklas 108
1872 31 Jan 06 nicklas 109 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
7813 19 May 20 nicklas 110 final Formatter<Nameable> nameableFormatter = mode.hasPropertyLink() ? new LinkedItemFormatter(mode.hasEditLink()) : new NameableFormatter();
1872 31 Jan 06 nicklas 111 final String callback = request.getParameter("callback");
1872 31 Jan 06 nicklas 112 final String title = mode.generateTitle("extract", "extracts");
7954 12 May 21 nicklas 113 final DbControl dc = sc.newDbControl(":List "+itemType);
1872 31 Jan 06 nicklas 114 ItemResultIterator<Extract> extracts = null;
6541 29 Sep 14 nicklas 115 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
7558 07 Jan 19 nicklas 116 List<AnnotationLoaderUtil> bioPlateAnnotationLoaders = new ArrayList<AnnotationLoaderUtil>();
1872 31 Jan 06 nicklas 117 try
1872 31 Jan 06 nicklas 118 {
6690 21 Jan 15 nicklas 119   ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
6541 29 Sep 14 nicklas 120   SnapshotManager manager = new SnapshotManager();
7336 12 Apr 17 nicklas 121   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
6541 29 Sep 14 nicklas 122   for (AnnotationType at : annotationTypeQuery.list(dc))
6541 29 Sep 14 nicklas 123   {
6541 29 Sep 14 nicklas 124     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
6541 29 Sep 14 nicklas 125   }
6690 21 Jan 15 nicklas 126   annotationTypeQuery = Base.getInheritedAnnotationColumns(cc.getSetting("columns"));
6690 21 Jan 15 nicklas 127   for (AnnotationType at : annotationTypeQuery.list(dc))
6690 21 Jan 15 nicklas 128   {
6690 21 Jan 15 nicklas 129     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at, false, true));
6690 21 Jan 15 nicklas 130   }
7558 07 Jan 19 nicklas 131   ItemQuery<AnnotationType> plateAnnotationTypeQuery = Base.getAnnotationTypesQuery(Item.BIOPLATE);
7558 07 Jan 19 nicklas 132   for (AnnotationType at : plateAnnotationTypeQuery.list(dc))
7558 07 Jan 19 nicklas 133   {
7558 07 Jan 19 nicklas 134     bioPlateAnnotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
7558 07 Jan 19 nicklas 135   }
5648 30 May 11 nicklas 136   final ItemQuery<ItemSubtype> subtypesQuery = Base.getSubtypesQuery(itemType);
5642 26 May 11 nicklas 137   final boolean createBioAssayPermission = sc.hasPermission(Permission.CREATE, Item.PHYSICALBIOASSAY);
7587 06 Feb 19 nicklas 138   final boolean createDerivedBioAssayPermission = sc.hasPermission(Permission.CREATE, Item.DERIVEDBIOASSAY);
5750 20 Sep 11 nicklas 139   final boolean createRawBioAssayPermission = sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY);
1872 31 Jan 06 nicklas 140
7587 06 Feb 19 nicklas 141   // Child physical bioassays
5642 26 May 11 nicklas 142   final ItemQuery<PhysicalBioAssay> bioAssayQuery = PhysicalBioAssay.getQuery();
5642 26 May 11 nicklas 143   bioAssayQuery.join(Hql.innerJoin("creationEvent", "ce"));
5642 26 May 11 nicklas 144   bioAssayQuery.join(Hql.innerJoin("ce", "sources", "src"));
5664 23 Jun 11 nicklas 145   bioAssayQuery.restrict(Restrictions.eq(Hql.property("src", "bioMaterial"), Hql.entityParameter("extract", Item.EXTRACT)));
5642 26 May 11 nicklas 146   bioAssayQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 147   bioAssayQuery.setIncludes(cc.getInclude());
5641 25 May 11 nicklas 148
7587 06 Feb 19 nicklas 149   // Child derived bioassays
7587 06 Feb 19 nicklas 150   final ItemQuery<DerivedBioAssay> derivedAssayQuery = DerivedBioAssay.getQuery();
7587 06 Feb 19 nicklas 151   derivedAssayQuery.restrict(Restrictions.eq(Hql.property("extract"), Hql.entityParameter("extract", Item.EXTRACT)));
7587 06 Feb 19 nicklas 152   derivedAssayQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 153   derivedAssayQuery.setIncludes(cc.getInclude());
7587 06 Feb 19 nicklas 154
5750 20 Sep 11 nicklas 155   // Child raw bioassays
5750 20 Sep 11 nicklas 156   final ItemQuery<RawBioAssay> rawAssayQuery = RawBioAssay.getQuery();
5750 20 Sep 11 nicklas 157   rawAssayQuery.restrict(Restrictions.eq(Hql.property("parentExtract"), Hql.entityParameter("extract", Item.EXTRACT)));
5750 20 Sep 11 nicklas 158   rawAssayQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 159   rawAssayQuery.setIncludes(cc.getInclude());
5750 20 Sep 11 nicklas 160
5664 23 Jun 11 nicklas 161   // Child extracts
5567 10 Feb 11 nicklas 162   final ItemQuery<Extract> childExtractsQuery = Extract.getQuery();
5567 10 Feb 11 nicklas 163   childExtractsQuery.join(Hql.innerJoin("creationEvent", "ce"));
5567 10 Feb 11 nicklas 164   childExtractsQuery.join(Hql.innerJoin("ce", "sources", "src"));
5664 23 Jun 11 nicklas 165   childExtractsQuery.restrict(Restrictions.eq(Hql.property("src", "bioMaterial"), Hql.entityParameter("extract", Item.EXTRACT)));
5567 10 Feb 11 nicklas 166   childExtractsQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 167   childExtractsQuery.setIncludes(cc.getInclude());
5567 10 Feb 11 nicklas 168   
5664 23 Jun 11 nicklas 169   // Parent extracts
5567 10 Feb 11 nicklas 170   final ItemQuery<Extract> parentExtractsQuery = Extract.getQuery();
5662 20 Jun 11 nicklas 171   parentExtractsQuery.join(Hql.innerJoin("childCreationEvents", "cce"));
5662 20 Jun 11 nicklas 172   parentExtractsQuery.join(Hql.innerJoin("cce", "event", "evt"));
5567 10 Feb 11 nicklas 173   parentExtractsQuery.restrict(Restrictions.eq(Hql.alias("evt"), Hql.entityParameter("creationEvent", Item.BIOMATERIALEVENT)));
5567 10 Feb 11 nicklas 174   parentExtractsQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 175   parentExtractsQuery.setIncludes(cc.getInclude());
5567 10 Feb 11 nicklas 176   
7813 19 May 20 nicklas 177   // List membership
7813 19 May 20 nicklas 178   final ItemQuery<ItemList> listQuery = ItemList.getQuery();
7813 19 May 20 nicklas 179   listQuery.setIncludes(cc.getInclude());
7813 19 May 20 nicklas 180   listQuery.join(Hql.innerJoin("members", "m"));
7813 19 May 20 nicklas 181   listQuery.restrict(Restrictions.eq(Hql.property("memberType"), Expressions.integer(itemType.getValue())));
7813 19 May 20 nicklas 182   listQuery.restrict(Restrictions.eq(Hql.alias("m"), Expressions.parameter("itemId", Type.INT)));
7813 19 May 20 nicklas 183   listQuery.order(Orders.asc(Hql.property("name")));
7813 19 May 20 nicklas 184
4888 06 Apr 09 nicklas 185   Unit microGram = UnitUtil.getUnit(dc, Quantity.MASS, "µg");
1872 31 Jan 06 nicklas 186   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 187   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2029 20 Feb 06 nicklas 188   try
2029 20 Feb 06 nicklas 189   {
7914 23 Feb 21 nicklas 190     final ItemQuery<Extract> query = Base.getConfiguredQuery(dc, cc, jspContext, true, Extract.getQuery(), mode);
2029 20 Feb 06 nicklas 191     extracts = query.iterate(dc);
2029 20 Feb 06 nicklas 192   }
2029 20 Feb 06 nicklas 193   catch (Throwable t)
2029 20 Feb 06 nicklas 194   {
2029 20 Feb 06 nicklas 195     cc.setMessage(t.getMessage());
4560 06 Oct 08 nicklas 196     t.printStackTrace();
2029 20 Feb 06 nicklas 197   }
1872 31 Jan 06 nicklas 198   int numListed = 0;
2942 22 Nov 06 nicklas 199   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
6268 11 Apr 13 nicklas 200   Formatter<Number> numericFormatter = FormatterFactory.getNumberFormatter(sc);
4869 31 Mar 09 martin 201   WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
4869 31 Mar 09 martin 202   WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
4869 31 Mar 09 martin 203   
4869 31 Mar 09 martin 204   Enumeration<String, String> wellRows = new Enumeration<String, String>();
4869 31 Mar 09 martin 205   ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();  
4869 31 Mar 09 martin 206   geometryQuery.order(Orders.desc(Hql.property("rows")));
4869 31 Mar 09 martin 207   ItemResultIterator<PlateGeometry> result = geometryQuery.iterate(dc);
4869 31 Mar 09 martin 208   int maxRows = result.next().getRows();
6497 26 Jun 14 nicklas 209   for (int r = 0; r < maxRows && r < 256; r++)
4869 31 Mar 09 martin 210   {
4869 31 Mar 09 martin 211     wellRows.add(Integer.toString(r), rowFormatter.format(r));
4869 31 Mar 09 martin 212   }
6497 26 Jun 14 nicklas 213
6497 26 Jun 14 nicklas 214   Enumeration<String, String> wellColumns = new Enumeration<String, String>();
6497 26 Jun 14 nicklas 215   ItemQuery<PlateGeometry> columnsGeometryQuery = PlateGeometry.getQuery();  
6497 26 Jun 14 nicklas 216   columnsGeometryQuery.order(Orders.desc(Hql.property("columns")));
6497 26 Jun 14 nicklas 217   ItemResultIterator<PlateGeometry> columnsResult = columnsGeometryQuery.iterate(dc);
6497 26 Jun 14 nicklas 218   int maxColumns = columnsResult.next().getColumns();
6497 26 Jun 14 nicklas 219   for (int c = 0; c < maxColumns && c < 256; c++)
6497 26 Jun 14 nicklas 220   {
6497 26 Jun 14 nicklas 221     wellColumns.add(Integer.toString(c), columnFormatter.format(c));
6497 26 Jun 14 nicklas 222   }
6497 26 Jun 14 nicklas 223
7604 25 Feb 19 nicklas 224   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 225   ExtensionsInvoker<ListColumnAction<Extract,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1872 31 Jan 06 nicklas 226   %>
6260 27 Mar 13 nicklas 227   <base:page title="<%=title==null ? "Extracts" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6260 27 Mar 13 nicklas 228   <base:head scripts="table.js,~extracts.js" styles="table.css,toolbar.css">
4882 03 Apr 09 nicklas 229     <ext:scripts context="<%=jspContext%>" />
4882 03 Apr 09 nicklas 230     <ext:stylesheets context="<%=jspContext%>" />
1872 31 Jan 06 nicklas 231   </base:head>
1872 31 Jan 06 nicklas 232   
1872 31 Jan 06 nicklas 233   <base:body>
5948 08 Feb 12 nicklas 234   <h1><%=title==null ? "Extracts" : title%></h1>
5948 08 Feb 12 nicklas 235   <div class="content">
1872 31 Jan 06 nicklas 236     <tbl:table 
1872 31 Jan 06 nicklas 237       id="extracts" 
1872 31 Jan 06 nicklas 238       columns="<%=cc.getSetting("columns")%>"
1872 31 Jan 06 nicklas 239       sortby="<%=cc.getSortProperty()%>" 
1872 31 Jan 06 nicklas 240       direction="<%=cc.getSortDirection()%>"
1872 31 Jan 06 nicklas 241       action="index.jsp"
1872 31 Jan 06 nicklas 242       sc="<%=sc%>"
1872 31 Jan 06 nicklas 243       item="<%=itemType%>"
6701 30 Jan 15 nicklas 244       filterrows="<%=cc.getFilterRows()%>"
5948 08 Feb 12 nicklas 245       subclass="fulltable"
6690 21 Jan 15 nicklas 246       data-inherited-annotations="true"
7842 01 Sep 20 nicklas 247       data-relateditem-columns="true"
7982 14 Jun 21 nicklas 248       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
1872 31 Jan 06 nicklas 249       >
1872 31 Jan 06 nicklas 250       <tbl:hidden 
1872 31 Jan 06 nicklas 251         name="mode" 
1872 31 Jan 06 nicklas 252         value="<%=mode.getName()%>" 
1872 31 Jan 06 nicklas 253       />
1872 31 Jan 06 nicklas 254       <tbl:hidden 
1872 31 Jan 06 nicklas 255         name="callback" 
1872 31 Jan 06 nicklas 256         value="<%=callback%>" 
1872 31 Jan 06 nicklas 257         skip="<%=callback == null%>" 
1872 31 Jan 06 nicklas 258       />
1872 31 Jan 06 nicklas 259       <tbl:columndef 
1872 31 Jan 06 nicklas 260         id="name"
1872 31 Jan 06 nicklas 261         property="name"
1872 31 Jan 06 nicklas 262         datatype="string"
1872 31 Jan 06 nicklas 263         title="Name"
1872 31 Jan 06 nicklas 264         sortable="true" 
1872 31 Jan 06 nicklas 265         filterable="true"
1872 31 Jan 06 nicklas 266         exportable="true"
1872 31 Jan 06 nicklas 267         show="always" 
1872 31 Jan 06 nicklas 268       />
5648 30 May 11 nicklas 269       <tbl:columndef 
5648 30 May 11 nicklas 270         id="itemSubtype"
5648 30 May 11 nicklas 271         property="itemSubtype"
5648 30 May 11 nicklas 272         sortproperty="itemSubtype.name"
5666 23 Jun 11 nicklas 273         exportproperty="itemSubtype.name:string"
5648 30 May 11 nicklas 274         datatype="int"
5648 30 May 11 nicklas 275         enumeration="<%=Enumeration.fromItems(subtypesQuery.list(dc), "-none-")%>"
5648 30 May 11 nicklas 276         title="Type"
5648 30 May 11 nicklas 277         sortable="true" 
5648 30 May 11 nicklas 278         filterable="true"
5648 30 May 11 nicklas 279         exportable="true"
5648 30 May 11 nicklas 280       />
4331 11 Jun 08 martin 281       <tbl:columndef
4331 11 Jun 08 martin 282         id="id"
4387 11 Aug 08 nicklas 283         clazz="uniquecol"
4331 11 Jun 08 martin 284         property="id"
4331 11 Jun 08 martin 285         datatype="int"
4331 11 Jun 08 martin 286         title="ID"
4331 11 Jun 08 martin 287         sortable="true"
4331 11 Jun 08 martin 288         filterable="true"
4331 11 Jun 08 martin 289         exportable="true"
4331 11 Jun 08 martin 290       />
1872 31 Jan 06 nicklas 291       <tbl:columndef 
1872 31 Jan 06 nicklas 292         id="externalId"
1872 31 Jan 06 nicklas 293         property="externalId"
1872 31 Jan 06 nicklas 294         datatype="string"
1872 31 Jan 06 nicklas 295         title="External id"
1872 31 Jan 06 nicklas 296         sortable="true" 
1872 31 Jan 06 nicklas 297         filterable="true"
1872 31 Jan 06 nicklas 298         exportable="true"
1872 31 Jan 06 nicklas 299       />
1872 31 Jan 06 nicklas 300       <tbl:columndef 
1872 31 Jan 06 nicklas 301         id="originalQuantity"
1872 31 Jan 06 nicklas 302         property="originalQuantity"
1872 31 Jan 06 nicklas 303         datatype="float"
4888 06 Apr 09 nicklas 304         title="Original quantity (µg)"
1872 31 Jan 06 nicklas 305         sortable="true" 
1872 31 Jan 06 nicklas 306         filterable="true"
1872 31 Jan 06 nicklas 307         exportable="true"
4560 06 Oct 08 nicklas 308         unit="<%=microGram%>"
6268 11 Apr 13 nicklas 309         formatter="<%=numericFormatter%>"
1872 31 Jan 06 nicklas 310       />
1872 31 Jan 06 nicklas 311       <tbl:columndef 
1872 31 Jan 06 nicklas 312         id="remainingQuantity"
1872 31 Jan 06 nicklas 313         property="remainingQuantity"
1872 31 Jan 06 nicklas 314         datatype="float"
4888 06 Apr 09 nicklas 315         title="Remaining quantity (µg)"
1872 31 Jan 06 nicklas 316         sortable="true" 
1872 31 Jan 06 nicklas 317         filterable="true"
1872 31 Jan 06 nicklas 318         exportable="true"
4560 06 Oct 08 nicklas 319         unit="<%=microGram%>"
6268 11 Apr 13 nicklas 320         formatter="<%=numericFormatter%>"
1872 31 Jan 06 nicklas 321       />
1872 31 Jan 06 nicklas 322       <tbl:columndef 
5667 23 Jun 11 nicklas 323         id="tag"
5667 23 Jun 11 nicklas 324         property="tag.name"
5667 23 Jun 11 nicklas 325         datatype="string"
5667 23 Jun 11 nicklas 326         title="Tag"
5667 23 Jun 11 nicklas 327         sortable="true" 
5667 23 Jun 11 nicklas 328         filterable="true"
5667 23 Jun 11 nicklas 329         exportable="true"
5667 23 Jun 11 nicklas 330       />
5667 23 Jun 11 nicklas 331       <tbl:columndef 
1872 31 Jan 06 nicklas 332         id="protocol"
1872 31 Jan 06 nicklas 333         property="creationEvent.protocol"
1872 31 Jan 06 nicklas 334         sortproperty="creationEvent.protocol.name"
1872 31 Jan 06 nicklas 335         filterproperty="creationEvent.protocol.name"
1872 31 Jan 06 nicklas 336         exportproperty="creationEvent.protocol.name"
1872 31 Jan 06 nicklas 337         datatype="string"
1872 31 Jan 06 nicklas 338         title="Protocol"
1872 31 Jan 06 nicklas 339         sortable="true" 
1872 31 Jan 06 nicklas 340         filterable="true"
1872 31 Jan 06 nicklas 341         exportable="true"
1872 31 Jan 06 nicklas 342       />
1872 31 Jan 06 nicklas 343       <tbl:columndef 
6992 03 Nov 15 nicklas 344         id="kit"
6992 03 Nov 15 nicklas 345         property="creationEvent.kit"
6992 03 Nov 15 nicklas 346         sortproperty="creationEvent.kit.name"
6992 03 Nov 15 nicklas 347         filterproperty="creationEvent.kit.name"
6992 03 Nov 15 nicklas 348         exportproperty="creationEvent.kit.name"
6992 03 Nov 15 nicklas 349         datatype="string"
6992 03 Nov 15 nicklas 350         title="Kit"
6992 03 Nov 15 nicklas 351         sortable="true" 
6992 03 Nov 15 nicklas 352         filterable="true"
6992 03 Nov 15 nicklas 353         exportable="true"
6992 03 Nov 15 nicklas 354       />
6992 03 Nov 15 nicklas 355       <tbl:columndef 
1872 31 Jan 06 nicklas 356         id="eventDate"
1872 31 Jan 06 nicklas 357         property="creationEvent.eventDate"
1872 31 Jan 06 nicklas 358         datatype="date"
1872 31 Jan 06 nicklas 359         title="Created"
1872 31 Jan 06 nicklas 360         sortable="true" 
1872 31 Jan 06 nicklas 361         filterable="true"
1872 31 Jan 06 nicklas 362         exportable="true"
2942 22 Nov 06 nicklas 363         formatter="<%=dateFormatter%>"
1872 31 Jan 06 nicklas 364       />
1872 31 Jan 06 nicklas 365       <tbl:columndef 
1872 31 Jan 06 nicklas 366         id="entryDate"
1872 31 Jan 06 nicklas 367         property="creationEvent.entryDate"
1872 31 Jan 06 nicklas 368         datatype="date"
1872 31 Jan 06 nicklas 369         title="Registered"
1872 31 Jan 06 nicklas 370         sortable="true" 
1872 31 Jan 06 nicklas 371         filterable="true"
1872 31 Jan 06 nicklas 372         exportable="true"
2942 22 Nov 06 nicklas 373         formatter="<%=dateFormatter%>"
1872 31 Jan 06 nicklas 374       />
5664 23 Jun 11 nicklas 375       <%
5664 23 Jun 11 nicklas 376       Enumeration<String, String> parentTypes = new Enumeration<String, String>();
5667 23 Jun 11 nicklas 377       parentTypes.add("", "-none-");
5664 23 Jun 11 nicklas 378       parentTypes.add(Integer.toString(Item.SAMPLE.getValue()), Item.SAMPLE.toString());
5664 23 Jun 11 nicklas 379       parentTypes.add(Integer.toString(Item.EXTRACT.getValue()), Item.EXTRACT.toString());
5664 23 Jun 11 nicklas 380       %>
2464 04 Jul 06 martin 381       <tbl:columndef
5664 23 Jun 11 nicklas 382         id="parentType"
5664 23 Jun 11 nicklas 383         title="Parent type"
5664 23 Jun 11 nicklas 384         property="parentType"
5664 23 Jun 11 nicklas 385         enumeration="<%=parentTypes%>"
5664 23 Jun 11 nicklas 386         datatype="int"
5567 10 Feb 11 nicklas 387         filterable="true"
5567 10 Feb 11 nicklas 388         exportable="true"
5664 23 Jun 11 nicklas 389         sortable="true"
5567 10 Feb 11 nicklas 390       />
5567 10 Feb 11 nicklas 391       <tbl:columndef
2464 04 Jul 06 martin 392         id="parents"
5664 23 Jun 11 nicklas 393         title="Parent items"
5662 20 Jun 11 nicklas 394         property="&creationEvent.sources(bioMaterial.name)"
5664 23 Jun 11 nicklas 395         sortproperty="parent.name"
4613 29 Oct 08 nicklas 396         datatype="string"
4613 29 Oct 08 nicklas 397         filterable="true"
4900 21 Apr 09 martin 398         exportable="true"
5664 23 Jun 11 nicklas 399         sortable="true"
2464 04 Jul 06 martin 400       />
2464 04 Jul 06 martin 401       <tbl:columndef
5567 10 Feb 11 nicklas 402         id="children"
5567 10 Feb 11 nicklas 403         title="Child extracts"
5662 20 Jun 11 nicklas 404         property="&childCreationEvents(event.bioMaterial.name)"
5567 10 Feb 11 nicklas 405         datatype="string"
5567 10 Feb 11 nicklas 406         filterable="true"
5567 10 Feb 11 nicklas 407         exportable="true"
5567 10 Feb 11 nicklas 408       />
5567 10 Feb 11 nicklas 409       <tbl:columndef
5642 26 May 11 nicklas 410         id="physicalBioAssays"
5642 26 May 11 nicklas 411         title="Physical bioassays"
5662 20 Jun 11 nicklas 412         property="&childCreationEvents(event.physicalBioAssay.name)"
4613 29 Oct 08 nicklas 413         datatype="string"
4613 29 Oct 08 nicklas 414         filterable="true"
4899 21 Apr 09 martin 415         exportable="true"
2464 04 Jul 06 martin 416       />
5750 20 Sep 11 nicklas 417       <tbl:columndef
7587 06 Feb 19 nicklas 418         id="derivedBioAssays"
7587 06 Feb 19 nicklas 419         title="Derived bioassays"
7587 06 Feb 19 nicklas 420         property="&derivedBioAssays(name)"
7587 06 Feb 19 nicklas 421         datatype="string"
7587 06 Feb 19 nicklas 422         filterable="true"
7587 06 Feb 19 nicklas 423         exportable="true"
7587 06 Feb 19 nicklas 424       />
7587 06 Feb 19 nicklas 425       <tbl:columndef
5750 20 Sep 11 nicklas 426         id="rawBioAssays"
5750 20 Sep 11 nicklas 427         title="Raw bioassays"
5750 20 Sep 11 nicklas 428         property="&rawBioAssays(name)"
5750 20 Sep 11 nicklas 429         datatype="string"
5750 20 Sep 11 nicklas 430         filterable="true"
5750 20 Sep 11 nicklas 431         exportable="true"
5750 20 Sep 11 nicklas 432       />
1872 31 Jan 06 nicklas 433       <tbl:columndef 
4730 15 Jan 09 martin 434         id="bioPlate"
4730 15 Jan 09 martin 435         property="bioWell.bioPlate.name"
4730 15 Jan 09 martin 436         sortproperty="bioWell.bioPlate.name"
4730 15 Jan 09 martin 437         filterproperty="bioWell.bioPlate.name"
4730 15 Jan 09 martin 438         exportproperty="bioWell.bioPlate.name"
4730 15 Jan 09 martin 439         datatype="string"
4730 15 Jan 09 martin 440         title="Bioplate"
4730 15 Jan 09 martin 441         sortable="true" 
4730 15 Jan 09 martin 442         filterable="true"
4730 15 Jan 09 martin 443         exportable="true"
4730 15 Jan 09 martin 444       />
4730 15 Jan 09 martin 445       <tbl:columndef 
4734 23 Jan 09 martin 446         id="bioWellRow"
4730 15 Jan 09 martin 447         property="bioWell.row"
4730 15 Jan 09 martin 448         sortproperty="bioWell.row"
4734 23 Jan 09 martin 449         datatype="int"
4734 23 Jan 09 martin 450         title="Biowell row"   
4730 15 Jan 09 martin 451         filterable="true"
4869 31 Mar 09 martin 452         enumeration="<%=wellRows%>"
4730 15 Jan 09 martin 453         exportable="true"
4734 23 Jan 09 martin 454         sortable="true"
4869 31 Mar 09 martin 455         formatter="<%=rowFormatter%>"
4734 23 Jan 09 martin 456       />
4730 15 Jan 09 martin 457       <tbl:columndef 
4734 23 Jan 09 martin 458         id="bioWellColumn"
4734 23 Jan 09 martin 459         property="bioWell.column"
4734 23 Jan 09 martin 460         sortproperty="bioWell.column"
4734 23 Jan 09 martin 461         datatype="int"
4734 23 Jan 09 martin 462         title="Biowell column"   
4734 23 Jan 09 martin 463         filterable="true"
6497 26 Jun 14 nicklas 464         enumeration="<%=wellColumns%>"
4734 23 Jan 09 martin 465         exportable="true"
4734 23 Jan 09 martin 466         sortable="true"
4869 31 Mar 09 martin 467         formatter="<%=columnFormatter%>"
4734 23 Jan 09 martin 468       />    
4734 23 Jan 09 martin 469       <tbl:columndef 
1872 31 Jan 06 nicklas 470         id="owner"
1872 31 Jan 06 nicklas 471         property="owner.name"
1872 31 Jan 06 nicklas 472         datatype="string"
1872 31 Jan 06 nicklas 473         title="Owner"
1872 31 Jan 06 nicklas 474         sortable="true" 
1872 31 Jan 06 nicklas 475         filterable="true"
1872 31 Jan 06 nicklas 476         exportable="true"
1872 31 Jan 06 nicklas 477       />
1872 31 Jan 06 nicklas 478       <tbl:columndef 
1872 31 Jan 06 nicklas 479         id="description"
1872 31 Jan 06 nicklas 480         property="description"
1872 31 Jan 06 nicklas 481         datatype="string"
1872 31 Jan 06 nicklas 482         title="Description" 
1872 31 Jan 06 nicklas 483         sortable="true" 
1872 31 Jan 06 nicklas 484         filterable="true" 
1872 31 Jan 06 nicklas 485         exportable="true"
2401 21 Jun 06 martin 486       />      
4728 14 Jan 09 nicklas 487       <tbl:columndef
6756 20 Feb 15 nicklas 488         id="itemList"
6756 20 Feb 15 nicklas 489         property="§itemLists"
4728 14 Jan 09 nicklas 490         datatype="int"
6756 20 Feb 15 nicklas 491         title="Item list"
4728 14 Jan 09 nicklas 492         filterable="true"
6756 20 Feb 15 nicklas 493         enumeration="<%=Base.getItemListsEnum(dc, itemType, cc.getInclude())%>"
4728 14 Jan 09 nicklas 494       />
1872 31 Jan 06 nicklas 495       <%
6541 29 Sep 14 nicklas 496       for (AnnotationLoaderUtil loader : annotationLoaders)
1872 31 Jan 06 nicklas 497       {
6541 29 Sep 14 nicklas 498         AnnotationType at = loader.getAnnotationType();
1872 31 Jan 06 nicklas 499         Enumeration<String, String> annotationEnum = null;
7605 26 Feb 19 nicklas 500         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
1872 31 Jan 06 nicklas 501         if (at.isEnumeration())
1872 31 Jan 06 nicklas 502         {
1872 31 Jan 06 nicklas 503           annotationEnum = new Enumeration<String, String>();
6784 18 Mar 15 nicklas 504           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
1872 31 Jan 06 nicklas 505           List<?> values = at.getValues();
1872 31 Jan 06 nicklas 506           for (Object value : values)
1872 31 Jan 06 nicklas 507           {
2942 22 Nov 06 nicklas 508             String encoded = formatter.format(value);
1872 31 Jan 06 nicklas 509             annotationEnum.add(encoded, encoded);
1872 31 Jan 06 nicklas 510           }
1872 31 Jan 06 nicklas 511         }
1872 31 Jan 06 nicklas 512         %>
1872 31 Jan 06 nicklas 513         <tbl:columndef 
6690 21 Jan 15 nicklas 514           id="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+at.getId()%>"
6690 21 Jan 15 nicklas 515           title="<%=HTML.encodeTags(at.getName())+(loader.isSearchingInheritedAnnotations() ? " [I]" : " [A]")%>" 
6690 21 Jan 15 nicklas 516           property="<%=(loader.isSearchingInheritedAnnotations() ? "##" : "#")+at.getId()%>"
1872 31 Jan 06 nicklas 517           annotation="true"
1872 31 Jan 06 nicklas 518           datatype="<%=at.getValueType().getStringValue()%>"
1872 31 Jan 06 nicklas 519           enumeration="<%=annotationEnum%>"
5674 27 Jun 11 nicklas 520           smartenum="<%=at.getDisplayAsList() %>"
6690 21 Jan 15 nicklas 521           sortable="<%=at.getMultiplicity() == 1 && !loader.isSearchingInheritedAnnotations()%>" 
1872 31 Jan 06 nicklas 522           filterable="true" 
1872 31 Jan 06 nicklas 523           exportable="true"
2942 22 Nov 06 nicklas 524           formatter="<%=formatter%>"
4560 06 Oct 08 nicklas 525           unit="<%=at.getDefaultUnit()%>"
1872 31 Jan 06 nicklas 526         />
1872 31 Jan 06 nicklas 527         <%
1872 31 Jan 06 nicklas 528       }
7558 07 Jan 19 nicklas 529       for (AnnotationLoaderUtil loader : bioPlateAnnotationLoaders)
7558 07 Jan 19 nicklas 530       {
7558 07 Jan 19 nicklas 531         AnnotationType at = loader.getAnnotationType();
7558 07 Jan 19 nicklas 532         Enumeration<String, String> annotationEnum = null;
7605 26 Feb 19 nicklas 533         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
7558 07 Jan 19 nicklas 534         if (at.isEnumeration())
7558 07 Jan 19 nicklas 535         {
7558 07 Jan 19 nicklas 536           annotationEnum = new Enumeration<String, String>();
7558 07 Jan 19 nicklas 537           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
7558 07 Jan 19 nicklas 538           List<?> values = at.getValues();
7558 07 Jan 19 nicklas 539           for (Object value : values)
7558 07 Jan 19 nicklas 540           {
7558 07 Jan 19 nicklas 541             String encoded = formatter.format(value);
7558 07 Jan 19 nicklas 542             annotationEnum.add(encoded, encoded);
7558 07 Jan 19 nicklas 543           }
7558 07 Jan 19 nicklas 544         }
7558 07 Jan 19 nicklas 545         %>
7558 07 Jan 19 nicklas 546         <tbl:columndef 
7558 07 Jan 19 nicklas 547           id="<%="pa"+at.getId()%>"
7558 07 Jan 19 nicklas 548           title="<%=HTML.encodeTags(at.getName())+ " [P]"%>" 
7558 07 Jan 19 nicklas 549           property="<%="#(bioWell.bioPlate)"+at.getId()%>"
7558 07 Jan 19 nicklas 550           annotation="true"
7558 07 Jan 19 nicklas 551           datatype="<%=at.getValueType().getStringValue()%>"
7558 07 Jan 19 nicklas 552           enumeration="<%=annotationEnum%>"
7558 07 Jan 19 nicklas 553           smartenum="<%=at.getDisplayAsList() %>"
7558 07 Jan 19 nicklas 554           sortable="<%=at.getMultiplicity() == 1%>" 
7558 07 Jan 19 nicklas 555           filterable="true" 
7558 07 Jan 19 nicklas 556           exportable="true"
7558 07 Jan 19 nicklas 557           formatter="<%=formatter%>"
7558 07 Jan 19 nicklas 558           unit="<%=at.getDefaultUnit()%>"
7558 07 Jan 19 nicklas 559         />
7558 07 Jan 19 nicklas 560         <%
7558 07 Jan 19 nicklas 561       }
1872 31 Jan 06 nicklas 562       %>
2401 21 Jun 06 martin 563       <tbl:columndef
2401 21 Jun 06 martin 564         id="permission"
2401 21 Jun 06 martin 565         title="Permission"
2401 21 Jun 06 martin 566       />
5165 28 Oct 09 nicklas 567       <tbl:columndef
5165 28 Oct 09 nicklas 568         id="sharedTo"
3552 06 Jul 07 martin 569         title="Shared to"
5165 28 Oct 09 nicklas 570         filterable="true"
5165 28 Oct 09 nicklas 571         filterproperty="!sharedTo.name"
5165 28 Oct 09 nicklas 572         datatype="string"
3552 06 Jul 07 martin 573       />
6038 29 Mar 12 nicklas 574       <tbl:columndef 
6038 29 Mar 12 nicklas 575         id="xt-columns" 
6038 29 Mar 12 nicklas 576         extensions="<%=columnsInvoker%>" 
6038 29 Mar 12 nicklas 577         jspcontext="<%=jspContext%>" 
6038 29 Mar 12 nicklas 578       />
6604 18 Nov 14 nicklas 579     <div class="panelgroup bg-filled-50 bottomborder">
1872 31 Jan 06 nicklas 580       <tbl:toolbar
1872 31 Jan 06 nicklas 581         visible="<%=mode.hasToolbar()%>"
5951 09 Feb 12 nicklas 582         subclass="bottomborder"
1872 31 Jan 06 nicklas 583         >
1872 31 Jan 06 nicklas 584         <tbl:button 
6260 27 Mar 13 nicklas 585           id="btnNewItem"
5942 01 Feb 12 nicklas 586           disabled="<%=!createPermission%>" 
5945 02 Feb 12 nicklas 587           image="new.png" 
1872 31 Jan 06 nicklas 588           title="New&hellip;" 
1872 31 Jan 06 nicklas 589           tooltip="<%=createPermission ? "Create new extract" : "You do not have permission to create extracts"%>" 
1872 31 Jan 06 nicklas 590         />
1872 31 Jan 06 nicklas 591         <tbl:button 
6260 27 Mar 13 nicklas 592           id="btnNewPooledItem"
5942 01 Feb 12 nicklas 593           disabled="<%=!createPermission%>" 
5946 03 Feb 12 nicklas 594           image="new_pooled.png" 
2472 31 Jul 06 martin 595           title="Pool&hellip;" 
2472 31 Jul 06 martin 596           tooltip="<%=createPermission ? "Create new pooled extract" : "You do not have permission to create extracts"%>" 
2472 31 Jul 06 martin 597         />
2472 31 Jul 06 martin 598         <tbl:button 
6260 27 Mar 13 nicklas 599           id="btnNewPhysicalBioAssay"
5642 26 May 11 nicklas 600           disabled="<%=createBioAssayPermission ? false : true%>" 
5945 02 Feb 12 nicklas 601           image="add.png" 
5642 26 May 11 nicklas 602           title="New physical bioassay&hellip;" 
5642 26 May 11 nicklas 603           tooltip="<%=createBioAssayPermission ? "Create new bioassay with the selected extracts" : "You do not have permission to create bioassays"%>" 
5641 25 May 11 nicklas 604         />
5641 25 May 11 nicklas 605         <tbl:button 
6260 27 Mar 13 nicklas 606           id="btnDeleteItems"
5946 03 Feb 12 nicklas 607           image="delete.png"
1872 31 Jan 06 nicklas 608           title="Delete" 
1872 31 Jan 06 nicklas 609           tooltip="Delete the selected items" 
1872 31 Jan 06 nicklas 610         />
1872 31 Jan 06 nicklas 611         <tbl:button 
6260 27 Mar 13 nicklas 612           id="btnRestoreItems"
5946 03 Feb 12 nicklas 613           image="restore.png"
1872 31 Jan 06 nicklas 614           title="Restore" 
1872 31 Jan 06 nicklas 615           tooltip="Restore the selected (deleted) items"
1872 31 Jan 06 nicklas 616         />
1872 31 Jan 06 nicklas 617         <tbl:button 
6260 27 Mar 13 nicklas 618           id="btnShareItems"
5945 02 Feb 12 nicklas 619           image="share.png"
1872 31 Jan 06 nicklas 620           title="Share&hellip;" 
1872 31 Jan 06 nicklas 621           tooltip="Share the selected items"
1872 31 Jan 06 nicklas 622         />
1872 31 Jan 06 nicklas 623         <tbl:button 
6260 27 Mar 13 nicklas 624           id="btnSetOwner"
2917 15 Nov 06 nicklas 625           image="take_ownership.png"
4578 13 Oct 08 martin 626           title="Set owner&hellip;"
4578 13 Oct 08 martin 627           tooltip="Change owner of the selected items"
2917 15 Nov 06 nicklas 628         />
2917 15 Nov 06 nicklas 629         <tbl:button 
6260 27 Mar 13 nicklas 630           id="btnColumns"
5945 02 Feb 12 nicklas 631           image="columns.png" 
1872 31 Jan 06 nicklas 632           title="Columns&hellip;" 
1872 31 Jan 06 nicklas 633           tooltip="Show, hide and re-order columns" 
1872 31 Jan 06 nicklas 634         />
4712 19 Dec 08 nicklas 635         <tbl:button
6756 20 Feb 15 nicklas 636           id="btnNewItemList"
4712 19 Dec 08 nicklas 637           image="add.png"
6756 20 Feb 15 nicklas 638           title="New item list&hellip;"
6756 20 Feb 15 nicklas 639           tooltip="Create a new item list from matching extracts"
6756 20 Feb 15 nicklas 640           visible="<%=sc.hasPermission(Permission.CREATE, Item.ITEMLIST)%>"
4712 19 Dec 08 nicklas 641         />
7813 19 May 20 nicklas 642         <tbl:button
7813 19 May 20 nicklas 643           id="btnAddToItemList"
7813 19 May 20 nicklas 644           image="add.png"
7813 19 May 20 nicklas 645           title="Add to item list&hellip;"
7813 19 May 20 nicklas 646           tooltip="Add extracts to an existing item list"
7813 19 May 20 nicklas 647         />
1872 31 Jan 06 nicklas 648         <tbl:button 
6260 27 Mar 13 nicklas 649           id="btnPlaceOnPlate"
5527 13 Dec 10 nicklas 650           image="place_on_plate.png" 
5527 13 Dec 10 nicklas 651           title="Place on plate&hellip;" 
5527 13 Dec 10 nicklas 652           tooltip="Place the selected/matching extracts on a bioplate" 
5527 13 Dec 10 nicklas 653         />
6695 28 Jan 15 nicklas 654         <tbl:button
6695 28 Jan 15 nicklas 655           id="btnInheritAnnotations"
6695 28 Jan 15 nicklas 656           image="inherit.png"
6695 28 Jan 15 nicklas 657           title="Inherit annotations&hellip;"
6695 28 Jan 15 nicklas 658           tooltip="Batch inherit annotations from parent items"
6695 28 Jan 15 nicklas 659         />
5527 13 Dec 10 nicklas 660         <tbl:button 
6260 27 Mar 13 nicklas 661           id="btnImport"
6260 27 Mar 13 nicklas 662           data-plugin-type="IMPORT"
5946 03 Feb 12 nicklas 663           image="import.png" 
1872 31 Jan 06 nicklas 664           title="Import&hellip;" 
1872 31 Jan 06 nicklas 665           tooltip="Import data" 
1872 31 Jan 06 nicklas 666           visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
1872 31 Jan 06 nicklas 667         />
1872 31 Jan 06 nicklas 668         <tbl:button 
6260 27 Mar 13 nicklas 669           id="btnExport"
6260 27 Mar 13 nicklas 670           data-plugin-type="EXPORT"
5946 03 Feb 12 nicklas 671           image="export.png" 
1872 31 Jan 06 nicklas 672           title="Export&hellip;" 
1872 31 Jan 06 nicklas 673           tooltip="Export data" 
1872 31 Jan 06 nicklas 674           visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
1872 31 Jan 06 nicklas 675         />
1872 31 Jan 06 nicklas 676         <tbl:button 
6260 27 Mar 13 nicklas 677           id="btnRunPlugin"
6260 27 Mar 13 nicklas 678           data-plugin-type="OTHER"
5945 02 Feb 12 nicklas 679           image="runplugin.png" 
1872 31 Jan 06 nicklas 680           title="Run plugin&hellip;" 
1872 31 Jan 06 nicklas 681           tooltip="Run a plugin" 
1872 31 Jan 06 nicklas 682           visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
1872 31 Jan 06 nicklas 683         />
4882 03 Apr 09 nicklas 684         <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 685           wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
1872 31 Jan 06 nicklas 686       </tbl:toolbar>
5948 08 Feb 12 nicklas 687       <tbl:panel>
6182 23 Oct 12 nicklas 688           <tbl:presetselector />
5948 08 Feb 12 nicklas 689         <tbl:navigator
5948 08 Feb 12 nicklas 690           page="<%=cc.getPage()%>" 
5948 08 Feb 12 nicklas 691           rowsperpage="<%=cc.getRowsPerPage()%>" 
5948 08 Feb 12 nicklas 692           totalrows="<%=extracts == null ? 0 : extracts.getTotalCount()%>" 
5948 08 Feb 12 nicklas 693           visible="<%=mode.hasNavigator()%>"
5948 08 Feb 12 nicklas 694         />
5948 08 Feb 12 nicklas 695       </tbl:panel>
5948 08 Feb 12 nicklas 696     </div>
5948 08 Feb 12 nicklas 697       <tbl:data>
5948 08 Feb 12 nicklas 698         <tbl:headers>
5948 08 Feb 12 nicklas 699           <tbl:headerrow>
7943 04 May 21 nicklas 700             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 701             <tbl:columnheaders />
5948 08 Feb 12 nicklas 702           </tbl:headerrow>
6701 30 Jan 15 nicklas 703           <%
6701 30 Jan 15 nicklas 704           int numFilters = cc.getNumPropertyFilters();
6701 30 Jan 15 nicklas 705           int numRows = cc.getFilterRows();
6701 30 Jan 15 nicklas 706           for (int filterNo = 0; filterNo < numRows; filterNo++)
6701 30 Jan 15 nicklas 707           {
6701 30 Jan 15 nicklas 708             boolean lastRow = filterNo == numRows-1;
6701 30 Jan 15 nicklas 709             %>
6701 30 Jan 15 nicklas 710             <tbl:headerrow>
7943 04 May 21 nicklas 711               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 712                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 713                   <div class="index"></div>
7943 04 May 21 nicklas 714                   <div class="check">
7943 04 May 21 nicklas 715                     <base:icon 
7943 04 May 21 nicklas 716                       subclass="link table-check"
7943 04 May 21 nicklas 717                       image="check_uncheck.png" 
7943 04 May 21 nicklas 718                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 719                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 720                     />
7943 04 May 21 nicklas 721                   </div>
7943 04 May 21 nicklas 722                   <div class="icons">
7943 04 May 21 nicklas 723                     <base:icon
7943 04 May 21 nicklas 724                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 725                       image="add.png"
7943 04 May 21 nicklas 726                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 727                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 728                     /><base:icon
7943 04 May 21 nicklas 729                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 730                       image="remove.png"
7943 04 May 21 nicklas 731                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 732                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 733                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 734                     />
7943 04 May 21 nicklas 735                   </div>
7943 04 May 21 nicklas 736                 </div>
6701 30 Jan 15 nicklas 737               </tbl:header>
6701 30 Jan 15 nicklas 738               <tbl:propertyfilter row="<%=filterNo%>" />
6701 30 Jan 15 nicklas 739             </tbl:headerrow>
6701 30 Jan 15 nicklas 740             <%
6701 30 Jan 15 nicklas 741           }
6701 30 Jan 15 nicklas 742           %>
7913 22 Feb 21 nicklas 743           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 744         </tbl:headers>
5948 08 Feb 12 nicklas 745         <tbl:rows>
1872 31 Jan 06 nicklas 746           <%
5948 08 Feb 12 nicklas 747           if (cc.getMessage() != null)
5948 08 Feb 12 nicklas 748           {
5948 08 Feb 12 nicklas 749             %>
6604 18 Nov 14 nicklas 750             <tbl:panel subclass="bg-filled-50">
5948 08 Feb 12 nicklas 751               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5948 08 Feb 12 nicklas 752             </tbl:panel>
5948 08 Feb 12 nicklas 753             <%
5948 08 Feb 12 nicklas 754             cc.setMessage(null);
5948 08 Feb 12 nicklas 755           }
1872 31 Jan 06 nicklas 756           int index = cc.getPage()*cc.getRowsPerPage();
1872 31 Jan 06 nicklas 757           int selectedItemId = cc.getId();
2029 20 Feb 06 nicklas 758           if (extracts != null)
2501 09 Aug 06 martin 759           {            
2029 20 Feb 06 nicklas 760             while (extracts.hasNext())
2029 20 Feb 06 nicklas 761             {
2029 20 Feb 06 nicklas 762               Extract item = extracts.next();
5664 23 Jun 11 nicklas 763               Item parentType = item.getParentType();
2029 20 Feb 06 nicklas 764               BioMaterialEvent creationEvent = item.getCreationEvent();
2029 20 Feb 06 nicklas 765               int itemId = item.getId();
2464 04 Jul 06 martin 766               boolean usePermission = item.hasPermission(Permission.USE);
6221 10 Jan 13 nicklas 767               
6221 10 Jan 13 nicklas 768               
4003 26 Nov 07 nicklas 769               boolean deletePermission = item.hasPermission(Permission.DELETE);
2437 28 Jun 06 nicklas 770               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
2501 09 Aug 06 martin 771               boolean writePermission = item.hasPermission(Permission.WRITE);
2501 09 Aug 06 martin 772               String tooltip = mode.isSelectionMode() ? 
2501 09 Aug 06 martin 773                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2029 20 Feb 06 nicklas 774               String name = HTML.encodeTags(item.getName());
2029 20 Feb 06 nicklas 775               index++;
2029 20 Feb 06 nicklas 776               numListed++;
2029 20 Feb 06 nicklas 777               %>
2029 20 Feb 06 nicklas 778               <tbl:row>
7943 04 May 21 nicklas 779                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 780                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 781                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 782                     <div class="check">
7943 04 May 21 nicklas 783                       <base:input
7943 04 May 21 nicklas 784                         type="checkbox" 
7943 04 May 21 nicklas 785                         name="<%=itemId%>" 
7943 04 May 21 nicklas 786                         value="<%=itemId%>" 
7943 04 May 21 nicklas 787                         title="<%=name%>" 
7943 04 May 21 nicklas 788                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 789                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 790                       />
7943 04 May 21 nicklas 791                       <base:input 
7943 04 May 21 nicklas 792                         type="radio" 
7943 04 May 21 nicklas 793                         name="item_id" 
7943 04 May 21 nicklas 794                         value="<%=itemId%>" 
7943 04 May 21 nicklas 795                         title="<%=name%>" 
7943 04 May 21 nicklas 796                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 797                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 798                       />
7943 04 May 21 nicklas 799                     </div>
7943 04 May 21 nicklas 800                     <div class="icons">
7943 04 May 21 nicklas 801                       <base:icon 
7943 04 May 21 nicklas 802                         image="deleted.png"
7943 04 May 21 nicklas 803                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 804                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 805                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 806                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 807                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 808                       /><base:icon 
7943 04 May 21 nicklas 809                         image="shared.png" 
7943 04 May 21 nicklas 810                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 811                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 812                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 813                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 814                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 815                       />
7943 04 May 21 nicklas 816                     </div>
7943 04 May 21 nicklas 817                   </div>
7943 04 May 21 nicklas 818                 </tbl:header>
6260 27 Mar 13 nicklas 819                 <tbl:cell column="name"><div
6260 27 Mar 13 nicklas 820                   class="link table-item"
6260 27 Mar 13 nicklas 821                   data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 822                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6260 27 Mar 13 nicklas 823                   tabindex="0"
2501 09 Aug 06 martin 824                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4331 11 Jun 08 martin 825                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
5648 30 May 11 nicklas 826                 <tbl:cell column="itemSubtype"><base:propertyvalue 
5648 30 May 11 nicklas 827                     item="<%=item%>" 
5648 30 May 11 nicklas 828                     property="itemSubtype"
5648 30 May 11 nicklas 829                     enableEditLink="<%=mode.hasEditLink()%>" 
5648 30 May 11 nicklas 830                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5648 30 May 11 nicklas 831                   /></tbl:cell>
2029 20 Feb 06 nicklas 832                 <tbl:cell column="externalId"><%=HTML.encodeTags(item.getExternalId())%></tbl:cell>
6268 11 Apr 13 nicklas 833                 <tbl:cell column="originalQuantity" value="<%=item.getOriginalQuantity()%>" />
6268 11 Apr 13 nicklas 834                 <tbl:cell column="remainingQuantity" value="<%=item.getRemainingQuantity()%>" />
5667 23 Jun 11 nicklas 835                 <tbl:cell column="tag"
5667 23 Jun 11 nicklas 836                   ><base:propertyvalue 
5667 23 Jun 11 nicklas 837                     item="<%=item%>" 
5667 23 Jun 11 nicklas 838                     property="tag"
5667 23 Jun 11 nicklas 839                     enableEditLink="<%=mode.hasEditLink()%>" 
5667 23 Jun 11 nicklas 840                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5667 23 Jun 11 nicklas 841                   /></tbl:cell>
2354 07 Jun 06 martin 842                 <tbl:cell column="protocol"
2354 07 Jun 06 martin 843                   ><base:propertyvalue 
2354 07 Jun 06 martin 844                     item="<%=creationEvent%>" 
2354 07 Jun 06 martin 845                     property="protocol"
2354 07 Jun 06 martin 846                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 847                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 848                   /></tbl:cell>
6992 03 Nov 15 nicklas 849                 <tbl:cell column="kit"
6992 03 Nov 15 nicklas 850                   ><base:propertyvalue 
6992 03 Nov 15 nicklas 851                     item="<%=creationEvent%>" 
6992 03 Nov 15 nicklas 852                     property="kit"
6992 03 Nov 15 nicklas 853                     enableEditLink="<%=mode.hasEditLink()%>" 
6992 03 Nov 15 nicklas 854                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
6992 03 Nov 15 nicklas 855                   /></tbl:cell>
2942 22 Nov 06 nicklas 856                 <tbl:cell column="eventDate" value="<%=creationEvent.getEventDate()%>" />
2942 22 Nov 06 nicklas 857                 <tbl:cell column="entryDate" value="<%=creationEvent.getEntryDate()%>" />
5664 23 Jun 11 nicklas 858                 <tbl:cell column="parentType"><%=parentType == null ? "" : parentType.toString() %></tbl:cell>
2464 04 Jul 06 martin 859                 <tbl:cell column="parents">
2464 04 Jul 06 martin 860                   <%
5963 15 Feb 12 nicklas 861                   if (item.hasSingleParent() || parentType == null)
2464 04 Jul 06 martin 862                   {
5963 15 Feb 12 nicklas 863                     Float usedQuantity = null;
5963 15 Feb 12 nicklas 864                     if (parentType != null)
5963 15 Feb 12 nicklas 865                     {
5963 15 Feb 12 nicklas 866                       try
5963 15 Feb 12 nicklas 867                       {
5963 15 Feb 12 nicklas 868                         usedQuantity = creationEvent.getUsedQuantity((MeasuredBioMaterial)item.getParent());
5963 15 Feb 12 nicklas 869                       }
5963 15 Feb 12 nicklas 870                       catch (PermissionDeniedException ex)
5963 15 Feb 12 nicklas 871                       {}
5963 15 Feb 12 nicklas 872                     }
5664 23 Jun 11 nicklas 873                     %>
5963 15 Feb 12 nicklas 874                     <base:propertyvalue item="<%=item%>" property="parent" />
6319 09 Sep 13 nicklas 875                     <%=usedQuantity != null ? "(" + numericFormatter.format(usedQuantity) + "µg)" : ""%>
5664 23 Jun 11 nicklas 876                     <%
5664 23 Jun 11 nicklas 877                   }
5664 23 Jun 11 nicklas 878                   else
5664 23 Jun 11 nicklas 879                   {
2464 04 Jul 06 martin 880                     String separator = "";
5567 10 Feb 11 nicklas 881                     parentExtractsQuery.setEntityParameter("creationEvent", creationEvent);
5567 10 Feb 11 nicklas 882                     for (Extract e : parentExtractsQuery.list(dc))
2464 04 Jul 06 martin 883                     {
5963 15 Feb 12 nicklas 884                       Float usedQuantity = creationEvent.getUsedQuantity(e);
2464 04 Jul 06 martin 885                       out.write(separator);
2464 04 Jul 06 martin 886                       if (mode.hasPropertyLink())
2464 04 Jul 06 martin 887                       {
2464 04 Jul 06 martin 888                         out.write(Base.getLinkedName(ID, e, false, mode.hasEditLink()));
2464 04 Jul 06 martin 889                       }
2464 04 Jul 06 martin 890                       else
2464 04 Jul 06 martin 891                       {
2464 04 Jul 06 martin 892                         out.write(HTML.encodeTags(e.getName()));
2464 04 Jul 06 martin 893                       }
5963 15 Feb 12 nicklas 894                       if (usedQuantity != null)
5963 15 Feb 12 nicklas 895                       {
6319 09 Sep 13 nicklas 896                         out.write(" (" + numericFormatter.format(usedQuantity) + "µg)");
5963 15 Feb 12 nicklas 897                       }
2464 04 Jul 06 martin 898                       separator = ", ";
2464 04 Jul 06 martin 899                     }
2464 04 Jul 06 martin 900                   }
2464 04 Jul 06 martin 901                   %>
5948 08 Feb 12 nicklas 902                   <%=parentType != null ? "<span class=\"itemsubtype\">(" + parentType + ")</span>" : "" %>
2464 04 Jul 06 martin 903                 </tbl:cell>
5567 10 Feb 11 nicklas 904                 <tbl:cell column="children">
5567 10 Feb 11 nicklas 905                   <%
5567 10 Feb 11 nicklas 906                   childExtractsQuery.setEntityParameter("extract", item);
5567 10 Feb 11 nicklas 907                   %>
7813 19 May 20 nicklas 908                   <%=Values.getString(childExtractsQuery.list(dc), ", ", false, nameableFormatter) %>
5664 23 Jun 11 nicklas 909                   <base:icon
6260 27 Mar 13 nicklas 910                     id="<%="newextract."+itemId%>"
5664 23 Jun 11 nicklas 911                     image="add.png" 
6260 27 Mar 13 nicklas 912                     subclass="auto-init"
6260 27 Mar 13 nicklas 913                     data-auto-init="new-extract"
6260 27 Mar 13 nicklas 914                     data-item-id="<%=itemId %>"
5664 23 Jun 11 nicklas 915                     tooltip="Create new child extract" 
5664 23 Jun 11 nicklas 916                     visible="<%=mode.hasEditLink() && createPermission && usePermission %>"
5664 23 Jun 11 nicklas 917                   />
5567 10 Feb 11 nicklas 918                 </tbl:cell>
5642 26 May 11 nicklas 919                 <tbl:cell column="physicalBioAssays">
5641 25 May 11 nicklas 920                   <%                  
7813 19 May 20 nicklas 921                   bioAssayQuery.setEntityParameter("extract", item);
2464 04 Jul 06 martin 922                   %>
7813 19 May 20 nicklas 923                   <%=Values.getString(bioAssayQuery.list(dc), ", ", false, nameableFormatter) %>
5750 20 Sep 11 nicklas 924                 </tbl:cell>
7587 06 Feb 19 nicklas 925                 <tbl:cell column="derivedBioAssays">
7587 06 Feb 19 nicklas 926                   <%                  
7813 19 May 20 nicklas 927                   derivedAssayQuery.setEntityParameter("extract", item);
7587 06 Feb 19 nicklas 928                   %>
7813 19 May 20 nicklas 929                   <%=Values.getString(derivedAssayQuery.list(dc), ", ", false, nameableFormatter) %>
7587 06 Feb 19 nicklas 930                   <base:icon
7587 06 Feb 19 nicklas 931                     id="<%="newDerivedBioAssay."+itemId%>"
7587 06 Feb 19 nicklas 932                     image="add.png" 
7587 06 Feb 19 nicklas 933                     subclass="auto-init"
7587 06 Feb 19 nicklas 934                     data-auto-init="new-derived-bioassay"
7587 06 Feb 19 nicklas 935                     data-item-id="<%=itemId %>"
7587 06 Feb 19 nicklas 936                     tooltip="Create new derived bioassay from this extract" 
7587 06 Feb 19 nicklas 937                     visible="<%=mode.hasEditLink() && createDerivedBioAssayPermission && usePermission %>"
7587 06 Feb 19 nicklas 938                   />
7587 06 Feb 19 nicklas 939                 </tbl:cell>
5750 20 Sep 11 nicklas 940                 <tbl:cell column="rawBioAssays">
5750 20 Sep 11 nicklas 941                   <%                  
7813 19 May 20 nicklas 942                   rawAssayQuery.setEntityParameter("extract", item);
5750 20 Sep 11 nicklas 943                   %>
7813 19 May 20 nicklas 944                   <%=Values.getString(rawAssayQuery.list(dc), ", ", false, nameableFormatter) %>
5750 20 Sep 11 nicklas 945                   <base:icon
6260 27 Mar 13 nicklas 946                     id="<%="newRawBioAssay."+itemId%>"
5750 20 Sep 11 nicklas 947                     image="add.png" 
6260 27 Mar 13 nicklas 948                     subclass="auto-init"
6260 27 Mar 13 nicklas 949                     data-auto-init="new-raw-bioassay"
6260 27 Mar 13 nicklas 950                     data-item-id="<%=itemId %>"
5750 20 Sep 11 nicklas 951                     tooltip="Create new raw bioassay from this extract" 
5750 20 Sep 11 nicklas 952                     visible="<%=mode.hasEditLink() && createRawBioAssayPermission && usePermission %>"
5750 20 Sep 11 nicklas 953                   />
5750 20 Sep 11 nicklas 954                 </tbl:cell>
7813 19 May 20 nicklas 955                 <tbl:cell column="itemList">
7813 19 May 20 nicklas 956                   <%
7813 19 May 20 nicklas 957                   listQuery.setParameter("itemId", itemId, Type.INT);
7813 19 May 20 nicklas 958                   %>
7813 19 May 20 nicklas 959                   <%=Values.getString(listQuery.list(dc), ", ", false, nameableFormatter) %>
7813 19 May 20 nicklas 960                 </tbl:cell>
4869 31 Mar 09 martin 961                 <%                
4869 31 Mar 09 martin 962                 BioWell well = null;
7558 07 Jan 19 nicklas 963                 BioPlate bioPlate = null;
4869 31 Mar 09 martin 964                 boolean readBioWell = true;
4869 31 Mar 09 martin 965                 try
4869 31 Mar 09 martin 966                 {
4869 31 Mar 09 martin 967                   well = item.getBioWell();
7558 07 Jan 19 nicklas 968                   if (well != null) bioPlate = well.getPlate();
4869 31 Mar 09 martin 969                 }
4869 31 Mar 09 martin 970                 catch(PermissionDeniedException e)
4869 31 Mar 09 martin 971                 {
4869 31 Mar 09 martin 972                   readBioWell = false;
4869 31 Mar 09 martin 973                 }
4869 31 Mar 09 martin 974                 if (!readBioWell)
4869 31 Mar 09 martin 975                 {
4869 31 Mar 09 martin 976                   %>
4869 31 Mar 09 martin 977                   <tbl:cell column="bioWellRow"><i>- denied -</i> </tbl:cell>
4869 31 Mar 09 martin 978                   <tbl:cell column="bioWellColumn"><i>- denied -</i> </tbl:cell>
4869 31 Mar 09 martin 979                   <tbl:cell column="bioPlate"><i>- denied -</i> </tbl:cell>
4869 31 Mar 09 martin 980                   <%
4869 31 Mar 09 martin 981                 }
4869 31 Mar 09 martin 982                 else if (well == null)
4869 31 Mar 09 martin 983                 {
4869 31 Mar 09 martin 984                   %>
4869 31 Mar 09 martin 985                   <tbl:cell column="bioWellRow"><i>- none -</i> </tbl:cell>
4869 31 Mar 09 martin 986                   <tbl:cell column="bioWellColumn"><i>- none -</i> </tbl:cell>
4869 31 Mar 09 martin 987                   <tbl:cell column="bioPlate"><i>- none -</i> </tbl:cell>
4869 31 Mar 09 martin 988                   <%
4869 31 Mar 09 martin 989                   
4869 31 Mar 09 martin 990                 }
4869 31 Mar 09 martin 991                 else
4869 31 Mar 09 martin 992                 {                
4869 31 Mar 09 martin 993                   %>
4869 31 Mar 09 martin 994                   <tbl:cell column="bioWellRow">
4869 31 Mar 09 martin 995                     <tbl:cellvalue value="<%=well.getRow()%>"/>
4869 31 Mar 09 martin 996                   </tbl:cell>
4869 31 Mar 09 martin 997                   <tbl:cell column="bioWellColumn">
4869 31 Mar 09 martin 998                     <tbl:cellvalue value="<%=well.getColumn()%>"/>
4869 31 Mar 09 martin 999                   </tbl:cell>
7558 07 Jan 19 nicklas 1000                   <tbl:cell column="bioPlate"><%=Base.getLinkedName(ID, bioPlate, false, true)%></tbl:cell>
4869 31 Mar 09 martin 1001                   <%
4869 31 Mar 09 martin 1002                 }
4869 31 Mar 09 martin 1003                 %>
2354 07 Jun 06 martin 1004                 <tbl:cell column="owner"
2354 07 Jun 06 martin 1005                   ><base:propertyvalue 
2354 07 Jun 06 martin 1006                     item="<%=item%>" 
2354 07 Jun 06 martin 1007                     property="owner"
2354 07 Jun 06 martin 1008                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 1009                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 1010                   /></tbl:cell>
2401 21 Jun 06 martin 1011                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>                
2029 20 Feb 06 nicklas 1012                 <%
6541 29 Sep 14 nicklas 1013                 if (item.isAnnotated())
2029 20 Feb 06 nicklas 1014                 {
6541 29 Sep 14 nicklas 1015                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
6541 29 Sep 14 nicklas 1016                   for (AnnotationLoaderUtil loader : annotationLoaders)
2942 22 Nov 06 nicklas 1017                   {
6721 10 Feb 15 nicklas 1018                     %>
6721 10 Feb 15 nicklas 1019                     <tbl:cell 
6721 10 Feb 15 nicklas 1020                       column="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+loader.getId()%>"
6721 10 Feb 15 nicklas 1021                       ><%
7336 12 Apr 17 nicklas 1022                       if (loader.find(snapshot, psInfo.reset())) 
6721 10 Feb 15 nicklas 1023                       {
6721 10 Feb 15 nicklas 1024                         %><tbl:cellvalue 
6541 29 Sep 14 nicklas 1025                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 1026                           bulletlist="<%=loader.useBulletList() %>"
6541 29 Sep 14 nicklas 1027                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 1028                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
6721 10 Feb 15 nicklas 1029                         /><%
6721 10 Feb 15 nicklas 1030                       }
6721 10 Feb 15 nicklas 1031                       %></tbl:cell>
6721 10 Feb 15 nicklas 1032                     <%
2942 22 Nov 06 nicklas 1033                   }
2029 20 Feb 06 nicklas 1034                 }
7558 07 Jan 19 nicklas 1035                 if (bioPlate != null && bioPlate.isAnnotated())
7558 07 Jan 19 nicklas 1036                 {
7558 07 Jan 19 nicklas 1037                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, bioPlate.getAnnotationSet().getId());
7558 07 Jan 19 nicklas 1038                   for (AnnotationLoaderUtil loader : bioPlateAnnotationLoaders)
7558 07 Jan 19 nicklas 1039                   {
7558 07 Jan 19 nicklas 1040                     %>
7558 07 Jan 19 nicklas 1041                     <tbl:cell 
7558 07 Jan 19 nicklas 1042                       column="<%="pa"+loader.getId()%>"
7558 07 Jan 19 nicklas 1043                       ><%
7558 07 Jan 19 nicklas 1044                       if (loader.find(snapshot, psInfo.reset())) 
7558 07 Jan 19 nicklas 1045                       {
7558 07 Jan 19 nicklas 1046                         %><tbl:cellvalue 
7558 07 Jan 19 nicklas 1047                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 1048                           bulletlist="<%=loader.useBulletList() %>"
7558 07 Jan 19 nicklas 1049                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 1050                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
7558 07 Jan 19 nicklas 1051                         /><%
7558 07 Jan 19 nicklas 1052                       }
7558 07 Jan 19 nicklas 1053                       %></tbl:cell>
7558 07 Jan 19 nicklas 1054                     <%
7558 07 Jan 19 nicklas 1055                   }
7558 07 Jan 19 nicklas 1056                 }
2029 20 Feb 06 nicklas 1057                 %>
2401 21 Jun 06 martin 1058                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
3552 06 Jul 07 martin 1059                 <tbl:cell column="sharedTo">
7813 19 May 20 nicklas 1060                   <%=Values.getString(ShareableUtil.getSharedTo(dc, item), ", ", false, nameableFormatter) %>
3552 06 Jul 07 martin 1061                 </tbl:cell>
6038 29 Mar 12 nicklas 1062                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6038 29 Mar 12 nicklas 1063                   <tbl:cell column="xt-columns" />
6038 29 Mar 12 nicklas 1064                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 1065               </tbl:row>
1872 31 Jan 06 nicklas 1066               <%
1872 31 Jan 06 nicklas 1067               }
1872 31 Jan 06 nicklas 1068             }
5948 08 Feb 12 nicklas 1069             if (numListed == 0)
5948 08 Feb 12 nicklas 1070             {
5948 08 Feb 12 nicklas 1071               %>
6604 18 Nov 14 nicklas 1072               <tbl:panel subclass="bg-filled-50">
5948 08 Feb 12 nicklas 1073                 <div class="messagecontainer note">
5948 08 Feb 12 nicklas 1074                 <%=extracts == null || extracts.getTotalCount() == 0 ? "No extracts were found" : "No extracts on this page. Please select another page!" %>
5948 08 Feb 12 nicklas 1075                 </div>
5948 08 Feb 12 nicklas 1076               </tbl:panel>
5948 08 Feb 12 nicklas 1077               <%
5948 08 Feb 12 nicklas 1078             }
2401 21 Jun 06 martin 1079           %>          
5948 08 Feb 12 nicklas 1080         </tbl:rows>
1872 31 Jan 06 nicklas 1081       </tbl:data>
1872 31 Jan 06 nicklas 1082     </tbl:table>
5948 08 Feb 12 nicklas 1083     </div>
5948 08 Feb 12 nicklas 1084     <base:buttongroup subclass="dialogbuttons">
6260 27 Mar 13 nicklas 1085       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6260 27 Mar 13 nicklas 1086       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6260 27 Mar 13 nicklas 1087       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
1872 31 Jan 06 nicklas 1088     </base:buttongroup>
5951 09 Feb 12 nicklas 1089     
1872 31 Jan 06 nicklas 1090   </base:body>
1872 31 Jan 06 nicklas 1091   </base:page>
1872 31 Jan 06 nicklas 1092   <%
1872 31 Jan 06 nicklas 1093 }
1872 31 Jan 06 nicklas 1094 finally
1872 31 Jan 06 nicklas 1095 {
1872 31 Jan 06 nicklas 1096   if (extracts != null) extracts.close();
1872 31 Jan 06 nicklas 1097   if (dc != null) dc.close();
1872 31 Jan 06 nicklas 1098 }
3675 16 Aug 07 jari 1099 %>