www/views/experiments/reporters/list_reporters.jsp

Code
Comments
Other
Rev Date Author Line
5897 02 Dec 11 nicklas 1 <%-- $Id$
5897 02 Dec 11 nicklas 2   ------------------------------------------------------------------
5897 02 Dec 11 nicklas 3   Copyright (C) 2011 Nicklas Nordborg
5897 02 Dec 11 nicklas 4
5897 02 Dec 11 nicklas 5   This file is part of BASE - BioArray Software Environment.
5897 02 Dec 11 nicklas 6   Available at http://base.thep.lu.se/
5897 02 Dec 11 nicklas 7
5897 02 Dec 11 nicklas 8   BASE is free software; you can redistribute it and/or
5897 02 Dec 11 nicklas 9   modify it under the terms of the GNU General Public License
5897 02 Dec 11 nicklas 10   as published by the Free Software Foundation; either version 3
5897 02 Dec 11 nicklas 11   of the License, or (at your option) any later version.
5897 02 Dec 11 nicklas 12
5897 02 Dec 11 nicklas 13   BASE is distributed in the hope that it will be useful,
5897 02 Dec 11 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
5897 02 Dec 11 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5897 02 Dec 11 nicklas 16   GNU General Public License for more details.
5897 02 Dec 11 nicklas 17
5897 02 Dec 11 nicklas 18   You should have received a copy of the GNU General Public License
5897 02 Dec 11 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5897 02 Dec 11 nicklas 20   ------------------------------------------------------------------
5897 02 Dec 11 nicklas 21
5897 02 Dec 11 nicklas 22 --%>
5897 02 Dec 11 nicklas 23 <%@ page pageEncoding="UTF-8" session="false"
5897 02 Dec 11 nicklas 24   import="net.sf.basedb.core.SessionControl"
5897 02 Dec 11 nicklas 25   import="net.sf.basedb.core.DbControl"
5897 02 Dec 11 nicklas 26   import="net.sf.basedb.core.Item"
5897 02 Dec 11 nicklas 27   import="net.sf.basedb.core.Type"
5897 02 Dec 11 nicklas 28   import="net.sf.basedb.core.ItemContext"
5897 02 Dec 11 nicklas 29   import="net.sf.basedb.core.Permission"
5897 02 Dec 11 nicklas 30   import="net.sf.basedb.core.Experiment"
5897 02 Dec 11 nicklas 31   import="net.sf.basedb.core.VirtualDb"
5897 02 Dec 11 nicklas 32   import="net.sf.basedb.core.BaseException"
5897 02 Dec 11 nicklas 33   import="net.sf.basedb.core.Reporter"
5897 02 Dec 11 nicklas 34   import="net.sf.basedb.core.DynamicResultIterator"
5897 02 Dec 11 nicklas 35   import="net.sf.basedb.core.PluginDefinition"
5897 02 Dec 11 nicklas 36   import="net.sf.basedb.core.Formula"
5897 02 Dec 11 nicklas 37   import="net.sf.basedb.core.IntensityTransform"
5897 02 Dec 11 nicklas 38   import="net.sf.basedb.core.plugin.GuiContext"
5897 02 Dec 11 nicklas 39   import="net.sf.basedb.core.plugin.Plugin"
5897 02 Dec 11 nicklas 40   import="net.sf.basedb.core.query.Expressions"
5897 02 Dec 11 nicklas 41   import="net.sf.basedb.core.query.Restrictions"
5897 02 Dec 11 nicklas 42   import="net.sf.basedb.core.query.Selects"
5897 02 Dec 11 nicklas 43   import="net.sf.basedb.core.query.Dynamic"
7603 22 Feb 19 nicklas 44   import="net.sf.basedb.core.query.SqlQuery"
5897 02 Dec 11 nicklas 45   import="net.sf.basedb.core.query.SqlResult"
5897 02 Dec 11 nicklas 46   import="net.sf.basedb.util.Enumeration"
5897 02 Dec 11 nicklas 47   import="net.sf.basedb.util.ColorGenerator"
5897 02 Dec 11 nicklas 48   import="net.sf.basedb.util.formatter.LookupFormatter"
5897 02 Dec 11 nicklas 49   import="net.sf.basedb.clients.web.Base"
5897 02 Dec 11 nicklas 50   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
5897 02 Dec 11 nicklas 51   import="net.sf.basedb.clients.web.ModeInfo"
5897 02 Dec 11 nicklas 52   import="net.sf.basedb.clients.web.DynamicUtil"
5897 02 Dec 11 nicklas 53   import="net.sf.basedb.clients.web.WebException"
5897 02 Dec 11 nicklas 54   import="net.sf.basedb.clients.web.util.HTML"
5897 02 Dec 11 nicklas 55   import="net.sf.basedb.util.Values"
5897 02 Dec 11 nicklas 56   import="net.sf.basedb.clients.web.taglib.table.TableColumn"
5897 02 Dec 11 nicklas 57   import="java.util.Map"
5897 02 Dec 11 nicklas 58   import="java.util.HashMap"
5897 02 Dec 11 nicklas 59   import="java.util.List"
5897 02 Dec 11 nicklas 60   import="java.util.LinkedList"
5897 02 Dec 11 nicklas 61   import="java.util.ArrayList"
5897 02 Dec 11 nicklas 62   import="java.util.Set"
5897 02 Dec 11 nicklas 63   import="java.util.HashSet"
5897 02 Dec 11 nicklas 64   import="java.util.Arrays"
5897 02 Dec 11 nicklas 65 %>
5897 02 Dec 11 nicklas 66 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
5897 02 Dec 11 nicklas 67 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
5897 02 Dec 11 nicklas 68 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
5897 02 Dec 11 nicklas 69 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
5897 02 Dec 11 nicklas 70 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
5897 02 Dec 11 nicklas 71 <%!
5897 02 Dec 11 nicklas 72   private static final Item itemType = Item.REPORTER;
5897 02 Dec 11 nicklas 73   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
5897 02 Dec 11 nicklas 74 %>
5897 02 Dec 11 nicklas 75 <%
5897 02 Dec 11 nicklas 76 final int experimentId = Values.getInt(request.getParameter("experiment_id"));
5897 02 Dec 11 nicklas 77 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
5897 02 Dec 11 nicklas 78 final String ID = sc.getId();
5897 02 Dec 11 nicklas 79
5897 02 Dec 11 nicklas 80 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
5897 02 Dec 11 nicklas 81 final String callback = request.getParameter("callback");
5897 02 Dec 11 nicklas 82 final String title = mode.generateTitle("spot data", "spot data");
7954 12 May 21 nicklas 83 final DbControl dc = sc.newDbControl(":List "+itemType);
5897 02 Dec 11 nicklas 84 DynamicResultIterator reporters = null;
5897 02 Dec 11 nicklas 85 try
5897 02 Dec 11 nicklas 86 {
5897 02 Dec 11 nicklas 87   final Experiment experiment = Experiment.getById(dc, experimentId);
5897 02 Dec 11 nicklas 88   final String subContext = "clonedreporters." + experimentId;
5897 02 Dec 11 nicklas 89   final boolean writePermission = experiment.hasPermission(Permission.WRITE);
5897 02 Dec 11 nicklas 90   VirtualDb virtualDb = experiment.getVirtualDb();
5897 02 Dec 11 nicklas 91   if (!virtualDb.hasClonedReporters()) 
5897 02 Dec 11 nicklas 92   {
5897 02 Dec 11 nicklas 93     response.sendRedirect("../index.jsp?ID="+ID + "&cmd=ViewItem&item_id="+experimentId);
5897 02 Dec 11 nicklas 94     return;
5897 02 Dec 11 nicklas 95   }
5897 02 Dec 11 nicklas 96
5897 02 Dec 11 nicklas 97   final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, subContext, null, null);
5897 02 Dec 11 nicklas 98   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
5897 02 Dec 11 nicklas 99   
5897 02 Dec 11 nicklas 100   List<TableColumn> columns = new LinkedList<TableColumn>();
5897 02 Dec 11 nicklas 101   DynamicUtil.addReporterColumns(columns, dc, experiment.getVirtualDb().getReporterCloneTemplate(), "cln.", "@", "[Cln] ");
5897 02 Dec 11 nicklas 102   DynamicUtil.addReporterColumns(columns, dc, "mst.", "@@", "[Mst] ");
5897 02 Dec 11 nicklas 103   DynamicUtil.SelectedInfo selected = DynamicUtil.getSelectedColumns(cc, columns, false);
5897 02 Dec 11 nicklas 104   final boolean hasUpToDateColumn = true;
5897 02 Dec 11 nicklas 105   try
5897 02 Dec 11 nicklas 106   {
7603 22 Feb 19 nicklas 107     final SqlQuery query = Reporter.getDynamicQuery(experiment);
5897 02 Dec 11 nicklas 108     query.select(Selects.expression(Dynamic.reporter("id"), "id", true));
5897 02 Dec 11 nicklas 109     if (hasUpToDateColumn)
5897 02 Dec 11 nicklas 110     {
5897 02 Dec 11 nicklas 111       query.select(
5897 02 Dec 11 nicklas 112         Selects.expression(
5897 02 Dec 11 nicklas 113           Expressions.bool(Restrictions.eq(Dynamic.reporter("version", true), Dynamic.reporter("version", false))),
5897 02 Dec 11 nicklas 114           "upToDate"
5897 02 Dec 11 nicklas 115         ));
5897 02 Dec 11 nicklas 116     }
5897 02 Dec 11 nicklas 117     cc.configureQuery(dc, query, selected.selectedProperties);
5897 02 Dec 11 nicklas 118     query.setFailSafe(true);
5897 02 Dec 11 nicklas 119     reporters = query.iterate(dc);
5897 02 Dec 11 nicklas 120   }
5897 02 Dec 11 nicklas 121   catch (Throwable t)
5897 02 Dec 11 nicklas 122   {
5897 02 Dec 11 nicklas 123     cc.setMessage(t.getMessage());
5897 02 Dec 11 nicklas 124     t.printStackTrace();
5897 02 Dec 11 nicklas 125   }
5897 02 Dec 11 nicklas 126   int numListed = 0;
5897 02 Dec 11 nicklas 127   %>
5897 02 Dec 11 nicklas 128   <base:page title="<%=title%>">
6315 06 Sep 13 nicklas 129   <base:head scripts="table.js,tabcontrol-2.js,~reporters.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css" />
5897 02 Dec 11 nicklas 130   <base:body>
5952 10 Feb 12 nicklas 131     <p:path><p:pathelement
5952 10 Feb 12 nicklas 132       title="Experiments" href="<%="../index.jsp?ID="+ID%>" 
5952 10 Feb 12 nicklas 133       /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" 
5952 10 Feb 12 nicklas 134       /></p:path>
5897 02 Dec 11 nicklas 135
5952 10 Feb 12 nicklas 136     <t:tabcontrol 
5952 10 Feb 12 nicklas 137       id="main" 
5952 10 Feb 12 nicklas 138       subclass="mastertabcontrol content"
6315 06 Sep 13 nicklas 139       active="clonedreporters">
5897 02 Dec 11 nicklas 140     <t:tab id="properties" title="Properties" />
5966 16 Feb 12 nicklas 141     <t:tab id="annotations" title="Annotations" 
5966 16 Feb 12 nicklas 142       tooltip="View annotation values" />
5897 02 Dec 11 nicklas 143     <t:tab id="bioassaysets" title="Bioassay sets" />
5897 02 Dec 11 nicklas 144
5897 02 Dec 11 nicklas 145     <t:tab id="clonedreporters" title="Cloned reporters" >
5897 02 Dec 11 nicklas 146     <tbl:table 
5897 02 Dec 11 nicklas 147       id="reporters" 
5897 02 Dec 11 nicklas 148       columns="<%=cc.getSetting("columns")%>"
5897 02 Dec 11 nicklas 149       sortby="<%=cc.getSortProperty()%>" 
5897 02 Dec 11 nicklas 150       direction="<%=cc.getSortDirection()%>"
5897 02 Dec 11 nicklas 151       action="index.jsp"
5897 02 Dec 11 nicklas 152       sc="<%=sc%>"
5897 02 Dec 11 nicklas 153       item="<%=itemType%>"
5897 02 Dec 11 nicklas 154       subcontext="<%=subContext%>"
6700 30 Jan 15 nicklas 155       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 156       subclass="fulltable"
7982 14 Jun 21 nicklas 157       stickyheaders="<%=cc.getSetting("columns.sticky", "cln.externalId")%>"
5897 02 Dec 11 nicklas 158       >
5897 02 Dec 11 nicklas 159       <tbl:hidden 
5897 02 Dec 11 nicklas 160         name="mode" 
5897 02 Dec 11 nicklas 161         value="<%=mode.getName()%>" 
5897 02 Dec 11 nicklas 162       />
5897 02 Dec 11 nicklas 163       <tbl:hidden 
5897 02 Dec 11 nicklas 164         name="experiment_id" 
5897 02 Dec 11 nicklas 165         value="<%=String.valueOf(experimentId)%>" 
5897 02 Dec 11 nicklas 166       />
5897 02 Dec 11 nicklas 167       <tbl:hidden 
5897 02 Dec 11 nicklas 168         name="callback" 
5897 02 Dec 11 nicklas 169         value="<%=callback%>" 
5897 02 Dec 11 nicklas 170         skip="<%=callback == null%>" 
5897 02 Dec 11 nicklas 171       />
5897 02 Dec 11 nicklas 172       <%
5897 02 Dec 11 nicklas 173       for (TableColumn tc : columns)
5897 02 Dec 11 nicklas 174       {
5897 02 Dec 11 nicklas 175         %>
5897 02 Dec 11 nicklas 176         <tbl:columndef
5897 02 Dec 11 nicklas 177           id="<%=tc.getId()%>"
5897 02 Dec 11 nicklas 178           property="<%=tc.getProperty()%>"
5897 02 Dec 11 nicklas 179           tooltip="<%=tc.getDescription()%>"
5897 02 Dec 11 nicklas 180           datatype="<%=tc.getDatatype().getStringValue()%>"
5897 02 Dec 11 nicklas 181           title="<%=HTML.encodeTags(tc.getTitle())%>"
5897 02 Dec 11 nicklas 182           sortable="<%=tc.getSortable()%>"
5897 02 Dec 11 nicklas 183           filterable="<%=tc.getFilterable()%>"
5897 02 Dec 11 nicklas 184           exportable="<%=tc.getExportable()%>"
5897 02 Dec 11 nicklas 185           show="<%="cln.externalId".equals(tc.getId()) ? "always" : tc.getShow()%>"
5897 02 Dec 11 nicklas 186           formatter="<%=tc.getFormatter()%>"
5897 02 Dec 11 nicklas 187         />
5897 02 Dec 11 nicklas 188         <%
5897 02 Dec 11 nicklas 189       }
5897 02 Dec 11 nicklas 190       %>
5897 02 Dec 11 nicklas 191       <tbl:columndef
5897 02 Dec 11 nicklas 192         id="upToDate"
5897 02 Dec 11 nicklas 193         property="upToDate"
6143 20 Sep 12 nicklas 194         filterproperty="=rep('version')==mrep('version')"
6143 20 Sep 12 nicklas 195         exportproperty="=rep('version')==mrep('version')"
5897 02 Dec 11 nicklas 196         datatype="boolean"
5897 02 Dec 11 nicklas 197         title="Up to date"
5897 02 Dec 11 nicklas 198         filterable="true"
5897 02 Dec 11 nicklas 199         exportable="true"
5897 02 Dec 11 nicklas 200       />
5897 02 Dec 11 nicklas 201       <tbl:columndef 
5897 02 Dec 11 nicklas 202         id="reporterList"
5897 02 Dec 11 nicklas 203         property="£reporterList"
5897 02 Dec 11 nicklas 204         datatype="int"
5897 02 Dec 11 nicklas 205         title="Reporter list"
5897 02 Dec 11 nicklas 206         filterable="true"
5897 02 Dec 11 nicklas 207         enumeration="<%=Base.getReporterListsEnum(dc)%>"
5897 02 Dec 11 nicklas 208         multiple="false"
5897 02 Dec 11 nicklas 209       />
6604 18 Nov 14 nicklas 210       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 211         <tbl:toolbar
5952 10 Feb 12 nicklas 212           subclass="bottomborder"
5952 10 Feb 12 nicklas 213           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 214           >
5952 10 Feb 12 nicklas 215           <tbl:button 
6315 06 Sep 13 nicklas 216             id="btnColumns"
5952 10 Feb 12 nicklas 217             image="columns.png" 
5952 10 Feb 12 nicklas 218             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 219             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 220           />
5952 10 Feb 12 nicklas 221           <tbl:button
6315 06 Sep 13 nicklas 222             id="btnNewReporterList"
5952 10 Feb 12 nicklas 223             image="add.png"
5952 10 Feb 12 nicklas 224             title="New reporter list&hellip;"
5952 10 Feb 12 nicklas 225             tooltip="Create a new reporter list from matching spots"
5952 10 Feb 12 nicklas 226             visible="<%=sc.hasPermission(Permission.CREATE, Item.REPORTERLIST)%>"
5952 10 Feb 12 nicklas 227           />
5952 10 Feb 12 nicklas 228           <tbl:button
6315 06 Sep 13 nicklas 229             id="btnUpdateClonedReporters"
5952 10 Feb 12 nicklas 230             visible="<%=writePermission%>"
5952 10 Feb 12 nicklas 231             image="refresh.png"
5952 10 Feb 12 nicklas 232             title="Update cloned reporters&hellip;"
5952 10 Feb 12 nicklas 233             tooltip="Update all cloned reporter annotations with information from the master table"
5952 10 Feb 12 nicklas 234           />
5952 10 Feb 12 nicklas 235           <tbl:button
6315 06 Sep 13 nicklas 236             id="btnRemoveClonedReporters"
5952 10 Feb 12 nicklas 237             visible="<%=writePermission%>"
5952 10 Feb 12 nicklas 238             image="delete_permanently.png"
5952 10 Feb 12 nicklas 239             title="Remove cloned reporters&hellip;"
5952 10 Feb 12 nicklas 240             tooltip="Remove all cloned reporter annotations"
5952 10 Feb 12 nicklas 241           />
5952 10 Feb 12 nicklas 242           <tbl:button 
6315 06 Sep 13 nicklas 243             id="btnExport"
6315 06 Sep 13 nicklas 244             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 245             image="export.png" 
5952 10 Feb 12 nicklas 246             title="Export&hellip;" 
5952 10 Feb 12 nicklas 247             tooltip="Export data" 
5952 10 Feb 12 nicklas 248             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 249           />
5952 10 Feb 12 nicklas 250         </tbl:toolbar>
5952 10 Feb 12 nicklas 251         <tbl:panel>
6182 23 Oct 12 nicklas 252           <tbl:presetselector />
5952 10 Feb 12 nicklas 253           <tbl:navigator
5952 10 Feb 12 nicklas 254             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 255             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 256             totalrows="<%=reporters == null ? 0 : reporters.getTotalCount()%>" 
5952 10 Feb 12 nicklas 257             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 258           />
5952 10 Feb 12 nicklas 259         </tbl:panel>
5952 10 Feb 12 nicklas 260       </div>
5897 02 Dec 11 nicklas 261       <tbl:data>
5949 08 Feb 12 nicklas 262         <tbl:headers>
5949 08 Feb 12 nicklas 263           <tbl:headerrow>
7943 04 May 21 nicklas 264             <tbl:header clazz="row-index bg-filled-100" />
5949 08 Feb 12 nicklas 265             <tbl:columnheaders />
5949 08 Feb 12 nicklas 266           </tbl:headerrow>
6700 30 Jan 15 nicklas 267           <%
6700 30 Jan 15 nicklas 268           int numFilters = cc.getNumPropertyFilters();
6700 30 Jan 15 nicklas 269           int numRows = cc.getFilterRows();
6700 30 Jan 15 nicklas 270           for (int filterNo = 0; filterNo < numRows; filterNo++)
6700 30 Jan 15 nicklas 271           {
6700 30 Jan 15 nicklas 272             boolean lastRow = filterNo == numRows-1;
6700 30 Jan 15 nicklas 273             %>
6700 30 Jan 15 nicklas 274             <tbl:headerrow>
7943 04 May 21 nicklas 275               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 276                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 277                   <div class="index"></div>
7943 04 May 21 nicklas 278                   <div class="check">
7943 04 May 21 nicklas 279                     <base:icon 
7943 04 May 21 nicklas 280                       subclass="link table-check"
7943 04 May 21 nicklas 281                       image="check_uncheck.png" 
7943 04 May 21 nicklas 282                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 283                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 284                     />
7943 04 May 21 nicklas 285                   </div>
7943 04 May 21 nicklas 286                   <div class="icons">
7943 04 May 21 nicklas 287                     <base:icon
7943 04 May 21 nicklas 288                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 289                       image="add.png"
7943 04 May 21 nicklas 290                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 291                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 292                     /><base:icon
7943 04 May 21 nicklas 293                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 294                       image="remove.png"
7943 04 May 21 nicklas 295                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 296                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 297                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 298                     />
7943 04 May 21 nicklas 299                   </div>
7943 04 May 21 nicklas 300                 </div>
6700 30 Jan 15 nicklas 301               </tbl:header>
6700 30 Jan 15 nicklas 302               <tbl:propertyfilter row="<%=filterNo%>" />
6700 30 Jan 15 nicklas 303             </tbl:headerrow>
6700 30 Jan 15 nicklas 304             <%
6700 30 Jan 15 nicklas 305           }
6700 30 Jan 15 nicklas 306           %>
7913 22 Feb 21 nicklas 307           <tbl:columnsubtitles />
5949 08 Feb 12 nicklas 308         </tbl:headers>
5949 08 Feb 12 nicklas 309         <tbl:rows>
5897 02 Dec 11 nicklas 310           <%
5952 10 Feb 12 nicklas 311           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 312           {
5952 10 Feb 12 nicklas 313             %>
6604 18 Nov 14 nicklas 314             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 315               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 316             </tbl:panel>
5952 10 Feb 12 nicklas 317             <%
5952 10 Feb 12 nicklas 318             cc.setMessage(null);
5952 10 Feb 12 nicklas 319           }
5897 02 Dec 11 nicklas 320           int index = cc.getPage()*cc.getRowsPerPage();
5897 02 Dec 11 nicklas 321           int selectedItemId = cc.getId();
5897 02 Dec 11 nicklas 322           if (reporters != null)
5897 02 Dec 11 nicklas 323           {
6315 06 Sep 13 nicklas 324             boolean writeReporterPermission = sc.hasPermission(Permission.WRITE, Item.REPORTER);
6315 06 Sep 13 nicklas 325             String tooltip = "View this item" + (writeReporterPermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
6315 06 Sep 13 nicklas 326             int firstColumnIndex = hasUpToDateColumn ? 3 : 2;
6315 06 Sep 13 nicklas 327             int externalIdColumn = selected.selectedIds.indexOf("cln.externalId") + firstColumnIndex;
6315 06 Sep 13 nicklas 328             
5897 02 Dec 11 nicklas 329             while (reporters.hasNext())
5897 02 Dec 11 nicklas 330             {
5897 02 Dec 11 nicklas 331               SqlResult item = reporters.next();
5897 02 Dec 11 nicklas 332               int itemId = item.getInt(1);
6315 06 Sep 13 nicklas 333               String name = HTML.encodeTags(item.getString(externalIdColumn));
5897 02 Dec 11 nicklas 334               index++;
5897 02 Dec 11 nicklas 335               numListed++;
5897 02 Dec 11 nicklas 336               %>
5897 02 Dec 11 nicklas 337               <tbl:row>
7943 04 May 21 nicklas 338                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 339                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 340                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 341                     <div class="check">
7943 04 May 21 nicklas 342                       <base:input
7943 04 May 21 nicklas 343                         type="checkbox" 
7943 04 May 21 nicklas 344                         name="<%=itemId%>" 
7943 04 May 21 nicklas 345                         value="<%=itemId%>" 
7943 04 May 21 nicklas 346                         title="<%=name%>" 
7943 04 May 21 nicklas 347                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 348                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 349                       />
7943 04 May 21 nicklas 350                     </div>
7943 04 May 21 nicklas 351                     <div class="icons"></div>
7943 04 May 21 nicklas 352                   </div>
7943 04 May 21 nicklas 353                 </tbl:header>
6315 06 Sep 13 nicklas 354
6315 06 Sep 13 nicklas 355                 <tbl:cell column="upToDate" visible="<%=hasUpToDateColumn %>">
6315 06 Sep 13 nicklas 356                   <%=item.getObject(2) %>
6315 06 Sep 13 nicklas 357                 </tbl:cell>
5897 02 Dec 11 nicklas 358                 <%
6315 06 Sep 13 nicklas 359                 int colIndex = firstColumnIndex;
5897 02 Dec 11 nicklas 360                 for (String columnId : selected.selectedIds)
5897 02 Dec 11 nicklas 361                 {
6315 06 Sep 13 nicklas 362                   if (colIndex == externalIdColumn)
5897 02 Dec 11 nicklas 363                   {
5897 02 Dec 11 nicklas 364                     %>
6315 06 Sep 13 nicklas 365                     <tbl:cell column="cln.externalId"><div 
6315 06 Sep 13 nicklas 366                       class="link table-item"
6315 06 Sep 13 nicklas 367                       data-item-id="<%=itemId%>"
6315 06 Sep 13 nicklas 368                       data-no-edit="<%=writeReporterPermission ? 0 : 1 %>" 
6315 06 Sep 13 nicklas 369                       tabindex="0"
6315 06 Sep 13 nicklas 370                       title="<%=tooltip%>"><%=HTML.encodeTags(name)%></div></tbl:cell>
5897 02 Dec 11 nicklas 371                     <%
5897 02 Dec 11 nicklas 372                   }
5897 02 Dec 11 nicklas 373                   else
5897 02 Dec 11 nicklas 374                   {
5897 02 Dec 11 nicklas 375                     %>
5897 02 Dec 11 nicklas 376                     <tbl:cell column="<%=columnId%>" value="<%=item.getObject(colIndex)%>" />
5897 02 Dec 11 nicklas 377                     <%
5897 02 Dec 11 nicklas 378                   }
5897 02 Dec 11 nicklas 379                   ++colIndex;
5897 02 Dec 11 nicklas 380                 }
5897 02 Dec 11 nicklas 381                 %>
5897 02 Dec 11 nicklas 382               </tbl:row>
5897 02 Dec 11 nicklas 383               <%
5897 02 Dec 11 nicklas 384             }
5897 02 Dec 11 nicklas 385           }
5952 10 Feb 12 nicklas 386           if (numListed == 0)
5952 10 Feb 12 nicklas 387           {
5952 10 Feb 12 nicklas 388             %>
6604 18 Nov 14 nicklas 389             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 390               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 391               <%=reporters == null || reporters.getTotalCount() == 0 ? "No reporters were found" : "No reporters on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 392               </div>
5952 10 Feb 12 nicklas 393             </tbl:panel>
5952 10 Feb 12 nicklas 394             <%
5952 10 Feb 12 nicklas 395           }
5897 02 Dec 11 nicklas 396           %>
5897 02 Dec 11 nicklas 397           </tbl:rows>
5897 02 Dec 11 nicklas 398         </tbl:data>
5897 02 Dec 11 nicklas 399     </tbl:table>
5897 02 Dec 11 nicklas 400     </t:tab>
5897 02 Dec 11 nicklas 401
5897 02 Dec 11 nicklas 402     <t:tab id="overview" title="Overview" 
5897 02 Dec 11 nicklas 403       tooltip="Display a tree overview of related items" />
7166 07 Jun 16 nicklas 404     <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 405       tooltip="Displays a log with the history of this item"
5897 02 Dec 11 nicklas 406       visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>" />
5897 02 Dec 11 nicklas 407     </t:tabcontrol>
5897 02 Dec 11 nicklas 408
5952 10 Feb 12 nicklas 409     <base:buttongroup>
6315 06 Sep 13 nicklas 410       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6315 06 Sep 13 nicklas 411       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6315 06 Sep 13 nicklas 412       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5952 10 Feb 12 nicklas 413     </base:buttongroup>
5952 10 Feb 12 nicklas 414
5897 02 Dec 11 nicklas 415   </base:body>
5897 02 Dec 11 nicklas 416   </base:page>
5897 02 Dec 11 nicklas 417   <%
5897 02 Dec 11 nicklas 418 }
5897 02 Dec 11 nicklas 419 finally
5897 02 Dec 11 nicklas 420 {
5897 02 Dec 11 nicklas 421   if (dc != null) dc.close();
5897 02 Dec 11 nicklas 422 }
5897 02 Dec 11 nicklas 423 %>