www/admin/platforms/edit_platform.jsp

Code
Comments
Other
Rev Date Author Line
3859 18 Oct 07 nicklas 1 <%-- $Id:edit_platform.jsp 3820 2007-10-12 10:03:18Z nicklas $
3793 27 Sep 07 nicklas 2   ------------------------------------------------------------------
3793 27 Sep 07 nicklas 3   Copyright (C) 2005 Nicklas Nordborg
4889 06 Apr 09 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3793 27 Sep 07 nicklas 5
3793 27 Sep 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
3793 27 Sep 07 nicklas 7   Available at http://base.thep.lu.se/
3793 27 Sep 07 nicklas 8
3793 27 Sep 07 nicklas 9   BASE is free software; you can redistribute it and/or
3793 27 Sep 07 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
3793 27 Sep 07 nicklas 12   of the License, or (at your option) any later version.
3793 27 Sep 07 nicklas 13
3793 27 Sep 07 nicklas 14   BASE is distributed in the hope that it will be useful,
3793 27 Sep 07 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
3793 27 Sep 07 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3793 27 Sep 07 nicklas 17   GNU General Public License for more details.
3793 27 Sep 07 nicklas 18
3793 27 Sep 07 nicklas 19   You should have received a copy of the GNU General Public License
4510 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
3793 27 Sep 07 nicklas 21   ------------------------------------------------------------------
3793 27 Sep 07 nicklas 22
3793 27 Sep 07 nicklas 23
3793 27 Sep 07 nicklas 24   @author Nicklas
3793 27 Sep 07 nicklas 25   @version 2.0
3793 27 Sep 07 nicklas 26 --%>
5426 24 Sep 10 nicklas 27 <%@ page pageEncoding="UTF-8" session="false"
3793 27 Sep 07 nicklas 28   import="net.sf.basedb.core.SessionControl"
3793 27 Sep 07 nicklas 29   import="net.sf.basedb.core.DbControl"
3793 27 Sep 07 nicklas 30   import="net.sf.basedb.core.Item"
3793 27 Sep 07 nicklas 31   import="net.sf.basedb.core.ItemContext"
3890 30 Oct 07 nicklas 32   import="net.sf.basedb.core.Include"
3793 27 Sep 07 nicklas 33   import="net.sf.basedb.core.Permission"
3793 27 Sep 07 nicklas 34   import="net.sf.basedb.core.Platform"
3800 28 Sep 07 nicklas 35   import="net.sf.basedb.core.PlatformFileType"
3800 28 Sep 07 nicklas 36   import="net.sf.basedb.core.DataFileType"
3793 27 Sep 07 nicklas 37   import="net.sf.basedb.core.RawDataType"
3793 27 Sep 07 nicklas 38   import="net.sf.basedb.core.RawDataTypes"
3800 28 Sep 07 nicklas 39   import="net.sf.basedb.core.ItemQuery"
3800 28 Sep 07 nicklas 40   import="net.sf.basedb.core.ItemResultList"
3800 28 Sep 07 nicklas 41   import="net.sf.basedb.core.query.Orders"
3800 28 Sep 07 nicklas 42   import="net.sf.basedb.core.query.Hql"
3793 27 Sep 07 nicklas 43   import="net.sf.basedb.core.PermissionDeniedException"
3793 27 Sep 07 nicklas 44   import="net.sf.basedb.clients.web.Base"
3793 27 Sep 07 nicklas 45   import="net.sf.basedb.clients.web.util.HTML"
3793 27 Sep 07 nicklas 46   import="net.sf.basedb.util.Values"
5508 19 Nov 10 nicklas 47   import="net.sf.basedb.core.plugin.GuiContext"
5508 19 Nov 10 nicklas 48   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5508 19 Nov 10 nicklas 49   import="net.sf.basedb.clients.web.extensions.JspContext"
5508 19 Nov 10 nicklas 50   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 51   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5508 19 Nov 10 nicklas 52   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
6305 09 Aug 13 nicklas 53   import="net.sf.basedb.util.json.JsonConverter"
6305 09 Aug 13 nicklas 54   import="net.sf.basedb.util.json.JsonUtil"
6305 09 Aug 13 nicklas 55   import="org.json.simple.JSONArray"
6305 09 Aug 13 nicklas 56   import="org.json.simple.JSONObject"
3793 27 Sep 07 nicklas 57 %>
3793 27 Sep 07 nicklas 58 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
3793 27 Sep 07 nicklas 59 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6149 25 Sep 12 nicklas 60 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
3793 27 Sep 07 nicklas 61 <%
3793 27 Sep 07 nicklas 62 final Item itemType = Item.PLATFORM;
3793 27 Sep 07 nicklas 63 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
3793 27 Sep 07 nicklas 64 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
3859 18 Oct 07 nicklas 65 final String tabId = Values.getString(request.getParameter("tab"), null);
3793 27 Sep 07 nicklas 66 final int itemId = cc.getId();
3793 27 Sep 07 nicklas 67 final String ID = sc.getId();
3793 27 Sep 07 nicklas 68 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 69 final DbControl dc = sc.newDbControl(":Edit "+itemType);
3793 27 Sep 07 nicklas 70 try
3793 27 Sep 07 nicklas 71 {
3793 27 Sep 07 nicklas 72   String title = null;
3793 27 Sep 07 nicklas 73   Platform platform = null;
3793 27 Sep 07 nicklas 74   boolean isFileOnly = false;
6305 09 Aug 13 nicklas 75   ItemQuery<PlatformFileType> fileTypesQuery = null;
3793 27 Sep 07 nicklas 76   if (itemId == 0)
3793 27 Sep 07 nicklas 77   {
3793 27 Sep 07 nicklas 78     title = "Create platform";
3793 27 Sep 07 nicklas 79     isFileOnly = Values.getBoolean(cc.getPropertyValue("fileOnly"), isFileOnly);
3793 27 Sep 07 nicklas 80     cc.removeObject("item");
3793 27 Sep 07 nicklas 81   }
3793 27 Sep 07 nicklas 82   else
3793 27 Sep 07 nicklas 83   {
3793 27 Sep 07 nicklas 84     platform = Platform.getById(dc, itemId);
6305 09 Aug 13 nicklas 85     platform.checkPermission(Permission.WRITE);
3793 27 Sep 07 nicklas 86     isFileOnly = platform.isFileOnly();
3793 27 Sep 07 nicklas 87     cc.setObject("item", platform);
3793 27 Sep 07 nicklas 88     title = "Edit platform -- " + HTML.encodeTags(platform.getName());
6305 09 Aug 13 nicklas 89     fileTypesQuery = platform.getFileTypes(null, true);
6305 09 Aug 13 nicklas 90     fileTypesQuery.include(Include.ALL);
6305 09 Aug 13 nicklas 91     fileTypesQuery.order(Orders.asc(Hql.property("dataFileType.name")));
3793 27 Sep 07 nicklas 92   }
3800 28 Sep 07 nicklas 93
6305 09 Aug 13 nicklas 94   JSONObject jsonFileTypes = new JSONObject();
6305 09 Aug 13 nicklas 95   jsonFileTypes.put("itemType", "DATAFILETYPE");
6305 09 Aug 13 nicklas 96   if (fileTypesQuery != null)
6305 09 Aug 13 nicklas 97   {
6305 09 Aug 13 nicklas 98     jsonFileTypes.put("items", JsonUtil.toArray(fileTypesQuery.iterate(dc), new JsonConverter<PlatformFileType>() 
6305 09 Aug 13 nicklas 99     {
6305 09 Aug 13 nicklas 100       public Object convert(PlatformFileType ft)
6305 09 Aug 13 nicklas 101       {
6305 09 Aug 13 nicklas 102         JSONObject json = new JSONObject();
6305 09 Aug 13 nicklas 103         DataFileType dft = ft.getDataFileType();
6305 09 Aug 13 nicklas 104         boolean required = ft.isRequired();
6305 09 Aug 13 nicklas 105         boolean multiple = ft.getAllowMultiple();
6305 09 Aug 13 nicklas 106         int value = 0;
6305 09 Aug 13 nicklas 107         if (required) value += 1;
6305 09 Aug 13 nicklas 108         if (multiple) value += 2;
6305 09 Aug 13 nicklas 109         json.put("id", dft.getId());
6305 09 Aug 13 nicklas 110         json.put("name", dft.getName() + (required ? " [×]" : " [-]"));
6305 09 Aug 13 nicklas 111         json.put("value", value);
6305 09 Aug 13 nicklas 112         return json;
6305 09 Aug 13 nicklas 113       }
6305 09 Aug 13 nicklas 114     }));
6305 09 Aug 13 nicklas 115   }
6305 09 Aug 13 nicklas 116
5508 19 Nov 10 nicklas 117   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), platform);
7604 25 Feb 19 nicklas 118   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
3793 27 Sep 07 nicklas 119   %>
6305 09 Aug 13 nicklas 120   <base:page type="popup" title="<%=title%>" id="edit-page">
6305 09 Aug 13 nicklas 121   <base:head scripts="tabcontrol-2.js,linkitems-2.js,~platforms.js" styles="tabcontrol.css">
5508 19 Nov 10 nicklas 122     <ext:scripts context="<%=jspContext%>" />
5508 19 Nov 10 nicklas 123     <ext:stylesheets context="<%=jspContext%>" />
3793 27 Sep 07 nicklas 124   </base:head>
6305 09 Aug 13 nicklas 125   <base:body>
5922 11 Jan 12 nicklas 126     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 127     <form action="index.jsp?ID=<%=ID%>" method="post" name="platform">
3793 27 Sep 07 nicklas 128     <input type="hidden" name="cmd" value="UpdateItem">
3793 27 Sep 07 nicklas 129
5922 11 Jan 12 nicklas 130     <t:tabcontrol id="settings" 
5922 11 Jan 12 nicklas 131       subclass="content dialogtabcontrol"
5508 19 Nov 10 nicklas 132       position="bottom" active="<%=tabId%>" remember="<%=tabId == null && platform != null%>"
5508 19 Nov 10 nicklas 133       extensions="<%=invoker%>">
6305 09 Aug 13 nicklas 134     <t:tab id="info" title="Platform" helpid="platform.edit">
5922 11 Jan 12 nicklas 135       <table class="fullform input100 smaller">
3793 27 Sep 07 nicklas 136       <tr>
5922 11 Jan 12 nicklas 137         <th>Name</th>
6305 09 Aug 13 nicklas 138         <td><input class="text required auto-init" data-auto-init="<%=platform == null ? "focus-select" : "focus" %>" 
6305 09 Aug 13 nicklas 139           type="text" name="name" 
3793 27 Sep 07 nicklas 140           value="<%=HTML.encodeTags(platform == null ? Values.getString(cc.getPropertyValue("name"), "New platform") : platform.getName())%>" 
5922 11 Jan 12 nicklas 141           maxlength="<%=Platform.MAX_NAME_LENGTH%>"></td>
5922 11 Jan 12 nicklas 142         <td></td>
3793 27 Sep 07 nicklas 143       </tr>
3793 27 Sep 07 nicklas 144       <%
3793 27 Sep 07 nicklas 145       if (platform == null)
3793 27 Sep 07 nicklas 146       {
3793 27 Sep 07 nicklas 147         // For new platforms only
3793 27 Sep 07 nicklas 148         RawDataType currentRawDataType = 
3793 27 Sep 07 nicklas 149           RawDataTypes.getRawDataType(cc.getPropertyValue("rawDataType"));
3793 27 Sep 07 nicklas 150         if (currentRawDataType == null)
3793 27 Sep 07 nicklas 151         {
3793 27 Sep 07 nicklas 152           currentRawDataType = RawDataTypes.getRawDataType(cc.getRecent("RawDataType", 0));
3793 27 Sep 07 nicklas 153         }
3793 27 Sep 07 nicklas 154         %>
3793 27 Sep 07 nicklas 155         <tr>
5922 11 Jan 12 nicklas 156           <th>External ID</th>
6217 14 Dec 12 nicklas 157           <td><input class="text required unchangeable" type="text" name="externalId" 
3798 28 Sep 07 nicklas 158             value="<%=HTML.encodeTags(cc.getPropertyValue("externalId"))%>" 
5922 11 Jan 12 nicklas 159             maxlength="<%=Platform.MAX_EXTERNAL_ID_LENGTH%>"></td>
5922 11 Jan 12 nicklas 160           <td></td>
3793 27 Sep 07 nicklas 161         </tr>
3793 27 Sep 07 nicklas 162         <tr>
5922 11 Jan 12 nicklas 163           <th>File-only</th>
3793 27 Sep 07 nicklas 164           <td>
6217 14 Dec 12 nicklas 165             <input class="unchangeable" type="radio" name="fileOnly" id="fileOnlyNo" value="0" 
6305 09 Aug 13 nicklas 166               <%=!isFileOnly ? "checked" : ""%>><label for="fileOnlyNo">no</label>
6217 14 Dec 12 nicklas 167             <input class="unchangeable" type="radio" name="fileOnly" id="fileOnlyYes" value="1" 
6305 09 Aug 13 nicklas 168               <%=isFileOnly ? "checked" : ""%>><label for="fileOnlyYes">yes</label>
3793 27 Sep 07 nicklas 169           </td>
5922 11 Jan 12 nicklas 170           <td></td>
3793 27 Sep 07 nicklas 171         </tr>
3793 27 Sep 07 nicklas 172         <tr>
5922 11 Jan 12 nicklas 173           <th>Raw data type</th>
3793 27 Sep 07 nicklas 174           <td>
6217 14 Dec 12 nicklas 175             <select name="rawdatatype" class="required unchangeable">
3793 27 Sep 07 nicklas 176             <option value="">- any -
3793 27 Sep 07 nicklas 177             <%
5574 18 Feb 11 nicklas 178             for (RawDataType rdt : RawDataTypes.getSortedRawDataTypes(new RawDataTypes.NameComparator()))
3793 27 Sep 07 nicklas 179             {
3867 19 Oct 07 nicklas 180               if (rdt.isStoredInDb())
3867 19 Oct 07 nicklas 181               {
3867 19 Oct 07 nicklas 182                 String selected = rdt.equals(currentRawDataType) ? "selected" : "";
3867 19 Oct 07 nicklas 183                 %>
3867 19 Oct 07 nicklas 184                 <option value="<%=rdt.getId()%>" <%=selected%>><%=HTML.encodeTags(rdt.getName())%>
3867 19 Oct 07 nicklas 185                 <%
3867 19 Oct 07 nicklas 186               }
3793 27 Sep 07 nicklas 187             }
3793 27 Sep 07 nicklas 188             %>
3793 27 Sep 07 nicklas 189             </select>
3793 27 Sep 07 nicklas 190           </td>
5922 11 Jan 12 nicklas 191           <td></td>
3793 27 Sep 07 nicklas 192         </tr>
3793 27 Sep 07 nicklas 193         <tr>
5922 11 Jan 12 nicklas 194           <th>Channels</th>
6305 09 Aug 13 nicklas 195           <td><input class="text required unchangeable" type="text" name="channels" id="channels"
3793 27 Sep 07 nicklas 196             value="<%=Values.getInt(cc.getPropertyValue("channels"), 1)%>" 
6305 09 Aug 13 nicklas 197             maxlength="10" style="width: 15em;"></td>
5922 11 Jan 12 nicklas 198           <td></td>
3793 27 Sep 07 nicklas 199         </tr>
3793 27 Sep 07 nicklas 200         <%
3793 27 Sep 07 nicklas 201       }
3793 27 Sep 07 nicklas 202       %>
5922 11 Jan 12 nicklas 203       <tr class="dynamic">
5922 11 Jan 12 nicklas 204         <th>Description</th>
6149 25 Sep 12 nicklas 205         <td>
6217 14 Dec 12 nicklas 206           <textarea class="text" rows="6" name="description" id="description"
3793 27 Sep 07 nicklas 207             ><%=HTML.encodeTags(platform == null ? cc.getPropertyValue("description") : platform.getDescription())%></textarea>
3793 27 Sep 07 nicklas 208         </td>
5922 11 Jan 12 nicklas 209         <td style="width: 20px;">
6215 13 Dec 12 nicklas 210           <base:zoom textarea="description" title="Description" />
5922 11 Jan 12 nicklas 211         </td>
3793 27 Sep 07 nicklas 212       </tr>
3793 27 Sep 07 nicklas 213       </table>
3793 27 Sep 07 nicklas 214     </t:tab>
3800 28 Sep 07 nicklas 215     
3859 18 Oct 07 nicklas 216     <t:tab id="datafiles" title="Data file types"
3800 28 Sep 07 nicklas 217       tooltip="Associate this platform with date file types"
3800 28 Sep 07 nicklas 218       helpid="platform.edit.filetypes"
3800 28 Sep 07 nicklas 219       >
5922 11 Jan 12 nicklas 220       <table class="fullform input100 smaller">
5922 11 Jan 12 nicklas 221       <tr class="dynamic">
5922 11 Jan 12 nicklas 222         <th>Data file types</th>
5922 11 Jan 12 nicklas 223         <td>
5922 11 Jan 12 nicklas 224           <div class="selectionlist">
5922 11 Jan 12 nicklas 225             <table>
5922 11 Jan 12 nicklas 226             <tr>
5922 11 Jan 12 nicklas 227               <td>
6305 09 Aug 13 nicklas 228                 <select name="fileTypes" id="fileTypes" 
6305 09 Aug 13 nicklas 229                   class="auto-init"
6305 09 Aug 13 nicklas 230                   data-auto-init="link-container"
6305 09 Aug 13 nicklas 231                   data-initial-items="[<%=HTML.encodeTags(jsonFileTypes.toJSONString()) %>]"
6305 09 Aug 13 nicklas 232                   size="15" multiple>
5922 11 Jan 12 nicklas 233                 </select>
5922 11 Jan 12 nicklas 234               </td>
5922 11 Jan 12 nicklas 235               <td style="vertical-align: top;">
5922 11 Jan 12 nicklas 236                 <base:buttongroup vertical="true">
5922 11 Jan 12 nicklas 237                   <base:button 
6305 09 Aug 13 nicklas 238                     id="btnAddFileTypes"
5922 11 Jan 12 nicklas 239                     subclass="leftaligned"
5922 11 Jan 12 nicklas 240                     style="width: 14em;"
5922 11 Jan 12 nicklas 241                     title="Add&nbsp;data file types&hellip;" 
5922 11 Jan 12 nicklas 242                     tooltip="Add more data file types to this platform"
5922 11 Jan 12 nicklas 243                   />
5922 11 Jan 12 nicklas 244                   <base:button 
6305 09 Aug 13 nicklas 245                     subclass="leftaligned auto-init"
6305 09 Aug 13 nicklas 246                     data-auto-init="remove-link"
6305 09 Aug 13 nicklas 247                     data-list-id="fileTypes"
5922 11 Jan 12 nicklas 248                     style="width: 14em;"
5922 11 Jan 12 nicklas 249                     title="Remove" 
5922 11 Jan 12 nicklas 250                     tooltip="Remove the selected data file types"
5922 11 Jan 12 nicklas 251                   />
5922 11 Jan 12 nicklas 252                 </base:buttongroup>
6305 09 Aug 13 nicklas 253                 <input type="checkbox" id="required" name="required" value="1">
5922 11 Jan 12 nicklas 254                   <label for="required">Required</label><br>
6305 09 Aug 13 nicklas 255                 <input type="checkbox" id="multiple" name="multiple" value="1">
5922 11 Jan 12 nicklas 256                   <label for="multiple">Allow multiple files</label>
5922 11 Jan 12 nicklas 257               </td>
5922 11 Jan 12 nicklas 258             </tr>
5922 11 Jan 12 nicklas 259             </table>
5922 11 Jan 12 nicklas 260           </div>
5922 11 Jan 12 nicklas 261         </td>
5922 11 Jan 12 nicklas 262       </tr>
3800 28 Sep 07 nicklas 263       </table>
3800 28 Sep 07 nicklas 264     </t:tab>
5922 11 Jan 12 nicklas 265     </t:tabcontrol>
5922 11 Jan 12 nicklas 266     </form>
3800 28 Sep 07 nicklas 267     
5922 11 Jan 12 nicklas 268     <div class="legend">
5946 03 Feb 12 nicklas 269       <base:icon image="required.png" />= required information
5922 11 Jan 12 nicklas 270       <%if (platform == null) {%><br>
5967 16 Feb 12 nicklas 271         <base:icon image="unchangeable.png" />= can't be changed later
5922 11 Jan 12 nicklas 272       <%}%>
5922 11 Jan 12 nicklas 273     </div>
3793 27 Sep 07 nicklas 274
5922 11 Jan 12 nicklas 275     <base:buttongroup subclass="dialogbuttons">
6305 09 Aug 13 nicklas 276       <base:button id="btnSave" title="Save" />
6305 09 Aug 13 nicklas 277       <base:button id="close" title="Cancel" />
5922 11 Jan 12 nicklas 278     </base:buttongroup>
3793 27 Sep 07 nicklas 279   </base:body>
3793 27 Sep 07 nicklas 280   </base:page>
3793 27 Sep 07 nicklas 281   <%
3793 27 Sep 07 nicklas 282 }
3793 27 Sep 07 nicklas 283 finally
3793 27 Sep 07 nicklas 284 {
3793 27 Sep 07 nicklas 285   if (dc != null) dc.close();
3793 27 Sep 07 nicklas 286 }
3793 27 Sep 07 nicklas 287 %>