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