www/lims/platemappings/edit_mapping.jsp

Code
Comments
Other
Rev Date Author Line
1850 26 Jan 06 nicklas 1 <%-- $Id$
1850 26 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
1850 26 Jan 06 nicklas 4
2304 22 May 06 jari 5   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 6   Available at http://base.thep.lu.se/
1850 26 Jan 06 nicklas 7
1850 26 Jan 06 nicklas 8   BASE is free software; you can redistribute it and/or
1850 26 Jan 06 nicklas 9   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 10   as published by the Free Software Foundation; either version 3
1850 26 Jan 06 nicklas 11   of the License, or (at your option) any later version.
1850 26 Jan 06 nicklas 12
1850 26 Jan 06 nicklas 13   BASE is distributed in the hope that it will be useful,
1850 26 Jan 06 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
1850 26 Jan 06 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1850 26 Jan 06 nicklas 16   GNU General Public License for more details.
1850 26 Jan 06 nicklas 17
1850 26 Jan 06 nicklas 18   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1850 26 Jan 06 nicklas 20   ------------------------------------------------------------------
1850 26 Jan 06 nicklas 21
1850 26 Jan 06 nicklas 22
1850 26 Jan 06 nicklas 23   @author Nicklas
1850 26 Jan 06 nicklas 24   @version 2.0
1850 26 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1850 26 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1850 26 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1850 26 Jan 06 nicklas 29   import="net.sf.basedb.core.Item"
1850 26 Jan 06 nicklas 30   import="net.sf.basedb.core.ItemContext"
1850 26 Jan 06 nicklas 31   import="net.sf.basedb.core.SystemItems"
1850 26 Jan 06 nicklas 32   import="net.sf.basedb.core.Permission"
1850 26 Jan 06 nicklas 33   import="net.sf.basedb.core.Include"
1850 26 Jan 06 nicklas 34   import="net.sf.basedb.core.PlateMapping"
1850 26 Jan 06 nicklas 35   import="net.sf.basedb.core.PlateGeometry"
1850 26 Jan 06 nicklas 36   import="net.sf.basedb.core.ItemQuery"
1850 26 Jan 06 nicklas 37   import="net.sf.basedb.core.ItemResultList"
1850 26 Jan 06 nicklas 38   import="net.sf.basedb.core.PermissionDeniedException"
1850 26 Jan 06 nicklas 39   import="net.sf.basedb.core.BaseException"
1850 26 Jan 06 nicklas 40   import="net.sf.basedb.core.query.Orders"
1850 26 Jan 06 nicklas 41   import="net.sf.basedb.core.query.Hql"
1850 26 Jan 06 nicklas 42   import="net.sf.basedb.clients.web.Base"
1850 26 Jan 06 nicklas 43   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 44   import="net.sf.basedb.util.Values"
5498 17 Nov 10 nicklas 45   import="net.sf.basedb.core.plugin.GuiContext"
5498 17 Nov 10 nicklas 46   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5498 17 Nov 10 nicklas 47   import="net.sf.basedb.clients.web.extensions.JspContext"
5498 17 Nov 10 nicklas 48   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 49   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5498 17 Nov 10 nicklas 50   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1850 26 Jan 06 nicklas 51   import="java.util.List"
1850 26 Jan 06 nicklas 52   import="java.util.Set"
1850 26 Jan 06 nicklas 53   import="java.util.HashSet"
1850 26 Jan 06 nicklas 54   import="java.util.Date"
1850 26 Jan 06 nicklas 55 %>
1850 26 Jan 06 nicklas 56 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1850 26 Jan 06 nicklas 57 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6146 21 Sep 12 nicklas 58 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1850 26 Jan 06 nicklas 59 <%
1850 26 Jan 06 nicklas 60 final Item itemType = Item.PLATEMAPPING;
1850 26 Jan 06 nicklas 61 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1850 26 Jan 06 nicklas 62 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1850 26 Jan 06 nicklas 63 final int itemId = cc.getId();
1850 26 Jan 06 nicklas 64 final String ID = sc.getId();
1850 26 Jan 06 nicklas 65 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 66 final DbControl dc = sc.newDbControl(":Edit "+itemType);
1850 26 Jan 06 nicklas 67 try
1850 26 Jan 06 nicklas 68 {
1850 26 Jan 06 nicklas 69   String title = null;
1850 26 Jan 06 nicklas 70   PlateMapping mapping = null;
1850 26 Jan 06 nicklas 71   ItemResultList<PlateGeometry> plateGeometries = null;
1850 26 Jan 06 nicklas 72   
1850 26 Jan 06 nicklas 73   boolean readCurrentSourceGeometry = true;
1850 26 Jan 06 nicklas 74   PlateGeometry currentSourceGeometry = null;
1850 26 Jan 06 nicklas 75   int currentSourceGeometryId = 0;
1850 26 Jan 06 nicklas 76   
1850 26 Jan 06 nicklas 77   boolean readCurrentDestinationGeometry = true;
1850 26 Jan 06 nicklas 78   PlateGeometry currentDestinationGeometry = null;
1850 26 Jan 06 nicklas 79   int currentDestinationGeometryId = 0;
1850 26 Jan 06 nicklas 80   
1850 26 Jan 06 nicklas 81   if (itemId == 0)
1850 26 Jan 06 nicklas 82   {
1850 26 Jan 06 nicklas 83     title = "Create plate mapping";
1850 26 Jan 06 nicklas 84     cc.removeObject("item");
1850 26 Jan 06 nicklas 85     
1850 26 Jan 06 nicklas 86     ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();
1850 26 Jan 06 nicklas 87     geometryQuery.order(Orders.asc(Hql.property("name")));
1850 26 Jan 06 nicklas 88     geometryQuery.setCacheResult(true);
1850 26 Jan 06 nicklas 89
1850 26 Jan 06 nicklas 90     plateGeometries = geometryQuery.list(dc);
1850 26 Jan 06 nicklas 91     currentSourceGeometryId = Values.getInt(cc.getPropertyValue("sourceGeometry"), 0);
1850 26 Jan 06 nicklas 92     currentDestinationGeometryId = Values.getInt(cc.getPropertyValue("destinationGeometry"), 0);
1850 26 Jan 06 nicklas 93   }
1850 26 Jan 06 nicklas 94   else
1850 26 Jan 06 nicklas 95   {
1850 26 Jan 06 nicklas 96     mapping = PlateMapping.getById(dc, itemId);
6312 28 Aug 13 nicklas 97     mapping.checkPermission(Permission.WRITE);
1850 26 Jan 06 nicklas 98     cc.setObject("item", mapping);
1850 26 Jan 06 nicklas 99     title = "Edit plate mapping -- " + HTML.encodeTags(mapping.getName());
1850 26 Jan 06 nicklas 100     
1850 26 Jan 06 nicklas 101     try
1850 26 Jan 06 nicklas 102     {
1850 26 Jan 06 nicklas 103       currentSourceGeometry = mapping.getSourceGeometry();
1850 26 Jan 06 nicklas 104     }
1850 26 Jan 06 nicklas 105     catch (PermissionDeniedException ex)
1850 26 Jan 06 nicklas 106     {
1850 26 Jan 06 nicklas 107       readCurrentSourceGeometry = false;
1850 26 Jan 06 nicklas 108     }
1850 26 Jan 06 nicklas 109     try
1850 26 Jan 06 nicklas 110     {
1850 26 Jan 06 nicklas 111       currentDestinationGeometry = mapping.getDestinationGeometry();
1850 26 Jan 06 nicklas 112     }
1850 26 Jan 06 nicklas 113     catch (PermissionDeniedException ex)
1850 26 Jan 06 nicklas 114     {
1850 26 Jan 06 nicklas 115       readCurrentDestinationGeometry = false;
1850 26 Jan 06 nicklas 116     }
1850 26 Jan 06 nicklas 117   }
5498 17 Nov 10 nicklas 118   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), mapping);
7604 25 Feb 19 nicklas 119   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
1850 26 Jan 06 nicklas 120   %>
6312 28 Aug 13 nicklas 121   <base:page type="popup" title="<%=title%>" id="edit-page">
6312 28 Aug 13 nicklas 122   <base:head scripts="tabcontrol-2.js,~mappings.js" styles="tabcontrol.css">
5498 17 Nov 10 nicklas 123     <ext:scripts context="<%=jspContext%>" />
5498 17 Nov 10 nicklas 124     <ext:stylesheets context="<%=jspContext%>" />
1850 26 Jan 06 nicklas 125   </base:head>
6312 28 Aug 13 nicklas 126   <base:body>
5920 10 Jan 12 nicklas 127     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 128     <form action="index.jsp?ID=<%=ID%>" method="post" name="mapping">
1850 26 Jan 06 nicklas 129     <input type="hidden" name="cmd" value="UpdateItem">
1850 26 Jan 06 nicklas 130
5920 10 Jan 12 nicklas 131     <t:tabcontrol id="settings"
5920 10 Jan 12 nicklas 132       subclass="content dialogtabcontrol"
5498 17 Nov 10 nicklas 133       position="bottom" remember="<%=mapping != null%>"
5498 17 Nov 10 nicklas 134       extensions="<%=invoker%>">
6312 28 Aug 13 nicklas 135     <t:tab id="info" title="Plate mapping" helpid="platemapping.edit">
5920 10 Jan 12 nicklas 136       <table class="fullform input100 smaller">
1850 26 Jan 06 nicklas 137       <tr>
5920 10 Jan 12 nicklas 138         <th>Name</th>
6312 28 Aug 13 nicklas 139         <td><input class="text required auto-init" data-auto-init="<%=mapping == null ? "focus-select" : "focus" %>"
6312 28 Aug 13 nicklas 140           type="text" name="name" 
1850 26 Jan 06 nicklas 141           value="<%=HTML.encodeTags(mapping == null ? Values.getString(cc.getPropertyValue("name"), "New plate mapping") : mapping.getName())%>" 
5920 10 Jan 12 nicklas 142           maxlength="<%=PlateMapping.MAX_NAME_LENGTH%>"></td>
5920 10 Jan 12 nicklas 143         <td></td>
1850 26 Jan 06 nicklas 144       </tr>
5920 10 Jan 12 nicklas 145       <tr>
5920 10 Jan 12 nicklas 146         <th>Source plates</th>
1850 26 Jan 06 nicklas 147         <td>
1850 26 Jan 06 nicklas 148           <%
1850 26 Jan 06 nicklas 149           if (mapping == null)
1850 26 Jan 06 nicklas 150           {
1850 26 Jan 06 nicklas 151             %>
6312 28 Aug 13 nicklas 152             <input class="text required" type="text" name="source_count" id="source_count"
6312 28 Aug 13 nicklas 153               style="width: 15em;" maxlength="10"
6312 28 Aug 13 nicklas 154               value="<%=Values.getInt(cc.getPropertyValue("sourceCount"), 1)%>">
1850 26 Jan 06 nicklas 155             plate(s) of
1850 26 Jan 06 nicklas 156             <select name="sourcegeometry_id" class="required">
1850 26 Jan 06 nicklas 157             <%
1850 26 Jan 06 nicklas 158             for (PlateGeometry pg : plateGeometries)
1850 26 Jan 06 nicklas 159             {
1850 26 Jan 06 nicklas 160               %>
1850 26 Jan 06 nicklas 161               <option value="<%=pg.getId()%>" <%=pg.getId() == currentSourceGeometryId ? "selected" : ""%>><%=HTML.encodeTags(pg.getName())%>
1850 26 Jan 06 nicklas 162               <%
1850 26 Jan 06 nicklas 163             }
1850 26 Jan 06 nicklas 164             %>
1850 26 Jan 06 nicklas 165             </select><br>
1850 26 Jan 06 nicklas 166             can't be changed later
1850 26 Jan 06 nicklas 167             <%
1850 26 Jan 06 nicklas 168           }
1850 26 Jan 06 nicklas 169           else
1850 26 Jan 06 nicklas 170           {
1850 26 Jan 06 nicklas 171             %>
1850 26 Jan 06 nicklas 172             <%=mapping.getSourceCount()%> plate(s) of 
1850 26 Jan 06 nicklas 173             <%=Base.getEncodedName(currentSourceGeometry, !readCurrentSourceGeometry)%>
1850 26 Jan 06 nicklas 174             <%
1850 26 Jan 06 nicklas 175           }
1850 26 Jan 06 nicklas 176           %>
1850 26 Jan 06 nicklas 177         </td>
5920 10 Jan 12 nicklas 178         <td></td>
1850 26 Jan 06 nicklas 179       </tr>
5920 10 Jan 12 nicklas 180       <tr>
5920 10 Jan 12 nicklas 181         <th>Destination plates</th>
1850 26 Jan 06 nicklas 182         <td>
1850 26 Jan 06 nicklas 183           <%
1850 26 Jan 06 nicklas 184           if (mapping == null)
1850 26 Jan 06 nicklas 185           {
1850 26 Jan 06 nicklas 186             %>
6312 28 Aug 13 nicklas 187             <input class="text required" type="text" name="destination_count" id="destination_count" 
6312 28 Aug 13 nicklas 188               style="width: 15em;" maxlength="10"
6312 28 Aug 13 nicklas 189               value="<%=Values.getInt(cc.getPropertyValue("destinationCount"), 1)%>">
1850 26 Jan 06 nicklas 190             plate(s) of
1850 26 Jan 06 nicklas 191             <select name="destinationgeometry_id" class="required">
1850 26 Jan 06 nicklas 192             <%
1850 26 Jan 06 nicklas 193             for (PlateGeometry pg : plateGeometries)
1850 26 Jan 06 nicklas 194             {
1850 26 Jan 06 nicklas 195               %>
1850 26 Jan 06 nicklas 196               <option value="<%=pg.getId()%>" <%=pg.getId() == currentDestinationGeometryId ? "selected" : ""%>><%=HTML.encodeTags(pg.getName())%>
1850 26 Jan 06 nicklas 197               <%
1850 26 Jan 06 nicklas 198             }
1850 26 Jan 06 nicklas 199             %>
1850 26 Jan 06 nicklas 200             </select><br>
1850 26 Jan 06 nicklas 201             can't be changed later
1850 26 Jan 06 nicklas 202             <%
1850 26 Jan 06 nicklas 203           }
1850 26 Jan 06 nicklas 204           else
1850 26 Jan 06 nicklas 205           {
1850 26 Jan 06 nicklas 206             %>
1850 26 Jan 06 nicklas 207             <%=mapping.getDestinationCount()%> plate(s) of 
1850 26 Jan 06 nicklas 208             <%=Base.getEncodedName(currentDestinationGeometry, !readCurrentDestinationGeometry)%>
1850 26 Jan 06 nicklas 209             <%
1850 26 Jan 06 nicklas 210           }
1850 26 Jan 06 nicklas 211           %>
1850 26 Jan 06 nicklas 212         </td>
5920 10 Jan 12 nicklas 213         <td></td>
1850 26 Jan 06 nicklas 214       </tr>
5920 10 Jan 12 nicklas 215       <tr class="big">
5920 10 Jan 12 nicklas 216         <th>Image</th>
1850 26 Jan 06 nicklas 217         <td>
6312 28 Aug 13 nicklas 218           <input class="text" type="text" name="image" id="image"
1850 26 Jan 06 nicklas 219             value="<%=HTML.encodeTags(mapping == null ? "" : mapping.getImage())%>" 
6312 28 Aug 13 nicklas 220             maxlength="<%=PlateMapping.MAX_IMAGE_LENGTH%>">
1850 26 Jan 06 nicklas 221             <br><br>
1850 26 Jan 06 nicklas 222             <%
1850 26 Jan 06 nicklas 223             String src = "noimage.gif";
1850 26 Jan 06 nicklas 224             if (mapping != null && mapping.getImage() != null)
1850 26 Jan 06 nicklas 225             {
1850 26 Jan 06 nicklas 226               src = mapping.getImage();
1850 26 Jan 06 nicklas 227             }
1850 26 Jan 06 nicklas 228             %>
6146 21 Sep 12 nicklas 229             <img id="mappingImage" src="../../images/platemappings/<%=src%>" alt="">
1850 26 Jan 06 nicklas 230         </td>
5920 10 Jan 12 nicklas 231         <td></td>
1850 26 Jan 06 nicklas 232       </tr>
5920 10 Jan 12 nicklas 233       <tr class="dynamic">
5920 10 Jan 12 nicklas 234         <th>Description</th>
5920 10 Jan 12 nicklas 235         <td>
6217 14 Dec 12 nicklas 236           <textarea class="text" rows="6" name="description" id="description"
1850 26 Jan 06 nicklas 237             ><%=HTML.encodeTags(mapping == null ? cc.getPropertyValue("description") : mapping.getDescription())%></textarea>
1850 26 Jan 06 nicklas 238         </td>
5920 10 Jan 12 nicklas 239         <td style="width: 20px;">
6215 13 Dec 12 nicklas 240           <base:zoom textarea="description" title="Description" />
5920 10 Jan 12 nicklas 241         </td>
1850 26 Jan 06 nicklas 242       </tr>
1850 26 Jan 06 nicklas 243       </table>
1850 26 Jan 06 nicklas 244     </t:tab>
1850 26 Jan 06 nicklas 245     </t:tabcontrol>
5920 10 Jan 12 nicklas 246     </form>
5920 10 Jan 12 nicklas 247     
5920 10 Jan 12 nicklas 248     <div class="legend">
5946 03 Feb 12 nicklas 249       <base:icon image="required.png" />= required information
5920 10 Jan 12 nicklas 250     </div>
1850 26 Jan 06 nicklas 251
5920 10 Jan 12 nicklas 252     <base:buttongroup subclass="dialogbuttons">
6312 28 Aug 13 nicklas 253       <base:button id="btnSave" title="Save" />
6312 28 Aug 13 nicklas 254       <base:button id="close" title="Cancel" />
5920 10 Jan 12 nicklas 255     </base:buttongroup>
1850 26 Jan 06 nicklas 256   </base:body>
1850 26 Jan 06 nicklas 257   </base:page>
1850 26 Jan 06 nicklas 258   <%
1850 26 Jan 06 nicklas 259 }
1850 26 Jan 06 nicklas 260 finally
1850 26 Jan 06 nicklas 261 {
1850 26 Jan 06 nicklas 262   if (dc != null) dc.close();
1850 26 Jan 06 nicklas 263 }
1850 26 Jan 06 nicklas 264 %>