source: trunk/www/views/rawbioassays/rawdata/list_rawdata.jsp @ 4866

Last change on this file since 4866 was 4866, checked in by Martin Svensson, 13 years ago

Fixes #1282 Change display-format of well coordinates.

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