source: branches/3.2-stable/www/biomaterials/extracts/view_extract.jsp @ 6251

Last change on this file since 6251 was 6251, checked in by Nicklas Nordborg, 9 years ago

Fixes #1746: The original and remaining quantity values are always displayed with 2 decimals

Needed to fix in a lot more places than I thought. Hope I have found all of them...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 21.5 KB
Line 
1<%-- $Id: view_extract.jsp 6251 2013-03-13 14:45:39Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4  Copyright (C) 2007 Martin Svensson
5
6  This file is part of BASE - BioArray Software Environment.
7  Available at http://base.thep.lu.se/
8
9  BASE is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License
11  as published by the Free Software Foundation; either version 3
12  of the License, or (at your option) any later version.
13
14  BASE is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with BASE. If not, see <http://www.gnu.org/licenses/>.
21  ------------------------------------------------------------------
22
23  @author Nicklas
24  @version 2.0
25--%>
26<%@ page pageEncoding="UTF-8" session="false"
27  import="net.sf.basedb.core.SessionControl"
28  import="net.sf.basedb.core.DbControl"
29  import="net.sf.basedb.core.SystemItems"
30  import="net.sf.basedb.core.Group"
31  import="net.sf.basedb.core.Item"
32  import="net.sf.basedb.core.CommonItem"
33  import="net.sf.basedb.core.ItemContext"
34  import="net.sf.basedb.core.ItemProxy"
35  import="net.sf.basedb.core.Permission"
36  import="net.sf.basedb.core.Extract"
37  import="net.sf.basedb.core.PhysicalBioAssay"
38  import="net.sf.basedb.core.Sample"
39  import="net.sf.basedb.core.BioMaterial"
40  import="net.sf.basedb.core.BioMaterialEvent"
41  import="net.sf.basedb.core.BioMaterialEventSource"
42  import="net.sf.basedb.core.BioWell"
43  import="net.sf.basedb.core.MultiPermissions"
44  import="net.sf.basedb.core.ItemSubtype"
45  import="net.sf.basedb.core.Protocol"
46  import="net.sf.basedb.core.Project"
47  import="net.sf.basedb.core.User"
48  import="net.sf.basedb.core.ItemQuery"
49  import="net.sf.basedb.core.ItemResultList"
50  import="net.sf.basedb.core.SpecialQuery"
51  import="net.sf.basedb.core.Include"
52  import="net.sf.basedb.core.query.ResultList"
53  import="net.sf.basedb.core.query.Orders"
54  import="net.sf.basedb.core.query.Hql"
55  import="net.sf.basedb.core.query.Restrictions"
56  import="net.sf.basedb.core.query.Expressions"
57  import="net.sf.basedb.core.PermissionDeniedException"
58  import="net.sf.basedb.core.PluginDefinition"
59  import="net.sf.basedb.core.plugin.GuiContext"
60  import="net.sf.basedb.core.plugin.Plugin"
61  import="net.sf.basedb.core.Type"
62  import="net.sf.basedb.clients.web.Base"
63  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
64  import="net.sf.basedb.clients.web.PermissionUtil"
65  import="net.sf.basedb.clients.web.util.HTML"
66  import="net.sf.basedb.util.Values"
67  import="net.sf.basedb.util.formatter.Formatter"
68  import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
69  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
70  import="net.sf.basedb.clients.web.formatter.FormatterSettings"
71  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
72  import="net.sf.basedb.clients.web.extensions.JspContext"
73  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
74  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
75  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
76  import="java.util.ArrayList"
77  import="java.util.Collections"
78  import="java.util.Date"
79  import="java.util.Map"
80  import="java.util.Set"
81  import="java.util.List"
82%>
83<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
84<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
85<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
86<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
87<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
88<%!
89  private static final Item itemType = Item.EXTRACT;
90  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
91%>
92<%
93final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
94final String ID = sc.getId();
95final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
96final int itemId = cc.getId();
97final String tab = Values.getString(request.getParameter("tab"), "properties");
98final float scale = Base.getScale(sc);
99final DbControl dc = sc.newDbControl();
100try
101{
102  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
103  int numDecimals = FormatterSettings.getNumDecimals(sc);
104  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
105 
106  WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
107  WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
108
109  String title = null;
110  Extract extract = Extract.getById(dc, itemId);
111  BioMaterialEvent creationEvent = extract.getCreationEvent();
112 
113  final boolean writePermission = extract.hasPermission(Permission.WRITE);
114  final boolean deletePermission = extract.hasPermission(Permission.DELETE);
115  final boolean sharePermission = extract.hasPermission(Permission.SET_PERMISSION);
116  final boolean usePermission = extract.hasPermission(Permission.USE);
117  final boolean setOwnerPermission = extract.hasPermission(Permission.SET_OWNER);
118  final boolean isRemoved = extract.isRemoved();
119  final boolean isUsed = isRemoved && extract.isUsed();
120  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
121  final boolean isOwner = extract.isOwner(); 
122  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, extract);
123  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
124  %>
125  <base:page title="<%=title%>">
126  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
127    <ext:scripts context="<%=jspContext%>" />
128    <ext:stylesheets context="<%=jspContext%>" />
129    <script language="JavaScript">
130    function editItem()
131    {
132      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
133    }
134    function newExtract()
135    {
136      Main.viewOrEditItem('<%=ID%>', 'EXTRACT', 0, true, '&extract_id=<%=itemId%>');
137    }
138    function shareItem()
139    {
140      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareExtract', 600, 400);
141    }
142    function deleteItem()
143    {
144      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
145    }
146    function restoreItem()
147    {
148      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
149    }
150    function deleteItemPermanently()
151    {
152      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', <%=itemId%>, '&callback=itemDeleted');
153    }
154    function itemDeleted()
155    {
156      Main.listItems('<%=ID%>', '<%=itemType.name()%>');
157    }
158    function showUsingItems()
159    {
160      Main.showUsingItems('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>);
161    }
162    function setOwner()
163    {
164      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 300);
165    }
166    function runPlugin(cmd)
167    {
168      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 750, 500);
169    }
170    function viewEvents()
171    {
172      location.href = '../events/index.jsp?ID=<%=ID%>&cmd=List&biomaterial_id=<%=itemId%>&biomaterial_type=<%=itemType.name()%>';
173    }
174    function switchTab(tabControlId, tabId)
175    {
176      if (TabControl.isActive(tabControlId, tabId)) return;
177      if ((tabId == 'overview' || tabId == 'history') && tabId != '<%=tab%>')
178      {
179        location.href = 'index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=itemId%>&tab='+tabId;
180      }
181      else if (tabId == 'events')
182      {
183        viewEvents();
184      }
185      else
186      {
187        TabControl.setActiveTab(tabControlId, tabId);
188      }
189    }
190    function newPhysicalBioAssay()
191    {
192      Main.viewOrEditItem('<%=ID%>', 'PHYSICALBIOASSAY', 0, true, '&extract_id='+<%=itemId%>);
193    }
194    function newRawBioAssay()
195    {
196      Main.viewOrEditItem('<%=ID%>', 'RAWBIOASSAY', 0, true, '&extract_id='+<%=itemId%>);
197    }
198    </script>
199  </base:head>
200  <base:body>
201    <p:path><p:pathelement 
202      title="Extracts" href="<%="index.jsp?ID="+ID%>" /><p:pathelement
203      title="<%=HTML.encodeTags(extract.getName())%>" /></p:path>
204   
205    <t:tabcontrol id="main" subclass="content mastertabcontrol" active="<%=tab%>" switch="switchTab" remember="false">
206    <t:tab id="properties" title="Properties">
207      <div>
208      <table class="fullform bottomborder">
209      <tr>
210        <th class="itemstatus">
211          <base:icon 
212            image="shared.png" 
213            visible="<%=extract.isShared()%>"
214            tooltip="This item is shared to other users, groups and/or projects"
215          />
216          <base:icon 
217            image="deleted.png"
218            onclick="deleteItemPermanently()"
219            tooltip="This item has been flagged for deletion. Click to delete it now."
220            enabled="<%=deletePermanentlyPermission %>"
221            visible="<%=isRemoved%>" 
222          />
223          <base:icon image="used.png" 
224            onclick="showUsingItems()"
225            tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
226            visible="<%=isRemoved && isUsed%>" />
227        </th>
228        <td style="padding: 0px;">
229          <tbl:toolbar subclass="bottomborder">
230            <tbl:button 
231              disabled="<%=!writePermission%>" 
232              image="edit.png" 
233              onclick="editItem()" 
234              title="Edit&hellip;" 
235              tooltip="<%=writePermission ? "Edit this extract" : "You do not have permission to edit this extract"%>" 
236            />
237            <tbl:button 
238              disabled="<%=!deletePermission%>" 
239              image="delete.png" 
240              onclick="deleteItem()" 
241              title="Delete"
242              visible="<%=!extract.isRemoved()%>"
243              tooltip="<%=deletePermission ? "Delete this extract" : "You do not have permission to delete this extract"%>" 
244            />
245            <tbl:button 
246              disabled="<%=!writePermission%>" 
247              image="restore.png" 
248              onclick="restoreItem()" 
249              title="Restore"
250              visible="<%=extract.isRemoved()%>"
251              tooltip="<%=writePermission ? "Restore this extract" : "You do not have permission to restore this extract"%>" 
252            />
253            <tbl:button 
254              disabled="<%=!sharePermission%>"
255              image="share.png"
256              onclick="shareItem()" 
257              title="Share&hellip;" 
258              tooltip="<%=sharePermission ? "Share this extract to other user, groups and projects" : "You do not have permission to share this extract"%>"
259            />
260            <tbl:button 
261              disabled="<%=!setOwnerPermission%>"
262              image="take_ownership.png"
263              onclick="setOwner()" 
264              title="Set owner&hellip;"
265              tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
266            />
267            <tbl:button
268              image="add.png"
269              onclick="newExtract()"
270              title="New child extract&hellip;"
271              tooltip="Create a new child extract from this extract"
272              visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>"
273            />
274            <tbl:button
275              image="add.png"
276              onclick="newPhysicalBioAssay()"
277              title="New physical bioassay&hellip;"
278              tooltip="Create a new physical bioassay from this extract"
279              visible="<%=sc.hasPermission(Permission.CREATE, Item.PHYSICALBIOASSAY) && usePermission%>"
280            />
281            <tbl:button
282              image="add.png"
283              onclick="newRawBioAssay()"
284              title="New raw bioassay&hellip;"
285              tooltip="Create a new raw bioassay from this extract"
286              visible="<%=sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY) && usePermission%>"
287            />
288            <tbl:button 
289              image="import.png" 
290              onclick="runPlugin('ImportItem')" 
291              title="Import&hellip;" 
292              tooltip="Import data" 
293              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
294            />
295            <tbl:button 
296              image="export.png" 
297              onclick="runPlugin('ExportItem')" 
298              title="Export&hellip;" 
299              tooltip="Export data" 
300              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
301            />
302            <tbl:button 
303              image="runplugin.png" 
304              onclick="runPlugin('RunPlugin')" 
305              title="Run plugin&hellip;" 
306              tooltip="Run a plugin" 
307              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
308            />
309            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
310              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
311            <tbl:button
312              image="help.png"
313              onclick="<%="Main.openHelp('" + ID +"', 'extract.view.properties')"%>"
314              title="Help&hellip;"
315              tooltip="Get help about this page"
316            />
317            </tbl:toolbar>
318          </td>
319        </tr>
320        <tr>
321          <th>Name</th>
322          <td><%=HTML.encodeTags(extract.getName())%></td>
323        </tr>
324        <tr>
325          <th>Type</th>
326          <td><base:propertyvalue item="<%=extract%>" property="itemSubtype" /></td>
327        </tr>
328        <tr>
329          <th>External ID</th>
330          <td><%=HTML.encodeTags(extract.getExternalId())%></td>
331        </tr>
332        <tr>
333          <th>Created</th>
334          <td><%=dateFormatter.format(creationEvent.getEventDate())%></td>
335        </tr>
336        <tr>
337          <th>Registered</th>
338          <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td>
339        </tr>
340        <tr>
341          <th>Tag</th>
342          <td><base:propertyvalue item="<%=extract%>" property="tag"/></td>
343        </tr>
344        <tr>
345          <th>Protocol</th>
346          <td><base:propertyvalue item="<%=creationEvent%>" property="protocol"/></td>
347        </tr>
348        <tr>
349          <th>Original quantity</th>
350          <td><%=Values.formatNumber(extract.getOriginalQuantity(), numDecimals, " µg")%></td>
351        </tr>
352        <tr>
353          <th class="subprompt">- remaining</th>
354          <td><%=Values.formatNumber(extract.getRemainingQuantity(), numDecimals, " µg")%></td>
355        </tr>
356        <tr>
357          <th>Bioplate</th>
358          <td>
359            <base:propertyvalue item="<%=extract%>" property="bioWell.bioPlate" />
360            <%
361            try
362            {
363              BioWell well = extract.getBioWell();
364              if (well != null)
365              {
366                %>
367                [<%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%>]
368                <base:icon image="locked.png"  visible="<%=extract.isLockedInWell()%>"/>
369              <%
370              }
371            }
372            catch (PermissionDeniedException ex)
373            {}
374            %>
375          </td>
376        </tr>
377        <tr>
378          <th>Owner</th>
379          <td><base:propertyvalue item="<%=extract%>" property="owner"/></td>
380        </tr>
381        <tr>
382          <th>Permissions</th>
383          <td><%=PermissionUtil.getFullPermissionNames(extract)%></td>
384        </tr>
385        <tr>
386          <th>Description</th>
387          <td><%=HTML.niceFormat(extract.getDescription())%></td>
388        </tr>
389      </table>
390      </div>
391 
392      <%
393      SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources();
394      sourceQuery.order(Orders.asc(Hql.property("bioMaterial.name")));
395      ResultList<BioMaterialEventSource> sources = sourceQuery.list(dc);
396      %>
397      <base:section 
398        id="parentsSection" 
399        title="<%="Parent items (" + sources.size() + ")"%>"
400        context="<%=cc%>"
401        >
402        <%
403        if (sources.size() == 0)
404        {
405          %>
406          <div class="messagecontainer note">
407          This extract doesn't have any parent items
408          (or, you don't have permission to view them).
409          </div>
410          <%
411        }
412        else
413        {
414          %>
415          <tbl:table
416            id="parents"
417            columns="all"
418            >
419          <tbl:columndef 
420            id="name"
421            title="Name"
422          />
423          <tbl:columndef 
424            id="type"
425            title="Type"
426          />
427          <tbl:columndef 
428            id="quantity"
429            title="Used quantity (µg)"
430          />
431          <tbl:columndef 
432            id="description"
433            title="Description"
434          />
435          <tbl:data>
436            <tbl:headers>
437              <tbl:headerrow>
438                <tbl:columnheaders />
439              </tbl:headerrow>
440            </tbl:headers>
441            <tbl:rows>
442            <%
443            for (BioMaterialEventSource item : sources)
444            {
445              BioMaterial bm = null;
446              ItemSubtype subtype = null;
447              try
448              {
449                bm = item.getBioMaterial();
450                subtype = bm.getItemSubtype();
451              }
452              catch (PermissionDeniedException ex)
453              {}
454              %>
455              <tbl:row>
456                <tbl:cell column="name"><base:icon 
457                  image="deleted.png" 
458                  tooltip="This item has been scheduled for deletion" 
459                  visible="<%=bm != null && bm.isRemoved()%>"
460                  /><%=Base.getLinkedName(ID, bm, bm == null, true)%></tbl:cell>
461                <tbl:cell column="type">
462                  <%
463                  if (subtype != null)
464                  {
465                    %>
466                    <%=Base.getLinkedName(ID, subtype, false, true)%> <span class="itemsubtype">(<%=bm.getType() %>)</span>
467                    <%
468                  }
469                  else
470                  {
471                    %>
472                    <%=bm != null ? bm.getType() : "" %>
473                    <%
474                  }
475                  %>
476                </tbl:cell>
477                <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), numDecimals)%></tbl:cell>
478                <tbl:cell column="description"><%=HTML.encodeTags(bm == null ? "" : bm.getDescription())%></tbl:cell>
479              </tbl:row>
480              <%
481            }
482            %>
483          </tbl:rows>
484          </tbl:data>
485          </tbl:table>
486          <%
487        }
488      %>
489      </base:section>
490      <%
491      SpecialQuery<BioMaterialEventSource> childQuery = extract.getChildCreationEvents();
492      childQuery.join(Hql.innerJoin("es", "event", "evt", true));
493      childQuery.join(Hql.leftJoin("evt", "bioMaterial", "bm", null, true));
494      childQuery.join(Hql.leftJoin("evt", "physicalBioAssay", "pba", null, true));
495      childQuery.order(Orders.asc(Hql.property("pba", "name")));
496      childQuery.order(Orders.asc(Hql.property("bm", "name")));
497      ResultList<BioMaterialEventSource> children = childQuery.list(dc);
498      %>
499      <base:section 
500        id="childSection" 
501        title="<%="Child items (" + children.size() + ")"%>"
502        context="<%=cc%>"
503        >
504        <%
505        if (children.size() == 0)
506        {
507          %>
508          <div class="messagecontainer note">
509          No child items have been created from this extract
510          (or, you don't have permission to view them).
511          </div>
512          <%
513        }
514        else
515        {
516          %>
517          <tbl:table 
518            id="children"
519            columns="all"
520            >
521            <tbl:columndef 
522              id="name"
523              title="Name"
524            />
525            <tbl:columndef 
526              id="type"
527              title="Type"
528            />
529            <tbl:columndef 
530              id="quantity"
531              title="Used quantity (µg)"
532            />
533            <tbl:columndef 
534              id="description"
535              title="Description"
536            />
537            <tbl:data>
538            <tbl:headers>
539              <tbl:headerrow>
540                <tbl:columnheaders />
541              </tbl:headerrow>
542              </tbl:headers>
543              <tbl:rows>
544              <%
545              for (BioMaterialEventSource item : children)
546              {
547                CommonItem child = null;
548                ItemSubtype subtype = null;
549                try
550                {
551                  BioMaterialEvent evt = item.getEvent();
552                  if (evt.getEventType() == BioMaterialEvent.Type.BIOASSAY)
553                  {
554                    PhysicalBioAssay bioAssay = evt.getPhysicalBioAssay();
555                    subtype = bioAssay.getItemSubtype();
556                    child = bioAssay;
557                  }
558                  else
559                  {
560                    BioMaterial bm = evt.getBioMaterial();
561                    subtype = bm.getItemSubtype();
562                    child = bm;
563                  }
564                }
565                catch (PermissionDeniedException ex)
566                {}
567                %>
568                <tbl:row>
569                  <tbl:cell column="name"><base:icon 
570                      image="deleted.png" 
571                      tooltip="This item has been scheduled for deletion" 
572                      visible="<%=child != null && child.isRemoved()%>"
573                    /><%=Base.getLinkedName(ID, child, child == null, true)%></tbl:cell>
574                  <tbl:cell column="type">
575                    <%
576                    if (subtype != null)
577                    {
578                      %>
579                      <%=Base.getLinkedName(ID, subtype, false, true)%> <span class="itemsubtype">(<%=child.getType() %>)</span>
580                      <%
581                    }
582                    else
583                    {
584                      %>
585                      <%=child != null ? child.getType() : "" %>
586                      <%
587                    }
588                    %>
589                  </tbl:cell>
590                  <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), numDecimals)%></tbl:cell>
591                  <tbl:cell column="description"><%=HTML.encodeTags(child == null ? "" : child.getDescription())%></tbl:cell>
592                </tbl:row>
593                <%
594              }
595              %>           
596              </tbl:rows>
597            </tbl:data>
598          </tbl:table>
599          <%
600        }
601        %>
602      </base:section>
603      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
604        <jsp:param name="ID" value="<%=ID%>" />
605        <jsp:param name="item_type" value="<%=itemType.name()%>" />
606        <jsp:param name="item_id" value="<%=itemId%>" />
607        <jsp:param name="title" value="Other items related to this extract" />
608      </jsp:include>
609      <jsp:include page="../../common/share/list_share.jsp">
610        <jsp:param name="ID" value="<%=ID%>" />
611        <jsp:param name="item_type" value="<%=itemType.name()%>" />
612        <jsp:param name="item_id" value="<%=itemId%>" />
613        <jsp:param name="title" value="Shared to" />
614      </jsp:include>
615      </t:tab>
616     
617      <t:tab id="annotations" title="Annotations &amp; parameters" 
618        tooltip="View annotation values and protocol parameters" clazz="white">
619        <jsp:include page="../../common/annotations/list_annotations.jsp">
620          <jsp:param name="item_type" value="<%=itemType.name()%>" />
621          <jsp:param name="item_id" value="<%=itemId%>" />
622          <jsp:param name="ID" value="<%=ID%>" />
623        </jsp:include>
624      </t:tab>
625     
626      <t:tab id="events" title="Events" />
627
628      <t:tab id="overview" title="Overview" 
629        tooltip="Display a tree overview of related items">
630        <%
631        if ("overview".equals(tab))
632        {
633          %>
634          <jsp:include page="../../common/overview/overview.jsp">
635            <jsp:param name="item_type" value="<%=itemType.name()%>" />
636            <jsp:param name="item_id" value="<%=itemId%>" />
637            <jsp:param name="ID" value="<%=ID%>" />
638          </jsp:include>
639          <%
640        }
641        %>
642      </t:tab>
643      <t:tab id="history" title="Change history" 
644        tooltip="Displays a log of all modifications made to this item"
645        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
646        <%
647        if ("history".equals(tab))
648        {
649          %>
650          <jsp:include page="../../common/history/frameset.jsp">
651            <jsp:param name="source_type" value="<%=itemType.name()%>" />
652            <jsp:param name="source_id" value="<%=itemId%>" />
653            <jsp:param name="ID" value="<%=ID%>" />
654          </jsp:include>
655          <%
656        }
657        %>
658      </t:tab>     
659      </t:tabcontrol>
660
661
662  </base:body>
663  </base:page>
664  <%
665}
666finally
667{
668  if (dc != null) dc.close();
669}
670
671%>
Note: See TracBrowser for help on using the repository browser.