source: trunk/www/views/rawbioassays/rawdata/view_rawdata.jsp @ 6520

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

Merge changes between 3.3-beta-2 and 3.3.0 to trunk.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 12.2 KB
Line 
1<%-- $Id: view_rawdata.jsp 6520 2014-08-18 11:29:37Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg
4  Copyright (C) 2007 Nicklas Nordborg
5
6  This file is part of BASE - BioArray Software Environment.
7  Available at http://base.thep.lu.se/
8
9  BASE is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License
11  as published by the Free Software Foundation; either version 3
12  of the License, or (at your option) any later version.
13
14  BASE is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with BASE. If not, see <http://www.gnu.org/licenses/>.
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.SystemItems"
30  import="net.sf.basedb.core.Item"
31  import="net.sf.basedb.core.ItemContext"
32  import="net.sf.basedb.core.Permission"
33  import="net.sf.basedb.core.ExtendedProperties"
34  import="net.sf.basedb.core.ExtendedProperty"
35  import="net.sf.basedb.core.RawDataProperty"
36  import="net.sf.basedb.core.RawBioAssay"
37  import="net.sf.basedb.core.RawDataType"
38  import="net.sf.basedb.core.ReporterType"
39  import="net.sf.basedb.core.Reporter"
40  import="net.sf.basedb.core.Feature"
41  import="net.sf.basedb.core.Well"
42  import="net.sf.basedb.core.Plate"
43  import="net.sf.basedb.core.ArrayDesignBlock"
44  import="net.sf.basedb.core.PermissionDeniedException"
45  import="net.sf.basedb.core.PluginDefinition"
46  import="net.sf.basedb.core.data.RawData"
47  import="net.sf.basedb.core.data.ReporterData"
48  import="net.sf.basedb.core.data.FeatureData"
49  import="net.sf.basedb.core.plugin.GuiContext"
50  import="net.sf.basedb.core.plugin.Plugin"
51  import="net.sf.basedb.clients.web.Base"
52  import="net.sf.basedb.clients.web.util.HTML"
53  import="net.sf.basedb.util.Values"
54  import="net.sf.basedb.util.formatter.Formatter"
55  import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
56  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
57  import="java.util.Date"
58  import="java.util.Map"
59  import="java.util.Set"
60  import="java.util.List"
61%>
62<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
63<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
64<%!
65  private static final Item itemType = Item.RAWDATA;
66  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
67%>
68<%
69final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
70final String ID = sc.getId();
71final int rawBioAssayId = Values.getInt(request.getParameter("rawbioassay_id"));
72final float scale = Base.getScale(sc);
73final DbControl dc = sc.newDbControl();
74try
75{
76  final RawBioAssay rawBioAssay = RawBioAssay.getById(dc, rawBioAssayId);
77  final RawDataType rawDataType = rawBioAssay.getRawDataType();
78  final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, rawDataType.getId(), null, null);
79  final int itemId = cc.getId();
80  final boolean hasSpotImages = rawBioAssay.hasSpotImages(); 
81 
82  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
83
84  final RawData rawData = rawBioAssay.getRawDataById(itemId, true);
85  String title = "Raw data of "+HTML.encodeTags(rawBioAssay.getName()) + " at position " + rawData.getPosition();
86 
87  final ReporterData reporter = rawData.getReporter();
88  final FeatureData feature = rawData.getFeature();
89  Formatter<Date> dateFormatter = FormatterFactory.getDateTimeFormatter(sc);
90  WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
91  WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
92  %>
93  <base:page title="<%=title%>" type="popup" id="view-page">
94  <base:head scripts="tabcontrol-2.js,~rawdata.js" styles="tabcontrol.css" />
95  <base:body data-read-only="1">
96    <h1><%=title%></h1>
97 
98    <t:tabcontrol id="rawdata" 
99      subclass="content dialogtabcontrol"
100      position="bottom">
101    <t:tab id="raw" title="Raw data">
102   
103      <table class="fullform outlined larger">
104      <tbody class="sectionheader">
105        <tr>
106          <th colspan="4">Common rawdata properties</th>
107        </tr>
108      </tbody>
109      <tbody>
110      <tr>
111        <th>Position</th>
112        <td><%=rawData.getPosition()%></td>
113        <th class="leftborder">Block</th>
114        <td><%=rawData.getBlock()%></td>
115      </tr>
116      <tr>
117        <th>Row</th>
118        <td><%=rawData.getRow()%></td>
119        <th class="leftborder">Column</th>
120        <td><%=rawData.getColumn()%></td>
121      </tr>
122      <tr>
123        <th>Meta grid X</th>
124        <td><%=rawData.getMetaGridX()%></td>
125        <th class="leftborder">Meta grid Y</th>
126        <td><%=rawData.getMetaGridY()%></td>
127      </tr>
128      <tr>
129        <th>X</th>
130        <td><%=rawData.getX()%></td>
131        <th class="leftborder">Y</th>
132        <td><%=rawData.getY()%></td>
133      </tr>
134      <tr>
135        <th>Reporter</th>
136        <td><%=reporter == null ? "<i>- none -</i>" : HTML.encodeTags(reporter.getName())%></td>
137        <th class="leftborder">Feature</th>
138        <td><%=feature == null ? "<i>- none -</i>" : feature.getId()%></td>
139      </tr>
140      <tr>
141        <th>Spot image</th>
142        <td>
143          <%
144          if (hasSpotImages)
145          {
146            %>
147            <img class="spotimage" src="spotimage/<%=ID%>/<%=rawBioAssay.getId()%>/<%=itemId%>/spot<%=rawData.getPosition()%>.png">
148            <%
149          }
150          else
151          {
152            %>
153            <i>- none -</i>
154            <%
155          }
156          %>
157        </td>
158        <th class="leftborder"></th>
159        <td></td>
160      </tr>
161      </tbody>
162     
163      <tbody class="sectionheader">
164        <tr>
165          <th colspan="4"><%=rawDataType.getName()%> properties</th>
166        </tr>
167      </tbody>
168     
169      <tbody>
170          <%
171          boolean needsTr = true;
172          for (RawDataProperty rawProperty : rawDataType.getProperties())
173          {
174            String name = rawProperty.getName();
175            Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, rawProperty);
176            String value = f.format(rawData.getExtended(name));
177            title = Values.trimString(rawProperty.getTitle(), 25);
178            %>
179              <%=needsTr ? "<tr><th>" : "<th class=\"leftborder\">" %>
180              <span 
181                title="<%=HTML.encodeTags(rawProperty.getDescription())%>"><%=HTML.encodeTags(title)%></span>
182              </th>
183              <td><%=value%></td>
184              <%=needsTr ? "" : "</tr>"%>
185            <%
186            needsTr = !needsTr;
187          }
188          %>
189          <%=needsTr ? "" : "<th class=\"leftborder\"></th><td></td></tr>"%>
190        <tr class="dynamic">
191          <th></th>
192          <td></td>
193          <th class="leftborder"></th>
194          <td></td>
195        </tr>
196      </tbody>     
197      </table>
198   
199    </t:tab>
200   
201    <%
202    if (reporter != null)
203    {
204      boolean readCurrentReporterType = true;
205      ReporterType currentReporterType = null;
206      try
207      {
208        currentReporterType = Reporter.getReporterType(dc, reporter);
209      }
210      catch (PermissionDeniedException ex)
211      {
212        readCurrentReporterType = false;
213      }
214      %>
215      <t:tab id="reporter" title="Reporter" >
216        <table class="fullform outlined">
217        <tbody class="sectionheader">
218          <tr>
219            <th colspan="4">Common reporter properties</th>
220          </tr>
221        </tbody>
222        <tbody>
223       
224        <tr>
225          <th>Name</th>
226          <td><%=HTML.encodeTags(reporter.getName())%></td>
227          <th class="leftborder">External ID</th>
228          <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
229        </tr>
230        <tr>
231          <th>Gene symbol</th>
232          <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
233          <th class="leftborder">Type</th>
234          <td><%=Base.getEncodedName(currentReporterType, !readCurrentReporterType)%></td>
235        </tr>
236        <tr>
237          <th>Last update</th>
238          <td><%=dateFormatter.format(reporter.getLastUpdate())%></td>
239          <th class="leftborder">from/by</th>
240          <td><%=reporter.getLastSource() %></td>
241        </tr>
242        <tr>
243          <th>Description</th>
244          <td colspan="3"><%=HTML.niceFormat(reporter.getDescription())%></td>
245        </tr>
246        </tbody>
247       
248        <tbody class="sectionheader">
249          <tr>
250            <th colspan="4">Extended reporter properties</th>
251          </tr>
252        </tbody>
253        <tbody>
254            <%
255            List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
256            if (reporterProperties != null)
257            {
258              boolean needsTr = true;
259              for (ExtendedProperty ep : reporterProperties)
260              {
261                String name = ep.getName();
262                Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
263                String value = f.format(reporter.getExtended(name));
264                %>
265                  <%=needsTr ? "<tr><th>" : "<th class=\"leftborder\">" %>
266                  <%=HTML.encodeTags(ep.getTitle())%></th>
267                  <td><%=value%></td>
268                  <%=needsTr ? "" : "</tr>"%>
269                <%
270                needsTr = !needsTr;
271              }
272              %>
273              <%=needsTr ? "" : "<th class=\"leftborder\"></th><td></td></tr>"%>
274              <%
275            }
276            %>
277          <tr class="dynamic">
278            <th></th>
279            <td></td>
280            <th class="leftborder"></th>
281            <td></td>
282          </tr>
283        </tbody>
284        </table>
285      </t:tab>
286      <%
287    }
288    %>
289    <%
290    if (feature != null)
291    {
292      ArrayDesignBlock block = null;
293      boolean readBlock = true;
294      try
295      {
296        block = Feature.getArrayDesignBlock(dc, feature);
297      }
298      catch (PermissionDeniedException ex)
299      {
300        readBlock = false;
301      }
302     
303      Well well = null;
304      boolean readWell = true;
305      try
306      {
307        well = Feature.getWell(dc, feature);
308      }
309      catch (PermissionDeniedException ex)
310      {
311        readWell = false;
312      }
313      %>
314      <t:tab id="feature" title="Feature / well" >
315      <table class="fullform outlined">
316        <tbody class="sectionheader">
317          <tr>
318            <th colspan="6">Feature</th>
319          </tr>
320        </tbody>
321        <tbody>
322          <tr>
323            <th>Position</th>
324            <td><%=feature.getPosition()%></td>
325            <th class="leftborder">Meta grid X</th>
326            <td><%=readBlock ? Integer.toString(block.getMetaGridX()) : "<i>- denied -</i>"%></td>
327            <th class="leftborder">Meta grid Y</th>
328            <td><%=readBlock ? Integer.toString(block.getMetaGridY()) : "<i>- denied -</i>"%></td>
329          </tr>
330          <tr>
331            <th>Feature ID</th>
332            <td><%=feature.getExternalId() %></td>
333            <th class="leftborder">Block size X</th>
334            <td><%=readBlock ? Integer.toString(block.getBlockSizeX()) : "<i>- denied -</i>"%></td>
335            <th class="leftborder">Block size Y</th>
336            <td><%=readBlock ? Integer.toString(block.getBlockSizeY()) : "<i>- denied -</i>"%></td>
337          </tr>
338          <tr>
339            <th>Block number</th>
340            <td><%=block.getBlockNumber()%></td>
341            <th class="leftborder">Origin X</th>
342            <td><%=readBlock ? Integer.toString(block.getOriginX()) : "<i>- denied -</i>"%></td>
343            <th class="leftborder">Origin Y</th>
344            <td><%=readBlock ? Integer.toString(block.getOriginY()) : "<i>- denied -</i>"%></td>
345          </tr>
346          <tr>
347            <th>Row</th>
348            <td><%=feature.getRow()%></td>
349            <th class="leftborder">Spacing X</th>
350            <td><%=readBlock ? Integer.toString(block.getSpacingX()) : "<i>- denied -</i>"%></td>
351            <th class="leftborder">Spacing Y</th>
352            <td><%=readBlock ? Integer.toString(block.getSpacingY()) : "<i>- denied -</i>"%></td>
353          </tr>
354          <tr>
355            <th>Column</th>
356            <td><%=feature.getColumn()%></td>
357            <th class="leftborder"></th>
358            <td></td>
359            <th class="leftborder"></th>
360            <td></td>
361          </tr>
362        </tbody>
363       
364        <tbody class="sectionheader">
365          <tr>
366            <th colspan="6">Plate position</th>
367          </tr>
368        </tbody>
369       
370        <tbody>
371          <%
372          if (!readWell)
373          {
374            %>
375            <tr>
376              <th>Plate</th>
377              <td colspan="5"><i>- denied -</i></td>
378            </tr>
379            <%
380          }
381          else if (well == null)
382          {
383            %>
384            <tr>
385              <th>Plate</th>
386              <td colspan="5"><i>- none -</i></td>
387            </tr>
388            <%
389          }
390          else
391          {
392            Plate plate = well.getPlate();
393            %>
394            <tr>
395              <th>Plate</th>
396              <td colspan="5"><%=HTML.encodeTags(plate.getName())%></td>
397            </tr>
398            <tr>
399              <th>Well</th>
400              <td colspan="5"><%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%></td>
401            </tr>
402            <%
403          }
404          %>
405          <tr class="dynamic">
406            <th></th>
407            <td colspan="5"></td>
408          </tr>
409        </tbody>
410      </table>
411      </t:tab>
412      <%
413    }
414    %>
415    </t:tabcontrol>
416
417    <base:buttongroup subclass="dialogbuttons">
418      <base:button id="close" title="Close" />
419    </base:buttongroup>
420   
421  </base:body>
422  </base:page>
423  <%
424}
425finally
426{
427  if (dc != null) dc.close();
428}
429
430%>
Note: See TracBrowser for help on using the repository browser.