www/views/rawbioassays/rawdata/list_rawdata.jsp

Code
Comments
Other
Rev Date Author Line
1765 13 Jan 06 nicklas 1 <%-- $Id$
1765 13 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell, Nicklas Nordborg
1765 13 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/
1765 13 Jan 06 nicklas 8
1765 13 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1765 13 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
1765 13 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1765 13 Jan 06 nicklas 13
1765 13 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1765 13 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1765 13 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1765 13 Jan 06 nicklas 17   GNU General Public License for more details.
1765 13 Jan 06 nicklas 18
1765 13 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/>.
1765 13 Jan 06 nicklas 21   ------------------------------------------------------------------
1765 13 Jan 06 nicklas 22
1765 13 Jan 06 nicklas 23   @author Nicklas
1765 13 Jan 06 nicklas 24   @version 2.0
1765 13 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1765 13 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1765 13 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1765 13 Jan 06 nicklas 29   import="net.sf.basedb.core.Item"
1765 13 Jan 06 nicklas 30   import="net.sf.basedb.core.ItemContext"
1765 13 Jan 06 nicklas 31   import="net.sf.basedb.core.RawBioAssay"
1933 07 Feb 06 nicklas 32   import="net.sf.basedb.core.RawDataType"
1765 13 Jan 06 nicklas 33   import="net.sf.basedb.core.RawDataProperty"
1943 08 Feb 06 nicklas 34   import="net.sf.basedb.core.ReporterType"
1943 08 Feb 06 nicklas 35   import="net.sf.basedb.core.Feature"
1943 08 Feb 06 nicklas 36   import="net.sf.basedb.core.Reporter"
1943 08 Feb 06 nicklas 37   import="net.sf.basedb.core.ArrayDesignBlock"
1943 08 Feb 06 nicklas 38   import="net.sf.basedb.core.Well"
1765 13 Jan 06 nicklas 39   import="net.sf.basedb.core.ItemQuery"
1765 13 Jan 06 nicklas 40   import="net.sf.basedb.core.DataQuery"
1765 13 Jan 06 nicklas 41   import="net.sf.basedb.core.DataResultIterator"
4866 31 Mar 09 martin 42   import="net.sf.basedb.core.ItemResultIterator"
1943 08 Feb 06 nicklas 43   import="net.sf.basedb.core.ItemResultList"
1765 13 Jan 06 nicklas 44   import="net.sf.basedb.core.Permission"
4866 31 Mar 09 martin 45   import="net.sf.basedb.core.PlateGeometry"
1765 13 Jan 06 nicklas 46   import="net.sf.basedb.core.PluginDefinition"
1943 08 Feb 06 nicklas 47   import="net.sf.basedb.core.ExtendedProperty"
1943 08 Feb 06 nicklas 48   import="net.sf.basedb.core.ExtendedProperties"
1765 13 Jan 06 nicklas 49   import="net.sf.basedb.core.PermissionDeniedException"
1943 08 Feb 06 nicklas 50   import="net.sf.basedb.core.data.RawData"
1943 08 Feb 06 nicklas 51   import="net.sf.basedb.core.data.ReporterData"
2314 23 May 06 nicklas 52   import="net.sf.basedb.core.data.FeatureData"
1765 13 Jan 06 nicklas 53   import="net.sf.basedb.core.query.Restrictions"
1765 13 Jan 06 nicklas 54   import="net.sf.basedb.core.query.Expressions"
1765 13 Jan 06 nicklas 55   import="net.sf.basedb.core.query.Orders"
1765 13 Jan 06 nicklas 56   import="net.sf.basedb.core.query.Hql"
1765 13 Jan 06 nicklas 57   import="net.sf.basedb.core.plugin.GuiContext"
1765 13 Jan 06 nicklas 58   import="net.sf.basedb.core.plugin.Plugin"
1765 13 Jan 06 nicklas 59   import="net.sf.basedb.clients.web.Base"
1765 13 Jan 06 nicklas 60   import="net.sf.basedb.clients.web.ModeInfo"
5064 19 Aug 09 nicklas 61   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
1765 13 Jan 06 nicklas 62   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 63   import="net.sf.basedb.util.Values"
1943 08 Feb 06 nicklas 64   import="net.sf.basedb.util.Enumeration"
2942 22 Nov 06 nicklas 65   import="net.sf.basedb.util.formatter.Formatter"
4860 27 Mar 09 martin 66   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
2942 22 Nov 06 nicklas 67   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4878 03 Apr 09 nicklas 68   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4878 03 Apr 09 nicklas 69   import="net.sf.basedb.clients.web.extensions.JspContext"
4878 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" 
4878 03 Apr 09 nicklas 72   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 73   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6040 30 Mar 12 nicklas 74   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
4878 03 Apr 09 nicklas 75   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1765 13 Jan 06 nicklas 76   import="java.util.List"
1765 13 Jan 06 nicklas 77   import="java.util.Map"
1943 08 Feb 06 nicklas 78   import="java.util.Date"
1765 13 Jan 06 nicklas 79 %>
1765 13 Jan 06 nicklas 80 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1765 13 Jan 06 nicklas 81 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
1855 27 Jan 06 nicklas 82 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1855 27 Jan 06 nicklas 83 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4878 03 Apr 09 nicklas 84 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1765 13 Jan 06 nicklas 85 <%!
1765 13 Jan 06 nicklas 86   private static final Item itemType = Item.RAWDATA;
1765 13 Jan 06 nicklas 87 %>
1765 13 Jan 06 nicklas 88 <%
1765 13 Jan 06 nicklas 89 final int rawBioAssayId = Values.getInt(request.getParameter("rawbioassay_id"));
1765 13 Jan 06 nicklas 90 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1765 13 Jan 06 nicklas 91 final String ID = sc.getId();
1765 13 Jan 06 nicklas 92
1765 13 Jan 06 nicklas 93 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
1765 13 Jan 06 nicklas 94 final String callback = request.getParameter("callback");
1765 13 Jan 06 nicklas 95 final String title = mode.generateTitle("raw data", "raw data");
7954 12 May 21 nicklas 96 final DbControl dc = sc.newDbControl(":List "+itemType);
1765 13 Jan 06 nicklas 97 DataResultIterator<RawData> rawData = null;
1765 13 Jan 06 nicklas 98 try
1765 13 Jan 06 nicklas 99 {
7014 12 Nov 15 nicklas 100   final boolean readReporter = !sc.hasPermission(Permission.DENIED, Item.REPORTER);
1765 13 Jan 06 nicklas 101   RawBioAssay rawBioAssay = RawBioAssay.getById(dc, rawBioAssayId);
1933 07 Feb 06 nicklas 102   RawDataType rawDataType = rawBioAssay.getRawDataType();
2017 17 Feb 06 nicklas 103   final String subContext = rawDataType.getId();
6040 30 Mar 12 nicklas 104   final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST, subContext);
1765 13 Jan 06 nicklas 105
2017 17 Feb 06 nicklas 106   final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, subContext, null, null);
7914 23 Feb 21 nicklas 107   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, rawBioAssay);
1933 07 Feb 06 nicklas 108
1765 13 Jan 06 nicklas 109   final DataQuery<RawData> query = rawBioAssay.getRawData();
4093 18 Jan 08 enell 110   query.join(Hql.leftJoin(null, "reporter", "r", null, true));
4093 18 Jan 08 enell 111   query.join(Hql.leftJoin(null, "feature", "f", null, true));
7914 23 Feb 21 nicklas 112   cc.configureQuery(dc, query, jspContext, true);
1765 13 Jan 06 nicklas 113   if (!"row".equals(cc.getSortProperty())) query.order(Orders.asc(Hql.property("row")));
1765 13 Jan 06 nicklas 114   if (!"column".equals(cc.getSortProperty())) query.order(Orders.asc(Hql.property("column")));
1765 13 Jan 06 nicklas 115
1765 13 Jan 06 nicklas 116   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
1943 08 Feb 06 nicklas 117   final ItemQuery<ReporterType> typeQuery = ReporterType.getQuery();
1943 08 Feb 06 nicklas 118   typeQuery.order(Orders.asc(Hql.property("name")));
1943 08 Feb 06 nicklas 119   typeQuery.setCacheResult(true);
2747 19 Oct 06 enell 120   List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
1943 08 Feb 06 nicklas 121   
4866 31 Mar 09 martin 122   WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
4866 31 Mar 09 martin 123   WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
4866 31 Mar 09 martin 124   
4866 31 Mar 09 martin 125   Enumeration<String, String> plateRows = new Enumeration<String, String>();
4866 31 Mar 09 martin 126   final ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();
4866 31 Mar 09 martin 127   geometryQuery.order(Orders.desc(Hql.property("rows")));
4866 31 Mar 09 martin 128   ItemResultIterator<PlateGeometry> result = geometryQuery.iterate(dc);
4866 31 Mar 09 martin 129   int maxRows = result.next().getRows();
6497 26 Jun 14 nicklas 130   for (int row = 0; row < maxRows && row < 256; row++)
4866 31 Mar 09 martin 131   {
4866 31 Mar 09 martin 132     plateRows.add(Integer.toString(row), rowFormatter.format(row));
4866 31 Mar 09 martin 133   }
4866 31 Mar 09 martin 134   
6497 26 Jun 14 nicklas 135   Enumeration<String, String> plateColumns = new Enumeration<String, String>();
6497 26 Jun 14 nicklas 136   final ItemQuery<PlateGeometry> columnsGeometryQuery = PlateGeometry.getQuery();
6497 26 Jun 14 nicklas 137   columnsGeometryQuery.order(Orders.desc(Hql.property("columns")));
6497 26 Jun 14 nicklas 138   ItemResultIterator<PlateGeometry> columnsResult = columnsGeometryQuery.iterate(dc);
6497 26 Jun 14 nicklas 139   int maxColumns = columnsResult.next().getColumns();
6497 26 Jun 14 nicklas 140   for (int column = 0; column < maxColumns && column < 256; column++)
6497 26 Jun 14 nicklas 141   {
6497 26 Jun 14 nicklas 142     plateColumns.add(Integer.toString(column), columnFormatter.format(column));
6497 26 Jun 14 nicklas 143   }
6497 26 Jun 14 nicklas 144   
2029 20 Feb 06 nicklas 145   try
2029 20 Feb 06 nicklas 146   {
2029 20 Feb 06 nicklas 147     rawData = query.iterate(dc);
2029 20 Feb 06 nicklas 148   }
2029 20 Feb 06 nicklas 149   catch (Throwable t)
2029 20 Feb 06 nicklas 150   {
2029 20 Feb 06 nicklas 151     cc.setMessage(t.getMessage());
5026 28 Jul 09 nicklas 152     t.printStackTrace();
2029 20 Feb 06 nicklas 153   }
1765 13 Jan 06 nicklas 154   int numListed = 0;
2942 22 Nov 06 nicklas 155   final boolean writeReporterPermission = sc.hasPermission(Permission.WRITE, Item.REPORTER);
3453 05 Jun 07 nicklas 156   Formatter<Date> dateFormatter = FormatterFactory.getDateTimeFormatter(sc);
7604 25 Feb 19 nicklas 157   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 158   ExtensionsInvoker<ListColumnAction<RawData,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1765 13 Jan 06 nicklas 159   %>
6311 23 Aug 13 nicklas 160   <base:page title="<%=title%>" id="list-page">
6311 23 Aug 13 nicklas 161   <base:head scripts="table.js,tabcontrol-2.js,~rawdata.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
4878 03 Apr 09 nicklas 162     <ext:scripts context="<%=jspContext%>" />
4878 03 Apr 09 nicklas 163     <ext:stylesheets context="<%=jspContext%>" />
1765 13 Jan 06 nicklas 164   </base:head>
1765 13 Jan 06 nicklas 165   
1765 13 Jan 06 nicklas 166   <base:body>
5952 10 Feb 12 nicklas 167     <p:path><p:pathelement 
5952 10 Feb 12 nicklas 168       title="Raw bioassays" href="<%="../index.jsp?ID="+ID%>"
5952 10 Feb 12 nicklas 169       /><p:pathelement title="<%=HTML.encodeTags(rawBioAssay.getName())%>" 
5952 10 Feb 12 nicklas 170       /></p:path>
5952 10 Feb 12 nicklas 171       
5952 10 Feb 12 nicklas 172     <t:tabcontrol 
5952 10 Feb 12 nicklas 173       id="main" 
5952 10 Feb 12 nicklas 174       subclass="mastertabcontrol content"
6311 23 Aug 13 nicklas 175       active="rawdata">
1855 27 Jan 06 nicklas 176     <t:tab id="properties" title="Properties" />
2875 08 Nov 06 nicklas 177     <t:tab id="annotations" title="Annotations &amp; parameters" 
2875 08 Nov 06 nicklas 178       tooltip="View annotation values and protocol parameters" />
1855 27 Jan 06 nicklas 179     
1855 27 Jan 06 nicklas 180     <t:tab id="rawdata" title="Raw data">
1855 27 Jan 06 nicklas 181
1765 13 Jan 06 nicklas 182     <tbl:table 
5952 10 Feb 12 nicklas 183       id="rawdata"
1765 13 Jan 06 nicklas 184       columns="<%=cc.getSetting("columns")%>"
1765 13 Jan 06 nicklas 185       sortby="<%=cc.getSortProperty()%>" 
1765 13 Jan 06 nicklas 186       direction="<%=cc.getSortDirection()%>"
1765 13 Jan 06 nicklas 187       action="index.jsp"
1765 13 Jan 06 nicklas 188       sc="<%=sc%>"
1765 13 Jan 06 nicklas 189       item="<%=itemType%>"
2017 17 Feb 06 nicklas 190       subcontext="<%=subContext%>"
6698 30 Jan 15 nicklas 191       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 192       subclass="fulltable"
7982 14 Jun 21 nicklas 193       stickyheaders="<%=cc.getSetting("columns.sticky", "position")%>"
1765 13 Jan 06 nicklas 194       >
1765 13 Jan 06 nicklas 195       <tbl:hidden 
1765 13 Jan 06 nicklas 196         name="mode" 
1765 13 Jan 06 nicklas 197         value="<%=mode.getName()%>" 
1765 13 Jan 06 nicklas 198       />
1765 13 Jan 06 nicklas 199       <tbl:hidden 
1765 13 Jan 06 nicklas 200         name="rawbioassay_id" 
1765 13 Jan 06 nicklas 201         value="<%=String.valueOf(rawBioAssayId)%>" 
1765 13 Jan 06 nicklas 202       />
1765 13 Jan 06 nicklas 203       <tbl:hidden 
1765 13 Jan 06 nicklas 204         name="callback" 
1765 13 Jan 06 nicklas 205         value="<%=callback%>" 
1765 13 Jan 06 nicklas 206         skip="<%=callback == null%>" 
1765 13 Jan 06 nicklas 207       />
1765 13 Jan 06 nicklas 208       <tbl:columndef 
1765 13 Jan 06 nicklas 209         id="position"
4387 11 Aug 08 nicklas 210         clazz="uniquecol"
1765 13 Jan 06 nicklas 211         property="position"
1765 13 Jan 06 nicklas 212         datatype="int"
1943 08 Feb 06 nicklas 213         title="[Raw] Position"
1765 13 Jan 06 nicklas 214         sortable="true" 
1765 13 Jan 06 nicklas 215         filterable="true"
1765 13 Jan 06 nicklas 216         exportable="true"
1765 13 Jan 06 nicklas 217         show="always" 
1765 13 Jan 06 nicklas 218       />
1765 13 Jan 06 nicklas 219       <tbl:columndef 
4332 12 Jun 08 martin 220         id="id"
4387 11 Aug 08 nicklas 221         clazz="uniquecol"
4332 12 Jun 08 martin 222         property="id"
4332 12 Jun 08 martin 223         datatype="int"
4332 12 Jun 08 martin 224         title="ID"
4332 12 Jun 08 martin 225         sortable="true"
4332 12 Jun 08 martin 226         filterable="true"
4332 12 Jun 08 martin 227         exportable="true"
4332 12 Jun 08 martin 228       />
4332 12 Jun 08 martin 229       <tbl:columndef 
1765 13 Jan 06 nicklas 230         id="block"
1765 13 Jan 06 nicklas 231         property="block"
1765 13 Jan 06 nicklas 232         datatype="int"
1943 08 Feb 06 nicklas 233         title="[Raw] Block"
1765 13 Jan 06 nicklas 234         sortable="true" 
1765 13 Jan 06 nicklas 235         filterable="true"
1765 13 Jan 06 nicklas 236         exportable="true"
1765 13 Jan 06 nicklas 237       />
1765 13 Jan 06 nicklas 238       <tbl:columndef 
1765 13 Jan 06 nicklas 239         id="metaGridX"
1765 13 Jan 06 nicklas 240         property="metaGridX"
1765 13 Jan 06 nicklas 241         datatype="int"
1943 08 Feb 06 nicklas 242         title="[Raw] Meta grid X"
1765 13 Jan 06 nicklas 243         sortable="true" 
1765 13 Jan 06 nicklas 244         filterable="true"
1765 13 Jan 06 nicklas 245         exportable="true"
1765 13 Jan 06 nicklas 246       />
1765 13 Jan 06 nicklas 247       <tbl:columndef 
1765 13 Jan 06 nicklas 248         id="metaGridY"
1765 13 Jan 06 nicklas 249         property="metaGridY"
1765 13 Jan 06 nicklas 250         datatype="int"
1943 08 Feb 06 nicklas 251         title="[Raw] Meta grid Y"
1765 13 Jan 06 nicklas 252         sortable="true" 
1765 13 Jan 06 nicklas 253         filterable="true"
1765 13 Jan 06 nicklas 254         exportable="true"
1765 13 Jan 06 nicklas 255       />
1765 13 Jan 06 nicklas 256       <tbl:columndef 
1765 13 Jan 06 nicklas 257         id="row"
1765 13 Jan 06 nicklas 258         property="row"
1765 13 Jan 06 nicklas 259         datatype="int"
1943 08 Feb 06 nicklas 260         title="[Raw] Row"
1765 13 Jan 06 nicklas 261         sortable="true" 
1765 13 Jan 06 nicklas 262         filterable="true"
4866 31 Mar 09 martin 263         exportable="true"        
1765 13 Jan 06 nicklas 264       />
1765 13 Jan 06 nicklas 265       <tbl:columndef 
1765 13 Jan 06 nicklas 266         id="column"
1765 13 Jan 06 nicklas 267         property="column"
1765 13 Jan 06 nicklas 268         datatype="int"
1943 08 Feb 06 nicklas 269         title="[Raw] Column"
1765 13 Jan 06 nicklas 270         sortable="true" 
1765 13 Jan 06 nicklas 271         filterable="true"
1765 13 Jan 06 nicklas 272         exportable="true"
1765 13 Jan 06 nicklas 273       />
1765 13 Jan 06 nicklas 274       <tbl:columndef 
1765 13 Jan 06 nicklas 275         id="x"
1765 13 Jan 06 nicklas 276         property="x"
1765 13 Jan 06 nicklas 277         datatype="int"
1943 08 Feb 06 nicklas 278         title="[Raw] X"
1765 13 Jan 06 nicklas 279         sortable="true" 
1765 13 Jan 06 nicklas 280         filterable="true"
1765 13 Jan 06 nicklas 281         exportable="true"
1765 13 Jan 06 nicklas 282       />
1765 13 Jan 06 nicklas 283       <tbl:columndef 
1943 08 Feb 06 nicklas 284         id="y"
1765 13 Jan 06 nicklas 285         property="y"
1765 13 Jan 06 nicklas 286         datatype="int"
1943 08 Feb 06 nicklas 287         title="[Raw] Y"
1765 13 Jan 06 nicklas 288         sortable="true" 
1765 13 Jan 06 nicklas 289         filterable="true"
1765 13 Jan 06 nicklas 290         exportable="true"
1765 13 Jan 06 nicklas 291       />
1765 13 Jan 06 nicklas 292       <%
1765 13 Jan 06 nicklas 293       for (RawDataProperty rdp : rawBioAssay.getRawDataType().getProperties())
1765 13 Jan 06 nicklas 294       {
1765 13 Jan 06 nicklas 295         %>
1765 13 Jan 06 nicklas 296         <tbl:columndef
1765 13 Jan 06 nicklas 297           id="<%="raw."+rdp.getName()%>"
1765 13 Jan 06 nicklas 298           property="<%=rdp.getName()%>"
1765 13 Jan 06 nicklas 299           datatype="<%=rdp.getType().getStringValue()%>"
1943 08 Feb 06 nicklas 300           title="<%="[Raw] "+HTML.encodeTags(rdp.getTitle())%>"
1765 13 Jan 06 nicklas 301           sortable="true" 
1765 13 Jan 06 nicklas 302           filterable="true"
1765 13 Jan 06 nicklas 303           exportable="true"
2942 22 Nov 06 nicklas 304           formatter="<%=FormatterFactory.getExtendedPropertyFormatter(sc, rdp)%>"
1765 13 Jan 06 nicklas 305         />
1765 13 Jan 06 nicklas 306         <%
1765 13 Jan 06 nicklas 307       }
1765 13 Jan 06 nicklas 308       %>
4302 19 May 08 nicklas 309       <tbl:columndef
4302 19 May 08 nicklas 310         id="reporterList"
5425 23 Sep 10 nicklas 311         property="$r.£reporterListScores"
4302 19 May 08 nicklas 312         datatype="int"
4302 19 May 08 nicklas 313         title="[Rep] Reporter list"
4302 19 May 08 nicklas 314         filterable="true"
4302 19 May 08 nicklas 315         enumeration="<%=Base.getReporterListsEnum(dc)%>"
4302 19 May 08 nicklas 316         multiple="false"
4302 19 May 08 nicklas 317       />      
1765 13 Jan 06 nicklas 318       <tbl:columndef 
1943 08 Feb 06 nicklas 319         id="reporter.name"
6698 30 Jan 15 nicklas 320         property="$r.name"
6698 30 Jan 15 nicklas 321         exportproperty="reporter.name"
1765 13 Jan 06 nicklas 322         datatype="string"
1943 08 Feb 06 nicklas 323         title="[Rep] Name"
7014 12 Nov 15 nicklas 324         sortable="<%=readReporter%>" 
7014 12 Nov 15 nicklas 325         filterable="<%=readReporter%>"
7014 12 Nov 15 nicklas 326         exportable="<%=readReporter%>"
1765 13 Jan 06 nicklas 327       />
1943 08 Feb 06 nicklas 328       <%
7014 12 Nov 15 nicklas 329       if (readReporter)
1943 08 Feb 06 nicklas 330       {
7014 12 Nov 15 nicklas 331         %>
7014 12 Nov 15 nicklas 332         <tbl:columndef 
7014 12 Nov 15 nicklas 333           id="reporter.externalId"
7014 12 Nov 15 nicklas 334           clazz="uniquecol"
7014 12 Nov 15 nicklas 335           property="$r.externalId"
7014 12 Nov 15 nicklas 336           exportproperty="reporter.externalId"
7014 12 Nov 15 nicklas 337           datatype="string"
7014 12 Nov 15 nicklas 338           title="[Rep] ID"
7014 12 Nov 15 nicklas 339           sortable="true" 
7014 12 Nov 15 nicklas 340           filterable="true"
7014 12 Nov 15 nicklas 341           exportable="true"
7014 12 Nov 15 nicklas 342         />
7014 12 Nov 15 nicklas 343         <tbl:columndef 
7014 12 Nov 15 nicklas 344           id="reporter.symbol"
7014 12 Nov 15 nicklas 345           property="$r.symbol"
7014 12 Nov 15 nicklas 346           exportproperty="reporter.symbol"
7014 12 Nov 15 nicklas 347           datatype="string"
7014 12 Nov 15 nicklas 348           title="[Rep] Gene symbol"
7014 12 Nov 15 nicklas 349           sortable="true" 
7014 12 Nov 15 nicklas 350           filterable="true"
7014 12 Nov 15 nicklas 351           exportable="true"
7014 12 Nov 15 nicklas 352         />
7014 12 Nov 15 nicklas 353         <tbl:columndef 
7014 12 Nov 15 nicklas 354           id="reporter.description"
7014 12 Nov 15 nicklas 355           property="$r.description"
7014 12 Nov 15 nicklas 356           exportproperty="reporter.description"
7014 12 Nov 15 nicklas 357           datatype="string"
7014 12 Nov 15 nicklas 358           title="[Rep] Description" 
7014 12 Nov 15 nicklas 359           sortable="true" 
7014 12 Nov 15 nicklas 360           filterable="true" 
7014 12 Nov 15 nicklas 361           exportable="true"
7014 12 Nov 15 nicklas 362         />
7014 12 Nov 15 nicklas 363         <tbl:columndef 
7014 12 Nov 15 nicklas 364           id="reporter.lastUpdate"
7014 12 Nov 15 nicklas 365           property="$r.lastUpdate"
7014 12 Nov 15 nicklas 366           exportproperty="reporter.lastUpdate"
7014 12 Nov 15 nicklas 367           datatype="timestamp"
7014 12 Nov 15 nicklas 368           title="[Rep] Last update" 
7014 12 Nov 15 nicklas 369           sortable="true" 
7014 12 Nov 15 nicklas 370           filterable="true" 
7014 12 Nov 15 nicklas 371           exportable="true"
7014 12 Nov 15 nicklas 372           formatter="<%=dateFormatter%>"
7014 12 Nov 15 nicklas 373         />
7014 12 Nov 15 nicklas 374         <%
7014 12 Nov 15 nicklas 375         Enumeration<String, String> types = new Enumeration<String, String>();
7014 12 Nov 15 nicklas 376         ItemResultList<ReporterType> reporterTypes = typeQuery.list(dc);
7014 12 Nov 15 nicklas 377         types.add("", "- none -");
7014 12 Nov 15 nicklas 378         for (ReporterType rt : reporterTypes)
2747 19 Oct 06 enell 379         {
7014 12 Nov 15 nicklas 380           types.add(Integer.toString(rt.getId()), HTML.encodeTags(rt.getName()));
2747 19 Oct 06 enell 381         }
7014 12 Nov 15 nicklas 382         %>
7014 12 Nov 15 nicklas 383         <tbl:columndef 
7014 12 Nov 15 nicklas 384           id="reporter.reporterType"
7014 12 Nov 15 nicklas 385           property="$r.reporterType"
7014 12 Nov 15 nicklas 386           sortproperty="$r.reporterType.name"
7014 12 Nov 15 nicklas 387           exportproperty="reporter.reporterType.name:string"
7014 12 Nov 15 nicklas 388           datatype="int"
7014 12 Nov 15 nicklas 389           enumeration="<%=types%>"
7014 12 Nov 15 nicklas 390           title="[Rep] Type"
7014 12 Nov 15 nicklas 391           sortable="true" 
7014 12 Nov 15 nicklas 392           filterable="true"
7014 12 Nov 15 nicklas 393           exportable="true"
7014 12 Nov 15 nicklas 394         />
7014 12 Nov 15 nicklas 395         <%
7014 12 Nov 15 nicklas 396         if (reporterProperties != null)
7014 12 Nov 15 nicklas 397         {
7014 12 Nov 15 nicklas 398           for (ExtendedProperty ep : reporterProperties)
7014 12 Nov 15 nicklas 399           {
7014 12 Nov 15 nicklas 400             String name = ep.getName();
7014 12 Nov 15 nicklas 401             %>
7014 12 Nov 15 nicklas 402             <tbl:columndef
7014 12 Nov 15 nicklas 403               id="<%="reporter."+name%>"
7014 12 Nov 15 nicklas 404               property="<%="$r."+name%>"
7014 12 Nov 15 nicklas 405               exportproperty="<%="reporter."+name%>"
7014 12 Nov 15 nicklas 406               datatype="<%=ep.getType().getStringValue()%>"
7014 12 Nov 15 nicklas 407               title="<%="[Rep] "+HTML.encodeTags(ep.getTitle())%>"
7014 12 Nov 15 nicklas 408               sortable="true"
7014 12 Nov 15 nicklas 409               filterable="true"
7014 12 Nov 15 nicklas 410               exportable="true"
7014 12 Nov 15 nicklas 411               formatter="<%=FormatterFactory.getExtendedPropertyFormatter(sc, ep)%>"
7014 12 Nov 15 nicklas 412             />
7014 12 Nov 15 nicklas 413             <%
7014 12 Nov 15 nicklas 414           }
7014 12 Nov 15 nicklas 415         }
1943 08 Feb 06 nicklas 416       }
1943 08 Feb 06 nicklas 417       %>
1943 08 Feb 06 nicklas 418       <tbl:columndef 
1943 08 Feb 06 nicklas 419         id="feature.position"
4387 11 Aug 08 nicklas 420         clazz="uniquecol"
6698 30 Jan 15 nicklas 421         property="$f.position"
6698 30 Jan 15 nicklas 422         exportproperty="feature.position"
1943 08 Feb 06 nicklas 423         datatype="int"
1943 08 Feb 06 nicklas 424         title="[Feat] Position" 
1943 08 Feb 06 nicklas 425         sortable="true" 
1943 08 Feb 06 nicklas 426         filterable="true" 
1943 08 Feb 06 nicklas 427         exportable="true"
1943 08 Feb 06 nicklas 428       />
1943 08 Feb 06 nicklas 429       <tbl:columndef 
4093 18 Jan 08 enell 430         id="feature.externalId"
4387 11 Aug 08 nicklas 431         clazz="uniquecol"
6698 30 Jan 15 nicklas 432         property="$f.externalId"
6698 30 Jan 15 nicklas 433         exportproperty="feature.externalId"
4093 18 Jan 08 enell 434         datatype="string"
4093 18 Jan 08 enell 435         title="[Feat] Feature ID" 
4093 18 Jan 08 enell 436         sortable="true" 
4093 18 Jan 08 enell 437         filterable="true" 
4093 18 Jan 08 enell 438         exportable="true"
4093 18 Jan 08 enell 439       />
4093 18 Jan 08 enell 440       <tbl:columndef 
1943 08 Feb 06 nicklas 441         id="feature.block"
6698 30 Jan 15 nicklas 442         property="$f.arrayDesignBlock.blockNumber"
6698 30 Jan 15 nicklas 443         exportproperty="feature.arrayDesignBlock.blockNumber"
1943 08 Feb 06 nicklas 444         datatype="int"
1943 08 Feb 06 nicklas 445         title="[Feat] Block"
1943 08 Feb 06 nicklas 446         sortable="true" 
1943 08 Feb 06 nicklas 447         filterable="true"
1943 08 Feb 06 nicklas 448         exportable="true"
1943 08 Feb 06 nicklas 449       />
1943 08 Feb 06 nicklas 450       <tbl:columndef 
1943 08 Feb 06 nicklas 451         id="feature.metaGridX"
6698 30 Jan 15 nicklas 452         property="$f.arrayDesignBlock.metaGridX"
6935 23 Jun 15 nicklas 453         exportproperty="feature.arrayDesignBlock.metaGridX"
1943 08 Feb 06 nicklas 454         datatype="int"
1943 08 Feb 06 nicklas 455         title="[Feat] Meta grid X"
1943 08 Feb 06 nicklas 456         sortable="true" 
1943 08 Feb 06 nicklas 457         filterable="true"
1943 08 Feb 06 nicklas 458         exportable="true"
1943 08 Feb 06 nicklas 459       />
1943 08 Feb 06 nicklas 460       <tbl:columndef 
1943 08 Feb 06 nicklas 461         id="feature.metaGridY"
6698 30 Jan 15 nicklas 462         property="$f.arrayDesignBlock.metaGridY"
6698 30 Jan 15 nicklas 463         exportproperty="feature.arrayDesignBlock.metaGridY"
1943 08 Feb 06 nicklas 464         datatype="int"
1943 08 Feb 06 nicklas 465         title="[Feat] Meta grid Y"
1943 08 Feb 06 nicklas 466         sortable="true" 
1943 08 Feb 06 nicklas 467         filterable="true"
1943 08 Feb 06 nicklas 468         exportable="true"
1943 08 Feb 06 nicklas 469       />
1943 08 Feb 06 nicklas 470       <tbl:columndef 
1943 08 Feb 06 nicklas 471         id="feature.row"
6698 30 Jan 15 nicklas 472         property="$f.row"
6698 30 Jan 15 nicklas 473         exportproperty="feature.row"
1943 08 Feb 06 nicklas 474         datatype="int"
1943 08 Feb 06 nicklas 475         title="[Feat] Row"
1943 08 Feb 06 nicklas 476         sortable="true" 
1943 08 Feb 06 nicklas 477         filterable="true"
1943 08 Feb 06 nicklas 478         exportable="true"
1943 08 Feb 06 nicklas 479       />
1943 08 Feb 06 nicklas 480       <tbl:columndef 
1943 08 Feb 06 nicklas 481         id="feature.column"
6698 30 Jan 15 nicklas 482         property="$f.column"
6698 30 Jan 15 nicklas 483         exportproperty="feature.column"
1943 08 Feb 06 nicklas 484         datatype="int"
1943 08 Feb 06 nicklas 485         title="[Feat] Column"
1943 08 Feb 06 nicklas 486         sortable="true" 
1943 08 Feb 06 nicklas 487         filterable="true"
1943 08 Feb 06 nicklas 488         exportable="true"
1943 08 Feb 06 nicklas 489       />
1943 08 Feb 06 nicklas 490       <tbl:columndef 
1943 08 Feb 06 nicklas 491         id="feature.blockSizeX"
6698 30 Jan 15 nicklas 492         property="$f.arrayDesignBlock.blockSizeX"
6698 30 Jan 15 nicklas 493         exportproperty="feature.arrayDesignBlock.blockSizeX"
1943 08 Feb 06 nicklas 494         datatype="int"
1943 08 Feb 06 nicklas 495         title="[Feat] Block size X"
1943 08 Feb 06 nicklas 496         sortable="true" 
1943 08 Feb 06 nicklas 497         filterable="true"
1943 08 Feb 06 nicklas 498         exportable="true"
1943 08 Feb 06 nicklas 499       />
1943 08 Feb 06 nicklas 500       <tbl:columndef 
1943 08 Feb 06 nicklas 501         id="feature.blockSizeY"
6698 30 Jan 15 nicklas 502         property="$f.arrayDesignBlock.blockSizeY"
6698 30 Jan 15 nicklas 503         exportproperty="feature.arrayDesignBlock.blockSizeY"
1943 08 Feb 06 nicklas 504         datatype="int"
1943 08 Feb 06 nicklas 505         title="[Feat] Block size Y"
1943 08 Feb 06 nicklas 506         sortable="true" 
1943 08 Feb 06 nicklas 507         filterable="true"
1943 08 Feb 06 nicklas 508         exportable="true"
1943 08 Feb 06 nicklas 509       />
1943 08 Feb 06 nicklas 510       <tbl:columndef 
1943 08 Feb 06 nicklas 511         id="feature.originX"
6698 30 Jan 15 nicklas 512         property="$f.arrayDesignBlock.originX"
6698 30 Jan 15 nicklas 513         exportproperty="feature.arrayDesignBlock.originX"
1943 08 Feb 06 nicklas 514         datatype="int"
1943 08 Feb 06 nicklas 515         title="[Feat] Origin X"
1943 08 Feb 06 nicklas 516         sortable="true" 
1943 08 Feb 06 nicklas 517         filterable="true"
1943 08 Feb 06 nicklas 518         exportable="true"
1943 08 Feb 06 nicklas 519       />
1943 08 Feb 06 nicklas 520       <tbl:columndef 
1943 08 Feb 06 nicklas 521         id="feature.originY"
6698 30 Jan 15 nicklas 522         property="$f.arrayDesignBlock.originY"
6698 30 Jan 15 nicklas 523         exportproperty="feature.arrayDesignBlock.originY"
1943 08 Feb 06 nicklas 524         datatype="int"
1943 08 Feb 06 nicklas 525         title="[Feat] Origin Y"
1943 08 Feb 06 nicklas 526         sortable="true" 
1943 08 Feb 06 nicklas 527         filterable="true"
1943 08 Feb 06 nicklas 528         exportable="true"
1943 08 Feb 06 nicklas 529       />
1943 08 Feb 06 nicklas 530       <tbl:columndef 
1943 08 Feb 06 nicklas 531         id="feature.spacingX"
6698 30 Jan 15 nicklas 532         property="$f.arrayDesignBlock.spacingX"
6698 30 Jan 15 nicklas 533         exportproperty="feature.arrayDesignBlock.spacingX"
1943 08 Feb 06 nicklas 534         datatype="int"
1943 08 Feb 06 nicklas 535         title="[Feat] Spacing X"
1943 08 Feb 06 nicklas 536         sortable="true" 
1943 08 Feb 06 nicklas 537         filterable="true"
1943 08 Feb 06 nicklas 538         exportable="true"
1943 08 Feb 06 nicklas 539       />
1943 08 Feb 06 nicklas 540       <tbl:columndef 
1943 08 Feb 06 nicklas 541         id="feature.spacingY"
6698 30 Jan 15 nicklas 542         property="$f.arrayDesignBlock.spacingY"
6698 30 Jan 15 nicklas 543         exportproperty="feature.arrayDesignBlock.spacingY"
1943 08 Feb 06 nicklas 544         datatype="int"
1943 08 Feb 06 nicklas 545         title="[Feat] Spacing Y"
1943 08 Feb 06 nicklas 546         sortable="true" 
1943 08 Feb 06 nicklas 547         filterable="true"
1943 08 Feb 06 nicklas 548         exportable="true"
1943 08 Feb 06 nicklas 549       />
1943 08 Feb 06 nicklas 550       <tbl:columndef 
1943 08 Feb 06 nicklas 551         id="well.row"
6698 30 Jan 15 nicklas 552         property="$f.well.row"
6698 30 Jan 15 nicklas 553         exportproperty="feature.well.row"
1943 08 Feb 06 nicklas 554         datatype="int"
1943 08 Feb 06 nicklas 555         title="[Well] Row" 
1943 08 Feb 06 nicklas 556         sortable="true" 
4866 31 Mar 09 martin 557         filterable="true"
4866 31 Mar 09 martin 558         enumeration="<%=plateRows%>" 
1943 08 Feb 06 nicklas 559         exportable="true"
4866 31 Mar 09 martin 560         formatter="<%=rowFormatter%>"
1943 08 Feb 06 nicklas 561       />
1943 08 Feb 06 nicklas 562       <tbl:columndef 
1943 08 Feb 06 nicklas 563         id="well.column"
6698 30 Jan 15 nicklas 564         property="$f.well.column"
6698 30 Jan 15 nicklas 565         exportproperty="feature.well.column"
1943 08 Feb 06 nicklas 566         datatype="int"
1943 08 Feb 06 nicklas 567         title="[Well] Column" 
1943 08 Feb 06 nicklas 568         sortable="true" 
1943 08 Feb 06 nicklas 569         filterable="true" 
6497 26 Jun 14 nicklas 570         enumeration="<%=plateColumns%>" 
1943 08 Feb 06 nicklas 571         exportable="true"
4866 31 Mar 09 martin 572         formatter="<%=columnFormatter%>"
1943 08 Feb 06 nicklas 573       />
1943 08 Feb 06 nicklas 574       <tbl:columndef 
1943 08 Feb 06 nicklas 575         id="well.plate"
6698 30 Jan 15 nicklas 576         property="$f.well.plate.name"
6698 30 Jan 15 nicklas 577         exportproperty="feature.well.plate.name"
1943 08 Feb 06 nicklas 578         datatype="string"
1943 08 Feb 06 nicklas 579         title="[Well] Plate" 
1943 08 Feb 06 nicklas 580         sortable="true" 
1943 08 Feb 06 nicklas 581         filterable="true" 
1943 08 Feb 06 nicklas 582         exportable="true"
1943 08 Feb 06 nicklas 583       />
6040 30 Mar 12 nicklas 584       <tbl:columndef 
6040 30 Mar 12 nicklas 585         id="xt-columns" 
6040 30 Mar 12 nicklas 586         extensions="<%=columnsInvoker%>" 
6040 30 Mar 12 nicklas 587         jspcontext="<%=jspContext%>" 
6040 30 Mar 12 nicklas 588       />
6604 18 Nov 14 nicklas 589       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 590         <tbl:toolbar
5952 10 Feb 12 nicklas 591           subclass="bottomborder"
5952 10 Feb 12 nicklas 592           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 593           >
5952 10 Feb 12 nicklas 594           <tbl:button 
6311 23 Aug 13 nicklas 595             id="btnColumns"
5952 10 Feb 12 nicklas 596             image="columns.png" 
5952 10 Feb 12 nicklas 597             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 598             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 599           />
5952 10 Feb 12 nicklas 600           <tbl:button
6311 23 Aug 13 nicklas 601             id="btnNewReporterList"
5952 10 Feb 12 nicklas 602             image="add.png"
5952 10 Feb 12 nicklas 603             title="New reporter list&hellip;"
5952 10 Feb 12 nicklas 604             tooltip="Create a new reporter list from matching spots"
5952 10 Feb 12 nicklas 605             visible="<%=sc.hasPermission(Permission.CREATE, Item.REPORTERLIST)%>"
5952 10 Feb 12 nicklas 606           />
5952 10 Feb 12 nicklas 607           <tbl:button 
6311 23 Aug 13 nicklas 608             id="btnImport"
6311 23 Aug 13 nicklas 609             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 610             image="import.png" 
5952 10 Feb 12 nicklas 611             title="Import&hellip;" 
5952 10 Feb 12 nicklas 612             tooltip="Import data" 
5952 10 Feb 12 nicklas 613             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 614           />
5952 10 Feb 12 nicklas 615           <tbl:button 
6311 23 Aug 13 nicklas 616             id="btnExport"
6311 23 Aug 13 nicklas 617             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 618             image="export.png" 
5952 10 Feb 12 nicklas 619             title="Export&hellip;" 
5952 10 Feb 12 nicklas 620             tooltip="Export data" 
5952 10 Feb 12 nicklas 621             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 622           />
5952 10 Feb 12 nicklas 623           <tbl:button 
6311 23 Aug 13 nicklas 624             id="btnRunPlugin"
6311 23 Aug 13 nicklas 625             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 626             image="runplugin.png" 
5952 10 Feb 12 nicklas 627             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 628             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 629             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5952 10 Feb 12 nicklas 630           />
5952 10 Feb 12 nicklas 631           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 632             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 633         </tbl:toolbar>
5952 10 Feb 12 nicklas 634         <tbl:panel>
6182 23 Oct 12 nicklas 635           <tbl:presetselector />
5952 10 Feb 12 nicklas 636           <tbl:navigator
5952 10 Feb 12 nicklas 637             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 638             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 639             totalrows="<%=rawData == null ? 0 : rawData.getTotalCount()%>" 
5952 10 Feb 12 nicklas 640             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 641           />
5952 10 Feb 12 nicklas 642         </tbl:panel>
5952 10 Feb 12 nicklas 643       </div>
1765 13 Jan 06 nicklas 644       <tbl:data>
5948 08 Feb 12 nicklas 645         <tbl:headers>
5948 08 Feb 12 nicklas 646           <tbl:headerrow>
7943 04 May 21 nicklas 647             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 648             <tbl:columnheaders />
5948 08 Feb 12 nicklas 649           </tbl:headerrow>
6698 30 Jan 15 nicklas 650           <%
6698 30 Jan 15 nicklas 651           int numFilters = cc.getNumPropertyFilters();
6698 30 Jan 15 nicklas 652           int numRows = cc.getFilterRows();
6698 30 Jan 15 nicklas 653           for (int filterNo = 0; filterNo < numRows; filterNo++)
6698 30 Jan 15 nicklas 654           {
6698 30 Jan 15 nicklas 655             boolean lastRow = filterNo == numRows-1;
6698 30 Jan 15 nicklas 656             %>
6698 30 Jan 15 nicklas 657             <tbl:headerrow>
7943 04 May 21 nicklas 658               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 659                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 660                   <div class="index"></div>
7943 04 May 21 nicklas 661                   <div class="check">
7943 04 May 21 nicklas 662                     <base:icon 
7943 04 May 21 nicklas 663                       subclass="link table-check"
7943 04 May 21 nicklas 664                       image="check_uncheck.png" 
7943 04 May 21 nicklas 665                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 666                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 667                     />
7943 04 May 21 nicklas 668                   </div>
7943 04 May 21 nicklas 669                   <div class="icons">
7943 04 May 21 nicklas 670                     <base:icon
7943 04 May 21 nicklas 671                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 672                       image="add.png"
7943 04 May 21 nicklas 673                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 674                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 675                     /><base:icon
7943 04 May 21 nicklas 676                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 677                       image="remove.png"
7943 04 May 21 nicklas 678                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 679                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 680                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 681                     />
7943 04 May 21 nicklas 682                   </div>
7943 04 May 21 nicklas 683                 </div>
6698 30 Jan 15 nicklas 684               </tbl:header>
6698 30 Jan 15 nicklas 685               <tbl:propertyfilter row="<%=filterNo%>" />
6698 30 Jan 15 nicklas 686             </tbl:headerrow>
6698 30 Jan 15 nicklas 687             <%
6698 30 Jan 15 nicklas 688           }
6698 30 Jan 15 nicklas 689           %>
7913 22 Feb 21 nicklas 690           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 691         </tbl:headers>
5948 08 Feb 12 nicklas 692         <tbl:rows>
1765 13 Jan 06 nicklas 693           <%
5952 10 Feb 12 nicklas 694           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 695           {
5952 10 Feb 12 nicklas 696             %>
6604 18 Nov 14 nicklas 697             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 698               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 699             </tbl:panel>
5952 10 Feb 12 nicklas 700             <%
5952 10 Feb 12 nicklas 701             cc.setMessage(null);
5952 10 Feb 12 nicklas 702           }
1765 13 Jan 06 nicklas 703           int index = cc.getPage()*cc.getRowsPerPage();
2029 20 Feb 06 nicklas 704           int selectedItemId = cc.getId();
2029 20 Feb 06 nicklas 705           if (rawData != null)
1765 13 Jan 06 nicklas 706           {
2433 27 Jun 06 nicklas 707             String tooltip = mode.isSelectionMode() ?
2433 27 Jun 06 nicklas 708               "Select this item" : "View this item";
2029 20 Feb 06 nicklas 709             while (rawData.hasNext())
2029 20 Feb 06 nicklas 710             {
2029 20 Feb 06 nicklas 711               RawData item = rawData.next();
2029 20 Feb 06 nicklas 712               int itemId = item.getId();
2029 20 Feb 06 nicklas 713               index++;
2029 20 Feb 06 nicklas 714               numListed++;
2029 20 Feb 06 nicklas 715               %>
2029 20 Feb 06 nicklas 716               <tbl:row>
7943 04 May 21 nicklas 717                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 718                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 719                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 720                     <div class="check">
7943 04 May 21 nicklas 721                       <base:input
7943 04 May 21 nicklas 722                         type="checkbox" 
7943 04 May 21 nicklas 723                         name="<%=itemId%>" 
7943 04 May 21 nicklas 724                         value="<%=itemId%>" 
7943 04 May 21 nicklas 725                         checked="<%=request.getParameter(Integer.toString(itemId)) != null%>"
7943 04 May 21 nicklas 726                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 727                       />
7943 04 May 21 nicklas 728                       <base:input 
7943 04 May 21 nicklas 729                         type="radio" 
7943 04 May 21 nicklas 730                         name="item_id" 
7943 04 May 21 nicklas 731                         value="<%=itemId%>"
7943 04 May 21 nicklas 732                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 733                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 734                       />
7943 04 May 21 nicklas 735                     </div>
7943 04 May 21 nicklas 736                     <div class="icons"></div>
7943 04 May 21 nicklas 737                   </div>
7943 04 May 21 nicklas 738                 </tbl:header>
6311 23 Aug 13 nicklas 739                 <tbl:cell column="position"><div
6311 23 Aug 13 nicklas 740                   class="link table-item"
6311 23 Aug 13 nicklas 741                   data-item-id="<%=itemId%>"
6311 23 Aug 13 nicklas 742                   data-extra-url="<%="&rawbioassay_id="+rawBioAssayId%>"
6311 23 Aug 13 nicklas 743                   tabindex="0"
2433 27 Jun 06 nicklas 744                   title="<%=tooltip%>"><%=item.getPosition()%></div></tbl:cell>
4332 12 Jun 08 martin 745                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
2029 20 Feb 06 nicklas 746                 <tbl:cell column="block"><%=item.getBlock()%></tbl:cell>
4866 31 Mar 09 martin 747                 <tbl:cell column="row"><tbl:cellvalue value="<%=item.getRow()%>"/></tbl:cell>
4866 31 Mar 09 martin 748                 <tbl:cell column="column"><tbl:cellvalue value="<%=item.getColumn()%>"/></tbl:cell>
2029 20 Feb 06 nicklas 749                 <tbl:cell column="metaGridX"><%=item.getMetaGridX()%></tbl:cell>
2029 20 Feb 06 nicklas 750                 <tbl:cell column="metaGridY"><%=item.getMetaGridY()%></tbl:cell>
2029 20 Feb 06 nicklas 751                 <tbl:cell column="x"><%=item.getX()%></tbl:cell>
2029 20 Feb 06 nicklas 752                 <tbl:cell column="y"><%=item.getY()%></tbl:cell>
1943 08 Feb 06 nicklas 753                 <%
2029 20 Feb 06 nicklas 754                 for (RawDataProperty rdp : rawBioAssay.getRawDataType().getProperties())
1943 08 Feb 06 nicklas 755                 {
1943 08 Feb 06 nicklas 756                   %>
2942 22 Nov 06 nicklas 757                   <tbl:cell column="<%="raw."+rdp.getName()%>"><tbl:cellvalue value="<%=item.getExtended(rdp.getName())%>" /></tbl:cell>
1943 08 Feb 06 nicklas 758                   <%
1943 08 Feb 06 nicklas 759                 }
1943 08 Feb 06 nicklas 760                 %>
1943 08 Feb 06 nicklas 761                 <%
7014 12 Nov 15 nicklas 762                 if (!readReporter)
1943 08 Feb 06 nicklas 763                 {
1943 08 Feb 06 nicklas 764                   %>
7014 12 Nov 15 nicklas 765                   <tbl:cell column="reporter.name"><i>- denied -</i></tbl:cell>
1943 08 Feb 06 nicklas 766                   <%
1943 08 Feb 06 nicklas 767                 }
1943 08 Feb 06 nicklas 768                 else
1943 08 Feb 06 nicklas 769                 {
7014 12 Nov 15 nicklas 770                   ReporterData reporter = item.getReporter();
7014 12 Nov 15 nicklas 771                   if (reporter == null)
2029 20 Feb 06 nicklas 772                   {
7014 12 Nov 15 nicklas 773                     %>
7014 12 Nov 15 nicklas 774                     <tbl:cell column="reporter.name"><i>- none -</i></tbl:cell>
7014 12 Nov 15 nicklas 775                     <tbl:cell column="reporter.externalId"><i>- none -</i></tbl:cell>
7014 12 Nov 15 nicklas 776                     <%
7014 12 Nov 15 nicklas 777                   }
7014 12 Nov 15 nicklas 778                   else
7014 12 Nov 15 nicklas 779                   {
7014 12 Nov 15 nicklas 780                     %>
7014 12 Nov 15 nicklas 781                     <tbl:cell column="reporter.name"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), writeReporterPermission)%></tbl:cell>
7014 12 Nov 15 nicklas 782                     <tbl:cell column="reporter.externalId"><%=HTML.encodeTags(reporter.getExternalId())%></tbl:cell>
7014 12 Nov 15 nicklas 783                     <tbl:cell column="reporter.symbol"><%=HTML.encodeTags(reporter.getSymbol())%></tbl:cell>
7014 12 Nov 15 nicklas 784                     <tbl:cell column="reporter.description"><%=HTML.encodeTags(reporter.getDescription())%></tbl:cell>
7014 12 Nov 15 nicklas 785                     <tbl:cell column="reporter.lastUpdate" value="<%=reporter.getLastUpdate()%>" />
7014 12 Nov 15 nicklas 786                     <tbl:cell column="reporter.reporterType"><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType.name" /></tbl:cell>
7014 12 Nov 15 nicklas 787                     <%
7014 12 Nov 15 nicklas 788                     if (reporterProperties != null)
2313 23 May 06 nicklas 789                     {
7014 12 Nov 15 nicklas 790                       for (ExtendedProperty ep : reporterProperties)
7014 12 Nov 15 nicklas 791                       {
7014 12 Nov 15 nicklas 792                         String name = ep.getName();
7014 12 Nov 15 nicklas 793                         %>
7014 12 Nov 15 nicklas 794                         <tbl:cell column="<%="reporter."+name%>"><tbl:cellvalue value="<%=reporter.getExtended(name)%>" /></tbl:cell>
7014 12 Nov 15 nicklas 795                         <%
7014 12 Nov 15 nicklas 796                       }
2313 23 May 06 nicklas 797                     }
2029 20 Feb 06 nicklas 798                   }
1943 08 Feb 06 nicklas 799                 }
2029 20 Feb 06 nicklas 800                 %>
2029 20 Feb 06 nicklas 801                 <%
2314 23 May 06 nicklas 802                 FeatureData feature = item.getFeature();
2029 20 Feb 06 nicklas 803                 if (feature == null)
1943 08 Feb 06 nicklas 804                 {
1943 08 Feb 06 nicklas 805                   %>
2029 20 Feb 06 nicklas 806                   <tbl:cell column="feature.position"><i>- none -</i></tbl:cell>
4093 18 Jan 08 enell 807                   <tbl:cell column="feature.externalId"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 808                   <tbl:cell column="feature.row"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 809                   <tbl:cell column="feature.column"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 810                   <tbl:cell column="feature.block"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 811                   <tbl:cell column="feature.metaGridX"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 812                   <tbl:cell column="feature.metaGridY"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 813                   <tbl:cell column="feature.blockSizeX"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 814                   <tbl:cell column="feature.blockSizeY"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 815                   <tbl:cell column="feature.originX"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 816                   <tbl:cell column="feature.originY"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 817                   <tbl:cell column="feature.spacingX"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 818                   <tbl:cell column="feature.spacingY"><i>- none -</i></tbl:cell>
1943 08 Feb 06 nicklas 819                   <%
1943 08 Feb 06 nicklas 820                 }
1943 08 Feb 06 nicklas 821                 else
1943 08 Feb 06 nicklas 822                 {
1943 08 Feb 06 nicklas 823                   %>
2029 20 Feb 06 nicklas 824                   <tbl:cell column="feature.position"><%=feature.getPosition()%></tbl:cell>
4093 18 Jan 08 enell 825                   <tbl:cell column="feature.externalId"><%=HTML.encodeTags(feature.getExternalId())%></tbl:cell>
2029 20 Feb 06 nicklas 826                   <tbl:cell column="feature.row"><%=feature.getRow()%></tbl:cell>
2029 20 Feb 06 nicklas 827                   <tbl:cell column="feature.column"><%=feature.getColumn()%></tbl:cell>
1943 08 Feb 06 nicklas 828                   <%
2029 20 Feb 06 nicklas 829                   ArrayDesignBlock block = null;
2029 20 Feb 06 nicklas 830                   try
2029 20 Feb 06 nicklas 831                   {
2029 20 Feb 06 nicklas 832                     block = Feature.getArrayDesignBlock(dc, feature);
2029 20 Feb 06 nicklas 833                   }
2029 20 Feb 06 nicklas 834                   catch (PermissionDeniedException ex)
2029 20 Feb 06 nicklas 835                   {}
2029 20 Feb 06 nicklas 836                   if (block == null)
2029 20 Feb 06 nicklas 837                   {
2029 20 Feb 06 nicklas 838                     %>
2029 20 Feb 06 nicklas 839                     <tbl:cell column="feature.block"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 840                     <tbl:cell column="feature.metaGridX"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 841                     <tbl:cell column="feature.metaGridY"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 842                     <tbl:cell column="feature.blockSizeX"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 843                     <tbl:cell column="feature.blockSizeY"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 844                     <tbl:cell column="feature.originX"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 845                     <tbl:cell column="feature.originY"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 846                     <tbl:cell column="feature.spacingX"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 847                     <tbl:cell column="feature.spacingY"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 848                     <%
2029 20 Feb 06 nicklas 849                   }
2029 20 Feb 06 nicklas 850                   else
2029 20 Feb 06 nicklas 851                   {
2029 20 Feb 06 nicklas 852                     %>
2029 20 Feb 06 nicklas 853                     <tbl:cell column="feature.block"><%=block.getBlockNumber()%></tbl:cell>
2029 20 Feb 06 nicklas 854                     <tbl:cell column="feature.metaGridX"><%=block.getMetaGridX()%></tbl:cell>
2029 20 Feb 06 nicklas 855                     <tbl:cell column="feature.metaGridY"><%=block.getMetaGridY()%></tbl:cell>
2029 20 Feb 06 nicklas 856                     <tbl:cell column="feature.blockSizeX"><%=block.getBlockSizeX()%></tbl:cell>
2029 20 Feb 06 nicklas 857                     <tbl:cell column="feature.blockSizeY"><%=block.getBlockSizeY()%></tbl:cell>
2029 20 Feb 06 nicklas 858                     <tbl:cell column="feature.originX"><%=block.getOriginX()%></tbl:cell>
2029 20 Feb 06 nicklas 859                     <tbl:cell column="feature.originY"><%=block.getOriginY()%></tbl:cell>
2029 20 Feb 06 nicklas 860                     <tbl:cell column="feature.spacingX"><%=block.getSpacingX()%></tbl:cell>
2029 20 Feb 06 nicklas 861                     <tbl:cell column="feature.spacingY"><%=block.getSpacingY()%></tbl:cell>
2029 20 Feb 06 nicklas 862                     <%
2029 20 Feb 06 nicklas 863                   }
2029 20 Feb 06 nicklas 864                   Well well = null;
2029 20 Feb 06 nicklas 865                   boolean readWell = true;
2029 20 Feb 06 nicklas 866                   try
2029 20 Feb 06 nicklas 867                   {
2029 20 Feb 06 nicklas 868                     well = Feature.getWell(dc, feature);
2029 20 Feb 06 nicklas 869                   }
2029 20 Feb 06 nicklas 870                   catch (PermissionDeniedException ex)
2029 20 Feb 06 nicklas 871                   {
2029 20 Feb 06 nicklas 872                     readWell = false;
2029 20 Feb 06 nicklas 873                   }
2029 20 Feb 06 nicklas 874                   if (!readWell)
2029 20 Feb 06 nicklas 875                   {
2029 20 Feb 06 nicklas 876                     %>
2029 20 Feb 06 nicklas 877                     <tbl:cell column="well.row"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 878                     <tbl:cell column="well.column"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 879                     <tbl:cell column="well.plate"><i>- denied -</i></tbl:cell>
2029 20 Feb 06 nicklas 880                     <%
2029 20 Feb 06 nicklas 881                   }
2029 20 Feb 06 nicklas 882                   else if (well == null)
2029 20 Feb 06 nicklas 883                   {
2029 20 Feb 06 nicklas 884                     %>
2029 20 Feb 06 nicklas 885                     <tbl:cell column="well.row"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 886                     <tbl:cell column="well.column"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 887                     <tbl:cell column="well.plate"><i>- none -</i></tbl:cell>
2029 20 Feb 06 nicklas 888                     <%
2029 20 Feb 06 nicklas 889                   }
2029 20 Feb 06 nicklas 890                   else
2029 20 Feb 06 nicklas 891                   {
2029 20 Feb 06 nicklas 892                     %>
4866 31 Mar 09 martin 893                     <tbl:cell column="well.row"><tbl:cellvalue value="<%=well.getRow()%>"/></tbl:cell>
4866 31 Mar 09 martin 894                     <tbl:cell column="well.column"><tbl:cellvalue value="<%=well.getColumn()%>"/></tbl:cell>
2029 20 Feb 06 nicklas 895                     <tbl:cell column="well.plate"><%=well.getPlate().getName()%></tbl:cell>
2029 20 Feb 06 nicklas 896                     <%
2029 20 Feb 06 nicklas 897                   }
1943 08 Feb 06 nicklas 898                 }
2029 20 Feb 06 nicklas 899                 %>
6040 30 Mar 12 nicklas 900                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6040 30 Mar 12 nicklas 901                   <tbl:cell column="xt-columns" />
6040 30 Mar 12 nicklas 902                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 903               </tbl:row>
2029 20 Feb 06 nicklas 904               <%
2029 20 Feb 06 nicklas 905             }
1765 13 Jan 06 nicklas 906           }
5952 10 Feb 12 nicklas 907           if (numListed == 0)
5952 10 Feb 12 nicklas 908           {
5952 10 Feb 12 nicklas 909             %>
6604 18 Nov 14 nicklas 910             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 911               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 912               <%=rawData == null || rawData.getTotalCount() == 0 ? "No raw data were found" : "No raw data on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 913               </div>
5952 10 Feb 12 nicklas 914             </tbl:panel>
5952 10 Feb 12 nicklas 915             <%
5952 10 Feb 12 nicklas 916           }
1765 13 Jan 06 nicklas 917           %>
1765 13 Jan 06 nicklas 918           </tbl:rows>
1765 13 Jan 06 nicklas 919         </tbl:data>
1765 13 Jan 06 nicklas 920     </tbl:table>
1855 27 Jan 06 nicklas 921     </t:tab>
4746 10 Feb 09 nicklas 922     <t:tab id="overview" title="Overview" 
4746 10 Feb 09 nicklas 923       tooltip="Display a tree overview of related items" />
7166 07 Jun 16 nicklas 924     <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 925       tooltip="Displays a log with the history of this item"
7166 07 Jun 16 nicklas 926       visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>" />
1855 27 Jan 06 nicklas 927     </t:tabcontrol>
5952 10 Feb 12 nicklas 928
5952 10 Feb 12 nicklas 929     <base:buttongroup>
6311 23 Aug 13 nicklas 930       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6311 23 Aug 13 nicklas 931       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6311 23 Aug 13 nicklas 932       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5952 10 Feb 12 nicklas 933     </base:buttongroup>
5952 10 Feb 12 nicklas 934
1765 13 Jan 06 nicklas 935   </base:body>
1765 13 Jan 06 nicklas 936   </base:page>
1765 13 Jan 06 nicklas 937   <%
1765 13 Jan 06 nicklas 938 }
1765 13 Jan 06 nicklas 939 finally
1765 13 Jan 06 nicklas 940 {
1765 13 Jan 06 nicklas 941   if (rawData != null) rawData.close();
1765 13 Jan 06 nicklas 942   if (dc != null) dc.close();
1765 13 Jan 06 nicklas 943 }
3675 16 Aug 07 jari 944 %>