source: branches/filedb/www/admin/platforms/list_platforms.jsp @ 3798

Last change on this file since 3798 was 3798, checked in by Nicklas Nordborg, 15 years ago

References #721: Changed systemId to externalId in JSP as well

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 14.5 KB
Line 
1<%-- $Id: list_platforms.jsp 3798 2007-09-28 06:45:09Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2007 Nicklas Nordborg
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 2
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 this program; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place - Suite 330,
21  Boston, MA  02111-1307, USA.
22  ------------------------------------------------------------------
23
24  @author Nicklas
25  @version 2.0
26--%>
27<%@ page session="false"
28  import="net.sf.basedb.core.SessionControl"
29  import="net.sf.basedb.core.DbControl"
30  import="net.sf.basedb.core.Item"
31  import="net.sf.basedb.core.Platform"
32  import="net.sf.basedb.core.PlatformVariant"
33  import="net.sf.basedb.core.RawDataType"
34  import="net.sf.basedb.core.ItemQuery"
35  import="net.sf.basedb.core.Include"
36  import="net.sf.basedb.core.Type"
37  import="net.sf.basedb.core.ItemResultIterator"
38  import="net.sf.basedb.core.ItemResultList"
39  import="net.sf.basedb.core.ItemContext"
40  import="net.sf.basedb.core.Permission"
41  import="net.sf.basedb.core.PluginDefinition"
42  import="net.sf.basedb.core.query.Orders"
43  import="net.sf.basedb.core.query.Hql"
44  import="net.sf.basedb.core.query.Expressions"
45  import="net.sf.basedb.core.query.Restrictions"
46  import="net.sf.basedb.core.plugin.GuiContext"
47  import="net.sf.basedb.core.plugin.Plugin"
48  import="net.sf.basedb.util.Enumeration"
49  import="net.sf.basedb.clients.web.Base"
50  import="net.sf.basedb.clients.web.PermissionUtil"
51  import="net.sf.basedb.clients.web.ModeInfo"
52  import="net.sf.basedb.clients.web.util.HTML"
53  import="net.sf.basedb.util.formatter.Formatter"
54  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
55  import="net.sf.basedb.util.Values"
56  import="java.util.List"
57  import="java.util.Map"
58  import="java.util.Date"
59%>
60<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
61<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
62<%!
63  private static final Item itemType = Item.PLATFORM;
64  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
65%>
66<%
67final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
68final String ID = sc.getId();
69final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
70final boolean writePermission = sc.hasPermission(Permission.WRITE, itemType);
71final boolean deletePermission = sc.hasPermission(Permission.DELETE, itemType);
72final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
73
74final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
75final String callback = request.getParameter("callback");
76final String title = mode.generateTitle("platform", "platforms");
77final DbControl dc = sc.newDbControl();
78ItemResultIterator<Platform> platforms = null;
79try
80{
81  // Query for variants of a platform
82  final ItemQuery<PlatformVariant> variantQuery = PlatformVariant.getQuery();
83  variantQuery.include(cc.getInclude());
84  variantQuery.restrict(Restrictions.eq(Hql.property("platform"), Expressions.parameter("platform")));
85  variantQuery.order(Orders.asc(Hql.property("name"))); 
86  final boolean createVariantPermission = sc.hasPermission(Permission.CREATE, Item.PLATFORMVARIANT); 
87
88  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
89  try
90  {
91    final ItemQuery<Platform> query = Base.getConfiguredQuery(cc, true, Platform.getQuery(), mode);
92    platforms = query.iterate(dc);
93  }
94  catch (Throwable t)
95  {
96    cc.setMessage(t.getMessage());
97  }
98  int numListed = 0;
99  %>
100  <base:page title="<%=title==null ? "Platforms" : title%>" type="<%=mode.getPageType()%>">
101  <base:head scripts="menu.js,table.js" styles="menu.css,table.css">
102    <script language="JavaScript">
103    var submitPage = 'index.jsp';
104    var formId = 'platforms';
105    function newItem()
106    {
107      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', 0, true);
108    }
109    function editItem(itemId)
110    {
111      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, true);
112    }
113    function viewItem(itemId)
114    {
115      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, false);
116    }
117    function itemOnClick(evt, itemId)
118    {
119      Table.itemOnClick(formId, evt, itemId, '<%=mode.getName()%>', viewItem, editItem, returnSelected);
120    }
121    function deleteItems()
122    {
123      var frm = document.forms[formId];
124      if (Forms.numChecked(frm) == 0)
125      {
126        alert('Please select at least one item in the list');
127        return;
128      }
129      frm.action = submitPage;
130      frm.cmd.value = 'DeleteItems';
131      frm.submit();
132    }
133    function restoreItems()
134    {
135      var frm = document.forms[formId];
136      if (Forms.numChecked(frm) == 0)
137      {
138        alert('Please select at least one item in the list');
139        return;
140      }
141      frm.action = submitPage;
142      frm.cmd.value = 'RestoreItems';
143      frm.submit();
144    }
145    function configureColumns()
146    {
147      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
148    }
149    function runPlugin(cmd)
150    {
151      Table.submitToPopup(formId, cmd, 740, 540);
152    }
153    function returnSelected()
154    {
155      Table.returnSelected(formId, <%=callback != null ? "window.opener."+callback : "null" %>);
156      window.close();
157    }
158    function presetOnChange()
159    {
160      Table.presetOnChange('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
161    }
162    function newVariant(platformId)
163    {
164      Main.viewOrEditItem('<%=ID%>', 'PLATFORMVARIANT', 0, true, '&platform_id='+platformId);
165    }
166    </script>
167  </base:head>
168 
169  <base:body>
170    <%
171    if (cc.getMessage() != null)
172    {
173      %>
174      <div class="error"><%=cc.getMessage()%></div>
175      <%
176      cc.setMessage(null);
177    }
178    %>
179    <tbl:table 
180      id="platforms" 
181      clazz="itemlist" 
182      columns="<%=cc.getSetting("columns")%>"
183      sortby="<%=cc.getSortProperty()%>" 
184      direction="<%=cc.getSortDirection()%>"
185      title="<%=title%>"
186      action="index.jsp"
187      sc="<%=sc%>"
188      item="<%=itemType%>"
189      >
190      <tbl:hidden 
191        name="mode" 
192        value="<%=mode.getName()%>" 
193      />
194      <tbl:hidden 
195        name="callback" 
196        value="<%=callback%>" 
197        skip="<%=callback == null%>" 
198      />
199      <tbl:columndef 
200        id="name"
201        property="name"
202        datatype="string"
203        title="Name"
204        sortable="true" 
205        filterable="true"
206        exportable="true"
207        show="always" 
208      />
209      <tbl:columndef 
210        id="externalId"
211        property="externalId"
212        datatype="string"
213        title="External ID"
214        sortable="true"
215        filterable="true"
216        exportable="true"
217      />
218      <tbl:columndef 
219        id="fileOnly"
220        property="fileOnly"
221        datatype="boolean"
222        title="File-only"
223        sortable="true"
224        filterable="true"
225        exportable="true"
226      />
227      <tbl:columndef 
228        id="rawDataType"
229        property="rawDataType"
230        datatype="string"
231        title="Raw data type"
232        sortable="true"
233        filterable="true"
234        exportable="true"
235      />
236      <tbl:columndef 
237        id="channels"
238        property="channels"
239        datatype="int"
240        title="Channels"
241        sortable="true"
242        filterable="true"
243        exportable="true"
244      />
245      <tbl:columndef
246        id="variants"
247        title="Variants"
248      />
249      <tbl:columndef 
250        id="description"
251        property="description"
252        datatype="string"
253        title="Description" 
254        sortable="true" 
255        filterable="true" 
256        exportable="true"
257      />
258      <tbl:toolbar
259        visible="<%=mode.hasToolbar()%>"
260        >
261        <tbl:button 
262          disabled="<%=createPermission ? false : true%>" 
263          image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>" 
264          onclick="newItem()" 
265          title="New&hellip;" 
266          tooltip="<%=createPermission ? "Create platforms" : "You do not have permission to create platforms"%>" 
267        />
268        <tbl:button 
269          disabled="<%=deletePermission ? false : true%>" 
270          image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 
271          onclick="deleteItems()" 
272          title="Delete" 
273          tooltip="<%=deletePermission ? "Delete the selected items" : "You do not have permission to delete platforms" %>" 
274        />
275        <tbl:button 
276          disabled="<%=writePermission ? false : true%>" 
277          image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 
278          onclick="restoreItems()" 
279          title="Restore" 
280          tooltip="<%=writePermission ? "Restore the selected (deleted) items" : "You do not have permission to edit platforms" %>" 
281        />
282        <tbl:button 
283          image="columns.gif" 
284          onclick="configureColumns()" 
285          title="Columns&hellip;" 
286          tooltip="Show, hide and re-order columns" 
287        />
288        <tbl:button 
289          image="import.gif" 
290          onclick="runPlugin('ImportItems')" 
291          title="Import&hellip;" 
292          tooltip="Import data" 
293          visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
294        />
295        <tbl:button 
296          image="export.gif" 
297          onclick="runPlugin('ExportItems')" 
298          title="Export&hellip;" 
299          tooltip="Export data" 
300          visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
301        />
302        <tbl:button 
303          image="runplugin.gif" 
304          onclick="runPlugin('RunListPlugin')" 
305          title="Run plugin&hellip;" 
306          tooltip="Run a plugin" 
307          visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
308        />
309      </tbl:toolbar>
310      <tbl:navigator
311        page="<%=cc.getPage()%>" 
312        rowsperpage="<%=cc.getRowsPerPage()%>" 
313        totalrows="<%=platforms == null ? 0 : platforms.getTotalCount()%>" 
314        visible="<%=mode.hasNavigator()%>"
315      />
316      <tbl:data>
317        <tbl:columns>
318        <tbl:presetselector 
319          clazz="columnheader"
320          colspan="3"
321          onchange="presetOnChange()"
322        />
323        </tbl:columns>
324
325        <tr>
326          <tbl:header 
327            clazz="index"
328            >&nbsp;</tbl:header>
329          <tbl:header 
330            clazz="check" 
331            visible="<%=mode.hasCheck()%>"
332            ><base:icon 
333              image="check_uncheck.gif" 
334              tooltip="Check/uncheck all" 
335              onclick="Forms.checkUncheck(document.forms[formId])" style="align: left;"
336            /></tbl:header>
337          <tbl:header 
338            clazz="check" 
339            visible="<%=mode.hasRadio()%>"
340            >&nbsp;</tbl:header>
341          <tbl:header 
342            clazz="icons" 
343            visible="<%=mode.hasIcons()%>"
344            >&nbsp;</tbl:header>
345          <tbl:propertyfilter />
346        </tr>
347         
348          <tbl:rows>
349          <%
350          int index = cc.getPage()*cc.getRowsPerPage();
351          int selectedItemId = cc.getId();
352          if (platforms != null)
353          {           
354            while (platforms.hasNext())
355            {
356              Platform item = platforms.next();
357              RawDataType rdt = item.getRawDataType();
358              int itemId = item.getId();
359              String name = HTML.encodeTags(item.getName());
360              String tooltip = mode.isSelectionMode() ? 
361                  "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : ""); 
362              index++;
363              numListed++;
364              %>
365              <tbl:row>
366                <tbl:header 
367                  clazz="index"
368                  ><%=index%></tbl:header>
369                <tbl:header 
370                  clazz="check" 
371                  visible="<%=mode.hasCheck()%>"
372                  ><input 
373                    type="checkbox" 
374                    name="<%=itemId%>" 
375                    value="<%=itemId%>" 
376                    title="<%=name%>" 
377                    <%=cc.getSelected().contains(itemId) ? "checked" : ""%> 
378                  ></tbl:header>
379                <tbl:header 
380                  clazz="check" 
381                  visible="<%=mode.hasRadio()%>"
382                  ><input 
383                    type="radio" 
384                    name="item_id" 
385                    value="<%=itemId%>" 
386                    title="<%=name%>" 
387                    <%=selectedItemId == itemId ? "checked" : ""%>
388                  ></tbl:header>
389                <tbl:header 
390                  clazz="icons" 
391                  visible="<%=mode.hasIcons()%>"
392                  ><base:icon 
393                    image="deleted.gif" 
394                    tooltip="This item has been scheduled for deletion" 
395                    visible="<%=item.isRemoved()%>"
396                  />&nbsp;</tbl:header>
397                <tbl:cell column="name"><div class="link" 
398                  onclick="itemOnClick(<%=writePermission ? "event" : null%>, <%=itemId%>)"
399                  title="<%=tooltip%>"><%=name%></div></tbl:cell>
400                <tbl:cell column="externalId"><%=item.getExternalId()%></tbl:cell>
401                <tbl:cell column="fileOnly"><%=item.isFileOnly() ? "yes" : "no"%></tbl:cell>
402                <tbl:cell column="channels"><%=rdt == null ? "N/A" : rdt.getChannels()%></tbl:cell>
403                <tbl:cell column="rawDataType">
404                  <%=item.isFileOnly() ? "N/A" : (rdt == null ? "<i>- any -</i>" : rdt.getName())%>
405                </tbl:cell>
406                <tbl:cell column="variants">
407                  <%
408                  variantQuery.setParameter("platform", itemId, Type.INT);
409                  try
410                  {
411                    String separator = "";
412                    for (PlatformVariant v : variantQuery.list(dc))
413                    {
414                      out.write(separator);
415                      if (mode.hasPropertyLink())
416                      {
417                        out.write(Base.getLinkedName(ID, v, false, mode.hasEditLink()));
418                      }
419                      else
420                      {
421                        out.write(HTML.encodeTags(v.getName()));
422                      }
423                      separator = ", ";
424                    }
425                  }
426                  catch (Throwable t)
427                  {
428                    %>
429                    <div class="error"><%=t.getMessage()%></div>
430                    <%
431                  }
432                  %>
433                  <base:icon
434                    image="add.png" 
435                    onclick="<%="newVariant("+itemId+")"%>" 
436                    tooltip="Create new variant" 
437                    visible="<%=mode.hasEditLink() && createVariantPermission %>"
438                  />
439                </tbl:cell>
440                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
441              </tbl:row>
442              <%
443              }
444            }
445          %>
446          </tbl:rows>
447      </tbl:data>
448      <%
449      if (numListed == 0)
450      {
451        %>
452        <tbl:panel><%=platforms == null || platforms.getTotalCount() == 0 ? "No platforms were found" : "No platforms on this page. Please select another page!" %></tbl:panel>
453        <%
454      }
455      else
456      {
457        %>
458        <tbl:navigator
459          page="<%=cc.getPage()%>" 
460          rowsperpage="<%=cc.getRowsPerPage()%>" 
461          totalrows="<%=platforms == null ? 0 : platforms.getTotalCount()%>" 
462          visible="<%=mode.hasNavigator()%>"
463          locked="true"
464        />
465        <%
466      }
467      %>
468    </tbl:table>
469    <base:buttongroup align="center" clazz="fixedatbottom">
470      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
471      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
472      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
473    </base:buttongroup>
474    <br><br><br>
475  </base:body>
476  </base:page>
477  <%
478}
479finally
480{
481  if (platforms != null) platforms.close();
482  if (dc != null) dc.close();
483}
484%>
Note: See TracBrowser for help on using the repository browser.