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

Last change on this file since 6605 was 6605, checked in by Nicklas Nordborg, 8 years ago

References #1890: Improve skinnability of BASE

Updated regular view pages and edit dialogs.

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