source: trunk/www/views/rawbioassays/edit_rawbioassay.jsp @ 3859

Last change on this file since 3859 was 3859, checked in by Nicklas Nordborg, 14 years ago

References #789: Extend "Experiment overview" to check for problems related to platform and data files

  • The validation options and rules have been added. Need a bit more testing.
  • Fixes some other issues with FileSet? and validation of data files.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 22.5 KB
Line 
1<%-- $Id: edit_rawbioassay.jsp 3859 2007-10-18 10:03:33Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Hakkinen, Nicklas Nordborg, Martin Svensson
5  Copyright (C) 2007 Nicklas Nordborg
6
7  This file is part of BASE - BioArray Software Environment.
8  Available at http://base.thep.lu.se/
9
10  BASE is free software; you can redistribute it and/or
11  modify it under the terms of the GNU General Public License
12  as published by the Free Software Foundation; either version 2
13  of the License, or (at your option) any later version.
14
15  BASE is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License
21  along with this program; if not, write to the Free Software
22  Foundation, Inc., 59 Temple Place - Suite 330,
23  Boston, MA  02111-1307, USA.
24  ------------------------------------------------------------------
25
26
27  @author Nicklas
28  @version 2.0
29--%>
30<%@ page session="false"
31  import="net.sf.basedb.core.SessionControl"
32  import="net.sf.basedb.core.DbControl"
33  import="net.sf.basedb.core.Item"
34  import="net.sf.basedb.core.ItemContext"
35  import="net.sf.basedb.core.SystemItems"
36  import="net.sf.basedb.core.Permission"
37  import="net.sf.basedb.core.RawBioAssay"
38  import="net.sf.basedb.core.Platform"
39  import="net.sf.basedb.core.PlatformVariant"
40  import="net.sf.basedb.core.Scan"
41  import="net.sf.basedb.core.Protocol"
42  import="net.sf.basedb.core.ProtocolType"
43  import="net.sf.basedb.core.Project"
44  import="net.sf.basedb.core.Software"
45  import="net.sf.basedb.core.SoftwareType"
46  import="net.sf.basedb.core.ArrayDesign"
47  import="net.sf.basedb.core.File"
48  import="net.sf.basedb.core.FileType"
49  import="net.sf.basedb.core.RawDataType"
50  import="net.sf.basedb.core.RawDataTypes"
51  import="net.sf.basedb.core.ItemQuery"
52  import="net.sf.basedb.core.ItemResultList"
53  import="net.sf.basedb.core.PermissionDeniedException"
54  import="net.sf.basedb.core.BaseException"
55  import="net.sf.basedb.core.query.Orders"
56  import="net.sf.basedb.core.query.Hql"
57  import="net.sf.basedb.clients.web.Base"
58  import="net.sf.basedb.clients.web.util.HTML"
59  import="net.sf.basedb.util.Values"
60  import="java.util.List"
61  import="java.util.Set"
62  import="java.util.HashSet"
63%>
64<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
65<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
66<%
67final Item itemType = Item.RAWBIOASSAY;
68final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
69final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
70final String tabId = Values.getString(request.getParameter("tab"), null);
71final int itemId = cc.getId();
72final String ID = sc.getId();
73final float scale = Base.getScale(sc);
74final DbControl dc = sc.newDbControl();
75try
76{
77  String title = null;
78  RawBioAssay rawBioAssay = null;
79  String name = null;
80  boolean hasDbSpots = false;
81
82  boolean deniedPlatform = false;
83  Platform currentPlatform = null;
84  PlatformVariant currentVariant = null;
85 
86  boolean readCurrentScan = true;
87  Scan currentScan = null;
88  boolean readCurrentProtocol = true;
89  Protocol currentProtocol = null;
90  Protocol defaultProtocol = null;
91  boolean readCurrentSoftware = true;
92  Software currentSoftware = null;
93  Software defaultSoftware = null;
94  boolean readCurrentArrayDesign = true;
95  ArrayDesign currentArrayDesign = null;
96  ArrayDesign defaultArrayDesign = null;
97  RawDataType currentRawDataType = null;
98  RawDataType defaultRawDataType = null;
99
100  // Load recently used items
101  List<Protocol> recentProtocols = (List<Protocol>)cc.getRecent(dc, Item.PROTOCOL);
102  List<Scan> recentScans = (List<Scan>)cc.getRecent(dc, Item.SCAN);
103  List<Software> recentSoftware = (List<Software>)cc.getRecent(dc, Item.SOFTWARE);
104  List<ArrayDesign> recentArrayDesigns = (List<ArrayDesign>)cc.getRecent(dc, Item.ARRAYDESIGN);
105  List<File> recentFiles = (List<File>)cc.getRecent(dc, Item.FILE);
106 
107  int activeProjectId = sc.getActiveProjectId();
108  if (activeProjectId > 0)
109  {
110    Project activeProject = Project.getById(dc, activeProjectId);
111    try
112    {
113      defaultProtocol = (Protocol)activeProject.getDefaultItem(dc, Project.Default.FEATURE_EXTRACTION_PROTOCOL);     
114    }
115    catch (PermissionDeniedException pdex)
116    {
117      defaultProtocol = null;
118    }
119    try
120    {
121      defaultSoftware = (Software)activeProject.getDefaultItem(dc, Project.Default.SOFTWARE);     
122    }
123    catch (PermissionDeniedException pdex)
124    {
125      defaultSoftware = null;
126    }
127    try
128    {
129      defaultArrayDesign = (ArrayDesign)activeProject.getDefaultItem(dc, Project.Default.ARRAYDESIGN);     
130    }
131    catch (PermissionDeniedException pdex)
132    {
133      defaultArrayDesign = null;
134    }
135    defaultRawDataType = activeProject.getDefaultRawDataType();
136  }
137  if (itemId == 0)
138  {
139    title = "Create raw bioassay";
140    cc.removeObject("item");
141   
142    int currentPlatformId = Values.getInt(cc.getPropertyValue("platform"), 0);
143    if (currentPlatformId == 0)
144    {
145      currentPlatformId = Values.getInt(cc.getRecent(Item.PLATFORM.name(), 0), 0);
146    }
147    if (currentPlatformId != 0) currentPlatform = Platform.getById(dc, currentPlatformId);
148   
149    currentRawDataType = RawDataTypes.getRawDataType(cc.getPropertyValue("rawDataType"));
150    if (currentRawDataType == null)
151    {
152      currentRawDataType = RawDataTypes.getRawDataType(cc.getRecent("RawDataType", 0));
153    }
154
155    int scanId = Values.getInt(request.getParameter("scan_id"));
156    if (scanId != 0)
157    {
158      currentScan = Scan.getById(dc, scanId);
159    }
160    else if (cc.getPropertyFilter("scan.name") != null)
161    {
162      currentScan = Base.getFirstMatching(dc, Scan.getQuery(), "name", cc.getPropertyFilter("scan.name"));
163    }
164
165    if (currentScan != null)
166    {
167      name = currentScan.getName() + ".r" + (currentScan.countRawBioAssays() + 1);
168    }
169    else
170    {
171      name = Values.getString(cc.getPropertyValue("name"), "New raw bioassay");
172    }
173    if (cc.getPropertyFilter("protocol.name") != null)
174    {
175      currentProtocol = Base.getFirstMatching(dc, Protocol.getQuery(), "name", cc.getPropertyFilter("protocol.name"));
176    }
177   
178    if (cc.getPropertyFilter("software.name") != null)
179    {
180      currentSoftware = Base.getFirstMatching(dc, Software.getQuery(), "name", cc.getPropertyFilter("software.name"));
181    }
182    if (currentScan != null)
183    {
184      try
185      {
186        currentArrayDesign = currentScan.getArrayDesign();
187      }
188      catch (PermissionDeniedException ex)
189      {}
190    }
191    if (currentArrayDesign == null && cc.getPropertyFilter("arrayDesign.name") != null)
192    {
193      currentArrayDesign = Base.getFirstMatching(dc, ArrayDesign.getQuery(), "name", cc.getPropertyFilter("arrayDesign.name"));
194    } 
195    currentRawDataType = currentRawDataType != null ? currentRawDataType : defaultRawDataType;
196  }
197  else
198  {
199    rawBioAssay = RawBioAssay.getById(dc, itemId);
200    rawBioAssay.checkPermission(Permission.WRITE);
201    hasDbSpots = rawBioAssay.getNumDbSpots() > 0;
202    cc.setObject("item", rawBioAssay);
203    name = rawBioAssay.getName();
204    currentRawDataType = rawBioAssay.getRawDataType();
205    title = "Edit raw bioassay -- " + HTML.encodeTags(rawBioAssay.getName());
206   
207    try
208    {
209      currentPlatform = rawBioAssay.getPlatform();
210      currentVariant = rawBioAssay.getVariant();
211    }
212    catch (PermissionDeniedException ex)
213    {
214      deniedPlatform = true;
215    }
216   
217    try
218    {
219      currentScan = rawBioAssay.getScan();
220    }
221    catch (PermissionDeniedException ex)
222    {
223      readCurrentScan = false;
224    }
225    try
226    {
227      currentProtocol = rawBioAssay.getProtocol();
228    }
229    catch (PermissionDeniedException ex)
230    {
231      readCurrentProtocol = false;
232    }
233    try
234    {
235      currentSoftware = rawBioAssay.getSoftware();
236    }
237    catch (PermissionDeniedException ex)
238    {
239      readCurrentSoftware = false;
240    }
241    try
242    {
243      currentArrayDesign = rawBioAssay.getArrayDesign();
244    }
245    catch (PermissionDeniedException ex)
246    {
247      readCurrentArrayDesign = false;
248    }
249  }
250 
251  ItemQuery<Platform> platformQuery = Platform.getQuery();
252  platformQuery.include(Include.REMOVED, Include.NOT_REMOVED);
253  platformQuery.order(Orders.asc(Hql.property("name")));
254  platformQuery.setCacheResult(true);
255  ItemResultList<Platform> platforms = platformQuery.list(dc);
256
257  ItemQuery<PlatformVariant> variantQuery = PlatformVariant.getQuery();
258  variantQuery.include(Include.REMOVED, Include.NOT_REMOVED);
259  variantQuery.order(Orders.asc(Hql.property("name")));
260  variantQuery.setCacheResult(true);
261  ItemResultList<PlatformVariant> variants = variantQuery.list(dc);
262 
263  final String clazz = "class=\"text\"";
264  final String requiredClazz = "class=\"text required\"";
265  %>
266
267  <%@page import="net.sf.basedb.core.Include"%>
268<base:page type="popup" title="<%=title%>">
269  <base:head scripts="tabcontrol.js,annotations.js,platforms.js" styles="tabcontrol.css">
270    <script language="JavaScript">
271    // Validate the "RawBioAssay" tab
272    function validateRawBioAssay()
273    {
274      var frm = document.forms['rawbioassay'];
275      if (Main.trimString(frm.name.value) == '')
276      {
277        alert("You must enter a name");
278        frm.name.focus();
279        return false;
280      }
281      return true;
282    }
283
284    // Submit the form
285    function saveSettings()
286    {
287      var frm = document.forms['rawbioassay'];
288      if (TabControl.validateActiveTab('settings'))
289      {
290        if (annotationsLoaded)
291        {
292          Annotations.addModifiedAnnotationsToForm(frames.annotations, frm);
293        }
294        if (inheritedAnnotationsLoaded)
295        {
296          Annotations.addInheritedAnnotationsToForm(frames.inheritedAnnotations, frm);
297        }
298        if (dataFilesLoaded)
299        {
300          Platforms.addDataFilesToForm(frames.datafiles, frm);
301        }
302        frm.submit();
303      }
304    }
305   
306    var annotationsLoaded = false;
307    var inheritedAnnotationsLoaded = false;
308    var parentsChanged = false;
309    var protocolChanged = false;
310    var dataFilesLoaded = false;
311    var platformChanged = false;
312    function switchTab(tabControlId, tabId)
313    {
314      var frm = document.forms['rawbioassay'];
315      if (TabControl.setActiveTab(tabControlId, tabId))
316      {
317        if (tabId == 'annotations' && (protocolChanged || !annotationsLoaded))
318        {
319          Annotations.loadAnnotateFrame(frames.annotations, '<%=ID%>', '<%=itemType.name()%>', <%=rawBioAssay == null ? 0 : rawBioAssay.getId()%>, getProtocolId());
320          annotationsLoaded = true;
321          protocolChanged = false;
322        }
323        else if (tabId == 'inheritedAnnotations' && 
324          (parentsChanged || !inheritedAnnotationsLoaded))
325        {
326          Annotations.loadInheritFrame(frames.inheritedAnnotations, '<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, getParents());
327          inheritedAnnotationsLoaded = true;
328          parentsChanged = false;
329        }
330        else if (tabId == 'datafiles' && (platformChanged || !dataFilesLoaded))
331        {
332          var platform = Platforms.getSelectedPlatform(frm.platform);
333          var variant = Platforms.getSelectedVariant(frm.platform);
334          Platforms.loadDataFilesFrame(frames.datafiles, '<%=ID%>', '<%=itemType.name()%>', <%=rawBioAssay == null ? 0 : rawBioAssay.getId()%>, platform == null ? 0 : platform.id, variant == null ? 0 : variant.id);
335          dataFilesLoaded = true;
336          platformChanged = false;
337        }
338      }
339    }
340
341    function platformOnChange()
342    {
343      var frm = document.forms['rawbioassay'];
344      platformChanged = true;
345      var platform = Platforms.getSelectedPlatform(frm.platform);
346      var variant = Platforms.getSelectedVariant(frm.platform);
347      var fileOnly = (variant != null && variant.fileOnly) ||
348        (variant == null && platform.fileOnly);
349      var rawDataType = variant == null ? platform.rawDataType : variant.rawDataType;
350      if (frm.rawdatatype[frm.rawdatatype.length - 1].value == '')
351      {
352        frm.rawdatatype[frm.rawdatatype.length - 1] = null;
353      }
354      if (fileOnly)
355      {
356        frm.rawdatatype.disabled = true;
357        Main.removeClass(frm.rawdatatype, 'required');
358        frm.rawdatatype[frm.rawdatatype.length] = new Option('- file only -', '');
359        frm.rawdatatype.selectedIndex = frm.rawdatatype.length - 1;
360      }
361      else if (rawDataType)
362      {
363        frm.rawdatatype.disabled = true;
364        Main.removeClass(frm.rawdatatype, 'required');
365        Forms.selectListOption(frm.rawdatatype, rawDataType);
366      }
367      else
368      {
369        frm.rawdatatype.disabled = <%=hasDbSpots ? "true" : "false"%>;
370        Main.addClass(frm.rawdatatype, 'required');
371      }
372    }
373
374    function getProtocolId()
375    {
376      var frm = document.forms['rawbioassay'];
377      var protocolId = 0;
378      if (frm.protocol_id.length > 0 && !frm.protocol_id.disabled)
379      {
380        protocolId = Math.abs(parseInt(frm.protocol_id[frm.protocol_id.selectedIndex].value));       
381      }
382      return protocolId;
383    }
384
385    function getParents()
386    {
387      var frm = document.forms['rawbioassay'];
388      var parents = new Array();
389
390      var scanId = Math.abs(parseInt(frm.scan_id[frm.scan_id.selectedIndex].value));
391      if (scanId > 0) parents[parents.length] = 'SCAN:'+scanId;
392      if (frm.arraydesign_id)
393      {
394        var arrayDesignId = Math.abs(parseInt(frm.arraydesign_id[frm.arraydesign_id.selectedIndex].value));
395        if (arrayDesignId > 0) parents[parents.length] = 'ARRAYDESIGN:'+arrayDesignId;
396      }
397      return parents;
398    }
399
400    function selectProtocolOnClick()
401    {
402      var frm = document.forms['rawbioassay'];
403      var url = '../../admin/protocols/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setProtocolCallback';
404      if (frm.protocol_id.length > 1)
405      {
406        var id = Math.abs(parseInt(frm.protocol_id[1].value));
407        url += '&item_id='+id;
408      }
409      url += '&filter:INT:protocolType=<%=SystemItems.getId(ProtocolType.FEATURE_EXTRACTION)%>';
410      Main.openPopup(url, 'SelectProtocol', 1000, 700);
411    }
412    function setProtocolCallback(id, name)
413    {
414      var frm = document.forms['rawbioassay'];
415      var list = frm.protocol_id;
416      if (list.length < 2 || list[1].value == '0') // >
417      {
418        Forms.addListOption(list, 1, new Option());
419      }
420      list[1].value = id;
421      list[1].text = name;
422      list.selectedIndex = 1;
423      protocolChanged = true;
424    }
425    function protocolOnChange()
426    {
427      protocolChanged = true;
428    }
429   
430    function scanOnChange()
431    {
432      parentsChanged = true;
433    }
434    function selectScanOnClick()
435    {
436      var frm = document.forms['rawbioassay'];
437      var url = '../scans/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setScanCallback';
438      if (frm.scan_id.length > 1)
439      {
440        var id = Math.abs(parseInt(frm.scan_id[1].value));
441        url += '&item_id='+id;
442      }
443      Main.openPopup(url, 'SelectScan', 1000, 700);
444    }
445    function setScanCallback(id, name)
446    {
447      var frm = document.forms['rawbioassay'];
448      var list = frm.scan_id;
449      if (list.length < 2 || list[1].value == '0') // >
450      {
451        Forms.addListOption(list, 1, new Option());
452      }
453      list[1].value = id;
454      list[1].text = name;
455      list.selectedIndex = 1;
456      parentsChanged = true;
457    }
458   
459    function selectSoftwareOnClick()
460    {
461      var frm = document.forms['rawbioassay'];
462      var url = '../../admin/software/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setSoftwareCallback';
463      if (frm.software_id.length > 1)
464      {
465        var id = Math.abs(parseInt(frm.software_id[1].value));       
466        url += '&item_id='+id;
467      }
468      url += '&filter:INT:softwareType=<%=SystemItems.getId(SoftwareType.FEATURE_EXTRACTION)%>';
469      Main.openPopup(url, 'SelectSoftware', 1000, 700);
470    }
471    function setSoftwareCallback(id, name)
472    {
473      var frm = document.forms['rawbioassay'];
474      var list = frm.software_id;
475      if (list.length < 2 || list[1].value == '0') // >
476      {
477        Forms.addListOption(list, 1, new Option());
478      }
479      list[1].value = id;
480      list[1].text = name;
481      list.selectedIndex = 1;
482    }
483   
484    function arrayDesignOnChange()
485    {
486      parentsChanged = true;
487    }
488    function selectArrayDesignOnClick()
489    {
490      var frm = document.forms['rawbioassay'];
491      var url = '../../lims/arraydesigns/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setArrayDesignCallback';
492      if (frm.arraydesign_id.length > 1)
493      {
494        var id = Math.abs(parseInt(frm.arraydesign_id[1].value));       
495        url += '&item_id='+id;
496      }
497      var platform = Platforms.getSelectedPlatform(frm.platform);
498      url += '&filter:INT:platform='+platform.id;
499      Main.openPopup(url, 'SelectArrayDesign', 1000, 700);
500    }
501    function setArrayDesignCallback(id, name)
502    {
503      var frm = document.forms['rawbioassay'];
504      var list = frm.arraydesign_id;
505      if (list.length < 2 || list[1].value == '0') // >
506      {
507        Forms.addListOption(list, 1, new Option());
508      }
509      list[1].value = id;
510      list[1].text = name;
511      list.selectedIndex = 1;
512      parentsChanged = true;
513    }
514   
515    function init()
516    {
517      <%
518      if (rawBioAssay == null)
519      {
520        %>
521        var frm = document.forms['rawbioassay'];
522        frm.name.focus();
523        frm.name.select();
524        <%
525      }
526      %>
527      initPlatforms(<%=currentPlatform == null ? 0 : currentPlatform.getId()%>, <%=currentVariant == null ? 0 : currentVariant.getId()%>);
528      platformOnChange();
529    }
530   
531    function initPlatforms(platformId, variantId)
532    {
533      <%
534      for (Platform p : platforms)
535      {
536        if (!p.isRemoved() || p.equals(currentPlatform))
537        {
538          RawDataType rdt = p.isFileOnly() ? null : p.getRawDataType();
539          %>
540          var p<%=p.getId()%> = new Platform(<%=p.getId()%>, '<%=HTML.javaScriptEncode(p.getExternalId())%>', '<%=HTML.javaScriptEncode(p.getName())%>', <%=p.isFileOnly()%>, '<%=rdt == null ? "" : rdt.getId()%>');
541          <%
542        }
543      }
544      for (PlatformVariant v : variants)
545      {
546        Platform p = v.getPlatform();
547        if ((!v.isRemoved() || v.equals(currentVariant)) && (!p.isRemoved() || p.equals(currentPlatform)))
548        {
549          RawDataType rdt = v.isFileOnly() ? null : v.getRawDataType();
550          %>
551          var v<%=v.getId()%> = new Variant(p<%=p.getId()%>, <%=v.getId()%>, '<%=HTML.javaScriptEncode(v.getExternalId())%>', '<%=HTML.javaScriptEncode(v.getName())%>', <%=v.isFileOnly()%>, '<%=rdt == null ? "" : rdt.getId()%>');
552          <%
553        }
554      }
555      %>
556      var frm = document.forms['rawbioassay'];
557      Platforms.populateList(frm.platform, platformId, variantId);
558    }
559    </script>
560  </base:head>
561  <base:body onload="init()">
562    <p>
563    <form action="index.jsp?ID=<%=ID%>" method="post" name="rawbioassay" onsubmit="return false;">
564    <input type="hidden" name="cmd" value="UpdateItem">
565
566    <h3 class="docked"><%=title%> <base:help tabcontrol="settings" /></h3>
567    <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*370)+"px;"%>" 
568      position="bottom" active="<%=tabId%>" remember="<%=tabId == null && rawBioAssay != null%>" switch="switchTab">
569    <t:tab id="info" title="Raw bioassay" validate="validateRawBioAssay()" helpid="rawbioassay.edit">
570      <table class="form" cellspacing=0>
571      <tr>
572        <td class="prompt">Name</td>
573        <td><input <%=requiredClazz%> type="text" name="name" 
574          value="<%=HTML.encodeTags(name)%>" 
575          size="40" maxlength="<%=RawBioAssay.MAX_NAME_LENGTH%>"></td>
576      </tr>
577      <tr>
578        <td class="prompt">Platform</td>
579        <td>
580          <select name="platform" onchange="platformOnChange()" class="required"
581            <%=deniedPlatform || hasDbSpots ? "disabled" : "" %>>
582          <%
583          if (deniedPlatform)
584          {
585            %>
586            <option value="-1">- denied -
587            <%
588          }
589          %>
590          </select>
591        </td>
592      </tr>
593      <tr>
594        <td class="prompt">Raw data type</td>
595        <td>
596          <select name="rawdatatype" class="required"
597            <%=hasDbSpots ? "disabled" : "" %>>
598          <%
599          for (RawDataType rdt : RawDataTypes.getRawDataTypes())
600          {
601            if (rdt.isStoredInDb())
602            {
603              String selected = rdt.equals(currentRawDataType) ? "selected" : "";
604              %>
605              <option value="<%=rdt.getId()%>" <%=selected%>><%=HTML.encodeTags(rdt.getName())%>
606              <%
607            }
608          }
609          %>
610          </select>
611        </td>
612      </tr>
613     
614      <tr>
615        <td class="prompt">Array design</td>
616        <td>
617          <base:select 
618            id="arraydesign_id"
619            clazz="selectionlist"
620            required="false"
621            current="<%=currentArrayDesign%>"
622            denied="<%=!readCurrentArrayDesign%>"
623            recent="<%=recentArrayDesigns%>"
624            defaultitem="<%=defaultArrayDesign%>"
625            newitem="<%=rawBioAssay == null%>"
626            onselect="selectArrayDesignOnClick()"
627            onchange="arrayDesignOnChange()"
628          />
629        </td>
630      </tr>
631
632      <tr>
633        <td class="prompt">Protocol</td>
634        <td>
635          <base:select 
636            id="protocol_id"
637            clazz="selectionlist"
638            required="false"
639            current="<%=currentProtocol%>"
640            denied="<%=!readCurrentProtocol%>"
641            recent="<%=recentProtocols%>"
642            defaultitem="<%=defaultProtocol%>"
643            newitem="<%=rawBioAssay == null%>"
644            onselect="selectProtocolOnClick()"
645            onchange="protocolOnChange()"
646          />
647        </td>
648      </tr>
649      <tr>
650        <td class="prompt">Scan</td>
651        <td>
652          <base:select 
653            id="scan_id"
654            clazz="selectionlist"
655            required="false"
656            current="<%=currentScan%>"
657            denied="<%=!readCurrentScan%>"
658            recent="<%=recentScans%>"
659            newitem="<%=rawBioAssay == null%>"
660            onselect="selectScanOnClick()"
661          />
662        </td>
663      </tr>
664      <tr>
665        <td class="prompt">Software</td>
666        <td>
667          <base:select 
668            id="software_id"
669            clazz="selectionlist"
670            required="false"
671            current="<%=currentSoftware%>"
672            denied="<%=!readCurrentSoftware%>"
673            recent="<%=recentSoftware%>"
674            defaultitem="<%=defaultSoftware%>"
675            newitem="<%=rawBioAssay == null%>"
676            onselect="selectSoftwareOnClick()"
677          />
678        </td>
679      </tr>
680      <tr valign=top>
681        <td class="prompt">Description</td>
682        <td nowrap>
683          <textarea <%=clazz%> rows="4" cols="40" name="description" wrap="virtual"
684            ><%=HTML.encodeTags(rawBioAssay == null ? cc.getPropertyValue("description") : rawBioAssay.getDescription())%></textarea>
685          <a href="javascript:Main.zoom('Description', 'rawbioassay', 'description')"
686            title="Edit in larger window"><base:icon image="zoom.gif" /></a>
687        </td>
688      </tr>
689      </table>
690      <div align=right>&nbsp;<i><base:icon image="required.gif" /> = required information</i></div>
691    </t:tab>
692   
693    <t:tab id="datafiles" title="Data files" helpid="datafiles.edit">
694      <iframe name="datafiles" id="idDatafiles" src="../../common/datafiles/wait.jsp" 
695        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
696        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
697    </t:tab>
698
699    <t:tab id="annotations" title="Annotations &amp; parameters" 
700      helpid="annotations.edit" tooltip="Enter values for annotations and protocol parameters">
701      <iframe name="annotations" id="idAnnotations" src="../../common/annotations/wait.jsp" 
702        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
703        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
704    </t:tab>
705   
706    <t:tab id="inheritedAnnotations" title="Inherited annotations" helpid="annotations.edit.inherited">
707      <iframe name="inheritedAnnotations" id="idInheritedAnnotations" src="../../common/annotations/wait.jsp" 
708        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
709        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
710    </t:tab>
711    </t:tabcontrol>
712
713    <table align="center">
714    <tr>
715      <td width="50%"><base:button onclick="saveSettings()" title="Save" /></td>
716      <td width="50%"><base:button onclick="window.close()" title="Cancel" /></td>
717    </tr>
718    </table>
719    </form>
720  </base:body>
721  </base:page>
722  <%
723}
724finally
725{
726  if (dc != null) dc.close();
727}
728%>
Note: See TracBrowser for help on using the repository browser.