www/views/rawbioassays/bioassays.js

Code
Comments
Other
Rev Date Author Line
7604 25 Feb 19 nicklas 1 /* $Id $
7604 25 Feb 19 nicklas 2   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 3   Copyright (C) 2013 Nicklas Nordborg
7604 25 Feb 19 nicklas 4
7604 25 Feb 19 nicklas 5   This file is part of BASE - BioArray Software Environment.
7604 25 Feb 19 nicklas 6   Available at http://base.thep.lu.se/
7604 25 Feb 19 nicklas 7
7604 25 Feb 19 nicklas 8   BASE is free software; you can redistribute it and/or
7604 25 Feb 19 nicklas 9   modify it under the terms of the GNU General Public License
7604 25 Feb 19 nicklas 10   as published by the Free Software Foundation; either version 3
7604 25 Feb 19 nicklas 11   of the License, or (at your option) any later version.
7604 25 Feb 19 nicklas 12
7604 25 Feb 19 nicklas 13   BASE is distributed in the hope that it will be useful,
7604 25 Feb 19 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
7604 25 Feb 19 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7604 25 Feb 19 nicklas 16   GNU General Public License for more details.
7604 25 Feb 19 nicklas 17
7604 25 Feb 19 nicklas 18   You should have received a copy of the GNU General Public License
7604 25 Feb 19 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7604 25 Feb 19 nicklas 20   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 21
7604 25 Feb 19 nicklas 22   @author Nicklas
7604 25 Feb 19 nicklas 23 */
7604 25 Feb 19 nicklas 24 'use strict';
7604 25 Feb 19 nicklas 25
7604 25 Feb 19 nicklas 26 var BioAssays = function()
7604 25 Feb 19 nicklas 27 {
7604 25 Feb 19 nicklas 28   var bioassays = {};
7604 25 Feb 19 nicklas 29   
7604 25 Feb 19 nicklas 30   /**
7604 25 Feb 19 nicklas 31     Initialize the page.
7604 25 Feb 19 nicklas 32   */
7604 25 Feb 19 nicklas 33   bioassays.initPage = function()
7604 25 Feb 19 nicklas 34   {
7604 25 Feb 19 nicklas 35     var pageId = Doc.getPageId();
7604 25 Feb 19 nicklas 36     if (pageId == 'edit-page')
7604 25 Feb 19 nicklas 37     {
7604 25 Feb 19 nicklas 38       // Save + Close buttons
7604 25 Feb 19 nicklas 39       Buttons.addClickHandler('btnSave', bioassays.save);
7604 25 Feb 19 nicklas 40       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 41
7604 25 Feb 19 nicklas 42       // Tab validation
7604 25 Feb 19 nicklas 43       TabControl.addTabActivateListener('settings.annotations', bioassays.loadAnnotationsFrame);
7604 25 Feb 19 nicklas 44       TabControl.addTabActivateListener('settings.datafiles', bioassays.loadDataFilesFrame);
7604 25 Feb 19 nicklas 45       TabControl.addTabValidator('settings.info', bioassays.validateRawBioAssay);
7604 25 Feb 19 nicklas 46       
7604 25 Feb 19 nicklas 47       // Platform
7604 25 Feb 19 nicklas 48       Events.addEventHandler('platform', 'change', bioassays.platformOnChange);
7604 25 Feb 19 nicklas 49       bioassays.platformOnChange();
7604 25 Feb 19 nicklas 50
7604 25 Feb 19 nicklas 51       // Protocol
7604 25 Feb 19 nicklas 52       Buttons.addClickHandler('protocol_id.select', bioassays.selectProtocol);
7604 25 Feb 19 nicklas 53       Events.addEventHandler('protocol_id', 'base-selected', Items.onItemSelected);
7604 25 Feb 19 nicklas 54
7604 25 Feb 19 nicklas 55       // Software
7604 25 Feb 19 nicklas 56       Buttons.addClickHandler('software_id.select', bioassays.selectSoftware);
7604 25 Feb 19 nicklas 57       Events.addEventHandler('software_id', 'base-selected', Items.onItemSelected);
7604 25 Feb 19 nicklas 58       
7604 25 Feb 19 nicklas 59       // Parent bioassay
7604 25 Feb 19 nicklas 60       Buttons.addClickHandler('bioassay_id.select', bioassays.selectBioAssay);
7604 25 Feb 19 nicklas 61       Events.addEventHandler('bioassay_id', 'base-selected', Items.onItemSelected);
7604 25 Feb 19 nicklas 62       Events.addEventHandler('bioassay_id', 'change', bioassays.bioAssayOnChange);
7604 25 Feb 19 nicklas 63
7604 25 Feb 19 nicklas 64       // Array design
7604 25 Feb 19 nicklas 65       Buttons.addClickHandler('arraydesign_id.select', bioassays.selectArrayDesign);
7604 25 Feb 19 nicklas 66       Events.addEventHandler('arraydesign_id', 'base-selected', Items.onItemSelected);
7604 25 Feb 19 nicklas 67       Events.addEventHandler('arraydesign_id', 'change', bioassays.arrayDesignOnChange);
7604 25 Feb 19 nicklas 68
7604 25 Feb 19 nicklas 69       // Extract
7604 25 Feb 19 nicklas 70       Buttons.addClickHandler('extract_id.select', bioassays.selectExtract);
7604 25 Feb 19 nicklas 71       Events.addEventHandler('extract_id', 'base-selected', Items.onItemSelected);
7604 25 Feb 19 nicklas 72     }
7604 25 Feb 19 nicklas 73     else if (pageId == 'view-page')
7604 25 Feb 19 nicklas 74     {
7604 25 Feb 19 nicklas 75       var itemId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 76       var attributes = {'item-type': 'RAWBIOASSAY', 'item-id': itemId};
7604 25 Feb 19 nicklas 77       
7604 25 Feb 19 nicklas 78       Buttons.addClickHandler('btnEdit', Buttons.editItem, attributes);
7604 25 Feb 19 nicklas 79       Buttons.addClickHandler('btnDelete', Buttons.deleteItem, attributes);
7604 25 Feb 19 nicklas 80       Buttons.addClickHandler('btnRestore', Buttons.restoreItem, attributes);
7604 25 Feb 19 nicklas 81       Buttons.addClickHandler('btnUsingItems', Buttons.showUsingItems, attributes);
7604 25 Feb 19 nicklas 82       Buttons.addClickHandler('btnDeletePermanently', Buttons.deleteItemPermanently, attributes);
7604 25 Feb 19 nicklas 83       Buttons.addClickHandler('btnShare', Buttons.shareItem, attributes);
7604 25 Feb 19 nicklas 84       Buttons.addClickHandler('btnSetOwner', Buttons.setOwner, attributes);
7604 25 Feb 19 nicklas 85       Buttons.addClickHandler('btnExport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 86       Buttons.addClickHandler('btnImport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 87       Buttons.addClickHandler('btnRunPlugin', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 88       
7604 25 Feb 19 nicklas 89       TabControl.addTabActivateListener('main.rawdata', bioassays.viewRawData);
7604 25 Feb 19 nicklas 90       TabControl.addTabActivateListener('main.annotations', AnnotationsList.loadOnce);
7604 25 Feb 19 nicklas 91       TabControl.addTabActivateListener('main.overview', Overview.loadOnce);
7604 25 Feb 19 nicklas 92       TabControl.addTabActivateListener('main.history', History.loadOnce);
7604 25 Feb 19 nicklas 93     }
7604 25 Feb 19 nicklas 94     else if (pageId == 'list-page')
7604 25 Feb 19 nicklas 95     {
7604 25 Feb 19 nicklas 96       var attributes = {'item-type': 'RAWBIOASSAY'};
7604 25 Feb 19 nicklas 97       var tableAttributes = {'table-id': 'rawbioassays'};
7604 25 Feb 19 nicklas 98       Buttons.addClickHandler('btnNewItem', Buttons.newItem, attributes);
7604 25 Feb 19 nicklas 99       Buttons.addClickHandler('btnDeleteItems', Buttons.deleteItems, tableAttributes);
7604 25 Feb 19 nicklas 100       Buttons.addClickHandler('btnRestoreItems', Buttons.restoreItems, tableAttributes);
7604 25 Feb 19 nicklas 101       Buttons.addClickHandler('btnShareItems', Buttons.shareItems, tableAttributes);
7604 25 Feb 19 nicklas 102       Buttons.addClickHandler('btnSetOwner', Buttons.setOwnerOfItems, tableAttributes);
7604 25 Feb 19 nicklas 103       Buttons.addClickHandler('btnInheritAnnotations', Buttons.inheritAnnotations, tableAttributes);
7604 25 Feb 19 nicklas 104       Buttons.addClickHandler('btnColumns', Buttons.configureColumns, tableAttributes);
7604 25 Feb 19 nicklas 105       Buttons.addClickHandler('btnExport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 106       Buttons.addClickHandler('btnImport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 107       Buttons.addClickHandler('btnRunPlugin', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 108       Buttons.addClickHandler('btnNewItemList', bioassays.newItemListOnClick);
7813 19 May 20 nicklas 109       Buttons.addClickHandler('btnAddToItemList', bioassays.addToItemListOnClick);
7604 25 Feb 19 nicklas 110       Buttons.addClickHandler('btnNewExperiment', bioassays.newExperiment);
7604 25 Feb 19 nicklas 111
7604 25 Feb 19 nicklas 112       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 113       Buttons.addClickHandler('btnOk', Buttons.returnSelected, tableAttributes);
7604 25 Feb 19 nicklas 114     }
7604 25 Feb 19 nicklas 115   }
7604 25 Feb 19 nicklas 116   
7604 25 Feb 19 nicklas 117   bioassays.newExperiment = function()
7604 25 Feb 19 nicklas 118   {
7604 25 Feb 19 nicklas 119     if (!Table.checkIfSelected('rawbioassays'))
7604 25 Feb 19 nicklas 120     {
7604 25 Feb 19 nicklas 121       return;
7604 25 Feb 19 nicklas 122     }
7604 25 Feb 19 nicklas 123     Table.submitToPopup('rawbioassays', 'NewExperiment', 750, 500);
7604 25 Feb 19 nicklas 124   }
7604 25 Feb 19 nicklas 125
7604 25 Feb 19 nicklas 126   // Create a new item list with the selected items as members
7604 25 Feb 19 nicklas 127   bioassays.newItemListOnClick = function()
7604 25 Feb 19 nicklas 128   {
7604 25 Feb 19 nicklas 129     var controller = Items.getController('ITEMLIST');
7604 25 Feb 19 nicklas 130     Table.submitToPopup('rawbioassays', 'CreateItemList', controller.width, controller.height);
7604 25 Feb 19 nicklas 131   }
7813 19 May 20 nicklas 132   // Add selected raw bioassays to an existing item list
7813 19 May 20 nicklas 133   bioassays.addToItemListOnClick = function()
7813 19 May 20 nicklas 134   {
7813 19 May 20 nicklas 135     Table.submitToPopup('rawbioassays', 'AddItemsToList', 450, 300);
7813 19 May 20 nicklas 136   }
7604 25 Feb 19 nicklas 137
7604 25 Feb 19 nicklas 138   bioassays.viewRawData = function()
7604 25 Feb 19 nicklas 139   {
7604 25 Feb 19 nicklas 140     var url = 'rawdata/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 141     url += '&cmd=List&rawbioassay_id='+Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 142     location.replace(url);
7604 25 Feb 19 nicklas 143   }
7604 25 Feb 19 nicklas 144
7604 25 Feb 19 nicklas 145   bioassays.validateRawBioAssay = function()
7604 25 Feb 19 nicklas 146   {
7604 25 Feb 19 nicklas 147     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 148     if (Strings.trim(frm.name.value) == '')
7604 25 Feb 19 nicklas 149     {
7604 25 Feb 19 nicklas 150       Forms.showNotification(frm.name, 'You must enter a name');
7604 25 Feb 19 nicklas 151       return false;
7604 25 Feb 19 nicklas 152     }
7604 25 Feb 19 nicklas 153     return true;
7604 25 Feb 19 nicklas 154   }
7604 25 Feb 19 nicklas 155
7604 25 Feb 19 nicklas 156   // Submit the form
7604 25 Feb 19 nicklas 157   bioassays.save = function()
7604 25 Feb 19 nicklas 158   {
7604 25 Feb 19 nicklas 159     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 160     if (TabControl.validateActiveTab('settings'))
7604 25 Feb 19 nicklas 161     {
7604 25 Feb 19 nicklas 162       Annotations.saveModifiedAnnotationsToForm(frm);
7604 25 Feb 19 nicklas 163       DataFiles.writeFileActionsToForm(frm);
7604 25 Feb 19 nicklas 164       frm.submit();
7604 25 Feb 19 nicklas 165     }
7604 25 Feb 19 nicklas 166   }
7604 25 Feb 19 nicklas 167   
7604 25 Feb 19 nicklas 168   bioassays.loadDataFilesFrame = function()
7604 25 Feb 19 nicklas 169   {
7604 25 Feb 19 nicklas 170     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 171     var selected = frm.platform[frm.platform.selectedIndex];
7604 25 Feb 19 nicklas 172     var platform = Data.get(selected, 'platform');
7604 25 Feb 19 nicklas 173     var variant = Data.get(selected, 'variant');
7604 25 Feb 19 nicklas 174     DataFiles.autoLoadEditFrame(platform ? platform : 0, variant ? variant : 0, 0);
7604 25 Feb 19 nicklas 175   }
7604 25 Feb 19 nicklas 176
7604 25 Feb 19 nicklas 177   bioassays.loadAnnotationsFrame = function()
7604 25 Feb 19 nicklas 178   {
7604 25 Feb 19 nicklas 179     Annotations.autoLoadEditFrame(bioassays.getProtocolId(), null, bioassays.getParents());
7604 25 Feb 19 nicklas 180   }
7604 25 Feb 19 nicklas 181
7604 25 Feb 19 nicklas 182   bioassays.getProtocolId = function()
7604 25 Feb 19 nicklas 183   {
7604 25 Feb 19 nicklas 184     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 185     var protocolId = 0;
7604 25 Feb 19 nicklas 186     if (frm.protocol_id.length > 0 && !frm.protocol_id.disabled) 
7604 25 Feb 19 nicklas 187     {
7604 25 Feb 19 nicklas 188       protocolId = Math.abs(parseInt(frm.protocol_id.value));        
7604 25 Feb 19 nicklas 189     }
7604 25 Feb 19 nicklas 190     return protocolId;
7604 25 Feb 19 nicklas 191   }
7604 25 Feb 19 nicklas 192
7604 25 Feb 19 nicklas 193   bioassays.getParents = function()
7604 25 Feb 19 nicklas 194   {
7604 25 Feb 19 nicklas 195     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 196     var parents = [];
7604 25 Feb 19 nicklas 197
7604 25 Feb 19 nicklas 198     var bioAssayId = Math.abs(parseInt(frm.bioassay_id.value));
7604 25 Feb 19 nicklas 199     if (bioAssayId > 0) parents[parents.length] = 'DERIVEDBIOASSAY:'+bioAssayId;
7604 25 Feb 19 nicklas 200     var extractId = Math.abs(parseInt(frm.extract_id.value));
7604 25 Feb 19 nicklas 201     if (extractId > 0) parents[parents.length] = 'EXTRACT:'+extractId;
7604 25 Feb 19 nicklas 202     var softwareId = Math.abs(parseInt(frm.software_id.value));
7604 25 Feb 19 nicklas 203     if (softwareId > 0) parents[parents.length] = 'SOFTWARE:'+softwareId;
7604 25 Feb 19 nicklas 204     var protocolId = Math.abs(parseInt(frm.protocol_id.value));
7604 25 Feb 19 nicklas 205     if (protocolId > 0) parents[parents.length] = 'PROTOCOL:'+protocolId;
7604 25 Feb 19 nicklas 206     if (frm.arraydesign_id)
7604 25 Feb 19 nicklas 207     {
7604 25 Feb 19 nicklas 208       var arrayDesignId = Math.abs(parseInt(frm.arraydesign_id.value));
7604 25 Feb 19 nicklas 209       if (arrayDesignId > 0) parents[parents.length] = 'ARRAYDESIGN:'+arrayDesignId;
7604 25 Feb 19 nicklas 210     }
7604 25 Feb 19 nicklas 211     return parents;
7604 25 Feb 19 nicklas 212   }
7604 25 Feb 19 nicklas 213
7604 25 Feb 19 nicklas 214   bioassays.platformOnChange = function()
7604 25 Feb 19 nicklas 215   {
7604 25 Feb 19 nicklas 216     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 217     var selected = frm.platform[frm.platform.selectedIndex];
7604 25 Feb 19 nicklas 218     var platform = Data.get(selected, 'platform');
7604 25 Feb 19 nicklas 219     var variant = Data.get(selected, 'variant');
7604 25 Feb 19 nicklas 220     var fileOnly = Data.int(selected, 'file-only');
7604 25 Feb 19 nicklas 221     var rawDataType = Data.get(selected, 'raw-data-type');
7604 25 Feb 19 nicklas 222
7604 25 Feb 19 nicklas 223     if (frm.rawdatatype[frm.rawdatatype.length - 1].value == '')
7604 25 Feb 19 nicklas 224     {
7604 25 Feb 19 nicklas 225       frm.rawdatatype[frm.rawdatatype.length - 1] = null;
7604 25 Feb 19 nicklas 226     }
7604 25 Feb 19 nicklas 227     if (fileOnly)
7604 25 Feb 19 nicklas 228     {
7604 25 Feb 19 nicklas 229       frm.rawdatatype.disabled = true;
7604 25 Feb 19 nicklas 230       Doc.removeClass(frm.rawdatatype, 'required');
7604 25 Feb 19 nicklas 231       frm.rawdatatype[frm.rawdatatype.length] = new Option('- file only -', '');
7604 25 Feb 19 nicklas 232       frm.rawdatatype.selectedIndex = frm.rawdatatype.length - 1;
7604 25 Feb 19 nicklas 233     }
7604 25 Feb 19 nicklas 234     else if (rawDataType)
7604 25 Feb 19 nicklas 235     {
7604 25 Feb 19 nicklas 236       frm.rawdatatype.disabled = true;
7604 25 Feb 19 nicklas 237       Doc.removeClass(frm.rawdatatype, 'required');
7604 25 Feb 19 nicklas 238       Forms.selectListOption(frm.rawdatatype, rawDataType);
7604 25 Feb 19 nicklas 239     }
7604 25 Feb 19 nicklas 240     else
7604 25 Feb 19 nicklas 241     {
7604 25 Feb 19 nicklas 242       frm.rawdatatype.disabled = Data.int('page-data', 'has-db-spots');
7604 25 Feb 19 nicklas 243       Doc.addClass(frm.rawdatatype, 'required');
7604 25 Feb 19 nicklas 244     }
7604 25 Feb 19 nicklas 245   }
7604 25 Feb 19 nicklas 246
7604 25 Feb 19 nicklas 247   
7604 25 Feb 19 nicklas 248   bioassays.selectProtocol = function()
7604 25 Feb 19 nicklas 249   {
7604 25 Feb 19 nicklas 250     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 251     var url = '&resetTemporary=1';
7604 25 Feb 19 nicklas 252     url += '&tmpfilter:INT:itemSubtype='+Data.get('page-data', 'feature-extraction-protocol');
7604 25 Feb 19 nicklas 253     if (frm.protocol_id.length > 1) 
7604 25 Feb 19 nicklas 254     {
7604 25 Feb 19 nicklas 255       var id = Math.abs(parseInt(frm.protocol_id[1].value));        
7604 25 Feb 19 nicklas 256       url += '&item_id='+id;
7604 25 Feb 19 nicklas 257     }
7604 25 Feb 19 nicklas 258     Dialogs.selectItem('PROTOCOL', 'protocol_id', 0, url);
7604 25 Feb 19 nicklas 259   }
7604 25 Feb 19 nicklas 260   
7604 25 Feb 19 nicklas 261   bioassays.selectSoftware = function()
7604 25 Feb 19 nicklas 262   {
7604 25 Feb 19 nicklas 263     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 264     var url = '&resetTemporary=1';
7604 25 Feb 19 nicklas 265     url += '&tmpfilter:INT:itemSubtype='+Data.get('page-data', 'feature-extraction-software');
7604 25 Feb 19 nicklas 266     if (frm.software_id.length > 1)
7604 25 Feb 19 nicklas 267     {
7604 25 Feb 19 nicklas 268       var id = Math.abs(parseInt(frm.software_id[1].value));        
7604 25 Feb 19 nicklas 269       url += '&item_id='+id;
7604 25 Feb 19 nicklas 270     }
7604 25 Feb 19 nicklas 271     Dialogs.selectItem('SOFTWARE', 'software_id', 0, url);
7604 25 Feb 19 nicklas 272   }
7604 25 Feb 19 nicklas 273   
7604 25 Feb 19 nicklas 274   bioassays.selectBioAssay = function()
7604 25 Feb 19 nicklas 275   {
7604 25 Feb 19 nicklas 276     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 277     var url = '&resetTemporary=1';
7604 25 Feb 19 nicklas 278     if (frm.bioassay_id.length > 1) 
7604 25 Feb 19 nicklas 279     {
7604 25 Feb 19 nicklas 280       var id = Math.abs(parseInt(frm.bioassay_id[1].value));
7604 25 Feb 19 nicklas 281       url += '&item_id='+id;
7604 25 Feb 19 nicklas 282     }
7604 25 Feb 19 nicklas 283     Dialogs.selectItem('DERIVEDBIOASSAY', 'bioassay_id', 0, url);
7604 25 Feb 19 nicklas 284   }
7604 25 Feb 19 nicklas 285   
7604 25 Feb 19 nicklas 286   bioassays.bioAssayOnChange = function()
7604 25 Feb 19 nicklas 287   {
7604 25 Feb 19 nicklas 288     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 289     var bioAssayId = Math.abs(frm.bioassay_id.value);
7604 25 Feb 19 nicklas 290     if (bioAssayId > 0) bioassays.updateArrayDesign(bioAssayId);
7604 25 Feb 19 nicklas 291   }
7604 25 Feb 19 nicklas 292   
7604 25 Feb 19 nicklas 293   bioassays.updateArrayDesign = function(bioAssayId)
7604 25 Feb 19 nicklas 294   {
7604 25 Feb 19 nicklas 295     if (!bioAssayId) return;
7604 25 Feb 19 nicklas 296     var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 297     var url = '../derivedbioassays/ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 298     url += '&cmd=GetArrayDesign&item_id=' + bioAssayId;
7604 25 Feb 19 nicklas 299     request.open("GET", url, false);
7604 25 Feb 19 nicklas 300     request.send(null);
7604 25 Feb 19 nicklas 301
7604 25 Feb 19 nicklas 302     var response = JSON.parse(request.responseText);
7604 25 Feb 19 nicklas 303     if (response.status != 'ok')
7604 25 Feb 19 nicklas 304     {
7604 25 Feb 19 nicklas 305       alert(response.message);
7604 25 Feb 19 nicklas 306       return null;
7604 25 Feb 19 nicklas 307     }
7604 25 Feb 19 nicklas 308     
7604 25 Feb 19 nicklas 309     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 310     if (response.id)
7604 25 Feb 19 nicklas 311     {
7604 25 Feb 19 nicklas 312       // Update the 'array design' field
7604 25 Feb 19 nicklas 313       Events.sendCustomEvent('arraydesign_id', 'base-selected', 
7604 25 Feb 19 nicklas 314         { 'id': response.id, 'name': response.name, 'itemType': 'ARRAYDESIGN'}
7604 25 Feb 19 nicklas 315       );
7604 25 Feb 19 nicklas 316     }
7604 25 Feb 19 nicklas 317   }
7604 25 Feb 19 nicklas 318
7604 25 Feb 19 nicklas 319   bioassays.selectArrayDesign = function()
7604 25 Feb 19 nicklas 320   {
7604 25 Feb 19 nicklas 321     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 322     var url = '&resetTemporary=1';
7604 25 Feb 19 nicklas 323     if (frm.arraydesign_id.length > 1) 
7604 25 Feb 19 nicklas 324     {
7604 25 Feb 19 nicklas 325       var id = Math.abs(parseInt(frm.arraydesign_id[1].value));        
7604 25 Feb 19 nicklas 326       url += '&item_id='+id;
7604 25 Feb 19 nicklas 327     }
7604 25 Feb 19 nicklas 328     
7604 25 Feb 19 nicklas 329     var platform = frm.platform[frm.platform.selectedIndex];
7604 25 Feb 19 nicklas 330     var platformId = Data.get(platform, 'platform');
7604 25 Feb 19 nicklas 331     var variantId = Data.get(platform, 'variant');
7604 25 Feb 19 nicklas 332     url += '&tmpfilter:INT:platform='+platformId;
7604 25 Feb 19 nicklas 333     if (variantId) url += '&tmpfilter:INT:variant='+variantId;
7604 25 Feb 19 nicklas 334     Dialogs.selectItem('ARRAYDESIGN', 'arraydesign_id', 0, url);
7604 25 Feb 19 nicklas 335   }
7604 25 Feb 19 nicklas 336   
7604 25 Feb 19 nicklas 337   bioassays.arrayDesignOnChange = function()
7604 25 Feb 19 nicklas 338   {
7604 25 Feb 19 nicklas 339     if (Data.int('page-data', 'has-db-spots'))
7604 25 Feb 19 nicklas 340     {
7604 25 Feb 19 nicklas 341       var oldArrayDesign = Data.get('arraydesign_id', 'current-array-design');
7604 25 Feb 19 nicklas 342       var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 343       var selectedId = frm.arraydesign_id.value;
7604 25 Feb 19 nicklas 344       var showFiMethod = (selectedId > 0 && selectedId != oldArrayDesign);
7604 25 Feb 19 nicklas 345       if (showFiMethod)
7604 25 Feb 19 nicklas 346       {
7604 25 Feb 19 nicklas 347         Doc.show('fiMethod');
7604 25 Feb 19 nicklas 348       }
7604 25 Feb 19 nicklas 349       else
7604 25 Feb 19 nicklas 350       {
7604 25 Feb 19 nicklas 351         Doc.hide('fiMethod');
7604 25 Feb 19 nicklas 352       }
7604 25 Feb 19 nicklas 353     }
7604 25 Feb 19 nicklas 354   }
7604 25 Feb 19 nicklas 355
7604 25 Feb 19 nicklas 356   bioassays.selectExtract = function()
7604 25 Feb 19 nicklas 357   {
7604 25 Feb 19 nicklas 358     var frm = document.forms['rawbioassay'];
7604 25 Feb 19 nicklas 359     
7604 25 Feb 19 nicklas 360     var relatedExtractIds = null;
7604 25 Feb 19 nicklas 361     var bioAssayId = Math.abs(frm.bioassay_id.value);
7604 25 Feb 19 nicklas 362     if (bioAssayId > 0)
7604 25 Feb 19 nicklas 363     {
7604 25 Feb 19 nicklas 364       var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 365       var url = '../derivedbioassays/ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 366       url += '&cmd=GetAllExtractIds&bioassay_ids=' + bioAssayId;
7604 25 Feb 19 nicklas 367       request.open("GET", url, false); 
7604 25 Feb 19 nicklas 368       request.send(null);
7604 25 Feb 19 nicklas 369                   
7604 25 Feb 19 nicklas 370       var response = JSON.parse(request.responseText);
7604 25 Feb 19 nicklas 371       if (response.status != 'ok')
7604 25 Feb 19 nicklas 372       {
7604 25 Feb 19 nicklas 373         alert(response.message);
7604 25 Feb 19 nicklas 374         return null;
7604 25 Feb 19 nicklas 375       }
7604 25 Feb 19 nicklas 376       relatedExtractIds = response.allExtractIds;
7604 25 Feb 19 nicklas 377     }
7604 25 Feb 19 nicklas 378     
7604 25 Feb 19 nicklas 379     var url = '&resetTemporary=1';
7604 25 Feb 19 nicklas 380     if (relatedExtractIds) 
7604 25 Feb 19 nicklas 381     {
7604 25 Feb 19 nicklas 382       url += '&tmpfilter:INT:id='+encodeURIComponent(relatedExtractIds.join('|'));
7604 25 Feb 19 nicklas 383     }
7604 25 Feb 19 nicklas 384     if (frm.extract_id.length > 1) 
7604 25 Feb 19 nicklas 385     {
7604 25 Feb 19 nicklas 386       var id = Math.abs(parseInt(frm.extract_id[1].value));
7604 25 Feb 19 nicklas 387       url += '&item_id='+id;
7604 25 Feb 19 nicklas 388     }
7604 25 Feb 19 nicklas 389     Dialogs.selectItem('EXTRACT', 'extract_id', 0, url);
7604 25 Feb 19 nicklas 390   }
7604 25 Feb 19 nicklas 391   
7604 25 Feb 19 nicklas 392   return bioassays;
7604 25 Feb 19 nicklas 393 }();
7604 25 Feb 19 nicklas 394
7604 25 Feb 19 nicklas 395 Doc.onLoad(BioAssays.initPage);
7604 25 Feb 19 nicklas 396