source: trunk/www/views/derivedbioassays/view_bioassay.jsp @ 6143

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

References #1727: Move to HTML5

  • Second part in the View menu (except Formulas)
  • ID clash in datafiles listing
  • Need to encode filter properties in table columns
  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 24.3 KB
Line 
1<%-- $Id $
2  ------------------------------------------------------------------
3  Copyright (C) 2011 Nicklas Nordborg
4
5  This file is part of BASE - BioArray Software Environment.
6  Available at http://base.thep.lu.se/
7
8  BASE is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 3
11  of the License, or (at your option) any later version.
12
13  BASE is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with BASE. If not, see <http://www.gnu.org/licenses/>.
20  ------------------------------------------------------------------
21
22--%>
23<%@ page pageEncoding="UTF-8" session="false"
24  import="net.sf.basedb.core.SessionControl"
25  import="net.sf.basedb.core.DbControl"
26  import="net.sf.basedb.core.DerivedBioAssay"
27  import="net.sf.basedb.core.PhysicalBioAssay"
28  import="net.sf.basedb.core.Item"
29  import="net.sf.basedb.core.ItemContext"
30  import="net.sf.basedb.core.Permission"
31  import="net.sf.basedb.core.Job"
32  import="net.sf.basedb.core.PluginDefinition"
33  import="net.sf.basedb.core.PluginConfiguration"
34  import="net.sf.basedb.core.User"
35  import="net.sf.basedb.core.ItemQuery"
36  import="net.sf.basedb.core.ItemResultList"
37  import="net.sf.basedb.core.Include"
38  import="net.sf.basedb.core.PermissionDeniedException"
39  import="net.sf.basedb.core.PluginDefinition"
40  import="net.sf.basedb.core.ParameterInfo"
41  import="net.sf.basedb.core.RawBioAssay"
42  import="net.sf.basedb.core.RawDataType"
43  import="net.sf.basedb.core.BasicItem"
44  import="net.sf.basedb.core.Nameable"
45  import="net.sf.basedb.core.File"
46  import="net.sf.basedb.core.plugin.GuiContext"
47  import="net.sf.basedb.core.plugin.Plugin"
48  import="net.sf.basedb.core.query.Orders"
49  import="net.sf.basedb.core.query.Hql"
50  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
51  import="net.sf.basedb.clients.web.Base"
52  import="net.sf.basedb.clients.web.PermissionUtil"
53  import="net.sf.basedb.clients.web.util.HTML"
54  import="net.sf.basedb.util.Values"
55  import="net.sf.basedb.util.formatter.Formatter"
56  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
57  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
58  import="net.sf.basedb.clients.web.extensions.JspContext"
59  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
60  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
61  import="net.sf.basedb.clients.web.extensions.plot.OverviewPlotAction"
62  import="net.sf.basedb.clients.web.extensions.plot.PlotGenerator"
63  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
64  import="net.sf.basedb.util.extensions.ActionIterator"
65  import="java.util.Date"
66  import="java.util.Map"
67  import="java.util.Set"
68  import="java.util.List"
69  import="java.util.Iterator"
70%>
71<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
72<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
73<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
74<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
75<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
76<%!
77  private static final Item itemType = Item.DERIVEDBIOASSAY;
78  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
79%>
80<%
81final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
82final String ID = sc.getId();
83final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
84final int itemId = cc.getId();
85final String tab = Values.getString(request.getParameter("tab"), "properties");
86
87final float scale = Base.getScale(sc);
88final String root = request.getContextPath();
89final DbControl dc = sc.newDbControl();
90try
91{
92  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
93
94  String title = null;
95  final DerivedBioAssay bioAssay = DerivedBioAssay.getById(dc, itemId);
96 
97  Job job = null;
98  boolean readJob = true;
99  PluginDefinition plugin = null;
100  boolean readPlugin = true;
101  PluginConfiguration configuration = null;
102  boolean readConfiguration = true;
103
104  try
105  {
106    job = bioAssay.getJob();
107  }
108  catch (PermissionDeniedException ex)
109  {
110    readJob = false;
111    readPlugin = false;
112    readConfiguration = false;
113  }
114  if (job != null)
115  {
116    try
117    {
118      plugin = job.getPluginDefinition();
119    }
120    catch (PermissionDeniedException ex)
121    {
122      readPlugin = false;
123    }
124    try
125    {
126      configuration = job.getPluginConfiguration();
127    }
128    catch (PermissionDeniedException ex)
129    {
130      readConfiguration = false;
131    }
132  }
133 
134  final boolean usePermission = bioAssay.hasPermission(Permission.USE);
135  final boolean writePermission = bioAssay.hasPermission(Permission.WRITE);
136  final boolean deletePermission = bioAssay.hasPermission(Permission.DELETE);
137  final boolean sharePermission = bioAssay.hasPermission(Permission.SET_PERMISSION);
138  final boolean setOwnerPermission = bioAssay.hasPermission(Permission.SET_OWNER);
139  final boolean isRemoved = bioAssay.isRemoved();
140  final boolean isUsed = isRemoved && bioAssay.isUsed();
141  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
142  final boolean isOwner = bioAssay.isOwner();
143  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
144  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
145  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioAssay);
146  ExtensionsInvoker toolbarInvoker = ToolbarUtil.useExtensions(jspContext);
147  %>
148  <base:page title="<%=title%>">
149  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
150    <ext:scripts context="<%=jspContext%>" />
151    <ext:stylesheets context="<%=jspContext%>" />
152    <script>
153    function editItem()
154    {
155      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
156    }
157    function deleteItem()
158    {
159      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
160    }
161    function restoreItem()
162    {
163      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
164    }
165    function shareItem()
166    {
167      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareBioAssay', 600, 400);
168    }
169    function setOwner()
170    {
171      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 300);
172    }
173    function switchTab(tabControlId, tabId)
174    {
175      if (TabControl.isActive(tabControlId, tabId)) return;
176      if ((tabId == 'overview' || tabId == 'history') && tabId != '<%=tab%>')
177      {
178        location.href = 'index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=itemId%>&tab='+tabId;
179      }
180      else
181      {
182        TabControl.setActiveTab(tabControlId, tabId);
183      }
184    }
185    function runItemPlugin(cmd)
186    {
187      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 750, 500);
188    }
189    function newChildBioAssay()
190    {
191      Main.viewOrEditItem('<%=ID%>', 'DERIVEDBIOASSAY', 0, true, '&parent_id=<%=itemId%>');
192    }
193    function newRawBioAssay()
194    {
195      Main.viewOrEditItem('<%=ID%>', 'RAWBIOASSAY', 0, true, '&bioassay_id=<%=itemId%>');
196    }
197    </script>
198  </base:head>
199  <base:body>
200    <p:path><p:pathelement
201      title="Derived bioassays" href="<%="index.jsp?ID="+ID%>" 
202      /><p:pathelement title="<%=HTML.encodeTags(bioAssay.getName())%>" 
203      /></p:path>
204   
205    <t:tabcontrol 
206      id="main" 
207      subclass="content mastertabcontrol" 
208      active="<%=tab%>" switch="switchTab" remember="false">
209      <t:tab id="properties" title="Properties">
210      <div>
211      <table class="fullform">
212      <tr>
213        <th class="itemstatus">
214          <base:icon 
215            image="shared.png" 
216            visible="<%=bioAssay.isShared()%>"
217            tooltip="This item is shared to other users, groups and/or projects"
218          />
219          <base:icon 
220            image="deleted.png"
221            onclick="deleteItemPermanently()"
222            tooltip="This item has been flagged for deletion. Click to delete it now."
223            enabled="<%=deletePermanentlyPermission %>"
224            visible="<%=isRemoved%>" 
225          />
226          <base:icon image="used.png" 
227            onclick="showUsingItems()"
228            tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
229            visible="<%=isRemoved && isUsed%>" />
230        </th>
231        <td style="padding: 0px;">
232          <tbl:toolbar subclass="bottomborder">
233            <tbl:button 
234              disabled="<%=!writePermission%>" 
235              image="edit.png" 
236              onclick="editItem()" 
237              title="Edit&hellip;" 
238              tooltip="<%=writePermission ? "Edit this bioassay" : "You do not have permission to edit this bioassay"%>" 
239            />
240            <tbl:button 
241              disabled="<%=!deletePermission%>" 
242              image="delete.png" 
243              onclick="deleteItem()" 
244              title="Delete"
245              visible="<%=!bioAssay.isRemoved()%>"
246              tooltip="<%=deletePermission ? "Delete this bioassay" : "You do not have permission to delete this bioassay"%>" 
247            />
248            <tbl:button 
249              disabled="<%=!writePermission%>" 
250              image="restore.png" 
251              onclick="restoreItem()" 
252              title="Restore"
253              visible="<%=bioAssay.isRemoved()%>"
254              tooltip="<%=writePermission ? "Restore this bioassay" : "You do not have permission to restore this bioassay"%>" 
255            />
256            <tbl:button 
257              disabled="<%=!sharePermission%>"
258              image="share.png"
259              onclick="shareItem()" 
260              title="Share&hellip;" 
261              tooltip="<%=sharePermission ? "Share this bioassay to other user, groups and projects" : "You do not have permission to share this bioassay"%>"
262            />
263            <tbl:button 
264              disabled="<%=!setOwnerPermission%>"
265              image="take_ownership.png"
266              onclick="setOwner()" 
267              title="Set owner&hellip;"
268              tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
269            />
270            <tbl:button
271              image="add.png"
272              onclick="newChildBioAssay()"
273              title="New child bioassay&hellip;"
274              tooltip="Create a child bioassay from this bioassay"
275              visible="<%=sc.hasPermission(Permission.CREATE, Item.DERIVEDBIOASSAY) && usePermission%>"
276            />
277            <tbl:button
278              image="add.png"
279              onclick="newRawBioAssay()"
280              title="New raw bioassay&hellip;"
281              tooltip="Create a raw bioassay from this bioassay"
282              visible="<%=sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY) && usePermission%>"
283            />
284            <tbl:button 
285              image="import.png" 
286              onclick="runItemPlugin('ImportItem')" 
287              title="Import&hellip;" 
288              tooltip="Import data" 
289              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
290            />
291            <tbl:button 
292              image="export.png" 
293              onclick="runItemPlugin('ExportItem')" 
294              title="Export&hellip;" 
295              tooltip="Export data" 
296              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
297            />
298            <tbl:button 
299              image="runplugin.png" 
300              onclick="runItemPlugin('RunPlugin')"
301              title="Run plugin&hellip;" 
302              tooltip="Run a plugin" 
303              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
304            />
305            <tbl:button 
306              image="runplugin.png" 
307              onclick="runItemPlugin('RunAnalysisPlugin')"
308              title="Run analysis&hellip;" 
309              tooltip="Run an analysis plugin with data from this bioassay"
310              visible="<%=pluginCount.containsKey(Plugin.MainType.ANALYZE)%>"
311            />
312            <ext:render extensions="<%=toolbarInvoker%>" context="<%=jspContext%>" 
313              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
314            <tbl:button
315              image="help.png"
316              onclick="<%="Main.openHelp('" + ID +"', 'derivedbioassay.view.properties')"%>"
317              title="Help&hellip;"
318              tooltip="Get help about this page"
319            />
320          </tbl:toolbar>
321        </td>
322      </tr>
323    </table>
324    <table style="width: 100%; height: 16em;" class="bottomborder">
325    <tr>
326      <td style="width: 50%; height: 100%;">
327        <table class="fullform" >
328        <tr>
329          <th>Name</th>
330          <td><%=HTML.encodeTags(bioAssay.getName())%></td>
331        </tr>
332        <tr>
333          <th>Type</th>
334          <td><base:propertyvalue item="<%=bioAssay%>" property="itemSubtype" /></td>
335        </tr>
336        <tr>
337          <th>Extract</th>
338          <td><base:propertyvalue item="<%=bioAssay%>" property="extract" /></td>
339        </tr>
340        <tr>
341          <th>Protocol</th>
342          <td><base:propertyvalue item="<%=bioAssay%>" property="protocol" /></td>
343        </tr>
344        <tr>
345          <th>Hardware</th>
346          <td><base:propertyvalue item="<%=bioAssay%>" property="hardware" /></td>
347        </tr>
348        <tr>
349          <th>Software</th>
350          <td><base:propertyvalue item="<%=bioAssay%>" property="software" /></td>
351        </tr>
352        <tr>
353          <th>Owner</th>
354          <td><base:propertyvalue item="<%=bioAssay%>" property="owner" /></td>
355        </tr>
356        <tr>
357          <th>Permissions</th>
358          <td><%=PermissionUtil.getFullPermissionNames(bioAssay)%></td>
359        </tr>
360        <tr class="dynamic">
361          <th>Description</th>
362          <td><%=HTML.niceFormat(bioAssay.getDescription())%></td>
363        </tr>
364        </table>
365      </td>
366      <td style="width: 50%; height: 100%;" class="leftborder">
367        <table class="fullform">
368        <tbody class="sectionheader">
369          <tr>
370            <th colspan="2">Job &amp; plug-in parameters</th>
371          </tr>
372        </tbody>
373        <tr>
374          <th>Job</th>
375          <td><%=Base.getLinkedName(ID, job, !readJob, false)%></td>
376        </tr>
377        <tr>
378          <th>Plugin</th>
379          <td><%=Base.getLinkedName(ID, plugin, 
380              !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
381        </tr>
382        <tr>
383          <th>Plugin configuration</th>
384          <td><%=Base.getLinkedName(ID, configuration, !readConfiguration, 
385            configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
386        </tr>
387        <%
388        if (job != null)
389        {
390          %>
391          <tr>
392            <th>Started</th>
393            <td>
394              <%=job == null ? "" : dateTimeFormatter.format(job.getStarted())%>
395            </td>
396          </tr>
397          <tr>
398            <th>Ended</th>
399            <td>
400              <%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%>
401            </td>
402          </tr>
403          <tr>
404            <th>Server</th>
405            <td>
406              <%=HTML.encodeTags(job.getServer())%>
407            </td>
408          </tr>
409          <%
410          for (String name : job.getParameterNames())
411          {
412            StringBuilder sb = new StringBuilder();
413            String displayValue = "";
414            String description = "";
415            try
416            {
417              ParameterInfo pi = job.getParameterInfo(name);
418              if (pi.getLabel() != null) name = HTML.encodeTags(pi.getLabel());
419              description = HTML.encodeTags(pi.getDescription());
420              List<?> values = pi.getValues();
421              int i = 0;
422              for (Object value : values)
423              {
424                if (value != null)
425                {
426                  if (i > 0) sb.append(", ");
427                  i++;
428                  if (value instanceof BasicItem)
429                  {
430                    BasicItem item = (BasicItem)value;
431                    String itemName = "";
432                    if (item instanceof File)
433                    {
434                      itemName = ((File)item).getPath().toString();
435                    }
436                    else if (item instanceof Nameable)
437                    {
438                      itemName = ((Nameable)item).getName();
439                    }
440                    else
441                    {
442                      itemName = item.toString();
443                    }
444                    sb.append(Base.getLink(ID, HTML.encodeTags(itemName), 
445                      item.getType(), item.getId(), item.hasPermission(Permission.WRITE)));
446                  }
447                  else if (value instanceof Date)
448                  {
449                    sb.append(dateFormatter.format((Date)value));
450                  }
451                  else
452                  {
453                    sb.append(HTML.encodeTags(value.toString()));
454                  }
455                }
456              }
457              displayValue = sb.toString();
458            }
459            catch (Throwable ex)
460            {
461              displayValue = "<i>ERROR: "+ex.getMessage()+"</i>";
462            }
463            %>
464            <tr>
465              <th><span title="<%=description%>"><%=name%></span></th>
466              <td>
467                <%=displayValue%>
468              </td>
469            </tr>
470            <%
471          }
472        }
473        %>
474        <tr class="dynamic">
475          <th></th>
476          <td></td>
477        </tr>
478        </table>
479
480      </td>
481      </tr>
482      </table>
483      </div>
484      <%
485      ItemQuery<PhysicalBioAssay> physicalQuery = bioAssay.getPhysicalBioAssays();
486      physicalQuery.include(Include.ALL);
487      physicalQuery.order(Orders.asc(Hql.property("name")));
488      ItemResultList<PhysicalBioAssay> physicalBioAssays = physicalQuery.list(dc);
489      %>
490      <base:section 
491        id="physicalBioAssays"
492        title="<%="Physical bioassays (" + physicalBioAssays.size() + ")"%>"
493        context="<%=cc%>"
494        >
495        <%
496        if (physicalBioAssays.size() == 0)
497        {
498          %>
499          <div class="messagecontainer note">
500          This bioassay doesn't have any parent physical bioassays
501          (or you don't have permission to view them).
502          </div>
503          <%
504        }
505        else
506        {
507          %>
508          <tbl:table
509            id="tbl.physicalBioAssays"
510            columns="all"
511            >
512            <tbl:columndef 
513              id="name"
514              title="Name"
515            />
516            <tbl:columndef 
517              id="itemSubtype"
518              title="Type"
519            />
520            <tbl:columndef 
521              id="description"
522              title="Description"
523            />
524            <tbl:data>
525              <tbl:headers>
526                <tbl:headerrow>
527                  <tbl:columnheaders />
528                </tbl:headerrow>
529              </tbl:headers>           
530              <tbl:rows>
531              <%
532              for (PhysicalBioAssay item : physicalBioAssays)
533              {
534                %>
535                <tbl:row>
536                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
537                  <tbl:cell column="itemSubtype"><base:propertyvalue item="<%=item%>" property="itemSubtype" /></tbl:cell>
538                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
539                </tbl:row>
540                <%
541              }
542              %>
543              </tbl:rows>
544            </tbl:data>
545          </tbl:table>
546          <%
547        }
548        %>
549      </base:section>
550      <%
551      if (!bioAssay.isRoot())
552      {
553        ItemQuery<DerivedBioAssay> parentQuery = bioAssay.getParents();
554        parentQuery.include(Include.ALL);
555        parentQuery.order(Orders.asc(Hql.property("name")));
556        ItemResultList<DerivedBioAssay> parents = parentQuery.list(dc);
557        %>
558        <base:section 
559          id="parents"
560          title="<%="Parent bioassays (" + parents.size() + ")"%>"
561          context="<%=cc%>"
562          >
563          <%
564          if (parents.size() == 0)
565          {
566            %>
567            <div class="messagecontainer note">
568            This bioassay doesn't have any parent bioassays
569            (or you don't have permission to view them).
570            </div>
571            <%
572          }
573          else
574          {
575            %>
576            <tbl:table
577              id="tbl.parents"
578              columns="all"
579              >
580              <tbl:columndef 
581                id="name"
582                title="Name"
583              />
584              <tbl:columndef 
585                id="itemSubtype"
586                title="Type"
587              />
588              <tbl:columndef 
589                id="description"
590                title="Description"
591              />
592              <tbl:data>
593                <tbl:headers>
594                  <tbl:headerrow>
595                    <tbl:columnheaders />
596                  </tbl:headerrow>
597                </tbl:headers>           
598                <tbl:rows>
599                <%
600                for (DerivedBioAssay item : parents)
601                {
602                  %>
603                  <tbl:row>
604                    <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
605                    <tbl:cell column="itemSubtype"><base:propertyvalue item="<%=item%>" property="itemSubtype" /></tbl:cell>
606                    <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
607                  </tbl:row>
608                  <%
609                }
610                %>
611                </tbl:rows>
612              </tbl:data>
613            </tbl:table>
614            <%
615          }
616          %>
617        </base:section>
618        <%
619      }
620      ItemQuery<DerivedBioAssay> childQuery = bioAssay.getChildren();
621      childQuery.include(Include.ALL);
622      childQuery.order(Orders.asc(Hql.property("name")));
623      ItemResultList<DerivedBioAssay> children = childQuery.list(dc);
624      %>
625      <base:section 
626        id="children"
627        title="<%="Child bioassays (" + children.size() + ")"%>"
628        context="<%=cc%>"
629        >
630        <%
631        if (children.size() == 0)
632        {
633          %>
634          <div class="messagecontainer note">
635          This bioassay doesn't have any child bioassays
636          (or you don't have permission to view them).
637          </div>
638          <%
639        }
640        else
641        {
642          %>
643          <tbl:table
644            id="tbl.children"
645            columns="all"
646            >
647            <tbl:columndef 
648              id="name"
649              title="Name"
650            />
651            <tbl:columndef 
652              id="itemSubtype"
653              title="Type"
654            />
655            <tbl:columndef 
656              id="description"
657              title="Description"
658            />
659            <tbl:data>
660              <tbl:headers>
661                <tbl:headerrow>
662                  <tbl:columnheaders />
663                </tbl:headerrow>
664              </tbl:headers>           
665              <tbl:rows>
666              <%
667              for (DerivedBioAssay item : children)
668              {
669                %>
670                <tbl:row>
671                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
672                  <tbl:cell column="itemSubtype"><base:propertyvalue item="<%=item%>" property="itemSubtype" /></tbl:cell>
673                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
674                </tbl:row>
675                <%
676              }
677              %>
678              </tbl:rows>
679            </tbl:data>
680          </tbl:table>
681          <%
682        }
683        %>
684      </base:section>
685      <%
686      ItemQuery<RawBioAssay> rawQuery = bioAssay.getRawBioAssays();
687      rawQuery.include(Include.ALL);
688      rawQuery.order(Orders.asc(Hql.property("name")));
689      ItemResultList<RawBioAssay> rawBioAssays = rawQuery.list(dc);
690      %>
691      <base:section 
692        id="rawBioAssays"
693        title="<%="Raw bioassays (" + rawBioAssays.size() + ")"%>"
694        context="<%=cc%>"
695        >
696        <%
697        if (rawBioAssays.size() == 0)
698        {
699          %>
700          <div class="messagecontainer note">
701          This bioassay doesn't have any child raw bioassays
702          (or you don't have permission to view them).
703          </div>
704          <%
705        }
706        else
707        {
708          %>
709          <tbl:table
710            id="tbl.rawBioAssays"
711            columns="all"
712            >
713            <tbl:columndef 
714              id="name"
715              title="Name"
716            />
717            <tbl:columndef 
718              id="platform"
719              title="Platform"
720            />
721            <tbl:columndef 
722              id="description"
723              title="Description"
724            />
725            <tbl:data>
726              <tbl:headers>
727                <tbl:headerrow>
728                  <tbl:columnheaders />
729                </tbl:headerrow>
730              </tbl:headers>
731              <tbl:rows>
732              <%
733              for (RawBioAssay item : rawBioAssays)
734              {
735                %>
736                <tbl:row>
737                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
738                  <tbl:cell column="platform"><base:propertyvalue item="<%=item%>" property="platform" /></tbl:cell>
739                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
740                </tbl:row>
741                <%
742              }
743              %>
744              </tbl:rows>
745            </tbl:data>
746          </tbl:table>
747          <%
748        }
749        %>
750      </base:section>
751      <jsp:include page="../../common/datafiles/list_files.jsp">
752        <jsp:param name="item_type" value="<%=itemType.name()%>" />
753        <jsp:param name="item_id" value="<%=itemId%>" />
754        <jsp:param name="ID" value="<%=ID%>" />
755      </jsp:include>
756      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
757        <jsp:param name="ID" value="<%=ID%>" />
758        <jsp:param name="item_type" value="<%=itemType.name()%>" />
759        <jsp:param name="item_id" value="<%=itemId%>" />
760        <jsp:param name="title" value="Other items related to this bioassay" />
761      </jsp:include>
762      <jsp:include page="../../common/share/list_share.jsp">
763        <jsp:param name="ID" value="<%=ID%>" />
764        <jsp:param name="item_type" value="<%=itemType.name()%>" />
765        <jsp:param name="item_id" value="<%=itemId%>" />
766        <jsp:param name="title" value="Shared to" />
767      </jsp:include>
768      </t:tab>
769     
770      <t:tab id="annotations" title="Annotations &amp; parameters" 
771        tooltip="View annotation values and protocol parameters" clazz="white">
772        <jsp:include page="../../common/annotations/list_annotations.jsp">
773          <jsp:param name="item_type" value="<%=itemType.name()%>" />
774          <jsp:param name="item_id" value="<%=itemId%>" />
775          <jsp:param name="ID" value="<%=ID%>" />
776        </jsp:include>
777      </t:tab>
778     
779      <t:tab id="overview" title="Overview" 
780        tooltip="Display a tree overview of related items">
781        <%
782        if ("overview".equals(tab))
783        {
784          %>
785          <jsp:include page="../../common/overview/overview.jsp">
786            <jsp:param name="item_type" value="<%=itemType.name()%>" />
787            <jsp:param name="item_id" value="<%=itemId%>" />
788            <jsp:param name="ID" value="<%=ID%>" />
789          </jsp:include>
790          <%
791        }
792        %>
793      </t:tab>
794      <t:tab id="history" title="Change history" 
795        tooltip="Displays a log of all modifications made to this item"
796        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
797        <%
798        if ("history".equals(tab))
799        {
800          %>
801          <jsp:include page="../../common/history/frameset.jsp">
802            <jsp:param name="source_type" value="<%=itemType.name()%>" />
803            <jsp:param name="source_id" value="<%=itemId%>" />
804            <jsp:param name="ID" value="<%=ID%>" />
805          </jsp:include>
806          <%
807        }
808        %>
809      </t:tab>
810      </t:tabcontrol>
811
812  </base:body>
813  </base:page>
814  <%
815}
816finally
817{
818  if (dc != null) dc.close();
819}
820
821%>
Note: See TracBrowser for help on using the repository browser.