www/lims/plates/wells/view_well.jsp

Code
Comments
Other
Rev Date Author Line
1862 30 Jan 06 nicklas 1 <%-- $Id$
1862 30 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg
3675 16 Aug 07 jari 4   Copyright (C) 2007 Nicklas Nordborg
1862 30 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/
1862 30 Jan 06 nicklas 8
1862 30 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1862 30 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
1862 30 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1862 30 Jan 06 nicklas 13
1862 30 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1862 30 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1862 30 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1862 30 Jan 06 nicklas 17   GNU General Public License for more details.
1862 30 Jan 06 nicklas 18
1862 30 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/>.
1862 30 Jan 06 nicklas 21   ------------------------------------------------------------------
1862 30 Jan 06 nicklas 22
1862 30 Jan 06 nicklas 23   @author Nicklas
1862 30 Jan 06 nicklas 24   @version 2.0
1862 30 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1862 30 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1862 30 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1862 30 Jan 06 nicklas 29   import="net.sf.basedb.core.SystemItems"
1862 30 Jan 06 nicklas 30   import="net.sf.basedb.core.Item"
1862 30 Jan 06 nicklas 31   import="net.sf.basedb.core.ItemContext"
1862 30 Jan 06 nicklas 32   import="net.sf.basedb.core.Permission"
1862 30 Jan 06 nicklas 33   import="net.sf.basedb.core.Plate"
1862 30 Jan 06 nicklas 34   import="net.sf.basedb.core.Well"
1939 08 Feb 06 nicklas 35   import="net.sf.basedb.core.Reporter"
1939 08 Feb 06 nicklas 36   import="net.sf.basedb.core.ReporterType"
1939 08 Feb 06 nicklas 37   import="net.sf.basedb.core.ExtendedProperties"
1939 08 Feb 06 nicklas 38   import="net.sf.basedb.core.ExtendedProperty"
1862 30 Jan 06 nicklas 39   import="net.sf.basedb.core.PermissionDeniedException"
1862 30 Jan 06 nicklas 40   import="net.sf.basedb.core.PluginDefinition"
1862 30 Jan 06 nicklas 41   import="net.sf.basedb.core.plugin.GuiContext"
1862 30 Jan 06 nicklas 42   import="net.sf.basedb.core.plugin.Plugin"
1862 30 Jan 06 nicklas 43   import="net.sf.basedb.core.data.ReporterData"
1862 30 Jan 06 nicklas 44   import="net.sf.basedb.clients.web.Base"
1862 30 Jan 06 nicklas 45   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 46   import="net.sf.basedb.util.Values"
2942 22 Nov 06 nicklas 47   import="net.sf.basedb.util.formatter.Formatter"
4860 27 Mar 09 martin 48   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
2942 22 Nov 06 nicklas 49   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4884 03 Apr 09 nicklas 50   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4884 03 Apr 09 nicklas 51   import="net.sf.basedb.clients.web.extensions.JspContext"
4884 03 Apr 09 nicklas 52   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 53   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4884 03 Apr 09 nicklas 54   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
4884 03 Apr 09 nicklas 55   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1862 30 Jan 06 nicklas 56   import="java.util.Date"
1862 30 Jan 06 nicklas 57   import="java.util.Map"
1862 30 Jan 06 nicklas 58   import="java.util.Set"
2747 19 Oct 06 enell 59   import="java.util.List"
1862 30 Jan 06 nicklas 60 %>
1862 30 Jan 06 nicklas 61 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1862 30 Jan 06 nicklas 62 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
1862 30 Jan 06 nicklas 63 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
1862 30 Jan 06 nicklas 64 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4884 03 Apr 09 nicklas 65 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1862 30 Jan 06 nicklas 66 <%!
1862 30 Jan 06 nicklas 67   private static final Item itemType = Item.WELL;
1862 30 Jan 06 nicklas 68   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
1862 30 Jan 06 nicklas 69 %>
1862 30 Jan 06 nicklas 70 <%
1862 30 Jan 06 nicklas 71 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1862 30 Jan 06 nicklas 72 final String ID = sc.getId();
1862 30 Jan 06 nicklas 73 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1862 30 Jan 06 nicklas 74 final int itemId = cc.getId();
1862 30 Jan 06 nicklas 75 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 76 final DbControl dc = sc.newDbControl(":View "+itemType);
1862 30 Jan 06 nicklas 77 try
1862 30 Jan 06 nicklas 78 {
7014 12 Nov 15 nicklas 79   final boolean readReporter = !sc.hasPermission(Permission.DENIED, Item.REPORTER);
4698 10 Dec 08 nicklas 80   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
4698 10 Dec 08 nicklas 81   Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
4860 27 Mar 09 martin 82   WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
4860 27 Mar 09 martin 83   WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
1862 30 Jan 06 nicklas 84   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
1862 30 Jan 06 nicklas 85
1862 30 Jan 06 nicklas 86   String title = null;
2216 05 May 06 nicklas 87   final Well well = Well.getById(dc, itemId);
2216 05 May 06 nicklas 88   final Plate plate = well.getPlate();
7014 12 Nov 15 nicklas 89   ReporterData reporter = readReporter ? well.getReporter() : null;
2216 05 May 06 nicklas 90   final int plateId = plate.getId();
1862 30 Jan 06 nicklas 91
1939 08 Feb 06 nicklas 92   Well parentWell = null;
1939 08 Feb 06 nicklas 93   boolean readParentWell = true;
1939 08 Feb 06 nicklas 94   Plate parentWellPlate = null;
1939 08 Feb 06 nicklas 95   boolean readParentWellPlate = true;
1939 08 Feb 06 nicklas 96   try
1939 08 Feb 06 nicklas 97   {
1939 08 Feb 06 nicklas 98     parentWell = well.getParent();
1939 08 Feb 06 nicklas 99   }
1939 08 Feb 06 nicklas 100   catch (PermissionDeniedException ex)
1939 08 Feb 06 nicklas 101   {
1939 08 Feb 06 nicklas 102     readParentWell = false;
1939 08 Feb 06 nicklas 103     readParentWellPlate = false;
1939 08 Feb 06 nicklas 104   }
1939 08 Feb 06 nicklas 105   if (parentWell != null)
1939 08 Feb 06 nicklas 106   {
1939 08 Feb 06 nicklas 107     try
1939 08 Feb 06 nicklas 108     {
1939 08 Feb 06 nicklas 109       parentWellPlate = parentWell.getPlate();
1939 08 Feb 06 nicklas 110     }
1939 08 Feb 06 nicklas 111     catch (PermissionDeniedException ex)
1939 08 Feb 06 nicklas 112     {
1939 08 Feb 06 nicklas 113       readParentWellPlate = false;
1939 08 Feb 06 nicklas 114     }
1939 08 Feb 06 nicklas 115   }
1939 08 Feb 06 nicklas 116   
5920 10 Jan 12 nicklas 117   boolean readCurrentReporterType = true;
5920 10 Jan 12 nicklas 118   ReporterType currentReporterType = null;
5920 10 Jan 12 nicklas 119   if (reporter != null)
5920 10 Jan 12 nicklas 120   {
5920 10 Jan 12 nicklas 121     reporter = Reporter.getById(dc, reporter.getId());
5920 10 Jan 12 nicklas 122     try
5920 10 Jan 12 nicklas 123     {
5920 10 Jan 12 nicklas 124       currentReporterType = Reporter.getReporterType(dc, reporter);
5920 10 Jan 12 nicklas 125     }
5920 10 Jan 12 nicklas 126     catch (PermissionDeniedException ex)
5920 10 Jan 12 nicklas 127     {
5920 10 Jan 12 nicklas 128       readCurrentReporterType = false;
5920 10 Jan 12 nicklas 129     }
5920 10 Jan 12 nicklas 130   }
5920 10 Jan 12 nicklas 131   
1862 30 Jan 06 nicklas 132   final boolean writePermission = well.hasPermission(Permission.WRITE);
1862 30 Jan 06 nicklas 133   final boolean deletePermission = well.hasPermission(Permission.DELETE);
4884 03 Apr 09 nicklas 134   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, well);
7604 25 Feb 19 nicklas 135   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
1862 30 Jan 06 nicklas 136   %>
6307 15 Aug 13 nicklas 137   <base:page title="<%=title%>" id="view-page">
6307 15 Aug 13 nicklas 138   <base:head scripts="table.js,tabcontrol-2.js,~wells.js" styles="toolbar.css,table.css,headertabcontrol.css,path.css">
4884 03 Apr 09 nicklas 139     <ext:scripts context="<%=jspContext%>" />
4884 03 Apr 09 nicklas 140     <ext:stylesheets context="<%=jspContext%>" />
1862 30 Jan 06 nicklas 141   </base:head>
1862 30 Jan 06 nicklas 142   <base:body>
5943 01 Feb 12 nicklas 143     <p:path><p:pathelement 
5943 01 Feb 12 nicklas 144       title="Plates" href="<%="../index.jsp?ID="+ID%>" 
5943 01 Feb 12 nicklas 145       /><p:pathelement 
1862 30 Jan 06 nicklas 146         title="<%=HTML.encodeTags(plate.getName())%>" 
6146 21 Sep 12 nicklas 147         href="<%="index.jsp?ID="+ID+"&amp;plate_id="+plateId%>" 
5943 01 Feb 12 nicklas 148       /><p:pathelement title="<%="Well: "+rowFormatter.format(well.getRow())+columnFormatter.format(well.getColumn())%>" 
5943 01 Feb 12 nicklas 149       /></p:path>
6307 15 Aug 13 nicklas 150     <div id="page-data" data-item-id="<%=itemId%>"></div>
1862 30 Jan 06 nicklas 151     
5943 01 Feb 12 nicklas 152     <t:tabcontrol 
5943 01 Feb 12 nicklas 153       id="main" 
5943 01 Feb 12 nicklas 154       subclass="content mastertabcontrol" 
5943 01 Feb 12 nicklas 155       active="properties">
1862 30 Jan 06 nicklas 156     <t:tab id="properties" title="Properties">
5943 01 Feb 12 nicklas 157       <div>
5943 01 Feb 12 nicklas 158       <table class="fullform bottomborder">
1862 30 Jan 06 nicklas 159       <tr>
5943 01 Feb 12 nicklas 160         <th class="itemstatus"></th>
5943 01 Feb 12 nicklas 161         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 162           <tbl:toolbar subclass="bottomborder bg-filled-50">
5943 01 Feb 12 nicklas 163             <tbl:button 
6307 15 Aug 13 nicklas 164               id="btnEdit"
5943 01 Feb 12 nicklas 165               disabled="<%=!writePermission%>" 
5945 02 Feb 12 nicklas 166               image="edit.png" 
5943 01 Feb 12 nicklas 167               title="Edit&hellip;" 
5943 01 Feb 12 nicklas 168               tooltip="<%=writePermission ? "Edit this well" : "You do not have permission to edit this well"%>" 
5943 01 Feb 12 nicklas 169             />
5943 01 Feb 12 nicklas 170             <tbl:button 
6307 15 Aug 13 nicklas 171               id="btnImport"
5946 03 Feb 12 nicklas 172               image="import.png" 
6307 15 Aug 13 nicklas 173               data-plugin-type="IMPORT"  
5943 01 Feb 12 nicklas 174               title="Import&hellip;" 
5943 01 Feb 12 nicklas 175               tooltip="Import data" 
5943 01 Feb 12 nicklas 176               visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5943 01 Feb 12 nicklas 177             />
5943 01 Feb 12 nicklas 178             <tbl:button 
6307 15 Aug 13 nicklas 179               id="btnExport"
6307 15 Aug 13 nicklas 180               image="export.png"
6307 15 Aug 13 nicklas 181               data-plugin-type="EXPORT" 
5943 01 Feb 12 nicklas 182               title="Export&hellip;" 
5943 01 Feb 12 nicklas 183               tooltip="Export data" 
5943 01 Feb 12 nicklas 184               visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5943 01 Feb 12 nicklas 185             />
5943 01 Feb 12 nicklas 186             <tbl:button 
6307 15 Aug 13 nicklas 187               id="btnRunPlugin"
6307 15 Aug 13 nicklas 188               image="runplugin.png"  
6307 15 Aug 13 nicklas 189               data-plugin-type="OTHER" 
5943 01 Feb 12 nicklas 190               title="Run plugin&hellip;" 
5943 01 Feb 12 nicklas 191               tooltip="Run a plugin" 
5943 01 Feb 12 nicklas 192               visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5943 01 Feb 12 nicklas 193             />
5943 01 Feb 12 nicklas 194             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 195               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5943 01 Feb 12 nicklas 196             <tbl:button
5943 01 Feb 12 nicklas 197               image="help.png"
6307 15 Aug 13 nicklas 198               subclass="auto-init"
6307 15 Aug 13 nicklas 199               data-auto-init="help"
6307 15 Aug 13 nicklas 200               data-help-id="well.view.properties"
5943 01 Feb 12 nicklas 201               title="Help&hellip;"
5943 01 Feb 12 nicklas 202               tooltip="Get help about this page"
5943 01 Feb 12 nicklas 203             />
5943 01 Feb 12 nicklas 204           </tbl:toolbar>
5943 01 Feb 12 nicklas 205         </td>
1862 30 Jan 06 nicklas 206       </tr>
1862 30 Jan 06 nicklas 207       <tr>
5943 01 Feb 12 nicklas 208         <th>Position</th>
5943 01 Feb 12 nicklas 209         <td><%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%></td>
1862 30 Jan 06 nicklas 210       </tr>
1862 30 Jan 06 nicklas 211       <tr>
5943 01 Feb 12 nicklas 212         <th>Parent plate/well</th>
1939 08 Feb 06 nicklas 213         <td>
1939 08 Feb 06 nicklas 214           <%
1939 08 Feb 06 nicklas 215           if (!readParentWell)
1939 08 Feb 06 nicklas 216           {
1939 08 Feb 06 nicklas 217             %>
1939 08 Feb 06 nicklas 218             <i>- denied -</i>
1939 08 Feb 06 nicklas 219             <%
1939 08 Feb 06 nicklas 220           }
1939 08 Feb 06 nicklas 221           else if (parentWell == null)
1939 08 Feb 06 nicklas 222           {
1939 08 Feb 06 nicklas 223             %>
1939 08 Feb 06 nicklas 224             <i>- none -</i>
1939 08 Feb 06 nicklas 225             <%
1939 08 Feb 06 nicklas 226           }
1939 08 Feb 06 nicklas 227           else
1939 08 Feb 06 nicklas 228           {
1939 08 Feb 06 nicklas 229             %>
2446 29 Jun 06 nicklas 230             <%=Base.getLink(ID, parentWellPlate.getName() + " [" + parentWell.getRow() + ", " + parentWell.getColumn() + "]",
2446 29 Jun 06 nicklas 231               Item.WELL, parentWell.getId(), true) %>
1939 08 Feb 06 nicklas 232             <%
1939 08 Feb 06 nicklas 233           }
1939 08 Feb 06 nicklas 234           %>
1939 08 Feb 06 nicklas 235         </td>
1862 30 Jan 06 nicklas 236       </tr>
1939 08 Feb 06 nicklas 237       <%
1939 08 Feb 06 nicklas 238       if (reporter == null)
1939 08 Feb 06 nicklas 239       {
1939 08 Feb 06 nicklas 240         %>
5943 01 Feb 12 nicklas 241         <tr>
5943 01 Feb 12 nicklas 242           <th>Reporter</th>
7014 12 Nov 15 nicklas 243           <td><i>- <%=readReporter ? "none" : "denied"%> -</i></td>
5943 01 Feb 12 nicklas 244         </tr>
1939 08 Feb 06 nicklas 245         <%
1939 08 Feb 06 nicklas 246       }
5943 01 Feb 12 nicklas 247       %>
5943 01 Feb 12 nicklas 248       </table>
5943 01 Feb 12 nicklas 249       </div>
5943 01 Feb 12 nicklas 250       
5943 01 Feb 12 nicklas 251       <%
5943 01 Feb 12 nicklas 252       if (reporter != null)
1939 08 Feb 06 nicklas 253       {
1939 08 Feb 06 nicklas 254         %>
5943 01 Feb 12 nicklas 255         <table class="fullform bottomborder">
5943 01 Feb 12 nicklas 256           <tbody class="sectionheader">
5943 01 Feb 12 nicklas 257             <tr>
5943 01 Feb 12 nicklas 258               <th colspan="2">Reporter</th>
5943 01 Feb 12 nicklas 259             </tr>
5943 01 Feb 12 nicklas 260           </tbody>
1939 08 Feb 06 nicklas 261           <tr>
5943 01 Feb 12 nicklas 262             <th>Name</th>
2446 29 Jun 06 nicklas 263             <td><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true) %></td>
1939 08 Feb 06 nicklas 264           </tr>
1939 08 Feb 06 nicklas 265           <tr>
5943 01 Feb 12 nicklas 266             <th>External ID</th>
5943 01 Feb 12 nicklas 267             <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
5943 01 Feb 12 nicklas 268           </tr>
5943 01 Feb 12 nicklas 269           <tr>
5943 01 Feb 12 nicklas 270             <th>Type</th>
5943 01 Feb 12 nicklas 271             <td><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></td>
5943 01 Feb 12 nicklas 272           </tr>
5943 01 Feb 12 nicklas 273           <tr>
5943 01 Feb 12 nicklas 274             <th>Registered</th>
4698 10 Dec 08 nicklas 275             <td><%=dateFormatter.format(reporter.getEntryDate())%></td>
4698 10 Dec 08 nicklas 276           </tr>
4698 10 Dec 08 nicklas 277           <tr>
5943 01 Feb 12 nicklas 278             <th>Last update</th>
4698 10 Dec 08 nicklas 279             <td><%=dateTimeFormatter.format(reporter.getLastUpdate())%></td>
4698 10 Dec 08 nicklas 280           </tr>
4698 10 Dec 08 nicklas 281           <tr>
5943 01 Feb 12 nicklas 282             <th class="subprompt">- from/by</th>
5943 01 Feb 12 nicklas 283             <td><%=HTML.niceFormat(reporter.getLastSource())%></td>
1939 08 Feb 06 nicklas 284           </tr>
1939 08 Feb 06 nicklas 285           <tr>
5943 01 Feb 12 nicklas 286             <th>Gene symbol</th>
5943 01 Feb 12 nicklas 287             <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
1939 08 Feb 06 nicklas 288           </tr>
1939 08 Feb 06 nicklas 289           <tr>
5943 01 Feb 12 nicklas 290             <th>Description</th>
1939 08 Feb 06 nicklas 291             <td><%=HTML.niceFormat(reporter.getDescription())%></td>
1939 08 Feb 06 nicklas 292           </tr>
5943 01 Feb 12 nicklas 293         </table>
5943 01 Feb 12 nicklas 294         
5943 01 Feb 12 nicklas 295         <%
5943 01 Feb 12 nicklas 296         List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
5943 01 Feb 12 nicklas 297         %>
5943 01 Feb 12 nicklas 298         <base:section
5943 01 Feb 12 nicklas 299           id="extendedProperties"
5943 01 Feb 12 nicklas 300           title="<%="Extended properties (" + reporterProperties.size() + ")"%>"
5943 01 Feb 12 nicklas 301           context="<%=cc%>"
5943 01 Feb 12 nicklas 302           >
5943 01 Feb 12 nicklas 303           <table class="fullform fullborder">
5943 01 Feb 12 nicklas 304             <%        
2747 19 Oct 06 enell 305             if (reporterProperties != null)
1939 08 Feb 06 nicklas 306             {
2747 19 Oct 06 enell 307               boolean needsTr = true;
2747 19 Oct 06 enell 308               for (ExtendedProperty ep : reporterProperties)
2313 23 May 06 nicklas 309               {
2747 19 Oct 06 enell 310                 String name = ep.getName();
7605 26 Feb 19 nicklas 311                 Formatter<Object> f = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
2942 22 Nov 06 nicklas 312                 String value = f.format(reporter.getExtended(name));
2747 19 Oct 06 enell 313                 %>
5943 01 Feb 12 nicklas 314                   <%=needsTr ? "<tr><th>" : "<th class=\"leftborder\">" %>
5943 01 Feb 12 nicklas 315                   <%=HTML.encodeTags(ep.getTitle())%></th>
2747 19 Oct 06 enell 316                   <td><%=value%></td>
2747 19 Oct 06 enell 317                   <%=needsTr ? "" : "</tr>"%>
2747 19 Oct 06 enell 318                 <%
2747 19 Oct 06 enell 319                 needsTr = !needsTr;
2313 23 May 06 nicklas 320               }
1939 08 Feb 06 nicklas 321               %>
5943 01 Feb 12 nicklas 322               <%=needsTr ? "" : "<th class=\"leftborder\"></th><td></td></tr>"%>
1939 08 Feb 06 nicklas 323               <%
1939 08 Feb 06 nicklas 324             }
1939 08 Feb 06 nicklas 325             %>
1939 08 Feb 06 nicklas 326           </table>
5943 01 Feb 12 nicklas 327         </base:section>
1939 08 Feb 06 nicklas 328         <%
1939 08 Feb 06 nicklas 329       }
1939 08 Feb 06 nicklas 330       %>
5943 01 Feb 12 nicklas 331
5499 17 Nov 10 nicklas 332       <jsp:include page="../../../common/anytoany/list_anytoany.jsp">
5499 17 Nov 10 nicklas 333         <jsp:param name="ID" value="<%=ID%>" />
5499 17 Nov 10 nicklas 334         <jsp:param name="item_type" value="<%=itemType.name()%>" />
5499 17 Nov 10 nicklas 335         <jsp:param name="item_id" value="<%=itemId%>" />
5499 17 Nov 10 nicklas 336         <jsp:param name="title" value="Other items related to this well" />
5499 17 Nov 10 nicklas 337       </jsp:include>
1862 30 Jan 06 nicklas 338       </t:tab>
5935 26 Jan 12 nicklas 339       <t:tab id="annotations" title="Annotations" 
6307 15 Aug 13 nicklas 340         tooltip="View annotation values" clazz="white">
6255 22 Mar 13 nicklas 341         <jsp:include page="../../../common/annotations/list_frameset.jsp">
1862 30 Jan 06 nicklas 342           <jsp:param name="item_type" value="<%=itemType.name()%>" />
1862 30 Jan 06 nicklas 343           <jsp:param name="item_id" value="<%=itemId%>" />
1862 30 Jan 06 nicklas 344           <jsp:param name="ID" value="<%=ID%>" />
1862 30 Jan 06 nicklas 345         </jsp:include>
1862 30 Jan 06 nicklas 346       </t:tab>
5943 01 Feb 12 nicklas 347     </t:tabcontrol>
5935 26 Jan 12 nicklas 348
1862 30 Jan 06 nicklas 349   </base:body>
1862 30 Jan 06 nicklas 350   </base:page>
1862 30 Jan 06 nicklas 351   <%
1862 30 Jan 06 nicklas 352 }
1862 30 Jan 06 nicklas 353 finally
1862 30 Jan 06 nicklas 354 {
1862 30 Jan 06 nicklas 355   if (dc != null) dc.close();
1862 30 Jan 06 nicklas 356 }
1862 30 Jan 06 nicklas 357
1862 30 Jan 06 nicklas 358 %>