source: trunk/www/admin/quantities/view_quantity.jsp @ 5042

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

References #360 Covering the submenu items in 'Administrate' menu.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 11.0 KB
Line 
1<%-- $Id: view_quantity.jsp 5042 2009-08-11 10:48:42Z martin $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4
5  This file is part of BASE - BioArray Software Environment.
6  Available at http://base.thep.lu.se/
7
8  BASE is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 3
11  of the License, or (at your option) any later version.
12
13  BASE is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with BASE. If not, see <http://www.gnu.org/licenses/>.
20  ------------------------------------------------------------------
21
22  @author Nicklas
23  @version 2.0
24--%>
25<%@ page session="false"
26  import="net.sf.basedb.core.SessionControl"
27  import="net.sf.basedb.core.DbControl"
28  import="net.sf.basedb.core.SystemItems"
29  import="net.sf.basedb.core.Item"
30  import="net.sf.basedb.core.Include"
31  import="net.sf.basedb.core.ItemContext"
32  import="net.sf.basedb.core.Permission"
33  import="net.sf.basedb.core.Quantity"
34  import="net.sf.basedb.core.Unit"
35  import="net.sf.basedb.core.ItemQuery"
36  import="net.sf.basedb.core.ItemResultList"
37  import="net.sf.basedb.core.PermissionDeniedException"
38  import="net.sf.basedb.core.PluginDefinition"
39  import="net.sf.basedb.core.plugin.GuiContext"
40  import="net.sf.basedb.core.plugin.Plugin"
41  import="net.sf.basedb.core.query.Orders"
42  import="net.sf.basedb.core.query.Hql"
43  import="net.sf.basedb.clients.web.Base"
44  import="net.sf.basedb.clients.web.PermissionUtil"
45  import="net.sf.basedb.clients.web.util.HTML"
46  import="net.sf.basedb.util.Values"
47  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
48  import="net.sf.basedb.clients.web.extensions.JspContext"
49  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
50  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
51  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
52  import="java.util.Map"
53  import="java.util.Set"
54%>
55<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
56<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
57<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
58<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
59<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
60<%!
61  private static final Item itemType = Item.QUANTITY;
62  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
63%>
64<%
65final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
66final String ID = sc.getId();
67final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
68final int itemId = cc.getId();
69final float scale = Base.getScale(sc);
70final DbControl dc = sc.newDbControl();
71try
72{
73  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
74
75  String title = null;
76  Quantity quantity = Quantity.getById(dc, itemId);
77 
78  final boolean usePermission = quantity.hasPermission(Permission.USE);
79  final boolean writePermission = quantity.hasPermission(Permission.WRITE);
80  final boolean deletePermission = quantity.hasPermission(Permission.DELETE);
81  final boolean isRemoved = quantity.isRemoved();
82  final boolean isUsed = isRemoved && quantity.isUsed();
83  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
84  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, quantity);
85  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
86  %>
87  <base:page title="<%=title%>">
88  <base:head scripts="tabcontrol.js" styles="toolbar.css,headertabcontrol.css,path.css,table.css">
89    <ext:scripts context="<%=jspContext%>" />
90    <ext:stylesheets context="<%=jspContext%>" />
91    <script language="JavaScript">
92    function editItem()
93    {
94      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
95    }
96    function deleteItem()
97    {
98      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
99    }
100    function restoreItem()
101    {
102      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
103    }
104    function deleteItemPermanently()
105    {
106      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', <%=itemId%>, '&callback=itemDeleted');
107    }
108    function itemDeleted()
109    {
110      Main.listItems('<%=ID%>', '<%=itemType.name()%>');
111    }
112    function showUsingItems()
113    {
114      Main.showUsingItems('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>);
115    }
116    function runPlugin(cmd)
117    {
118      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 740, 540);
119    }
120    function newUnit()
121    {
122      Main.viewOrEditItem('<%=ID%>', 'UNIT', 0, true, '&quantity_id=<%=itemId%>');
123    }
124    </script>
125  </base:head>
126  <base:body>
127    <p>
128    <p:path>
129      <p:pathelement title="Quantities" href="<%="index.jsp?ID="+ID%>" />
130      <p:pathelement title="<%=HTML.encodeTags(quantity.getName())%>" />
131    </p:path>
132   
133    <t:tabcontrol id="main" active="properties">
134    <t:tab id="properties" title="Properties">
135   
136    <tbl:toolbar
137      >
138      <tbl:button 
139        disabled="<%=writePermission ? false : true%>" 
140        image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 
141        onclick="editItem()" 
142        title="Edit&hellip;" 
143        tooltip="<%=writePermission ? "Edit this quantity" : "You do not have permission to edit this quantity"%>" 
144      />
145      <tbl:button 
146        disabled="<%=deletePermission ? false : true%>" 
147        image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 
148        onclick="deleteItem()" 
149        title="Delete"
150        visible="<%=!quantity.isRemoved()%>"
151        tooltip="<%=deletePermission ? "Delete this quantity" : "You do not have permission to delete this quantity"%>" 
152      />
153      <tbl:button 
154        disabled="<%=writePermission ? false : true%>" 
155        image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 
156        onclick="restoreItem()" 
157        title="Restore"
158        visible="<%=quantity.isRemoved()%>"
159        tooltip="<%=writePermission ? "Restore this quantity" : "You do not have permission to restore this quantity"%>" 
160      />
161      <tbl:button
162        image="add.png"
163        onclick="newUnit()"
164        title="New unit&hellip;"
165        tooltip="Create a new unit for this quantity"
166        visible="<%=sc.hasPermission(Permission.CREATE, Item.UNIT) && usePermission%>"
167      />
168      <tbl:button 
169        image="import.gif" 
170        onclick="runPlugin('ImportItem')" 
171        title="Import&hellip;" 
172        tooltip="Import data" 
173        visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
174      />
175      <tbl:button 
176        image="export.gif" 
177        onclick="runPlugin('ExportItem')" 
178        title="Export&hellip;" 
179        tooltip="Export data" 
180        visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
181      />
182      <tbl:button 
183        image="runplugin.gif" 
184        onclick="runPlugin('RunPlugin')" 
185        title="Run plugin&hellip;" 
186        tooltip="Run a plugin" 
187        visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
188      />
189      <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
190        wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
191      <tbl:button
192        image="help.gif"
193        onclick="<%="Main.openHelp('" + ID +"', 'quantity.view.properties')"%>"
194        title="Help&hellip;"
195        tooltip="Get help about this page"
196      />
197      </tbl:toolbar>
198    <div class="boxedbottom">
199      <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(quantity)%></i></div>
200      <%
201      if (quantity.isRemoved())
202      {
203        %>
204        <div class="itemstatus">
205          <base:icon 
206            image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>"
207            onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>"
208            tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>"
209            visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon>
210          <base:icon image="used.gif" 
211            onclick="showUsingItems()"
212            tooltip="Show the items that are using this one"
213            visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon>
214        </div>
215        <%
216      }
217      %>
218      <table class="form" cellspacing=0>
219      <tr>
220        <td class="prompt">Quantity</td>
221        <td><%=HTML.encodeTags(quantity.getName())%></td>
222      </tr>
223      <tr>
224        <td class="prompt">System ID</td>
225        <td><%=HTML.encodeTags(quantity.getSystemId())%></td>
226      </tr>
227      <tr>
228        <td class="prompt">Reference unit</td>
229        <td><%=HTML.encodeTags(quantity.getReferenceUnit())%></td>
230      </tr>
231      <tr>
232        <td class="prompt">Description</td>
233        <td><%=HTML.niceFormat(quantity.getDescription())%></td>
234      </tr>
235      </table>
236     
237      <%
238      ItemQuery<Unit> unitQuery = quantity.getUnits();
239      unitQuery.join(Hql.leftJoin(null, "symbols", "sym", null, true));
240      unitQuery.include(Include.ALL);
241      unitQuery.order(Orders.desc(Hql.property("referenceFactor")));
242      unitQuery.order(Orders.asc(Hql.property("name")));
243      ItemResultList<Unit> units = unitQuery.list(dc);
244      if (units.size() == 0)
245      {
246        %>
247        <h4>Units</h4>
248        No units for this quantity exists
249        (or, you don't have permission to view them).
250        <%
251      }
252      else
253      {
254        %>
255        <base:section 
256          id="units" 
257          title="<%="Units (" + units.size() + ")"%>" 
258          context="<%=cc%>"
259        >
260          <tbl:table
261            id="units"
262            clazz="itemlist"
263            columns="all"
264            >
265          <tbl:columndef 
266            id="name"
267            title="Name"
268          />
269          <tbl:columndef 
270            id="symbols"
271            title="Symbols"
272          />
273          <tbl:columndef 
274            id="formula"
275            title="Conversion formula"
276          />
277          <tbl:columndef 
278            id="description"
279            title="Description"
280          />
281          <tbl:data>
282            <tbl:columns>
283            </tbl:columns>
284            <tbl:rows>
285            <%
286            for (Unit item : units)
287            {
288              StringBuilder formula = new StringBuilder();
289              formula.append("1&nbsp;").append(item.getDisplaySymbol()).append(" = ");
290              if (item.getReferenceFactor() != 1.0)
291              {
292                formula.append(item.getReferenceFactor()).append(" × ");
293              }
294              formula.append(quantity.getReferenceUnit());
295              if (item.getReferenceOffset() != 0.0)
296              {
297                formula.append(" + ").append(item.getReferenceOffset());
298              }
299              Set<String> symbols = item.getSymbols();
300              symbols.remove(item.getDisplaySymbol());
301              symbols.add("<b>" + item.getDisplaySymbol() + "</b>");
302              %>
303              <tbl:row>
304                <tbl:cell column="name"><base:icon 
305                    image="deleted.gif" 
306                    tooltip="This item has been scheduled for deletion" 
307                    visible="<%=item.isRemoved()%>"
308                  /><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
309                <tbl:cell column="symbols"><%=Values.getString(symbols, ", ", true) %></tbl:cell>
310                <tbl:cell column="formula"><%=formula.toString()%></tbl:cell>
311                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
312              </tbl:row>
313              <%
314            }
315            %>
316            </tbl:rows>
317          </tbl:data>
318          </tbl:table>
319        </base:section>
320        <%
321      }
322      %>
323
324    </div>
325    </t:tab>
326    </t:tabcontrol>
327
328  </base:body>
329  </base:page>
330  <%
331}
332finally
333{
334  if (dc != null) dc.close();
335}
336
337%>
Note: See TracBrowser for help on using the repository browser.