www/lims/arrayslides/list_slides.jsp

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