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

Last change on this file since 7786 was 7786, checked in by Nicklas Nordborg, 2 years ago

Merged patch release 3.15.3 to the trunk.

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