www/lims/geometries/view_geometry.jsp

Code
Comments
Other
Rev Date Author Line
2305 22 May 06 jari 1 <%-- $Id$
2305 22 May 06 jari 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
2305 22 May 06 jari 4
2304 22 May 06 jari 5   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 6   Available at http://base.thep.lu.se/
2305 22 May 06 jari 7
2305 22 May 06 jari 8   BASE is free software; you can redistribute it and/or
2305 22 May 06 jari 9   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 10   as published by the Free Software Foundation; either version 3
2305 22 May 06 jari 11   of the License, or (at your option) any later version.
2305 22 May 06 jari 12
2305 22 May 06 jari 13   BASE is distributed in the hope that it will be useful,
2305 22 May 06 jari 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
2305 22 May 06 jari 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2305 22 May 06 jari 16   GNU General Public License for more details.
2305 22 May 06 jari 17
2305 22 May 06 jari 18   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2305 22 May 06 jari 20   ------------------------------------------------------------------
2305 22 May 06 jari 21
2305 22 May 06 jari 22   @author Nicklas
2305 22 May 06 jari 23   @version 2.0
2305 22 May 06 jari 24 --%>
5426 24 Sep 10 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
2305 22 May 06 jari 26   import="net.sf.basedb.core.SessionControl"
2305 22 May 06 jari 27   import="net.sf.basedb.core.DbControl"
2305 22 May 06 jari 28   import="net.sf.basedb.core.SystemItems"
2305 22 May 06 jari 29   import="net.sf.basedb.core.Item"
2305 22 May 06 jari 30   import="net.sf.basedb.core.ItemContext"
2305 22 May 06 jari 31   import="net.sf.basedb.core.Permission"
2305 22 May 06 jari 32   import="net.sf.basedb.core.PlateGeometry"
2446 29 Jun 06 nicklas 33   import="net.sf.basedb.core.PlateType"
2305 22 May 06 jari 34   import="net.sf.basedb.core.ItemQuery"
2305 22 May 06 jari 35   import="net.sf.basedb.core.Include"
2305 22 May 06 jari 36   import="net.sf.basedb.core.ItemResultList"
2305 22 May 06 jari 37   import="net.sf.basedb.core.PermissionDeniedException"
2305 22 May 06 jari 38   import="net.sf.basedb.core.PluginDefinition"
2305 22 May 06 jari 39   import="net.sf.basedb.core.plugin.GuiContext"
2305 22 May 06 jari 40   import="net.sf.basedb.core.plugin.Plugin"
2305 22 May 06 jari 41   import="net.sf.basedb.core.query.Orders"
2305 22 May 06 jari 42   import="net.sf.basedb.core.query.Hql"
2305 22 May 06 jari 43   import="net.sf.basedb.clients.web.Base"
2386 15 Jun 06 martin 44   import="net.sf.basedb.clients.web.PermissionUtil"
2305 22 May 06 jari 45   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 46   import="net.sf.basedb.util.Values"
4698 10 Dec 08 nicklas 47   import="net.sf.basedb.util.formatter.Formatter"
4698 10 Dec 08 nicklas 48   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4884 03 Apr 09 nicklas 49   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4884 03 Apr 09 nicklas 50   import="net.sf.basedb.clients.web.extensions.JspContext"
4884 03 Apr 09 nicklas 51   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 52   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4884 03 Apr 09 nicklas 53   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
4884 03 Apr 09 nicklas 54   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
2305 22 May 06 jari 55   import="java.util.Date"
2305 22 May 06 jari 56   import="java.util.Map"
2305 22 May 06 jari 57   import="java.util.Set"
2305 22 May 06 jari 58   import="java.util.List"
2305 22 May 06 jari 59 %>
2305 22 May 06 jari 60 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2305 22 May 06 jari 61 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2305 22 May 06 jari 62 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
2305 22 May 06 jari 63 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4884 03 Apr 09 nicklas 64 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2305 22 May 06 jari 65 <%!
2305 22 May 06 jari 66   private static final Item itemType = Item.PLATEGEOMETRY;
2305 22 May 06 jari 67   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
2305 22 May 06 jari 68 %>
2305 22 May 06 jari 69 <%
2305 22 May 06 jari 70 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
2305 22 May 06 jari 71 final String ID = sc.getId();
2305 22 May 06 jari 72 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2305 22 May 06 jari 73 final int itemId = cc.getId();
2305 22 May 06 jari 74 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 75 final DbControl dc = sc.newDbControl(":View "+itemType);
2305 22 May 06 jari 76 try
2305 22 May 06 jari 77 {
4698 10 Dec 08 nicklas 78   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
2305 22 May 06 jari 79   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
2305 22 May 06 jari 80
2305 22 May 06 jari 81   String title = null;
2305 22 May 06 jari 82   PlateGeometry geometry = PlateGeometry.getById(dc, itemId);
2305 22 May 06 jari 83   
2446 29 Jun 06 nicklas 84   final boolean usePermission = geometry.hasPermission(Permission.USE);
2305 22 May 06 jari 85   final boolean writePermission = geometry.hasPermission(Permission.WRITE);
2305 22 May 06 jari 86   final boolean deletePermission = geometry.hasPermission(Permission.DELETE);
2305 22 May 06 jari 87   final boolean sharePermission = geometry.hasPermission(Permission.SET_PERMISSION);
4003 26 Nov 07 nicklas 88   final boolean isRemoved = geometry.isRemoved();
4003 26 Nov 07 nicklas 89   final boolean isUsed = isRemoved && geometry.isUsed();
4003 26 Nov 07 nicklas 90   final boolean deletePermanentlyPermission = deletePermission && !isUsed;
4884 03 Apr 09 nicklas 91   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, geometry);
7604 25 Feb 19 nicklas 92   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
2305 22 May 06 jari 93   %>
6306 13 Aug 13 nicklas 94   <base:page title="<%=title%>" id="view-page">
6306 13 Aug 13 nicklas 95   <base:head scripts="table.js,tabcontrol-2.js,~geometries.js" styles="toolbar.css,table.css,headertabcontrol.css,path.css">
4884 03 Apr 09 nicklas 96     <ext:scripts context="<%=jspContext%>" />
4884 03 Apr 09 nicklas 97     <ext:stylesheets context="<%=jspContext%>" />
2305 22 May 06 jari 98   </base:head>
2305 22 May 06 jari 99   <base:body>
5943 01 Feb 12 nicklas 100     <p:path><p:pathelement 
5943 01 Feb 12 nicklas 101       title="Plate geometries" href="<%="index.jsp?ID="+ID%>" 
5943 01 Feb 12 nicklas 102       /><p:pathelement title="<%=HTML.encodeTags(geometry.getName())%>" 
5943 01 Feb 12 nicklas 103       /></p:path>
6306 13 Aug 13 nicklas 104     <div id="page-data" data-item-id="<%=itemId%>"></div>
2305 22 May 06 jari 105     
5943 01 Feb 12 nicklas 106     <t:tabcontrol 
5943 01 Feb 12 nicklas 107       id="main" 
5943 01 Feb 12 nicklas 108       subclass="content mastertabcontrol" 
5943 01 Feb 12 nicklas 109       active="properties">
2305 22 May 06 jari 110     <t:tab id="properties" title="Properties">
5943 01 Feb 12 nicklas 111       <div>
5943 01 Feb 12 nicklas 112       <table class="fullform bottomborder">
5943 01 Feb 12 nicklas 113       <tr>
5943 01 Feb 12 nicklas 114         <th class="itemstatus">
4003 26 Nov 07 nicklas 115           <base:icon 
6306 13 Aug 13 nicklas 116             id="btnDeletePermanently"
5946 03 Feb 12 nicklas 117             image="deleted.png"
5943 01 Feb 12 nicklas 118             tooltip="This item has been flagged for deletion. Click to delete it now."
5943 01 Feb 12 nicklas 119             enabled="<%=deletePermanentlyPermission %>"
5943 01 Feb 12 nicklas 120             visible="<%=isRemoved%>" 
5943 01 Feb 12 nicklas 121           />
6306 13 Aug 13 nicklas 122           <base:icon
6306 13 Aug 13 nicklas 123             id="btnUsingItems"
6306 13 Aug 13 nicklas 124             image="used.png" 
5943 01 Feb 12 nicklas 125             tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
5943 01 Feb 12 nicklas 126             visible="<%=isRemoved && isUsed%>" />
5943 01 Feb 12 nicklas 127         </th>
5943 01 Feb 12 nicklas 128         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 129           <tbl:toolbar subclass="bottomborder bg-filled-50">
5943 01 Feb 12 nicklas 130             <tbl:button 
6306 13 Aug 13 nicklas 131               id="btnEdit"
5943 01 Feb 12 nicklas 132               disabled="<%=!writePermission%>" 
5945 02 Feb 12 nicklas 133               image="edit.png" 
5943 01 Feb 12 nicklas 134               title="Edit&hellip;" 
5943 01 Feb 12 nicklas 135               tooltip="<%=writePermission ? "Edit this plate geometry" : "You do not have permission to edit this plate geometry"%>" 
5943 01 Feb 12 nicklas 136             />
5943 01 Feb 12 nicklas 137             <tbl:button 
6306 13 Aug 13 nicklas 138               id="btnDelete"
5943 01 Feb 12 nicklas 139               disabled="<%=!deletePermission%>" 
5946 03 Feb 12 nicklas 140               image="delete.png" 
5943 01 Feb 12 nicklas 141               title="Delete"
5943 01 Feb 12 nicklas 142               visible="<%=!geometry.isRemoved()%>"
5943 01 Feb 12 nicklas 143               tooltip="<%=deletePermission ? "Delete this plate geometry" : "You do not have permission to delete this plate geometry"%>" 
5943 01 Feb 12 nicklas 144             />
5943 01 Feb 12 nicklas 145             <tbl:button 
6306 13 Aug 13 nicklas 146               id="btnRestore"
5943 01 Feb 12 nicklas 147               disabled="<%=!writePermission%>" 
5946 03 Feb 12 nicklas 148               image="restore.png" 
5943 01 Feb 12 nicklas 149               title="Restore"
5943 01 Feb 12 nicklas 150               visible="<%=geometry.isRemoved()%>"
5943 01 Feb 12 nicklas 151               tooltip="<%=writePermission ? "Restore this plate geometry" : "You do not have permission to restore this plate geometry"%>" 
5943 01 Feb 12 nicklas 152             />
5943 01 Feb 12 nicklas 153             <tbl:button
6306 13 Aug 13 nicklas 154               id="btnNewPlateType"
5943 01 Feb 12 nicklas 155               image="add.png"
5943 01 Feb 12 nicklas 156               title="New plate type&hellip;"
5943 01 Feb 12 nicklas 157               tooltip="Create a new plate type with this geometry"
5943 01 Feb 12 nicklas 158               visible="<%=sc.hasPermission(Permission.CREATE, Item.PLATETYPE) && usePermission%>"
5943 01 Feb 12 nicklas 159             />
5943 01 Feb 12 nicklas 160             <tbl:button 
6306 13 Aug 13 nicklas 161               id="btnImport"
5946 03 Feb 12 nicklas 162               image="import.png" 
6306 13 Aug 13 nicklas 163               data-plugin-type="IMPORT"  
5943 01 Feb 12 nicklas 164               title="Import&hellip;" 
5943 01 Feb 12 nicklas 165               tooltip="Import data" 
5943 01 Feb 12 nicklas 166               visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5943 01 Feb 12 nicklas 167             />
5943 01 Feb 12 nicklas 168             <tbl:button 
6306 13 Aug 13 nicklas 169               id="btnExport"
6306 13 Aug 13 nicklas 170               image="export.png"
6306 13 Aug 13 nicklas 171               data-plugin-type="EXPORT" 
5943 01 Feb 12 nicklas 172               title="Export&hellip;" 
5943 01 Feb 12 nicklas 173               tooltip="Export data" 
5943 01 Feb 12 nicklas 174               visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5943 01 Feb 12 nicklas 175             />
5943 01 Feb 12 nicklas 176             <tbl:button 
6306 13 Aug 13 nicklas 177               id="btnRunPlugin"
6306 13 Aug 13 nicklas 178               image="runplugin.png"  
6306 13 Aug 13 nicklas 179               data-plugin-type="OTHER" 
5943 01 Feb 12 nicklas 180               title="Run plugin&hellip;" 
5943 01 Feb 12 nicklas 181               tooltip="Run a plugin" 
5943 01 Feb 12 nicklas 182               visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5943 01 Feb 12 nicklas 183             />
5943 01 Feb 12 nicklas 184             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 185               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5943 01 Feb 12 nicklas 186             <tbl:button
5943 01 Feb 12 nicklas 187               image="help.png"
6306 13 Aug 13 nicklas 188               subclass="auto-init"
6306 13 Aug 13 nicklas 189               data-auto-init="help"
6306 13 Aug 13 nicklas 190               data-help-id="plategeometry.view.properties"
5943 01 Feb 12 nicklas 191               title="Help&hellip;"
5943 01 Feb 12 nicklas 192               tooltip="Get help about this page"
5943 01 Feb 12 nicklas 193             />
5943 01 Feb 12 nicklas 194           </tbl:toolbar>
5943 01 Feb 12 nicklas 195         </td>
5943 01 Feb 12 nicklas 196       </tr>
2305 22 May 06 jari 197       <tr>
5943 01 Feb 12 nicklas 198         <th>Name</th>
2305 22 May 06 jari 199         <td><%=HTML.encodeTags(geometry.getName())%></td>
2305 22 May 06 jari 200       </tr>
2305 22 May 06 jari 201       <tr>
5943 01 Feb 12 nicklas 202         <th>Registered</th>
4698 10 Dec 08 nicklas 203         <td><%=dateFormatter.format(geometry.getEntryDate())%></td>
4698 10 Dec 08 nicklas 204       </tr>
4698 10 Dec 08 nicklas 205       <tr>
5943 01 Feb 12 nicklas 206         <th>Rows</th>
2305 22 May 06 jari 207         <td><%=geometry.getRows()%></td>
2305 22 May 06 jari 208       </tr>
2305 22 May 06 jari 209       <tr>
5943 01 Feb 12 nicklas 210         <th>Columns</th>
2305 22 May 06 jari 211         <td><%=geometry.getColumns()%></td>
2305 22 May 06 jari 212       </tr>
2305 22 May 06 jari 213       <tr>
5943 01 Feb 12 nicklas 214         <th>Permissions</th>
5943 01 Feb 12 nicklas 215         <td><%=PermissionUtil.getFullPermissionNames(geometry)%></td>
5943 01 Feb 12 nicklas 216       </tr>
5943 01 Feb 12 nicklas 217       <tr>
5943 01 Feb 12 nicklas 218         <th>Description</th>
2305 22 May 06 jari 219         <td><%=HTML.niceFormat(geometry.getDescription())%></td>
2305 22 May 06 jari 220       </tr>
2305 22 May 06 jari 221       </table>
5943 01 Feb 12 nicklas 222       </div>
2446 29 Jun 06 nicklas 223
2446 29 Jun 06 nicklas 224       <%
2446 29 Jun 06 nicklas 225       ItemQuery<PlateType> plateTypeQuery = geometry.getPlateTypes();
3888 29 Oct 07 nicklas 226       plateTypeQuery.include(Include.ALL);
2446 29 Jun 06 nicklas 227       plateTypeQuery.order(Orders.asc(Hql.property("name")));
2446 29 Jun 06 nicklas 228       ItemResultList<PlateType> plateTypes = plateTypeQuery.list(dc);
5943 01 Feb 12 nicklas 229       %>
5943 01 Feb 12 nicklas 230       <base:section 
5943 01 Feb 12 nicklas 231         id="types" 
5943 01 Feb 12 nicklas 232         title="<%="Plate types (" + plateTypes.size() + ")"%>"
5943 01 Feb 12 nicklas 233         context="<%=cc%>"
5943 01 Feb 12 nicklas 234         >
2446 29 Jun 06 nicklas 235         <%
5943 01 Feb 12 nicklas 236         if (plateTypes.size() == 0)
5943 01 Feb 12 nicklas 237         {
5943 01 Feb 12 nicklas 238           %>
5943 01 Feb 12 nicklas 239           <div class="messagecontainer note">
5943 01 Feb 12 nicklas 240           No plate types have this geometry
5943 01 Feb 12 nicklas 241           (or, you don't have permission to view them).
5943 01 Feb 12 nicklas 242           </div>
5943 01 Feb 12 nicklas 243           <%
5943 01 Feb 12 nicklas 244         }
5943 01 Feb 12 nicklas 245         else
5943 01 Feb 12 nicklas 246         {
5943 01 Feb 12 nicklas 247           %>
5044 11 Aug 09 martin 248           <tbl:table
5044 11 Aug 09 martin 249             id="plateTypes"
5044 11 Aug 09 martin 250             columns="all"
5044 11 Aug 09 martin 251             >
5044 11 Aug 09 martin 252           <tbl:columndef 
5044 11 Aug 09 martin 253             id="name"
5044 11 Aug 09 martin 254             title="Name"
5044 11 Aug 09 martin 255           />
5044 11 Aug 09 martin 256           <tbl:columndef 
5044 11 Aug 09 martin 257             id="description"
5044 11 Aug 09 martin 258             title="Description"
5044 11 Aug 09 martin 259           />
5044 11 Aug 09 martin 260           <tbl:data>
5943 01 Feb 12 nicklas 261             <tbl:headers>
5943 01 Feb 12 nicklas 262               <tbl:headerrow>
5943 01 Feb 12 nicklas 263                 <tbl:columnheaders />
5943 01 Feb 12 nicklas 264               </tbl:headerrow>
5943 01 Feb 12 nicklas 265             </tbl:headers>
5044 11 Aug 09 martin 266             <tbl:rows>
5044 11 Aug 09 martin 267             <%
5044 11 Aug 09 martin 268             for (PlateType item : plateTypes)
5044 11 Aug 09 martin 269             {
5044 11 Aug 09 martin 270               %>
5044 11 Aug 09 martin 271               <tbl:row>
5044 11 Aug 09 martin 272                 <tbl:cell column="name"><base:icon 
5946 03 Feb 12 nicklas 273                     image="deleted.png" 
5044 11 Aug 09 martin 274                     tooltip="This item has been scheduled for deletion" 
5044 11 Aug 09 martin 275                     visible="<%=item.isRemoved()%>"
5044 11 Aug 09 martin 276                   /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
5044 11 Aug 09 martin 277                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
5044 11 Aug 09 martin 278               </tbl:row>
5044 11 Aug 09 martin 279               <%
5044 11 Aug 09 martin 280             }
2446 29 Jun 06 nicklas 281             %>
5044 11 Aug 09 martin 282             </tbl:rows>
5044 11 Aug 09 martin 283           </tbl:data>
5044 11 Aug 09 martin 284           </tbl:table>
5943 01 Feb 12 nicklas 285           <%
5943 01 Feb 12 nicklas 286         }
5943 01 Feb 12 nicklas 287         %>
5943 01 Feb 12 nicklas 288       </base:section>
5499 17 Nov 10 nicklas 289       <jsp:include page="../../common/anytoany/list_anytoany.jsp">
5499 17 Nov 10 nicklas 290         <jsp:param name="ID" value="<%=ID%>" />
5499 17 Nov 10 nicklas 291         <jsp:param name="item_type" value="<%=itemType.name()%>" />
5499 17 Nov 10 nicklas 292         <jsp:param name="item_id" value="<%=itemId%>" />
5499 17 Nov 10 nicklas 293         <jsp:param name="title" value="Other items related to this geometry" />
5499 17 Nov 10 nicklas 294       </jsp:include>
5943 01 Feb 12 nicklas 295     </t:tab>
5943 01 Feb 12 nicklas 296     </t:tabcontrol>
2305 22 May 06 jari 297   </base:body>
2305 22 May 06 jari 298   </base:page>
2305 22 May 06 jari 299   <%
2305 22 May 06 jari 300 }
2305 22 May 06 jari 301 finally
2305 22 May 06 jari 302 {
2305 22 May 06 jari 303   if (dc != null) dc.close();
2305 22 May 06 jari 304 }
2305 22 May 06 jari 305
2305 22 May 06 jari 306 %>