www/biomaterials/bioplates/events/list_events.jsp

Code
Comments
Other
Rev Date Author Line
5525 06 Dec 10 nicklas 1 <%-- $Id $
5525 06 Dec 10 nicklas 2   ------------------------------------------------------------------
5525 06 Dec 10 nicklas 3   Copyright (C) 2010 Nicklas Nordborg
5525 06 Dec 10 nicklas 4
5525 06 Dec 10 nicklas 5   This file is part of BASE - BioArray Software Environment.
5525 06 Dec 10 nicklas 6   Available at http://base.thep.lu.se/
5525 06 Dec 10 nicklas 7
5525 06 Dec 10 nicklas 8   BASE is free software; you can redistribute it and/or
5525 06 Dec 10 nicklas 9   modify it under the terms of the GNU General Public License
5525 06 Dec 10 nicklas 10   as published by the Free Software Foundation; either version 3
5525 06 Dec 10 nicklas 11   of the License, or (at your option) any later version.
5525 06 Dec 10 nicklas 12
5525 06 Dec 10 nicklas 13   BASE is distributed in the hope that it will be useful,
5525 06 Dec 10 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
5525 06 Dec 10 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5525 06 Dec 10 nicklas 16   GNU General Public License for more details.
5525 06 Dec 10 nicklas 17
5525 06 Dec 10 nicklas 18   You should have received a copy of the GNU General Public License
5525 06 Dec 10 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5525 06 Dec 10 nicklas 20   ------------------------------------------------------------------
5525 06 Dec 10 nicklas 21
5525 06 Dec 10 nicklas 22   @author Nicklas
5525 06 Dec 10 nicklas 23 --%>
5525 06 Dec 10 nicklas 24 <%@page import="net.sf.basedb.core.BioPlateEventParticipant"%>
5525 06 Dec 10 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
5525 06 Dec 10 nicklas 26   import="net.sf.basedb.core.SessionControl"
5525 06 Dec 10 nicklas 27   import="net.sf.basedb.core.DbControl"
5525 06 Dec 10 nicklas 28   import="net.sf.basedb.core.Item"
5525 06 Dec 10 nicklas 29   import="net.sf.basedb.core.BioPlate"
5525 06 Dec 10 nicklas 30   import="net.sf.basedb.core.BioPlateEvent"
5525 06 Dec 10 nicklas 31   import="net.sf.basedb.core.ItemQuery"
5525 06 Dec 10 nicklas 32   import="net.sf.basedb.core.Include"
5525 06 Dec 10 nicklas 33   import="net.sf.basedb.core.ItemResultIterator"
5525 06 Dec 10 nicklas 34   import="net.sf.basedb.core.ItemResultList"
5525 06 Dec 10 nicklas 35   import="net.sf.basedb.core.ItemContext"
5525 06 Dec 10 nicklas 36   import="net.sf.basedb.core.Nameable"
5525 06 Dec 10 nicklas 37   import="net.sf.basedb.core.Permission"
5525 06 Dec 10 nicklas 38   import="net.sf.basedb.core.PermissionDeniedException"
5525 06 Dec 10 nicklas 39   import="net.sf.basedb.core.PlateGeometry"
5525 06 Dec 10 nicklas 40   import="net.sf.basedb.core.PluginDefinition"
5525 06 Dec 10 nicklas 41   import="net.sf.basedb.core.query.Hql"
5525 06 Dec 10 nicklas 42   import="net.sf.basedb.core.query.Restrictions"
5525 06 Dec 10 nicklas 43   import="net.sf.basedb.core.query.Expressions"
5525 06 Dec 10 nicklas 44   import="net.sf.basedb.core.query.Orders"
5525 06 Dec 10 nicklas 45   import="net.sf.basedb.core.plugin.GuiContext"
5525 06 Dec 10 nicklas 46   import="net.sf.basedb.core.plugin.Plugin"
5525 06 Dec 10 nicklas 47   import="net.sf.basedb.core.Type"
5525 06 Dec 10 nicklas 48   import="net.sf.basedb.util.Enumeration"
5525 06 Dec 10 nicklas 49   import="net.sf.basedb.util.ShareableUtil"
5525 06 Dec 10 nicklas 50   import="net.sf.basedb.clients.web.Base"
5525 06 Dec 10 nicklas 51   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
5525 06 Dec 10 nicklas 52   import="net.sf.basedb.clients.web.ModeInfo"
5525 06 Dec 10 nicklas 53   import="net.sf.basedb.clients.web.PermissionUtil"
5525 06 Dec 10 nicklas 54   import="net.sf.basedb.clients.web.util.HTML"
5525 06 Dec 10 nicklas 55   import="net.sf.basedb.util.Values"
5525 06 Dec 10 nicklas 56   import="net.sf.basedb.util.formatter.Formatter"
5525 06 Dec 10 nicklas 57   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
5525 06 Dec 10 nicklas 58   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5525 06 Dec 10 nicklas 59   import="net.sf.basedb.clients.web.extensions.JspContext"
5525 06 Dec 10 nicklas 60   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 61   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
5525 06 Dec 10 nicklas 62   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 63   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6038 29 Mar 12 nicklas 64   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
5525 06 Dec 10 nicklas 65   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5525 06 Dec 10 nicklas 66   import="java.util.Iterator" 
5525 06 Dec 10 nicklas 67   import="java.util.List"
5525 06 Dec 10 nicklas 68   import="java.util.Map"
5525 06 Dec 10 nicklas 69   import="java.util.Date"
5525 06 Dec 10 nicklas 70 %>
5525 06 Dec 10 nicklas 71 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
5525 06 Dec 10 nicklas 72 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
5525 06 Dec 10 nicklas 73 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
5525 06 Dec 10 nicklas 74 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
5525 06 Dec 10 nicklas 75 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
5525 06 Dec 10 nicklas 76 <%!
5525 06 Dec 10 nicklas 77   private static final Item itemType = Item.BIOPLATEEVENT;
5525 06 Dec 10 nicklas 78   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
5525 06 Dec 10 nicklas 79 %>
5525 06 Dec 10 nicklas 80 <%
5525 06 Dec 10 nicklas 81 final int bioPlateId = Values.getInt(request.getParameter("bioplate_id"));
5525 06 Dec 10 nicklas 82 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
5525 06 Dec 10 nicklas 83 final String ID = sc.getId();
5525 06 Dec 10 nicklas 84 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
5525 06 Dec 10 nicklas 85 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
5525 06 Dec 10 nicklas 86
5951 09 Feb 12 nicklas 87 final ModeInfo mode =  ModeInfo.get(request.getParameter("mode"));
5525 06 Dec 10 nicklas 88 final String callback = request.getParameter("callback");
5525 06 Dec 10 nicklas 89 final String title = mode.generateTitle("bioplate event", "bioplate events");
7954 12 May 21 nicklas 90 final DbControl dc = sc.newDbControl(":List "+itemType);
5525 06 Dec 10 nicklas 91 ItemResultIterator<BioPlateEvent> events = null;
5525 06 Dec 10 nicklas 92 try
5525 06 Dec 10 nicklas 93 {
5525 06 Dec 10 nicklas 94
5525 06 Dec 10 nicklas 95   final BioPlate bioPlate = BioPlate.getById(dc, bioPlateId);
5525 06 Dec 10 nicklas 96   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 97   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioPlate);
5525 06 Dec 10 nicklas 98   try
5525 06 Dec 10 nicklas 99   {
7914 23 Feb 21 nicklas 100     final ItemQuery<BioPlateEvent> query = Base.getConfiguredQuery(dc, cc, jspContext, true, bioPlate.getEvents(), mode);
5525 06 Dec 10 nicklas 101     events = query.iterate(dc);
5525 06 Dec 10 nicklas 102   }
5525 06 Dec 10 nicklas 103   catch (Throwable t)
5525 06 Dec 10 nicklas 104   {
5525 06 Dec 10 nicklas 105     cc.setMessage(t.getMessage());
5525 06 Dec 10 nicklas 106     t.printStackTrace();
5525 06 Dec 10 nicklas 107   }
5525 06 Dec 10 nicklas 108   int numListed = 0;
5525 06 Dec 10 nicklas 109   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
7604 25 Feb 19 nicklas 110   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 111   ExtensionsInvoker<ListColumnAction<BioPlateEvent,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
5525 06 Dec 10 nicklas 112   %>
6260 27 Mar 13 nicklas 113   <base:page title="<%=title%>" type="<%=mode.getPageType()%>" id="list-page">
6260 27 Mar 13 nicklas 114   <base:head scripts="table.js,tabcontrol-2.js,~events.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
5525 06 Dec 10 nicklas 115     <ext:scripts context="<%=jspContext%>" />
5525 06 Dec 10 nicklas 116     <ext:stylesheets context="<%=jspContext%>" />
5525 06 Dec 10 nicklas 117   </base:head>
5525 06 Dec 10 nicklas 118   <base:body>
5525 06 Dec 10 nicklas 119     <%
5951 09 Feb 12 nicklas 120     if (!mode.isSelectionMode())
5525 06 Dec 10 nicklas 121     {
5525 06 Dec 10 nicklas 122       %>
5951 09 Feb 12 nicklas 123       <p:path><p:pathelement 
5951 09 Feb 12 nicklas 124         title="Bioplates" href="<%="../index.jsp?ID="+ID%>" 
5951 09 Feb 12 nicklas 125         /><p:pathelement title="<%=HTML.encodeTags(bioPlate.getName())%>"
5951 09 Feb 12 nicklas 126         /></p:path>
5525 06 Dec 10 nicklas 127       <%
5525 06 Dec 10 nicklas 128     }
5951 09 Feb 12 nicklas 129     else
5951 09 Feb 12 nicklas 130     {
5951 09 Feb 12 nicklas 131       %>
5951 09 Feb 12 nicklas 132       <h1><%=title %></h1>
5951 09 Feb 12 nicklas 133       <%
5951 09 Feb 12 nicklas 134     }
5525 06 Dec 10 nicklas 135     %>
5951 09 Feb 12 nicklas 136     
5951 09 Feb 12 nicklas 137     <t:tabcontrol 
5951 09 Feb 12 nicklas 138       id="main" 
5951 09 Feb 12 nicklas 139       subclass="content mastertabcontrol"
5951 09 Feb 12 nicklas 140       notabs="<%=mode.isSelectionMode() %>"
6260 27 Mar 13 nicklas 141       active="events">
5951 09 Feb 12 nicklas 142     <t:tab id="properties" title="Properties" />
5951 09 Feb 12 nicklas 143     <t:tab id="annotations" title="Annotations" />        
5951 09 Feb 12 nicklas 144     <t:tab id="biowells" title="Wells" />
5951 09 Feb 12 nicklas 145     <t:tab id="events" title="Plate events">
5525 06 Dec 10 nicklas 146     <tbl:table 
5525 06 Dec 10 nicklas 147       id="events" 
5525 06 Dec 10 nicklas 148       columns="<%=cc.getSetting("columns")%>"
5525 06 Dec 10 nicklas 149       sortby="<%=cc.getSortProperty()%>" 
5525 06 Dec 10 nicklas 150       direction="<%=cc.getSortDirection()%>"
5525 06 Dec 10 nicklas 151       action="index.jsp"
5525 06 Dec 10 nicklas 152       sc="<%=sc%>"
5525 06 Dec 10 nicklas 153       item="<%=itemType%>"
6701 30 Jan 15 nicklas 154       filterrows="<%=cc.getFilterRows()%>"
5951 09 Feb 12 nicklas 155       subclass="fulltable"
7982 14 Jun 21 nicklas 156       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
5525 06 Dec 10 nicklas 157       >
5525 06 Dec 10 nicklas 158       <tbl:hidden 
5525 06 Dec 10 nicklas 159         name="mode" 
5525 06 Dec 10 nicklas 160         value="<%=mode.getName()%>" 
5525 06 Dec 10 nicklas 161       />
5525 06 Dec 10 nicklas 162       <tbl:hidden 
5525 06 Dec 10 nicklas 163         name="bioplate_id" 
5525 06 Dec 10 nicklas 164         value="<%=String.valueOf(bioPlateId)%>" 
5525 06 Dec 10 nicklas 165       />
5525 06 Dec 10 nicklas 166       <tbl:hidden 
5525 06 Dec 10 nicklas 167         name="callback" 
5525 06 Dec 10 nicklas 168         value="<%=callback%>" 
5525 06 Dec 10 nicklas 169         skip="<%=callback == null%>" 
5525 06 Dec 10 nicklas 170       />
5525 06 Dec 10 nicklas 171       <tbl:columndef 
5525 06 Dec 10 nicklas 172         id="name"
5525 06 Dec 10 nicklas 173         property="name"
5525 06 Dec 10 nicklas 174         datatype="string"
5525 06 Dec 10 nicklas 175         title="Name"
5525 06 Dec 10 nicklas 176         sortable="true" 
5525 06 Dec 10 nicklas 177         filterable="true"
5525 06 Dec 10 nicklas 178         exportable="true"
5525 06 Dec 10 nicklas 179         show="always" 
5525 06 Dec 10 nicklas 180       />
5525 06 Dec 10 nicklas 181       <tbl:columndef 
5525 06 Dec 10 nicklas 182         id="id"
5525 06 Dec 10 nicklas 183         clazz="uniquecol"
5525 06 Dec 10 nicklas 184         property="id"
5525 06 Dec 10 nicklas 185         datatype="int"
5525 06 Dec 10 nicklas 186         title="ID"
5525 06 Dec 10 nicklas 187         sortable="true" 
5525 06 Dec 10 nicklas 188         filterable="true"
5525 06 Dec 10 nicklas 189         exportable="true" 
5525 06 Dec 10 nicklas 190       />
5525 06 Dec 10 nicklas 191       <tbl:columndef 
5525 06 Dec 10 nicklas 192         id="eventType"
5525 06 Dec 10 nicklas 193         property="eventType.name"
5525 06 Dec 10 nicklas 194         datatype="string"
5525 06 Dec 10 nicklas 195         title="Event type" 
5525 06 Dec 10 nicklas 196         sortable="true" 
5525 06 Dec 10 nicklas 197         filterable="true" 
5525 06 Dec 10 nicklas 198         exportable="true"
5525 06 Dec 10 nicklas 199       />      
5525 06 Dec 10 nicklas 200       <tbl:columndef 
5525 06 Dec 10 nicklas 201         id="role"
5525 06 Dec 10 nicklas 202         property="$bpp.role"
5525 06 Dec 10 nicklas 203         datatype="string"
5525 06 Dec 10 nicklas 204         title="Role" 
5525 06 Dec 10 nicklas 205         sortable="true" 
5525 06 Dec 10 nicklas 206         filterable="true" 
5525 06 Dec 10 nicklas 207         exportable="true"
5525 06 Dec 10 nicklas 208       />      
5525 06 Dec 10 nicklas 209       <tbl:columndef 
5525 06 Dec 10 nicklas 210         id="protocol"
5525 06 Dec 10 nicklas 211         property="protocol.name"
5525 06 Dec 10 nicklas 212         datatype="string"
5525 06 Dec 10 nicklas 213         title="Protocol"
5525 06 Dec 10 nicklas 214         sortable="true" 
5525 06 Dec 10 nicklas 215         filterable="true"
5525 06 Dec 10 nicklas 216         exportable="true"
5525 06 Dec 10 nicklas 217       />
5525 06 Dec 10 nicklas 218       <tbl:columndef 
6997 03 Nov 15 nicklas 219         id="kit"
6997 03 Nov 15 nicklas 220         property="kit.name"
6997 03 Nov 15 nicklas 221         datatype="string"
6997 03 Nov 15 nicklas 222         title="Kit"
6997 03 Nov 15 nicklas 223         sortable="true" 
6997 03 Nov 15 nicklas 224         filterable="true"
6997 03 Nov 15 nicklas 225         exportable="true"
6997 03 Nov 15 nicklas 226       />
6997 03 Nov 15 nicklas 227       <tbl:columndef 
5525 06 Dec 10 nicklas 228         id="hardware"
5525 06 Dec 10 nicklas 229         property="hardware.name"
5525 06 Dec 10 nicklas 230         datatype="string"
5525 06 Dec 10 nicklas 231         title="Hardware"
5525 06 Dec 10 nicklas 232         sortable="true" 
5525 06 Dec 10 nicklas 233         filterable="true"
5525 06 Dec 10 nicklas 234         exportable="true"
5525 06 Dec 10 nicklas 235       />
5525 06 Dec 10 nicklas 236       <tbl:columndef 
5525 06 Dec 10 nicklas 237         id="eventDate"
5525 06 Dec 10 nicklas 238         property="eventDate"
5525 06 Dec 10 nicklas 239         datatype="date"
5525 06 Dec 10 nicklas 240         title="Date"
5525 06 Dec 10 nicklas 241         sortable="true" 
5525 06 Dec 10 nicklas 242         filterable="true"
5525 06 Dec 10 nicklas 243         exportable="true"
5525 06 Dec 10 nicklas 244         formatter="<%=dateFormatter%>"
5525 06 Dec 10 nicklas 245       />
5525 06 Dec 10 nicklas 246       <tbl:columndef 
5525 06 Dec 10 nicklas 247         id="entryDate"
5525 06 Dec 10 nicklas 248         property="entryDate"
5525 06 Dec 10 nicklas 249         datatype="date"
5525 06 Dec 10 nicklas 250         title="Registered"
5525 06 Dec 10 nicklas 251         sortable="true" 
5525 06 Dec 10 nicklas 252         filterable="true"
5525 06 Dec 10 nicklas 253         exportable="true"
5525 06 Dec 10 nicklas 254         formatter="<%=dateFormatter%>"
5525 06 Dec 10 nicklas 255       />
5525 06 Dec 10 nicklas 256       <tbl:columndef
5525 06 Dec 10 nicklas 257         id="participants"
5525 06 Dec 10 nicklas 258         title="Participants"
5525 06 Dec 10 nicklas 259         property="&participants(bioPlate.name)"
5525 06 Dec 10 nicklas 260         datatype="string"
5525 06 Dec 10 nicklas 261         filterable="true"
5525 06 Dec 10 nicklas 262         exportable="true"
5525 06 Dec 10 nicklas 263       />
5525 06 Dec 10 nicklas 264       <tbl:columndef 
5525 06 Dec 10 nicklas 265         id="owner"
5525 06 Dec 10 nicklas 266         property="owner.name"
5525 06 Dec 10 nicklas 267         datatype="string"
5525 06 Dec 10 nicklas 268         title="Owner"
5525 06 Dec 10 nicklas 269         sortable="true" 
5525 06 Dec 10 nicklas 270         filterable="true"
5525 06 Dec 10 nicklas 271         exportable="true"
5525 06 Dec 10 nicklas 272       />
5525 06 Dec 10 nicklas 273       <tbl:columndef 
5525 06 Dec 10 nicklas 274         id="description"
5525 06 Dec 10 nicklas 275         property="description"
5525 06 Dec 10 nicklas 276         datatype="string"
5525 06 Dec 10 nicklas 277         title="Description" 
5525 06 Dec 10 nicklas 278         sortable="true" 
5525 06 Dec 10 nicklas 279         filterable="true" 
5525 06 Dec 10 nicklas 280         exportable="true"
5525 06 Dec 10 nicklas 281       />      
5525 06 Dec 10 nicklas 282       <tbl:columndef
5525 06 Dec 10 nicklas 283         id="permission"
5525 06 Dec 10 nicklas 284         title="Permission"
5525 06 Dec 10 nicklas 285       />
5525 06 Dec 10 nicklas 286       <tbl:columndef
5525 06 Dec 10 nicklas 287         id="sharedTo"
5525 06 Dec 10 nicklas 288         title="Shared to"
5525 06 Dec 10 nicklas 289         filterable="true"
5525 06 Dec 10 nicklas 290         filterproperty="!sharedTo.name"
5525 06 Dec 10 nicklas 291         datatype="string"
5525 06 Dec 10 nicklas 292       />
6038 29 Mar 12 nicklas 293       <tbl:columndef 
6038 29 Mar 12 nicklas 294         id="xt-columns" 
6038 29 Mar 12 nicklas 295         extensions="<%=columnsInvoker%>" 
6038 29 Mar 12 nicklas 296         jspcontext="<%=jspContext%>" 
6038 29 Mar 12 nicklas 297       />
6604 18 Nov 14 nicklas 298       <div class="panelgroup bg-filled-50 bottomborder">
5951 09 Feb 12 nicklas 299         <tbl:toolbar
5951 09 Feb 12 nicklas 300           visible="<%=mode.hasToolbar()%>"
5951 09 Feb 12 nicklas 301           subclass="bottomborder"
5951 09 Feb 12 nicklas 302           >
5951 09 Feb 12 nicklas 303           <tbl:button 
6260 27 Mar 13 nicklas 304             id="btnDeleteItems"
5951 09 Feb 12 nicklas 305             image="delete.png"
5951 09 Feb 12 nicklas 306             title="Delete" 
5951 09 Feb 12 nicklas 307             tooltip="Delete the selected items" 
5951 09 Feb 12 nicklas 308           />
5951 09 Feb 12 nicklas 309           <tbl:button 
6260 27 Mar 13 nicklas 310             id="btnRestoreItems"
5951 09 Feb 12 nicklas 311             image="restore.png"
5951 09 Feb 12 nicklas 312             title="Restore" 
5951 09 Feb 12 nicklas 313             tooltip="Restore the selected (deleted) items"
5951 09 Feb 12 nicklas 314           />
5951 09 Feb 12 nicklas 315           <tbl:button 
6260 27 Mar 13 nicklas 316             id="btnShareItems"
5951 09 Feb 12 nicklas 317             image="share.png"
5951 09 Feb 12 nicklas 318             title="Share&hellip;" 
5951 09 Feb 12 nicklas 319             tooltip="Share the selected items"
5951 09 Feb 12 nicklas 320           />
5951 09 Feb 12 nicklas 321           <tbl:button 
6260 27 Mar 13 nicklas 322             id="btnSetOwner"
5951 09 Feb 12 nicklas 323             image="take_ownership.png"
5951 09 Feb 12 nicklas 324             title="Set owner&hellip;"
5951 09 Feb 12 nicklas 325             tooltip="Change owner of the selected items"
5951 09 Feb 12 nicklas 326           />
5951 09 Feb 12 nicklas 327           <tbl:button 
6260 27 Mar 13 nicklas 328             id="btnColumns"
5951 09 Feb 12 nicklas 329             image="columns.png" 
5951 09 Feb 12 nicklas 330             title="Columns&hellip;" 
5951 09 Feb 12 nicklas 331             tooltip="Show, hide and re-order columns" 
5951 09 Feb 12 nicklas 332           />
5951 09 Feb 12 nicklas 333           <tbl:button 
6260 27 Mar 13 nicklas 334             id="btnImport"
6260 27 Mar 13 nicklas 335             data-plugin-type="IMPORT"
5951 09 Feb 12 nicklas 336             image="import.png" 
5951 09 Feb 12 nicklas 337             title="Import&hellip;" 
5951 09 Feb 12 nicklas 338             tooltip="Import data" 
5951 09 Feb 12 nicklas 339             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5951 09 Feb 12 nicklas 340           />
5951 09 Feb 12 nicklas 341           <tbl:button 
6260 27 Mar 13 nicklas 342             id="btnExport"
6260 27 Mar 13 nicklas 343             data-plugin-type="EXPORT"
5951 09 Feb 12 nicklas 344             image="export.png" 
5951 09 Feb 12 nicklas 345             title="Export&hellip;" 
5951 09 Feb 12 nicklas 346             tooltip="Export data" 
5951 09 Feb 12 nicklas 347             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5951 09 Feb 12 nicklas 348           />
5951 09 Feb 12 nicklas 349           <tbl:button 
6260 27 Mar 13 nicklas 350             id="btnRunPlugin"
6260 27 Mar 13 nicklas 351             data-plugin-type="OTHER"
5951 09 Feb 12 nicklas 352             image="runplugin.png" 
5951 09 Feb 12 nicklas 353             title="Run plugin&hellip;" 
5951 09 Feb 12 nicklas 354             tooltip="Run a plugin" 
5951 09 Feb 12 nicklas 355             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5951 09 Feb 12 nicklas 356           />
5951 09 Feb 12 nicklas 357           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 358             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5951 09 Feb 12 nicklas 359         </tbl:toolbar>
5951 09 Feb 12 nicklas 360         <tbl:panel>
6182 23 Oct 12 nicklas 361           <tbl:presetselector />
5951 09 Feb 12 nicklas 362           <tbl:navigator
5951 09 Feb 12 nicklas 363             page="<%=cc.getPage()%>" 
5951 09 Feb 12 nicklas 364             rowsperpage="<%=cc.getRowsPerPage()%>" 
5951 09 Feb 12 nicklas 365             totalrows="<%=events == null ? 0 : events.getTotalCount()%>" 
5951 09 Feb 12 nicklas 366             visible="<%=mode.hasNavigator()%>"
5951 09 Feb 12 nicklas 367           />
5951 09 Feb 12 nicklas 368         </tbl:panel>
5951 09 Feb 12 nicklas 369       </div>
5525 06 Dec 10 nicklas 370       <tbl:data>
5948 08 Feb 12 nicklas 371         <tbl:headers>
5948 08 Feb 12 nicklas 372           <tbl:headerrow>
7943 04 May 21 nicklas 373             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 374             <tbl:columnheaders />
5948 08 Feb 12 nicklas 375           </tbl:headerrow>
6701 30 Jan 15 nicklas 376           <%
6701 30 Jan 15 nicklas 377           int numFilters = cc.getNumPropertyFilters();
6701 30 Jan 15 nicklas 378           int numRows = cc.getFilterRows();
6701 30 Jan 15 nicklas 379           for (int filterNo = 0; filterNo < numRows; filterNo++)
6701 30 Jan 15 nicklas 380           {
6701 30 Jan 15 nicklas 381             boolean lastRow = filterNo == numRows-1;
6701 30 Jan 15 nicklas 382             %>
6701 30 Jan 15 nicklas 383             <tbl:headerrow>
7943 04 May 21 nicklas 384               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 385                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 386                   <div class="index"></div>
7943 04 May 21 nicklas 387                   <div class="check">
7943 04 May 21 nicklas 388                     <base:icon 
7943 04 May 21 nicklas 389                       subclass="link table-check"
7943 04 May 21 nicklas 390                       image="check_uncheck.png" 
7943 04 May 21 nicklas 391                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 392                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 393                     />
7943 04 May 21 nicklas 394                   </div>
7943 04 May 21 nicklas 395                   <div class="icons">
7943 04 May 21 nicklas 396                     <base:icon
7943 04 May 21 nicklas 397                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 398                       image="add.png"
7943 04 May 21 nicklas 399                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 400                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 401                     /><base:icon
7943 04 May 21 nicklas 402                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 403                       image="remove.png"
7943 04 May 21 nicklas 404                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 405                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 406                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 407                     />
7943 04 May 21 nicklas 408                   </div>
7943 04 May 21 nicklas 409                 </div>
6701 30 Jan 15 nicklas 410               </tbl:header>
6701 30 Jan 15 nicklas 411               <tbl:propertyfilter row="<%=filterNo%>" />
6701 30 Jan 15 nicklas 412             </tbl:headerrow>
6701 30 Jan 15 nicklas 413             <%
6701 30 Jan 15 nicklas 414           }
6701 30 Jan 15 nicklas 415           %>
7913 22 Feb 21 nicklas 416           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 417         </tbl:headers>
5948 08 Feb 12 nicklas 418         <tbl:rows>
5525 06 Dec 10 nicklas 419           <%
5951 09 Feb 12 nicklas 420           if (cc.getMessage() != null)
5951 09 Feb 12 nicklas 421           {
5951 09 Feb 12 nicklas 422             %>
6604 18 Nov 14 nicklas 423             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 424               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5951 09 Feb 12 nicklas 425             </tbl:panel>
5951 09 Feb 12 nicklas 426             <%
5951 09 Feb 12 nicklas 427             cc.setMessage(null);
5951 09 Feb 12 nicklas 428           }
5525 06 Dec 10 nicklas 429           int index = cc.getPage()*cc.getRowsPerPage();
5525 06 Dec 10 nicklas 430           int selectedItemId = cc.getId();
5525 06 Dec 10 nicklas 431           if (events != null)
5525 06 Dec 10 nicklas 432           {            
5525 06 Dec 10 nicklas 433             while (events.hasNext())
5525 06 Dec 10 nicklas 434             {
5525 06 Dec 10 nicklas 435               BioPlateEvent item = events.next();
5525 06 Dec 10 nicklas 436               int itemId = item.getId();
5525 06 Dec 10 nicklas 437               boolean usePermission = item.hasPermission(Permission.USE);
6221 10 Jan 13 nicklas 438               
6221 10 Jan 13 nicklas 439               
5525 06 Dec 10 nicklas 440               boolean deletePermission = item.hasPermission(Permission.DELETE);
5525 06 Dec 10 nicklas 441               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
5525 06 Dec 10 nicklas 442               boolean writePermission = item.hasPermission(Permission.WRITE);
5525 06 Dec 10 nicklas 443               String tooltip = mode.isSelectionMode() ?
5525 06 Dec 10 nicklas 444                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
5525 06 Dec 10 nicklas 445               String name = HTML.encodeTags(item.getName());
5525 06 Dec 10 nicklas 446               index++;
5525 06 Dec 10 nicklas 447               numListed++;
5525 06 Dec 10 nicklas 448               %>
5525 06 Dec 10 nicklas 449               <tbl:row>
7943 04 May 21 nicklas 450                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 451                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 452                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 453                     <div class="check">
7943 04 May 21 nicklas 454                       <base:input
7943 04 May 21 nicklas 455                         type="checkbox" 
7943 04 May 21 nicklas 456                         name="<%=itemId%>" 
7943 04 May 21 nicklas 457                         value="<%=itemId%>" 
7943 04 May 21 nicklas 458                         title="<%=name%>" 
7943 04 May 21 nicklas 459                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 460                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 461                       />
7943 04 May 21 nicklas 462                       <base:input 
7943 04 May 21 nicklas 463                         type="radio" 
7943 04 May 21 nicklas 464                         name="item_id" 
7943 04 May 21 nicklas 465                         value="<%=itemId%>" 
7943 04 May 21 nicklas 466                         title="<%=name%>" 
7943 04 May 21 nicklas 467                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 468                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 469                       />
7943 04 May 21 nicklas 470                     </div>
7943 04 May 21 nicklas 471                     <div class="icons">
7943 04 May 21 nicklas 472                       <base:icon 
7943 04 May 21 nicklas 473                         image="deleted.png"
7943 04 May 21 nicklas 474                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 475                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 476                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 477                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 478                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 479                       /><base:icon 
7943 04 May 21 nicklas 480                         image="shared.png" 
7943 04 May 21 nicklas 481                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 482                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 483                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 484                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 485                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 486                       />
7943 04 May 21 nicklas 487                     </div>
7943 04 May 21 nicklas 488                   </div>
7943 04 May 21 nicklas 489                 </tbl:header>
6260 27 Mar 13 nicklas 490                 <tbl:cell column="name"><div 
6260 27 Mar 13 nicklas 491                   class="link table-item"
6260 27 Mar 13 nicklas 492                   data-item-id="<%=itemId%>"
6260 27 Mar 13 nicklas 493                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6260 27 Mar 13 nicklas 494                   data-extra-url="&bioplate_id=<%=bioPlateId%>"
6260 27 Mar 13 nicklas 495                   tabindex="0"
5525 06 Dec 10 nicklas 496                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
5525 06 Dec 10 nicklas 497                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
5525 06 Dec 10 nicklas 498                 <tbl:cell column="eventType"><base:propertyvalue 
5525 06 Dec 10 nicklas 499                     item="<%=item%>" 
5525 06 Dec 10 nicklas 500                     property="eventType"
5525 06 Dec 10 nicklas 501                     enableEditLink="<%=mode.hasEditLink()%>" 
5525 06 Dec 10 nicklas 502                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5525 06 Dec 10 nicklas 503                   /></tbl:cell>
5525 06 Dec 10 nicklas 504                 <tbl:cell column="role"><%=HTML.encodeTags(item.getParticipant(bioPlate).getRole())%></tbl:cell>
5525 06 Dec 10 nicklas 505                 <tbl:cell column="protocol"
5525 06 Dec 10 nicklas 506                   ><base:propertyvalue 
5525 06 Dec 10 nicklas 507                     item="<%=item%>" 
5525 06 Dec 10 nicklas 508                     property="protocol"
5525 06 Dec 10 nicklas 509                     enableEditLink="<%=mode.hasEditLink()%>" 
5525 06 Dec 10 nicklas 510                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5525 06 Dec 10 nicklas 511                   /></tbl:cell>
6997 03 Nov 15 nicklas 512                 <tbl:cell column="kit"
6997 03 Nov 15 nicklas 513                   ><base:propertyvalue 
6997 03 Nov 15 nicklas 514                     item="<%=item%>" 
6997 03 Nov 15 nicklas 515                     property="kit"
6997 03 Nov 15 nicklas 516                     enableEditLink="<%=mode.hasEditLink()%>" 
6997 03 Nov 15 nicklas 517                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
6997 03 Nov 15 nicklas 518                   /></tbl:cell>
5525 06 Dec 10 nicklas 519                 <tbl:cell column="hardware"
5525 06 Dec 10 nicklas 520                   ><base:propertyvalue 
5525 06 Dec 10 nicklas 521                     item="<%=item%>" 
5525 06 Dec 10 nicklas 522                     property="hardware"
5525 06 Dec 10 nicklas 523                     enableEditLink="<%=mode.hasEditLink()%>" 
5525 06 Dec 10 nicklas 524                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5525 06 Dec 10 nicklas 525                   /></tbl:cell>
5525 06 Dec 10 nicklas 526                 <tbl:cell column="eventDate" value="<%=item.getEventDate()%>" />
5525 06 Dec 10 nicklas 527                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
5525 06 Dec 10 nicklas 528                 <tbl:cell column="participants">
5525 06 Dec 10 nicklas 529                   <%
5525 06 Dec 10 nicklas 530                   ItemQuery<BioPlateEventParticipant> participantQuery = item.getParticipants();
5525 06 Dec 10 nicklas 531                   participantQuery.join(Hql.innerJoin(null, "bioPlate", "bpl", true));
5525 06 Dec 10 nicklas 532                   participantQuery.include(Include.ALL);
5525 06 Dec 10 nicklas 533                   participantQuery.order(Orders.asc(Hql.property("role")));
5525 06 Dec 10 nicklas 534                   participantQuery.order(Orders.asc(Hql.property("index")));
5525 06 Dec 10 nicklas 535                   participantQuery.order(Orders.asc(Hql.property("bpl", "name")));
5525 06 Dec 10 nicklas 536                   for (BioPlateEventParticipant participant : participantQuery.list(dc))
5525 06 Dec 10 nicklas 537                   {
5525 06 Dec 10 nicklas 538                     %>
5525 06 Dec 10 nicklas 539                     <base:propertyvalue 
5525 06 Dec 10 nicklas 540                       item="<%=participant%>" 
5525 06 Dec 10 nicklas 541                       property="bioPlate" 
5525 06 Dec 10 nicklas 542                       enableEditLink="<%=mode.hasEditLink()%>" 
5525 06 Dec 10 nicklas 543                       enablePropertyLink="<%=mode.hasPropertyLink()%>"
5525 06 Dec 10 nicklas 544                     /> (<%=participant.getRole()%>)<br>
5525 06 Dec 10 nicklas 545                     <%
5525 06 Dec 10 nicklas 546                   }
5525 06 Dec 10 nicklas 547                   %>
5525 06 Dec 10 nicklas 548                 </tbl:cell>
5525 06 Dec 10 nicklas 549                 <tbl:cell column="owner"
5525 06 Dec 10 nicklas 550                   ><base:propertyvalue 
5525 06 Dec 10 nicklas 551                     item="<%=item%>" 
5525 06 Dec 10 nicklas 552                     property="owner"
5525 06 Dec 10 nicklas 553                     enableEditLink="<%=mode.hasEditLink()%>" 
5525 06 Dec 10 nicklas 554                     enablePropertyLink="<%=mode.hasPropertyLink()%>"  
5525 06 Dec 10 nicklas 555                   /></tbl:cell>
5525 06 Dec 10 nicklas 556                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>                
5525 06 Dec 10 nicklas 557                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
5525 06 Dec 10 nicklas 558                 <tbl:cell column="sharedTo">
5525 06 Dec 10 nicklas 559                   <%
5525 06 Dec 10 nicklas 560                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
5525 06 Dec 10 nicklas 561                   while(sharees.hasNext())
5525 06 Dec 10 nicklas 562                   {
5525 06 Dec 10 nicklas 563                     Nameable n = sharees.next();
5525 06 Dec 10 nicklas 564                     if (mode.hasPropertyLink())
5525 06 Dec 10 nicklas 565                     {
5525 06 Dec 10 nicklas 566                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
5525 06 Dec 10 nicklas 567                     }
5525 06 Dec 10 nicklas 568                     else
5525 06 Dec 10 nicklas 569                     {
5525 06 Dec 10 nicklas 570                       out.write(HTML.encodeTags(n.getName()));
5525 06 Dec 10 nicklas 571                     }
5525 06 Dec 10 nicklas 572                     out.write(sharees.hasNext() ? ", " : "");
5525 06 Dec 10 nicklas 573                   }
5525 06 Dec 10 nicklas 574                   %>
5525 06 Dec 10 nicklas 575                 </tbl:cell>
6038 29 Mar 12 nicklas 576                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6038 29 Mar 12 nicklas 577                   <tbl:cell column="xt-columns" />
6038 29 Mar 12 nicklas 578                 </tbl:xt-cells>
5525 06 Dec 10 nicklas 579               </tbl:row>
5525 06 Dec 10 nicklas 580               <%
5525 06 Dec 10 nicklas 581               }
5525 06 Dec 10 nicklas 582             }
5951 09 Feb 12 nicklas 583           if (numListed == 0)
5951 09 Feb 12 nicklas 584           {
5951 09 Feb 12 nicklas 585             %>
6604 18 Nov 14 nicklas 586             <tbl:panel subclass="bg-filled-50">
5951 09 Feb 12 nicklas 587               <div class="messagecontainer note">
5951 09 Feb 12 nicklas 588                 <%=events == null || events.getTotalCount() == 0 ? "No events were found" : "No events on this page. Please select another page!" %>
5951 09 Feb 12 nicklas 589               </div>
5951 09 Feb 12 nicklas 590             </tbl:panel>
5951 09 Feb 12 nicklas 591             <%
5951 09 Feb 12 nicklas 592           }
5525 06 Dec 10 nicklas 593           %>
5951 09 Feb 12 nicklas 594         </tbl:rows>
5525 06 Dec 10 nicklas 595       </tbl:data>
5525 06 Dec 10 nicklas 596     </tbl:table>
5525 06 Dec 10 nicklas 597     </t:tab>
6041 02 Apr 12 nicklas 598     <t:tab id="overview" title="Overview" 
6041 02 Apr 12 nicklas 599       tooltip="Display a tree overview of related items" />
7166 07 Jun 16 nicklas 600     <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 601       tooltip="Displays a log with the history of this item"
7166 07 Jun 16 nicklas 602       visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>" />
5525 06 Dec 10 nicklas 603     </t:tabcontrol>
5951 09 Feb 12 nicklas 604
5951 09 Feb 12 nicklas 605     <base:buttongroup subclass="dialogbuttons">
6260 27 Mar 13 nicklas 606       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6260 27 Mar 13 nicklas 607       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6260 27 Mar 13 nicklas 608       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5951 09 Feb 12 nicklas 609     </base:buttongroup>
5951 09 Feb 12 nicklas 610
5525 06 Dec 10 nicklas 611   </base:body>
5525 06 Dec 10 nicklas 612   </base:page>
5525 06 Dec 10 nicklas 613   <%
5525 06 Dec 10 nicklas 614 }
5525 06 Dec 10 nicklas 615 finally
5525 06 Dec 10 nicklas 616 {
5525 06 Dec 10 nicklas 617   if (events != null) events.close();
5525 06 Dec 10 nicklas 618   if (dc != null) dc.close();
5525 06 Dec 10 nicklas 619 }
5525 06 Dec 10 nicklas 620 %>