www/lims/arraydesigns/view_design.jsp

Code
Comments
Other
Rev Date Author Line
1820 24 Jan 06 nicklas 1 <%-- $Id$
1820 24 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Nicklas Nordborg, Martin Svensson
1820 24 Jan 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
1820 24 Jan 06 nicklas 8
1820 24 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1820 24 Jan 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
1820 24 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1820 24 Jan 06 nicklas 13
1820 24 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1820 24 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1820 24 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1820 24 Jan 06 nicklas 17   GNU General Public License for more details.
1820 24 Jan 06 nicklas 18
1820 24 Jan 06 nicklas 19   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1820 24 Jan 06 nicklas 21   ------------------------------------------------------------------
1820 24 Jan 06 nicklas 22
1820 24 Jan 06 nicklas 23   @author Nicklas
1820 24 Jan 06 nicklas 24   @version 2.0
1820 24 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1820 24 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1820 24 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1820 24 Jan 06 nicklas 29   import="net.sf.basedb.core.SystemItems"
3547 03 Jul 07 martin 30   import="net.sf.basedb.core.Group"
1820 24 Jan 06 nicklas 31   import="net.sf.basedb.core.Item"
1820 24 Jan 06 nicklas 32   import="net.sf.basedb.core.ItemContext"
3547 03 Jul 07 martin 33   import="net.sf.basedb.core.ItemResultIterator"
1820 24 Jan 06 nicklas 34   import="net.sf.basedb.core.Permission"
1820 24 Jan 06 nicklas 35   import="net.sf.basedb.core.AnnotationType"
3820 12 Oct 07 nicklas 36   import="net.sf.basedb.core.FileSet"
3820 12 Oct 07 nicklas 37   import="net.sf.basedb.core.FileSetMember"
3820 12 Oct 07 nicklas 38   import="net.sf.basedb.core.DataFileType"
1820 24 Jan 06 nicklas 39   import="net.sf.basedb.core.AnnotationSet"
1820 24 Jan 06 nicklas 40   import="net.sf.basedb.core.ArrayDesign"
2449 29 Jun 06 nicklas 41   import="net.sf.basedb.core.ArrayBatch"
2384 15 Jun 06 nicklas 42   import="net.sf.basedb.core.File"
1976 13 Feb 06 nicklas 43   import="net.sf.basedb.core.ArrayDesignPlate"
1976 13 Feb 06 nicklas 44   import="net.sf.basedb.core.Plate"
1820 24 Jan 06 nicklas 45   import="net.sf.basedb.core.User"
4261 29 Apr 08 nicklas 46   import="net.sf.basedb.core.Job"
1820 24 Jan 06 nicklas 47   import="net.sf.basedb.core.ItemQuery"
1820 24 Jan 06 nicklas 48   import="net.sf.basedb.core.Include"
1820 24 Jan 06 nicklas 49   import="net.sf.basedb.core.ItemResultList"
3547 03 Jul 07 martin 50   import="net.sf.basedb.core.MultiPermissions"
1820 24 Jan 06 nicklas 51   import="net.sf.basedb.core.PermissionDeniedException"
1820 24 Jan 06 nicklas 52   import="net.sf.basedb.core.PluginDefinition"
1820 24 Jan 06 nicklas 53   import="net.sf.basedb.core.plugin.GuiContext"
1820 24 Jan 06 nicklas 54   import="net.sf.basedb.core.plugin.Plugin"
3547 03 Jul 07 martin 55   import="net.sf.basedb.core.Project"
1820 24 Jan 06 nicklas 56   import="net.sf.basedb.core.query.Orders"
1820 24 Jan 06 nicklas 57   import="net.sf.basedb.core.query.Hql"
4261 29 Apr 08 nicklas 58   import="net.sf.basedb.util.formatter.Formatter"
1820 24 Jan 06 nicklas 59   import="net.sf.basedb.clients.web.Base"
5062 19 Aug 09 nicklas 60   import="net.sf.basedb.clients.web.ChangeHistoryUtil"
2386 15 Jun 06 martin 61   import="net.sf.basedb.clients.web.PermissionUtil"
1820 24 Jan 06 nicklas 62   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 63   import="net.sf.basedb.util.Values"
4261 29 Apr 08 nicklas 64   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4884 03 Apr 09 nicklas 65   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4884 03 Apr 09 nicklas 66   import="net.sf.basedb.clients.web.extensions.JspContext"
4884 03 Apr 09 nicklas 67   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 68   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4884 03 Apr 09 nicklas 69   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
4884 03 Apr 09 nicklas 70   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
3547 03 Jul 07 martin 71   import="java.util.Collections"
1820 24 Jan 06 nicklas 72   import="java.util.Date"
1820 24 Jan 06 nicklas 73   import="java.util.Map"
1820 24 Jan 06 nicklas 74   import="java.util.Set"
1820 24 Jan 06 nicklas 75   import="java.util.List"
4261 29 Apr 08 nicklas 76   import="java.util.Date"
1820 24 Jan 06 nicklas 77 %>
1820 24 Jan 06 nicklas 78 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1820 24 Jan 06 nicklas 79 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1820 24 Jan 06 nicklas 80 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
1861 30 Jan 06 nicklas 81 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4884 03 Apr 09 nicklas 82 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1820 24 Jan 06 nicklas 83 <%!
1820 24 Jan 06 nicklas 84   private static final Item itemType = Item.ARRAYDESIGN;
1820 24 Jan 06 nicklas 85   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
1820 24 Jan 06 nicklas 86 %>
1820 24 Jan 06 nicklas 87 <%
1820 24 Jan 06 nicklas 88 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1820 24 Jan 06 nicklas 89 final String ID = sc.getId();
2384 15 Jun 06 nicklas 90 final String root = request.getContextPath()+"/";
1820 24 Jan 06 nicklas 91 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1820 24 Jan 06 nicklas 92 final int itemId = cc.getId();
1861 30 Jan 06 nicklas 93 final String tab = Values.getString(request.getParameter("tab"), "properties");
1820 24 Jan 06 nicklas 94 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 95 final DbControl dc = sc.newDbControl(":View "+itemType);
1820 24 Jan 06 nicklas 96 try
1820 24 Jan 06 nicklas 97 {
1820 24 Jan 06 nicklas 98   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
1820 24 Jan 06 nicklas 99
1820 24 Jan 06 nicklas 100   String title = null;
1820 24 Jan 06 nicklas 101   ArrayDesign design = ArrayDesign.getById(dc, itemId);
8026 15 Dec 21 nicklas 102   Project activeProject = Project.getActive(dc);
4261 29 Apr 08 nicklas 103   Job job = null;
4261 29 Apr 08 nicklas 104   boolean readJob = true;
4261 29 Apr 08 nicklas 105   try
4261 29 Apr 08 nicklas 106   {
4261 29 Apr 08 nicklas 107     job = design.getJob();
4261 29 Apr 08 nicklas 108   }
4261 29 Apr 08 nicklas 109   catch (PermissionDeniedException ex)
4261 29 Apr 08 nicklas 110   {
4261 29 Apr 08 nicklas 111     readJob = false;
4261 29 Apr 08 nicklas 112   }
4261 29 Apr 08 nicklas 113   final Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
4698 10 Dec 08 nicklas 114   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
4261 29 Apr 08 nicklas 115
2449 29 Jun 06 nicklas 116   final boolean usePermission = design.hasPermission(Permission.USE);
1820 24 Jan 06 nicklas 117   final boolean writePermission = design.hasPermission(Permission.WRITE);
1820 24 Jan 06 nicklas 118   final boolean deletePermission = design.hasPermission(Permission.DELETE);
1820 24 Jan 06 nicklas 119   final boolean sharePermission = design.hasPermission(Permission.SET_PERMISSION);
2919 15 Nov 06 nicklas 120   final boolean setOwnerPermission = design.hasPermission(Permission.SET_OWNER);
4003 26 Nov 07 nicklas 121   final boolean isRemoved = design.isRemoved();
4003 26 Nov 07 nicklas 122   final boolean isUsed = isRemoved && design.isUsed();
4003 26 Nov 07 nicklas 123   final boolean deletePermanentlyPermission = deletePermission && !isUsed;
2919 15 Nov 06 nicklas 124   final boolean isOwner = design.isOwner();
4884 03 Apr 09 nicklas 125   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, design);
7604 25 Feb 19 nicklas 126   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
1820 24 Jan 06 nicklas 127   %>
6307 15 Aug 13 nicklas 128   <base:page title="<%=title%>" id="view-page">
6307 15 Aug 13 nicklas 129   <base:head scripts="table.js,tabcontrol-2.js,~designs.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
4884 03 Apr 09 nicklas 130     <ext:scripts context="<%=jspContext%>" />
4884 03 Apr 09 nicklas 131     <ext:stylesheets context="<%=jspContext%>" />
1820 24 Jan 06 nicklas 132   </base:head>
1820 24 Jan 06 nicklas 133   <base:body>
5944 02 Feb 12 nicklas 134     <p:path><p:pathelement 
5944 02 Feb 12 nicklas 135       title="Array designs" href="<%="index.jsp?ID="+ID%>" 
5944 02 Feb 12 nicklas 136       /><p:pathelement title="<%=HTML.encodeTags(design.getName())%>" 
5944 02 Feb 12 nicklas 137       /></p:path>
6307 15 Aug 13 nicklas 138     <div id="page-data" data-item-id="<%=itemId%>"></div>
1861 30 Jan 06 nicklas 139     
5944 02 Feb 12 nicklas 140     <t:tabcontrol 
5944 02 Feb 12 nicklas 141       id="main" 
5944 02 Feb 12 nicklas 142       subclass="content mastertabcontrol" 
6307 15 Aug 13 nicklas 143       active="<%=tab%>">
1861 30 Jan 06 nicklas 144     <t:tab id="properties" title="Properties">
5944 02 Feb 12 nicklas 145       <div>
5944 02 Feb 12 nicklas 146       <table class="fullform">
5944 02 Feb 12 nicklas 147       <tr>
5944 02 Feb 12 nicklas 148         <th class="itemstatus">
8026 15 Dec 21 nicklas 149           <base:icon
8026 15 Dec 21 nicklas 150             image="star.png"
8026 15 Dec 21 nicklas 151             tooltip="This is a default item for the current project"
8026 15 Dec 21 nicklas 152             visible="<%=activeProject != null && activeProject.isDefaultItem(design)%>" 
8026 15 Dec 21 nicklas 153           />
4003 26 Nov 07 nicklas 154           <base:icon 
5946 03 Feb 12 nicklas 155             image="shared.png" 
5944 02 Feb 12 nicklas 156             visible="<%=design.isShared()%>"
5944 02 Feb 12 nicklas 157             tooltip="This item is shared to other users, groups and/or projects"
5944 02 Feb 12 nicklas 158           />
5944 02 Feb 12 nicklas 159           <base:icon 
6307 15 Aug 13 nicklas 160             id="btnDeletePermanently"
5946 03 Feb 12 nicklas 161             image="deleted.png"
5944 02 Feb 12 nicklas 162             tooltip="This item has been flagged for deletion. Click to delete it now."
5944 02 Feb 12 nicklas 163             enabled="<%=deletePermanentlyPermission %>"
5944 02 Feb 12 nicklas 164             visible="<%=isRemoved%>" 
5944 02 Feb 12 nicklas 165           />
6307 15 Aug 13 nicklas 166           <base:icon 
6307 15 Aug 13 nicklas 167             id="btnUsingItems"
6307 15 Aug 13 nicklas 168             image="used.png" 
5944 02 Feb 12 nicklas 169             tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
5944 02 Feb 12 nicklas 170             visible="<%=isRemoved && isUsed%>" />
5944 02 Feb 12 nicklas 171         </th>
5944 02 Feb 12 nicklas 172         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 173           <tbl:toolbar subclass="bottomborder bg-filled-50">
5944 02 Feb 12 nicklas 174             <tbl:button 
6307 15 Aug 13 nicklas 175               id="btnEdit"
5944 02 Feb 12 nicklas 176               disabled="<%=!writePermission%>" 
5945 02 Feb 12 nicklas 177               image="edit.png" 
5944 02 Feb 12 nicklas 178               title="Edit&hellip;" 
5944 02 Feb 12 nicklas 179               tooltip="<%=writePermission ? "Edit this array design" : "You do not have permission to edit this array design"%>" 
5944 02 Feb 12 nicklas 180             />
5944 02 Feb 12 nicklas 181             <tbl:button 
6307 15 Aug 13 nicklas 182               id="btnDelete"
5944 02 Feb 12 nicklas 183               disabled="<%=!deletePermission%>" 
5946 03 Feb 12 nicklas 184               image="delete.png" 
5944 02 Feb 12 nicklas 185               title="Delete"
5944 02 Feb 12 nicklas 186               visible="<%=!design.isRemoved()%>"
5944 02 Feb 12 nicklas 187               tooltip="<%=deletePermission ? "Delete this array design" : "You do not have permission to delete this array design"%>" 
5944 02 Feb 12 nicklas 188             />
5944 02 Feb 12 nicklas 189             <tbl:button 
6307 15 Aug 13 nicklas 190               id="btnRestore"
5944 02 Feb 12 nicklas 191               disabled="<%=!writePermission%>" 
5946 03 Feb 12 nicklas 192               image="restore.png" 
5944 02 Feb 12 nicklas 193               title="Restore"
5944 02 Feb 12 nicklas 194               visible="<%=design.isRemoved()%>"
5944 02 Feb 12 nicklas 195               tooltip="<%=writePermission ? "Restore this array design" : "You do not have permission to restore this array design"%>" 
5944 02 Feb 12 nicklas 196             />
5944 02 Feb 12 nicklas 197             <tbl:button 
6307 15 Aug 13 nicklas 198               id="btnShare"
5944 02 Feb 12 nicklas 199               disabled="<%=!sharePermission%>"
5945 02 Feb 12 nicklas 200               image="share.png"
5944 02 Feb 12 nicklas 201               title="Share&hellip;" 
5944 02 Feb 12 nicklas 202               tooltip="<%=sharePermission ? "Share this array design to other user, groups and projects" : "You do not have permission to share this array design"%>"
5944 02 Feb 12 nicklas 203             />
5944 02 Feb 12 nicklas 204             <tbl:button 
6307 15 Aug 13 nicklas 205               id="btnSetOwner"
5944 02 Feb 12 nicklas 206               disabled="<%=!setOwnerPermission%>"
5944 02 Feb 12 nicklas 207               image="take_ownership.png"
5944 02 Feb 12 nicklas 208               title="Set owner&hellip;"
5944 02 Feb 12 nicklas 209               tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
5944 02 Feb 12 nicklas 210             />
5944 02 Feb 12 nicklas 211             <tbl:button
6307 15 Aug 13 nicklas 212               id="btnNewBatch"
5944 02 Feb 12 nicklas 213               image="add.png"
5944 02 Feb 12 nicklas 214               title="New batch&hellip;"
5944 02 Feb 12 nicklas 215               tooltip="Create a new array batch with this design"
5944 02 Feb 12 nicklas 216               visible="<%=sc.hasPermission(Permission.CREATE, Item.ARRAYBATCH) && usePermission%>"
5944 02 Feb 12 nicklas 217             />
5944 02 Feb 12 nicklas 218             <tbl:button 
6307 15 Aug 13 nicklas 219               id="btnImport"
5946 03 Feb 12 nicklas 220               image="import.png" 
6307 15 Aug 13 nicklas 221               data-plugin-type="IMPORT"  
5944 02 Feb 12 nicklas 222               title="Import&hellip;" 
5944 02 Feb 12 nicklas 223               tooltip="Import data" 
5944 02 Feb 12 nicklas 224               visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5944 02 Feb 12 nicklas 225             />
5944 02 Feb 12 nicklas 226             <tbl:button 
6307 15 Aug 13 nicklas 227               id="btnExport"
6307 15 Aug 13 nicklas 228               image="export.png"
6307 15 Aug 13 nicklas 229               data-plugin-type="EXPORT" 
5944 02 Feb 12 nicklas 230               title="Export&hellip;" 
5944 02 Feb 12 nicklas 231               tooltip="Export data" 
5944 02 Feb 12 nicklas 232               visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5944 02 Feb 12 nicklas 233             />
5944 02 Feb 12 nicklas 234             <tbl:button 
6307 15 Aug 13 nicklas 235               id="btnRunPlugin"
6307 15 Aug 13 nicklas 236               image="runplugin.png"  
6307 15 Aug 13 nicklas 237               data-plugin-type="OTHER" 
5944 02 Feb 12 nicklas 238               title="Run plugin&hellip;" 
5944 02 Feb 12 nicklas 239               tooltip="Run a plugin" 
5944 02 Feb 12 nicklas 240               visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5944 02 Feb 12 nicklas 241             />
5944 02 Feb 12 nicklas 242             <tbl:button 
6307 15 Aug 13 nicklas 243               id="btnManagePlates"
5944 02 Feb 12 nicklas 244               title="Manage plates&hellip;"
5944 02 Feb 12 nicklas 245               tooltip="Attach / detach plates to this array design"
5944 02 Feb 12 nicklas 246               visible="<%=writePermission && !design.hasFeatures()%>"
5944 02 Feb 12 nicklas 247             />
5944 02 Feb 12 nicklas 248             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 249               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5944 02 Feb 12 nicklas 250             <tbl:button
5944 02 Feb 12 nicklas 251               image="help.png"
6307 15 Aug 13 nicklas 252               subclass="auto-init"
6307 15 Aug 13 nicklas 253               data-auto-init="help"
6307 15 Aug 13 nicklas 254               data-help-id="arraydesign.view.properties"
5944 02 Feb 12 nicklas 255               title="Help&hellip;"
5944 02 Feb 12 nicklas 256               tooltip="Get help about this page"
5944 02 Feb 12 nicklas 257             />
5944 02 Feb 12 nicklas 258           </tbl:toolbar>
5944 02 Feb 12 nicklas 259         </td>
1820 24 Jan 06 nicklas 260       </tr>
5944 02 Feb 12 nicklas 261     </table>
5944 02 Feb 12 nicklas 262     <table style="width: 100%; height: 18em;" class="bottomborder">
6146 21 Sep 12 nicklas 263     <tr>
5944 02 Feb 12 nicklas 264       <td style="width: 50%; height: 100%;">
5944 02 Feb 12 nicklas 265         <table class="fullform" >
5944 02 Feb 12 nicklas 266         <tr>
5944 02 Feb 12 nicklas 267           <th>Name</th>
5944 02 Feb 12 nicklas 268           <td><%=HTML.encodeTags(design.getName())%></td>
5944 02 Feb 12 nicklas 269         </tr>
5944 02 Feb 12 nicklas 270         <tr>
5944 02 Feb 12 nicklas 271           <th>Registered</th>
5944 02 Feb 12 nicklas 272           <td><%=dateFormatter.format(design.getEntryDate())%></td>
5944 02 Feb 12 nicklas 273         </tr>
5944 02 Feb 12 nicklas 274         <tr>
5944 02 Feb 12 nicklas 275           <th>Platform</th>
5944 02 Feb 12 nicklas 276           <td><base:propertyvalue item="<%=design%>" property="platform" /></td>
5944 02 Feb 12 nicklas 277         </tr>
5944 02 Feb 12 nicklas 278         <tr>
5944 02 Feb 12 nicklas 279           <th>Variant</th>
5944 02 Feb 12 nicklas 280           <td><base:propertyvalue item="<%=design%>" property="variant" /></td>
5944 02 Feb 12 nicklas 281         </tr>
5944 02 Feb 12 nicklas 282         <tr>
5944 02 Feb 12 nicklas 283           <th>Arrays per slide</th>
5944 02 Feb 12 nicklas 284           <td><%=design.getNumArrays()%></td>
5944 02 Feb 12 nicklas 285         </tr>
5944 02 Feb 12 nicklas 286         <tr>
5944 02 Feb 12 nicklas 287           <th>Features</th>
5944 02 Feb 12 nicklas 288           <td><%=design.hasFeatures() ? "yes (db: " + design.getNumDbFeatures() + "; file: " + design.getNumFileFeatures() + ")" : "no"%></td>
5944 02 Feb 12 nicklas 289         </tr>
5944 02 Feb 12 nicklas 290         <tr>
5944 02 Feb 12 nicklas 291           <th>Feature identification method</th>
5944 02 Feb 12 nicklas 292           <td><%=design.getFeatureIdentificationMethod()%></td>
5944 02 Feb 12 nicklas 293         </tr>
5944 02 Feb 12 nicklas 294         <tr>
5944 02 Feb 12 nicklas 295           <th>Owner</th>
5944 02 Feb 12 nicklas 296           <td><base:propertyvalue item="<%=design%>" property="owner" /></td>
5944 02 Feb 12 nicklas 297         </tr>
5944 02 Feb 12 nicklas 298         <tr>
5944 02 Feb 12 nicklas 299           <th>Permissions</th>
5944 02 Feb 12 nicklas 300           <td><%=PermissionUtil.getFullPermissionNames(design)%></td>
5944 02 Feb 12 nicklas 301         </tr>
5944 02 Feb 12 nicklas 302         <tr>
5944 02 Feb 12 nicklas 303           <th>Description</th>
5944 02 Feb 12 nicklas 304           <td><%=HTML.niceFormat(design.getDescription())%></td>
5944 02 Feb 12 nicklas 305         </tr>
5944 02 Feb 12 nicklas 306         </table>
4261 29 Apr 08 nicklas 307       </td>
5944 02 Feb 12 nicklas 308       <td style="width: 50%; height: 100%;" class="leftborder">
5944 02 Feb 12 nicklas 309         <table class="fullform larger">
5944 02 Feb 12 nicklas 310         <tbody class="sectionheader">
5944 02 Feb 12 nicklas 311           <tr>
5944 02 Feb 12 nicklas 312             <th colspan="2">Feature import</th>
5944 02 Feb 12 nicklas 313           </tr>
5944 02 Feb 12 nicklas 314         </tbody>
4261 29 Apr 08 nicklas 315         <tr>
5944 02 Feb 12 nicklas 316           <th>Job</th>
4261 29 Apr 08 nicklas 317           <td><%=Base.getLinkedName(ID, job, !readJob, true)%></td>
4261 29 Apr 08 nicklas 318         </tr>
4261 29 Apr 08 nicklas 319         <tr>
5944 02 Feb 12 nicklas 320           <th>Date / time</th>
4261 29 Apr 08 nicklas 321           <td><%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%></td>
4261 29 Apr 08 nicklas 322         </tr>
4261 29 Apr 08 nicklas 323         <tr>
5944 02 Feb 12 nicklas 324           <th>Plugin</th>
4261 29 Apr 08 nicklas 325           <td><base:propertyvalue item="<%=design%>" property="job.pluginDefinition" /></td>
4261 29 Apr 08 nicklas 326         </tr>
4261 29 Apr 08 nicklas 327         <tr>
5944 02 Feb 12 nicklas 328           <th>Configuration / file format</th>
4261 29 Apr 08 nicklas 329           <td><base:propertyvalue item="<%=design%>" property="job.pluginConfiguration" /></td>
4261 29 Apr 08 nicklas 330         </tr>
5944 02 Feb 12 nicklas 331         <tr class="dynamic">
5944 02 Feb 12 nicklas 332           <th></th>
5944 02 Feb 12 nicklas 333           <td></td>
5944 02 Feb 12 nicklas 334         </tr>
4261 29 Apr 08 nicklas 335         </table>
4261 29 Apr 08 nicklas 336       </td>
4261 29 Apr 08 nicklas 337       </tr>
5944 02 Feb 12 nicklas 338     </table>
5944 02 Feb 12 nicklas 339     </div>
5944 02 Feb 12 nicklas 340     <jsp:include page="../../common/datafiles/list_files.jsp">
5944 02 Feb 12 nicklas 341       <jsp:param name="item_type" value="<%=itemType.name()%>" />
5944 02 Feb 12 nicklas 342       <jsp:param name="item_id" value="<%=itemId%>" />
5944 02 Feb 12 nicklas 343       <jsp:param name="ID" value="<%=ID%>" />
5944 02 Feb 12 nicklas 344     </jsp:include>
3820 12 Oct 07 nicklas 345       
5944 02 Feb 12 nicklas 346     <%
5944 02 Feb 12 nicklas 347     ItemQuery<ArrayBatch> batchQuery = design.getArrayBatches();
5944 02 Feb 12 nicklas 348     batchQuery.include(Include.ALL);
5944 02 Feb 12 nicklas 349     batchQuery.order(Orders.asc(Hql.property("name")));
5944 02 Feb 12 nicklas 350     ItemResultList<ArrayBatch> batches = batchQuery.list(dc);
5944 02 Feb 12 nicklas 351     %>
5944 02 Feb 12 nicklas 352     <base:section 
5944 02 Feb 12 nicklas 353       id="batches" 
5944 02 Feb 12 nicklas 354       title="<%="Array batches (" + batches.size() +")"%>"
5944 02 Feb 12 nicklas 355       context="<%=cc%>">
1976 13 Feb 06 nicklas 356       <%
3608 27 Jul 07 nicklas 357       if (batches.size() == 0)
1976 13 Feb 06 nicklas 358       {
1976 13 Feb 06 nicklas 359         %>
5944 02 Feb 12 nicklas 360         <div class="messagecontainer note">
3608 27 Jul 07 nicklas 361         No batches exists for this design
3608 27 Jul 07 nicklas 362         (or, you don't have permission to view them).
5944 02 Feb 12 nicklas 363         </div>
1976 13 Feb 06 nicklas 364         <%
1976 13 Feb 06 nicklas 365       }
1976 13 Feb 06 nicklas 366       else
1976 13 Feb 06 nicklas 367       {
1976 13 Feb 06 nicklas 368         %>
1976 13 Feb 06 nicklas 369         <tbl:table
6146 21 Sep 12 nicklas 370           id="tbl.batches"
1976 13 Feb 06 nicklas 371           columns="all"
1976 13 Feb 06 nicklas 372           >
1976 13 Feb 06 nicklas 373         <tbl:columndef 
1976 13 Feb 06 nicklas 374           id="name"
1976 13 Feb 06 nicklas 375           title="Name"
1976 13 Feb 06 nicklas 376         />
1976 13 Feb 06 nicklas 377         <tbl:columndef 
1976 13 Feb 06 nicklas 378           id="description"
1976 13 Feb 06 nicklas 379           title="Description"
1976 13 Feb 06 nicklas 380         />
1976 13 Feb 06 nicklas 381         <tbl:data>
5944 02 Feb 12 nicklas 382           <tbl:headers>
5944 02 Feb 12 nicklas 383             <tbl:headerrow>
5944 02 Feb 12 nicklas 384               <tbl:columnheaders />
5944 02 Feb 12 nicklas 385             </tbl:headerrow>
5944 02 Feb 12 nicklas 386           </tbl:headers>
1976 13 Feb 06 nicklas 387           <tbl:rows>
1976 13 Feb 06 nicklas 388           <%
3608 27 Jul 07 nicklas 389           for (ArrayBatch item : batches)
1976 13 Feb 06 nicklas 390           {
1976 13 Feb 06 nicklas 391             %>
1976 13 Feb 06 nicklas 392             <tbl:row>
3888 29 Oct 07 nicklas 393               <tbl:cell column="name"><base:icon 
5946 03 Feb 12 nicklas 394                   image="deleted.png" 
3888 29 Oct 07 nicklas 395                   tooltip="This item has been scheduled for deletion" 
3888 29 Oct 07 nicklas 396                   visible="<%=item.isRemoved()%>"
3888 29 Oct 07 nicklas 397                 /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
3608 27 Jul 07 nicklas 398               <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
1976 13 Feb 06 nicklas 399             </tbl:row>
1976 13 Feb 06 nicklas 400             <%
1976 13 Feb 06 nicklas 401           }
1976 13 Feb 06 nicklas 402           %>
1976 13 Feb 06 nicklas 403           </tbl:rows>
1976 13 Feb 06 nicklas 404         </tbl:data>
1976 13 Feb 06 nicklas 405         </tbl:table>
1976 13 Feb 06 nicklas 406         <%
1976 13 Feb 06 nicklas 407       }
1976 13 Feb 06 nicklas 408       %>
5944 02 Feb 12 nicklas 409     </base:section>
2449 29 Jun 06 nicklas 410       
5944 02 Feb 12 nicklas 411     <%
5944 02 Feb 12 nicklas 412     ItemQuery<ArrayDesignPlate> platesQuery = design.getArrayDesignPlates();
5944 02 Feb 12 nicklas 413     platesQuery.include(Include.ALL);
5944 02 Feb 12 nicklas 414     platesQuery.order(Orders.asc(Hql.property("position")));
5944 02 Feb 12 nicklas 415     ItemResultList<ArrayDesignPlate> plates = platesQuery.list(dc);
5944 02 Feb 12 nicklas 416     %>
5944 02 Feb 12 nicklas 417     <base:section 
5944 02 Feb 12 nicklas 418       id="plates" 
5944 02 Feb 12 nicklas 419       title="<%="Plates (" + plates.size() +")"%>" 
5944 02 Feb 12 nicklas 420       context="<%=cc%>">
2449 29 Jun 06 nicklas 421       <%
3608 27 Jul 07 nicklas 422       if (plates.size() == 0)
2449 29 Jun 06 nicklas 423       {
2449 29 Jun 06 nicklas 424         %>
5944 02 Feb 12 nicklas 425         <div class="messagecontainer note">
3608 27 Jul 07 nicklas 426         This array design isn't connected to any plates (or, you don't have permission to view them).
5944 02 Feb 12 nicklas 427         </div>
2449 29 Jun 06 nicklas 428         <%
2449 29 Jun 06 nicklas 429       }
2449 29 Jun 06 nicklas 430       else
2449 29 Jun 06 nicklas 431       {
2449 29 Jun 06 nicklas 432         %>
2449 29 Jun 06 nicklas 433         <tbl:table
6146 21 Sep 12 nicklas 434           id="tbl.plates"
2449 29 Jun 06 nicklas 435           columns="all"
2449 29 Jun 06 nicklas 436           >
2449 29 Jun 06 nicklas 437         <tbl:columndef 
2449 29 Jun 06 nicklas 438           id="name"
2449 29 Jun 06 nicklas 439           title="Name"
2449 29 Jun 06 nicklas 440         />
2449 29 Jun 06 nicklas 441         <tbl:columndef 
3608 27 Jul 07 nicklas 442           id="position"
3608 27 Jul 07 nicklas 443           title="Position"
3608 27 Jul 07 nicklas 444         />
3608 27 Jul 07 nicklas 445         <tbl:columndef 
2449 29 Jun 06 nicklas 446           id="description"
2449 29 Jun 06 nicklas 447           title="Description"
2449 29 Jun 06 nicklas 448         />
2449 29 Jun 06 nicklas 449         <tbl:data>
5944 02 Feb 12 nicklas 450           <tbl:headers>
5944 02 Feb 12 nicklas 451             <tbl:headerrow>
5944 02 Feb 12 nicklas 452               <tbl:columnheaders />
5944 02 Feb 12 nicklas 453             </tbl:headerrow>
5944 02 Feb 12 nicklas 454           </tbl:headers>
2449 29 Jun 06 nicklas 455           <tbl:rows>
2449 29 Jun 06 nicklas 456           <%
3608 27 Jul 07 nicklas 457           for (ArrayDesignPlate item : plates)
2449 29 Jun 06 nicklas 458           {
3608 27 Jul 07 nicklas 459             Plate plate = null;
3608 27 Jul 07 nicklas 460             boolean readPlate = true;
3608 27 Jul 07 nicklas 461             try
3608 27 Jul 07 nicklas 462             {
3608 27 Jul 07 nicklas 463               plate = item.getPlate();
3608 27 Jul 07 nicklas 464             }
3608 27 Jul 07 nicklas 465             catch (PermissionDeniedException ex)
3608 27 Jul 07 nicklas 466             {
3608 27 Jul 07 nicklas 467               readPlate = false;
3608 27 Jul 07 nicklas 468             }
2449 29 Jun 06 nicklas 469             %>
2449 29 Jun 06 nicklas 470             <tbl:row>
3888 29 Oct 07 nicklas 471               <tbl:cell column="name"><base:icon 
5946 03 Feb 12 nicklas 472                   image="deleted.png" 
3888 29 Oct 07 nicklas 473                   tooltip="This item has been scheduled for deletion" 
3888 29 Oct 07 nicklas 474                   visible="<%=plate != null && plate.isRemoved()%>"
3888 29 Oct 07 nicklas 475                 /><%=Base.getLinkedName(ID, plate, !readPlate, true)%></tbl:cell>
3608 27 Jul 07 nicklas 476               <tbl:cell column="position"><%=item.getPosition()+1%></tbl:cell>
3608 27 Jul 07 nicklas 477               <tbl:cell column="description"><%=HTML.encodeTags(plate == null ? "" : plate.getDescription())%></tbl:cell>
2449 29 Jun 06 nicklas 478             </tbl:row>
2449 29 Jun 06 nicklas 479             <%
2449 29 Jun 06 nicklas 480           }
2449 29 Jun 06 nicklas 481           %>
2449 29 Jun 06 nicklas 482           </tbl:rows>
2449 29 Jun 06 nicklas 483         </tbl:data>
2449 29 Jun 06 nicklas 484         </tbl:table>
2449 29 Jun 06 nicklas 485         <%
2449 29 Jun 06 nicklas 486       }
3608 27 Jul 07 nicklas 487       %>
5944 02 Feb 12 nicklas 488     </base:section>
5944 02 Feb 12 nicklas 489     <jsp:include page="../../common/anytoany/list_anytoany.jsp">
5944 02 Feb 12 nicklas 490       <jsp:param name="ID" value="<%=ID%>" />
5944 02 Feb 12 nicklas 491       <jsp:param name="item_type" value="<%=itemType.name()%>" />
5944 02 Feb 12 nicklas 492       <jsp:param name="item_id" value="<%=itemId%>" />
5944 02 Feb 12 nicklas 493       <jsp:param name="title" value="Other items related to this array design" />
5944 02 Feb 12 nicklas 494     </jsp:include>
5944 02 Feb 12 nicklas 495     <jsp:include page="../../common/share/list_share.jsp">
5944 02 Feb 12 nicklas 496       <jsp:param name="ID" value="<%=ID%>" />
5944 02 Feb 12 nicklas 497       <jsp:param name="item_type" value="<%=itemType.name()%>" />
5944 02 Feb 12 nicklas 498       <jsp:param name="item_id" value="<%=itemId%>" />
5944 02 Feb 12 nicklas 499       <jsp:param name="title" value="Shared to" />
5944 02 Feb 12 nicklas 500     </jsp:include>
5944 02 Feb 12 nicklas 501     </t:tab>
5944 02 Feb 12 nicklas 502       
5944 02 Feb 12 nicklas 503     <t:tab id="annotations" title="Annotations" 
6307 15 Aug 13 nicklas 504       tooltip="View annotation values" clazz="white">
6255 22 Mar 13 nicklas 505         <jsp:include page="../../common/annotations/list_frameset.jsp">
5499 17 Nov 10 nicklas 506         <jsp:param name="item_type" value="<%=itemType.name()%>" />
5499 17 Nov 10 nicklas 507         <jsp:param name="item_id" value="<%=itemId%>" />
5935 26 Jan 12 nicklas 508         <jsp:param name="ID" value="<%=ID%>" />
5935 26 Jan 12 nicklas 509       </jsp:include>
5944 02 Feb 12 nicklas 510     </t:tab>
1861 30 Jan 06 nicklas 511       
6307 15 Aug 13 nicklas 512     <t:tab id="features" title="Features" visible="<%=design.getNumDbFeatures() > 0%>">
6610 20 Nov 14 nicklas 513       <div class="bg-filled-50 absolutefull">
6307 15 Aug 13 nicklas 514         <table style="margin: auto; height: 100%;"><tr><td>
6307 15 Aug 13 nicklas 515         <b>Please wait. The features information is loading...</b>
6307 15 Aug 13 nicklas 516         </td></tr></table>
6307 15 Aug 13 nicklas 517       </div>
6307 15 Aug 13 nicklas 518     </t:tab>
5944 02 Feb 12 nicklas 519
5944 02 Feb 12 nicklas 520     <t:tab id="overview" title="Overview" 
6307 15 Aug 13 nicklas 521       tooltip="Display a tree overview of related items">
6242 25 Feb 13 nicklas 522       <jsp:include page="../../common/overview/overview.jsp">
6242 25 Feb 13 nicklas 523         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6242 25 Feb 13 nicklas 524         <jsp:param name="item_id" value="<%=itemId%>" />
6242 25 Feb 13 nicklas 525         <jsp:param name="ID" value="<%=ID%>" />
6242 25 Feb 13 nicklas 526       </jsp:include>
5944 02 Feb 12 nicklas 527     </t:tab>
7166 07 Jun 16 nicklas 528     <t:tab id="history" title="History"
7166 07 Jun 16 nicklas 529       tooltip="Displays a log with the history of this item"
6307 15 Aug 13 nicklas 530       visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
6244 25 Feb 13 nicklas 531       <jsp:include page="../../common/history/frameset.jsp">
6244 25 Feb 13 nicklas 532         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6244 25 Feb 13 nicklas 533         <jsp:param name="item_id" value="<%=itemId%>" />
6244 25 Feb 13 nicklas 534         <jsp:param name="ID" value="<%=ID%>" />
6244 25 Feb 13 nicklas 535       </jsp:include>
5944 02 Feb 12 nicklas 536     </t:tab>
5944 02 Feb 12 nicklas 537     </t:tabcontrol>
1820 24 Jan 06 nicklas 538
1820 24 Jan 06 nicklas 539   </base:body>
1820 24 Jan 06 nicklas 540   </base:page>
1820 24 Jan 06 nicklas 541   <%
1820 24 Jan 06 nicklas 542 }
1820 24 Jan 06 nicklas 543 finally
1820 24 Jan 06 nicklas 544 {
1820 24 Jan 06 nicklas 545   if (dc != null) dc.close();
1820 24 Jan 06 nicklas 546 }
1820 24 Jan 06 nicklas 547
1820 24 Jan 06 nicklas 548 %>