source: trunk/www/views/rawbioassays/rawdata/list_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: 26.4 KB
Line 
1<%-- $Id: list_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 Johan Enell, 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.Item"
30  import="net.sf.basedb.core.ItemContext"
31  import="net.sf.basedb.core.RawBioAssay"
32  import="net.sf.basedb.core.RawDataType"
33  import="net.sf.basedb.core.RawDataProperty"
34  import="net.sf.basedb.core.ReporterType"
35  import="net.sf.basedb.core.Feature"
36  import="net.sf.basedb.core.Reporter"
37  import="net.sf.basedb.core.ArrayDesignBlock"
38  import="net.sf.basedb.core.Well"
39  import="net.sf.basedb.core.ItemQuery"
40  import="net.sf.basedb.core.DataQuery"
41  import="net.sf.basedb.core.DataResultIterator"
42  import="net.sf.basedb.core.ItemResultList"
43  import="net.sf.basedb.core.Permission"
44  import="net.sf.basedb.core.PluginDefinition"
45  import="net.sf.basedb.core.ExtendedProperty"
46  import="net.sf.basedb.core.ExtendedProperties"
47  import="net.sf.basedb.core.PermissionDeniedException"
48  import="net.sf.basedb.core.data.RawData"
49  import="net.sf.basedb.core.data.ReporterData"
50  import="net.sf.basedb.core.data.FeatureData"
51  import="net.sf.basedb.core.query.Restrictions"
52  import="net.sf.basedb.core.query.Expressions"
53  import="net.sf.basedb.core.query.Orders"
54  import="net.sf.basedb.core.query.Hql"
55  import="net.sf.basedb.core.plugin.GuiContext"
56  import="net.sf.basedb.core.plugin.Plugin"
57  import="net.sf.basedb.clients.web.Base"
58  import="net.sf.basedb.clients.web.ModeInfo"
59  import="net.sf.basedb.clients.web.util.HTML"
60  import="net.sf.basedb.util.Values"
61  import="net.sf.basedb.util.Enumeration"
62  import="net.sf.basedb.util.formatter.Formatter"
63  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
64  import="java.util.List"
65  import="java.util.Map"
66  import="java.util.Date"
67%>
68<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
69<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
70<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
71<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
72<%!
73  private static final Item itemType = Item.RAWDATA;
74  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
75%>
76<%
77final int rawBioAssayId = Values.getInt(request.getParameter("rawbioassay_id"));
78final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
79final String ID = sc.getId();
80
81final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
82final String callback = request.getParameter("callback");
83final String title = mode.generateTitle("raw data", "raw data");
84final DbControl dc = sc.newDbControl();
85DataResultIterator<RawData> rawData = null;
86try
87{
88  RawBioAssay rawBioAssay = RawBioAssay.getById(dc, rawBioAssayId);
89  RawDataType rawDataType = rawBioAssay.getRawDataType();
90  final String subContext = rawDataType.getId();
91
92  final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, subContext, null, null);
93
94  final DataQuery<RawData> query = rawBioAssay.getRawData();
95  query.join(Hql.leftJoin(null, "reporter", "r", null, true));
96  query.join(Hql.leftJoin(null, "feature", "f", null, true));
97  query.join(Hql.leftJoin("f", "arrayDesignBlock", "b", null, true));
98  cc.configureQuery(dc, query, true);
99  if (!"row".equals(cc.getSortProperty())) query.order(Orders.asc(Hql.property("row")));
100  if (!"column".equals(cc.getSortProperty())) query.order(Orders.asc(Hql.property("column")));
101
102  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
103  final ItemQuery<ReporterType> typeQuery = ReporterType.getQuery();
104  typeQuery.order(Orders.asc(Hql.property("name")));
105  typeQuery.setCacheResult(true);
106  List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
107 
108  try
109  {
110    rawData = query.iterate(dc);
111  }
112  catch (Throwable t)
113  {
114    cc.setMessage(t.getMessage());
115  }
116  int numListed = 0;
117  final boolean writeReporterPermission = sc.hasPermission(Permission.WRITE, Item.REPORTER);
118  Formatter<Date> dateFormatter = FormatterFactory.getDateTimeFormatter(sc);
119  %>
120  <base:page title="<%=title%>">
121  <base:head scripts="table.js,tabcontrol.js" styles="table.css,headertabcontrol.css,path.css">
122    <script language="JavaScript">
123    var submitPage = 'index.jsp';
124    var formId = 'rawdata';
125    function viewItem(itemId)
126    {
127      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, false, '&rawbioassay_id=<%=rawBioAssayId%>');
128//      Main.openPopup('index.jsp?ID=<%=ID%>&rawbioassay_id=<%=rawBioAssayId%>&cmd=ViewItem&item_id='+itemId, 'ViewRawData', 700, 500);
129    }
130    function itemOnClick(evt, itemId)
131    {
132      viewItem(itemId);
133    }
134    function configureColumns()
135    {
136      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>', '<%=subContext%>');
137    }
138    function runPlugin(cmd)
139    {
140      Table.submitToPopup(formId, cmd, 700, 500);
141    }
142    function returnSelected()
143    {
144      Table.returnSelected(formId, <%=callback != null ? "window.opener."+callback : "null" %>);
145      window.close();
146    }
147    function presetOnChange()
148    {
149      Table.presetOnChange('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>', '<%=subContext%>');
150    }
151    function switchTab(tabControlId, tabId)
152    {
153      if (tabId == 'properties' || tabId == 'annotations' || tabId == 'overview')
154      {
155        location.href = '../index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=rawBioAssayId%>&tab='+tabId;
156      }
157      else
158      {
159        TabControl.setActiveTab(tabControlId, tabId);
160      }
161    }
162    function newReporterList()
163    {
164      Table.submitToPopup(formId, 'CreateReporterList', 540, 400);
165    }
166    </script>
167  </base:head>
168 
169  <base:body>
170    <p>
171    <p:path>
172      <p:pathelement title="Raw bioassays" href="<%="../index.jsp?ID="+ID%>" />
173      <p:pathelement title="<%=HTML.encodeTags(rawBioAssay.getName())%>" />
174    </p:path>
175   
176   
177    <t:tabcontrol id="main" active="rawdata" switch="switchTab">
178    <t:tab id="properties" title="Properties" />
179    <t:tab id="annotations" title="Annotations &amp; parameters" 
180      tooltip="View annotation values and protocol parameters" />
181   
182    <t:tab id="rawdata" title="Raw data">
183
184    <%
185    if (cc.getMessage() != null)
186    {
187      %>
188      <div class="error"><%=cc.getMessage()%></div>
189      <%
190      cc.setMessage(null);
191    }
192    %>
193    <tbl:table 
194      id="rawdata" 
195      clazz="itemlist" 
196      columns="<%=cc.getSetting("columns")%>"
197      sortby="<%=cc.getSortProperty()%>" 
198      direction="<%=cc.getSortDirection()%>"
199      title="<%=title%>"
200      action="index.jsp"
201      sc="<%=sc%>"
202      item="<%=itemType%>"
203      subcontext="<%=subContext%>"
204      >
205      <tbl:hidden 
206        name="mode" 
207        value="<%=mode.getName()%>" 
208      />
209      <tbl:hidden 
210        name="rawbioassay_id" 
211        value="<%=String.valueOf(rawBioAssayId)%>" 
212      />
213      <tbl:hidden 
214        name="callback" 
215        value="<%=callback%>" 
216        skip="<%=callback == null%>" 
217      />
218      <tbl:columndef 
219        id="position"
220        clazz="uniquecol"
221        property="position"
222        datatype="int"
223        title="[Raw] Position"
224        sortable="true" 
225        filterable="true"
226        exportable="true"
227        show="always" 
228      />
229      <tbl:columndef 
230        id="id"
231        clazz="uniquecol"
232        property="id"
233        datatype="int"
234        title="ID"
235        sortable="true"
236        filterable="true"
237        exportable="true"
238      />
239      <tbl:columndef 
240        id="block"
241        property="block"
242        datatype="int"
243        title="[Raw] Block"
244        sortable="true" 
245        filterable="true"
246        exportable="true"
247      />
248      <tbl:columndef 
249        id="metaGridX"
250        property="metaGridX"
251        datatype="int"
252        title="[Raw] Meta grid X"
253        sortable="true" 
254        filterable="true"
255        exportable="true"
256      />
257      <tbl:columndef 
258        id="metaGridY"
259        property="metaGridY"
260        datatype="int"
261        title="[Raw] Meta grid Y"
262        sortable="true" 
263        filterable="true"
264        exportable="true"
265      />
266      <tbl:columndef 
267        id="row"
268        property="row"
269        datatype="int"
270        title="[Raw] Row"
271        sortable="true" 
272        filterable="true"
273        exportable="true"
274      />
275      <tbl:columndef 
276        id="column"
277        property="column"
278        datatype="int"
279        title="[Raw] Column"
280        sortable="true" 
281        filterable="true"
282        exportable="true"
283      />
284      <tbl:columndef 
285        id="x"
286        property="x"
287        datatype="int"
288        title="[Raw] X"
289        sortable="true" 
290        filterable="true"
291        exportable="true"
292      />
293      <tbl:columndef 
294        id="y"
295        property="y"
296        datatype="int"
297        title="[Raw] Y"
298        sortable="true" 
299        filterable="true"
300        exportable="true"
301      />
302      <tbl:columndef 
303        id="spotImage"
304        title="Spot image"
305      />
306      <%
307      for (RawDataProperty rdp : rawBioAssay.getRawDataType().getProperties())
308      {
309        %>
310        <tbl:columndef
311          id="<%="raw."+rdp.getName()%>"
312          property="<%=rdp.getName()%>"
313          datatype="<%=rdp.getType().getStringValue()%>"
314          title="<%="[Raw] "+HTML.encodeTags(rdp.getTitle())%>"
315          sortable="true" 
316          filterable="true"
317          exportable="true"
318          formatter="<%=FormatterFactory.getExtendedPropertyFormatter(sc, rdp)%>"
319        />
320        <%
321      }
322      %>
323      <tbl:columndef
324        id="reporterList"
325        property="$r.£reporterListScores"
326        datatype="int"
327        title="[Rep] Reporter list"
328        filterable="true"
329        enumeration="<%=Base.getReporterListsEnum(dc)%>"
330        multiple="false"
331      />     
332      <tbl:columndef 
333        id="reporter.name"
334        property="reporter.name"
335        datatype="string"
336        title="[Rep] Name"
337        sortable="true" 
338        filterable="true"
339        exportable="true"
340      />
341      <tbl:columndef 
342        id="reporter.externalId"
343        clazz="uniquecol"
344        property="reporter.externalId"
345        datatype="string"
346        title="[Rep] ID"
347        sortable="true" 
348        filterable="true"
349        exportable="true"
350      />
351      <tbl:columndef 
352        id="reporter.symbol"
353        property="reporter.symbol"
354        datatype="string"
355        title="[Rep] Gene symbol"
356        sortable="true" 
357        filterable="true"
358        exportable="true"
359      />
360      <tbl:columndef 
361        id="reporter.description"
362        property="reporter.description"
363        datatype="string"
364        title="[Rep] Description" 
365        sortable="true" 
366        filterable="true" 
367        exportable="true"
368      />
369      <tbl:columndef 
370        id="reporter.lastUpdate"
371        property="reporter.lastUpdate"
372        datatype="date"
373        title="[Rep] Last update" 
374        sortable="true" 
375        filterable="true" 
376        exportable="true"
377        formatter="<%=dateFormatter%>"
378      />
379      <%
380      Enumeration<String, String> types = new Enumeration<String, String>();
381      ItemResultList<ReporterType> reporterTypes = typeQuery.list(dc);
382      types.add("", "- none -");
383      for (ReporterType rt : reporterTypes)
384      {
385        types.add(Integer.toString(rt.getId()), HTML.encodeTags(rt.getName()));
386      }
387      %>
388      <tbl:columndef 
389        id="reporter.reporterType"
390        property="reporter.reporterType"
391        sortproperty="reporter.reporterType.name"
392        exportproperty="reporter.reporterType.name"
393        datatype="int"
394        enumeration="<%=types%>"
395        title="[Rep] Type"
396        sortable="true" 
397        filterable="true"
398        exportable="true"
399      />
400      <%
401      if (reporterProperties != null)
402      {
403        for (ExtendedProperty ep : reporterProperties)
404        {
405          String name = ep.getName();
406          %>
407          <tbl:columndef
408            id="<%="reporter."+name%>"
409            property="<%="reporter."+name%>"
410            datatype="<%=ep.getType().getStringValue()%>"
411            title="<%="[Rep] "+HTML.encodeTags(ep.getTitle())%>"
412            sortable="true"
413            filterable="true"
414            exportable="true"
415            formatter="<%=FormatterFactory.getExtendedPropertyFormatter(sc, ep)%>"
416          />
417          <%
418        }
419      }
420      %>
421      <tbl:columndef 
422        id="feature.position"
423        clazz="uniquecol"
424        property="feature.position"
425        datatype="int"
426        title="[Feat] Position" 
427        sortable="true" 
428        filterable="true" 
429        exportable="true"
430      />
431      <tbl:columndef 
432        id="feature.externalId"
433        clazz="uniquecol"
434        property="feature.externalId"
435        datatype="string"
436        title="[Feat] Feature ID" 
437        sortable="true" 
438        filterable="true" 
439        exportable="true"
440      />
441      <tbl:columndef 
442        id="feature.block"
443        property="feature.block"
444        datatype="int"
445        title="[Feat] Block"
446        sortable="true" 
447        filterable="true"
448        exportable="true"
449      />
450      <tbl:columndef 
451        id="feature.metaGridX"
452        property="feature.arrayDesignBlock.metaGridX"
453        datatype="int"
454        title="[Feat] Meta grid X"
455        sortable="true" 
456        filterable="true"
457        exportable="true"
458      />
459      <tbl:columndef 
460        id="feature.metaGridY"
461        property="feature.arrayDesignBlock.metaGridY"
462        datatype="int"
463        title="[Feat] Meta grid Y"
464        sortable="true" 
465        filterable="true"
466        exportable="true"
467      />
468      <tbl:columndef 
469        id="feature.row"
470        property="feature.row"
471        datatype="int"
472        title="[Feat] Row"
473        sortable="true" 
474        filterable="true"
475        exportable="true"
476      />
477      <tbl:columndef 
478        id="feature.column"
479        property="feature.column"
480        datatype="int"
481        title="[Feat] Column"
482        sortable="true" 
483        filterable="true"
484        exportable="true"
485      />
486      <tbl:columndef 
487        id="feature.blockSizeX"
488        property="feature.arrayDesignBlock.blockSizeX"
489        datatype="int"
490        title="[Feat] Block size X"
491        sortable="true" 
492        filterable="true"
493        exportable="true"
494      />
495      <tbl:columndef 
496        id="feature.blockSizeY"
497        property="feature.arrayDesignBlock.blockSizeY"
498        datatype="int"
499        title="[Feat] Block size Y"
500        sortable="true" 
501        filterable="true"
502        exportable="true"
503      />
504      <tbl:columndef 
505        id="feature.originX"
506        property="feature.arrayDesignBlock.originX"
507        datatype="int"
508        title="[Feat] Origin X"
509        sortable="true" 
510        filterable="true"
511        exportable="true"
512      />
513      <tbl:columndef 
514        id="feature.originY"
515        property="feature.arrayDesignBlock.originY"
516        datatype="int"
517        title="[Feat] Origin Y"
518        sortable="true" 
519        filterable="true"
520        exportable="true"
521      />
522      <tbl:columndef 
523        id="feature.spacingX"
524        property="feature.arrayDesignBlock.spacingX"
525        datatype="int"
526        title="[Feat] Spacing X"
527        sortable="true" 
528        filterable="true"
529        exportable="true"
530      />
531      <tbl:columndef 
532        id="feature.spacingY"
533        property="feature.arrayDesignBlock.spacingY"
534        datatype="int"
535        title="[Feat] Spacing Y"
536        sortable="true" 
537        filterable="true"
538        exportable="true"
539      />
540      <tbl:columndef 
541        id="well.row"
542        property="feature.well.row"
543        datatype="int"
544        title="[Well] Row" 
545        sortable="true" 
546        filterable="true" 
547        exportable="true"
548      />
549      <tbl:columndef 
550        id="well.column"
551        property="feature.well.column"
552        datatype="int"
553        title="[Well] Column" 
554        sortable="true" 
555        filterable="true" 
556        exportable="true"
557      />
558      <tbl:columndef 
559        id="well.plate"
560        property="feature.well.plate.name"
561        datatype="string"
562        title="[Well] Plate" 
563        sortable="true" 
564        filterable="true" 
565        exportable="true"
566      />
567      <tbl:toolbar
568        visible="<%=mode.hasToolbar()%>"
569        >
570        <tbl:button 
571          image="columns.gif" 
572          onclick="configureColumns()" 
573          title="Columns&hellip;" 
574          tooltip="Show, hide and re-order columns" 
575        />
576        <tbl:button
577          image="add.png"
578          onclick="newReporterList()"
579          title="New reporter list&hellip;"
580          tooltip="Create a new reporter list from matching spots"
581          visible="<%=sc.hasPermission(Permission.CREATE, Item.REPORTERLIST)%>"
582        />
583        <tbl:button 
584          image="import.gif" 
585          onclick="runPlugin('ImportItems')" 
586          title="Import&hellip;" 
587          tooltip="Import data" 
588          visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
589        />
590        <tbl:button 
591          image="export.gif" 
592          onclick="runPlugin('ExportItems')" 
593          title="Export&hellip;" 
594          tooltip="Export data" 
595          visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
596        />
597        <tbl:button 
598          image="runplugin.gif" 
599          onclick="runPlugin('RunListPlugin')" 
600          title="Run plugin&hellip;" 
601          tooltip="Run a plugin" 
602          visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
603        />
604      </tbl:toolbar>
605      <tbl:navigator
606        page="<%=cc.getPage()%>" 
607        rowsperpage="<%=cc.getRowsPerPage()%>" 
608        totalrows="<%=rawData == null ? 0 : rawData.getTotalCount()%>" 
609        visible="<%=mode.hasNavigator()%>"
610      />
611      <tbl:data>
612        <tbl:columns>
613        <tbl:presetselector 
614          clazz="columnheader"
615          colspan="3"
616          onchange="presetOnChange()"
617        />
618        </tbl:columns>
619         
620        <tr>
621          <tbl:header 
622            clazz="index"
623            >&nbsp;</tbl:header>
624          <tbl:header 
625            clazz="check" 
626            visible="<%=mode.hasCheck()%>"
627            ><base:icon 
628              image="check_uncheck.gif" 
629              tooltip="Check/uncheck all" 
630              onclick="Forms.checkUncheck(document.forms[formId])" style="align: left;"
631            /></tbl:header>
632          <tbl:header 
633            clazz="check" 
634            visible="<%=mode.hasRadio()%>"
635            />
636          <tbl:header 
637            clazz="icons" 
638            visible="<%=mode.hasIcons()%>"
639            >&nbsp;</tbl:header>
640          <tbl:propertyfilter />
641        </tr>
642   
643          <tbl:rows>
644          <%
645          int index = cc.getPage()*cc.getRowsPerPage();
646          int selectedItemId = cc.getId();
647          boolean hasSpotImages = rawBioAssay.hasSpotImages();
648          if (rawData != null)
649          {
650            String tooltip = mode.isSelectionMode() ?
651              "Select this item" : "View this item";
652            while (rawData.hasNext())
653            {
654              RawData item = rawData.next();
655              int itemId = item.getId();
656              index++;
657              numListed++;
658              %>
659              <tbl:row>
660                <tbl:header 
661                  clazz="index"
662                  ><%=index%></tbl:header>
663                <tbl:header 
664                  clazz="check" 
665                  visible="<%=mode.hasCheck()%>"
666                  ><input 
667                      type="checkbox" 
668                      name="<%=itemId%>" 
669                      value="<%=itemId%>" 
670                      title="TODO" 
671                      <%=request.getParameter(Integer.toString(itemId)) == null ? "" : "checked"%> 
672                    ></tbl:header>
673                <tbl:header 
674                  clazz="check" 
675                  visible="<%=mode.hasRadio()%>"
676                  ><input 
677                      type="radio" 
678                      name="item_id" 
679                      value="<%=itemId%>" 
680                      title="TODO" 
681                      <%=selectedItemId == itemId ? "checked" : ""%>
682                    ></tbl:header>
683                <tbl:header 
684                  clazz="icons" 
685                  visible="<%=mode.hasIcons()%>"
686                  ></tbl:header>
687                <tbl:cell column="position"><div class="link" onclick="itemOnClick(event, <%=itemId%>)" 
688                  title="<%=tooltip%>"><%=item.getPosition()%></div></tbl:cell>
689                <tbl:cell column="id"><%=item.getId()%></tbl:cell>
690                <tbl:cell column="block"><%=item.getBlock()%></tbl:cell>
691                <tbl:cell column="row"><%=item.getRow()%></tbl:cell>
692                <tbl:cell column="column"><%=item.getColumn()%></tbl:cell>
693                <tbl:cell column="metaGridX"><%=item.getMetaGridX()%></tbl:cell>
694                <tbl:cell column="metaGridY"><%=item.getMetaGridY()%></tbl:cell>
695                <tbl:cell column="x"><%=item.getX()%></tbl:cell>
696                <tbl:cell column="y"><%=item.getY()%></tbl:cell>
697                <tbl:cell column="spotImage">
698                  <%
699                  if (hasSpotImages)
700                  {
701                    %>
702                    <img class="spotimage" src="spotimage/<%=ID%>/<%=rawBioAssay.getId()%>/<%=itemId%>/spot<%=item.getPosition()%>.png">
703                    <%
704                  }
705                  %>
706                </tbl:cell>
707                <%
708                for (RawDataProperty rdp : rawBioAssay.getRawDataType().getProperties())
709                {
710                  %>
711                  <tbl:cell column="<%="raw."+rdp.getName()%>"><tbl:cellvalue value="<%=item.getExtended(rdp.getName())%>" /></tbl:cell>
712                  <%
713                }
714                %>
715                <%
716                ReporterData reporter = item.getReporter();
717                if (reporter == null)
718                {
719                  %>
720                  <tbl:cell column="reporter.name"><i>- none -</i></tbl:cell>
721                  <tbl:cell column="reporter.externalId"><i>- none -</i></tbl:cell>
722                  <%
723                }
724                else
725                {
726                  %>
727                  <tbl:cell column="reporter.name"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), writeReporterPermission)%></tbl:cell>
728                  <tbl:cell column="reporter.externalId"><%=HTML.encodeTags(reporter.getExternalId())%></tbl:cell>
729                  <tbl:cell column="reporter.symbol"><%=HTML.encodeTags(reporter.getSymbol())%></tbl:cell>
730                  <tbl:cell column="reporter.description"><%=HTML.encodeTags(reporter.getDescription())%></tbl:cell>
731                  <tbl:cell column="reporter.lastUpdate" value="<%=reporter.getLastUpdate()%>" />
732                  <tbl:cell column="reporter.reporterType"><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType.name" /></tbl:cell>
733                  <%
734                  if (reporterProperties != null)
735                  {
736                    for (ExtendedProperty ep : reporterProperties)
737                    {
738                      String name = ep.getName();
739                      %>
740                      <tbl:cell column="<%="reporter."+name%>"><tbl:cellvalue value="<%=reporter.getExtended(name)%>" /></tbl:cell>
741                      <%
742                    }
743                  }
744                }
745                %>
746                <%
747                FeatureData feature = item.getFeature();
748                if (feature == null)
749                {
750                  %>
751                  <tbl:cell column="feature.position"><i>- none -</i></tbl:cell>
752                  <tbl:cell column="feature.externalId"><i>- none -</i></tbl:cell>
753                  <tbl:cell column="feature.row"><i>- none -</i></tbl:cell>
754                  <tbl:cell column="feature.column"><i>- none -</i></tbl:cell>
755                  <tbl:cell column="feature.block"><i>- none -</i></tbl:cell>
756                  <tbl:cell column="feature.metaGridX"><i>- none -</i></tbl:cell>
757                  <tbl:cell column="feature.metaGridY"><i>- none -</i></tbl:cell>
758                  <tbl:cell column="feature.blockSizeX"><i>- none -</i></tbl:cell>
759                  <tbl:cell column="feature.blockSizeY"><i>- none -</i></tbl:cell>
760                  <tbl:cell column="feature.originX"><i>- none -</i></tbl:cell>
761                  <tbl:cell column="feature.originY"><i>- none -</i></tbl:cell>
762                  <tbl:cell column="feature.spacingX"><i>- none -</i></tbl:cell>
763                  <tbl:cell column="feature.spacingY"><i>- none -</i></tbl:cell>
764                  <%
765                }
766                else
767                {
768                  %>
769                  <tbl:cell column="feature.position"><%=feature.getPosition()%></tbl:cell>
770                  <tbl:cell column="feature.externalId"><%=HTML.encodeTags(feature.getExternalId())%></tbl:cell>
771                  <tbl:cell column="feature.row"><%=feature.getRow()%></tbl:cell>
772                  <tbl:cell column="feature.column"><%=feature.getColumn()%></tbl:cell>
773                  <%
774                  ArrayDesignBlock block = null;
775                  try
776                  {
777                    block = Feature.getArrayDesignBlock(dc, feature);
778                  }
779                  catch (PermissionDeniedException ex)
780                  {}
781                  if (block == null)
782                  {
783                    %>
784                    <tbl:cell column="feature.block"><i>- denied -</i></tbl:cell>
785                    <tbl:cell column="feature.metaGridX"><i>- denied -</i></tbl:cell>
786                    <tbl:cell column="feature.metaGridY"><i>- denied -</i></tbl:cell>
787                    <tbl:cell column="feature.blockSizeX"><i>- denied -</i></tbl:cell>
788                    <tbl:cell column="feature.blockSizeY"><i>- denied -</i></tbl:cell>
789                    <tbl:cell column="feature.originX"><i>- denied -</i></tbl:cell>
790                    <tbl:cell column="feature.originY"><i>- denied -</i></tbl:cell>
791                    <tbl:cell column="feature.spacingX"><i>- denied -</i></tbl:cell>
792                    <tbl:cell column="feature.spacingY"><i>- denied -</i></tbl:cell>
793                    <%
794                  }
795                  else
796                  {
797                    %>
798                    <tbl:cell column="feature.block"><%=block.getBlockNumber()%></tbl:cell>
799                    <tbl:cell column="feature.metaGridX"><%=block.getMetaGridX()%></tbl:cell>
800                    <tbl:cell column="feature.metaGridY"><%=block.getMetaGridY()%></tbl:cell>
801                    <tbl:cell column="feature.blockSizeX"><%=block.getBlockSizeX()%></tbl:cell>
802                    <tbl:cell column="feature.blockSizeY"><%=block.getBlockSizeY()%></tbl:cell>
803                    <tbl:cell column="feature.originX"><%=block.getOriginX()%></tbl:cell>
804                    <tbl:cell column="feature.originY"><%=block.getOriginY()%></tbl:cell>
805                    <tbl:cell column="feature.spacingX"><%=block.getSpacingX()%></tbl:cell>
806                    <tbl:cell column="feature.spacingY"><%=block.getSpacingY()%></tbl:cell>
807                    <%
808                  }
809                  Well well = null;
810                  boolean readWell = true;
811                  try
812                  {
813                    well = Feature.getWell(dc, feature);
814                  }
815                  catch (PermissionDeniedException ex)
816                  {
817                    readWell = false;
818                  }
819                  if (!readWell)
820                  {
821                    %>
822                    <tbl:cell column="well.row"><i>- denied -</i></tbl:cell>
823                    <tbl:cell column="well.column"><i>- denied -</i></tbl:cell>
824                    <tbl:cell column="well.plate"><i>- denied -</i></tbl:cell>
825                    <%
826                  }
827                  else if (well == null)
828                  {
829                    %>
830                    <tbl:cell column="well.row"><i>- none -</i></tbl:cell>
831                    <tbl:cell column="well.column"><i>- none -</i></tbl:cell>
832                    <tbl:cell column="well.plate"><i>- none -</i></tbl:cell>
833                    <%
834                  }
835                  else
836                  {
837                    %>
838                    <tbl:cell column="well.row"><%=well.getRow()%></tbl:cell>
839                    <tbl:cell column="well.column"><%=well.getColumn()%></tbl:cell>
840                    <tbl:cell column="well.plate"><%=well.getPlate().getName()%></tbl:cell>
841                    <%
842                  }
843                }
844                %>
845              </tbl:row>
846              <%
847            }
848          }
849          %>
850          </tbl:rows>
851        </tbl:data>
852      <%
853      if (numListed == 0)
854      {
855        %>
856        <tbl:panel><%=rawData == null || rawData.getTotalCount() == 0 ? "No raw data were found" : "No raw data on this page. Please select another page!" %></tbl:panel>
857        <%
858      }
859      else
860      {
861        %>
862        <tbl:navigator
863          page="<%=cc.getPage()%>" 
864          rowsperpage="<%=cc.getRowsPerPage()%>" 
865          totalrows="<%=rawData == null ? 0 : rawData.getTotalCount()%>" 
866          visible="<%=mode.hasNavigator()%>"
867          locked="true"
868        />
869        <%
870      }
871      %>
872    </tbl:table>
873    <base:buttongroup align="center">
874      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
875      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
876      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
877    </base:buttongroup>
878   
879    </t:tab>
880    <t:tab id="overview" title="Overview" 
881      tooltip="Display a tree overview of related items" />
882    </t:tabcontrol>
883  </base:body>
884  </base:page>
885  <%
886}
887finally
888{
889  if (rawData != null) rawData.close();
890  if (dc != null) dc.close();
891}
892%>
Note: See TracBrowser for help on using the repository browser.