source: branches/3.4-stable/www/views/rawbioassays/list_rawbioassays.jsp @ 6780

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

Fixes #1929: Add 'none' option in annotation filters

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