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

Last change on this file since 7014 was 7014, checked in by Nicklas Nordborg, 7 years ago

Merged patch release 3.6.2 to the trunk

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 10.9 KB
Line 
1<%-- $Id: view_well.jsp 7014 2015-11-12 08:43:25Z 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  final boolean readReporter = !sc.hasPermission(Permission.DENIED, Item.REPORTER);
79  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
80  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
81  WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
82  WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
83  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
84
85  String title = null;
86  final Well well = Well.getById(dc, itemId);
87  final Plate plate = well.getPlate();
88  ReporterData reporter = readReporter ? well.getReporter() : null;
89  final int plateId = plate.getId();
90
91  Well parentWell = null;
92  boolean readParentWell = true;
93  Plate parentWellPlate = null;
94  boolean readParentWellPlate = true;
95  try
96  {
97    parentWell = well.getParent();
98  }
99  catch (PermissionDeniedException ex)
100  {
101    readParentWell = false;
102    readParentWellPlate = false;
103  }
104  if (parentWell != null)
105  {
106    try
107    {
108      parentWellPlate = parentWell.getPlate();
109    }
110    catch (PermissionDeniedException ex)
111    {
112      readParentWellPlate = false;
113    }
114  }
115 
116  boolean readCurrentReporterType = true;
117  ReporterType currentReporterType = null;
118  if (reporter != null)
119  {
120    reporter = Reporter.getById(dc, reporter.getId());
121    try
122    {
123      currentReporterType = Reporter.getReporterType(dc, reporter);
124    }
125    catch (PermissionDeniedException ex)
126    {
127      readCurrentReporterType = false;
128    }
129  }
130 
131  final boolean writePermission = well.hasPermission(Permission.WRITE);
132  final boolean deletePermission = well.hasPermission(Permission.DELETE);
133  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, well);
134  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
135  %>
136  <base:page title="<%=title%>" id="view-page">
137  <base:head scripts="table.js,tabcontrol-2.js,~wells.js" styles="toolbar.css,table.css,headertabcontrol.css,path.css">
138    <ext:scripts context="<%=jspContext%>" />
139    <ext:stylesheets context="<%=jspContext%>" />
140  </base:head>
141  <base:body>
142    <p:path><p:pathelement 
143      title="Plates" href="<%="../index.jsp?ID="+ID%>" 
144      /><p:pathelement 
145        title="<%=HTML.encodeTags(plate.getName())%>" 
146        href="<%="index.jsp?ID="+ID+"&amp;plate_id="+plateId%>" 
147      /><p:pathelement title="<%="Well: "+rowFormatter.format(well.getRow())+columnFormatter.format(well.getColumn())%>" 
148      /></p:path>
149    <div id="page-data" data-item-id="<%=itemId%>"></div>
150   
151    <t:tabcontrol 
152      id="main" 
153      subclass="content mastertabcontrol" 
154      active="properties">
155    <t:tab id="properties" title="Properties">
156      <div>
157      <table class="fullform bottomborder">
158      <tr>
159        <th class="itemstatus"></th>
160        <td style="padding: 0px;">
161          <tbl:toolbar subclass="bottomborder bg-filled-50">
162            <tbl:button 
163              id="btnEdit"
164              disabled="<%=!writePermission%>" 
165              image="edit.png" 
166              title="Edit&hellip;" 
167              tooltip="<%=writePermission ? "Edit this well" : "You do not have permission to edit this well"%>" 
168            />
169            <tbl:button 
170              id="btnImport"
171              image="import.png" 
172              data-plugin-type="IMPORT" 
173              title="Import&hellip;" 
174              tooltip="Import data" 
175              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
176            />
177            <tbl:button 
178              id="btnExport"
179              image="export.png"
180              data-plugin-type="EXPORT" 
181              title="Export&hellip;" 
182              tooltip="Export data" 
183              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
184            />
185            <tbl:button 
186              id="btnRunPlugin"
187              image="runplugin.png" 
188              data-plugin-type="OTHER" 
189              title="Run plugin&hellip;" 
190              tooltip="Run a plugin" 
191              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
192            />
193            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
194              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
195            <tbl:button
196              image="help.png"
197              subclass="auto-init"
198              data-auto-init="help"
199              data-help-id="well.view.properties"
200              title="Help&hellip;"
201              tooltip="Get help about this page"
202            />
203          </tbl:toolbar>
204        </td>
205      </tr>
206      <tr>
207        <th>Position</th>
208        <td><%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%></td>
209      </tr>
210      <tr>
211        <th>Parent plate/well</th>
212        <td>
213          <%
214          if (!readParentWell)
215          {
216            %>
217            <i>- denied -</i>
218            <%
219          }
220          else if (parentWell == null)
221          {
222            %>
223            <i>- none -</i>
224            <%
225          }
226          else
227          {
228            %>
229            <%=Base.getLink(ID, parentWellPlate.getName() + " [" + parentWell.getRow() + ", " + parentWell.getColumn() + "]",
230              Item.WELL, parentWell.getId(), true) %>
231            <%
232          }
233          %>
234        </td>
235      </tr>
236      <%
237      if (reporter == null)
238      {
239        %>
240        <tr>
241          <th>Reporter</th>
242          <td><i>- <%=readReporter ? "none" : "denied"%> -</i></td>
243        </tr>
244        <%
245      }
246      %>
247      </table>
248      </div>
249     
250      <%
251      if (reporter != null)
252      {
253        %>
254        <table class="fullform bottomborder">
255          <tbody class="sectionheader">
256            <tr>
257              <th colspan="2">Reporter</th>
258            </tr>
259          </tbody>
260          <tr>
261            <th>Name</th>
262            <td><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true) %></td>
263          </tr>
264          <tr>
265            <th>External ID</th>
266            <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
267          </tr>
268          <tr>
269            <th>Type</th>
270            <td><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></td>
271          </tr>
272          <tr>
273            <th>Registered</th>
274            <td><%=dateFormatter.format(reporter.getEntryDate())%></td>
275          </tr>
276          <tr>
277            <th>Last update</th>
278            <td><%=dateTimeFormatter.format(reporter.getLastUpdate())%></td>
279          </tr>
280          <tr>
281            <th class="subprompt">- from/by</th>
282            <td><%=HTML.niceFormat(reporter.getLastSource())%></td>
283          </tr>
284          <tr>
285            <th>Gene symbol</th>
286            <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
287          </tr>
288          <tr>
289            <th>Description</th>
290            <td><%=HTML.niceFormat(reporter.getDescription())%></td>
291          </tr>
292        </table>
293       
294        <%
295        List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
296        %>
297        <base:section
298          id="extendedProperties"
299          title="<%="Extended properties (" + reporterProperties.size() + ")"%>"
300          context="<%=cc%>"
301          >
302          <table class="fullform fullborder">
303            <%       
304            if (reporterProperties != null)
305            {
306              boolean needsTr = true;
307              for (ExtendedProperty ep : reporterProperties)
308              {
309                String name = ep.getName();
310                Formatter f = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
311                String value = f.format(reporter.getExtended(name));
312                %>
313                  <%=needsTr ? "<tr><th>" : "<th class=\"leftborder\">" %>
314                  <%=HTML.encodeTags(ep.getTitle())%></th>
315                  <td><%=value%></td>
316                  <%=needsTr ? "" : "</tr>"%>
317                <%
318                needsTr = !needsTr;
319              }
320              %>
321              <%=needsTr ? "" : "<th class=\"leftborder\"></th><td></td></tr>"%>
322              <%
323            }
324            %>
325          </table>
326        </base:section>
327        <%
328      }
329      %>
330
331      <jsp:include page="../../../common/anytoany/list_anytoany.jsp">
332        <jsp:param name="ID" value="<%=ID%>" />
333        <jsp:param name="item_type" value="<%=itemType.name()%>" />
334        <jsp:param name="item_id" value="<%=itemId%>" />
335        <jsp:param name="title" value="Other items related to this well" />
336      </jsp:include>
337      </t:tab>
338      <t:tab id="annotations" title="Annotations" 
339        tooltip="View annotation values" clazz="white">
340        <jsp:include page="../../../common/annotations/list_frameset.jsp">
341          <jsp:param name="item_type" value="<%=itemType.name()%>" />
342          <jsp:param name="item_id" value="<%=itemId%>" />
343          <jsp:param name="ID" value="<%=ID%>" />
344        </jsp:include>
345      </t:tab>
346    </t:tabcontrol>
347
348  </base:body>
349  </base:page>
350  <%
351}
352finally
353{
354  if (dc != null) dc.close();
355}
356
357%>
Note: See TracBrowser for help on using the repository browser.