source: trunk/www/views/experiments/bioassays/view_bioassay.jsp @ 7604

Last change on this file since 7604 was 7604, checked in by Nicklas Nordborg, 3 years ago

References #2151: Pre-compile all JSP pages before releases

Getting rid of rawtypes warnings. Most of them are relatively simple by adding a type parameter.

Utility functions that are used with generics are typically a bit harder.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 12.7 KB
Line 
1<%-- $Id: view_bioassay.jsp 7604 2019-02-25 12:19:50Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
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  @author Nicklas
24  @version 2.0
25--%>
26<%@ page pageEncoding="UTF-8" session="false"
27  import="net.sf.basedb.core.SessionControl"
28  import="net.sf.basedb.core.DbControl"
29  import="net.sf.basedb.core.Item"
30  import="net.sf.basedb.core.ItemContext"
31  import="net.sf.basedb.core.Permission"
32  import="net.sf.basedb.core.Experiment"
33  import="net.sf.basedb.core.BioAssaySet"
34  import="net.sf.basedb.core.BioAssay"
35  import="net.sf.basedb.core.RawBioAssay"
36  import="net.sf.basedb.core.RootRawBioAssay"
37  import="net.sf.basedb.core.Unit"
38  import="net.sf.basedb.core.Annotatable"
39  import="net.sf.basedb.core.AnnotationSet"
40  import="net.sf.basedb.core.AnnotationType"
41  import="net.sf.basedb.core.Annotation"
42  import="net.sf.basedb.core.ItemQuery"
43  import="net.sf.basedb.core.ItemResultList"
44  import="net.sf.basedb.core.Include"
45  import="net.sf.basedb.core.BaseException"
46  import="net.sf.basedb.core.PluginDefinition"
47  import="net.sf.basedb.core.plugin.GuiContext"
48  import="net.sf.basedb.core.plugin.Plugin"
49  import="net.sf.basedb.core.query.Orders"
50  import="net.sf.basedb.core.query.Hql"
51  import="net.sf.basedb.core.snapshot.SnapshotManager"
52  import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
53  import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
54  import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
55  import="net.sf.basedb.util.formatter.Formatter"
56  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
57  import="net.sf.basedb.clients.web.Base"
58  import="net.sf.basedb.clients.web.PermissionUtil"
59  import="net.sf.basedb.clients.web.util.HTML"
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.ButtonAction" 
64  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
65  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
66  import="net.sf.basedb.util.Values"
67  import="java.util.Map"
68  import="java.util.List"
69  import="java.util.HashMap"
70  import="java.util.LinkedList"
71%>
72<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
73<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
74<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
75<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
76<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
77<%!
78  private static final Item itemType = Item.BIOASSAY;
79  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
80%>
81<%
82final Item itemType = Item.BIOASSAY;
83final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
84final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
85final int itemId = cc.getId();
86final String ID = sc.getId();
87final float scale = Base.getScale(sc);
88final String tabId = Values.getString(request.getParameter("tab"), "properties");
89final DbControl dc = sc.newDbControl();
90try
91{
92  BioAssay bioAssay = BioAssay.getById(dc, itemId);
93  final boolean hasDbSpots = bioAssay.getNumSpots() > 0;
94  BioAssaySet bioAssaySet = bioAssay.getBioAssaySet();
95  Experiment experiment = bioAssay.getExperiment();
96  String title = null;
97  final boolean writePermission = bioAssay.hasPermission(Permission.WRITE);
98  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
99  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioAssay);
100  ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
101  %>
102  <base:page title="<%=title%>" id="view-page">
103  <base:head scripts="table.js,tabcontrol-2.js,~bioassays.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
104    <ext:scripts context="<%=jspContext%>" />
105    <ext:stylesheets context="<%=jspContext%>" />
106  </base:head>
107  <base:body>
108    <p:path><p:pathelement 
109      title="Experiments" href="<%="../index.jsp?ID="+ID%>" 
110      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>" 
111        href="<%="../bioassaysets/index.jsp?ID="+ID+"&amp;experiment_id="+experiment.getId()%>"
112      /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>" 
113        href="<%="index.jsp?ID="+ID+"&amp;bioassayset_id="+bioAssaySet.getId()%>" 
114      /><p:pathelement title="<%=HTML.encodeTags(bioAssay.getName())%>"
115      /></p:path>
116    <div id="page-data" data-item-id="<%=itemId%>"></div>
117
118    <t:tabcontrol 
119      id="main" 
120      subclass="content mastertabcontrol"
121      active="<%=tabId%>">
122    <t:tab id="properties" title="Properties">
123      <div>
124      <table class="fullform bottomborder">
125      <tr>
126        <th class="itemstatus">
127        </th>
128        <td style="padding: 0px;">
129          <tbl:toolbar subclass="bottomborder bg-filled-50">
130            <tbl:button 
131              id="btnEdit"
132              disabled="<%=!writePermission%>" 
133              image="edit.png" 
134              title="Edit&hellip;" 
135              tooltip="<%=writePermission ? "Edit this bioassay" : "You do not have permission to edit this bioassay"%>" 
136            />
137            <tbl:button 
138              id="btnImport"
139              image="import.png" 
140              data-plugin-type="IMPORT" 
141              title="Import&hellip;" 
142              tooltip="Import data" 
143              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
144            />
145            <tbl:button 
146              id="btnExport"
147              image="export.png"
148              data-plugin-type="EXPORT" 
149              title="Export&hellip;" 
150              tooltip="Export data" 
151              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
152            />
153            <tbl:button 
154              id="btnRunPlugin"
155              image="runplugin.png" 
156              data-plugin-type="OTHER" 
157              title="Run plugin&hellip;" 
158              tooltip="Run a plugin" 
159              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
160            />
161            <tbl:button
162              id="btnPlotter"
163              image="plotter.png"
164              title="Plot tool&hellip;"
165              tooltip="A simple tool for generating plots"
166              visible="<%=hasDbSpots%>"
167            />
168            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
169              wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
170            <tbl:button
171              image="help.png"
172              subclass="auto-init"
173              data-auto-init="help"
174              data-help-id="bioassay.view.properties"
175              title="Help&hellip;"
176              tooltip="Get help about this page"
177            />
178          </tbl:toolbar>
179        </td>
180      </tr>
181      <tr>
182        <th>Name</th>
183        <td><%=HTML.encodeTags(bioAssay.getName())%></td>
184      </tr>
185      <tr>
186        <th>Spots</th>
187        <td>db: <%=bioAssay.getNumSpots()%>; file: <%=bioAssay.getNumFileSpots()%></td>
188      </tr>
189      <tr >
190        <th>Description</th>
191        <td><%=HTML.encodeTags(bioAssay.getDescription())%></td>
192      </tr>
193      </table>
194      </div>
195
196      <jsp:include page="../../../common/datafiles/list_files.jsp">
197        <jsp:param name="item_type" value="BIOASSAYSET" />
198        <jsp:param name="item_id" value="<%=bioAssaySet.getId()%>" />
199        <jsp:param name="ID" value="<%=ID%>" />
200      </jsp:include>
201   
202      <%
203      ItemQuery<RootRawBioAssay> rawQuery = bioAssay.getRootRawBioAssays();
204      rawQuery.include(Include.MINE, Include.SHARED, Include.OTHERS, Include.IN_PROJECT);
205      rawQuery.order(Orders.asc(Hql.property("rawBioAssay.name")));
206      ItemResultList<RootRawBioAssay> rawBioAssays = rawQuery.list(dc);
207      %>
208      <base:section
209        id="rawBioAssaySection"
210        title="<%="Root raw bioassays (" + rawBioAssays.size() + ")"%>"
211        context="<%=cc%>"
212        >
213        <%
214        if (rawBioAssays.size() == 0)
215        {
216          %>
217          <div class="messagecontainer note">
218          No raw bioassays are linked to this bioassay
219          (or, you don't have permission to view them).
220          </div>
221          <%
222        }
223        else
224        {
225          %>
226          <tbl:table
227            id="rawBioAssays"
228            columns="all"
229            >
230            <tbl:columndef 
231              id="name"
232              title="Name"
233            />
234            <tbl:columndef
235              id="spots"
236              title="Spots"
237            />
238            <tbl:columndef 
239              id="description"
240              title="Description"
241            />
242            <%
243            ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
244            efQuery.include(Include.ALL);
245            efQuery.order(Orders.asc(Hql.property("name")));
246            ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
247            for (AnnotationType at : experimentalFactors)
248            {
249              Formatter<?> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
250              %>
251              <tbl:columndef
252                id="<%="at"+at.getId()%>"
253                title="<%=HTML.encodeTags(at.getName())%>"
254                formatter="<%=formatter%>"
255              />
256              <%
257            }
258            %>
259            <tbl:data>
260              <tbl:headers>
261                <tbl:headerrow>
262                  <tbl:columnheaders />
263                </tbl:headerrow>
264              </tbl:headers>
265              <tbl:rows>
266              <%
267              SnapshotManager manager = new SnapshotManager();
268              AnnotationTypeFilter annotationTypeFilter = new AnnotationTypeFilter();
269              for (RootRawBioAssay item : rawBioAssays)
270              {
271                RawBioAssay rba = item.getRawBioAssay();
272                AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
273                AnnotationSetSnapshot snapshot = as == null ? null : manager.getSnapshot(dc, as.getId());
274                %>
275                <tbl:row>
276                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
277                  <tbl:cell column="spots"><%=rba.getSpots()%></tbl:cell>
278                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
279                  <%
280                  for (AnnotationType at : experimentalFactors)
281                  {
282                    Unit unit = at.getDefaultUnit();
283                    String unitSymbol = unit == null ? "" : "&nbsp;" + unit.getDisplaySymbol();
284                   
285                    annotationTypeFilter.setAnnotationType(at);
286                    List<AnnotationSnapshot> all = snapshot == null ? 
287                        null : manager.findAnnotations(dc, snapshot, annotationTypeFilter, true);
288                    %>
289                    <tbl:cell column="<%="at"+at.getId()%>">
290                      <%
291                      if (all != null && all.size() > 0)
292                      {
293                        for (AnnotationSnapshot a : all)
294                        {
295                          boolean annotatePermission = a.hasPermission(dc, Permission.WRITE);
296                          List<?> values = a.getActualValues();
297                          boolean isUpToDate = a.isUpToDate();
298                          %>
299                          <tbl:cellvalue list="<%=values%>" suffix="<%=unitSymbol%>"/>
300                          <base:icon 
301                            subclass="link auto-init"
302                            data-auto-init="edit-experimental-factor"
303                            data-item-type="<%=a.getThisItemType().name()%>"
304                            data-item-id="<%=a.getThisItemId() %>"
305                            data-annotation-type="<%=at.getId() %>"
306                            data-annotation="<%=a.getThisAnnotationId()%>"
307                            visible="<%=annotatePermission%>"
308                            image="<%=isUpToDate ? "edit.png" : "edit-outofsync.png"%>" 
309                            tooltip="Modify the values of this experimental factor"
310                          />
311                          <%
312                        }
313                      }
314                      %>
315                    </tbl:cell>
316                    <%
317                  }
318                  %>
319                </tbl:row>
320                <%
321              }
322              %>
323              </tbl:rows>
324            </tbl:data>
325          </tbl:table>
326          <%
327        }
328        %>
329      </base:section>
330      <jsp:include page="../../../common/anytoany/list_anytoany.jsp">
331        <jsp:param name="ID" value="<%=ID%>" />
332        <jsp:param name="item_type" value="<%=itemType.name()%>" />
333        <jsp:param name="item_id" value="<%=itemId%>" />
334        <jsp:param name="title" value="Other items related to this bioassay" />
335      </jsp:include>
336    </t:tab>
337   
338    <t:tab id="annotations" title="Annotations" 
339      tooltip="View annotation values" clazz="white">
340      <jsp:include page="../../../common/annotations/list_frameset.jsp">
341        <jsp:param name="item_type" value="<%=itemType.name()%>" />
342        <jsp:param name="item_id" value="<%=itemId%>" />
343        <jsp:param name="ID" value="<%=ID%>" />
344      </jsp:include>
345    </t:tab>
346
347    <t:tab id="spotdata" title="Spot data" visible="<%=hasDbSpots%>">
348      <div class="bg-filled-50 absolutefull">
349        <table style="margin: auto; height: 100%;"><tr><td>
350        <b>Please wait. The spot data is loading...</b>
351        </td></tr></table>
352      </div>
353    </t:tab>
354    </t:tabcontrol>
355
356  </base:body>
357  </base:page>
358  <%
359}
360finally
361{
362  if (dc != null) dc.close();
363}
364%>
Note: See TracBrowser for help on using the repository browser.