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

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

References #721: Store data in files instead of in the database

Remember most recently used platform/variant when creating raw bioassays/array designs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 22.7 KB
Line 
1<%-- $Id: edit_rawbioassay.jsp 3909 2007-11-06 07:57:58Z 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    int currentVariantId = Values.getInt(cc.getRecent(Item.PLATFORMVARIANT.name(), 0), 0);
148   
149    try
150    {
151      if (currentVariantId != 0) currentVariant = PlatformVariant.getById(dc, currentVariantId);
152      if (currentPlatformId != 0) currentPlatform = Platform.getById(dc, currentPlatformId);
153    }
154    catch (Throwable t)
155    {}
156   
157    currentRawDataType = RawDataTypes.getRawDataType(cc.getPropertyValue("rawDataType"));
158    if (currentRawDataType == null)
159    {
160      currentRawDataType = RawDataTypes.getRawDataType(cc.getRecent("RawDataType", 0));
161    }
162
163    int scanId = Values.getInt(request.getParameter("scan_id"));
164    if (scanId != 0)
165    {
166      currentScan = Scan.getById(dc, scanId);
167    }
168    else if (cc.getPropertyFilter("scan.name") != null)
169    {
170      currentScan = Base.getFirstMatching(dc, Scan.getQuery(), "name", cc.getPropertyFilter("scan.name"));
171    }
172
173    if (currentScan != null)
174    {
175      name = currentScan.getName() + ".r" + (currentScan.countRawBioAssays() + 1);
176    }
177    else
178    {
179      name = Values.getString(cc.getPropertyValue("name"), "New raw bioassay");
180    }
181    if (cc.getPropertyFilter("protocol.name") != null)
182    {
183      currentProtocol = Base.getFirstMatching(dc, Protocol.getQuery(), "name", cc.getPropertyFilter("protocol.name"));
184    }
185   
186    if (cc.getPropertyFilter("software.name") != null)
187    {
188      currentSoftware = Base.getFirstMatching(dc, Software.getQuery(), "name", cc.getPropertyFilter("software.name"));
189    }
190    if (currentScan != null)
191    {
192      try
193      {
194        currentArrayDesign = currentScan.getArrayDesign();
195      }
196      catch (PermissionDeniedException ex)
197      {}
198    }
199    if (currentArrayDesign == null && cc.getPropertyFilter("arrayDesign.name") != null)
200    {
201      currentArrayDesign = Base.getFirstMatching(dc, ArrayDesign.getQuery(), "name", cc.getPropertyFilter("arrayDesign.name"));
202    } 
203    currentRawDataType = currentRawDataType != null ? currentRawDataType : defaultRawDataType;
204  }
205  else
206  {
207    rawBioAssay = RawBioAssay.getById(dc, itemId);
208    rawBioAssay.checkPermission(Permission.WRITE);
209    hasDbSpots = rawBioAssay.getNumDbSpots() > 0;
210    cc.setObject("item", rawBioAssay);
211    name = rawBioAssay.getName();
212    currentRawDataType = rawBioAssay.getRawDataType();
213    title = "Edit raw bioassay -- " + HTML.encodeTags(rawBioAssay.getName());
214   
215    try
216    {
217      currentPlatform = rawBioAssay.getPlatform();
218      currentVariant = rawBioAssay.getVariant();
219    }
220    catch (PermissionDeniedException ex)
221    {
222      deniedPlatform = true;
223    }
224   
225    try
226    {
227      currentScan = rawBioAssay.getScan();
228    }
229    catch (PermissionDeniedException ex)
230    {
231      readCurrentScan = false;
232    }
233    try
234    {
235      currentProtocol = rawBioAssay.getProtocol();
236    }
237    catch (PermissionDeniedException ex)
238    {
239      readCurrentProtocol = false;
240    }
241    try
242    {
243      currentSoftware = rawBioAssay.getSoftware();
244    }
245    catch (PermissionDeniedException ex)
246    {
247      readCurrentSoftware = false;
248    }
249    try
250    {
251      currentArrayDesign = rawBioAssay.getArrayDesign();
252    }
253    catch (PermissionDeniedException ex)
254    {
255      readCurrentArrayDesign = false;
256    }
257  }
258 
259  ItemQuery<Platform> platformQuery = Platform.getQuery();
260  platformQuery.include(Include.REMOVED, Include.NOT_REMOVED);
261  platformQuery.order(Orders.asc(Hql.property("name")));
262  platformQuery.setCacheResult(true);
263  ItemResultList<Platform> platforms = platformQuery.list(dc);
264
265  ItemQuery<PlatformVariant> variantQuery = PlatformVariant.getQuery();
266  variantQuery.include(Include.REMOVED, Include.NOT_REMOVED);
267  variantQuery.order(Orders.asc(Hql.property("name")));
268  variantQuery.setCacheResult(true);
269  ItemResultList<PlatformVariant> variants = variantQuery.list(dc);
270 
271  final String clazz = "class=\"text\"";
272  final String requiredClazz = "class=\"text required\"";
273  %>
274
275  <%@page import="net.sf.basedb.core.Include"%>
276<base:page type="popup" title="<%=title%>">
277  <base:head scripts="tabcontrol.js,annotations.js,platforms.js" styles="tabcontrol.css">
278    <script language="JavaScript">
279    // Validate the "RawBioAssay" tab
280    function validateRawBioAssay()
281    {
282      var frm = document.forms['rawbioassay'];
283      if (Main.trimString(frm.name.value) == '')
284      {
285        alert("You must enter a name");
286        frm.name.focus();
287        return false;
288      }
289      return true;
290    }
291
292    // Submit the form
293    function saveSettings()
294    {
295      var frm = document.forms['rawbioassay'];
296      if (TabControl.validateActiveTab('settings'))
297      {
298        if (annotationsLoaded)
299        {
300          Annotations.addModifiedAnnotationsToForm(frames.annotations, frm);
301        }
302        if (inheritedAnnotationsLoaded)
303        {
304          Annotations.addInheritedAnnotationsToForm(frames.inheritedAnnotations, frm);
305        }
306        if (dataFilesLoaded)
307        {
308          Platforms.addDataFilesToForm(frames.datafiles, frm);
309        }
310        frm.submit();
311      }
312    }
313   
314    var annotationsLoaded = false;
315    var inheritedAnnotationsLoaded = false;
316    var parentsChanged = false;
317    var protocolChanged = false;
318    var dataFilesLoaded = false;
319    var platformChanged = false;
320    function switchTab(tabControlId, tabId)
321    {
322      var frm = document.forms['rawbioassay'];
323      if (TabControl.setActiveTab(tabControlId, tabId))
324      {
325        if (tabId == 'annotations' && (protocolChanged || !annotationsLoaded))
326        {
327          Annotations.loadAnnotateFrame(frames.annotations, '<%=ID%>', '<%=itemType.name()%>', <%=rawBioAssay == null ? 0 : rawBioAssay.getId()%>, getProtocolId());
328          annotationsLoaded = true;
329          protocolChanged = false;
330        }
331        else if (tabId == 'inheritedAnnotations' && 
332          (parentsChanged || !inheritedAnnotationsLoaded))
333        {
334          Annotations.loadInheritFrame(frames.inheritedAnnotations, '<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, getParents());
335          inheritedAnnotationsLoaded = true;
336          parentsChanged = false;
337        }
338        else if (tabId == 'datafiles' && (platformChanged || !dataFilesLoaded))
339        {
340          var platform = Platforms.getSelectedPlatform(frm.platform);
341          var variant = Platforms.getSelectedVariant(frm.platform);
342          Platforms.loadDataFilesFrame(frames.datafiles, '<%=ID%>', '<%=itemType.name()%>', <%=rawBioAssay == null ? 0 : rawBioAssay.getId()%>, platform == null ? 0 : platform.id, variant == null ? 0 : variant.id);
343          dataFilesLoaded = true;
344          platformChanged = false;
345        }
346      }
347    }
348
349    function platformOnChange()
350    {
351      var frm = document.forms['rawbioassay'];
352      platformChanged = true;
353      var platform = Platforms.getSelectedPlatform(frm.platform);
354      var variant = Platforms.getSelectedVariant(frm.platform);
355      var fileOnly = (variant != null && variant.fileOnly) ||
356        (variant == null && platform.fileOnly);
357      var rawDataType = variant == null ? platform.rawDataType : variant.rawDataType;
358      if (frm.rawdatatype[frm.rawdatatype.length - 1].value == '')
359      {
360        frm.rawdatatype[frm.rawdatatype.length - 1] = null;
361      }
362      if (fileOnly)
363      {
364        frm.rawdatatype.disabled = true;
365        Main.removeClass(frm.rawdatatype, 'required');
366        frm.rawdatatype[frm.rawdatatype.length] = new Option('- file only -', '');
367        frm.rawdatatype.selectedIndex = frm.rawdatatype.length - 1;
368      }
369      else if (rawDataType)
370      {
371        frm.rawdatatype.disabled = true;
372        Main.removeClass(frm.rawdatatype, 'required');
373        Forms.selectListOption(frm.rawdatatype, rawDataType);
374      }
375      else
376      {
377        frm.rawdatatype.disabled = <%=hasDbSpots ? "true" : "false"%>;
378        Main.addClass(frm.rawdatatype, 'required');
379      }
380    }
381
382    function getProtocolId()
383    {
384      var frm = document.forms['rawbioassay'];
385      var protocolId = 0;
386      if (frm.protocol_id.length > 0 && !frm.protocol_id.disabled)
387      {
388        protocolId = Math.abs(parseInt(frm.protocol_id[frm.protocol_id.selectedIndex].value));       
389      }
390      return protocolId;
391    }
392
393    function getParents()
394    {
395      var frm = document.forms['rawbioassay'];
396      var parents = new Array();
397
398      var scanId = Math.abs(parseInt(frm.scan_id[frm.scan_id.selectedIndex].value));
399      if (scanId > 0) parents[parents.length] = 'SCAN:'+scanId;
400      if (frm.arraydesign_id)
401      {
402        var arrayDesignId = Math.abs(parseInt(frm.arraydesign_id[frm.arraydesign_id.selectedIndex].value));
403        if (arrayDesignId > 0) parents[parents.length] = 'ARRAYDESIGN:'+arrayDesignId;
404      }
405      return parents;
406    }
407
408    function selectProtocolOnClick()
409    {
410      var frm = document.forms['rawbioassay'];
411      var url = '../../admin/protocols/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setProtocolCallback';
412      if (frm.protocol_id.length > 1)
413      {
414        var id = Math.abs(parseInt(frm.protocol_id[1].value));
415        url += '&item_id='+id;
416      }
417      url += '&filter:INT:protocolType=<%=SystemItems.getId(ProtocolType.FEATURE_EXTRACTION)%>';
418      Main.openPopup(url, 'SelectProtocol', 1000, 700);
419    }
420    function setProtocolCallback(id, name)
421    {
422      var frm = document.forms['rawbioassay'];
423      var list = frm.protocol_id;
424      if (list.length < 2 || list[1].value == '0') // >
425      {
426        Forms.addListOption(list, 1, new Option());
427      }
428      list[1].value = id;
429      list[1].text = name;
430      list.selectedIndex = 1;
431      protocolChanged = true;
432    }
433    function protocolOnChange()
434    {
435      protocolChanged = true;
436    }
437   
438    function scanOnChange()
439    {
440      parentsChanged = true;
441    }
442    function selectScanOnClick()
443    {
444      var frm = document.forms['rawbioassay'];
445      var url = '../scans/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setScanCallback';
446      if (frm.scan_id.length > 1)
447      {
448        var id = Math.abs(parseInt(frm.scan_id[1].value));
449        url += '&item_id='+id;
450      }
451      Main.openPopup(url, 'SelectScan', 1000, 700);
452    }
453    function setScanCallback(id, name)
454    {
455      var frm = document.forms['rawbioassay'];
456      var list = frm.scan_id;
457      if (list.length < 2 || list[1].value == '0') // >
458      {
459        Forms.addListOption(list, 1, new Option());
460      }
461      list[1].value = id;
462      list[1].text = name;
463      list.selectedIndex = 1;
464      parentsChanged = true;
465    }
466   
467    function selectSoftwareOnClick()
468    {
469      var frm = document.forms['rawbioassay'];
470      var url = '../../admin/software/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setSoftwareCallback';
471      if (frm.software_id.length > 1)
472      {
473        var id = Math.abs(parseInt(frm.software_id[1].value));       
474        url += '&item_id='+id;
475      }
476      url += '&filter:INT:softwareType=<%=SystemItems.getId(SoftwareType.FEATURE_EXTRACTION)%>';
477      Main.openPopup(url, 'SelectSoftware', 1000, 700);
478    }
479    function setSoftwareCallback(id, name)
480    {
481      var frm = document.forms['rawbioassay'];
482      var list = frm.software_id;
483      if (list.length < 2 || list[1].value == '0') // >
484      {
485        Forms.addListOption(list, 1, new Option());
486      }
487      list[1].value = id;
488      list[1].text = name;
489      list.selectedIndex = 1;
490    }
491   
492    function arrayDesignOnChange()
493    {
494      parentsChanged = true;
495    }
496    function selectArrayDesignOnClick()
497    {
498      var frm = document.forms['rawbioassay'];
499      var url = '../../lims/arraydesigns/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setArrayDesignCallback';
500      if (frm.arraydesign_id.length > 1)
501      {
502        var id = Math.abs(parseInt(frm.arraydesign_id[1].value));       
503        url += '&item_id='+id;
504      }
505      var platform = Platforms.getSelectedPlatform(frm.platform);
506      url += '&filter:INT:platform='+platform.id;
507      Main.openPopup(url, 'SelectArrayDesign', 1000, 700);
508    }
509    function setArrayDesignCallback(id, name)
510    {
511      var frm = document.forms['rawbioassay'];
512      var list = frm.arraydesign_id;
513      if (list.length < 2 || list[1].value == '0') // >
514      {
515        Forms.addListOption(list, 1, new Option());
516      }
517      list[1].value = id;
518      list[1].text = name;
519      list.selectedIndex = 1;
520      parentsChanged = true;
521    }
522   
523    function init()
524    {
525      <%
526      if (rawBioAssay == null)
527      {
528        %>
529        var frm = document.forms['rawbioassay'];
530        frm.name.focus();
531        frm.name.select();
532        <%
533      }
534      %>
535      initPlatforms(<%=currentPlatform == null ? 0 : currentPlatform.getId()%>, <%=currentVariant == null ? 0 : currentVariant.getId()%>);
536      platformOnChange();
537    }
538   
539    function initPlatforms(platformId, variantId)
540    {
541      <%
542      for (Platform p : platforms)
543      {
544        if (!p.isRemoved() || p.equals(currentPlatform))
545        {
546          RawDataType rdt = p.isFileOnly() ? null : p.getRawDataType();
547          %>
548          var p<%=p.getId()%> = new Platform(<%=p.getId()%>, '<%=HTML.javaScriptEncode(p.getExternalId())%>', '<%=HTML.javaScriptEncode(p.getName())%>', <%=p.isFileOnly()%>, '<%=rdt == null ? "" : rdt.getId()%>');
549          <%
550        }
551      }
552      for (PlatformVariant v : variants)
553      {
554        Platform p = v.getPlatform();
555        if ((!v.isRemoved() || v.equals(currentVariant)) && (!p.isRemoved() || p.equals(currentPlatform)))
556        {
557          RawDataType rdt = v.isFileOnly() ? null : v.getRawDataType();
558          %>
559          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()%>');
560          <%
561        }
562      }
563      %>
564      var frm = document.forms['rawbioassay'];
565      Platforms.populateList(frm.platform, platformId, variantId);
566    }
567    </script>
568  </base:head>
569  <base:body onload="init()">
570    <p>
571    <form action="index.jsp?ID=<%=ID%>" method="post" name="rawbioassay" onsubmit="return false;">
572    <input type="hidden" name="cmd" value="UpdateItem">
573
574    <h3 class="docked"><%=title%> <base:help tabcontrol="settings" /></h3>
575    <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*370)+"px;"%>" 
576      position="bottom" active="<%=tabId%>" remember="<%=tabId == null && rawBioAssay != null%>" switch="switchTab">
577    <t:tab id="info" title="Raw bioassay" validate="validateRawBioAssay()" helpid="rawbioassay.edit">
578      <table class="form" cellspacing=0>
579      <tr>
580        <td class="prompt">Name</td>
581        <td><input <%=requiredClazz%> type="text" name="name" 
582          value="<%=HTML.encodeTags(name)%>" 
583          size="40" maxlength="<%=RawBioAssay.MAX_NAME_LENGTH%>"></td>
584      </tr>
585      <tr>
586        <td class="prompt">Platform</td>
587        <td>
588          <select name="platform" onchange="platformOnChange()" class="required"
589            <%=deniedPlatform || hasDbSpots ? "disabled" : "" %>>
590          <%
591          if (deniedPlatform)
592          {
593            %>
594            <option value="-1">- denied -
595            <%
596          }
597          %>
598          </select>
599        </td>
600      </tr>
601      <tr>
602        <td class="prompt">Raw data type</td>
603        <td>
604          <select name="rawdatatype" class="required"
605            <%=hasDbSpots ? "disabled" : "" %>>
606          <%
607          for (RawDataType rdt : RawDataTypes.getRawDataTypes())
608          {
609            if (rdt.isStoredInDb())
610            {
611              String selected = rdt.equals(currentRawDataType) ? "selected" : "";
612              %>
613              <option value="<%=rdt.getId()%>" <%=selected%>><%=HTML.encodeTags(rdt.getName())%>
614              <%
615            }
616          }
617          %>
618          </select>
619        </td>
620      </tr>
621     
622      <tr>
623        <td class="prompt">Array design</td>
624        <td>
625          <base:select 
626            id="arraydesign_id"
627            clazz="selectionlist"
628            required="false"
629            current="<%=currentArrayDesign%>"
630            denied="<%=!readCurrentArrayDesign%>"
631            recent="<%=recentArrayDesigns%>"
632            defaultitem="<%=defaultArrayDesign%>"
633            newitem="<%=rawBioAssay == null%>"
634            onselect="selectArrayDesignOnClick()"
635            onchange="arrayDesignOnChange()"
636          />
637        </td>
638      </tr>
639
640      <tr>
641        <td class="prompt">Protocol</td>
642        <td>
643          <base:select 
644            id="protocol_id"
645            clazz="selectionlist"
646            required="false"
647            current="<%=currentProtocol%>"
648            denied="<%=!readCurrentProtocol%>"
649            recent="<%=recentProtocols%>"
650            defaultitem="<%=defaultProtocol%>"
651            newitem="<%=rawBioAssay == null%>"
652            onselect="selectProtocolOnClick()"
653            onchange="protocolOnChange()"
654          />
655        </td>
656      </tr>
657      <tr>
658        <td class="prompt">Scan</td>
659        <td>
660          <base:select 
661            id="scan_id"
662            clazz="selectionlist"
663            required="false"
664            current="<%=currentScan%>"
665            denied="<%=!readCurrentScan%>"
666            recent="<%=recentScans%>"
667            newitem="<%=rawBioAssay == null%>"
668            onselect="selectScanOnClick()"
669          />
670        </td>
671      </tr>
672      <tr>
673        <td class="prompt">Software</td>
674        <td>
675          <base:select 
676            id="software_id"
677            clazz="selectionlist"
678            required="false"
679            current="<%=currentSoftware%>"
680            denied="<%=!readCurrentSoftware%>"
681            recent="<%=recentSoftware%>"
682            defaultitem="<%=defaultSoftware%>"
683            newitem="<%=rawBioAssay == null%>"
684            onselect="selectSoftwareOnClick()"
685          />
686        </td>
687      </tr>
688      <tr valign=top>
689        <td class="prompt">Description</td>
690        <td nowrap>
691          <textarea <%=clazz%> rows="4" cols="40" name="description" wrap="virtual"
692            ><%=HTML.encodeTags(rawBioAssay == null ? cc.getPropertyValue("description") : rawBioAssay.getDescription())%></textarea>
693          <a href="javascript:Main.zoom('Description', 'rawbioassay', 'description')"
694            title="Edit in larger window"><base:icon image="zoom.gif" /></a>
695        </td>
696      </tr>
697      </table>
698      <div align=right>&nbsp;<i><base:icon image="required.gif" /> = required information</i></div>
699    </t:tab>
700   
701    <t:tab id="datafiles" title="Data files" helpid="datafiles.edit">
702      <iframe name="datafiles" id="idDatafiles" src="../../common/datafiles/wait.jsp" 
703        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
704        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
705    </t:tab>
706
707    <t:tab id="annotations" title="Annotations &amp; parameters" 
708      helpid="annotations.edit" tooltip="Enter values for annotations and protocol parameters">
709      <iframe name="annotations" id="idAnnotations" src="../../common/annotations/wait.jsp" 
710        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
711        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
712    </t:tab>
713   
714    <t:tab id="inheritedAnnotations" title="Inherited annotations" helpid="annotations.edit.inherited">
715      <iframe name="inheritedAnnotations" id="idInheritedAnnotations" src="../../common/annotations/wait.jsp" 
716        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
717        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
718    </t:tab>
719    </t:tabcontrol>
720
721    <table align="center">
722    <tr>
723      <td width="50%"><base:button onclick="saveSettings()" title="Save" /></td>
724      <td width="50%"><base:button onclick="window.close()" title="Cancel" /></td>
725    </tr>
726    </table>
727    </form>
728  </base:body>
729  </base:page>
730  <%
731}
732finally
733{
734  if (dc != null) dc.close();
735}
736%>
Note: See TracBrowser for help on using the repository browser.