www/lims/arraydesigns/edit_design.jsp

Code
Comments
Other
Rev Date Author Line
1820 24 Jan 06 nicklas 1 <%-- $Id$
1820 24 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
1820 24 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/
1820 24 Jan 06 nicklas 7
1820 24 Jan 06 nicklas 8   BASE is free software; you can redistribute it and/or
1820 24 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
1820 24 Jan 06 nicklas 11   of the License, or (at your option) any later version.
1820 24 Jan 06 nicklas 12
1820 24 Jan 06 nicklas 13   BASE is distributed in the hope that it will be useful,
1820 24 Jan 06 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
1820 24 Jan 06 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1820 24 Jan 06 nicklas 16   GNU General Public License for more details.
1820 24 Jan 06 nicklas 17
1820 24 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/>.
1820 24 Jan 06 nicklas 20   ------------------------------------------------------------------
1820 24 Jan 06 nicklas 21
1820 24 Jan 06 nicklas 22   @author Nicklas
1820 24 Jan 06 nicklas 23   @version 2.0
1820 24 Jan 06 nicklas 24 --%>
5426 24 Sep 10 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
1820 24 Jan 06 nicklas 26   import="net.sf.basedb.core.SessionControl"
1820 24 Jan 06 nicklas 27   import="net.sf.basedb.core.DbControl"
1820 24 Jan 06 nicklas 28   import="net.sf.basedb.core.Item"
1820 24 Jan 06 nicklas 29   import="net.sf.basedb.core.ItemContext"
1820 24 Jan 06 nicklas 30   import="net.sf.basedb.core.SystemItems"
1820 24 Jan 06 nicklas 31   import="net.sf.basedb.core.Permission"
1820 24 Jan 06 nicklas 32   import="net.sf.basedb.core.Include"
1820 24 Jan 06 nicklas 33   import="net.sf.basedb.core.ArrayDesign"
2384 15 Jun 06 nicklas 34   import="net.sf.basedb.core.File"
4029 03 Dec 07 nicklas 35   import="net.sf.basedb.core.Project"
3820 12 Oct 07 nicklas 36   import="net.sf.basedb.core.Platform"
3820 12 Oct 07 nicklas 37   import="net.sf.basedb.core.PlatformVariant"
3820 12 Oct 07 nicklas 38   import="net.sf.basedb.core.RawDataType"
1820 24 Jan 06 nicklas 39   import="net.sf.basedb.core.ItemQuery"
1820 24 Jan 06 nicklas 40   import="net.sf.basedb.core.ItemResultList"
1820 24 Jan 06 nicklas 41   import="net.sf.basedb.core.PermissionDeniedException"
1820 24 Jan 06 nicklas 42   import="net.sf.basedb.core.BaseException"
6312 28 Aug 13 nicklas 43   import="net.sf.basedb.core.query.Restrictions"
1820 24 Jan 06 nicklas 44   import="net.sf.basedb.core.query.Orders"
1820 24 Jan 06 nicklas 45   import="net.sf.basedb.core.query.Hql"
1820 24 Jan 06 nicklas 46   import="net.sf.basedb.clients.web.Base"
1820 24 Jan 06 nicklas 47   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 48   import="net.sf.basedb.util.Values"
5498 17 Nov 10 nicklas 49   import="net.sf.basedb.core.plugin.GuiContext"
5498 17 Nov 10 nicklas 50   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5498 17 Nov 10 nicklas 51   import="net.sf.basedb.clients.web.extensions.JspContext"
5498 17 Nov 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 53   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5498 17 Nov 10 nicklas 54   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1820 24 Jan 06 nicklas 55   import="java.util.List"
1820 24 Jan 06 nicklas 56   import="java.util.Set"
1820 24 Jan 06 nicklas 57   import="java.util.HashSet"
1820 24 Jan 06 nicklas 58   import="java.util.Date"
1820 24 Jan 06 nicklas 59 %>
1820 24 Jan 06 nicklas 60 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1820 24 Jan 06 nicklas 61 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6146 21 Sep 12 nicklas 62 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1820 24 Jan 06 nicklas 63 <%
1820 24 Jan 06 nicklas 64 final Item itemType = Item.ARRAYDESIGN;
1820 24 Jan 06 nicklas 65 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1820 24 Jan 06 nicklas 66 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
3859 18 Oct 07 nicklas 67 final String tabId = Values.getString(request.getParameter("tab"), null);
1820 24 Jan 06 nicklas 68 final int itemId = cc.getId();
1820 24 Jan 06 nicklas 69 final String ID = sc.getId();
1820 24 Jan 06 nicklas 70 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 71 final DbControl dc = sc.newDbControl(":Edit "+itemType);
1820 24 Jan 06 nicklas 72 try
1820 24 Jan 06 nicklas 73 {
1820 24 Jan 06 nicklas 74   String title = null;
1820 24 Jan 06 nicklas 75   ArrayDesign design = null;
1820 24 Jan 06 nicklas 76   
3820 12 Oct 07 nicklas 77   boolean deniedPlatform = false;
3820 12 Oct 07 nicklas 78   Platform currentPlatform = null;
3820 12 Oct 07 nicklas 79   PlatformVariant currentVariant = null;
5687 09 Aug 11 nicklas 80   List<Platform> defaultPlatforms = null;
5687 09 Aug 11 nicklas 81   List<PlatformVariant> defaultVariants = null;
2384 15 Jun 06 nicklas 82   
4029 03 Dec 07 nicklas 83   int activeProjectId = sc.getActiveProjectId();
4029 03 Dec 07 nicklas 84   if (activeProjectId > 0)
4029 03 Dec 07 nicklas 85   {
4029 03 Dec 07 nicklas 86     Project activeProject = Project.getById(dc, activeProjectId);
4029 03 Dec 07 nicklas 87     try
4029 03 Dec 07 nicklas 88     {
7605 26 Feb 19 nicklas 89       defaultPlatforms = activeProject.findDefaultItems(dc, Item.PLATFORM, true);
4029 03 Dec 07 nicklas 90     }
4029 03 Dec 07 nicklas 91     catch (PermissionDeniedException pdex)
4029 03 Dec 07 nicklas 92     {}
4029 03 Dec 07 nicklas 93     try
4029 03 Dec 07 nicklas 94     {
7605 26 Feb 19 nicklas 95       defaultVariants = activeProject.findDefaultItems(dc, Item.PLATFORMVARIANT, true);
4029 03 Dec 07 nicklas 96     }
4029 03 Dec 07 nicklas 97     catch (PermissionDeniedException pdex)
4029 03 Dec 07 nicklas 98     {}
4029 03 Dec 07 nicklas 99
4029 03 Dec 07 nicklas 100   }
1820 24 Jan 06 nicklas 101   if (itemId == 0)
1820 24 Jan 06 nicklas 102   {
1820 24 Jan 06 nicklas 103     title = "Create array design";
1820 24 Jan 06 nicklas 104     cc.removeObject("item");
3909 06 Nov 07 nicklas 105     int currentPlatformId = Values.getInt(cc.getRecent(Item.PLATFORM.name(), 0), 0);
3909 06 Nov 07 nicklas 106     int currentVariantId = Values.getInt(cc.getRecent(Item.PLATFORMVARIANT.name(), 0), 0);
3909 06 Nov 07 nicklas 107     try
3909 06 Nov 07 nicklas 108     {
3909 06 Nov 07 nicklas 109       if (currentPlatformId != 0) currentPlatform = Platform.getById(dc, currentPlatformId);
3909 06 Nov 07 nicklas 110       if (currentVariantId != 0) currentVariant = PlatformVariant.getById(dc, currentVariantId);
3909 06 Nov 07 nicklas 111     }
4029 03 Dec 07 nicklas 112     catch (Throwable t)
3909 06 Nov 07 nicklas 113     {}
5714 05 Sep 11 nicklas 114     if (currentPlatform == null && defaultPlatforms != null && defaultPlatforms.size() > 0)
5687 09 Aug 11 nicklas 115     {
5687 09 Aug 11 nicklas 116       currentPlatform = defaultPlatforms.get(0);
5687 09 Aug 11 nicklas 117     }
5714 05 Sep 11 nicklas 118     if (currentVariant == null && defaultVariants != null && defaultVariants.size() > 0)
5687 09 Aug 11 nicklas 119     {
5687 09 Aug 11 nicklas 120       currentVariant = defaultVariants.get(0);
5687 09 Aug 11 nicklas 121     }
1820 24 Jan 06 nicklas 122   }
1820 24 Jan 06 nicklas 123   else
1820 24 Jan 06 nicklas 124   {
1820 24 Jan 06 nicklas 125     design = ArrayDesign.getById(dc, itemId);
6312 28 Aug 13 nicklas 126     design.checkPermission(Permission.WRITE);
1820 24 Jan 06 nicklas 127     cc.setObject("item", design);
1820 24 Jan 06 nicklas 128     title = "Edit array design -- " + HTML.encodeTags(design.getName());
2384 15 Jun 06 nicklas 129     
3820 12 Oct 07 nicklas 130     try
2384 15 Jun 06 nicklas 131     {
3820 12 Oct 07 nicklas 132       currentPlatform = design.getPlatform();
3820 12 Oct 07 nicklas 133       currentVariant = design.getVariant();
2384 15 Jun 06 nicklas 134     }
3820 12 Oct 07 nicklas 135     catch (PermissionDeniedException ex)
3820 12 Oct 07 nicklas 136     {
3820 12 Oct 07 nicklas 137       deniedPlatform = true;
3820 12 Oct 07 nicklas 138     }
1820 24 Jan 06 nicklas 139   }
3820 12 Oct 07 nicklas 140
3820 12 Oct 07 nicklas 141   ItemQuery<Platform> platformQuery = Platform.getQuery();
3848 17 Oct 07 nicklas 142   platformQuery.include(Include.REMOVED, Include.NOT_REMOVED);
3820 12 Oct 07 nicklas 143   platformQuery.order(Orders.asc(Hql.property("name")));
3820 12 Oct 07 nicklas 144   platformQuery.setCacheResult(true);
3820 12 Oct 07 nicklas 145   ItemResultList<Platform> platforms = platformQuery.list(dc);
3820 12 Oct 07 nicklas 146
3820 12 Oct 07 nicklas 147   ItemQuery<PlatformVariant> variantQuery = PlatformVariant.getQuery();
3848 17 Oct 07 nicklas 148   variantQuery.include(Include.REMOVED, Include.NOT_REMOVED);
3820 12 Oct 07 nicklas 149   variantQuery.order(Orders.asc(Hql.property("name")));
6312 28 Aug 13 nicklas 150   variantQuery.restrict(Restrictions.eq(Hql.property("platform"), Hql.entityParameter("platform", Item.PLATFORM)));
3820 12 Oct 07 nicklas 151   
5498 17 Nov 10 nicklas 152   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), design);
7604 25 Feb 19 nicklas 153   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
1820 24 Jan 06 nicklas 154   %>
6312 28 Aug 13 nicklas 155   <base:page type="popup" title="<%=title%>" id="edit-page">
6312 28 Aug 13 nicklas 156   <base:head scripts="tabcontrol-2.js,~designs.js" styles="tabcontrol.css">
5498 17 Nov 10 nicklas 157     <ext:scripts context="<%=jspContext%>" />
5498 17 Nov 10 nicklas 158     <ext:stylesheets context="<%=jspContext%>" />
6312 28 Aug 13 nicklas 159     <style>
6312 28 Aug 13 nicklas 160     .platform
1820 24 Jan 06 nicklas 161     {
6312 28 Aug 13 nicklas 162       font-weight: bold;
6312 28 Aug 13 nicklas 163       margin-top: 2px;
1820 24 Jan 06 nicklas 164     }
6312 28 Aug 13 nicklas 165     </style>
1820 24 Jan 06 nicklas 166   </base:head>
6312 28 Aug 13 nicklas 167   <base:body>
5917 19 Dec 11 nicklas 168     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 169     <form action="index.jsp?ID=<%=ID%>" method="post" name="design">
1820 24 Jan 06 nicklas 170     <input type="hidden" name="cmd" value="UpdateItem">
1820 24 Jan 06 nicklas 171
5917 19 Dec 11 nicklas 172     <t:tabcontrol id="settings" 
5917 19 Dec 11 nicklas 173       subclass="content dialogtabcontrol" 
6254 22 Mar 13 nicklas 174       position="bottom" active="<%=tabId%>" remember="<%=tabId == null && design != null%>" 
5498 17 Nov 10 nicklas 175       extensions="<%=invoker%>">
6312 28 Aug 13 nicklas 176     <t:tab id="info" title="Array design" helpid="arraydesign.edit">
5917 19 Dec 11 nicklas 177       <table class="fullform input100">
1820 24 Jan 06 nicklas 178       <tr>
5917 19 Dec 11 nicklas 179         <th>Name</th>
6312 28 Aug 13 nicklas 180         <td><input class="text required auto-init" data-auto-init="<%=design == null ? "focus-select" : "focus" %>"
6312 28 Aug 13 nicklas 181           type="text" name="name" 
1820 24 Jan 06 nicklas 182           value="<%=HTML.encodeTags(design == null ? Values.getString(cc.getPropertyValue("name"), "New array design") : design.getName())%>" 
5917 19 Dec 11 nicklas 183           maxlength="<%=ArrayDesign.MAX_NAME_LENGTH%>"></td>
5917 19 Dec 11 nicklas 184         <td></td>
1820 24 Jan 06 nicklas 185       </tr>
1820 24 Jan 06 nicklas 186       <tr>
5917 19 Dec 11 nicklas 187         <th>Platform</th>
1820 24 Jan 06 nicklas 188         <td>
6256 25 Mar 13 nicklas 189           <select name="platform" class="required"
3820 12 Oct 07 nicklas 190             <%=deniedPlatform ? "disabled" : "" %>>
1820 24 Jan 06 nicklas 191           <%
3820 12 Oct 07 nicklas 192           if (deniedPlatform)
1820 24 Jan 06 nicklas 193           {
1820 24 Jan 06 nicklas 194             %>
3820 12 Oct 07 nicklas 195             <option value="-1">- denied -
1820 24 Jan 06 nicklas 196             <%
1820 24 Jan 06 nicklas 197           }
6312 28 Aug 13 nicklas 198           else
6312 28 Aug 13 nicklas 199           {
6312 28 Aug 13 nicklas 200             for (Platform p : platforms)
6312 28 Aug 13 nicklas 201             {
6312 28 Aug 13 nicklas 202               if (!p.isRemoved() || p.equals(currentPlatform))
6312 28 Aug 13 nicklas 203               {
6312 28 Aug 13 nicklas 204                 boolean selected = p.equals(currentPlatform) && currentVariant == null;
6312 28 Aug 13 nicklas 205                 %>
6312 28 Aug 13 nicklas 206                 <option class="platform"
6312 28 Aug 13 nicklas 207                   value="PLATFORM:<%=p.getId()%>"
6312 28 Aug 13 nicklas 208                   data-platform="<%=p.getId()%>"
6312 28 Aug 13 nicklas 209                   <%=selected ? "selected" : ""%>><%=HTML.encodeTags(p.getName()) %>
6312 28 Aug 13 nicklas 210                 <%
6312 28 Aug 13 nicklas 211               }
6312 28 Aug 13 nicklas 212               variantQuery.setEntityParameter("platform", p);
6312 28 Aug 13 nicklas 213               List<PlatformVariant> variants = variantQuery.list(dc);
6312 28 Aug 13 nicklas 214               PlatformVariant lastVariant = variants.size()>0 ? variants.get(variants.size()-1) : null;
6312 28 Aug 13 nicklas 215               for (PlatformVariant v : variants)
6312 28 Aug 13 nicklas 216               {
6312 28 Aug 13 nicklas 217                 if ((!v.isRemoved() || v.equals(currentVariant)) && (!p.isRemoved() || p.equals(currentPlatform)))
6312 28 Aug 13 nicklas 218                 {
6312 28 Aug 13 nicklas 219                   boolean selected = v.equals(currentVariant);
6312 28 Aug 13 nicklas 220                   String prefix = v == lastVariant ? " └ " : " ├ ";
6312 28 Aug 13 nicklas 221                   %>
6312 28 Aug 13 nicklas 222                   <option class="variant"
6312 28 Aug 13 nicklas 223                     value="VARIANT:<%=v.getId()%>"
6312 28 Aug 13 nicklas 224                     data-platform="<%=p.getId()%>"
6312 28 Aug 13 nicklas 225                     data-variant="<%=v.getId()%>"
6312 28 Aug 13 nicklas 226                     <%=selected ? "selected" : ""%>><%=prefix%><%=HTML.encodeTags(v.getName()) %>
6312 28 Aug 13 nicklas 227                   <%
6312 28 Aug 13 nicklas 228                 }
6312 28 Aug 13 nicklas 229               }
6312 28 Aug 13 nicklas 230             }
6312 28 Aug 13 nicklas 231           }
1820 24 Jan 06 nicklas 232           %>
3820 12 Oct 07 nicklas 233           </select>
1820 24 Jan 06 nicklas 234         </td>
5917 19 Dec 11 nicklas 235         <td></td>
1820 24 Jan 06 nicklas 236       </tr>
4131 08 Feb 08 nicklas 237       <tr>
5917 19 Dec 11 nicklas 238         <th>Arrays / slide</th>
6312 28 Aug 13 nicklas 239         <td><input class="text required" type="text" name="numArrays" id="numArrays" style="width: 15em;"
4131 08 Feb 08 nicklas 240           value="<%=design == null ? Values.getString(cc.getPropertyValue("numArrays"), "1") : design.getNumArrays()%>" 
6312 28 Aug 13 nicklas 241           maxlength="10"></td>
5917 19 Dec 11 nicklas 242         <td></td>
4131 08 Feb 08 nicklas 243       </tr>
5917 19 Dec 11 nicklas 244       <tr class="dynamic">
5917 19 Dec 11 nicklas 245         <th>Description</th>
6146 21 Sep 12 nicklas 246         <td>
6217 14 Dec 12 nicklas 247           <textarea class="text" rows="6" name="description" id="description"
1820 24 Jan 06 nicklas 248             ><%=HTML.encodeTags(design == null ? cc.getPropertyValue("description") : design.getDescription())%></textarea>
1820 24 Jan 06 nicklas 249         </td>
5917 19 Dec 11 nicklas 250         <td style="width: 20px;">
6215 13 Dec 12 nicklas 251           <base:zoom textarea="description" title="Description" />
5917 19 Dec 11 nicklas 252         </td>
1820 24 Jan 06 nicklas 253       </tr>
5964 15 Feb 12 nicklas 254       <%
5964 15 Feb 12 nicklas 255       if (sc.getActiveProjectId() != 0 && design == null && sc.getActiveProjectPermissions().contains(Permission.WRITE))
5964 15 Feb 12 nicklas 256       {
5964 15 Feb 12 nicklas 257         %>
5964 15 Feb 12 nicklas 258         <tr>
5964 15 Feb 12 nicklas 259           <th></th>
5964 15 Feb 12 nicklas 260           <td>
5964 15 Feb 12 nicklas 261             <input type="checkbox" id="setAsProjectDefault" name="setAsProjectDefault" value="1" 
5964 15 Feb 12 nicklas 262               checked><label for="setAsProjectDefault">Set as project default</label>
5964 15 Feb 12 nicklas 263           </td>
5964 15 Feb 12 nicklas 264           <td></td>
5964 15 Feb 12 nicklas 265         </tr>
5964 15 Feb 12 nicklas 266         <%
5964 15 Feb 12 nicklas 267       }
5964 15 Feb 12 nicklas 268       %>
1820 24 Jan 06 nicklas 269       </table>
1820 24 Jan 06 nicklas 270     </t:tab>
3820 12 Oct 07 nicklas 271
6312 28 Aug 13 nicklas 272     <t:tab id="datafiles" title="Data files" helpid="datafiles.edit">
6256 25 Mar 13 nicklas 273       <jsp:include page="../../common/datafiles/select_frameset.jsp">
6256 25 Mar 13 nicklas 274         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6256 25 Mar 13 nicklas 275         <jsp:param name="item_id" value="<%=itemId%>" />
6256 25 Mar 13 nicklas 276         <jsp:param name="ID" value="<%=ID%>" />
6256 25 Mar 13 nicklas 277       </jsp:include>
6256 25 Mar 13 nicklas 278     </t:tab>
5917 19 Dec 11 nicklas 279
6312 28 Aug 13 nicklas 280     <t:tab id="annotations" title="Annotations" helpid="annotations.edit">
6254 22 Mar 13 nicklas 281       <jsp:include page="../../common/annotations/annotate_frameset.jsp">
6254 22 Mar 13 nicklas 282         <jsp:param name="item_type" value="<%=itemType.name()%>" />
6254 22 Mar 13 nicklas 283         <jsp:param name="item_id" value="<%=itemId%>" />
6254 22 Mar 13 nicklas 284         <jsp:param name="ID" value="<%=ID%>" />
6254 22 Mar 13 nicklas 285       </jsp:include>
6254 22 Mar 13 nicklas 286     </t:tab>
1820 24 Jan 06 nicklas 287     </t:tabcontrol>
5917 19 Dec 11 nicklas 288     </form>
1820 24 Jan 06 nicklas 289
5917 19 Dec 11 nicklas 290     <div class="legend">
5946 03 Feb 12 nicklas 291       <base:icon image="required.png" />= required information
5917 19 Dec 11 nicklas 292     </div>
5917 19 Dec 11 nicklas 293
5917 19 Dec 11 nicklas 294     <base:buttongroup subclass="dialogbuttons">
6312 28 Aug 13 nicklas 295       <base:button id="btnSave" title="Save" />
6312 28 Aug 13 nicklas 296       <base:button id="close" title="Cancel" />
5917 19 Dec 11 nicklas 297     </base:buttongroup>
1820 24 Jan 06 nicklas 298   </base:body>
1820 24 Jan 06 nicklas 299   </base:page>
1820 24 Jan 06 nicklas 300   <%
1820 24 Jan 06 nicklas 301 }
1820 24 Jan 06 nicklas 302 finally
1820 24 Jan 06 nicklas 303 {
1820 24 Jan 06 nicklas 304   if (dc != null) dc.close();
1820 24 Jan 06 nicklas 305 }
1820 24 Jan 06 nicklas 306 %>