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

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

References #1282 Use WellCoordinateFormatter? to view row as a character and column as a number. The filters are not updated yet.

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