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

Last change on this file since 4619 was 4619, checked in by Nicklas Nordborg, 13 years ago

References #1129: Filtering of child/parent items in table listing

Remove debug code belonging to #1145 (Raw data batch import) that was checked in by accident in [4613].

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 23.2 KB
Line 
1<%-- $Id: view_experiment.jsp 4619 2008-10-30 13:35:53Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Hakkinen, 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 session="false"
27  import="net.sf.basedb.core.SessionControl"
28  import="net.sf.basedb.core.DbControl"
29  import="net.sf.basedb.core.Item"
30  import="net.sf.basedb.core.ItemContext"
31  import="net.sf.basedb.core.Permission"
32  import="net.sf.basedb.core.Experiment"
33  import="net.sf.basedb.core.RawBioAssay"
34  import="net.sf.basedb.core.AnnotationType"
35  import="net.sf.basedb.core.AnnotationSet"
36  import="net.sf.basedb.core.Annotation"
37  import="net.sf.basedb.core.Annotatable"
38  import="net.sf.basedb.core.Unit"
39  import="net.sf.basedb.core.Type"
40  import="net.sf.basedb.core.User"
41  import="net.sf.basedb.core.Group"
42  import="net.sf.basedb.core.ItemQuery"
43  import="net.sf.basedb.core.ItemResultList"
44  import="net.sf.basedb.core.ItemResultIterator"
45  import="net.sf.basedb.core.Include"
46  import="net.sf.basedb.core.MultiPermissions"
47  import="net.sf.basedb.core.PermissionDeniedException"
48  import="net.sf.basedb.core.PluginDefinition"
49  import="net.sf.basedb.core.plugin.GuiContext"
50  import="net.sf.basedb.core.plugin.Plugin"
51  import="net.sf.basedb.core.Project"
52  import="net.sf.basedb.core.query.Orders"
53  import="net.sf.basedb.core.query.Hql"
54  import="net.sf.basedb.clients.web.Base"
55  import="net.sf.basedb.clients.web.PermissionUtil"
56  import="net.sf.basedb.clients.web.util.HTML"
57  import="net.sf.basedb.util.Values"
58  import="net.sf.basedb.util.formatter.Formatter"
59  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
60  import="java.util.Collections"
61  import="java.util.Date"
62  import="java.util.Map"
63  import="java.util.HashMap"
64  import="java.util.Set"
65  import="java.util.HashSet"
66  import="java.util.List"
67  import="java.util.LinkedList"
68  import="java.util.Date"
69%>
70<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
71<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
72<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
73<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
74<%!
75  private static final Item itemType = Item.EXPERIMENT;
76  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
77%>
78<%
79final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
80final String ID = sc.getId();
81final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
82final int itemId = cc.getId();
83final float scale = Base.getScale(sc);
84final String root = request.getContextPath();
85final DbControl dc = sc.newDbControl();
86try
87{
88  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
89  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
90
91  String title = null;
92  Experiment experiment = Experiment.getById(dc, itemId);
93 
94  final boolean writePermission = experiment.hasPermission(Permission.WRITE);
95  final boolean deletePermission = experiment.hasPermission(Permission.DELETE);
96  final boolean sharePermission = experiment.hasPermission(Permission.SET_PERMISSION);
97  final boolean setOwnerPermission = experiment.hasPermission(Permission.SET_OWNER);
98  final boolean isOwner = experiment.isOwner();
99  final boolean isRemoved = experiment.isRemoved();
100  final boolean isUsed = isRemoved && experiment.isUsed();
101  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
102 
103  Map<AnnotationType, Set<Object>> usedFactorValues = 
104    new HashMap<AnnotationType, Set<Object>>();
105  %>
106
107  <base:page title="<%=title%>">
108  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
109    <script language="JavaScript">
110    function editItem()
111    {
112      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
113    }
114    function shareItem()
115    {
116      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareRawBioAssay', 600, 400);
117    }
118    function deleteItem()
119    {
120      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
121    }
122    function restoreItem()
123    {
124      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
125    }
126    function deleteItemPermanently()
127    {
128      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', <%=itemId%>, '&callback=itemDeleted');
129    }
130    function itemDeleted()
131    {
132      Main.listItems('<%=ID%>', '<%=itemType.name()%>');
133    }
134    function showUsingItems()
135    {
136      Main.showUsingItems('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>);
137    }   
138    function setOwner()
139    {
140      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 150);
141    }
142    function runPlugin(cmd)
143    {
144      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 740, 540);
145    }
146    function analyzeItem()
147    {
148      location.href = '<%=root%>/analyze/index.jsp?ID=<%=ID%>&experiment_id=<%=itemId%>';
149    }
150    function viewBioAssaySets()
151    {
152      location.href = 'bioassaysets/index.jsp?ID=<%=ID%>&experiment_id=<%=itemId%>';
153    }
154    function viewOverview()
155    {
156      location.href = 'overview/index.jsp?ID=<%=ID%>&experiment_id=<%=itemId%>';
157    }
158    function switchTab(tabControlId, tabId)
159    {
160      if (tabId == 'bioassaysets')
161      {
162        viewBioAssaySets();
163      }
164      else if (tabId == 'overview')
165      {
166        viewOverview();
167      }
168      else
169      {
170        TabControl.setActiveTab(tabControlId, tabId);
171      }
172    }
173    function editAnnotation(itemType, itemId, annotationTypeId)
174    {
175      var url = getRoot() + 'common/annotations/annotate.jsp?ID=<%=ID%>';
176      url += '&item_type='+itemType;
177      url += '&item_id='+itemId;
178      url += '&annotationtype_id='+annotationTypeId;
179      url += '&standalone=1';
180      Main.openPopup(url, 'EditAnnotation', 700, 460);
181    }
182    function editInheritedAnnotation(itemType, itemId, annotationTypeId)
183    {
184      var url = getRoot() + 'common/annotations/inherit.jsp?ID=<%=ID%>';
185      url += '&item_type='+itemType;
186      url += '&item_id='+itemId;
187      url += '&annotationtype_id='+annotationTypeId;
188      url += '&standalone=1';
189      Main.openPopup(url, 'EditAnnotation', 700, 460);
190    }
191    function setUsedFactorValue(annotationTypeId, values)
192    {
193      var div = document.getElementById('usedvalues.'+annotationTypeId);
194      div.innerHTML = values;
195    }
196    </script>
197  </base:head>
198  <base:body onload="initUsedFactorValues()">
199    <p>
200    <p:path>
201      <p:pathelement title="Experiments" href="<%="index.jsp?ID="+ID%>" />
202      <p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" />
203    </p:path>
204   
205    <t:tabcontrol id="main" active="properties" switch="switchTab">
206    <t:tab id="properties" title="Properties">
207   
208    <tbl:toolbar
209      >
210      <tbl:button 
211        disabled="<%=writePermission ? false : true%>" 
212        image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 
213        onclick="editItem()" 
214        title="Edit&hellip;" 
215        tooltip="<%=writePermission ? "Edit this experiment" : "You do not have permission to edit this experiment"%>" 
216      />
217      <tbl:button 
218        disabled="<%=deletePermission ? false : true%>" 
219        image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 
220        onclick="deleteItem()" 
221        title="Delete"
222        visible="<%=!experiment.isRemoved()%>"
223        tooltip="<%=deletePermission ? "Delete this experiment" : "You do not have permission to delete this experiment"%>" 
224      />
225      <tbl:button 
226        disabled="<%=writePermission ? false : true%>" 
227        image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 
228        onclick="restoreItem()" 
229        title="Restore"
230        visible="<%=experiment.isRemoved()%>"
231        tooltip="<%=writePermission ? "Restore this experiment" : "You do not have permission to restore this experiment"%>" 
232      />
233      <tbl:button 
234        disabled="<%=sharePermission ? false : true%>"
235        image="<%=sharePermission ? "share.gif" : "share_disabled.gif"%>"
236        onclick="shareItem()" 
237        title="Share&hellip;" 
238        tooltip="<%=sharePermission ? "Share this experiment to other user, groups and projects" : "You do not have permission to share this experiment"%>"
239      />
240      <tbl:button 
241        disabled="<%=setOwnerPermission ? false : true%>"
242        image="<%=setOwnerPermission ? "take_ownership.png" : "take_ownership_disabled.png"%>"
243        onclick="setOwner()" 
244        title="Set owner&hellip;"
245        tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
246      />
247      <tbl:button 
248        image="import.gif" 
249        onclick="runPlugin('ImportItem')" 
250        title="Import&hellip;" 
251        tooltip="Import data" 
252        visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
253      />
254      <tbl:button 
255        image="export.gif" 
256        onclick="runPlugin('ExportItem')" 
257        title="Export&hellip;" 
258        tooltip="Export data" 
259        visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
260      />
261      <tbl:button 
262        image="runplugin.gif" 
263        onclick="runPlugin('RunPlugin')" 
264        title="Run plugin&hellip;" 
265        tooltip="Run a plugin" 
266        visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
267      />
268      <tbl:button
269        image="help.gif"
270        onclick="<%="Main.openHelp('" + ID +"', 'experiment.view.properties')"%>"
271        title="Help&hellip;"
272        tooltip="Get help about this page"
273      />
274      </tbl:toolbar>
275    <div class="boxedbottom">
276      <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(experiment)%></i></div>
277      <%
278      if (experiment.isRemoved() || experiment.isShared())
279      {
280        %>
281        <div class="itemstatus">
282          <base:icon 
283            image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>"
284            onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>"
285            tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>"
286            visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon>
287          <base:icon image="used.gif" 
288            onclick="showUsingItems()"
289            tooltip="Show the items that are using this one"
290            visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon>
291          <base:icon image="shared.gif" 
292            visible="<%=experiment.isShared()%>"> This item is shared to other users, groups and/or projects</base:icon>
293        </div>
294        <%
295      }
296      %>
297      <table class="form" cellspacing="0">
298      <tr>
299        <td class="prompt">Name</td>
300        <td><%=HTML.encodeTags(experiment.getName())%></td>
301      </tr>
302      <tr>
303        <td class="prompt">Raw data type</td>
304        <td><%=HTML.encodeTags(experiment.getRawDataType().getName())%></td>
305      </tr>
306      <tr>
307        <td class="prompt">Directory</td>
308        <td><base:propertyvalue item="<%=experiment%>" property="directory" /></td>
309      </tr>
310      <tr>
311        <td class="prompt">Bytes</td>
312        <td><%=Values.formatBytes(experiment.getBytes())%></td>
313      </tr>
314      <tr>
315        <td class="prompt">Owner</td>
316        <td><base:propertyvalue item="<%=experiment%>" property="owner" /></td>
317      </tr>
318      <tr>
319        <td class="prompt">Description</td>
320        <td><%=HTML.niceFormat(experiment.getDescription())%></td>
321      </tr>
322      </table>
323     
324    <base:section 
325      id="publication" 
326      title="Publication"
327      context="<%=cc%>"
328      >
329      <table class="form" cellspacing="0">
330      <tr>
331        <td class="prompt">PubMed ID</td>
332        <td>
333          <%=HTML.encodeTags(experiment.getPubMedId())%>
334          <%
335          int pubMedId = Values.getInt(experiment.getPubMedId(), -1);
336          if (pubMedId != -1)
337          {
338            %>
339            <b>Link to:</b>
340            <a href="http://www.ebi.ac.uk/citexplore/citationDetails.do?externalId=<%=pubMedId%>&dataSource=MED"
341              target="_new" title="External link to EBI Citation database"
342              >EBI Citation database</a>,
343            <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=PureSearch&db=pubmed&details_term=<%=pubMedId%>"
344              target="_new" title="External link to NCBI Entrez PubMed">NCBI Entrez PubMed</a>
345            <%
346          }
347          %>
348        </td>
349      </tr>
350      <tr>
351        <td class="prompt">Title</td>
352        <td><%=HTML.niceFormat(experiment.getTitle())%></td>
353      </tr>
354      <tr>
355        <td class="prompt">Publication date</td>
356        <td><%=dateFormatter.format(experiment.getPublicationDate())%></td>
357      </tr>
358      <tr>
359        <td class="prompt">Abstract</td>
360        <td><%=HTML.niceFormat(experiment.getAbstract())%></td>
361      </tr>
362      <tr>
363        <td class="prompt">Experiment design</td>
364        <td><%=HTML.niceFormat(experiment.getExperimentDesign())%></td>
365      </tr>
366      <tr>
367        <td class="prompt">Experiment type</td>
368        <td><%=HTML.niceFormat(experiment.getExperimentType())%></td>
369      </tr>
370      <tr>
371        <td class="prompt">Affiliations</td>
372        <td><%=HTML.niceFormat(experiment.getAffiliations())%></td>
373      </tr>
374      <tr>
375        <td class="prompt">Authors</td>
376        <td><%=HTML.niceFormat(experiment.getAuthors())%></td>
377      </tr>
378      <tr>
379        <td class="prompt">Publication</td>
380        <td><%=HTML.niceFormat(experiment.getPublication())%></td>
381      </tr>
382      </table>
383    </base:section>
384     
385      <%
386      ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
387      efQuery.include(Include.ALL);
388      efQuery.order(Orders.asc(Hql.property("name")));
389      ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
390      if (experimentalFactors.size() == 0)
391      {
392        %>
393        <h4>Experimental factors</h4>
394        No experimental factors has been added to this experiment
395        (or, you don't have permission to view them).
396        <%
397      }
398      else
399      {
400        %>
401        <base:section 
402          id="experimentalFactors" 
403          title="<%="Experimental factors (" + experimentalFactors.size() +")"%>"
404          context="<%=cc%>">     
405        <tbl:table
406          id="experimentalFactors"
407          clazz="itemlist"
408          columns="all"
409          >
410        <tbl:columndef 
411          id="name"
412          title="Name"
413        />
414        <tbl:columndef
415          id="type"
416          title="Value type"
417        />
418        <tbl:columndef
419          id="values"
420          title="Used values"
421        />
422        <tbl:columndef 
423          id="description"
424          title="Description"
425        />
426        <tbl:data>
427          <tbl:columns>
428          </tbl:columns>
429          <tbl:rows>
430          <%
431          for (AnnotationType item : experimentalFactors)
432          {
433            Type valueType = item.getValueType();
434            usedFactorValues.put(item, new HashSet<Object>());
435            Formatter formatter = FormatterFactory.getTypeFormatter(sc, valueType);
436            %>
437            <tbl:row>
438              <tbl:cell column="name"><base:icon 
439                  image="deleted.gif" 
440                  tooltip="This item has been scheduled for deletion" 
441                  visible="<%=item.isRemoved()%>"
442                /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
443              <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
444              <tbl:cell column="type">
445                <%=valueType%>
446                <%=item.isEnumeration() ? "(enumeration)" : ""%>
447              </tbl:cell>
448              <tbl:cell column="values">
449                <%
450                if (!item.isEnumeration() && (valueType == Type.TEXT || valueType == Type.STRING))
451                {
452                  %>
453                  N/A
454                  <%
455                }
456                else
457                {
458                  %>
459                  <div id="usedvalues.<%=item.getId()%>">Loading...</div>
460                  <%
461                }
462                %>
463              </tbl:cell>
464            </tbl:row>
465            <%
466          }
467          %>
468          </tbl:rows>
469        </tbl:data>
470        </tbl:table>
471        </base:section>
472        <%
473      }
474      %>
475     
476      <%
477      ItemQuery<RawBioAssay> rbaQuery = experiment.getRawBioAssays();
478      rbaQuery.include(Include.ALL);
479      rbaQuery.order(Orders.asc(Hql.property("name")));
480      ItemResultList<RawBioAssay> rawBioAssays = rbaQuery.list(dc);
481      if (rawBioAssays.size() == 0)
482      {
483        %>
484        <h4>Raw bioassays</h4>
485        No raw bioassays has been added to this experiment
486        (or, you don't have permission to view them).
487        <%
488      }
489      else
490      {
491        %>
492        <base:section 
493          id="rawbioassays" 
494          title="<%="Raw bioassays (" + rawBioAssays.size() +")"%>"
495          context="<%=cc%>">
496        <tbl:table
497          id="rawbioassays"
498          clazz="itemlist"
499          columns="all"
500          >
501        <tbl:columndef 
502          id="name"
503          title="Name"
504        />
505        <tbl:columndef 
506          id="description"
507          title="Description"
508        />
509        <%
510        for (AnnotationType at : experimentalFactors)
511        {
512          Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
513          %>
514          <tbl:columndef
515            id="<%="at"+at.getId()%>"
516            title="<%=HTML.encodeTags(at.getName())%>"
517            formatter="<%=formatter%>"
518          />
519          <%
520        }
521        %>
522       
523        <tbl:data>
524          <tbl:columns>
525          </tbl:columns>
526          <tbl:rows>
527          <%
528          for (RawBioAssay item : rawBioAssays)
529          {
530            AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
531            %>
532            <tbl:row>
533              <tbl:cell column="name"><base:icon 
534                  image="deleted.gif" 
535                  tooltip="This item has been scheduled for deletion" 
536                  visible="<%=item.isRemoved()%>"
537                /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
538              <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
539              <%
540              for (AnnotationType at : experimentalFactors)
541              {
542                Unit unit = at.getDefaultUnit();
543                String unitSymbol = unit == null ? "" : "&nbsp;" + unit.getDisplaySymbol();
544               
545                String value = "<i>- none -</i>";
546                List<Annotation> all = as == null ? null : as.findAnnotations(dc, at, true);
547                Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
548                if (all != null && all.size() > 0)
549                {
550                  for (Annotation a : all)
551                  {
552                    List values = a.getValues();
553                    usedFactorValues.get(at).addAll(values);
554                    Annotatable aItem = null;
555                    try
556                    {
557                      aItem = a.getAnnotationSet().getItem();
558                    }
559                    catch (Throwable t)
560                    {}
561                    List toAdd = factorValues.get(aItem);
562                    if (toAdd == null)
563                    {
564                      toAdd = new LinkedList();
565                      factorValues.put(aItem, toAdd);
566                    }
567                    toAdd.addAll(values);
568                  }
569                }
570               
571                %>
572                <tbl:cell column="<%="at"+at.getId()%>"
573                  >
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 image="edit.gif" 
585                        onclick="<%="editAnnotation('"+aItem.getType().name()+"',"+aItem.getId()+","+at.getId()+")"%>" 
586                        tooltip="Modify the values of this experimental factor" />
587                      <%
588                    }
589                  }
590                  %>
591                </tbl:cell>
592                <%
593              }
594              %>
595            </tbl:row>
596            <%
597          }
598          %>
599          </tbl:rows>
600        </tbl:data>
601        </tbl:table>
602        </base:section>
603        <%
604      }
605     
606      // Tables with users/groups/projects that this item is shared to
607      MultiPermissions mp = new MultiPermissions(Collections.singleton(experiment));
608      ItemResultIterator<User> users = mp.getUsers().iterate(dc);
609      ItemResultIterator<Group> groups = mp.getGroups().iterate(dc);
610      ItemResultIterator<Project> projects = mp.getProjects().iterate(dc);
611     
612      if (users.hasNext() || groups.hasNext() || projects.hasNext())
613      {
614        %>
615        <base:section 
616          id="sharedTo" 
617          title="Shared to"
618          context="<%=cc%>">
619        <tbl:table 
620          id="itemsSharedTo"
621          clazz="itemlist"
622          columns="all"
623        >
624          <tbl:columndef 
625            id="itemType"
626            title="Item type"
627          />
628          <tbl:columndef 
629            id="name"
630            title="Name"
631          />
632          <tbl:columndef 
633            id="permissions"
634            title="Permissions"
635          />
636          <tbl:data>
637            <tbl:columns>
638            </tbl:columns>
639            <tbl:rows>
640            <%
641            while(projects.hasNext())
642            {
643              Project project = projects.next();
644              Set<Permission> permissions = mp.getPermissions(project).values().iterator().next();
645              %>     
646              <tbl:row>
647                <tbl:cell column="itemType"><%=project.getType()%></tbl:cell>
648                <tbl:cell column="name"><base:icon 
649                  image="deleted.gif" 
650                  tooltip="This item has been scheduled for deletion" 
651                  visible="<%=project.isRemoved()%>"
652                /><%=Base.getLinkedName(ID, project, false, true)%></tbl:cell>
653                <tbl:cell column="permissions">
654                  <%=PermissionUtil.translatePermissionsToString(permissions)%>
655                </tbl:cell>
656              </tbl:row>
657              <%
658            }
659            while(groups.hasNext())
660            {
661              Group group = groups.next();
662              Set<Permission> permissions = mp.getPermissions(group).values().iterator().next();
663              %>
664              <tbl:row>             
665                <tbl:cell column="itemType"><%=group.getType()%></tbl:cell>
666                <tbl:cell column="name"><base:icon 
667                  image="deleted.gif" 
668                  tooltip="This item has been scheduled for deletion" 
669                  visible="<%=group.isRemoved()%>"
670                /><%=Base.getLinkedName(ID, group, false, true)%></tbl:cell>
671                <tbl:cell column="permissions">
672                  <%=PermissionUtil.translatePermissionsToString(permissions)%>
673                </tbl:cell>
674              </tbl:row>
675              <% 
676            }
677            while (users.hasNext())
678            {
679              User user = users.next();
680              Set<Permission> permissions = mp.getPermissions(user).values().iterator().next();
681              %>
682              <tbl:row>             
683                <tbl:cell column="itemType"><%=user.getType()%></tbl:cell>
684                <tbl:cell column="name"><base:icon 
685                  image="deleted.gif" 
686                  tooltip="This item has been scheduled for deletion" 
687                  visible="<%=user.isRemoved()%>"
688                /><%=Base.getLinkedName(ID, user, false, true)%></tbl:cell>
689                <tbl:cell column="permissions">
690                  <%=PermissionUtil.translatePermissionsToString(permissions)%>
691                </tbl:cell>
692              </tbl:row>
693              <%
694            }
695            %>
696            </tbl:rows>
697          </tbl:data>
698        </tbl:table>
699        </base:section>
700        <%
701      }
702      else
703      {
704        %>
705        <h4>Shared to</h4>
706        This experiment is not shared
707        (or, you don't have permission to view the ones it is shared to).
708        <%
709      }
710      %>
711    </div>
712   
713    <script language="JavaScript">
714    function initUsedFactorValues()
715    {
716      <%
717      for (Map.Entry<AnnotationType, Set<Object>> entry : usedFactorValues.entrySet())
718      {
719        AnnotationType at = entry.getKey();
720        Type valueType = at.getValueType();
721        if (at.isEnumeration() || (valueType != Type.TEXT && valueType != Type.STRING))
722        {
723          Set<Object> values = entry.getValue();
724          Formatter formatter = FormatterFactory.getTypeFormatter(sc, valueType);
725          Unit unit = at.getDefaultUnit();
726          if (unit != null) formatter = unit.getFormatter(formatter);
727          String formattedValues = HTML.encodeTags(Values.getString(values, ", ", true, formatter));
728          %>
729          setUsedFactorValue(<%=at.getId()%>, '<%=HTML.javaScriptEncode(formattedValues)%>');
730          <%
731        }
732      }
733      %>
734    }
735    </script>
736      </t:tab>
737     
738      <t:tab id="bioassaysets" title="Bioassay sets" />
739     
740      <t:tab id="overview" title="Overview" 
741        tooltip="Get an overview of all hybridizations, biomaterials, etc. in this experiment" />
742     
743      </t:tabcontrol>
744
745  </base:body>
746  </base:page>
747  <%
748}
749finally
750{
751  if (dc != null) dc.close();
752}
753
754%>
Note: See TracBrowser for help on using the repository browser.