source: trunk/www/views/experiments/view_experiment.jsp @ 6605

Last change on this file since 6605 was 6605, checked in by Nicklas Nordborg, 8 years ago

References #1890: Improve skinnability of BASE

Updated regular view pages and edit dialogs.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 23.4 KB
Line 
1<%-- $Id: view_experiment.jsp 6605 2014-11-18 12:48:42Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson, Gregory Vincic
4  Copyright (C) 2007 Nicklas Nordborg, 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 import="org.json.simple.JSONObject"%>
27<%@page import="org.json.simple.JSONArray"%>
28<%@ page pageEncoding="UTF-8" session="false"
29  import="net.sf.basedb.core.SessionControl"
30  import="net.sf.basedb.core.DbControl"
31  import="net.sf.basedb.core.Item"
32  import="net.sf.basedb.core.ItemContext"
33  import="net.sf.basedb.core.Permission"
34  import="net.sf.basedb.core.Experiment"
35  import="net.sf.basedb.core.VirtualDb"
36  import="net.sf.basedb.core.RawBioAssay"
37  import="net.sf.basedb.core.AnnotationType"
38  import="net.sf.basedb.core.AnnotationSet"
39  import="net.sf.basedb.core.Annotation"
40  import="net.sf.basedb.core.Annotatable"
41  import="net.sf.basedb.core.Unit"
42  import="net.sf.basedb.core.Type"
43  import="net.sf.basedb.core.User"
44  import="net.sf.basedb.core.Group"
45  import="net.sf.basedb.core.VirtualTable"
46  import="net.sf.basedb.core.ItemQuery"
47  import="net.sf.basedb.core.ItemResultList"
48  import="net.sf.basedb.core.ItemResultIterator"
49  import="net.sf.basedb.core.Include"
50  import="net.sf.basedb.core.MultiPermissions"
51  import="net.sf.basedb.core.PermissionDeniedException"
52  import="net.sf.basedb.core.PluginDefinition"
53  import="net.sf.basedb.core.plugin.GuiContext"
54  import="net.sf.basedb.core.plugin.Plugin"
55  import="net.sf.basedb.core.Project"
56  import="net.sf.basedb.core.query.Orders"
57  import="net.sf.basedb.core.query.Hql"
58  import="net.sf.basedb.clients.web.Base"
59  import="net.sf.basedb.clients.web.PermissionUtil"
60  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
61  import="net.sf.basedb.clients.web.util.HTML"
62  import="net.sf.basedb.util.Values"
63  import="net.sf.basedb.core.snapshot.SnapshotManager"
64  import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
65  import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
66  import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
67  import="net.sf.basedb.util.formatter.Formatter"
68  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
69  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
70  import="net.sf.basedb.clients.web.extensions.JspContext"
71  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
72  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
73  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
74  import="java.util.Collections"
75  import="java.util.Date"
76  import="java.util.Map"
77  import="java.util.HashMap"
78  import="java.util.Set"
79  import="java.util.HashSet"
80  import="java.util.List"
81  import="java.util.LinkedList"
82  import="java.util.Date"
83%>
84<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
85<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
86<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
87<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
88<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
89<%!
90  private static final Item itemType = Item.EXPERIMENT;
91  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
92%>
93<%
94final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
95final String ID = sc.getId();
96final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
97final int itemId = cc.getId();
98final String tab = Values.getString(request.getParameter("tab"), "properties");
99final float scale = Base.getScale(sc);
100final String root = request.getContextPath();
101final DbControl dc = sc.newDbControl();
102try
103{
104  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
105  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
106
107  String title = null;
108  Experiment experiment = Experiment.getById(dc, itemId);
109  VirtualDb virtualDb = experiment.getVirtualDb();
110 
111  final boolean writePermission = experiment.hasPermission(Permission.WRITE);
112  final boolean deletePermission = experiment.hasPermission(Permission.DELETE);
113  final boolean sharePermission = experiment.hasPermission(Permission.SET_PERMISSION);
114  final boolean setOwnerPermission = experiment.hasPermission(Permission.SET_OWNER);
115  final boolean isOwner = experiment.isOwner();
116  final boolean isRemoved = experiment.isRemoved();
117  final boolean isUsed = isRemoved && experiment.isUsed();
118  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
119 
120  Map<AnnotationType, Set<Object>> usedFactorValues = 
121    new HashMap<AnnotationType, Set<Object>>();
122  Map<AnnotationType, Integer> factorValuesCount = new HashMap<AnnotationType, Integer>();
123  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, experiment);
124  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
125  %>
126  <base:page title="<%=title%>" id="view-page">
127  <base:head scripts="table.js,tabcontrol-2.js,~experiments.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
128    <ext:scripts context="<%=jspContext%>" />
129    <ext:stylesheets context="<%=jspContext%>" />
130  </base:head>
131  <base:body>
132    <p:path><p:pathelement 
133      title="Experiments" href="<%="index.jsp?ID="+ID%>" 
134      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" 
135      /></p:path>
136    <div id="page-data" data-item-id="<%=itemId%>"></div>
137   
138    <t:tabcontrol 
139      id="main" 
140      subclass="content mastertabcontrol" 
141      active="<%=tab%>" remember="false">
142    <t:tab id="properties" title="Properties">
143      <div>
144      <table class="fullform">
145      <tr>
146        <th class="itemstatus">
147          <base:icon 
148            image="shared.png" 
149            visible="<%=experiment.isShared()%>"
150            tooltip="This item is shared to other users, groups and/or projects"
151          />
152          <base:icon 
153            id="btnDeletePermanently"
154            image="deleted.png"
155            tooltip="This item has been flagged for deletion. Click to delete it now."
156            enabled="<%=deletePermanentlyPermission %>"
157            visible="<%=isRemoved%>" 
158          />
159          <base:icon
160            id="btnUsingItems"
161            image="used.png" 
162            tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
163            visible="<%=isRemoved && isUsed%>" />
164        </th>
165        <td style="padding: 0px;">
166          <tbl:toolbar subclass="bottomborder bg-filled-50">
167            <tbl:button 
168              id="btnEdit"
169              disabled="<%=!writePermission%>" 
170              image="edit.png" 
171              title="Edit&hellip;" 
172              tooltip="<%=writePermission ? "Edit this experiment" : "You do not have permission to edit this experiment"%>" 
173            />
174            <tbl:button 
175              id="btnDelete"
176              disabled="<%=!deletePermission%>" 
177              image="delete.png" 
178              title="Delete"
179              visible="<%=!experiment.isRemoved()%>"
180              tooltip="<%=deletePermission ? "Delete this experiment" : "You do not have permission to delete this experiment"%>" 
181            />
182            <tbl:button 
183              id="btnRestore"
184              disabled="<%=!writePermission%>" 
185              image="restore.png" 
186              title="Restore"
187              visible="<%=experiment.isRemoved()%>"
188              tooltip="<%=writePermission ? "Restore this experiment" : "You do not have permission to restore this experiment"%>" 
189            />
190            <tbl:button 
191              id="btnShare"
192              disabled="<%=!sharePermission%>"
193              image="share.png"
194              title="Share&hellip;" 
195              tooltip="<%=sharePermission ? "Share this experiment to other user, groups and projects" : "You do not have permission to share this experiment"%>"
196            />
197            <tbl:button 
198              id="btnSetOwner"
199              disabled="<%=!setOwnerPermission%>"
200              image="take_ownership.png"
201              title="Set owner&hellip;"
202              tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
203            />
204            <tbl:button
205              id="btnCloneReporters"
206              visible="<%=writePermission && (virtualDb.hasTable(VirtualTable.POSITION) || experiment.getRawDataType().isStoredInDb()) %>"
207              image="copy.png"
208              title="Clone reporters&hellip;"
209              tooltip="Clone reporter annotations for all reporters that are used in this experiment"
210            />
211            <tbl:button
212              id="btnRemoveClonedReporters"
213              visible="<%=writePermission && virtualDb.hasClonedReporters() %>"
214              image="delete_permanently.png"
215              title="Remove cloned reporters&hellip;"
216              tooltip="Remove all cloned reporter annotations"
217            />
218            <tbl:button 
219              id="btnImport"
220              image="import.png" 
221              data-plugin-type="IMPORT" 
222              title="Import&hellip;" 
223              tooltip="Import data" 
224              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
225            />
226            <tbl:button 
227              id="btnExport"
228              image="export.png"
229              data-plugin-type="EXPORT" 
230              title="Export&hellip;" 
231              tooltip="Export data" 
232              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
233            />
234            <tbl:button 
235              id="btnRunPlugin"
236              image="runplugin.png" 
237              data-plugin-type="OTHER" 
238              title="Run plugin&hellip;" 
239              tooltip="Run a plugin" 
240              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
241            />
242            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
243              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
244            <tbl:button
245              image="help.png"
246              subclass="auto-init"
247              data-auto-init="help"
248              data-help-id="experiment.view.properties"
249              title="Help&hellip;"
250              tooltip="Get help about this page"
251            />
252          </tbl:toolbar>
253        </td>
254      </tr>
255    </table>
256    <table style="width: 100%; height: 16em;" class="bottomborder">
257    <tr>
258      <td style="width: 50%; height: 100%;">
259        <table class="fullform" >
260        <tr>
261          <th>Name</th>
262          <td><%=HTML.encodeTags(experiment.getName())%></td>
263        </tr>
264        <tr>
265          <th>Registered</th>
266          <td><%=dateFormatter.format(experiment.getEntryDate())%></td>
267        </tr>
268        <tr>
269          <th>Raw data type</th>
270          <td><base:catch><%=HTML.encodeTags(experiment.getRawDataType().getName())%></base:catch></td>
271        </tr>
272        <tr>
273          <th>Directory</th>
274          <td><base:propertyvalue item="<%=experiment%>" property="directory" /></td>
275        </tr>
276        <tr>
277          <th>Reporter clone template</th>
278          <td><base:propertyvalue item="<%=experiment%>" property="virtualDb.reporterCloneTemplate" nulltext="<i>- no cloned reporters -</i>" /></td>
279        </tr>
280        <tr>
281          <th>Bytes</th>
282          <td><%=Values.formatBytes(experiment.getBytes())%></td>
283        </tr>
284        <tr>
285          <th>Owner</th>
286          <td><base:propertyvalue item="<%=experiment%>" property="owner" /></td>
287        </tr>
288        <tr>
289          <th>Permissions</th>
290          <td><%=PermissionUtil.getFullPermissionNames(experiment)%></td>
291        </tr>
292        <tr class="dynamic">
293          <th>Description</th>
294          <td><%=HTML.niceFormat(experiment.getDescription())%></td>
295        </tr>
296        </table>
297      </td>
298      <td style="width: 50%; height: 100%;" class="leftborder">
299        <table class="fullform">
300        <tr>
301          <th>PubMed ID</th>
302          <td>
303            <%=HTML.encodeTags(experiment.getPubMedId())%>
304            <%
305            int pubMedId = Values.getInt(experiment.getPubMedId(), -1);
306            if (pubMedId != -1)
307            {
308              %>
309              <b>Link to:</b>
310              <a href="http://www.ebi.ac.uk/citexplore/citationDetails.do?externalId=<%=pubMedId%>&dataSource=MED"
311                target="_blank" title="External link to EBI Citation database"
312                >EBI Citation database</a>,
313              <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=PureSearch&db=pubmed&details_term=<%=pubMedId%>"
314                target="_blank" title="External link to NCBI Entrez PubMed">NCBI Entrez PubMed</a>
315              <%
316            }
317            %>
318          </td>
319        </tr>
320        <tr>
321          <th>Title</th>
322          <td><%=HTML.niceFormat(experiment.getTitle())%></td>
323        </tr>
324        <tr>
325          <th>Publication date</th>
326          <td><%=dateFormatter.format(experiment.getPublicationDate())%></td>
327        </tr>
328        <tr>
329          <th>Abstract</th>
330          <td><%=HTML.niceFormat(experiment.getAbstract())%></td>
331        </tr>
332        <tr>
333          <th>Experiment design</th>
334          <td><%=HTML.niceFormat(experiment.getExperimentDesign())%></td>
335        </tr>
336        <tr>
337          <th>Experiment type</th>
338          <td><%=HTML.niceFormat(experiment.getExperimentType())%></td>
339        </tr>
340        <tr>
341          <th>Affiliations</th>
342          <td><%=HTML.niceFormat(experiment.getAffiliations())%></td>
343        </tr>
344        <tr>
345          <th>Authors</th>
346          <td><%=HTML.niceFormat(experiment.getAuthors())%></td>
347        </tr>
348        <tr class="dynamic">
349          <th>Publication</th>
350          <td><%=HTML.niceFormat(experiment.getPublication())%></td>
351        </tr>
352        </table>
353      </td>
354    </tr>
355    </table>
356    </div>
357     
358      <%
359      ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
360      efQuery.include(Include.ALL);
361      efQuery.order(Orders.asc(Hql.property("name")));
362      ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
363      %>
364      <base:section 
365        id="experimentalFactors" 
366        title="<%="Experimental factors (" + experimentalFactors.size() +")"%>"
367        context="<%=cc%>"
368        >
369        <%
370        if (experimentalFactors.size() == 0)
371        {
372          %>
373          <div class="messagecontainer note">
374          No experimental factors has been added to this experiment
375          (or, you don't have permission to view them).
376          </div>
377          <%
378        }
379        else
380        {
381          %>
382          <div style="width: 100%; max-width: 1000px;">
383          <tbl:table
384            id="tbl.experimentalFactors"
385            columns="all"
386            action="index.jsp"
387            >
388            <tbl:hidden name="item_id" value="<%=Integer.toString(itemId)%>" />
389            <tbl:columndef 
390              id="name"
391              title="Name"
392            />
393            <tbl:columndef
394              id="type"
395              title="Value type"
396            />
397            <tbl:columndef
398              id="values"
399              title="Used values"
400            />
401            <tbl:columndef 
402              id="description"
403              title="Description"
404            />
405            <tbl:columndef 
406              id="status"
407              title="Status"
408            />
409            <tbl:data>
410              <tbl:headers>
411                <tbl:headerrow>
412                  <tbl:columnheaders />
413                </tbl:headerrow>
414              </tbl:headers>
415              <tbl:rows>
416              <%
417              for (AnnotationType item : experimentalFactors)
418              {
419                Type valueType = item.getValueType();
420                usedFactorValues.put(item, new HashSet<Object>());
421                factorValuesCount.put(item, 0);
422                Formatter formatter = FormatterFactory.getTypeFormatter(sc, valueType);
423                %>
424                <tbl:row>
425                  <tbl:cell column="name"><base:icon 
426                      image="deleted.png" 
427                      tooltip="This item has been scheduled for deletion" 
428                      visible="<%=item.isRemoved()%>"
429                    /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
430                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
431                  <tbl:cell column="type">
432                    <%=valueType%>
433                    <%=item.isEnumeration() ? "(enumeration)" : ""%>
434                  </tbl:cell>
435                  <tbl:cell column="values">
436                    <%
437                    if (!item.isEnumeration() && (valueType == Type.TEXT || valueType == Type.STRING))
438                    {
439                      %>
440                      N/A
441                      <%
442                    }
443                    else
444                    {
445                      %>
446                      <div id="usedvalues.<%=item.getId()%>">Loading...</div>
447                      <%
448                    }
449                    %>
450                  </tbl:cell>
451                  <tbl:cell column="status" id="<%="status." + item.getId()%>">
452                  </tbl:cell>
453                </tbl:row>
454                <%
455              }
456              %>
457              </tbl:rows>
458            </tbl:data>
459          </tbl:table>
460          <div id="warning.missing" style="display: none; text-align: right;">
461            <base:icon image="warning.png" /> = Some raw bioassays are missing this factor value
462          </div>
463        </div>
464        <%
465        }
466        %>
467      </base:section>
468      <%
469      ItemQuery<RawBioAssay> rbaQuery = experiment.getRawBioAssays();
470      rbaQuery.include(Include.ALL);
471      rbaQuery.order(Orders.asc(Hql.property("name")));
472      ItemResultList<RawBioAssay> rawBioAssays = rbaQuery.list(dc);
473      %>
474      <base:section 
475        id="rawbioassays" 
476        title="<%="Raw bioassays (" + rawBioAssays.size() +")"%>"
477        context="<%=cc%>">
478        <%
479        if (rawBioAssays.size() == 0)
480        {
481          %>
482          <div class="messagecontainer note">
483          No raw bioassays has been added to this experiment
484          (or, you don't have permission to view them).
485          </div>
486          <%
487        }
488        else
489        {
490          %>
491          <tbl:table
492            id="tbl.rawbioassays"
493            columns="all"
494            >
495          <tbl:columndef 
496            id="name"
497            title="Name"
498          />
499          <tbl:columndef 
500            id="description"
501            title="Description"
502          />
503          <%
504          for (AnnotationType at : experimentalFactors)
505          {
506            Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
507            %>
508            <tbl:columndef
509              id="<%="at"+at.getId()%>"
510              title="<%=HTML.encodeTags(at.getName())%>"
511              formatter="<%=formatter%>"
512            />
513            <%
514          }
515          %>
516          <tbl:data>
517            <tbl:headers>
518              <tbl:headerrow>
519                <tbl:columnheaders />
520              </tbl:headerrow>
521            </tbl:headers>
522            <tbl:rows>
523            <%
524            SnapshotManager manager = new SnapshotManager();
525            AnnotationTypeFilter annotationTypeFilter = new AnnotationTypeFilter();
526            for (RawBioAssay item : rawBioAssays)
527            {
528              AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
529              AnnotationSetSnapshot snapshot = as == null ? null : manager.getSnapshot(dc, as.getId());
530              %>
531              <tbl:row>
532                <tbl:cell column="name"><base:icon 
533                    image="deleted.png" 
534                    tooltip="This item has been scheduled for deletion" 
535                    visible="<%=item.isRemoved()%>"
536                  /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
537                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
538                <%
539                for (AnnotationType at : experimentalFactors)
540                {
541                  Unit unit = at.getDefaultUnit();
542                  String unitSymbol = unit == null ? "" : "&nbsp;" + unit.getDisplaySymbol();
543                 
544                  String value = "<i>- none -</i>";
545                  annotationTypeFilter.setAnnotationType(at);
546                  List<AnnotationSnapshot> all = snapshot == null ? 
547                      null : manager.findAnnotations(dc, snapshot, annotationTypeFilter, true);
548                  Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
549                  if (all != null && all.size() > 0)
550                  {
551                    for (AnnotationSnapshot a : all)
552                    {
553                      List values = a.getValues();
554                      usedFactorValues.get(at).addAll(values);
555                      factorValuesCount.put(at, factorValuesCount.get(at)+1);
556                      Annotatable aItem = null;
557                      try
558                      {
559                        aItem = a.getItem(dc);
560                      }
561                      catch (Throwable t)
562                      {}
563                      List toAdd = factorValues.get(aItem);
564                      if (toAdd == null)
565                      {
566                        toAdd = new LinkedList();
567                        factorValues.put(aItem, toAdd);
568                      }
569                      toAdd.addAll(values);
570                    }
571                  }
572                  %>
573                  <tbl:cell column="<%="at"+at.getId()%>">
574                    <%
575                    for (Map.Entry<Annotatable, List> entry : factorValues.entrySet())
576                    {
577                      Annotatable aItem = entry.getKey();
578                      List values = entry.getValue();
579                      %>
580                      <tbl:cellvalue list="<%=values%>" suffix="<%=unitSymbol%>"/>
581                      <%
582                      if (aItem != null && aItem.hasPermission(Permission.WRITE))
583                      {
584                        %>: <base:icon 
585                            subclass="link auto-init"
586                            data-auto-init="edit-experimental-factor"
587                            data-item-type="<%=aItem.getType().name()%>"
588                            data-item-id="<%=aItem.getId() %>"
589                            data-annotation-type="<%=at.getId() %>"
590                            image="edit.png" 
591                            tooltip="Modify the values of this experimental factor"
592                          />
593                        <%
594                      }
595                    }
596                    %>
597                  </tbl:cell>
598                  <%
599                }
600                %>
601              </tbl:row>
602              <%
603            }
604            %>
605            </tbl:rows>
606          </tbl:data>
607        </tbl:table>
608        <%
609      }
610      %>
611      </base:section>
612      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
613        <jsp:param name="ID" value="<%=ID%>" />
614        <jsp:param name="item_type" value="<%=itemType.name()%>" />
615        <jsp:param name="item_id" value="<%=itemId%>" />
616        <jsp:param name="title" value="Other items related to this experiment" />
617      </jsp:include>
618      <jsp:include page="../../common/share/list_share.jsp">
619        <jsp:param name="ID" value="<%=ID%>" />
620        <jsp:param name="item_type" value="<%=itemType.name()%>" />
621        <jsp:param name="item_id" value="<%=itemId%>" />
622        <jsp:param name="title" value="Shared to" />
623      </jsp:include>
624   
625        <%
626        JSONArray jsonFactorValues = new JSONArray();
627        for (Map.Entry<AnnotationType, Set<Object>> entry : usedFactorValues.entrySet())
628        {
629          AnnotationType at = entry.getKey();
630         
631          JSONObject jsonAt = new JSONObject();
632          jsonAt.put("id", at.getId());
633          jsonAt.put("numRawBioAssaysWithFactor", factorValuesCount.get(at));
634
635          Type valueType = at.getValueType();
636          if (at.isEnumeration() || (valueType != Type.TEXT && valueType != Type.STRING))
637          {
638            Set<Object> values = entry.getValue();
639            Formatter formatter = FormatterFactory.getTypeFormatter(sc, valueType);
640            Unit unit = at.getDefaultUnit();
641            if (unit != null) formatter = unit.getFormatter(formatter);
642            String formattedValues = HTML.encodeTags(Values.getString(values, ", ", true, formatter));
643            jsonAt.put("usedValues", formattedValues);
644          }
645         
646          jsonFactorValues.add(jsonAt);
647        }
648        %>
649        <div id="factor-values" class="datacontainer"
650          data-num-raw-bioassays="<%=rawBioAssays.size() %>"
651          data-factor-values="<%=HTML.encodeTags(jsonFactorValues.toJSONString()) %>"
652        ></div>
653
654      </t:tab>
655      <t:tab id="annotations" title="Annotations" 
656        tooltip="View annotation values" clazz="white">
657        <jsp:include page="../../common/annotations/list_frameset.jsp">
658          <jsp:param name="item_type" value="<%=itemType.name()%>" />
659          <jsp:param name="item_id" value="<%=itemId%>" />
660          <jsp:param name="ID" value="<%=ID%>" />
661        </jsp:include>
662      </t:tab>
663     
664      <t:tab id="bioassaysets" title="Bioassay sets" />
665      <t:tab id="clonedreporters" 
666        title="Cloned reporters" 
667        visible="<%=virtualDb.hasClonedReporters() %>"
668        tooltip="Show information about cloned reporters"
669      />
670      <t:tab id="overview" title="Overview" 
671        tooltip="Display a tree overview of related items">
672        <jsp:include page="../../common/overview/overview.jsp">
673          <jsp:param name="item_type" value="<%=itemType.name()%>" />
674          <jsp:param name="item_id" value="<%=itemId%>" />
675          <jsp:param name="ID" value="<%=ID%>" />
676        </jsp:include>
677      </t:tab>     
678      <t:tab id="history" title="Change history" 
679        tooltip="Displays a log of all modifications made to this item"
680        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
681        <jsp:include page="../../common/history/frameset.jsp">
682          <jsp:param name="item_type" value="<%=itemType.name()%>" />
683          <jsp:param name="item_id" value="<%=itemId%>" />
684          <jsp:param name="ID" value="<%=ID%>" />
685        </jsp:include>
686      </t:tab>
687      </t:tabcontrol>
688
689  </base:body>
690  </base:page>
691  <%
692}
693finally
694{
695  if (dc != null) dc.close();
696}
697
698%>
Note: See TracBrowser for help on using the repository browser.