source: trunk/www/lims/plates/wells/view_well.jsp @ 5910

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

References #1655: GUI improvements

  • Plugin wizards
  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 10.5 KB
Line 
1<%-- $Id: view_well.jsp 5910 2011-12-14 14:00:39Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg
4  Copyright (C) 2007 Nicklas Nordborg
5
6  This file is part of BASE - BioArray Software Environment.
7  Available at http://base.thep.lu.se/
8
9  BASE is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License
11  as published by the Free Software Foundation; either version 3
12  of the License, or (at your option) any later version.
13
14  BASE is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with BASE. If not, see <http://www.gnu.org/licenses/>.
21  ------------------------------------------------------------------
22
23  @author Nicklas
24  @version 2.0
25--%>
26<%@ page 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.SystemItems"
30  import="net.sf.basedb.core.Item"
31  import="net.sf.basedb.core.ItemContext"
32  import="net.sf.basedb.core.Permission"
33  import="net.sf.basedb.core.Plate"
34  import="net.sf.basedb.core.Well"
35  import="net.sf.basedb.core.Reporter"
36  import="net.sf.basedb.core.ReporterType"
37  import="net.sf.basedb.core.ExtendedProperties"
38  import="net.sf.basedb.core.ExtendedProperty"
39  import="net.sf.basedb.core.PermissionDeniedException"
40  import="net.sf.basedb.core.PluginDefinition"
41  import="net.sf.basedb.core.plugin.GuiContext"
42  import="net.sf.basedb.core.plugin.Plugin"
43  import="net.sf.basedb.core.data.ReporterData"
44  import="net.sf.basedb.clients.web.Base"
45  import="net.sf.basedb.clients.web.util.HTML"
46  import="net.sf.basedb.util.Values"
47  import="net.sf.basedb.util.formatter.Formatter"
48  import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
49  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
50  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
51  import="net.sf.basedb.clients.web.extensions.JspContext"
52  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
53  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
54  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
55  import="java.util.Date"
56  import="java.util.Map"
57  import="java.util.Set"
58  import="java.util.List"
59%>
60<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
61<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
62<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
63<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
64<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
65<%!
66  private static final Item itemType = Item.WELL;
67  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
68%>
69<%
70final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
71final String ID = sc.getId();
72final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
73final int itemId = cc.getId();
74final float scale = Base.getScale(sc);
75final DbControl dc = sc.newDbControl();
76try
77{
78  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
79  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
80  WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
81  WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
82  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
83
84  String title = null;
85  final Well well = Well.getById(dc, itemId);
86  final Plate plate = well.getPlate();
87  final ReporterData reporter = well.getReporter();
88  final int plateId = plate.getId();
89
90  Well parentWell = null;
91  boolean readParentWell = true;
92  Plate parentWellPlate = null;
93  boolean readParentWellPlate = true;
94  try
95  {
96    parentWell = well.getParent();
97  }
98  catch (PermissionDeniedException ex)
99  {
100    readParentWell = false;
101    readParentWellPlate = false;
102  }
103  if (parentWell != null)
104  {
105    try
106    {
107      parentWellPlate = parentWell.getPlate();
108    }
109    catch (PermissionDeniedException ex)
110    {
111      readParentWellPlate = false;
112    }
113  }
114 
115  final boolean writePermission = well.hasPermission(Permission.WRITE);
116  final boolean deletePermission = well.hasPermission(Permission.DELETE);
117  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, well);
118  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
119  %>
120  <base:page title="<%=title%>">
121  <base:head scripts="table.js,tabcontrol.js" styles="toolbar.css,table.css,headertabcontrol.css,path.css">
122    <ext:scripts context="<%=jspContext%>" />
123    <ext:stylesheets context="<%=jspContext%>" />
124    <script language="JavaScript">
125    function editItem()
126    {
127      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
128    }
129    function runPlugin(cmd)
130    {
131      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&plate_id=<%=plateId%>&item_id=<%=itemId%>', 'RunPlugin'+cmd, 750, 500);
132    }
133    </script>
134  </base:head>
135  <base:body>
136    <p>
137    <p:path>
138      <p:pathelement title="Plates" href="<%="../index.jsp?ID="+ID%>" />
139      <p:pathelement 
140        title="<%=HTML.encodeTags(plate.getName())%>" 
141        href="<%="index.jsp?ID="+ID+"&plate_id="+plateId%>" />
142      <p:pathelement title="<%="Well: ["+rowFormatter.format(well.getRow())+", "+columnFormatter.format(well.getColumn())+"]"%>" />
143    </p:path>
144   
145    <t:tabcontrol id="main" active="properties">
146    <t:tab id="properties" title="Properties">
147
148    <tbl:toolbar
149      >
150      <tbl:button 
151        disabled="<%=writePermission ? false : true%>" 
152        image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 
153        onclick="editItem()" 
154        title="Edit&hellip;" 
155        tooltip="<%=writePermission ? "Edit this event type" : "You do not have permission to edit this event type"%>" 
156      />
157      <tbl:button 
158        image="import.gif" 
159        onclick="runPlugin('ImportItem')" 
160        title="Import&hellip;" 
161        tooltip="Import data" 
162        visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
163      />
164      <tbl:button 
165        image="export.gif" 
166        onclick="runPlugin('ExportItem')" 
167        title="Export&hellip;" 
168        tooltip="Export data" 
169        visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
170      />
171      <tbl:button 
172        image="runplugin.gif" 
173        onclick="runPlugin('RunPlugin')" 
174        title="Run plugin&hellip;" 
175        tooltip="Run a plugin" 
176        visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
177      />
178      <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
179        wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
180      <tbl:button
181        image="help.png"
182        onclick="<%="Main.openHelp('" + ID +"', 'well.view.properties')"%>"
183        title="Help&hellip;"
184        tooltip="Get help about this page"
185      />
186      </tbl:toolbar>
187     
188    <div class="boxedbottom">
189      <table class="form" cellspacing=0>
190      <tr>
191        <td class="prompt">Row</td>
192        <td><%=rowFormatter.format(well.getRow())%></td>
193      </tr>
194      <tr>
195        <td class="prompt">Column</td>
196        <td><%=columnFormatter.format(well.getColumn())%></td>
197      </tr>
198      <tr>
199        <td class="prompt">Parent plate/well</td>
200        <td>
201          <%
202          if (!readParentWell)
203          {
204            %>
205            <i>- denied -</i>
206            <%
207          }
208          else if (parentWell == null)
209          {
210            %>
211            <i>- none -</i>
212            <%
213          }
214          else
215          {
216            %>
217            <%=Base.getLink(ID, parentWellPlate.getName() + " [" + parentWell.getRow() + ", " + parentWell.getColumn() + "]",
218              Item.WELL, parentWell.getId(), true) %>
219            <%
220          }
221          %>
222        </td>
223      </tr>
224      </table>
225     
226      <h4>Reporter</h4>
227      <%
228      if (reporter == null)
229      {
230        %>
231        <i>- none -</i>
232        <%
233      }
234      else
235      {
236        boolean readCurrentReporterType = true;
237        ReporterType currentReporterType = null;
238        try
239        {
240          currentReporterType = Reporter.getReporterType(dc, reporter);
241        }
242        catch (PermissionDeniedException ex)
243        {
244          readCurrentReporterType = false;
245        }
246        %>
247        <table border="0" cellspacing="0" cellpadding="0">
248        <tr >
249        <td>
250          <table class="form" cellspacing=0>
251          <tr>
252            <td class="prompt">Name</td>
253            <td><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true) %></td>
254          </tr>
255          <tr>
256            <td class="prompt">Registered</td>
257            <td><%=dateFormatter.format(reporter.getEntryDate())%></td>
258          </tr>
259          <tr>
260            <td class="prompt">Last update</td>
261            <td><%=dateTimeFormatter.format(reporter.getLastUpdate())%></td>
262          </tr>
263          <tr>
264            <td class="prompt">External ID</td>
265            <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
266          </tr>
267          <tr>
268            <td class="prompt">Type</td>
269            <td><%=Base.getEncodedName(currentReporterType, !readCurrentReporterType)%></td>
270          </tr>
271          <tr>
272            <td class="prompt">Gene symbol</td>
273            <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
274          </tr>
275          <tr >
276            <td class="prompt">Description</td>
277            <td><%=HTML.niceFormat(reporter.getDescription())%></td>
278          </tr>
279          </table>
280        </td>
281        <td>&nbsp;&nbsp;</td>
282        <td>
283          <table class="form" cellspacing=0>
284            <%
285            List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
286            if (reporterProperties != null)
287            {
288              boolean needsTr = true;
289              for (ExtendedProperty ep : reporterProperties)
290              {
291                String name = ep.getName();
292                Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
293                String value = f.format(reporter.getExtended(name));
294                %>
295                  <%=needsTr ? "<tr>" : "" %>
296                  <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
297                  <td><%=value%></td>
298                  <td>&nbsp;&nbsp;</td>
299                  <%=needsTr ? "" : "</tr>"%>
300                <%
301                needsTr = !needsTr;
302              }
303              %>
304              <%=needsTr ? "" : "</tr>"%>
305              <%
306            }
307            %>
308          </table>
309        </td>
310        </tr>
311        </table>
312        <%
313      }
314      %>
315      <jsp:include page="../../../common/anytoany/list_anytoany.jsp">
316        <jsp:param name="ID" value="<%=ID%>" />
317        <jsp:param name="item_type" value="<%=itemType.name()%>" />
318        <jsp:param name="item_id" value="<%=itemId%>" />
319        <jsp:param name="title" value="Other items related to this well" />
320      </jsp:include>
321    </div>
322      </t:tab>
323     
324      <t:tab id="annotations" title="Annotations" >
325        <div class="boxed">
326        <jsp:include page="../../../common/annotations/list_annotations.jsp">
327          <jsp:param name="item_type" value="<%=itemType.name()%>" />
328          <jsp:param name="item_id" value="<%=itemId%>" />
329          <jsp:param name="ID" value="<%=ID%>" />
330        </jsp:include>
331        </div>
332      </t:tab>
333      </t:tabcontrol>
334
335  </base:body>
336  </base:page>
337  <%
338}
339finally
340{
341  if (dc != null) dc.close();
342}
343
344%>
Note: See TracBrowser for help on using the repository browser.