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

Last change on this file since 5948 was 5948, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

Started with the list pages. So far the reporters and the biosurce, sample and extract list pages have been done. The other pages have just been modified to not cause any compilation problems and to display almost ok.

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