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

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

References #1655: GUI improvements

  • Fixes rest of list pages in Biomaterial LIMS menu
  • Introduced an 'iframe' page type so that thos pages doesn't have to 'cannibalise' on the 'popup' page type (doesn't works well with absolutely positioned content).
  • Fixed subclass="dialogbuttons" on all list pages when used in popup form


  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 27.2 KB
Line 
1<%-- $Id: list_rawbioassays.jsp 5951 2012-02-09 14:19:17Z 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    <%
240    if (cc.getMessage() != null)
241    {
242      %>
243      <div class="error"><%=cc.getMessage()%></div>
244      <%
245      cc.setMessage(null);
246    }
247    %>
248    <tbl:table 
249      id="rawbioassays" 
250       
251      columns="<%=cc.getSetting("columns")%>"
252      sortby="<%=cc.getSortProperty()%>" 
253      direction="<%=cc.getSortDirection()%>"
254      title="<%=title%>"
255      action="index.jsp"
256      sc="<%=sc%>"
257      item="<%=itemType%>"
258      >
259      <tbl:hidden 
260        name="mode" 
261        value="<%=mode.getName()%>" 
262      />
263      <tbl:hidden 
264        name="callback" 
265        value="<%=callback%>" 
266        skip="<%=callback == null%>" 
267      />
268      <tbl:columndef 
269        id="name"
270        property="name"
271        datatype="string"
272        title="Name"
273        sortable="true" 
274        filterable="true"
275        exportable="true"
276        show="always" 
277      />
278      <tbl:columndef 
279        id="id" 
280        clazz="uniquecol"
281        property="id"
282        datatype="int"
283        title="ID"
284        sortable="true"
285        filterable="true"
286        exportable="true"
287      />
288      <tbl:columndef 
289        id="entryDate"
290        property="entryDate"
291        datatype="date"
292        title="Registered"
293        sortable="true" 
294        filterable="true"
295        exportable="true"
296        formatter="<%=dateFormatter%>"
297      />
298      <tbl:columndef 
299        id="platform"
300        property="platform"
301        sortproperty="platform.name"
302        exportproperty="platform.name"
303        datatype="int"
304        enumeration="<%=platforms%>"
305        title="Platform"
306        sortable="true" 
307        filterable="true"
308        exportable="true"
309      /> 
310      <tbl:columndef 
311        id="variant"
312        property="variant.name"
313        datatype="string"
314        title="Variant"
315        sortable="true" 
316        filterable="true"
317        exportable="true"
318      />       
319      <%
320      Enumeration<String, String> rawEnumeration = new Enumeration<String, String>();
321      for (RawDataType rdt : RawDataTypes.getRawDataTypes())
322      {
323        rawEnumeration.add(rdt.getId(), HTML.encodeTags(rdt.getName()));
324      }
325      rawEnumeration.sortValues();
326      %>
327      <tbl:columndef 
328        id="rawDataType"
329        property="rawDataType"
330        datatype="string"
331        enumeration="<%=rawEnumeration%>"
332        title="Raw data type"
333        sortable="true" 
334        filterable="true"
335        exportable="true"
336      />
337      <tbl:columndef 
338        id="hasData"
339        property="hasData"
340        datatype="boolean"
341        title="Has data"
342        sortable="true" 
343        filterable="true"
344        exportable="true"
345      />
346      <tbl:columndef 
347        id="spots"
348        property="spots"
349        datatype="int"
350        title="Db spots"
351        sortable="true" 
352        filterable="true"
353        exportable="true"
354      />
355      <tbl:columndef 
356        id="numFileSpots"
357        property="numFileSpots"
358        datatype="int"
359        title="File spots"
360        sortable="true" 
361        filterable="true"
362        exportable="true"
363      />     
364      <tbl:columndef 
365        id="bytes"
366        property="bytes"
367        datatype="long"
368        title="Bytes"
369        sortable="true" 
370        filterable="true"
371        exportable="true"
372        unit="<%=bytes%>"
373      />
374      <tbl:columndef 
375        id="parentBioAssay"
376        property="parentBioAssay.name"
377        datatype="string"
378        title="Parent bioassay"
379        sortable="true" 
380        filterable="true"
381        exportable="true"
382      />
383      <tbl:columndef 
384        id="parentExtract"
385        property="parentExtract.name"
386        datatype="string"
387        title="Parent extract"
388        sortable="true" 
389        filterable="true"
390        exportable="true"
391      />
392      <tbl:columndef 
393        id="software"
394        property="software.name"
395        datatype="string"
396        title="Software"
397        sortable="true" 
398        filterable="true"
399        exportable="true"
400      />
401      <tbl:columndef 
402        id="protocol"
403        property="protocol.name"
404        datatype="string"
405        title="Protocol"
406        sortable="true" 
407        filterable="true"
408        exportable="true"
409      />
410      <tbl:columndef 
411        id="arrayDesign"
412        property="arrayDesign.name"
413        datatype="string"
414        title="Array design"
415        sortable="true" 
416        filterable="true"
417        exportable="true"
418      />
419      <tbl:columndef 
420        id="plugin"
421        property="job.pluginDefinition.name"
422        datatype="string"
423        title="Plugin"
424        sortable="true"
425        filterable="true"
426        exportable="true"
427        tooltip="The plug-in that was used to import raw data"
428      />
429      <tbl:columndef 
430        id="configuration"
431        property="job.pluginConfiguration.name"
432        datatype="string"
433        title="Configuration"
434        sortable="true"
435        filterable="true"
436        exportable="true" 
437        tooltip="The configuration/file format that was used to import raw data"
438      />
439      <tbl:columndef 
440        id="importdate"
441        property="job.ended"
442        datatype="date"
443        title="Import date"
444        sortable="true"
445        filterable="true"
446        exportable="true" 
447        tooltip="The date and time of the raw data import"
448        formatter="<%=dateTimeFormatter%>"
449      />
450      <tbl:columndef
451        id="experiments"
452        title="Experiments"
453        property="&experiments(name)"
454        datatype="string"
455        filterable="true"
456        exportable="true"
457      />
458      <tbl:columndef
459        id="files"
460        title="Files"
461        property="&fileSet.members(file.name)"
462        datatype="string"
463        filterable="true"
464        exportable="true"
465      />
466      <tbl:columndef 
467        id="owner"
468        property="owner.name"
469        datatype="string"
470        title="Owner"
471        sortable="true" 
472        filterable="true"
473        exportable="true"
474      />
475      <tbl:columndef 
476        id="description"
477        property="description"
478        datatype="string"
479        title="Description" 
480        sortable="true" 
481        filterable="true" 
482        exportable="true"
483      />
484      <%
485      for (AnnotationType at : annotationTypes)
486      {
487        Enumeration<String, String> annotationEnum = null;
488        if (at.isEnumeration())
489        {
490          annotationEnum = new Enumeration<String, String>();
491          List<?> values = at.getValues();
492          for (Object value : values)
493          {
494            String encoded = HTML.encodeTags(value.toString());
495            annotationEnum.add(encoded, encoded);
496          }
497        }
498        %>
499        <tbl:columndef 
500          id="<%="at"+at.getId()%>"
501          title="<%=HTML.encodeTags(at.getName())+" [A]"%>" 
502          property="<%="#"+at.getId()%>"
503          annotation="true"
504          datatype="<%=at.getValueType().getStringValue()%>"
505          enumeration="<%=annotationEnum%>"
506          smartenum="<%=at.getDisplayAsList() %>"
507          sortable="false" 
508          filterable="true" 
509          exportable="true"
510          unit="<%=at.getDefaultUnit()%>"
511        />
512        <%
513      }
514      %>
515      <tbl:columndef
516        id="permission"
517        title="Permission"
518      />
519      <tbl:columndef
520        id="sharedTo"
521        title="Shared to"
522        filterable="true"
523        filterproperty="!sharedTo.name"
524        datatype="string"
525      />
526      <tbl:toolbar
527        visible="<%=mode.hasToolbar()%>"
528        >
529        <tbl:button 
530          disabled="<%=!createPermission%>" 
531          image="new.png" 
532          onclick="newItem()" 
533          title="New&hellip;" 
534          tooltip="<%=createPermission ? "Create new raw bioassay" : "You do not have permission to create raw bioassays"%>" 
535        />
536        <tbl:button 
537          image="delete.png"
538          onclick="deleteItems()" 
539          title="Delete" 
540          tooltip="Delete the selected items" 
541        />
542        <tbl:button 
543          image="restore.png"
544          onclick="restoreItems()" 
545          title="Restore" 
546          tooltip="Restore the selected (deleted) items"
547        />
548        <tbl:button 
549          image="share.png"
550          onclick="shareItems()" 
551          title="Share&hellip;" 
552          tooltip="Share the selected items"
553        />
554        <tbl:button 
555          image="take_ownership.png"
556          onclick="setOwner()" 
557          title="Set owner&hellip;"
558          tooltip="Change owner of the selected items"
559        />
560        <tbl:button 
561          image="columns.png" 
562          onclick="configureColumns()" 
563          title="Columns&hellip;" 
564          tooltip="Show, hide and re-order columns" 
565        />
566        <tbl:button
567          image="add.png"
568          onclick="newExperiment()"
569          title="New experiment&hellip;"
570          tooltip="Create a new experiment from the selected raw bioassays"
571          visible="<%=sc.hasPermission(Permission.CREATE, Item.EXPERIMENT)%>"
572        />
573        <tbl:button 
574          image="import.png" 
575          onclick="runPlugin('ImportItems')" 
576          title="Import&hellip;" 
577          tooltip="Import data" 
578          visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
579        />
580        <tbl:button 
581          image="export.png" 
582          onclick="runPlugin('ExportItems')" 
583          title="Export&hellip;" 
584          tooltip="Export data" 
585          visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
586        />
587        <tbl:button 
588          image="runplugin.png" 
589          onclick="runPlugin('RunListPlugin')" 
590          title="Run plugin&hellip;" 
591          tooltip="Run a plugin" 
592          visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
593        />
594        <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
595          wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
596      </tbl:toolbar>
597      <tbl:navigator
598        page="<%=cc.getPage()%>" 
599        rowsperpage="<%=cc.getRowsPerPage()%>" 
600        totalrows="<%=rawBioAssays == null ? 0 : rawBioAssays.getTotalCount()%>" 
601        visible="<%=mode.hasNavigator()%>"
602      />
603      <tbl:data>
604        <tbl:headers>
605          <tbl:headerrow>
606            <tbl:header colspan="3" />
607            <tbl:columnheaders />
608          </tbl:headerrow>
609          <tbl:headerrow>
610            <tbl:header subclass="index" />
611            <tbl:header 
612              subclass="check" 
613              visible="<%=mode.hasCheck()%>"
614              ><base:icon 
615                image="check_uncheck.png" 
616                tooltip="Check/uncheck all" 
617                onclick="Forms.checkUncheck(document.forms[formId])" 
618              /></tbl:header>
619            <tbl:header 
620              subclass="check" 
621              visible="<%=mode.hasRadio()%>"
622              />
623            <tbl:header 
624              subclass="icons" 
625              visible="<%=mode.hasIcons()%>"
626              />
627            <tbl:propertyfilter />
628          </tbl:headerrow>
629        </tbl:headers>
630        <tbl:rows>
631          <%
632          int index = cc.getPage()*cc.getRowsPerPage();
633          int selectedItemId = cc.getId();
634          if (rawBioAssays != null)
635          {           
636            while (rawBioAssays.hasNext())
637            {
638              RawBioAssay item = rawBioAssays.next();
639              Job job = null;
640              try
641              {
642                job = item.getJob();
643              }
644              catch (Throwable t)
645              {}
646              int itemId = item.getId();
647              String openSharePopup = "shareItem("+itemId+")";
648              String deletePermanently = "deleteItemPermanently("+itemId+")";
649              boolean deletePermission = item.hasPermission(Permission.DELETE);
650              boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
651              boolean writePermission = item.hasPermission(Permission.WRITE);
652              String tooltip = mode.isSelectionMode() ? 
653                  "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
654              String name = HTML.encodeTags(item.getName());
655              index++;
656              numListed++;
657              %>
658              <tbl:row>
659                <tbl:header 
660                  clazz="index"
661                  ><%=index%></tbl:header>
662                <tbl:header 
663                  clazz="check" 
664                  visible="<%=mode.hasCheck()%>"
665                  ><input 
666                    type="checkbox" 
667                    name="<%=itemId%>" 
668                    value="<%=itemId%>" 
669                    title="<%=name%>" 
670                    <%=cc.getSelected().contains(itemId) ? "checked" : ""%> 
671                  ></tbl:header>
672                <tbl:header 
673                  clazz="check" 
674                  visible="<%=mode.hasRadio()%>"
675                  ><input 
676                    type="radio" 
677                    name="item_id" 
678                    value="<%=itemId%>" 
679                    title="<%=name%>" 
680                    <%=selectedItemId == itemId ? "checked" : ""%>
681                  ></tbl:header>
682                <tbl:header 
683                  clazz="icons" 
684                  visible="<%=mode.hasIcons()%>"
685                  ><base:icon 
686                    image="deleted.png"
687                    onclick="<%=deletePermission ? deletePermanently : null%>"
688                    tooltip="This item has been scheduled for deletion" 
689                    visible="<%=item.isRemoved()%>"
690                  /><base:icon 
691                    image="shared.png" 
692                    onclick="<%=sharePermission ? openSharePopup : null%>"
693                    tooltip="This item is shared to other users, groups and/or projects" 
694                    visible="<%=item.isShared()%>"
695                  />&nbsp;</tbl:header>
696                <tbl:cell column="name"><div class="link" 
697                  onclick="itemOnClick(<%=writePermission ? "event" : null%>, <%=itemId%>)" 
698                  title="<%=tooltip%>"><%=name%></div></tbl:cell>
699                <tbl:cell column="id"><%=item.getId()%></tbl:cell>
700                <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
701                <tbl:cell column="spots"><%=item.getNumDbSpots()%></tbl:cell>
702                <tbl:cell column="numFileSpots"><%=item.getNumFileSpots()%></tbl:cell>
703                <tbl:cell column="bytes"><%=Values.formatBytes(item.getBytes())%></tbl:cell>
704                <tbl:cell column="platform"
705                  ><base:propertyvalue 
706                    item="<%=item%>" 
707                    property="platform"
708                    enableEditLink="<%=mode.hasEditLink()%>" 
709                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
710                  /></tbl:cell>
711                <tbl:cell column="variant"
712                  ><base:propertyvalue 
713                    item="<%=item%>" 
714                    property="variant"
715                    enableEditLink="<%=mode.hasEditLink()%>" 
716                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
717                  /></tbl:cell>               
718                <tbl:cell column="rawDataType"><%=HTML.encodeTags(item.getRawDataType().getName())%></tbl:cell>
719                <tbl:cell column="hasData"><%=item.hasData()%></tbl:cell>
720                <tbl:cell column="parentBioAssay"
721                  ><base:propertyvalue 
722                    item="<%=item%>" 
723                    property="parentBioAssay"
724                    enableEditLink="<%=mode.hasEditLink()%>" 
725                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
726                  /></tbl:cell>
727                <tbl:cell column="parentExtract"
728                  ><base:propertyvalue 
729                    item="<%=item%>" 
730                    property="parentExtract"
731                    enableEditLink="<%=mode.hasEditLink()%>" 
732                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
733                  /></tbl:cell>
734                <tbl:cell column="software"
735                  ><base:propertyvalue 
736                    item="<%=item%>" 
737                    property="software"
738                    enableEditLink="<%=mode.hasEditLink()%>" 
739                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
740                  /></tbl:cell>
741                <tbl:cell column="protocol"
742                  ><base:propertyvalue 
743                    item="<%=item%>" 
744                    property="protocol"
745                    enableEditLink="<%=mode.hasEditLink()%>" 
746                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
747                  /></tbl:cell>
748                <tbl:cell column="arrayDesign"
749                  ><base:propertyvalue 
750                    item="<%=item%>" 
751                    property="arrayDesign"
752                    enableEditLink="<%=mode.hasEditLink()%>" 
753                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
754                  /></tbl:cell>
755                <tbl:cell column="plugin">
756                  <base:propertyvalue 
757                    item="<%=item%>"
758                    property="job.pluginDefinition" 
759                    enableEditLink="<%=mode.hasEditLink()%>" 
760                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
761                    />
762                </tbl:cell>
763                <tbl:cell column="configuration">
764                  <base:propertyvalue 
765                    item="<%=item%>"
766                    property="job.pluginConfiguration" 
767                    enableEditLink="<%=mode.hasEditLink()%>" 
768                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
769                  />
770                </tbl:cell>
771                <tbl:cell 
772                  column="importdate" 
773                  value="<%=job == null ? null : job.getEnded() %>" 
774                />
775                <tbl:cell column="files">
776                  <% 
777                  if (item.hasFileSet())
778                  {
779                    for (FileSetMember member : item.getFileSet().getMembers().list(dc))
780                    {
781                      try
782                      {
783                        %>
784                        <%=Base.getLinkedFile(ID, member.getFile(), false, true, true, root) %><br>
785                        <%
786                      }
787                      catch (PermissionDeniedException ex)
788                      {}
789                    }
790                  }
791                  else
792                  {
793                    %>
794                    <i>- none -</i>
795                    <%
796                  }
797                  %>
798                </tbl:cell>
799                <tbl:cell column="experiments">
800                  <%
801                  experimentQuery.setParameter("rawBioAssay", itemId, Type.INT);
802                  try
803                  {
804                    String separator = "";
805                    for (Experiment e : experimentQuery.list(dc))
806                    {
807                      out.write(separator);
808                      if (mode.hasPropertyLink())
809                      {
810                        out.write(Base.getLinkedName(ID, e, false, mode.hasEditLink()));
811                      }
812                      else
813                      {
814                        out.write(HTML.encodeTags(e.getName()));
815                      }
816                      separator = ", ";
817                    }
818                  }
819                  catch (Throwable t)
820                  {
821                    %>
822                    <div class="error"><%=t.getMessage()%></div>
823                    <%
824                  }
825                  %>
826                </tbl:cell>
827                <tbl:cell column="owner"
828                  ><base:propertyvalue 
829                    item="<%=item%>" 
830                    property="owner"
831                    enableEditLink="<%=mode.hasEditLink()%>" 
832                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
833                  /></tbl:cell>
834                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
835                <%
836                AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
837                if (as != null)
838                {
839                  for (AnnotationType at : annotationTypes)
840                  {
841                    if (as.hasAnnotation(at))
842                    {
843                      Annotation a = as.getAnnotation(at);
844                      String suffix = a.getUnitSymbol(null);
845                      if (suffix != null) suffix = "&nbsp;" + suffix;
846                      %>
847                      <tbl:cell 
848                        column="<%="at"+at.getId()%>"
849                        ><tbl:cellvalue 
850                          list="<%=a.getValues(null)%>"
851                          suffix="<%=suffix%>"
852                      /></tbl:cell>
853                      <%
854                    }
855                  }
856                }
857                %>
858                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
859                <tbl:cell column="sharedTo">
860                  <%
861                  Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
862                  while(sharees.hasNext())
863                  {
864                    Nameable n = sharees.next();
865                    if (mode.hasPropertyLink())
866                    {
867                      out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
868                    }
869                    else
870                    {
871                      out.write(HTML.encodeTags(n.getName()));
872                    }
873                    out.write(sharees.hasNext() ? ", " : "");
874                  }
875                  %>
876                </tbl:cell>
877              </tbl:row>
878              <%
879              }
880            }
881          %>
882          </tbl:rows>
883      </tbl:data>
884      <%
885      if (numListed == 0)
886      {
887        %>
888        <tbl:panel><%=rawBioAssays == null || rawBioAssays.getTotalCount() == 0 ? "No raw bioassays were found" : "No raw bioassays on this page. Please select another page!" %></tbl:panel>
889        <%
890      }
891      else
892      {
893        %>
894        <tbl:navigator
895          page="<%=cc.getPage()%>" 
896          rowsperpage="<%=cc.getRowsPerPage()%>" 
897          totalrows="<%=rawBioAssays == null ? 0 : rawBioAssays.getTotalCount()%>" 
898          visible="<%=mode.hasNavigator()%>"
899          locked="true"
900        />
901        <%
902      }
903      %>
904    </tbl:table>
905    <base:buttongroup subclass="dialogbuttons">
906      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
907      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
908      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
909    </base:buttongroup>
910   
911  </base:body>
912  </base:page>
913  <%
914}
915finally
916{
917  if (rawBioAssays != null) rawBioAssays.close();
918  if (dc != null) dc.close();
919}
920%>
Note: See TracBrowser for help on using the repository browser.