www/biomaterials/bioplatetypes/edit_platetype.jsp

Code
Comments
Other
Rev Date Author Line
5262 08 Mar 10 nicklas 1 <%-- $Id $
5262 08 Mar 10 nicklas 2   ------------------------------------------------------------------
5262 08 Mar 10 nicklas 3   Copyright (C) 2010 Nicklas Nordborg
5262 08 Mar 10 nicklas 4
5262 08 Mar 10 nicklas 5   This file is part of BASE - BioArray Software Environment.
5262 08 Mar 10 nicklas 6   Available at http://base.thep.lu.se/
5262 08 Mar 10 nicklas 7
5262 08 Mar 10 nicklas 8   BASE is free software; you can redistribute it and/or
5262 08 Mar 10 nicklas 9   modify it under the terms of the GNU General Public License
5262 08 Mar 10 nicklas 10   as published by the Free Software Foundation; either version 3
5262 08 Mar 10 nicklas 11   of the License, or (at your option) any later version.
5262 08 Mar 10 nicklas 12
5262 08 Mar 10 nicklas 13   BASE is distributed in the hope that it will be useful,
5262 08 Mar 10 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
5262 08 Mar 10 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5262 08 Mar 10 nicklas 16   GNU General Public License for more details.
5262 08 Mar 10 nicklas 17
5262 08 Mar 10 nicklas 18   You should have received a copy of the GNU General Public License
5262 08 Mar 10 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5262 08 Mar 10 nicklas 20   ------------------------------------------------------------------
5262 08 Mar 10 nicklas 21
5262 08 Mar 10 nicklas 22
5262 08 Mar 10 nicklas 23   @author Nicklas
5262 08 Mar 10 nicklas 24   @version 2.0
5262 08 Mar 10 nicklas 25 --%>
6306 13 Aug 13 nicklas 26 <%@page import="org.json.simple.JSONObject"%>
6306 13 Aug 13 nicklas 27 <%@page import="org.json.simple.JSONArray"%>
5426 24 Sep 10 nicklas 28 <%@ page pageEncoding="UTF-8" session="false"
5262 08 Mar 10 nicklas 29   import="net.sf.basedb.core.SessionControl"
5262 08 Mar 10 nicklas 30   import="net.sf.basedb.core.DbControl"
5262 08 Mar 10 nicklas 31   import="net.sf.basedb.core.Item"
5262 08 Mar 10 nicklas 32   import="net.sf.basedb.core.ItemContext"
5262 08 Mar 10 nicklas 33   import="net.sf.basedb.core.SystemItems"
5262 08 Mar 10 nicklas 34   import="net.sf.basedb.core.Permission"
5262 08 Mar 10 nicklas 35   import="net.sf.basedb.core.Include"
5262 08 Mar 10 nicklas 36   import="net.sf.basedb.core.BioPlateType"
5459 29 Oct 10 nicklas 37   import="net.sf.basedb.core.BioWell"
5709 26 Aug 11 nicklas 38   import="net.sf.basedb.core.ItemSubtype"
5262 08 Mar 10 nicklas 39   import="net.sf.basedb.core.ItemQuery"
5262 08 Mar 10 nicklas 40   import="net.sf.basedb.core.ItemResultList"
5262 08 Mar 10 nicklas 41   import="net.sf.basedb.core.PermissionDeniedException"
5262 08 Mar 10 nicklas 42   import="net.sf.basedb.core.BaseException"
5709 26 Aug 11 nicklas 43   import="net.sf.basedb.core.query.Expressions"
5709 26 Aug 11 nicklas 44   import="net.sf.basedb.core.query.Restrictions"
5262 08 Mar 10 nicklas 45   import="net.sf.basedb.core.query.Orders"
5262 08 Mar 10 nicklas 46   import="net.sf.basedb.core.query.Hql"
5262 08 Mar 10 nicklas 47   import="net.sf.basedb.clients.web.Base"
5262 08 Mar 10 nicklas 48   import="net.sf.basedb.clients.web.util.HTML"
5262 08 Mar 10 nicklas 49   import="net.sf.basedb.util.Values"
5492 16 Nov 10 nicklas 50   import="net.sf.basedb.core.plugin.GuiContext"
5492 16 Nov 10 nicklas 51   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5492 16 Nov 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.JspContext"
5492 16 Nov 10 nicklas 53   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 54   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5492 16 Nov 10 nicklas 55   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5262 08 Mar 10 nicklas 56   import="java.util.List"
5262 08 Mar 10 nicklas 57   import="java.util.Set"
5262 08 Mar 10 nicklas 58   import="java.util.HashSet"
5262 08 Mar 10 nicklas 59   import="java.util.Date"
5262 08 Mar 10 nicklas 60 %>
5262 08 Mar 10 nicklas 61 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
5262 08 Mar 10 nicklas 62 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6145 21 Sep 12 nicklas 63 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
5262 08 Mar 10 nicklas 64 <%
5262 08 Mar 10 nicklas 65 final Item itemType = Item.BIOPLATETYPE;
5262 08 Mar 10 nicklas 66 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
5262 08 Mar 10 nicklas 67 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
5262 08 Mar 10 nicklas 68 final int itemId = cc.getId();
5262 08 Mar 10 nicklas 69 final String ID = sc.getId();
5262 08 Mar 10 nicklas 70 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 71 final DbControl dc = sc.newDbControl(":Edit "+itemType);
5262 08 Mar 10 nicklas 72 try
5262 08 Mar 10 nicklas 73 {
5262 08 Mar 10 nicklas 74   String title = null;
5262 08 Mar 10 nicklas 75   BioPlateType bioPlateType = null;
5459 29 Oct 10 nicklas 76   BioWell.LockMode lockMode = BioWell.LockMode.UNLOCKED;
5709 26 Aug 11 nicklas 77   boolean readCurrentSubtype = true;
5709 26 Aug 11 nicklas 78   ItemSubtype currentSubtype = null;
6056 12 Jun 12 nicklas 79   boolean readCurrentStorageType = true;
6056 12 Jun 12 nicklas 80   ItemSubtype currentStorageType = null;
6056 12 Jun 12 nicklas 81   
5709 26 Aug 11 nicklas 82   ItemQuery<ItemSubtype> subtypesQuery = null;
6056 12 Jun 12 nicklas 83   ItemQuery<ItemSubtype> storageTypeQuery = Base.getSubtypesQuery(Item.HARDWARE);
5262 08 Mar 10 nicklas 84   
5262 08 Mar 10 nicklas 85   if (itemId == 0)
5262 08 Mar 10 nicklas 86   {
5708 25 Aug 11 nicklas 87     title = "Create bioplate type";
5262 08 Mar 10 nicklas 88     cc.removeObject("item");
5459 29 Oct 10 nicklas 89     int lm = Values.getInt(cc.getPropertyValue("lockMode"));
5459 29 Oct 10 nicklas 90     lockMode = BioWell.LockMode.fromValue(lm);
5709 26 Aug 11 nicklas 91     subtypesQuery = Base.getSubtypesQuery(null);
5709 26 Aug 11 nicklas 92     subtypesQuery.restrict(
5709 26 Aug 11 nicklas 93         Restrictions.in(
5709 26 Aug 11 nicklas 94           Hql.property("itemType"), 
5709 26 Aug 11 nicklas 95           Expressions.integer(Item.SAMPLE.getValue()), Expressions.integer(Item.EXTRACT.getValue())
5709 26 Aug 11 nicklas 96         ));
5262 08 Mar 10 nicklas 97   }
5262 08 Mar 10 nicklas 98   else
5262 08 Mar 10 nicklas 99   {
5262 08 Mar 10 nicklas 100     bioPlateType = BioPlateType.getById(dc, itemId);
5262 08 Mar 10 nicklas 101     bioPlateType.checkPermission(Permission.WRITE);
5459 29 Oct 10 nicklas 102     lockMode = bioPlateType.getLockMode();
5262 08 Mar 10 nicklas 103     cc.setObject("item", bioPlateType);
5708 25 Aug 11 nicklas 104     title = "Edit bioplate type -- " + HTML.encodeTags(bioPlateType.getName());
5709 26 Aug 11 nicklas 105     try
5709 26 Aug 11 nicklas 106     {
5709 26 Aug 11 nicklas 107       currentSubtype = bioPlateType.getItemSubtype();
5709 26 Aug 11 nicklas 108     }
5709 26 Aug 11 nicklas 109     catch (PermissionDeniedException ex)
5709 26 Aug 11 nicklas 110     {
5709 26 Aug 11 nicklas 111       readCurrentSubtype = false;
5709 26 Aug 11 nicklas 112     }
6056 12 Jun 12 nicklas 113     try
6056 12 Jun 12 nicklas 114     {
6056 12 Jun 12 nicklas 115       currentStorageType = bioPlateType.getStorageType();
6056 12 Jun 12 nicklas 116     }
6056 12 Jun 12 nicklas 117     catch (PermissionDeniedException ex)
6056 12 Jun 12 nicklas 118     {
6056 12 Jun 12 nicklas 119       readCurrentStorageType = false;
6056 12 Jun 12 nicklas 120     }
5709 26 Aug 11 nicklas 121     if (bioPlateType.getBioMaterialType() != null)
5709 26 Aug 11 nicklas 122     {
5709 26 Aug 11 nicklas 123       subtypesQuery = Base.getSubtypesQuery(bioPlateType.getBioMaterialType());
5709 26 Aug 11 nicklas 124     }
5262 08 Mar 10 nicklas 125   }
6217 14 Dec 12 nicklas 126   
6306 13 Aug 13 nicklas 127   JSONArray jsonSubtypes = new JSONArray();
6306 13 Aug 13 nicklas 128   if (subtypesQuery != null)
6306 13 Aug 13 nicklas 129   {
6306 13 Aug 13 nicklas 130     for (ItemSubtype subtype : subtypesQuery.list(dc))
6306 13 Aug 13 nicklas 131     {
6306 13 Aug 13 nicklas 132       JSONObject jsonSubtype = new JSONObject();
6306 13 Aug 13 nicklas 133       jsonSubtype.put("id", subtype.getId());
6306 13 Aug 13 nicklas 134       jsonSubtype.put("name", subtype.getName());
6306 13 Aug 13 nicklas 135       jsonSubtype.put("description", subtype.getDescription());
6306 13 Aug 13 nicklas 136       jsonSubtype.put("bmType", subtype.getMainItemType().name());
6306 13 Aug 13 nicklas 137       jsonSubtypes.add(jsonSubtype);
6306 13 Aug 13 nicklas 138     }
6306 13 Aug 13 nicklas 139   }
6217 14 Dec 12 nicklas 140   
5492 16 Nov 10 nicklas 141   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), bioPlateType);
7604 25 Feb 19 nicklas 142   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
5262 08 Mar 10 nicklas 143   %>
6306 13 Aug 13 nicklas 144   <base:page type="popup" title="<%=title%>" id="edit-page">
6306 13 Aug 13 nicklas 145   <base:head scripts="tabcontrol-2.js,~bioplatetypes.js" styles="tabcontrol.css">
5492 16 Nov 10 nicklas 146     <ext:scripts context="<%=jspContext%>" />
5492 16 Nov 10 nicklas 147     <ext:stylesheets context="<%=jspContext%>" />
5262 08 Mar 10 nicklas 148   </base:head>
6306 13 Aug 13 nicklas 149   <base:body>
5913 15 Dec 11 nicklas 150     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 151     <form action="index.jsp?ID=<%=ID%>" method="post" name="bioPlateType">
5262 08 Mar 10 nicklas 152     <input type="hidden" name="cmd" value="UpdateItem">
5262 08 Mar 10 nicklas 153
6306 13 Aug 13 nicklas 154     <div id="page-data" class="datacontainer"
6306 13 Aug 13 nicklas 155       data-subtypes="<%=HTML.encodeTags(jsonSubtypes.toJSONString())%>"
6306 13 Aug 13 nicklas 156       data-current-subtype="<%=currentSubtype == null ? 0 : currentSubtype.getId() %>"
6413 05 Feb 14 nicklas 157       data-current-bm-type="<%=bioPlateType == null || bioPlateType.getBioMaterialType() == null ? "" : bioPlateType.getBioMaterialType().name() %>"
6306 13 Aug 13 nicklas 158     ></div>
6306 13 Aug 13 nicklas 159   
5913 15 Dec 11 nicklas 160     <t:tabcontrol id="settings" 
5913 15 Dec 11 nicklas 161       subclass="content dialogtabcontrol"
5492 16 Nov 10 nicklas 162       position="bottom"  remember="<%=bioPlateType != null%>"
5492 16 Nov 10 nicklas 163       extensions="<%=invoker%>">
6306 13 Aug 13 nicklas 164     <t:tab id="info" title="Bioplate type" helpid="bioplatetype.edit">
5913 15 Dec 11 nicklas 165       <table class="fullform input100">
5262 08 Mar 10 nicklas 166       <tr>
5913 15 Dec 11 nicklas 167         <th>Name</th>
6306 13 Aug 13 nicklas 168         <td><input class="text required auto-init" data-auto-init="<%=bioPlateType == null ? "focus-select" : "focus" %>"
6306 13 Aug 13 nicklas 169           type="text" name="name" 
5708 25 Aug 11 nicklas 170           value="<%=HTML.encodeTags(bioPlateType == null ? Values.getString(cc.getPropertyValue("name"), "New bioplate type") : bioPlateType.getName())%>" 
5913 15 Dec 11 nicklas 171           maxlength="<%=BioPlateType.MAX_NAME_LENGTH%>"></td>
5913 15 Dec 11 nicklas 172         <td></td>
5262 08 Mar 10 nicklas 173       </tr>
5913 15 Dec 11 nicklas 174       <tr>
5913 15 Dec 11 nicklas 175         <th>Biomaterial type</th>
5709 26 Aug 11 nicklas 176         <%
5709 26 Aug 11 nicklas 177         if (bioPlateType == null)
5709 26 Aug 11 nicklas 178         {
5709 26 Aug 11 nicklas 179           %>
5709 26 Aug 11 nicklas 180             <td>
6306 13 Aug 13 nicklas 181               <select name="bioMaterialType" id="bioMaterialType" class="required unchangeable">
5709 26 Aug 11 nicklas 182               <option value="">- any -
5709 26 Aug 11 nicklas 183               <option value="<%=Item.SAMPLE.name()%>">Sample
5709 26 Aug 11 nicklas 184               <option value="<%=Item.EXTRACT.name()%>">Extract
5709 26 Aug 11 nicklas 185               </select>
5709 26 Aug 11 nicklas 186             </td>
5709 26 Aug 11 nicklas 187           <%
5709 26 Aug 11 nicklas 188         }
5709 26 Aug 11 nicklas 189         else
5709 26 Aug 11 nicklas 190         {
5709 26 Aug 11 nicklas 191           %>
5709 26 Aug 11 nicklas 192           <td><%=bioPlateType.getBioMaterialType() == null ? "- any -" : bioPlateType.getBioMaterialType()%></td>
5709 26 Aug 11 nicklas 193           <%
5709 26 Aug 11 nicklas 194         }
5709 26 Aug 11 nicklas 195         %>
5913 15 Dec 11 nicklas 196         <td></td>
5709 26 Aug 11 nicklas 197       </tr>
5262 08 Mar 10 nicklas 198       <%
5709 26 Aug 11 nicklas 199       if (subtypesQuery != null)
5262 08 Mar 10 nicklas 200       {
5262 08 Mar 10 nicklas 201         %>
5913 15 Dec 11 nicklas 202         <tr>
5913 15 Dec 11 nicklas 203           <th>Biomaterial subtype</th>
5913 15 Dec 11 nicklas 204           <td>
6306 13 Aug 13 nicklas 205             <select name="subtype_id" id="subtype_id"
6306 13 Aug 13 nicklas 206               <%=!readCurrentSubtype ? "disabled readonly class=\"disabled selectionlist\"" : "class=\"selectionlist\""%>>
5709 26 Aug 11 nicklas 207             <%
5709 26 Aug 11 nicklas 208             if (!readCurrentSubtype)
5709 26 Aug 11 nicklas 209             {
5709 26 Aug 11 nicklas 210               %>
5709 26 Aug 11 nicklas 211               <option value="-1">- denied -
5709 26 Aug 11 nicklas 212               <%
5709 26 Aug 11 nicklas 213             }
5709 26 Aug 11 nicklas 214             %>
5262 08 Mar 10 nicklas 215             </select>
5262 08 Mar 10 nicklas 216           </td>
5913 15 Dec 11 nicklas 217           <td></td>
5262 08 Mar 10 nicklas 218         </tr>
5262 08 Mar 10 nicklas 219         <%
5262 08 Mar 10 nicklas 220       }
5262 08 Mar 10 nicklas 221       %>
5262 08 Mar 10 nicklas 222       <tr>
6056 12 Jun 12 nicklas 223         <th>Storage type</th>
6056 12 Jun 12 nicklas 224         <td>
6306 13 Aug 13 nicklas 225           <select name="storagetype_id" id="storeagetype_id"
6306 13 Aug 13 nicklas 226             <%=!readCurrentStorageType ? "disabled readonly class=\"disabled selectionlist\"" : "class=\"selectionlist\""%>>
6056 12 Jun 12 nicklas 227           <%
6056 12 Jun 12 nicklas 228           if (!readCurrentStorageType)
6056 12 Jun 12 nicklas 229           {
6056 12 Jun 12 nicklas 230             %>
6056 12 Jun 12 nicklas 231             <option value="-1">- denied -
6056 12 Jun 12 nicklas 232             <%
6056 12 Jun 12 nicklas 233           }
6056 12 Jun 12 nicklas 234           else
6056 12 Jun 12 nicklas 235           {
6056 12 Jun 12 nicklas 236             %>
6056 12 Jun 12 nicklas 237             <option value="0">-none-
6056 12 Jun 12 nicklas 238             <%
6056 12 Jun 12 nicklas 239             int currentStorageTypeId = currentStorageType == null ? 0 : currentStorageType.getId();
6056 12 Jun 12 nicklas 240             for (ItemSubtype storageType : storageTypeQuery.list(dc))
6056 12 Jun 12 nicklas 241             {
6056 12 Jun 12 nicklas 242               int id = storageType.getId();
6056 12 Jun 12 nicklas 243               if (id != currentStorageTypeId && storageType.isRemoved()) continue;
6056 12 Jun 12 nicklas 244               %>
6056 12 Jun 12 nicklas 245               <option value="<%=id == currentStorageTypeId && bioPlateType != null ? -id : id%>" 
6056 12 Jun 12 nicklas 246                 <%=id == currentStorageTypeId ? "selected" : ""%>
6056 12 Jun 12 nicklas 247                 title="<%=HTML.encodeTags(storageType.getDescription()) %>"
6056 12 Jun 12 nicklas 248                 ><%=HTML.encodeTags(storageType.getName())%>
6056 12 Jun 12 nicklas 249               <%
6056 12 Jun 12 nicklas 250             }
6056 12 Jun 12 nicklas 251           }
6056 12 Jun 12 nicklas 252           %>
6056 12 Jun 12 nicklas 253           </select>
6056 12 Jun 12 nicklas 254         </td>
6056 12 Jun 12 nicklas 255         <td></td>
6056 12 Jun 12 nicklas 256       </tr>
6056 12 Jun 12 nicklas 257       <tr>
5913 15 Dec 11 nicklas 258         <th>Well lock mode</th>
5262 08 Mar 10 nicklas 259         <td>
5913 15 Dec 11 nicklas 260           <select name="lockMode" class="selectionlist">
5459 29 Oct 10 nicklas 261           <%
5459 29 Oct 10 nicklas 262           for (BioWell.LockMode lm : BioWell.LockMode.values())
5459 29 Oct 10 nicklas 263           {
5459 29 Oct 10 nicklas 264             String selected = lm == lockMode ? "selected" : "";
5459 29 Oct 10 nicklas 265             %>
5459 29 Oct 10 nicklas 266             <option value="<%=lm.name()%>" <%=selected%>><%=lm%>
5459 29 Oct 10 nicklas 267             <%
5459 29 Oct 10 nicklas 268           }
5459 29 Oct 10 nicklas 269           %>
5459 29 Oct 10 nicklas 270           </select>
5262 08 Mar 10 nicklas 271         </td>
5913 15 Dec 11 nicklas 272         <td></td>
5262 08 Mar 10 nicklas 273       </tr>
5913 15 Dec 11 nicklas 274       <tr class="dynamic">
5913 15 Dec 11 nicklas 275         <th>Description</th>
5913 15 Dec 11 nicklas 276         <td>
6217 14 Dec 12 nicklas 277           <textarea class="text" rows="6" name="description" id="description"
5262 08 Mar 10 nicklas 278             ><%=HTML.encodeTags(bioPlateType == null ? cc.getPropertyValue("description") : bioPlateType.getDescription())%></textarea>
5262 08 Mar 10 nicklas 279         </td>
5913 15 Dec 11 nicklas 280         <td style="width: 20px;">
6215 13 Dec 12 nicklas 281           <base:zoom textarea="description" title="Description" />
5913 15 Dec 11 nicklas 282         </td>
5262 08 Mar 10 nicklas 283       </tr>
5262 08 Mar 10 nicklas 284       </table>
5262 08 Mar 10 nicklas 285     </t:tab>
5262 08 Mar 10 nicklas 286     </t:tabcontrol>
5913 15 Dec 11 nicklas 287     </form>
5262 08 Mar 10 nicklas 288
5913 15 Dec 11 nicklas 289     <div class="legend">
5946 03 Feb 12 nicklas 290       <base:icon image="required.png" />= required information
5913 15 Dec 11 nicklas 291       <%if (bioPlateType == null) {%><br>
5967 16 Feb 12 nicklas 292         <base:icon image="unchangeable.png" />= can't be changed later
5913 15 Dec 11 nicklas 293       <%}%>
5913 15 Dec 11 nicklas 294     </div>
5913 15 Dec 11 nicklas 295
5913 15 Dec 11 nicklas 296     <base:buttongroup subclass="dialogbuttons">
6306 13 Aug 13 nicklas 297       <base:button id="btnSave" title="Save" />
6306 13 Aug 13 nicklas 298       <base:button id="close" title="Cancel" />
5913 15 Dec 11 nicklas 299     </base:buttongroup>
5262 08 Mar 10 nicklas 300   </base:body>
5262 08 Mar 10 nicklas 301   </base:page>
5262 08 Mar 10 nicklas 302   <%
5262 08 Mar 10 nicklas 303 }
5262 08 Mar 10 nicklas 304 finally
5262 08 Mar 10 nicklas 305 {
5262 08 Mar 10 nicklas 306   if (dc != null) dc.close();
5262 08 Mar 10 nicklas 307 }
5262 08 Mar 10 nicklas 308 %>