www/views/jobs/list_jobs.jsp

Code
Comments
Other
Rev Date Author Line
1881 01 Feb 06 nicklas 1 <%-- $Id$
1881 01 Feb 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, Nicklas Nordborg
1881 01 Feb 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/
1881 01 Feb 06 nicklas 8
1881 01 Feb 06 nicklas 9   BASE is free software; you can redistribute it and/or
1881 01 Feb 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
1881 01 Feb 06 nicklas 12   of the License, or (at your option) any later version.
1881 01 Feb 06 nicklas 13
1881 01 Feb 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1881 01 Feb 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1881 01 Feb 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1881 01 Feb 06 nicklas 17   GNU General Public License for more details.
1881 01 Feb 06 nicklas 18
1881 01 Feb 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/>.
1881 01 Feb 06 nicklas 21   ------------------------------------------------------------------
1881 01 Feb 06 nicklas 22
1881 01 Feb 06 nicklas 23   @author Nicklas
1881 01 Feb 06 nicklas 24   @version 2.0
1881 01 Feb 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1881 01 Feb 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1881 01 Feb 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1881 01 Feb 06 nicklas 29   import="net.sf.basedb.core.Item"
1881 01 Feb 06 nicklas 30   import="net.sf.basedb.core.Job"
4311 23 May 08 nicklas 31   import="net.sf.basedb.core.JobAgent"
7267 15 Dec 16 nicklas 32   import="net.sf.basedb.core.ItemSubtype"
1881 01 Feb 06 nicklas 33   import="net.sf.basedb.core.ItemQuery"
1881 01 Feb 06 nicklas 34   import="net.sf.basedb.core.Include"
1881 01 Feb 06 nicklas 35   import="net.sf.basedb.core.ItemResultIterator"
1881 01 Feb 06 nicklas 36   import="net.sf.basedb.core.ItemResultList"
1881 01 Feb 06 nicklas 37   import="net.sf.basedb.core.ItemContext"
1881 01 Feb 06 nicklas 38   import="net.sf.basedb.core.Permission"
6447 15 Apr 14 nicklas 39   import="net.sf.basedb.core.Nameable"
1881 01 Feb 06 nicklas 40   import="net.sf.basedb.core.PluginDefinition"
7307 07 Mar 17 nicklas 41   import="net.sf.basedb.core.Project"
1881 01 Feb 06 nicklas 42   import="net.sf.basedb.core.PermissionDeniedException"
1881 01 Feb 06 nicklas 43   import="net.sf.basedb.core.query.Hql"
4311 23 May 08 nicklas 44   import="net.sf.basedb.core.query.Orders"
1881 01 Feb 06 nicklas 45   import="net.sf.basedb.core.query.Restrictions"
1881 01 Feb 06 nicklas 46   import="net.sf.basedb.core.query.Expressions"
1881 01 Feb 06 nicklas 47   import="net.sf.basedb.core.plugin.GuiContext"
1881 01 Feb 06 nicklas 48   import="net.sf.basedb.core.plugin.Plugin"
1881 01 Feb 06 nicklas 49   import="net.sf.basedb.util.Enumeration"
6447 15 Apr 14 nicklas 50   import="net.sf.basedb.util.ShareableUtil"
1881 01 Feb 06 nicklas 51   import="net.sf.basedb.clients.web.Base"
1881 01 Feb 06 nicklas 52   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 53   import="net.sf.basedb.clients.web.PermissionUtil"
1881 01 Feb 06 nicklas 54   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 55   import="net.sf.basedb.util.Values"
2942 22 Nov 06 nicklas 56   import="net.sf.basedb.util.formatter.Formatter"
2942 22 Nov 06 nicklas 57   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4887 06 Apr 09 nicklas 58   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4887 06 Apr 09 nicklas 59   import="net.sf.basedb.clients.web.extensions.JspContext"
4887 06 Apr 09 nicklas 60   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 61   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4887 06 Apr 09 nicklas 62   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 63   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6040 30 Mar 12 nicklas 64   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
4887 06 Apr 09 nicklas 65   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
6447 15 Apr 14 nicklas 66   import="java.util.Iterator"
1881 01 Feb 06 nicklas 67   import="java.util.List"
1881 01 Feb 06 nicklas 68   import="java.util.Map"
2942 22 Nov 06 nicklas 69   import="java.util.Date"
1881 01 Feb 06 nicklas 70 %>
1881 01 Feb 06 nicklas 71 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1881 01 Feb 06 nicklas 72 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4887 06 Apr 09 nicklas 73 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1881 01 Feb 06 nicklas 74 <%!
1881 01 Feb 06 nicklas 75   private static final Item itemType = Item.JOB;
1881 01 Feb 06 nicklas 76   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
1881 01 Feb 06 nicklas 77   
1881 01 Feb 06 nicklas 78   private static final Enumeration<String, String> status = new Enumeration<String, String>();
1881 01 Feb 06 nicklas 79   private static final Enumeration<String, String> pluginTypes = new Enumeration<String, String>();
1881 01 Feb 06 nicklas 80   private static final Enumeration<String, String> execTime = new Enumeration<String, String>();
1881 01 Feb 06 nicklas 81   static
1881 01 Feb 06 nicklas 82   {
1881 01 Feb 06 nicklas 83     for (Job.Status s : Job.Status.values())
1881 01 Feb 06 nicklas 84     {
1881 01 Feb 06 nicklas 85       status.add(Integer.toString(s.getValue()), HTML.encodeTags(s.toString()));
1881 01 Feb 06 nicklas 86     }
1881 01 Feb 06 nicklas 87     for (Plugin.MainType pt : Plugin.MainType.values())
1881 01 Feb 06 nicklas 88     {
1881 01 Feb 06 nicklas 89       pluginTypes.add(Integer.toString(pt.getValue()), HTML.encodeTags(pt.toString()));
1881 01 Feb 06 nicklas 90     }
1881 01 Feb 06 nicklas 91     for (Job.ExecutionTime et : Job.ExecutionTime.values())
1881 01 Feb 06 nicklas 92     {
1881 01 Feb 06 nicklas 93       execTime.add(Integer.toString(et.getValue()), HTML.encodeTags(et.toString()));
1881 01 Feb 06 nicklas 94     }
1881 01 Feb 06 nicklas 95   }
1881 01 Feb 06 nicklas 96 %>
1881 01 Feb 06 nicklas 97 <%
1881 01 Feb 06 nicklas 98 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1881 01 Feb 06 nicklas 99 final String ID = sc.getId();
1881 01 Feb 06 nicklas 100 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
1881 01 Feb 06 nicklas 101 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
3880 26 Oct 07 nicklas 102 final Date now = new Date();
1881 01 Feb 06 nicklas 103 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
1881 01 Feb 06 nicklas 104 final String callback = request.getParameter("callback");
1881 01 Feb 06 nicklas 105 final String title = mode.generateTitle("job", "jobs");
7954 12 May 21 nicklas 106 final DbControl dc = sc.newDbControl(":List "+itemType);
1881 01 Feb 06 nicklas 107 ItemResultIterator<Job> jobs = null;
1881 01 Feb 06 nicklas 108 try
1881 01 Feb 06 nicklas 109 {
4311 23 May 08 nicklas 110   
4311 23 May 08 nicklas 111   // Get all job agents
4311 23 May 08 nicklas 112   final ItemQuery<JobAgent> agentQuery = JobAgent.getQuery();
4311 23 May 08 nicklas 113   agentQuery.include(Include.ALL);
4311 23 May 08 nicklas 114   agentQuery.order(Orders.asc(Hql.property("name")));
4311 23 May 08 nicklas 115   agentQuery.setCacheResult(true);
4311 23 May 08 nicklas 116   Enumeration<String, String> agents = new Enumeration<String, String>();
4311 23 May 08 nicklas 117   for (JobAgent a : agentQuery.list(dc))
4311 23 May 08 nicklas 118   {
4311 23 May 08 nicklas 119     agents.add(Integer.toString(a.getId()), a.getName());
4311 23 May 08 nicklas 120   }
7267 15 Dec 16 nicklas 121   // Load subtypes
7267 15 Dec 16 nicklas 122   final ItemQuery<ItemSubtype> typeQuery = ItemSubtype.getQuery(itemType);
7267 15 Dec 16 nicklas 123   typeQuery.order(Orders.asc(Hql.property("name")));
7267 15 Dec 16 nicklas 124   typeQuery.setCacheResult(true);
7307 07 Mar 17 nicklas 125   
7307 07 Mar 17 nicklas 126   // Load projects
7307 07 Mar 17 nicklas 127   final ItemQuery<Project> projectQuery = Project.getQuery();
7307 07 Mar 17 nicklas 128   projectQuery.setIncludes(cc.getInclude());
7307 07 Mar 17 nicklas 129   projectQuery.order(Orders.asc(Hql.property("name")));
7307 07 Mar 17 nicklas 130   projectQuery.setCacheResult(true);
7267 15 Dec 16 nicklas 131
1881 01 Feb 06 nicklas 132   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 133   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2029 20 Feb 06 nicklas 134   try
2029 20 Feb 06 nicklas 135   {
7914 23 Feb 21 nicklas 136     final ItemQuery<Job> query = Base.getConfiguredQuery(dc, cc, jspContext, true, Job.getQuery(), mode);
2029 20 Feb 06 nicklas 137     jobs = query.iterate(dc);
2029 20 Feb 06 nicklas 138   }
2029 20 Feb 06 nicklas 139   catch (Throwable t)
2029 20 Feb 06 nicklas 140   {
2029 20 Feb 06 nicklas 141     cc.setMessage(t.getMessage());
5429 27 Sep 10 nicklas 142     t.printStackTrace();
2029 20 Feb 06 nicklas 143   }
1881 01 Feb 06 nicklas 144   int numListed = 0;
2942 22 Nov 06 nicklas 145   Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
7604 25 Feb 19 nicklas 146   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 147   ExtensionsInvoker<ListColumnAction<Job,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1881 01 Feb 06 nicklas 148   %>
6311 23 Aug 13 nicklas 149   <base:page title="<%=title==null ? "Jobs" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6311 23 Aug 13 nicklas 150   <base:head scripts="table.js,~jobs.js" styles="table.css,toolbar.css,progressbar.css">
4887 06 Apr 09 nicklas 151     <ext:scripts context="<%=jspContext%>" />
4887 06 Apr 09 nicklas 152     <ext:stylesheets context="<%=jspContext%>" />
1881 01 Feb 06 nicklas 153   </base:head>
1881 01 Feb 06 nicklas 154   
1881 01 Feb 06 nicklas 155   <base:body>
5952 10 Feb 12 nicklas 156     <h1><%=title==null ? "Jobs" : title%></h1>
5952 10 Feb 12 nicklas 157     <div class="content">
1881 01 Feb 06 nicklas 158     <tbl:table 
1881 01 Feb 06 nicklas 159       id="jobs" 
1881 01 Feb 06 nicklas 160       columns="<%=cc.getSetting("columns")%>"
1881 01 Feb 06 nicklas 161       sortby="<%=cc.getSortProperty()%>" 
1881 01 Feb 06 nicklas 162       direction="<%=cc.getSortDirection()%>"
1881 01 Feb 06 nicklas 163       action="index.jsp"
1881 01 Feb 06 nicklas 164       sc="<%=sc%>"
1881 01 Feb 06 nicklas 165       item="<%=itemType%>"
6703 02 Feb 15 nicklas 166       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 167       subclass="fulltable"
7982 14 Jun 21 nicklas 168       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
1881 01 Feb 06 nicklas 169       >
1881 01 Feb 06 nicklas 170       <tbl:hidden 
1881 01 Feb 06 nicklas 171         name="mode" 
1881 01 Feb 06 nicklas 172         value="<%=mode.getName()%>" 
1881 01 Feb 06 nicklas 173       />
1881 01 Feb 06 nicklas 174       <tbl:hidden 
1881 01 Feb 06 nicklas 175         name="callback" 
1881 01 Feb 06 nicklas 176         value="<%=callback%>" 
1881 01 Feb 06 nicklas 177         skip="<%=callback == null%>" 
1881 01 Feb 06 nicklas 178       />
1881 01 Feb 06 nicklas 179       <tbl:columndef 
1881 01 Feb 06 nicklas 180         id="name"
1881 01 Feb 06 nicklas 181         property="name"
1881 01 Feb 06 nicklas 182         datatype="string"
1881 01 Feb 06 nicklas 183         title="Name"
1881 01 Feb 06 nicklas 184         sortable="true" 
1881 01 Feb 06 nicklas 185         filterable="true"
1881 01 Feb 06 nicklas 186         exportable="true"
1881 01 Feb 06 nicklas 187         show="always" 
1881 01 Feb 06 nicklas 188       />
1881 01 Feb 06 nicklas 189       <tbl:columndef 
4332 12 Jun 08 martin 190         id="id"
4387 11 Aug 08 nicklas 191         clazz="uniquecol"
4332 12 Jun 08 martin 192         property="id"
4332 12 Jun 08 martin 193         datatype="int"
4332 12 Jun 08 martin 194         title="ID"
4332 12 Jun 08 martin 195         sortable="true"
4332 12 Jun 08 martin 196         filterable="true"
4332 12 Jun 08 martin 197         exportable="true"
4332 12 Jun 08 martin 198       />
4332 12 Jun 08 martin 199       <tbl:columndef 
6439 31 Mar 14 nicklas 200         id="externalId"
6439 31 Mar 14 nicklas 201         property="externalId"
6439 31 Mar 14 nicklas 202         datatype="string"
6439 31 Mar 14 nicklas 203         title="External ID"
6439 31 Mar 14 nicklas 204         sortable="true"
6439 31 Mar 14 nicklas 205         filterable="true"
6439 31 Mar 14 nicklas 206         exportable="true"
6439 31 Mar 14 nicklas 207       />
6439 31 Mar 14 nicklas 208       <tbl:columndef 
7267 15 Dec 16 nicklas 209         id="itemSubtype"
7267 15 Dec 16 nicklas 210         property="itemSubtype"
7267 15 Dec 16 nicklas 211         sortproperty="itemSubtype.name"
7267 15 Dec 16 nicklas 212         exportproperty="itemSubtype.name:string"
7267 15 Dec 16 nicklas 213         datatype="int"
7290 31 Jan 17 nicklas 214         enumeration="<%=Enumeration.fromItems(typeQuery.list(dc), "-none-")%>"
7267 15 Dec 16 nicklas 215         title="Subtype"
7267 15 Dec 16 nicklas 216         sortable="true" 
7267 15 Dec 16 nicklas 217         filterable="true"
7267 15 Dec 16 nicklas 218         exportable="true"
7267 15 Dec 16 nicklas 219       />
7267 15 Dec 16 nicklas 220       <tbl:columndef 
1881 01 Feb 06 nicklas 221         id="owner"
1881 01 Feb 06 nicklas 222         property="owner.name"
1881 01 Feb 06 nicklas 223         datatype="string"
1881 01 Feb 06 nicklas 224         title="Owner"
1881 01 Feb 06 nicklas 225         sortable="true" 
1881 01 Feb 06 nicklas 226         filterable="true"
1881 01 Feb 06 nicklas 227         exportable="true"
1881 01 Feb 06 nicklas 228       />
1881 01 Feb 06 nicklas 229       <tbl:columndef 
1881 01 Feb 06 nicklas 230         id="priority"
1881 01 Feb 06 nicklas 231         property="priority"
1881 01 Feb 06 nicklas 232         datatype="int"
1881 01 Feb 06 nicklas 233         title="Priority"
1881 01 Feb 06 nicklas 234         sortable="true" 
1881 01 Feb 06 nicklas 235         filterable="true"
1881 01 Feb 06 nicklas 236         exportable="true"
1881 01 Feb 06 nicklas 237       />
1881 01 Feb 06 nicklas 238       <tbl:columndef 
1881 01 Feb 06 nicklas 239         id="status"
1881 01 Feb 06 nicklas 240         property="status"
1881 01 Feb 06 nicklas 241         datatype="int"
1881 01 Feb 06 nicklas 242         enumeration="<%=status%>"
1881 01 Feb 06 nicklas 243         title="Status"
1881 01 Feb 06 nicklas 244         sortable="true" 
1881 01 Feb 06 nicklas 245         filterable="true"
1881 01 Feb 06 nicklas 246         exportable="true"
1881 01 Feb 06 nicklas 247       />
1881 01 Feb 06 nicklas 248       <tbl:columndef 
1881 01 Feb 06 nicklas 249         id="statusMessage"
1881 01 Feb 06 nicklas 250         property="statusMessage"
1881 01 Feb 06 nicklas 251         datatype="string"
1881 01 Feb 06 nicklas 252         title="Status message"
1881 01 Feb 06 nicklas 253         sortable="true" 
1881 01 Feb 06 nicklas 254         filterable="true"
1881 01 Feb 06 nicklas 255         exportable="true"
1881 01 Feb 06 nicklas 256       />
1881 01 Feb 06 nicklas 257       <tbl:columndef 
4380 06 Aug 08 nicklas 258         id="dryRun"
4380 06 Aug 08 nicklas 259         property="dryRun"
4380 06 Aug 08 nicklas 260         datatype="boolean"
4380 06 Aug 08 nicklas 261         title="Dry run"
4380 06 Aug 08 nicklas 262         sortable="true" 
4380 06 Aug 08 nicklas 263         filterable="true"
4380 06 Aug 08 nicklas 264         exportable="true"
4380 06 Aug 08 nicklas 265       />
4380 06 Aug 08 nicklas 266       <tbl:columndef 
2643 15 Sep 06 nicklas 267         id="stackTrace"
2643 15 Sep 06 nicklas 268         property="stackTrace"
2643 15 Sep 06 nicklas 269         datatype="string"
2643 15 Sep 06 nicklas 270         title="Stack trace"
2643 15 Sep 06 nicklas 271         sortable="true" 
2643 15 Sep 06 nicklas 272         filterable="true"
2643 15 Sep 06 nicklas 273         exportable="true"
2643 15 Sep 06 nicklas 274       />
2643 15 Sep 06 nicklas 275       <tbl:columndef 
1881 01 Feb 06 nicklas 276         id="server"
1881 01 Feb 06 nicklas 277         property="server"
1881 01 Feb 06 nicklas 278         datatype="string"
1881 01 Feb 06 nicklas 279         title="Server"
1881 01 Feb 06 nicklas 280         sortable="true" 
1881 01 Feb 06 nicklas 281         filterable="true"
1881 01 Feb 06 nicklas 282         exportable="true"
1881 01 Feb 06 nicklas 283       />
1881 01 Feb 06 nicklas 284       <tbl:columndef 
7265 14 Dec 16 nicklas 285         id="node"
7265 14 Dec 16 nicklas 286         property="node"
7265 14 Dec 16 nicklas 287         datatype="string"
7265 14 Dec 16 nicklas 288         title="Node"
7265 14 Dec 16 nicklas 289         sortable="true" 
7265 14 Dec 16 nicklas 290         filterable="true"
7265 14 Dec 16 nicklas 291         exportable="true"
7265 14 Dec 16 nicklas 292       />
7265 14 Dec 16 nicklas 293       <tbl:columndef 
4311 23 May 08 nicklas 294         id="jobagent"
4311 23 May 08 nicklas 295         property="jobAgentId"
4311 23 May 08 nicklas 296         datatype="int"
4311 23 May 08 nicklas 297         title="Job agent"
4311 23 May 08 nicklas 298         filterable="true"
4311 23 May 08 nicklas 299         enumeration="<%=agents%>"
4311 23 May 08 nicklas 300       />
4311 23 May 08 nicklas 301       <tbl:columndef 
5351 26 May 10 nicklas 302         id="percentComplete"
5351 26 May 10 nicklas 303         property="percentComplete"
1881 01 Feb 06 nicklas 304         datatype="int"
5351 26 May 10 nicklas 305         title="Percent complete"
1881 01 Feb 06 nicklas 306         sortable="true" 
1881 01 Feb 06 nicklas 307         filterable="true"
1881 01 Feb 06 nicklas 308         exportable="true"
1881 01 Feb 06 nicklas 309       />
1881 01 Feb 06 nicklas 310       <tbl:columndef 
5351 26 May 10 nicklas 311         id="estimatedExecutionTime"
5351 26 May 10 nicklas 312         property="estimatedExecutionTime"
1881 01 Feb 06 nicklas 313         datatype="int"
5351 26 May 10 nicklas 314         enumeration="<%=execTime%>"
5351 26 May 10 nicklas 315         title="Estimated time"
5351 26 May 10 nicklas 316         tooltip="An estimation of the execution time of the plugin"
1881 01 Feb 06 nicklas 317         sortable="true" 
1881 01 Feb 06 nicklas 318         filterable="true"
1881 01 Feb 06 nicklas 319         exportable="true"
1881 01 Feb 06 nicklas 320       />
5351 26 May 10 nicklas 321       <tbl:columndef
5351 26 May 10 nicklas 322         id="runningTime"
5351 26 May 10 nicklas 323         title="Running time"
5351 26 May 10 nicklas 324       />
1881 01 Feb 06 nicklas 325       <tbl:columndef 
1881 01 Feb 06 nicklas 326         id="created" 
1881 01 Feb 06 nicklas 327         property="created"
5424 23 Sep 10 nicklas 328         datatype="timestamp" 
1881 01 Feb 06 nicklas 329         title="Created" 
1881 01 Feb 06 nicklas 330         sortable="true" 
1881 01 Feb 06 nicklas 331         filterable="true" 
1881 01 Feb 06 nicklas 332         exportable="true"
2942 22 Nov 06 nicklas 333         formatter="<%=dateTimeFormatter%>"
1881 01 Feb 06 nicklas 334       />
1881 01 Feb 06 nicklas 335       <tbl:columndef 
5406 13 Sep 10 nicklas 336         id="scheduled" 
5406 13 Sep 10 nicklas 337         property="scheduled"
5424 23 Sep 10 nicklas 338         datatype="timestamp" 
5406 13 Sep 10 nicklas 339         title="Scheduled" 
5406 13 Sep 10 nicklas 340         sortable="true" 
5406 13 Sep 10 nicklas 341         filterable="true" 
5406 13 Sep 10 nicklas 342         exportable="true"
5406 13 Sep 10 nicklas 343         formatter="<%=dateTimeFormatter%>"
5406 13 Sep 10 nicklas 344       />
5406 13 Sep 10 nicklas 345       <tbl:columndef 
1881 01 Feb 06 nicklas 346         id="started" 
1881 01 Feb 06 nicklas 347         property="started"
5424 23 Sep 10 nicklas 348         datatype="timestamp" 
1881 01 Feb 06 nicklas 349         title="Started" 
1881 01 Feb 06 nicklas 350         sortable="true" 
1881 01 Feb 06 nicklas 351         filterable="true" 
1881 01 Feb 06 nicklas 352         exportable="true"
2942 22 Nov 06 nicklas 353         formatter="<%=dateTimeFormatter%>"
1881 01 Feb 06 nicklas 354       />
1881 01 Feb 06 nicklas 355       <tbl:columndef 
1881 01 Feb 06 nicklas 356         id="ended" 
1881 01 Feb 06 nicklas 357         property="ended"
5424 23 Sep 10 nicklas 358         datatype="timestamp" 
1881 01 Feb 06 nicklas 359         title="Ended" 
1881 01 Feb 06 nicklas 360         sortable="true" 
1881 01 Feb 06 nicklas 361         filterable="true" 
1881 01 Feb 06 nicklas 362         exportable="true"
2942 22 Nov 06 nicklas 363         formatter="<%=dateTimeFormatter%>"
1881 01 Feb 06 nicklas 364       />
1881 01 Feb 06 nicklas 365       <tbl:columndef
1881 01 Feb 06 nicklas 366         id="pluginType"
1881 01 Feb 06 nicklas 367         property="pluginDefinition.mainType"
1881 01 Feb 06 nicklas 368         datatype="int"
1881 01 Feb 06 nicklas 369         title="Type"
1881 01 Feb 06 nicklas 370         enumeration="<%=pluginTypes%>"
1881 01 Feb 06 nicklas 371         sortable="true" 
1881 01 Feb 06 nicklas 372         filterable="true"
1881 01 Feb 06 nicklas 373         exportable="true"
1881 01 Feb 06 nicklas 374       />
1881 01 Feb 06 nicklas 375       <tbl:columndef 
7307 07 Mar 17 nicklas 376         id="activeProject"
7307 07 Mar 17 nicklas 377         property="activeProjectId"
7307 07 Mar 17 nicklas 378         datatype="int"
7307 07 Mar 17 nicklas 379         title="Active project"
7307 07 Mar 17 nicklas 380         enumeration="<%=Enumeration.fromItems(projectQuery.list(dc), "-none-", "0")%>"
7307 07 Mar 17 nicklas 381         sortable="true" 
7307 07 Mar 17 nicklas 382         filterable="true"
7307 07 Mar 17 nicklas 383         exportable="true"
7307 07 Mar 17 nicklas 384       />
7307 07 Mar 17 nicklas 385       <tbl:columndef 
3593 24 Jul 07 nicklas 386         id="experiment"
3593 24 Jul 07 nicklas 387         property="experiment.name"
3593 24 Jul 07 nicklas 388         datatype="string"
3593 24 Jul 07 nicklas 389         title="Experiment"
3593 24 Jul 07 nicklas 390         sortable="true" 
3593 24 Jul 07 nicklas 391         filterable="true"
3593 24 Jul 07 nicklas 392         exportable="true"
3593 24 Jul 07 nicklas 393       />
3593 24 Jul 07 nicklas 394       <tbl:columndef 
1881 01 Feb 06 nicklas 395         id="plugin"
1881 01 Feb 06 nicklas 396         property="pluginDefinition.name"
1881 01 Feb 06 nicklas 397         datatype="string"
1881 01 Feb 06 nicklas 398         title="Plugin"
1881 01 Feb 06 nicklas 399         sortable="true" 
1881 01 Feb 06 nicklas 400         filterable="true"
1881 01 Feb 06 nicklas 401         exportable="true"
1881 01 Feb 06 nicklas 402       />
1881 01 Feb 06 nicklas 403       <tbl:columndef 
4355 30 Jun 08 nicklas 404         id="pluginVersion"
4355 30 Jun 08 nicklas 405         property="pluginVersion"
4355 30 Jun 08 nicklas 406         datatype="string"
4355 30 Jun 08 nicklas 407         title="Plugin version"
4355 30 Jun 08 nicklas 408         sortable="true" 
4355 30 Jun 08 nicklas 409         filterable="true"
4355 30 Jun 08 nicklas 410         exportable="true"
4355 30 Jun 08 nicklas 411       />
4355 30 Jun 08 nicklas 412       <tbl:columndef 
1881 01 Feb 06 nicklas 413         id="configuration"
1881 01 Feb 06 nicklas 414         property="pluginConfiguration.name"
1881 01 Feb 06 nicklas 415         datatype="string"
1881 01 Feb 06 nicklas 416         title="Configuration"
1881 01 Feb 06 nicklas 417         sortable="true" 
1881 01 Feb 06 nicklas 418         filterable="true"
1881 01 Feb 06 nicklas 419         exportable="true"
1881 01 Feb 06 nicklas 420       />
1881 01 Feb 06 nicklas 421       <tbl:columndef 
1881 01 Feb 06 nicklas 422         id="description"
1881 01 Feb 06 nicklas 423         property="description"
1881 01 Feb 06 nicklas 424         datatype="string"
1881 01 Feb 06 nicklas 425         title="Description" 
1881 01 Feb 06 nicklas 426         sortable="true" 
1881 01 Feb 06 nicklas 427         filterable="true" 
1881 01 Feb 06 nicklas 428         exportable="true"
1881 01 Feb 06 nicklas 429       />
2401 21 Jun 06 martin 430       <tbl:columndef
2401 21 Jun 06 martin 431         id="permission"
2401 21 Jun 06 martin 432         title="Permission"
2401 21 Jun 06 martin 433       />
6447 15 Apr 14 nicklas 434       <tbl:columndef
6447 15 Apr 14 nicklas 435         id="sharedTo"
6447 15 Apr 14 nicklas 436         title="Shared to"
6447 15 Apr 14 nicklas 437         filterable="true"
6447 15 Apr 14 nicklas 438         filterproperty="!sharedTo.name"
6447 15 Apr 14 nicklas 439         datatype="string"
6447 15 Apr 14 nicklas 440       />
6040 30 Mar 12 nicklas 441       <tbl:columndef 
6040 30 Mar 12 nicklas 442         id="xt-columns" 
6040 30 Mar 12 nicklas 443         extensions="<%=columnsInvoker%>" 
6040 30 Mar 12 nicklas 444         jspcontext="<%=jspContext%>" 
6040 30 Mar 12 nicklas 445       />
6604 18 Nov 14 nicklas 446       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 447         <tbl:toolbar
5952 10 Feb 12 nicklas 448           subclass="bottomborder"
5952 10 Feb 12 nicklas 449           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 450           >
5952 10 Feb 12 nicklas 451           <tbl:button 
6311 23 Aug 13 nicklas 452             id="btnDeleteItems"
5952 10 Feb 12 nicklas 453             image="delete.png"
5952 10 Feb 12 nicklas 454             title="Delete" 
5952 10 Feb 12 nicklas 455             tooltip="Delete the selected items" 
5952 10 Feb 12 nicklas 456           />
5952 10 Feb 12 nicklas 457           <tbl:button 
6311 23 Aug 13 nicklas 458             id="btnRestoreItems"
5952 10 Feb 12 nicklas 459             image="restore.png"
5952 10 Feb 12 nicklas 460             title="Restore" 
5952 10 Feb 12 nicklas 461             tooltip="Restore the selected (deleted) items"
5952 10 Feb 12 nicklas 462           />
5952 10 Feb 12 nicklas 463           <tbl:button 
6600 17 Nov 14 nicklas 464             id="btnAbort"
6600 17 Nov 14 nicklas 465             image="abort.png"
6600 17 Nov 14 nicklas 466             title="Abort&hellip;" 
6600 17 Nov 14 nicklas 467             tooltip="Abort the selected items"
6600 17 Nov 14 nicklas 468           />
6600 17 Nov 14 nicklas 469           <tbl:button 
7320 05 Apr 17 nicklas 470             id="btnPause"
7320 05 Apr 17 nicklas 471             image="pause.png"
7320 05 Apr 17 nicklas 472             title="Pause&hellip;" 
7320 05 Apr 17 nicklas 473             tooltip="Pause the selected items (if they supports it)"
7320 05 Apr 17 nicklas 474           />
7320 05 Apr 17 nicklas 475           <tbl:button 
6447 15 Apr 14 nicklas 476             id="btnShareItems"
6447 15 Apr 14 nicklas 477             image="share.png"
6447 15 Apr 14 nicklas 478             title="Share&hellip;" 
6447 15 Apr 14 nicklas 479             tooltip="Share the selected items"
6447 15 Apr 14 nicklas 480           />
6447 15 Apr 14 nicklas 481           <tbl:button 
6311 23 Aug 13 nicklas 482             id="btnSetOwner"
5952 10 Feb 12 nicklas 483             image="take_ownership.png"
5952 10 Feb 12 nicklas 484             title="Set owner&hellip;"
5952 10 Feb 12 nicklas 485             tooltip="Change owner of the selected items"
5952 10 Feb 12 nicklas 486           />
5952 10 Feb 12 nicklas 487           <tbl:button 
6311 23 Aug 13 nicklas 488             id="btnColumns"
5952 10 Feb 12 nicklas 489             image="columns.png" 
5952 10 Feb 12 nicklas 490             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 491             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 492           />
5952 10 Feb 12 nicklas 493           <tbl:button 
6311 23 Aug 13 nicklas 494             id="btnImport"
6311 23 Aug 13 nicklas 495             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 496             image="import.png" 
5952 10 Feb 12 nicklas 497             title="Import&hellip;" 
5952 10 Feb 12 nicklas 498             tooltip="Import data" 
5952 10 Feb 12 nicklas 499             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 500           />
5952 10 Feb 12 nicklas 501           <tbl:button 
6311 23 Aug 13 nicklas 502             id="btnExport"
6311 23 Aug 13 nicklas 503             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 504             image="export.png" 
5952 10 Feb 12 nicklas 505             title="Export&hellip;" 
5952 10 Feb 12 nicklas 506             tooltip="Export data" 
5952 10 Feb 12 nicklas 507             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 508           />
5952 10 Feb 12 nicklas 509           <tbl:button 
6311 23 Aug 13 nicklas 510             id="btnRunPlugin"
6311 23 Aug 13 nicklas 511             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 512             image="runplugin.png" 
5952 10 Feb 12 nicklas 513             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 514             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 515             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5952 10 Feb 12 nicklas 516           />
5952 10 Feb 12 nicklas 517           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 518             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 519         </tbl:toolbar>
5952 10 Feb 12 nicklas 520         <tbl:panel>
6182 23 Oct 12 nicklas 521           <tbl:presetselector />
5952 10 Feb 12 nicklas 522           <tbl:navigator
5952 10 Feb 12 nicklas 523             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 524             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 525             totalrows="<%=jobs == null ? 0 : jobs.getTotalCount()%>" 
5952 10 Feb 12 nicklas 526             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 527           />
5952 10 Feb 12 nicklas 528         </tbl:panel>
5952 10 Feb 12 nicklas 529       </div>
1881 01 Feb 06 nicklas 530       <tbl:data>
5948 08 Feb 12 nicklas 531         <tbl:headers>
5948 08 Feb 12 nicklas 532           <tbl:headerrow>
7943 04 May 21 nicklas 533             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 534             <tbl:columnheaders />
5948 08 Feb 12 nicklas 535           </tbl:headerrow>
6703 02 Feb 15 nicklas 536           <%
6703 02 Feb 15 nicklas 537           int numFilters = cc.getNumPropertyFilters();
6703 02 Feb 15 nicklas 538           int numRows = cc.getFilterRows();
6703 02 Feb 15 nicklas 539           for (int filterNo = 0; filterNo < numRows; filterNo++)
6703 02 Feb 15 nicklas 540           {
6703 02 Feb 15 nicklas 541             boolean lastRow = filterNo == numRows-1;
6703 02 Feb 15 nicklas 542             %>
6703 02 Feb 15 nicklas 543             <tbl:headerrow>
7943 04 May 21 nicklas 544               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 545                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 546                   <div class="index"></div>
7943 04 May 21 nicklas 547                   <div class="check">
7943 04 May 21 nicklas 548                     <base:icon 
7943 04 May 21 nicklas 549                       subclass="link table-check"
7943 04 May 21 nicklas 550                       image="check_uncheck.png" 
7943 04 May 21 nicklas 551                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 552                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 553                     />
7943 04 May 21 nicklas 554                   </div>
7943 04 May 21 nicklas 555                   <div class="icons">
7943 04 May 21 nicklas 556                     <base:icon
7943 04 May 21 nicklas 557                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 558                       image="add.png"
7943 04 May 21 nicklas 559                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 560                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 561                     /><base:icon
7943 04 May 21 nicklas 562                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 563                       image="remove.png"
7943 04 May 21 nicklas 564                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 565                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 566                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 567                     />
7943 04 May 21 nicklas 568                   </div>
7943 04 May 21 nicklas 569                 </div>
6703 02 Feb 15 nicklas 570               </tbl:header>
6703 02 Feb 15 nicklas 571               <tbl:propertyfilter row="<%=filterNo%>" />
6703 02 Feb 15 nicklas 572             </tbl:headerrow>
6703 02 Feb 15 nicklas 573             <%
6703 02 Feb 15 nicklas 574           }
6703 02 Feb 15 nicklas 575           %>
7913 22 Feb 21 nicklas 576           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 577         </tbl:headers>
5948 08 Feb 12 nicklas 578         <tbl:rows>
1881 01 Feb 06 nicklas 579           <%
5952 10 Feb 12 nicklas 580           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 581           {
5952 10 Feb 12 nicklas 582             %>
6604 18 Nov 14 nicklas 583             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 584               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 585             </tbl:panel>
5952 10 Feb 12 nicklas 586             <%
5952 10 Feb 12 nicklas 587             cc.setMessage(null);
5952 10 Feb 12 nicklas 588           }
1881 01 Feb 06 nicklas 589           int index = cc.getPage()*cc.getRowsPerPage();
1881 01 Feb 06 nicklas 590           int selectedItemId = cc.getId();
2029 20 Feb 06 nicklas 591           if (jobs != null)
1881 01 Feb 06 nicklas 592           {
2433 27 Jun 06 nicklas 593             String tooltip = mode.isSelectionMode() ?
2433 27 Jun 06 nicklas 594               "Select this item" : "View this item";
2029 20 Feb 06 nicklas 595             while (jobs.hasNext())
1881 01 Feb 06 nicklas 596             {
2029 20 Feb 06 nicklas 597               Job item = jobs.next();
2029 20 Feb 06 nicklas 598               int itemId = item.getId();
2029 20 Feb 06 nicklas 599               String name = HTML.encodeTags(item.getName());
6221 10 Jan 13 nicklas 600               
4003 26 Nov 07 nicklas 601               boolean deletePermission = item.hasPermission(Permission.DELETE);
7943 04 May 21 nicklas 602               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
2029 20 Feb 06 nicklas 603               index++;
2029 20 Feb 06 nicklas 604               numListed++;
2029 20 Feb 06 nicklas 605               PluginDefinition plugin = null;
2029 20 Feb 06 nicklas 606               boolean readPlugin = true;
2029 20 Feb 06 nicklas 607               try
2029 20 Feb 06 nicklas 608               {
2029 20 Feb 06 nicklas 609                 plugin = item.getPluginDefinition();
2029 20 Feb 06 nicklas 610               }
2029 20 Feb 06 nicklas 611               catch (PermissionDeniedException ex)
2029 20 Feb 06 nicklas 612               {
2029 20 Feb 06 nicklas 613                 readPlugin = false;
2029 20 Feb 06 nicklas 614               }
4311 23 May 08 nicklas 615               JobAgent agent = null;
4311 23 May 08 nicklas 616               boolean readAgent = true;
4311 23 May 08 nicklas 617               try
4311 23 May 08 nicklas 618               {
4311 23 May 08 nicklas 619                 agent = item.getJobAgent();
4311 23 May 08 nicklas 620               }
4311 23 May 08 nicklas 621               catch (PermissionDeniedException ex)
4311 23 May 08 nicklas 622               {
4311 23 May 08 nicklas 623                 readAgent = false;
4311 23 May 08 nicklas 624               }
2029 20 Feb 06 nicklas 625               %>
2029 20 Feb 06 nicklas 626               <tbl:row>
7943 04 May 21 nicklas 627                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 628                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 629                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 630                     <div class="check">
7943 04 May 21 nicklas 631                       <base:input
7943 04 May 21 nicklas 632                         type="checkbox" 
7943 04 May 21 nicklas 633                         name="<%=itemId%>" 
7943 04 May 21 nicklas 634                         value="<%=itemId%>" 
7943 04 May 21 nicklas 635                         title="<%=name%>" 
7943 04 May 21 nicklas 636                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 637                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 638                       />
7943 04 May 21 nicklas 639                       <base:input 
7943 04 May 21 nicklas 640                         type="radio" 
7943 04 May 21 nicklas 641                         name="item_id" 
7943 04 May 21 nicklas 642                         value="<%=itemId%>" 
7943 04 May 21 nicklas 643                         title="<%=name%>" 
7943 04 May 21 nicklas 644                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 645                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 646                       />
7943 04 May 21 nicklas 647                     </div>
7943 04 May 21 nicklas 648                     <div class="icons">
7943 04 May 21 nicklas 649                       <base:icon 
7943 04 May 21 nicklas 650                         image="deleted.png"
7943 04 May 21 nicklas 651                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 652                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 653                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 654                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 655                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 656                       /><base:icon 
7943 04 May 21 nicklas 657                         image="shared.png" 
7943 04 May 21 nicklas 658                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 659                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 660                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 661                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 662                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 663                       />
7943 04 May 21 nicklas 664                     </div>
7943 04 May 21 nicklas 665                   </div>
7943 04 May 21 nicklas 666                 </tbl:header>
6311 23 Aug 13 nicklas 667                 <tbl:cell column="name"><div 
6311 23 Aug 13 nicklas 668                   class="link table-item"
6311 23 Aug 13 nicklas 669                   data-item-id="<%=itemId%>"
6311 23 Aug 13 nicklas 670                   data-no-edit="1"
6311 23 Aug 13 nicklas 671                   tabindex="0"
2433 27 Jun 06 nicklas 672                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4332 12 Jun 08 martin 673                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
6439 31 Mar 14 nicklas 674                 <tbl:cell column="externalId"><%=HTML.encodeTags(item.getExternalId())%></tbl:cell>
7267 15 Dec 16 nicklas 675                 <tbl:cell column="itemSubtype"
7267 15 Dec 16 nicklas 676                   ><base:propertyvalue 
7267 15 Dec 16 nicklas 677                     item="<%=item%>" 
7267 15 Dec 16 nicklas 678                     property="itemSubtype"
7267 15 Dec 16 nicklas 679                     enableEditLink="<%=mode.hasEditLink()%>" 
7267 15 Dec 16 nicklas 680                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
7267 15 Dec 16 nicklas 681                   /></tbl:cell>
2354 07 Jun 06 martin 682                 <tbl:cell column="owner"
2354 07 Jun 06 martin 683                   ><base:propertyvalue 
2354 07 Jun 06 martin 684                     item="<%=item%>" 
2354 07 Jun 06 martin 685                     property="owner"
2354 07 Jun 06 martin 686                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 687                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 688                   /></tbl:cell>
2029 20 Feb 06 nicklas 689                 <tbl:cell column="priority"><%=item.getPriority()%></tbl:cell>
2029 20 Feb 06 nicklas 690                 <tbl:cell column="status"><%=item.getStatus()%></tbl:cell>
2029 20 Feb 06 nicklas 691                 <tbl:cell column="statusMessage"><%=HTML.encodeTags(item.getStatusMessage())%></tbl:cell>
4380 06 Aug 08 nicklas 692                 <tbl:cell column="dryRun"><%=item.isDryRun()%></tbl:cell>
2643 15 Sep 06 nicklas 693                 <tbl:cell column="stackTrace"><%=HTML.encodeTags(item.getStackTrace())%></tbl:cell>
2029 20 Feb 06 nicklas 694                 <tbl:cell column="server"><%=HTML.encodeTags(item.getServer())%></tbl:cell>
7265 14 Dec 16 nicklas 695                 <tbl:cell column="node"><%=HTML.encodeTags(item.getNode())%></tbl:cell>
4311 23 May 08 nicklas 696                 <tbl:cell column="jobagent"><%=Base.getLinkedName(ID, agent, !readAgent, true)%></tbl:cell>
2029 20 Feb 06 nicklas 697                 <tbl:cell column="estimatedExecutionTime"><%=item.getEstimatedExecutionTime()%></tbl:cell>
2029 20 Feb 06 nicklas 698                 <tbl:cell column="percentComplete">
6142 20 Sep 12 nicklas 699                   <table class="progressbar <%=item.getStatus() == Job.Status.ERROR ? "failed" : ""%>">
1881 01 Feb 06 nicklas 700                   <tr>
6142 20 Sep 12 nicklas 701                   <td>
6142 20 Sep 12 nicklas 702                     <table class="bar" style="width: 100px;">
2029 20 Feb 06 nicklas 703                     <tr>
2029 20 Feb 06 nicklas 704                       <%
2029 20 Feb 06 nicklas 705                       int percent = item.getPercentComplete();
2029 20 Feb 06 nicklas 706                       if (percent > 0) 
2029 20 Feb 06 nicklas 707                       {
2029 20 Feb 06 nicklas 708                         %>
6142 20 Sep 12 nicklas 709                         <td style="width: <%=percent%>%;" class="percentDone">&nbsp;</td>
2029 20 Feb 06 nicklas 710                         <% 
2029 20 Feb 06 nicklas 711                       }
5329 29 Apr 10 nicklas 712                       if (percent == -1)
5329 29 Apr 10 nicklas 713                       {
5329 29 Apr 10 nicklas 714                         %>
6142 20 Sep 12 nicklas 715                         <td style="width: 100%;" class="percentUnknown">unknown</td>
5329 29 Apr 10 nicklas 716                         <%
5329 29 Apr 10 nicklas 717                       }
5329 29 Apr 10 nicklas 718                       else if (percent < 100) 
2029 20 Feb 06 nicklas 719                       { 
2029 20 Feb 06 nicklas 720                         %>
6142 20 Sep 12 nicklas 721                         <td style="width: <%=100-percent%>%;" class="percentRemain">&nbsp;</td>
2029 20 Feb 06 nicklas 722                         <%
2029 20 Feb 06 nicklas 723                       }
1881 01 Feb 06 nicklas 724                       %>
2029 20 Feb 06 nicklas 725                     </tr>
2029 20 Feb 06 nicklas 726                     </table>
2029 20 Feb 06 nicklas 727                   </td>
5329 29 Apr 10 nicklas 728                   <%if (percent != -1) { %>
6142 20 Sep 12 nicklas 729                     <td class="percentText"><%=percent%>%</td>
5329 29 Apr 10 nicklas 730                   <%} %>
1881 01 Feb 06 nicklas 731                   </tr>
1881 01 Feb 06 nicklas 732                   </table>
2029 20 Feb 06 nicklas 733                 </tbl:cell>
2942 22 Nov 06 nicklas 734                 <tbl:cell column="created" value="<%=item.getCreated()%>" />
5406 13 Sep 10 nicklas 735                 <tbl:cell column="scheduled" value="<%=item.getScheduled()%>" />
2942 22 Nov 06 nicklas 736                 <tbl:cell column="started" value="<%=item.getStarted()%>" />
2942 22 Nov 06 nicklas 737                 <tbl:cell column="ended" value="<%=item.getEnded()%>" />
3880 26 Oct 07 nicklas 738                 <tbl:cell column="runningTime">
3880 26 Oct 07 nicklas 739                   <%
3880 26 Oct 07 nicklas 740                   Date started = item.getStarted();
3880 26 Oct 07 nicklas 741                   if (started != null)
3880 26 Oct 07 nicklas 742                   {
3880 26 Oct 07 nicklas 743                     Date ended = item.getEnded();
3880 26 Oct 07 nicklas 744                     if (ended == null) ended = now;
3880 26 Oct 07 nicklas 745                     long runningTime = ended.getTime() - started.getTime();
3880 26 Oct 07 nicklas 746                     %>
3880 26 Oct 07 nicklas 747                     <%=Values.formatTime(runningTime / 1000)%>
3880 26 Oct 07 nicklas 748                     <%
3880 26 Oct 07 nicklas 749                   }
3880 26 Oct 07 nicklas 750                   %>
3880 26 Oct 07 nicklas 751                 </tbl:cell>
2029 20 Feb 06 nicklas 752                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
2029 20 Feb 06 nicklas 753                 <tbl:cell column="pluginType">
1881 01 Feb 06 nicklas 754                   <%
2029 20 Feb 06 nicklas 755                   if (!readPlugin)
2029 20 Feb 06 nicklas 756                   {
2029 20 Feb 06 nicklas 757                     %>
2029 20 Feb 06 nicklas 758                     <i>- denied -</i>
2029 20 Feb 06 nicklas 759                     <%
2029 20 Feb 06 nicklas 760                   }
2029 20 Feb 06 nicklas 761                   else if (plugin == null)
2029 20 Feb 06 nicklas 762                   {
2029 20 Feb 06 nicklas 763                     %>
2029 20 Feb 06 nicklas 764                     <i>- none -</i>
2029 20 Feb 06 nicklas 765                     <%
2029 20 Feb 06 nicklas 766                   }
2029 20 Feb 06 nicklas 767                   else
2029 20 Feb 06 nicklas 768                   {
2029 20 Feb 06 nicklas 769                     %>
2029 20 Feb 06 nicklas 770                     <%=plugin.getMainType()%>
2029 20 Feb 06 nicklas 771                     <%
2029 20 Feb 06 nicklas 772                   }
1881 01 Feb 06 nicklas 773                   %>
2029 20 Feb 06 nicklas 774                 </tbl:cell>
7307 07 Mar 17 nicklas 775                 <tbl:cell column="activeProject">
7307 07 Mar 17 nicklas 776                   <%
7307 07 Mar 17 nicklas 777                   if (item.getActiveProjectId() == 0)
7307 07 Mar 17 nicklas 778                   {
7307 07 Mar 17 nicklas 779                     %>
7307 07 Mar 17 nicklas 780                     <i>- none -</i>
7307 07 Mar 17 nicklas 781                     <%
7307 07 Mar 17 nicklas 782                   }
7307 07 Mar 17 nicklas 783                   else
7307 07 Mar 17 nicklas 784                   {
7307 07 Mar 17 nicklas 785                     try
7307 07 Mar 17 nicklas 786                     {
7307 07 Mar 17 nicklas 787                       Project p = Project.getById(dc, item.getActiveProjectId());
7307 07 Mar 17 nicklas 788                       %>
7307 07 Mar 17 nicklas 789                       <%=HTML.encodeTags(p.getName())%>
7307 07 Mar 17 nicklas 790                       <%
7307 07 Mar 17 nicklas 791                     }
7307 07 Mar 17 nicklas 792                     catch (RuntimeException ex)
7307 07 Mar 17 nicklas 793                     {
7307 07 Mar 17 nicklas 794                       %>
7307 07 Mar 17 nicklas 795                       <i>- denied -</i>
7307 07 Mar 17 nicklas 796                       <%
7307 07 Mar 17 nicklas 797                     }
7307 07 Mar 17 nicklas 798                   }
7307 07 Mar 17 nicklas 799                   %>
7307 07 Mar 17 nicklas 800                 </tbl:cell>
3593 24 Jul 07 nicklas 801                 <tbl:cell column="experiment"
3593 24 Jul 07 nicklas 802                   ><base:propertyvalue 
3593 24 Jul 07 nicklas 803                     item="<%=item%>" 
3593 24 Jul 07 nicklas 804                     property="experiment"
3593 24 Jul 07 nicklas 805                     enableEditLink="<%=mode.hasEditLink()%>" 
3593 24 Jul 07 nicklas 806                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
3593 24 Jul 07 nicklas 807                   /></tbl:cell>
2029 20 Feb 06 nicklas 808                 <tbl:cell column="plugin">
1881 01 Feb 06 nicklas 809                   <%
2029 20 Feb 06 nicklas 810                   if (!readPlugin)
2029 20 Feb 06 nicklas 811                   {
2029 20 Feb 06 nicklas 812                     %>
2029 20 Feb 06 nicklas 813                     <i>- denied -</i>
2029 20 Feb 06 nicklas 814                     <%
2029 20 Feb 06 nicklas 815                   }
2029 20 Feb 06 nicklas 816                   else if (plugin == null)
2029 20 Feb 06 nicklas 817                   {
2029 20 Feb 06 nicklas 818                     %>
2029 20 Feb 06 nicklas 819                     <i>- none -</i>
2029 20 Feb 06 nicklas 820                     <%
2029 20 Feb 06 nicklas 821                   }
2029 20 Feb 06 nicklas 822                   else
2029 20 Feb 06 nicklas 823                   {
2029 20 Feb 06 nicklas 824                     %>
2029 20 Feb 06 nicklas 825                     <%=HTML.encodeTags(plugin.getName())%>
2029 20 Feb 06 nicklas 826                     <%
2029 20 Feb 06 nicklas 827                   }
1881 01 Feb 06 nicklas 828                   %>
2029 20 Feb 06 nicklas 829                 </tbl:cell>
4355 30 Jun 08 nicklas 830                 <tbl:cell column="pluginVersion"><%=HTML.encodeTags(item.getPluginVersion())%></tbl:cell>
2354 07 Jun 06 martin 831                 <tbl:cell column="configuration"
2354 07 Jun 06 martin 832                   ><base:propertyvalue 
2354 07 Jun 06 martin 833                     item="<%=item%>" 
2354 07 Jun 06 martin 834                     property="pluginConfiguration"
2354 07 Jun 06 martin 835                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 836                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 837                   /></tbl:cell>
6040 30 Mar 12 nicklas 838                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
6447 15 Apr 14 nicklas 839                 <tbl:cell column="sharedTo">
6447 15 Apr 14 nicklas 840                   <%
6447 15 Apr 14 nicklas 841                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
6447 15 Apr 14 nicklas 842                   while(sharees.hasNext())
6447 15 Apr 14 nicklas 843                   {
6447 15 Apr 14 nicklas 844                     Nameable n = sharees.next();
6447 15 Apr 14 nicklas 845                     if (mode.hasPropertyLink())
6447 15 Apr 14 nicklas 846                     {
6447 15 Apr 14 nicklas 847                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
6447 15 Apr 14 nicklas 848                     }
6447 15 Apr 14 nicklas 849                     else
6447 15 Apr 14 nicklas 850                     {
6447 15 Apr 14 nicklas 851                       out.write(HTML.encodeTags(n.getName()));
6447 15 Apr 14 nicklas 852                     }
6447 15 Apr 14 nicklas 853                     out.write(sharees.hasNext() ? ", " : "");
6447 15 Apr 14 nicklas 854                   }
6447 15 Apr 14 nicklas 855                   %>
6447 15 Apr 14 nicklas 856                 </tbl:cell>
6040 30 Mar 12 nicklas 857                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6040 30 Mar 12 nicklas 858                   <tbl:cell column="xt-columns" />
6040 30 Mar 12 nicklas 859                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 860               </tbl:row>
2029 20 Feb 06 nicklas 861               <%
2029 20 Feb 06 nicklas 862               }
1881 01 Feb 06 nicklas 863             }
5952 10 Feb 12 nicklas 864           if (numListed == 0)
5952 10 Feb 12 nicklas 865           {
5952 10 Feb 12 nicklas 866             %>
6604 18 Nov 14 nicklas 867             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 868               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 869               <%=jobs == null || jobs.getTotalCount() == 0 ? "No jobs were found" : "No jobs on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 870               </div>
5952 10 Feb 12 nicklas 871             </tbl:panel>
5952 10 Feb 12 nicklas 872             <%
5952 10 Feb 12 nicklas 873           }
1881 01 Feb 06 nicklas 874           %>
5952 10 Feb 12 nicklas 875         </tbl:rows>
1881 01 Feb 06 nicklas 876       </tbl:data>
1881 01 Feb 06 nicklas 877     </tbl:table>
5952 10 Feb 12 nicklas 878     </div>
5952 10 Feb 12 nicklas 879     
5951 09 Feb 12 nicklas 880     <base:buttongroup subclass="dialogbuttons">
6311 23 Aug 13 nicklas 881       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6311 23 Aug 13 nicklas 882       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6311 23 Aug 13 nicklas 883       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
1881 01 Feb 06 nicklas 884     </base:buttongroup>
5951 09 Feb 12 nicklas 885     
1881 01 Feb 06 nicklas 886   </base:body>
1881 01 Feb 06 nicklas 887   </base:page>
1881 01 Feb 06 nicklas 888   <%
1881 01 Feb 06 nicklas 889 }
1881 01 Feb 06 nicklas 890 finally
1881 01 Feb 06 nicklas 891 {
1881 01 Feb 06 nicklas 892   if (jobs != null) jobs.close();
1881 01 Feb 06 nicklas 893   if (dc != null) dc.close();
1881 01 Feb 06 nicklas 894 }
3675 16 Aug 07 jari 895 %>