www/biomaterials/samples/view_sample.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 Johan Enell, Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 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.SystemItems"
2421 22 Jun 06 martin 30   import="net.sf.basedb.core.Extract"
1872 31 Jan 06 nicklas 31   import="net.sf.basedb.core.Item"
1872 31 Jan 06 nicklas 32   import="net.sf.basedb.core.ItemContext"
1872 31 Jan 06 nicklas 33   import="net.sf.basedb.core.Permission"
1872 31 Jan 06 nicklas 34   import="net.sf.basedb.core.Sample"
1872 31 Jan 06 nicklas 35   import="net.sf.basedb.core.BioSource"
5662 20 Jun 11 nicklas 36   import="net.sf.basedb.core.BioMaterial"
1872 31 Jan 06 nicklas 37   import="net.sf.basedb.core.BioMaterialEvent"
5662 20 Jun 11 nicklas 38   import="net.sf.basedb.core.BioMaterialEventSource"
4729 14 Jan 09 martin 39   import="net.sf.basedb.core.BioWell"
1872 31 Jan 06 nicklas 40   import="net.sf.basedb.core.Protocol"
6053 03 May 12 nicklas 41   import="net.sf.basedb.core.ItemSubtype"
1872 31 Jan 06 nicklas 42   import="net.sf.basedb.core.User"
3547 03 Jul 07 martin 43   import="net.sf.basedb.core.Group"
4539 18 Sep 08 martin 44   import="net.sf.basedb.core.ItemProxy"
1872 31 Jan 06 nicklas 45   import="net.sf.basedb.core.ItemQuery"
1872 31 Jan 06 nicklas 46   import="net.sf.basedb.core.ItemResultList"
5662 20 Jun 11 nicklas 47   import="net.sf.basedb.core.query.ResultList"
5662 20 Jun 11 nicklas 48   import="net.sf.basedb.core.SpecialQuery"
1872 31 Jan 06 nicklas 49   import="net.sf.basedb.core.Include"
3547 03 Jul 07 martin 50   import="net.sf.basedb.core.MultiPermissions"
1872 31 Jan 06 nicklas 51   import="net.sf.basedb.core.query.Orders"
1872 31 Jan 06 nicklas 52   import="net.sf.basedb.core.query.Hql"
1872 31 Jan 06 nicklas 53   import="net.sf.basedb.core.PermissionDeniedException"
1872 31 Jan 06 nicklas 54   import="net.sf.basedb.core.PluginDefinition"
1872 31 Jan 06 nicklas 55   import="net.sf.basedb.core.plugin.GuiContext"
1872 31 Jan 06 nicklas 56   import="net.sf.basedb.core.plugin.Plugin"
3547 03 Jul 07 martin 57   import="net.sf.basedb.core.Project"
1872 31 Jan 06 nicklas 58   import="net.sf.basedb.clients.web.Base"
5050 17 Aug 09 nicklas 59   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
2386 15 Jun 06 martin 60   import="net.sf.basedb.clients.web.PermissionUtil"
1872 31 Jan 06 nicklas 61   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 62   import="net.sf.basedb.util.Values"
2942 22 Nov 06 nicklas 63   import="net.sf.basedb.util.formatter.Formatter"
4869 31 Mar 09 martin 64   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
6268 11 Apr 13 nicklas 65   import="net.sf.basedb.util.formatter.PrefixSuffixFormatter"
2942 22 Nov 06 nicklas 66   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
6268 11 Apr 13 nicklas 67   import="net.sf.basedb.clients.web.formatter.FormatterSettings"
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"
4882 03 Apr 09 nicklas 73   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
4539 18 Sep 08 martin 74   import="java.util.ArrayList"
3547 03 Jul 07 martin 75   import="java.util.Collections"
1872 31 Jan 06 nicklas 76   import="java.util.Date"
1872 31 Jan 06 nicklas 77   import="java.util.Map"
1872 31 Jan 06 nicklas 78   import="java.util.Set"
1872 31 Jan 06 nicklas 79   import="java.util.List"
1872 31 Jan 06 nicklas 80 %>
1872 31 Jan 06 nicklas 81 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1872 31 Jan 06 nicklas 82 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1872 31 Jan 06 nicklas 83 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
1872 31 Jan 06 nicklas 84 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4882 03 Apr 09 nicklas 85 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1872 31 Jan 06 nicklas 86 <%!
1872 31 Jan 06 nicklas 87   private static final Item itemType = Item.SAMPLE;
1872 31 Jan 06 nicklas 88   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
1872 31 Jan 06 nicklas 89 %>
1872 31 Jan 06 nicklas 90 <%
1872 31 Jan 06 nicklas 91 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1872 31 Jan 06 nicklas 92 final String ID = sc.getId();
1872 31 Jan 06 nicklas 93 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1872 31 Jan 06 nicklas 94 final int itemId = cc.getId();
6260 27 Mar 13 nicklas 95 final String tab = Values.getStringOrNull(request.getParameter("tab"));
1872 31 Jan 06 nicklas 96 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 97 final DbControl dc = sc.newDbControl(":View "+itemType);
1872 31 Jan 06 nicklas 98 try
1872 31 Jan 06 nicklas 99 {
2942 22 Nov 06 nicklas 100   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
6268 11 Apr 13 nicklas 101   Formatter<Number> numberFormatter = FormatterFactory.getNumberFormatter(sc);
7604 25 Feb 19 nicklas 102   Formatter<Number> quantityFormatter = new PrefixSuffixFormatter<Number>(null, false, numberFormatter, " µg", false);
6268 11 Apr 13 nicklas 103
1872 31 Jan 06 nicklas 104   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
1872 31 Jan 06 nicklas 105
4869 31 Mar 09 martin 106   WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
4869 31 Mar 09 martin 107   WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
4869 31 Mar 09 martin 108   
1872 31 Jan 06 nicklas 109   String title = null;
1872 31 Jan 06 nicklas 110   Sample sample = Sample.getById(dc, itemId);
1872 31 Jan 06 nicklas 111   BioMaterialEvent creationEvent = sample.getCreationEvent();
1872 31 Jan 06 nicklas 112   
2421 22 Jun 06 martin 113   final boolean usePermission = sample.hasPermission(Permission.USE);
1872 31 Jan 06 nicklas 114   final boolean writePermission = sample.hasPermission(Permission.WRITE);
1872 31 Jan 06 nicklas 115   final boolean deletePermission = sample.hasPermission(Permission.DELETE);
1872 31 Jan 06 nicklas 116   final boolean sharePermission = sample.hasPermission(Permission.SET_PERMISSION);
2917 15 Nov 06 nicklas 117   final boolean setOwnerPermission = sample.hasPermission(Permission.SET_OWNER);
4003 26 Nov 07 nicklas 118   final boolean isRemoved = sample.isRemoved();
4003 26 Nov 07 nicklas 119   final boolean isUsed = isRemoved && sample.isUsed();
4003 26 Nov 07 nicklas 120   final boolean deletePermanentlyPermission = deletePermission && !isUsed;
2917 15 Nov 06 nicklas 121   final boolean isOwner = sample.isOwner();
4882 03 Apr 09 nicklas 122   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, sample);
7604 25 Feb 19 nicklas 123   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
1872 31 Jan 06 nicklas 124   %>
6260 27 Mar 13 nicklas 125 <base:page title="<%=title%>" id="view-page">
6260 27 Mar 13 nicklas 126   <base:head scripts="table.js,tabcontrol-2.js,~samples.js"
6260 27 Mar 13 nicklas 127     styles="table.css,toolbar.css,headertabcontrol.css,path.css">
4882 03 Apr 09 nicklas 128     <ext:scripts context="<%=jspContext%>" />
4882 03 Apr 09 nicklas 129     <ext:stylesheets context="<%=jspContext%>" />
1872 31 Jan 06 nicklas 130   </base:head>
1872 31 Jan 06 nicklas 131   <base:body>
6260 27 Mar 13 nicklas 132     <p:path><p:pathelement title="Samples" href="<%="index.jsp?ID="+ID%>" 
6260 27 Mar 13 nicklas 133       /><p:pathelement title="<%=HTML.encodeTags(sample.getName())%>" /></p:path>
6260 27 Mar 13 nicklas 134       
6260 27 Mar 13 nicklas 135     <div id="page-data" data-item-id="<%=itemId%>"></div>
6260 27 Mar 13 nicklas 136
6260 27 Mar 13 nicklas 137     <t:tabcontrol id="main" subclass="content mastertabcontrol"  active="<%=tab%>">
1872 31 Jan 06 nicklas 138     <t:tab id="properties" title="Properties">
5918 21 Dec 11 nicklas 139       <div>
5918 21 Dec 11 nicklas 140       <table class="fullform bottomborder">
5918 21 Dec 11 nicklas 141       <tr>
5918 21 Dec 11 nicklas 142         <th class="itemstatus">
6260 27 Mar 13 nicklas 143           <base:icon image="shared.png"
5918 21 Dec 11 nicklas 144             visible="<%=sample.isShared()%>"
6260 27 Mar 13 nicklas 145             tooltip="This item is shared to other users, groups and/or projects" 
5918 21 Dec 11 nicklas 146           />
5918 21 Dec 11 nicklas 147           <base:icon 
6260 27 Mar 13 nicklas 148             id="btnDeletePermanently"
6260 27 Mar 13 nicklas 149             image="deleted.png" 
5918 21 Dec 11 nicklas 150             tooltip="This item has been flagged for deletion. Click to delete it now."
5918 21 Dec 11 nicklas 151             enabled="<%=deletePermanentlyPermission %>"
5918 21 Dec 11 nicklas 152             visible="<%=isRemoved%>" 
5918 21 Dec 11 nicklas 153           />
6260 27 Mar 13 nicklas 154           <base:icon 
6260 27 Mar 13 nicklas 155             id="btnUsingItems"
6260 27 Mar 13 nicklas 156             image="used.png"
5918 21 Dec 11 nicklas 157             tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
6260 27 Mar 13 nicklas 158             visible="<%=isRemoved && isUsed%>" 
6260 27 Mar 13 nicklas 159           />
5918 21 Dec 11 nicklas 160         </th>
5918 21 Dec 11 nicklas 161         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 162           <tbl:toolbar subclass="bottomborder bg-filled-50">
6260 27 Mar 13 nicklas 163             <tbl:button 
6260 27 Mar 13 nicklas 164               id="btnEdit"
6260 27 Mar 13 nicklas 165               disabled="<%=!writePermission%>" 
6260 27 Mar 13 nicklas 166               image="edit.png"
6260 27 Mar 13 nicklas 167               title="Edit&hellip;"
6260 27 Mar 13 nicklas 168               tooltip="<%=writePermission ? "Edit this sample" : "You do not have permission to edit this sample"%>" 
6260 27 Mar 13 nicklas 169             />
6260 27 Mar 13 nicklas 170             <tbl:button 
6260 27 Mar 13 nicklas 171               id="btnDelete"
6260 27 Mar 13 nicklas 172               disabled="<%=!deletePermission%>"
6260 27 Mar 13 nicklas 173               image="delete.png" 
6260 27 Mar 13 nicklas 174               title="Delete"
6260 27 Mar 13 nicklas 175               visible="<%=!sample.isRemoved()%>"
6260 27 Mar 13 nicklas 176               tooltip="<%=deletePermission ? "Delete this sample" : "You do not have permission to delete this sample"%>" 
6260 27 Mar 13 nicklas 177             />
6260 27 Mar 13 nicklas 178             <tbl:button
6260 27 Mar 13 nicklas 179               id="btnRestore"
6260 27 Mar 13 nicklas 180               disabled="<%=!writePermission%>"
6260 27 Mar 13 nicklas 181               image="restore.png" 
6260 27 Mar 13 nicklas 182               title="Restore"
6260 27 Mar 13 nicklas 183               visible="<%=sample.isRemoved()%>"
6260 27 Mar 13 nicklas 184               tooltip="<%=writePermission ? "Restore this sample" : "You do not have permission to restore this sample"%>" 
6260 27 Mar 13 nicklas 185             />
6260 27 Mar 13 nicklas 186             <tbl:button 
6260 27 Mar 13 nicklas 187               id="btnShare"
6260 27 Mar 13 nicklas 188               disabled="<%=!sharePermission%>"
6260 27 Mar 13 nicklas 189               image="share.png"
6260 27 Mar 13 nicklas 190                title="Share&hellip;"
6260 27 Mar 13 nicklas 191               tooltip="<%=sharePermission ? "Share this sample to other user, groups and projects" : "You do not have permission to share this sample"%>" 
6260 27 Mar 13 nicklas 192             />
6260 27 Mar 13 nicklas 193             <tbl:button 
6260 27 Mar 13 nicklas 194               id="btnSetOwner"
6260 27 Mar 13 nicklas 195               disabled="<%=!setOwnerPermission%>"
6260 27 Mar 13 nicklas 196               image="take_ownership.png" 
6260 27 Mar 13 nicklas 197               title="Set owner&hellip;"
6260 27 Mar 13 nicklas 198               tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>" 
6260 27 Mar 13 nicklas 199             />
6260 27 Mar 13 nicklas 200             <tbl:button
6260 27 Mar 13 nicklas 201               id="btnNewSample"
6260 27 Mar 13 nicklas 202               image="add.png"
6260 27 Mar 13 nicklas 203               title="New child sample&hellip;"
6260 27 Mar 13 nicklas 204               tooltip="Create a new child sample from this sample"
6260 27 Mar 13 nicklas 205               visible="<%=sc.hasPermission(Permission.CREATE, Item.SAMPLE) && usePermission%>" 
6260 27 Mar 13 nicklas 206             />
6260 27 Mar 13 nicklas 207             <tbl:button
6260 27 Mar 13 nicklas 208               id="btnNewExtract"
6260 27 Mar 13 nicklas 209               image="add.png" 
6260 27 Mar 13 nicklas 210               title="New child extract&hellip;"
6260 27 Mar 13 nicklas 211               tooltip="Create a new extract from this sample"
6260 27 Mar 13 nicklas 212               visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>" 
6260 27 Mar 13 nicklas 213             />
6260 27 Mar 13 nicklas 214             <tbl:button 
6260 27 Mar 13 nicklas 215               id="btnImport"
6260 27 Mar 13 nicklas 216               image="import.png" 
6260 27 Mar 13 nicklas 217               data-plugin-type="IMPORT"  
6260 27 Mar 13 nicklas 218               title="Import&hellip;" 
6260 27 Mar 13 nicklas 219               tooltip="Import data" 
6260 27 Mar 13 nicklas 220               visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
6260 27 Mar 13 nicklas 221             />
6260 27 Mar 13 nicklas 222             <tbl:button 
6260 27 Mar 13 nicklas 223               id="btnExport"
6260 27 Mar 13 nicklas 224               image="export.png"
6260 27 Mar 13 nicklas 225               data-plugin-type="EXPORT" 
6260 27 Mar 13 nicklas 226               title="Export&hellip;" 
6260 27 Mar 13 nicklas 227               tooltip="Export data" 
6260 27 Mar 13 nicklas 228               visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
6260 27 Mar 13 nicklas 229             />
6260 27 Mar 13 nicklas 230             <tbl:button 
6260 27 Mar 13 nicklas 231               id="btnRunPlugin"
6260 27 Mar 13 nicklas 232               image="runplugin.png"  
6260 27 Mar 13 nicklas 233               data-plugin-type="OTHER" 
6260 27 Mar 13 nicklas 234               title="Run plugin&hellip;" 
6260 27 Mar 13 nicklas 235               tooltip="Run a plugin" 
6260 27 Mar 13 nicklas 236               visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
6260 27 Mar 13 nicklas 237             />
6260 27 Mar 13 nicklas 238             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
7604 25 Feb 19 nicklas 239               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>" />
6260 27 Mar 13 nicklas 240             <tbl:button
6260 27 Mar 13 nicklas 241               image="help.png"
6260 27 Mar 13 nicklas 242               subclass="auto-init"
6260 27 Mar 13 nicklas 243               data-auto-init="help"
6260 27 Mar 13 nicklas 244               data-help-id="sample.view.properties"
6260 27 Mar 13 nicklas 245               title="Help&hellip;"
6260 27 Mar 13 nicklas 246               tooltip="Get help about this page"
6260 27 Mar 13 nicklas 247             />
5918 21 Dec 11 nicklas 248           </tbl:toolbar>
5918 21 Dec 11 nicklas 249         </td>
5918 21 Dec 11 nicklas 250       </tr>
1872 31 Jan 06 nicklas 251       <tr>
5918 21 Dec 11 nicklas 252         <th>Name</th>
1872 31 Jan 06 nicklas 253         <td><%=HTML.encodeTags(sample.getName())%></td>
1872 31 Jan 06 nicklas 254       </tr>
1872 31 Jan 06 nicklas 255       <tr>
5918 21 Dec 11 nicklas 256         <th>Type</th>
6260 27 Mar 13 nicklas 257         <td><base:propertyvalue item="<%=sample%>"
6260 27 Mar 13 nicklas 258             property="itemSubtype" /></td>
5645 27 May 11 nicklas 259       </tr>
5645 27 May 11 nicklas 260       <tr>
5918 21 Dec 11 nicklas 261         <th>External ID</th>
1872 31 Jan 06 nicklas 262         <td><%=HTML.encodeTags(sample.getExternalId())%></td>
1872 31 Jan 06 nicklas 263       </tr>
1872 31 Jan 06 nicklas 264       <tr>
5918 21 Dec 11 nicklas 265         <th>Created</th>
2942 22 Nov 06 nicklas 266         <td><%=dateFormatter.format(creationEvent.getEventDate())%></td>
1872 31 Jan 06 nicklas 267       </tr>
1872 31 Jan 06 nicklas 268       <tr>
5918 21 Dec 11 nicklas 269         <th>Registered</th>
2942 22 Nov 06 nicklas 270         <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td>
1872 31 Jan 06 nicklas 271       </tr>
1872 31 Jan 06 nicklas 272       <tr>
5918 21 Dec 11 nicklas 273         <th>Protocol</th>
6993 03 Nov 15 nicklas 274         <td><base:propertyvalue item="<%=creationEvent%>" property="protocol" /></td>
1872 31 Jan 06 nicklas 275       </tr>
1872 31 Jan 06 nicklas 276       <tr>
6993 03 Nov 15 nicklas 277         <th>Kit</th>
6993 03 Nov 15 nicklas 278         <td><base:propertyvalue item="<%=creationEvent%>" property="kit" /></td>
6993 03 Nov 15 nicklas 279       </tr>
6993 03 Nov 15 nicklas 280       <tr>
5918 21 Dec 11 nicklas 281         <th>Original quantity</th>
6268 11 Apr 13 nicklas 282         <td><%=quantityFormatter.format(sample.getOriginalQuantity())%></td>
1872 31 Jan 06 nicklas 283       </tr>
1872 31 Jan 06 nicklas 284       <tr>
5935 26 Jan 12 nicklas 285         <th class="subprompt">- remaining</th>
6268 11 Apr 13 nicklas 286         <td><%=quantityFormatter.format(sample.getRemainingQuantity())%></td>
1872 31 Jan 06 nicklas 287       </tr>
1872 31 Jan 06 nicklas 288       <tr>
5918 21 Dec 11 nicklas 289         <th>Bioplate</th>
6260 27 Mar 13 nicklas 290         <td><base:propertyvalue item="<%=sample%>"
6260 27 Mar 13 nicklas 291             property="bioWell.bioPlate" /> <%
4730 15 Jan 09 martin 292           try
4729 14 Jan 09 martin 293           {
5459 29 Oct 10 nicklas 294             BioWell well = sample.getBioWell();
5459 29 Oct 10 nicklas 295             if (well != null)
4730 15 Jan 09 martin 296             {
6260 27 Mar 13 nicklas 297               %> [<%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%>]
6260 27 Mar 13 nicklas 298                 <base:icon image="locked.png"
6260 27 Mar 13 nicklas 299                   visible="<%=sample.isLockedInWell()%>" /> <%
4730 15 Jan 09 martin 300             }
4729 14 Jan 09 martin 301           }
4730 15 Jan 09 martin 302           catch (PermissionDeniedException ex)
4730 15 Jan 09 martin 303           {}
4729 14 Jan 09 martin 304           %>
4729 14 Jan 09 martin 305         </td>
4729 14 Jan 09 martin 306       </tr>
4730 15 Jan 09 martin 307       <tr>
5918 21 Dec 11 nicklas 308         <th>Owner</th>
4730 15 Jan 09 martin 309         <td><base:propertyvalue item="<%=sample%>" property="owner" /></td>
4730 15 Jan 09 martin 310       </tr>
5918 21 Dec 11 nicklas 311       <tr>
5918 21 Dec 11 nicklas 312         <th>Permissions</th>
5918 21 Dec 11 nicklas 313         <td><%=PermissionUtil.getFullPermissionNames(sample)%></td>
5918 21 Dec 11 nicklas 314       </tr>
5918 21 Dec 11 nicklas 315       <tr>
5918 21 Dec 11 nicklas 316         <th>Description</th>
1872 31 Jan 06 nicklas 317         <td><%=HTML.niceFormat(sample.getDescription())%></td>
1872 31 Jan 06 nicklas 318       </tr>
6260 27 Mar 13 nicklas 319     </table>
6260 27 Mar 13 nicklas 320   </div>
6260 27 Mar 13 nicklas 321
6260 27 Mar 13 nicklas 322   <%
6260 27 Mar 13 nicklas 323   SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources();
6260 27 Mar 13 nicklas 324   sourceQuery.order(Orders.asc(Hql.property("bioMaterial.name")));
6260 27 Mar 13 nicklas 325   ResultList<BioMaterialEventSource> sources = sourceQuery.list(dc);
6260 27 Mar 13 nicklas 326   %>
6260 27 Mar 13 nicklas 327   <base:section id="parentsSection"
6260 27 Mar 13 nicklas 328     title="<%="Parent items (" + sources.size() + ")"%>"
6260 27 Mar 13 nicklas 329     context="<%=cc%>">
6260 27 Mar 13 nicklas 330     <%
5935 26 Jan 12 nicklas 331         if (sources.size() == 0)
5935 26 Jan 12 nicklas 332         {
5935 26 Jan 12 nicklas 333           %>
6260 27 Mar 13 nicklas 334           <div class="messagecontainer note">This sample doesn't have
6260 27 Mar 13 nicklas 335             any parent items (or, you don't have permission to view them).</div>
5935 26 Jan 12 nicklas 336           <%
5935 26 Jan 12 nicklas 337         }
5935 26 Jan 12 nicklas 338         else
5935 26 Jan 12 nicklas 339         {
5935 26 Jan 12 nicklas 340           %>
6260 27 Mar 13 nicklas 341           <tbl:table id="parents" columns="all">
6260 27 Mar 13 nicklas 342             <tbl:columndef id="name" title="Name" />
6260 27 Mar 13 nicklas 343             <tbl:columndef id="type" title="Type" />
6260 27 Mar 13 nicklas 344             <tbl:columndef id="quantity" title="Used quantity (µg)" />
6260 27 Mar 13 nicklas 345             <tbl:columndef id="description" title="Description" />
6260 27 Mar 13 nicklas 346             <tbl:data>
6260 27 Mar 13 nicklas 347               <tbl:headers>
6260 27 Mar 13 nicklas 348                 <tbl:headerrow>
6260 27 Mar 13 nicklas 349                   <tbl:columnheaders />
6260 27 Mar 13 nicklas 350                 </tbl:headerrow>
6260 27 Mar 13 nicklas 351               </tbl:headers>
6260 27 Mar 13 nicklas 352               <tbl:rows>
6260 27 Mar 13 nicklas 353                 <%
5663 22 Jun 11 nicklas 354             for (BioMaterialEventSource item : sources)
5662 20 Jun 11 nicklas 355             {
5663 22 Jun 11 nicklas 356               BioMaterial bm = null;
6053 03 May 12 nicklas 357               ItemSubtype subtype = null;
5663 22 Jun 11 nicklas 358               try
5663 22 Jun 11 nicklas 359               {
5663 22 Jun 11 nicklas 360                 bm = item.getBioMaterial();
6053 03 May 12 nicklas 361                 subtype = bm.getItemSubtype();
5663 22 Jun 11 nicklas 362               }
5663 22 Jun 11 nicklas 363               catch (PermissionDeniedException ex)
5663 22 Jun 11 nicklas 364               {}
5663 22 Jun 11 nicklas 365               %>
6260 27 Mar 13 nicklas 366                 <tbl:row>
6260 27 Mar 13 nicklas 367                   <tbl:cell column="name">
6260 27 Mar 13 nicklas 368                     <base:icon image="deleted.png"
6260 27 Mar 13 nicklas 369                       tooltip="This item has been scheduled for deletion"
6260 27 Mar 13 nicklas 370                       visible="<%=bm != null && bm.isRemoved()%>" /><%=Base.getLinkedName(ID, bm, bm == null, true)%></tbl:cell>
6260 27 Mar 13 nicklas 371                   <tbl:cell column="type">
6260 27 Mar 13 nicklas 372                     <%
6053 03 May 12 nicklas 373                   if (subtype != null)
6053 03 May 12 nicklas 374                   {
6053 03 May 12 nicklas 375                     %>
6260 27 Mar 13 nicklas 376                     <%=Base.getLinkedName(ID, subtype, false, true)%>
6260 27 Mar 13 nicklas 377                     <span class="itemsubtype">(<%=bm.getType() %>)
6260 27 Mar 13 nicklas 378                     </span>
6053 03 May 12 nicklas 379                     <%
6053 03 May 12 nicklas 380                   }
6053 03 May 12 nicklas 381                   else
6053 03 May 12 nicklas 382                   {
6053 03 May 12 nicklas 383                     %>
6053 03 May 12 nicklas 384                     <%=bm != null ? bm.getType() : "" %>
6053 03 May 12 nicklas 385                     <%
6053 03 May 12 nicklas 386                   }
6053 03 May 12 nicklas 387                   %>
6268 11 Apr 13 nicklas 388                 </tbl:cell>
6268 11 Apr 13 nicklas 389                 <tbl:cell column="quantity"><%=numberFormatter.format(item.getUsedQuantity())%></tbl:cell>
6268 11 Apr 13 nicklas 390                 <tbl:cell column="description"><%=HTML.encodeTags(bm == null ? "" : bm.getDescription())%></tbl:cell>
6268 11 Apr 13 nicklas 391               </tbl:row>
6268 11 Apr 13 nicklas 392               <%
5662 20 Jun 11 nicklas 393             }
1872 31 Jan 06 nicklas 394             %>
6268 11 Apr 13 nicklas 395             </tbl:rows>
6268 11 Apr 13 nicklas 396           </tbl:data>
6268 11 Apr 13 nicklas 397         </tbl:table>
6260 27 Mar 13 nicklas 398         <%
6268 11 Apr 13 nicklas 399       }
6268 11 Apr 13 nicklas 400       %>
6268 11 Apr 13 nicklas 401       </base:section>
6268 11 Apr 13 nicklas 402       <%
5663 22 Jun 11 nicklas 403       SpecialQuery<BioMaterialEventSource> childQuery = sample.getChildCreationEvents();
5663 22 Jun 11 nicklas 404       childQuery.join(Hql.innerJoin("es", "event", "evt", true));
5663 22 Jun 11 nicklas 405       childQuery.join(Hql.innerJoin("evt", "bioMaterial", "bm", true));
5663 22 Jun 11 nicklas 406       childQuery.order(Orders.asc(Hql.property("bm", "name")));
5663 22 Jun 11 nicklas 407       ResultList<BioMaterialEventSource> children = childQuery.list(dc);
5935 26 Jan 12 nicklas 408       %>
6260 27 Mar 13 nicklas 409         <base:section id="childSection"
6260 27 Mar 13 nicklas 410           title="<%="Child items (" + children.size() + ")"%>"
6260 27 Mar 13 nicklas 411           context="<%=cc%>">
6260 27 Mar 13 nicklas 412           <%
5935 26 Jan 12 nicklas 413         if (children.size() == 0)
5935 26 Jan 12 nicklas 414         {
5935 26 Jan 12 nicklas 415           %>
6260 27 Mar 13 nicklas 416           <div class="messagecontainer help">No child items have been
6260 27 Mar 13 nicklas 417             created from this sample (or, you don't have permission to view
6260 27 Mar 13 nicklas 418             them).</div>
5935 26 Jan 12 nicklas 419           <%
5935 26 Jan 12 nicklas 420         }
5935 26 Jan 12 nicklas 421         else
5935 26 Jan 12 nicklas 422         {
5935 26 Jan 12 nicklas 423           %>
6260 27 Mar 13 nicklas 424           <tbl:table id="children" columns="all">
6260 27 Mar 13 nicklas 425             <tbl:columndef id="name" title="Name" />
6260 27 Mar 13 nicklas 426             <tbl:columndef id="type" title="Type" />
6260 27 Mar 13 nicklas 427             <tbl:columndef id="quantity" title="Used quantity (µg)" />
6260 27 Mar 13 nicklas 428             <tbl:columndef id="description" title="Description" />
5044 11 Aug 09 martin 429             <tbl:data>
5935 26 Jan 12 nicklas 430               <tbl:headers>
5935 26 Jan 12 nicklas 431                 <tbl:headerrow>
5935 26 Jan 12 nicklas 432                   <tbl:columnheaders />
5935 26 Jan 12 nicklas 433                 </tbl:headerrow>
5935 26 Jan 12 nicklas 434               </tbl:headers>
5044 11 Aug 09 martin 435               <tbl:rows>
6260 27 Mar 13 nicklas 436                 <%
5663 22 Jun 11 nicklas 437               for (BioMaterialEventSource item : children)
5044 11 Aug 09 martin 438               {
5663 22 Jun 11 nicklas 439                 BioMaterial bm = null;
6053 03 May 12 nicklas 440                 ItemSubtype subtype = null;
5663 22 Jun 11 nicklas 441                 try
5663 22 Jun 11 nicklas 442                 {
5663 22 Jun 11 nicklas 443                   bm = item.getEvent().getBioMaterial();
6053 03 May 12 nicklas 444                   subtype = bm.getItemSubtype();
5663 22 Jun 11 nicklas 445                 }
5663 22 Jun 11 nicklas 446                 catch (PermissionDeniedException ex)
5663 22 Jun 11 nicklas 447                 {}
5044 11 Aug 09 martin 448                 %>
5044 11 Aug 09 martin 449                 <tbl:row>
6260 27 Mar 13 nicklas 450                   <tbl:cell column="name">
6260 27 Mar 13 nicklas 451                     <base:icon image="deleted.png"
6260 27 Mar 13 nicklas 452                       tooltip="This item has been scheduled for deletion"
6260 27 Mar 13 nicklas 453                       visible="<%=bm != null && bm.isRemoved()%>" /><%=Base.getLinkedName(ID, bm, bm == null, true)%></tbl:cell>
6053 03 May 12 nicklas 454                   <tbl:cell column="type">
6053 03 May 12 nicklas 455                     <%
6053 03 May 12 nicklas 456                     if (subtype != null)
6053 03 May 12 nicklas 457                     {
6053 03 May 12 nicklas 458                       %>
6260 27 Mar 13 nicklas 459                     <%=Base.getLinkedName(ID, subtype, false, true)%>
6260 27 Mar 13 nicklas 460                     <span class="itemsubtype">(<%=bm.getType() %>)
6260 27 Mar 13 nicklas 461                     </span>
6260 27 Mar 13 nicklas 462                     <%
6053 03 May 12 nicklas 463                     }
6053 03 May 12 nicklas 464                     else
6053 03 May 12 nicklas 465                     {
6053 03 May 12 nicklas 466                       %>
6260 27 Mar 13 nicklas 467                     <%=bm != null ? bm.getType() : "" %>
6260 27 Mar 13 nicklas 468                     <%
6053 03 May 12 nicklas 469                     }
6053 03 May 12 nicklas 470                     %>
6053 03 May 12 nicklas 471                   </tbl:cell>
6268 11 Apr 13 nicklas 472                   <tbl:cell column="quantity"><%=numberFormatter.format(item.getUsedQuantity())%></tbl:cell>
5663 22 Jun 11 nicklas 473                   <tbl:cell column="description"><%=HTML.encodeTags(bm == null ? "" : bm.getDescription())%></tbl:cell>
5044 11 Aug 09 martin 474                 </tbl:row>
4539 18 Sep 08 martin 475                 <%
5044 11 Aug 09 martin 476               }
6260 27 Mar 13 nicklas 477               %>
5044 11 Aug 09 martin 478               </tbl:rows>
5044 11 Aug 09 martin 479             </tbl:data>
5044 11 Aug 09 martin 480           </tbl:table>
5935 26 Jan 12 nicklas 481           <%
5935 26 Jan 12 nicklas 482         }
5935 26 Jan 12 nicklas 483         %>
6260 27 Mar 13 nicklas 484         </base:section>
6260 27 Mar 13 nicklas 485
6260 27 Mar 13 nicklas 486         <jsp:include page="../../common/anytoany/list_anytoany.jsp">
6260 27 Mar 13 nicklas 487           <jsp:param name="ID" value="<%=ID%>" />
6260 27 Mar 13 nicklas 488           <jsp:param name="item_type" value="<%=itemType.name()%>" />
6260 27 Mar 13 nicklas 489           <jsp:param name="item_id" value="<%=itemId%>" />
6260 27 Mar 13 nicklas 490           <jsp:param name="title" value="Other items related to this sample" />
6260 27 Mar 13 nicklas 491         </jsp:include>
7813 19 May 20 nicklas 492         
7813 19 May 20 nicklas 493         <jsp:include page="../../common/itemlists/list_membership.jsp">
7813 19 May 20 nicklas 494           <jsp:param name="ID" value="<%=ID%>" />
7813 19 May 20 nicklas 495           <jsp:param name="item_type" value="<%=itemType.name()%>" />
7813 19 May 20 nicklas 496           <jsp:param name="item_id" value="<%=itemId%>" />
7813 19 May 20 nicklas 497           <jsp:param name="title" value="Item lists where this sample is a member" />
7813 19 May 20 nicklas 498         </jsp:include>
7813 19 May 20 nicklas 499       
6260 27 Mar 13 nicklas 500
6260 27 Mar 13 nicklas 501         <jsp:include page="../../common/share/list_share.jsp">
6260 27 Mar 13 nicklas 502           <jsp:param name="ID" value="<%=ID%>" />
6260 27 Mar 13 nicklas 503           <jsp:param name="item_type" value="<%=itemType.name()%>" />
6260 27 Mar 13 nicklas 504           <jsp:param name="item_id" value="<%=itemId%>" />
6260 27 Mar 13 nicklas 505           <jsp:param name="title" value="Shared to" />
6260 27 Mar 13 nicklas 506         </jsp:include>
1872 31 Jan 06 nicklas 507       </t:tab>
6260 27 Mar 13 nicklas 508
6260 27 Mar 13 nicklas 509       <t:tab id="annotations" title="Annotations &amp; parameters"
6260 27 Mar 13 nicklas 510         tooltip="View annotation values and protocol parameters" clazz="white">
6255 22 Mar 13 nicklas 511         <jsp:include page="../../common/annotations/list_frameset.jsp">
1872 31 Jan 06 nicklas 512           <jsp:param name="item_type" value="<%=itemType.name()%>" />
1872 31 Jan 06 nicklas 513           <jsp:param name="item_id" value="<%=itemId%>" />
1872 31 Jan 06 nicklas 514           <jsp:param name="ID" value="<%=ID%>" />
1872 31 Jan 06 nicklas 515         </jsp:include>
1872 31 Jan 06 nicklas 516       </t:tab>
1872 31 Jan 06 nicklas 517       <t:tab id="events" title="Events" />
6260 27 Mar 13 nicklas 518       <t:tab id="overview" title="Overview"
6260 27 Mar 13 nicklas 519         tooltip="Display a tree overview of related items">
6242 25 Feb 13 nicklas 520         <jsp:include page="../../common/overview/overview.jsp">
6242 25 Feb 13 nicklas 521           <jsp:param name="item_type" value="<%=itemType.name()%>" />
6242 25 Feb 13 nicklas 522           <jsp:param name="item_id" value="<%=itemId%>" />
6242 25 Feb 13 nicklas 523           <jsp:param name="ID" value="<%=ID%>" />
6242 25 Feb 13 nicklas 524         </jsp:include>
6260 27 Mar 13 nicklas 525       </t:tab>
7166 07 Jun 16 nicklas 526       <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 527         tooltip="Displays a log with the history of this item"
6260 27 Mar 13 nicklas 528         visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
6244 25 Feb 13 nicklas 529         <jsp:include page="../../common/history/frameset.jsp">
6244 25 Feb 13 nicklas 530           <jsp:param name="item_type" value="<%=itemType.name()%>" />
6244 25 Feb 13 nicklas 531           <jsp:param name="item_id" value="<%=itemId%>" />
6244 25 Feb 13 nicklas 532           <jsp:param name="ID" value="<%=ID%>" />
6244 25 Feb 13 nicklas 533         </jsp:include>
6260 27 Mar 13 nicklas 534       </t:tab>
6260 27 Mar 13 nicklas 535     </t:tabcontrol>
1872 31 Jan 06 nicklas 536
1872 31 Jan 06 nicklas 537   </base:body>
6260 27 Mar 13 nicklas 538 </base:page>
6260 27 Mar 13 nicklas 539 <%
1872 31 Jan 06 nicklas 540 }
1872 31 Jan 06 nicklas 541 finally
1872 31 Jan 06 nicklas 542 {
1872 31 Jan 06 nicklas 543   if (dc != null) dc.close();
1872 31 Jan 06 nicklas 544 }
1872 31 Jan 06 nicklas 545
1872 31 Jan 06 nicklas 546 %>