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

Last change on this file since 4838 was 4838, checked in by Nicklas Nordborg, 14 years ago

Fixes #1242: Generate <img> tag for spot images with a class attribute

All spot images now have <img class="spotimage" ...>

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 11.5 KB
Line 
1<%-- $Id: view_rawdata.jsp 4838 2009-03-24 12:10:48Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Johan Enell, Jari Hakkinen, 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 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.clients.web.formatter.FormatterFactory"
56  import="java.util.Date"
57  import="java.util.Map"
58  import="java.util.Set"
59  import="java.util.List"
60%>
61<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
62<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
63<%!
64  private static final Item itemType = Item.RAWDATA;
65  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
66%>
67<%
68final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
69final String ID = sc.getId();
70final int rawBioAssayId = Values.getInt(request.getParameter("rawbioassay_id"));
71final float scale = Base.getScale(sc);
72final DbControl dc = sc.newDbControl();
73try
74{
75  final RawBioAssay rawBioAssay = RawBioAssay.getById(dc, rawBioAssayId);
76  final RawDataType rawDataType = rawBioAssay.getRawDataType();
77  final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, rawDataType.getId(), null, null);
78  final int itemId = cc.getId();
79  final boolean hasSpotImages = rawBioAssay.hasSpotImages(); 
80 
81  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
82
83  final RawData rawData = rawBioAssay.getRawDataById(itemId);
84  String title = "Raw data of "+HTML.encodeTags(rawBioAssay.getName()) + " at position " + rawData.getPosition();
85 
86  final ReporterData reporter = rawData.getReporter();
87  final FeatureData feature = rawData.getFeature();
88  Formatter<Date> dateFormatter = FormatterFactory.getDateTimeFormatter(sc);
89  %>
90  <base:page title="<%=title%>" type="popup">
91  <base:head scripts="tabcontrol.js" styles="tabcontrol.css">
92    <script language="JavaScript">
93    function runPlugin(cmd)
94    {
95      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 540, 460);
96    }
97    </script>
98  </base:head>
99  <base:body>
100    <p>
101    <h3 class="docked"><%=title%></h3>
102 
103    <t:tabcontrol id="rawdata" contentstyle="<%="height: "+(int)(scale*340)+"px;"%>" position="bottom">
104    <t:tab id="raw" title="Raw data">
105   
106      <table border="0" cellspacing="0" cellpadding="0">
107      <tr valign="top">
108      <td>
109        <table class="form" cellspacing=0>
110        <tr>
111          <td class="prompt">Position</td>
112          <td><%=rawData.getPosition()%></td>
113        </tr>
114        <tr>
115          <td class="prompt">Block</td>
116          <td><%=rawData.getBlock()%></td>
117        </tr>
118        <tr>
119          <td class="prompt">Row</td>
120          <td><%=rawData.getRow()%></td>
121        </tr>
122        <tr>
123          <td class="prompt">Column</td>
124          <td><%=rawData.getColumn()%></td>
125        </tr>
126        <tr>
127          <td class="prompt">Meta grid X</td>
128          <td><%=rawData.getMetaGridX()%></td>
129        </tr>
130        <tr>
131          <td class="prompt">Meta grid Y</td>
132          <td><%=rawData.getMetaGridY()%></td>
133        </tr>
134        <tr>
135          <td class="prompt">X</td>
136          <td><%=rawData.getX()%></td>
137        </tr>
138        <tr>
139          <td class="prompt">Y</td>
140          <td><%=rawData.getY()%></td>
141        </tr>
142        <%
143        if (reporter == null)
144        {
145          %>
146          <tr>
147            <td class="prompt">Reporter</td>
148            <td><i>- none -</i></td>
149          </tr>
150          <%
151        }
152        %>
153        <%
154        if (feature == null)
155        {
156          %>
157          <tr>
158            <td class="prompt">Feature / well</td>
159            <td><i>- none -</i></td>
160          </tr>
161          <%
162        }
163        %>
164        <tr valign="top">
165          <td class="prompt">Spot image</td>
166          <td>
167            <%
168            if (hasSpotImages)
169            {
170              %>
171              <img class="spotimage" src="spotimage/<%=ID%>/<%=rawBioAssay.getId()%>/<%=itemId%>/spot<%=rawData.getPosition()%>.png">
172              <%
173            }
174            else
175            {
176              %>
177              <i>- none -</i>
178              <%
179            }
180            %>
181          </td>
182        </tr>
183        </table>
184      </td>
185      <td>&nbsp;&nbsp;</td>
186      <td>
187        <table class="form" cellspacing=0>
188          <%
189          boolean needsTr = true;
190          for (RawDataProperty rawProperty : rawDataType.getProperties())
191          {
192            String name = rawProperty.getName();
193            Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, rawProperty);
194            String value = f.format(rawData.getExtended(name));
195            title = Values.trimString(rawProperty.getTitle(), 25);
196            %>
197              <%=needsTr ? "<tr valign=\"top\">" : "" %>
198              <td class="prompt"><span 
199                title="<%=HTML.encodeTags(rawProperty.getDescription())%>"><%=HTML.encodeTags(title)%></span>
200              </td>
201              <td><%=value%></td>
202              <td>&nbsp;&nbsp;</td>
203              <%=needsTr ? "" : "</tr>"%>
204            <%
205            needsTr = !needsTr;
206          }
207          %>
208          <%=needsTr ? "" : "</tr>"%>
209        </table>
210
211      </td>
212      </tr>
213      </table>
214     
215    </t:tab>
216   
217    <%
218    if (reporter != null)
219    {
220      boolean readCurrentReporterType = true;
221      ReporterType currentReporterType = null;
222      try
223      {
224        currentReporterType = Reporter.getReporterType(dc, reporter);
225      }
226      catch (PermissionDeniedException ex)
227      {
228        readCurrentReporterType = false;
229      }
230      %>
231      <t:tab id="reporter" title="Reporter" >
232        <table border="0" cellspacing="0" cellpadding="0">
233        <tr valign="top">
234        <td>
235          <table class="form" cellspacing=0>
236          <tr>
237            <td class="prompt">Name</td>
238            <td><%=HTML.encodeTags(reporter.getName())%></td>
239          </tr>
240          <tr>
241            <td class="prompt">External ID</td>
242            <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
243          </tr>
244          <tr>
245            <td class="prompt">Type</td>
246            <td><%=Base.getEncodedName(currentReporterType, !readCurrentReporterType)%></td>
247          </tr>
248          <tr>
249            <td class="prompt">Gene symbol</td>
250            <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
251          </tr>
252          <tr valign="top">
253            <td class="prompt">Description</td>
254            <td><%=HTML.niceFormat(reporter.getDescription())%></td>
255          </tr>
256          <tr>
257            <td class="prompt">Last update</td>
258            <td><%=dateFormatter.format(reporter.getLastUpdate())%></td>
259          </tr>
260          </table>
261        </td>
262        <td>&nbsp;&nbsp;</td>
263        <td>
264          <table class="form" cellspacing=0>
265            <%
266            List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
267            if (reporterProperties != null)
268            {
269              boolean needsTr = true;
270              for (ExtendedProperty ep : reporterProperties)
271              {
272                String name = ep.getName();
273                Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
274                String value = f.format(reporter.getExtended(name));
275                %>
276                  <%=needsTr ? "<tr valign=\"top\">" : "" %>
277                  <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
278                  <td><%=value%></td>
279                  <td>&nbsp;&nbsp;</td>
280                  <%=needsTr ? "" : "</tr>"%>
281                <%
282                needsTr = !needsTr;
283              }
284              %>
285              <%=needsTr ? "" : "</tr>"%>
286              <%
287            }
288            %>
289          </table>
290        </td>
291        </tr>
292        </table>
293      </t:tab>
294      <%
295    }
296    %>
297
298    <%
299    if (feature != null)
300    {
301      ArrayDesignBlock block = null;
302      boolean readBlock = true;
303      try
304      {
305        block = Feature.getArrayDesignBlock(dc, feature);
306      }
307      catch (PermissionDeniedException ex)
308      {
309        readBlock = false;
310      }
311     
312      Well well = null;
313      boolean readWell = true;
314      try
315      {
316        well = Feature.getWell(dc, feature);
317      }
318      catch (PermissionDeniedException ex)
319      {
320        readWell = false;
321      }
322      %>
323      <t:tab id="feature" title="Feature / well" >
324      <h4>Feature</h4>
325      <table class="form" cellspacing=0>
326      <tr>
327        <td class="prompt">Position</td>
328        <td><%=feature.getPosition()%></td>
329        <td>&nbsp;&nbsp;</td>
330        <td class="prompt">Meta grid X</td>
331        <td><%=readBlock ? Integer.toString(block.getMetaGridX()) : "<i>- denied -</i>"%></td>
332        <td>&nbsp;&nbsp;</td>
333        <td class="prompt">Meta grid Y</td>
334        <td><%=readBlock ? Integer.toString(block.getMetaGridY()) : "<i>- denied -</i>"%></td>
335      </tr>
336      <tr>
337        <td class="prompt">Row</td>
338        <td><%=feature.getRow()%></td>
339        <td>&nbsp;&nbsp;</td>
340        <td class="prompt">Block size X</td>
341        <td><%=readBlock ? Integer.toString(block.getBlockSizeX()) : "<i>- denied -</i>"%></td>
342        <td>&nbsp;&nbsp;</td>
343        <td class="prompt">Block size Y</td>
344        <td><%=readBlock ? Integer.toString(block.getBlockSizeY()) : "<i>- denied -</i>"%></td>
345      </tr>
346      <tr>
347        <td class="prompt">Column</td>
348        <td><%=feature.getColumn()%></td>
349        <td>&nbsp;&nbsp;</td>
350        <td class="prompt">Origin X</td>
351        <td><%=readBlock ? Integer.toString(block.getOriginX()) : "<i>- denied -</i>"%></td>
352        <td>&nbsp;&nbsp;</td>
353        <td class="prompt">Origin Y</td>
354        <td><%=readBlock ? Integer.toString(block.getOriginY()) : "<i>- denied -</i>"%></td>
355      </tr>
356      <tr>
357        <td class="prompt">Block number</td>
358        <td><%=block.getBlockNumber()%></td>
359        <td>&nbsp;&nbsp;</td>
360        <td class="prompt">Spacing X</td>
361        <td><%=readBlock ? Integer.toString(block.getSpacingX()) : "<i>- denied -</i>"%></td>
362        <td>&nbsp;&nbsp;</td>
363        <td class="prompt">Spacing Y</td>
364        <td><%=readBlock ? Integer.toString(block.getSpacingY()) : "<i>- denied -</i>"%></td>
365      </tr>
366      </table>
367     
368      <h4>Well</h4>
369      <%
370      if (!readWell)
371      {
372        %>
373        <i>- denied -</i>
374        <%
375      }
376      else if (well == null)
377      {
378        %>
379        <i>- none -</i>
380        <%
381      }
382      else
383      {
384        Plate plate = well.getPlate();
385        %>
386        <table class="form" cellspacing=0>
387        <tr>
388          <td class="prompt">Plate</td>
389          <td><%=HTML.encodeTags(plate.getName())%></td>
390        </tr>
391        <tr>
392          <td class="prompt">Row</td>
393          <td><%=well.getRow()%></td>
394        </tr>
395        <tr>
396          <td class="prompt">Column</td>
397          <td><%=well.getColumn()%></td>
398        </tr>
399        </table>
400        <%
401      }
402      %>
403      </t:tab>
404      <%
405    }
406    %>
407    </t:tabcontrol>
408
409    <div align="center">
410      <table>
411      <tr>
412      <td><base:button onclick="window.close()" title="Close" /></td>
413      </tr>
414      </table>
415    </div>
416   
417  </base:body>
418  </base:page>
419  <%
420}
421finally
422{
423  if (dc != null) dc.close();
424}
425
426%>
Note: See TracBrowser for help on using the repository browser.