source: trunk/www/views/rawbioassays/list_rawbioassays.jsp @ 5952

Last change on this file since 5952 was 5952, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

List page in the View menu

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 27.5 KB
Line 
1<%-- $Id: list_rawbioassays.jsp 5952 2012-02-10 12:27:27Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
5  Copyright (C) 2007 Johan Enell, Martin Svensson
6
7  This file is part of BASE - BioArray Software Environment.
8  Available at http://base.thep.lu.se/
9
10  BASE is free software; you can redistribute it and/or
11  modify it under the terms of the GNU General Public License
12  as published by the Free Software Foundation; either version 3
13  of the License, or (at your option) any later version.
14
15  BASE is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License
21  along with BASE. If not, see <http://www.gnu.org/licenses/>.
22  ------------------------------------------------------------------
23
24  @author Nicklas
25  @version 2.0
26--%>
27<%@ page pageEncoding="UTF-8" session="false"
28  import="net.sf.basedb.core.SessionControl"
29  import="net.sf.basedb.core.DbControl"
30  import="net.sf.basedb.core.Item"
31  import="net.sf.basedb.core.RawBioAssay"
32  import="net.sf.basedb.core.Platform"
33  import="net.sf.basedb.core.RawDataType"
34  import="net.sf.basedb.core.RawDataTypes"
35  import="net.sf.basedb.core.Experiment"
36  import="net.sf.basedb.core.AnnotationType"
37  import="net.sf.basedb.core.AnnotationSet"
38  import="net.sf.basedb.core.Annotation"
39  import="net.sf.basedb.core.File"
40  import="net.sf.basedb.core.FileSetMember"
41  import="net.sf.basedb.core.ItemQuery"
42  import="net.sf.basedb.core.Include"
43  import="net.sf.basedb.core.Type"
44  import="net.sf.basedb.core.ItemResultIterator"
45  import="net.sf.basedb.core.ItemResultList"
46  import="net.sf.basedb.core.ItemContext"
47  import="net.sf.basedb.core.Job"
48  import="net.sf.basedb.core.Nameable"
49  import="net.sf.basedb.core.Permission"
50  import="net.sf.basedb.core.PluginDefinition"
51  import="net.sf.basedb.core.PermissionDeniedException"
52  import="net.sf.basedb.core.Quantity"
53  import="net.sf.basedb.core.Unit"
54  import="net.sf.basedb.core.query.Hql"
55  import="net.sf.basedb.core.query.Restrictions"
56  import="net.sf.basedb.core.query.Expressions"
57  import="net.sf.basedb.core.query.Orders"
58  import="net.sf.basedb.core.plugin.GuiContext"
59  import="net.sf.basedb.core.plugin.Plugin"
60  import="net.sf.basedb.util.Enumeration"
61  import="net.sf.basedb.util.ShareableUtil"
62  import="net.sf.basedb.util.formatter.Formatter"
63  import="net.sf.basedb.util.units.UnitUtil"
64  import="net.sf.basedb.clients.web.Base"
65  import="net.sf.basedb.clients.web.ModeInfo"
66  import="net.sf.basedb.clients.web.PermissionUtil"
67  import="net.sf.basedb.clients.web.util.HTML"
68  import="net.sf.basedb.util.Values"
69  import="net.sf.basedb.util.formatter.Formatter"
70  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
71  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
72  import="net.sf.basedb.clients.web.extensions.JspContext"
73  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
74  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
75  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
76  import="java.util.Iterator"
77  import="java.util.List"
78  import="java.util.Map"
79  import="java.util.Date"
80%>
81<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
82<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
83<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
84<%!
85  private static final Item itemType = Item.RAWBIOASSAY;
86  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
87%>
88<%
89final String root = request.getContextPath()+"/";
90final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
91final String ID = sc.getId();
92final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
93final boolean readPermission = sc.hasPermission(Permission.READ, itemType);
94final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
95
96final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
97final String callback = request.getParameter("callback");
98final String title = mode.generateTitle("raw bioassay", "raw bioassays");
99final DbControl dc = sc.newDbControl();
100ItemResultIterator<RawBioAssay> rawBioAssays = null;
101ItemResultList<AnnotationType> annotationTypes = null;
102try
103{
104  final ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
105
106  // Query for experiments relatated to the current raw bioassay
107  final ItemQuery<Experiment> experimentQuery = Experiment.getQuery();
108  experimentQuery.include(cc.getInclude());
109  experimentQuery.join(Hql.innerJoin("rawBioAssays", "rba"));
110  experimentQuery.restrict(Restrictions.eq(Hql.alias("rba"), Expressions.parameter("rawBioAssay")));
111  experimentQuery.order(Orders.asc(Hql.property("name"))); 
112 
113  // Get all platforms
114  final ItemQuery<Platform> platformQuery = Platform.getQuery();
115  platformQuery.include(cc.getInclude());
116  platformQuery.order(Orders.asc(Hql.property("name")));
117  platformQuery.setCacheResult(true);
118  Enumeration<String, String> platforms = new Enumeration<String, String>();
119  for (Platform p : platformQuery.list(dc))
120  {
121    platforms.add(Integer.toString(p.getId()), p.getName());
122  }
123 
124  Unit bytes = UnitUtil.getUnit(dc, Quantity.STORAGE_SIZE, "B");
125  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
126  annotationTypes = annotationTypeQuery.list(dc);
127  try
128  {
129    final ItemQuery<RawBioAssay> query = Base.getConfiguredQuery(dc, cc, true, RawBioAssay.getQuery(), mode);
130    rawBioAssays = query.iterate(dc);
131  }
132  catch (Throwable t)
133  {
134    t.printStackTrace();
135    cc.setMessage(t.getMessage());
136  }
137  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
138  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
139  int numListed = 0;
140  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
141  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
142  %>
143  <base:page title="<%=title==null ? "Raw bioassays" : title%>" type="<%=mode.getPageType()%>">
144  <base:head scripts="menu.js,table.js" styles="menu.css,table.css,toolbar.css">
145    <ext:scripts context="<%=jspContext%>" />
146    <ext:stylesheets context="<%=jspContext%>" />
147    <script language="JavaScript">
148    var submitPage = 'index.jsp';
149    var formId = 'rawbioassays';
150    function newItem()
151    {
152      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', 0, true);
153    }
154    function editItem(itemId)
155    {
156      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, true);
157    }
158    function viewItem(itemId)
159    {
160      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, false);
161    }
162    function itemOnClick(evt, itemId)
163    {
164      Table.itemOnClick(formId, evt, itemId, '<%=mode.getName()%>', viewItem, editItem, returnSelected);
165    }
166    function deleteItems()
167    {
168      var frm = document.forms[formId];
169      if (Forms.numChecked(frm) == 0)
170      {
171        alert('Please select at least one item in the list');
172        return;
173      }
174      frm.action = submitPage;
175      frm.cmd.value = 'DeleteItems';
176      frm.submit();
177    }
178    function restoreItems()
179    {
180      var frm = document.forms[formId];
181      if (Forms.numChecked(frm) == 0)
182      {
183        alert('Please select at least one item in the list');
184        return;
185      }
186      frm.action = submitPage;
187      frm.cmd.value = 'RestoreItems';
188      frm.submit();
189    }
190    function deleteItemPermanently(itemId)
191    {
192      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', itemId);
193    }
194    function setOwner()
195    {
196      Table.setOwnerOfItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'SetOwnerOfItems');
197    }
198    function shareItem(itemId)
199    {
200      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id='+itemId, 'ShareRawBioAssay', 600, 400);
201    }
202    function shareItems()
203    {
204      Table.shareItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'ShareItems');
205    }
206    function configureColumns()
207    {
208      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
209    }
210    function runPlugin(cmd)
211    {
212      Table.submitToPopup(formId, cmd, 750, 500);
213    }
214    function returnSelected()
215    {
216      Table.returnSelected(formId, <%=callback != null ? "window.opener."+callback : "null" %>);
217      window.close();
218    }
219    function presetOnChange()
220    {
221      Table.presetOnChange('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
222    }
223    function newExperiment()
224    {
225      var frm = document.forms[formId];
226      var selected = Table.getSelected(formId);
227      if (selected.length == 0)
228      {
229        alert('Please select at least one item in the list');
230        return;
231      }
232      var extraUrl = '&rawbioassay_id='+selected.join('&rawbioassay_id=');
233      Main.viewOrEditItem('<%=ID%>', 'EXPERIMENT', 0, true, extraUrl);
234    }
235    </script>
236  </base:head>
237 
238  <base:body>
239    <h1><%=title==null ? "Raw bioassays" : title%></h1>
240    <div class="content">
241    <tbl:table 
242      id="rawbioassays" 
243      columns="<%=cc.getSetting("columns")%>"
244      sortby="<%=cc.getSortProperty()%>" 
245      direction="<%=cc.getSortDirection()%>"
246      title="<%=title%>"
247      action="index.jsp"
248      sc="<%=sc%>"
249      item="<%=itemType%>"
250      subclass="fulltable"
251      >
252      <tbl:hidden 
253        name="mode" 
254        value="<%=mode.getName()%>" 
255      />
256      <tbl:hidden 
257        name="callback" 
258        value="<%=callback%>" 
259        skip="<%=callback == null%>" 
260      />
261      <tbl:columndef 
262        id="name"
263        property="name"
264        datatype="string"
265        title="Name"
266        sortable="true" 
267        filterable="true"
268        exportable="true"
269        show="always" 
270      />
271      <tbl:columndef 
272        id="id" 
273        clazz="uniquecol"
274        property="id"
275        datatype="int"
276        title="ID"
277        sortable="true"
278        filterable="true"
279        exportable="true"
280      />
281      <tbl:columndef 
282        id="entryDate"
283        property="entryDate"
284        datatype="date"
285        title="Registered"
286        sortable="true" 
287        filterable="true"
288        exportable="true"
289        formatter="<%=dateFormatter%>"
290      />
291      <tbl:columndef 
292        id="platform"
293        property="platform"
294        sortproperty="platform.name"
295        exportproperty="platform.name"
296        datatype="int"
297        enumeration="<%=platforms%>"
298        title="Platform"
299        sortable="true" 
300        filterable="true"
301        exportable="true"
302      /> 
303      <tbl:columndef 
304        id="variant"
305        property="variant.name"
306        datatype="string"
307        title="Variant"
308        sortable="true" 
309        filterable="true"
310        exportable="true"
311      />       
312      <%
313      Enumeration<String, String> rawEnumeration = new Enumeration<String, String>();
314      for (RawDataType rdt : RawDataTypes.getRawDataTypes())
315      {
316        rawEnumeration.add(rdt.getId(), HTML.encodeTags(rdt.getName()));
317      }
318      rawEnumeration.sortValues();
319      %>
320      <tbl:columndef 
321        id="rawDataType"
322        property="rawDataType"
323        datatype="string"
324        enumeration="<%=rawEnumeration%>"
325        title="Raw data type"
326        sortable="true" 
327        filterable="true"
328        exportable="true"
329      />
330      <tbl:columndef 
331        id="hasData"
332        property="hasData"
333        datatype="boolean"
334        title="Has data"
335        sortable="true" 
336        filterable="true"
337        exportable="true"
338      />
339      <tbl:columndef 
340        id="spots"
341        property="spots"
342        datatype="int"
343        title="Db spots"
344        sortable="true" 
345        filterable="true"
346        exportable="true"
347      />
348      <tbl:columndef 
349        id="numFileSpots"
350        property="numFileSpots"
351        datatype="int"
352        title="File spots"
353        sortable="true" 
354        filterable="true"
355        exportable="true"
356      />     
357      <tbl:columndef 
358        id="bytes"
359        property="bytes"
360        datatype="long"
361        title="Bytes"
362        sortable="true" 
363        filterable="true"
364        exportable="true"
365        unit="<%=bytes%>"
366      />
367      <tbl:columndef 
368        id="parentBioAssay"
369        property="parentBioAssay.name"
370        datatype="string"
371        title="Parent bioassay"
372        sortable="true" 
373        filterable="true"
374        exportable="true"
375      />
376      <tbl:columndef 
377        id="parentExtract"
378        property="parentExtract.name"
379        datatype="string"
380        title="Parent extract"
381        sortable="true" 
382        filterable="true"
383        exportable="true"
384      />
385      <tbl:columndef 
386        id="software"
387        property="software.name"
388        datatype="string"
389        title="Software"
390        sortable="true" 
391        filterable="true"
392        exportable="true"
393      />
394      <tbl:columndef 
395        id="protocol"
396        property="protocol.name"
397        datatype="string"
398        title="Protocol"
399        sortable="true" 
400        filterable="true"
401        exportable="true"
402      />
403      <tbl:columndef 
404        id="arrayDesign"
405        property="arrayDesign.name"
406        datatype="string"
407        title="Array design"
408        sortable="true" 
409        filterable="true"
410        exportable="true"
411      />
412      <tbl:columndef 
413        id="plugin"
414        property="job.pluginDefinition.name"
415        datatype="string"
416        title="Plugin"
417        sortable="true"
418        filterable="true"
419        exportable="true"
420        tooltip="The plug-in that was used to import raw data"
421      />
422      <tbl:columndef 
423        id="configuration"
424        property="job.pluginConfiguration.name"
425        datatype="string"
426        title="Configuration"
427        sortable="true"
428        filterable="true"
429        exportable="true" 
430        tooltip="The configuration/file format that was used to import raw data"
431      />
432      <tbl:columndef 
433        id="importdate"
434        property="job.ended"
435        datatype="date"
436        title="Import date"
437        sortable="true"
438        filterable="true"
439        exportable="true" 
440        tooltip="The date and time of the raw data import"
441        formatter="<%=dateTimeFormatter%>"
442      />
443      <tbl:columndef
444        id="experiments"
445        title="Experiments"
446        property="&experiments(name)"
447        datatype="string"
448        filterable="true"
449        exportable="true"
450      />
451      <tbl:columndef
452        id="files"
453        title="Files"
454        property="&fileSet.members(file.name)"
455        datatype="string"
456        filterable="true"
457        exportable="true"
458      />
459      <tbl:columndef 
460        id="owner"
461        property="owner.name"
462        datatype="string"
463        title="Owner"
464        sortable="true" 
465        filterable="true"
466        exportable="true"
467      />
468      <tbl:columndef 
469        id="description"
470        property="description"
471        datatype="string"
472        title="Description" 
473        sortable="true" 
474        filterable="true" 
475        exportable="true"
476      />
477      <%
478      for (AnnotationType at : annotationTypes)
479      {
480        Enumeration<String, String> annotationEnum = null;
481        if (at.isEnumeration())
482        {
483          annotationEnum = new Enumeration<String, String>();
484          List<?> values = at.getValues();
485          for (Object value : values)
486          {
487            String encoded = HTML.encodeTags(value.toString());
488            annotationEnum.add(encoded, encoded);
489          }
490        }
491        %>
492        <tbl:columndef 
493          id="<%="at"+at.getId()%>"
494          title="<%=HTML.encodeTags(at.getName())+" [A]"%>" 
495          property="<%="#"+at.getId()%>"
496          annotation="true"
497          datatype="<%=at.getValueType().getStringValue()%>"
498          enumeration="<%=annotationEnum%>"
499          smartenum="<%=at.getDisplayAsList() %>"
500          sortable="false" 
501          filterable="true" 
502          exportable="true"
503          unit="<%=at.getDefaultUnit()%>"
504        />
505        <%
506      }
507      %>
508      <tbl:columndef
509        id="permission"
510        title="Permission"
511      />
512      <tbl:columndef
513        id="sharedTo"
514        title="Shared to"
515        filterable="true"
516        filterproperty="!sharedTo.name"
517        datatype="string"
518      />
519      <div class="panelgroup bottomborder">
520        <tbl:toolbar
521          subclass="bottomborder"
522          visible="<%=mode.hasToolbar()%>"
523          >
524          <tbl:button 
525            disabled="<%=!createPermission%>" 
526            image="new.png" 
527            onclick="newItem()" 
528            title="New&hellip;" 
529            tooltip="<%=createPermission ? "Create new raw bioassay" : "You do not have permission to create raw bioassays"%>" 
530          />
531          <tbl:button 
532            image="delete.png"
533            onclick="deleteItems()" 
534            title="Delete" 
535            tooltip="Delete the selected items" 
536          />
537          <tbl:button 
538            image="restore.png"
539            onclick="restoreItems()" 
540            title="Restore" 
541            tooltip="Restore the selected (deleted) items"
542          />
543          <tbl:button 
544            image="share.png"
545            onclick="shareItems()" 
546            title="Share&hellip;" 
547            tooltip="Share the selected items"
548          />
549          <tbl:button 
550            image="take_ownership.png"
551            onclick="setOwner()" 
552            title="Set owner&hellip;"
553            tooltip="Change owner of the selected items"
554          />
555          <tbl:button 
556            image="columns.png" 
557            onclick="configureColumns()" 
558            title="Columns&hellip;" 
559            tooltip="Show, hide and re-order columns" 
560          />
561          <tbl:button
562            image="add.png"
563            onclick="newExperiment()"
564            title="New experiment&hellip;"
565            tooltip="Create a new experiment from the selected raw bioassays"
566            visible="<%=sc.hasPermission(Permission.CREATE, Item.EXPERIMENT)%>"
567          />
568          <tbl:button 
569            image="import.png" 
570            onclick="runPlugin('ImportItems')" 
571            title="Import&hellip;" 
572            tooltip="Import data" 
573            visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
574          />
575          <tbl:button 
576            image="export.png" 
577            onclick="runPlugin('ExportItems')" 
578            title="Export&hellip;" 
579            tooltip="Export data" 
580            visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
581          />
582          <tbl:button 
583            image="runplugin.png" 
584            onclick="runPlugin('RunListPlugin')" 
585            title="Run plugin&hellip;" 
586            tooltip="Run a plugin" 
587            visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
588          />
589          <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
590            wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
591        </tbl:toolbar>
592        <tbl:panel>
593          <tbl:presetselector 
594            onchange="presetOnChange()"
595          />
596          <tbl:navigator
597            page="<%=cc.getPage()%>" 
598            rowsperpage="<%=cc.getRowsPerPage()%>" 
599            totalrows="<%=rawBioAssays == null ? 0 : rawBioAssays.getTotalCount()%>" 
600            visible="<%=mode.hasNavigator()%>"
601          />
602        </tbl:panel>
603      </div>
604      <tbl:data>
605        <tbl:headers>
606          <tbl:headerrow>
607            <tbl:header colspan="3" />
608            <tbl:columnheaders />
609          </tbl:headerrow>
610          <tbl:headerrow>
611            <tbl:header subclass="index" />
612            <tbl:header 
613              subclass="check" 
614              visible="<%=mode.hasCheck()%>"
615              ><base:icon 
616                image="check_uncheck.png" 
617                tooltip="Check/uncheck all" 
618                onclick="Forms.checkUncheck(document.forms[formId])" 
619              /></tbl:header>
620            <tbl:header 
621              subclass="check" 
622              visible="<%=mode.hasRadio()%>"
623              />
624            <tbl:header 
625              subclass="icons" 
626              visible="<%=mode.hasIcons()%>"
627              />
628            <tbl:propertyfilter />
629          </tbl:headerrow>
630        </tbl:headers>
631        <tbl:rows>
632          <%
633          if (cc.getMessage() != null)
634          {
635            %>
636            <tbl:panel clazz="messagepanel">
637              <div class="messagecontainer error"><%=cc.getMessage()%></div>
638            </tbl:panel>
639            <%
640            cc.setMessage(null);
641          }
642          int index = cc.getPage()*cc.getRowsPerPage();
643          int selectedItemId = cc.getId();
644          if (rawBioAssays != null)
645          {           
646            while (rawBioAssays.hasNext())
647            {
648              RawBioAssay item = rawBioAssays.next();
649              Job job = null;
650              try
651              {
652                job = item.getJob();
653              }
654              catch (Throwable t)
655              {}
656              int itemId = item.getId();
657              String openSharePopup = "shareItem("+itemId+")";
658              String deletePermanently = "deleteItemPermanently("+itemId+")";
659              boolean deletePermission = item.hasPermission(Permission.DELETE);
660              boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
661              boolean writePermission = item.hasPermission(Permission.WRITE);
662              String tooltip = mode.isSelectionMode() ? 
663                  "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
664              String name = HTML.encodeTags(item.getName());
665              index++;
666              numListed++;
667              %>
668              <tbl:row>
669                <tbl:header 
670                  clazz="index"
671                  ><%=index%></tbl:header>
672                <tbl:header 
673                  clazz="check" 
674                  visible="<%=mode.hasCheck()%>"
675                  ><input 
676                    type="checkbox" 
677                    name="<%=itemId%>" 
678                    value="<%=itemId%>" 
679                    title="<%=name%>" 
680                    <%=cc.getSelected().contains(itemId) ? "checked" : ""%> 
681                  ></tbl:header>
682                <tbl:header 
683                  clazz="check" 
684                  visible="<%=mode.hasRadio()%>"
685                  ><input 
686                    type="radio" 
687                    name="item_id" 
688                    value="<%=itemId%>" 
689                    title="<%=name%>" 
690                    <%=selectedItemId == itemId ? "checked" : ""%>
691                  ></tbl:header>
692                <tbl:header 
693                  clazz="icons" 
694                  visible="<%=mode.hasIcons()%>"
695                  ><base:icon 
696                    image="deleted.png"
697                    onclick="<%=deletePermission ? deletePermanently : null%>"
698                    tooltip="This item has been scheduled for deletion" 
699                    visible="<%=item.isRemoved()%>"
700                  /><base:icon 
701                    image="shared.png" 
702                    onclick="<%=sharePermission ? openSharePopup : null%>"
703                    tooltip="This item is shared to other users, groups and/or projects" 
704                    visible="<%=item.isShared()%>"
705                  />&nbsp;</tbl:header>
706                <tbl:cell column="name"><div class="link" 
707                  onclick="itemOnClick(<%=writePermission ? "event" : null%>, <%=itemId%>)" 
708                  title="<%=tooltip%>"><%=name%></div></tbl:cell>
709                <tbl:cell column="id"><%=item.getId()%></tbl:cell>
710                <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
711                <tbl:cell column="spots"><%=item.getNumDbSpots()%></tbl:cell>
712                <tbl:cell column="numFileSpots"><%=item.getNumFileSpots()%></tbl:cell>
713                <tbl:cell column="bytes"><%=Values.formatBytes(item.getBytes())%></tbl:cell>
714                <tbl:cell column="platform"
715                  ><base:propertyvalue 
716                    item="<%=item%>" 
717                    property="platform"
718                    enableEditLink="<%=mode.hasEditLink()%>" 
719                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
720                  /></tbl:cell>
721                <tbl:cell column="variant"
722                  ><base:propertyvalue 
723                    item="<%=item%>" 
724                    property="variant"
725                    enableEditLink="<%=mode.hasEditLink()%>" 
726                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
727                  /></tbl:cell>               
728                <tbl:cell column="rawDataType"><%=HTML.encodeTags(item.getRawDataType().getName())%></tbl:cell>
729                <tbl:cell column="hasData"><%=item.hasData()%></tbl:cell>
730                <tbl:cell column="parentBioAssay"
731                  ><base:propertyvalue 
732                    item="<%=item%>" 
733                    property="parentBioAssay"
734                    enableEditLink="<%=mode.hasEditLink()%>" 
735                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
736                  /></tbl:cell>
737                <tbl:cell column="parentExtract"
738                  ><base:propertyvalue 
739                    item="<%=item%>" 
740                    property="parentExtract"
741                    enableEditLink="<%=mode.hasEditLink()%>" 
742                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
743                  /></tbl:cell>
744                <tbl:cell column="software"
745                  ><base:propertyvalue 
746                    item="<%=item%>" 
747                    property="software"
748                    enableEditLink="<%=mode.hasEditLink()%>" 
749                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
750                  /></tbl:cell>
751                <tbl:cell column="protocol"
752                  ><base:propertyvalue 
753                    item="<%=item%>" 
754                    property="protocol"
755                    enableEditLink="<%=mode.hasEditLink()%>" 
756                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
757                  /></tbl:cell>
758                <tbl:cell column="arrayDesign"
759                  ><base:propertyvalue 
760                    item="<%=item%>" 
761                    property="arrayDesign"
762                    enableEditLink="<%=mode.hasEditLink()%>" 
763                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
764                  /></tbl:cell>
765                <tbl:cell column="plugin">
766                  <base:propertyvalue 
767                    item="<%=item%>"
768                    property="job.pluginDefinition" 
769                    enableEditLink="<%=mode.hasEditLink()%>" 
770                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
771                    />
772                </tbl:cell>
773                <tbl:cell column="configuration">
774                  <base:propertyvalue 
775                    item="<%=item%>"
776                    property="job.pluginConfiguration" 
777                    enableEditLink="<%=mode.hasEditLink()%>" 
778                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
779                  />
780                </tbl:cell>
781                <tbl:cell 
782                  column="importdate" 
783                  value="<%=job == null ? null : job.getEnded() %>" 
784                />
785                <tbl:cell column="files">
786                  <% 
787                  if (item.hasFileSet())
788                  {
789                    for (FileSetMember member : item.getFileSet().getMembers().list(dc))
790                    {
791                      try
792                      {
793                        %>
794                        <%=Base.getLinkedFile(ID, member.getFile(), false, true, true, root) %><br>
795                        <%
796                      }
797                      catch (PermissionDeniedException ex)
798                      {}
799                    }
800                  }
801                  else
802                  {
803                    %>
804                    <i>- none -</i>
805                    <%
806                  }
807                  %>
808                </tbl:cell>
809                <tbl:cell column="experiments">
810                  <%
811                  experimentQuery.setParameter("rawBioAssay", itemId, Type.INT);
812                  try
813                  {
814                    String separator = "";
815                    for (Experiment e : experimentQuery.list(dc))
816                    {
817                      out.write(separator);
818                      if (mode.hasPropertyLink())
819                      {
820                        out.write(Base.getLinkedName(ID, e, false, mode.hasEditLink()));
821                      }
822                      else
823                      {
824                        out.write(HTML.encodeTags(e.getName()));
825                      }
826                      separator = ", ";
827                    }
828                  }
829                  catch (Throwable t)
830                  {
831                    %>
832                    <div class="error"><%=t.getMessage()%></div>
833                    <%
834                  }
835                  %>
836                </tbl:cell>
837                <tbl:cell column="owner"
838                  ><base:propertyvalue 
839                    item="<%=item%>" 
840                    property="owner"
841                    enableEditLink="<%=mode.hasEditLink()%>" 
842                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
843                  /></tbl:cell>
844                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
845                <%
846                AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
847                if (as != null)
848                {
849                  for (AnnotationType at : annotationTypes)
850                  {
851                    if (as.hasAnnotation(at))
852                    {
853                      Annotation a = as.getAnnotation(at);
854                      String suffix = a.getUnitSymbol(null);
855                      if (suffix != null) suffix = "&nbsp;" + suffix;
856                      %>
857                      <tbl:cell 
858                        column="<%="at"+at.getId()%>"
859                        ><tbl:cellvalue 
860                          list="<%=a.getValues(null)%>"
861                          suffix="<%=suffix%>"
862                      /></tbl:cell>
863                      <%
864                    }
865                  }
866                }
867                %>
868                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
869                <tbl:cell column="sharedTo">
870                  <%
871                  Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
872                  while(sharees.hasNext())
873                  {
874                    Nameable n = sharees.next();
875                    if (mode.hasPropertyLink())
876                    {
877                      out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
878                    }
879                    else
880                    {
881                      out.write(HTML.encodeTags(n.getName()));
882                    }
883                    out.write(sharees.hasNext() ? ", " : "");
884                  }
885                  %>
886                </tbl:cell>
887              </tbl:row>
888              <%
889              }
890            }
891          if (numListed == 0)
892          {
893            %>
894            <tbl:panel clazz="messagepanel">
895              <div class="messagecontainer note">
896              <%=rawBioAssays == null || rawBioAssays.getTotalCount() == 0 ? "No raw bioassays were found" : "No raw bioassays on this page. Please select another page!" %>
897              </div>
898            </tbl:panel>
899            <%
900          }
901          %>
902        </tbl:rows>
903      </tbl:data>
904    </tbl:table>
905    </div>
906   
907    <base:buttongroup subclass="dialogbuttons">
908      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
909      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
910      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
911    </base:buttongroup>
912   
913  </base:body>
914  </base:page>
915  <%
916}
917finally
918{
919  if (rawBioAssays != null) rawBioAssays.close();
920  if (dc != null) dc.close();
921}
922%>
Note: See TracBrowser for help on using the repository browser.