Replace Backbone-relational usage with manually model chaining and remove backbone-relational scripts. Fix default colors bug in Trackster. Pack scripts.

This commit is contained in:
Jeremy Goecks
2013-11-26 14:50:41 -05:00
parent 0aa108206e
commit b675432a2c
33 changed files with 93 additions and 2056 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
*/
// dependencies
define(["galaxy.masthead", "libs/backbone/backbone-relational"], function(mod_masthead) {
define(["galaxy.masthead"], function(mod_masthead) {
// frame manager
var GalaxyFrame = Backbone.View.extend(
+1 -1
View File
@@ -3,7 +3,7 @@
*/
// dependencies
define(["utils/galaxy.utils", "libs/backbone/backbone-relational"], function(mod_utils) {
define(["utils/galaxy.utils"], function(mod_utils) {
// masthead
var GalaxyMasthead = Backbone.View.extend(
+1 -1
View File
@@ -3,7 +3,7 @@
*/
// dependencies
define(["galaxy.masthead", "libs/backbone/backbone-relational"], function(mod_masthead) {
define(["galaxy.masthead"], function(mod_masthead) {
// frame manager
var GalaxyMenu = Backbone.Model.extend(
+1 -1
View File
@@ -3,7 +3,7 @@
*/
// dependencies
define(["libs/backbone/backbone-relational"], function() {
define([], function() {
// frame manager
var GalaxyModal = Backbone.View.extend(
+1 -1
View File
@@ -3,7 +3,7 @@
*/
// dependencies
define(["galaxy.modal", "galaxy.masthead", "utils/galaxy.utils", "utils/galaxy.uploadbox", "libs/backbone/backbone-relational"], function(mod_modal, mod_masthead, mod_utils) {
define(["galaxy.modal", "galaxy.masthead", "utils/galaxy.utils", "utils/galaxy.uploadbox"], function(mod_modal, mod_masthead, mod_utils) {
// galaxy upload
var GalaxyUpload = Backbone.View.extend(
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2,7 +2,7 @@
* Simple base model for any visible element. Includes useful attributes and ability
* to set and track visibility.
*/
var BaseModel = Backbone.RelationalModel.extend({
var BaseModel = Backbone.Model.extend({
defaults: {
name: null,
hidden: false
+5 -5
View File
@@ -1,16 +1,16 @@
// Additional dependencies: jQuery, underscore.
define(["libs/backbone/backbone-relational"], function() {
define([], function() {
/**
* Dataset metedata.
*/
var DatasetMetadata = Backbone.RelationalModel.extend({});
var DatasetMetadata = Backbone.Model.extend({});
/**
* A dataset. In Galaxy, datasets are associated with a history, so
* this object is also known as a HistoryDatasetAssociation.
*/
var Dataset = Backbone.RelationalModel.extend({
var Dataset = Backbone.Model.extend({
defaults: {
id: '',
type: '',
@@ -20,8 +20,8 @@ var Dataset = Backbone.RelationalModel.extend({
},
initialize: function() {
// FIXME: pass back a metadata dict and then Backbone-relational
// can be used unpack metadata automatically.
this._set_metadata();
// Update metadata on change.
this.on('change', this._set_metadata, this);
},
+26 -25
View File
@@ -2,7 +2,7 @@
* Model, view, and controller objects for Galaxy tools and tool panel.
*/
define( ["libs/underscore", "viz/trackster/util", "mvc/data", "libs/backbone/backbone-relational" ],
define( ["libs/underscore", "viz/trackster/util", "mvc/data" ],
function(_, util, data) {
/**
@@ -32,7 +32,7 @@ var VisibilityMixin = {
/**
* A tool parameter.
*/
var ToolParameter = Backbone.RelationalModel.extend({
var ToolParameter = Backbone.Model.extend({
defaults: {
name: null,
label: null,
@@ -42,13 +42,6 @@ var ToolParameter = Backbone.RelationalModel.extend({
num_samples: 5
},
subModelTypes: {
'integer': 'IntegerToolParameter',
'float': 'FloatToolParameter',
'data': 'DataToolParameter',
'select': 'SelectToolParameter'
},
initialize: function() {
this.attributes.html = unescape(this.attributes.html);
},
@@ -62,20 +55,19 @@ var ToolParameter = Backbone.RelationalModel.extend({
}
});
// In order to resolve subModelTypes for tool parameters, use a custom scope here rather
// than polluting the global scope.
var tools_scope = {};
Backbone.Relational.store.addModelScope(tools_scope);
var ToolParameterCollection = Backbone.Collection.extend({
model: ToolParameter
});
/**
* A data tool parameter.
*/
var DataToolParameter = tools_scope.DataToolParameter = ToolParameter.extend({});
var DataToolParameter = ToolParameter.extend({});
/**
* An integer tool parameter.
*/
var IntegerToolParameter = tools_scope.IntegerToolParameter = ToolParameter.extend({
var IntegerToolParameter = ToolParameter.extend({
set_value: function(value) {
this.set('value', parseInt(value, 10));
},
@@ -90,7 +82,7 @@ var IntegerToolParameter = tools_scope.IntegerToolParameter = ToolParameter.exte
}
});
var FloatToolParameter = tools_scope.FloatToolParameter = IntegerToolParameter.extend({
var FloatToolParameter = IntegerToolParameter.extend({
set_value: function(value) {
this.set('value', parseFloat(value));
}
@@ -99,7 +91,7 @@ var FloatToolParameter = tools_scope.FloatToolParameter = IntegerToolParameter.e
/**
* A select tool parameter.
*/
var SelectToolParameter = tools_scope.SelectToolParameter = ToolParameter.extend({
var SelectToolParameter = ToolParameter.extend({
/**
* Returns tool options.
*/
@@ -110,10 +102,18 @@ var SelectToolParameter = tools_scope.SelectToolParameter = ToolParameter.extend
}
});
// Set up dictionary of parameter types.
ToolParameter.subModelTypes = {
'integer': IntegerToolParameter,
'float': FloatToolParameter,
'data': DataToolParameter,
'select': SelectToolParameter
};
/**
* A Galaxy tool.
*/
var Tool = Backbone.RelationalModel.extend({
var Tool = Backbone.Model.extend({
// Default attributes.
defaults: {
id: null,
@@ -124,13 +124,14 @@ var Tool = Backbone.RelationalModel.extend({
outputs: []
},
relations: [
{
type: Backbone.HasMany,
key: 'inputs',
relatedModel: ToolParameter
}
],
initialize: function(options) {
// Set parameters.
this.set('inputs', new ToolParameterCollection(_.map(options.inputs, function(p) {
var p_class = ToolParameter.subModelTypes[p.type] || ToolParameter;
return new p_class(p);
})));
},
urlRoot: galaxy_config.root + 'api/tools',
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
define(["galaxy.masthead","libs/backbone/backbone-relational"],function(b){var a=Backbone.Model.extend({options:null,masthead:null,initialize:function(c){this.options=c.config;this.masthead=c.masthead;this.create()},create:function(){var d=new b.GalaxyMastheadTab({title:"Analyze Data",content:"root/index"});this.masthead.append(d);var c=new b.GalaxyMastheadTab({title:"Workflow",content:"workflow"});this.masthead.append(c);var g=new b.GalaxyMastheadTab({title:"Shared Data",content:"library/index"});g.addMenu({title:"Data Libraries",content:"library/index",divider:true});g.addMenu({title:"Published Histories",content:"history/list_published"});g.addMenu({title:"Published Workflows",content:"workflow/list_published"});g.addMenu({title:"Published Visualizations",content:"visualization/list_published"});g.addMenu({title:"Published Pages",content:"page/list_published"});this.masthead.append(g);if(this.options.user.requests){var h=new b.GalaxyMastheadTab({title:"Lab"});h.addMenu({title:"Sequencing Requests",content:"requests/index"});h.addMenu({title:"Find Samples",content:"requests/find_samples_index"});h.addMenu({title:"Help",content:this.options.lims_doc_url});this.masthead.append(h)}var k=new b.GalaxyMastheadTab({title:"Visualization",content:"visualization/list"});k.addMenu({title:"New Track Browser",content:"visualization/trackster",target:"_frame"});k.addMenu({title:"Saved Visualizations",content:"visualization/list",target:"_frame"});this.masthead.append(k);if(this.options.enable_cloud_launch){var e=new b.GalaxyMastheadTab({title:"Cloud",content:"cloudlaunch/index"});e.addMenu({title:"New Cloud Cluster",content:"cloudlaunch/index"});this.masthead.append(e)}if(this.options.is_admin_user){var f=new b.GalaxyMastheadTab({title:"Admin",content:"admin/index",extra_class:"admin-only"});this.masthead.append(f)}var j=new b.GalaxyMastheadTab({title:"Help"});if(this.options.biostar_url){j.addMenu({title:"Galaxy Q&A Site",content:this.options.biostar_url_redirect,target:"_blank"});j.addMenu({title:"Ask a question",content:"biostar/biostar_question_redirect",target:"_blank"})}j.addMenu({title:"Support",content:this.options.support_url,target:"_blank"});j.addMenu({title:"Search",content:this.options.search_url,target:"_blank"});j.addMenu({title:"Mailing Lists",content:this.options.mailing_lists,target:"_blank"});j.addMenu({title:"Videos",content:this.options.screencasts_url,target:"_blank"});j.addMenu({title:"Wiki",content:this.options.wiki_url,target:"_blank"});j.addMenu({title:"How to Cite Galaxy",content:this.options.citation_url,target:"_blank"});if(!this.options.terms_url){j.addMenu({title:"Terms and Conditions",content:this.options.terms_url,target:"_blank"})}this.masthead.append(j);if(!this.options.user.valid){var i=new b.GalaxyMastheadTab({title:"User",extra_class:"loggedout-only"});if(this.options.allow_user_creation){i.addMenu({title:"Login",content:"user/login",target:"galaxy_main"})}if(this.options.allow_user_creation){i.addMenu({title:"Register",content:"user/create",target:"galaxy_main"})}this.masthead.append(i)}else{var i=new b.GalaxyMastheadTab({title:"User",extra_class:"loggedin-only"});i.addMenu({title:"Logged in as "+this.options.user.email});if(this.options.use_remote_user&&this.options.remote_user_logout_href){i.addMenu({title:"Logout",content:this.options.remote_user_logout_href,target:"_top"})}else{i.addMenu({title:"Preferences",content:"user?cntrller=user",target:"galaxy_main"});i.addMenu({title:"Custom Builds",content:"user/dbkeys",target:"galaxy_main"});i.addMenu({title:"Logout",content:"user/logout",target:"_top",divider:true})}i.addMenu({title:"Saved Histories",content:"history/list",target:"galaxy_main"});i.addMenu({title:"Saved Datasets",content:"dataset/list",target:"galaxy_main"});i.addMenu({title:"Saved Pages",content:"page/list",target:"_top"});i.addMenu({title:"API Keys",content:"user/api_keys?cntrller=user",target:"galaxy_main"});if(this.options.use_remote_user){i.addMenu({title:"Public Name",content:"user/edit_username?cntrller=user",target:"galaxy_main"})}this.masthead.append(i)}}});return{GalaxyMenu:a}});
define(["galaxy.masthead"],function(b){var a=Backbone.Model.extend({options:null,masthead:null,initialize:function(c){this.options=c.config;this.masthead=c.masthead;this.create()},create:function(){var d=new b.GalaxyMastheadTab({title:"Analyze Data",content:"root/index"});this.masthead.append(d);var c=new b.GalaxyMastheadTab({title:"Workflow",content:"workflow"});this.masthead.append(c);var g=new b.GalaxyMastheadTab({title:"Shared Data",content:"library/index"});g.addMenu({title:"Data Libraries",content:"library/index",divider:true});g.addMenu({title:"Published Histories",content:"history/list_published"});g.addMenu({title:"Published Workflows",content:"workflow/list_published"});g.addMenu({title:"Published Visualizations",content:"visualization/list_published"});g.addMenu({title:"Published Pages",content:"page/list_published"});this.masthead.append(g);if(this.options.user.requests){var h=new b.GalaxyMastheadTab({title:"Lab"});h.addMenu({title:"Sequencing Requests",content:"requests/index"});h.addMenu({title:"Find Samples",content:"requests/find_samples_index"});h.addMenu({title:"Help",content:this.options.lims_doc_url});this.masthead.append(h)}var k=new b.GalaxyMastheadTab({title:"Visualization",content:"visualization/list"});k.addMenu({title:"New Track Browser",content:"visualization/trackster",target:"_frame"});k.addMenu({title:"Saved Visualizations",content:"visualization/list",target:"_frame"});this.masthead.append(k);if(this.options.enable_cloud_launch){var e=new b.GalaxyMastheadTab({title:"Cloud",content:"cloudlaunch/index"});e.addMenu({title:"New Cloud Cluster",content:"cloudlaunch/index"});this.masthead.append(e)}if(this.options.is_admin_user){var f=new b.GalaxyMastheadTab({title:"Admin",content:"admin/index",extra_class:"admin-only"});this.masthead.append(f)}var j=new b.GalaxyMastheadTab({title:"Help"});if(this.options.biostar_url){j.addMenu({title:"Galaxy Q&A Site",content:this.options.biostar_url_redirect,target:"_blank"});j.addMenu({title:"Ask a question",content:"biostar/biostar_question_redirect",target:"_blank"})}j.addMenu({title:"Support",content:this.options.support_url,target:"_blank"});j.addMenu({title:"Search",content:this.options.search_url,target:"_blank"});j.addMenu({title:"Mailing Lists",content:this.options.mailing_lists,target:"_blank"});j.addMenu({title:"Videos",content:this.options.screencasts_url,target:"_blank"});j.addMenu({title:"Wiki",content:this.options.wiki_url,target:"_blank"});j.addMenu({title:"How to Cite Galaxy",content:this.options.citation_url,target:"_blank"});if(!this.options.terms_url){j.addMenu({title:"Terms and Conditions",content:this.options.terms_url,target:"_blank"})}this.masthead.append(j);if(!this.options.user.valid){var i=new b.GalaxyMastheadTab({title:"User",extra_class:"loggedout-only"});if(this.options.allow_user_creation){i.addMenu({title:"Login",content:"user/login",target:"galaxy_main"})}if(this.options.allow_user_creation){i.addMenu({title:"Register",content:"user/create",target:"galaxy_main"})}this.masthead.append(i)}else{var i=new b.GalaxyMastheadTab({title:"User",extra_class:"loggedin-only"});i.addMenu({title:"Logged in as "+this.options.user.email});if(this.options.use_remote_user&&this.options.remote_user_logout_href){i.addMenu({title:"Logout",content:this.options.remote_user_logout_href,target:"_top"})}else{i.addMenu({title:"Preferences",content:"user?cntrller=user",target:"galaxy_main"});i.addMenu({title:"Custom Builds",content:"user/dbkeys",target:"galaxy_main"});i.addMenu({title:"Logout",content:"user/logout",target:"_top",divider:true})}i.addMenu({title:"Saved Histories",content:"history/list",target:"galaxy_main"});i.addMenu({title:"Saved Datasets",content:"dataset/list",target:"galaxy_main"});i.addMenu({title:"Saved Pages",content:"page/list",target:"_top"});i.addMenu({title:"API Keys",content:"user/api_keys?cntrller=user",target:"galaxy_main"});if(this.options.use_remote_user){i.addMenu({title:"Public Name",content:"user/edit_username?cntrller=user",target:"galaxy_main"})}this.masthead.append(i)}}});return{GalaxyMenu:a}});
+1 -1
View File
@@ -1 +1 @@
define(["libs/backbone/backbone-relational"],function(){var a=Backbone.View.extend({elMain:"#everything",optionsDefault:{title:"galaxy-modal",body:"",backdrop:true,height:null,width:null},options:{},initialize:function(b){if(b){this.create(b)}},show:function(b){this.initialize(b);if(this.options.height){this.$body.css("height",this.options.height);this.$body.css("overflow","hidden")}else{this.$body.css("max-height",$(window).height()/2)}if(this.options.width){this.$dialog.css("width",this.options.width)}if(this.visible){this.$el.show()}else{this.$el.fadeIn("fast")}this.visible=true},hide:function(){this.$el.fadeOut("fast");this.visible=false},create:function(c){this.options=_.defaults(c,this.optionsDefault);if(this.options.body=="progress"){this.options.body=$('<div class="progress progress-striped active"><div class="progress-bar progress-bar-info" style="width:100%"></div></div>')}if(this.$el){this.$el.remove()}this.setElement(this.template(this.options.title));this.$dialog=(this.$el).find(".modal-dialog");this.$body=(this.$el).find(".modal-body");this.$footer=(this.$el).find(".modal-footer");this.$buttons=(this.$el).find(".buttons");this.$backdrop=(this.$el).find(".modal-backdrop");this.$body.html(this.options.body);if(!this.options.backdrop){this.$backdrop.removeClass("in")}if(this.options.buttons){var b=this;$.each(this.options.buttons,function(d,e){b.$buttons.append($('<button id="'+String(d).toLowerCase()+'"></button>').text(d).click(e)).append(" ")})}else{this.$footer.hide()}$(this.elMain).append($(this.el))},enableButton:function(b){this.$buttons.find("#"+String(b).toLowerCase()).prop("disabled",false)},disableButton:function(b){this.$buttons.find("#"+String(b).toLowerCase()).prop("disabled",true)},scrollTop:function(){return this.$body.scrollTop()},template:function(b){return'<div class="modal"><div class="modal-backdrop fade in" style="z-index: -1;"></div><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" style="display: none;">&times;</button><h4 class="title">'+b+'</h4></div><div class="modal-body"></div><div class="modal-footer"><div class="buttons" style="float: right;"></div></div></div</div></div>'}});return{GalaxyModal:a}});
define([],function(){var a=Backbone.View.extend({elMain:"#everything",optionsDefault:{title:"galaxy-modal",body:"",backdrop:true,height:null,width:null},options:{},initialize:function(b){if(b){this.create(b)}},show:function(b){this.initialize(b);if(this.options.height){this.$body.css("height",this.options.height);this.$body.css("overflow","hidden")}else{this.$body.css("max-height",$(window).height()/2)}if(this.options.width){this.$dialog.css("width",this.options.width)}if(this.visible){this.$el.show()}else{this.$el.fadeIn("fast")}this.visible=true},hide:function(){this.$el.fadeOut("fast");this.visible=false},create:function(c){this.options=_.defaults(c,this.optionsDefault);if(this.options.body=="progress"){this.options.body=$('<div class="progress progress-striped active"><div class="progress-bar progress-bar-info" style="width:100%"></div></div>')}if(this.$el){this.$el.remove()}this.setElement(this.template(this.options.title));this.$dialog=(this.$el).find(".modal-dialog");this.$body=(this.$el).find(".modal-body");this.$footer=(this.$el).find(".modal-footer");this.$buttons=(this.$el).find(".buttons");this.$backdrop=(this.$el).find(".modal-backdrop");this.$body.html(this.options.body);if(!this.options.backdrop){this.$backdrop.removeClass("in")}if(this.options.buttons){var b=this;$.each(this.options.buttons,function(d,e){b.$buttons.append($('<button id="'+String(d).toLowerCase()+'"></button>').text(d).click(e)).append(" ")})}else{this.$footer.hide()}$(this.elMain).append($(this.el))},enableButton:function(b){this.$buttons.find("#"+String(b).toLowerCase()).prop("disabled",false)},disableButton:function(b){this.$buttons.find("#"+String(b).toLowerCase()).prop("disabled",true)},scrollTop:function(){return this.$body.scrollTop()},template:function(b){return'<div class="modal"><div class="modal-backdrop fade in" style="z-index: -1;"></div><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" style="display: none;">&times;</button><h4 class="title">'+b+'</h4></div><div class="modal-body"></div><div class="modal-footer"><div class="buttons" style="float: right;"></div></div></div</div></div>'}});return{GalaxyModal:a}});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
var BaseModel=Backbone.RelationalModel.extend({defaults:{name:null,hidden:false},show:function(){this.set("hidden",false)},hide:function(){this.set("hidden",true)},is_visible:function(){return !this.attributes.hidden}});var BaseView=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.update_visible,this);this.update_visible()},update_visible:function(){if(this.model.attributes.hidden){this.$el.hide()}else{this.$el.show()}}});var LoggableMixin={logger:null,log:function(){if(this.logger){var a=this.logger.log;if(typeof this.logger.log==="object"){a=Function.prototype.bind.call(this.logger.log,this.logger)}return a.apply(this.logger,arguments)}return undefined}};var SessionStorageModel=Backbone.Model.extend({initialize:function(b){b.id=(!_.isString(b.id))?(_.uniqueId()):(b.id);this.id=b.id;var a=(!this.isNew())?(this._read(this)):({});this.clear({silent:true});this.save(_.extend({},this.defaults,a,b),{silent:true});this.on("change",function(){this.save()})},sync:function(d,b,a){if(!a.silent){b.trigger("request",b,{},a)}var c;switch(d){case"create":c=this._create(b);break;case"read":c=this._read(b);break;case"update":c=this._update(b);break;case"delete":c=this._delete(b);break}if(c!==undefined||c!==null){if(a.success){a.success()}}else{if(a.error){a.error()}}return c},_create:function(a){var b=a.toJSON(),c=sessionStorage.setItem(a.id,JSON.stringify(b));return(c===null)?(c):(b)},_read:function(a){return JSON.parse(sessionStorage.getItem(a.id))},_update:function(a){return a._create(a)},_delete:function(a){return sessionStorage.removeItem(a.id)},isNew:function(){return !sessionStorage.hasOwnProperty(this.id)},_log:function(){return JSON.stringify(this.toJSON(),null," ")},toString:function(){return"SessionStorageModel("+this.id+")"}});(function(){SessionStorageModel.prototype=_.omit(SessionStorageModel.prototype,"url","urlRoot")}());var HiddenUntilActivatedViewMixin={hiddenUntilActivated:function(a,c){c=c||{};this.HUAVOptions={$elementShown:this.$el,showFn:jQuery.prototype.toggle,showSpeed:"fast"};_.extend(this.HUAVOptions,c||{});this.HUAVOptions.hasBeenShown=this.HUAVOptions.$elementShown.is(":visible");if(a){var b=this;a.on("click",function(d){b.toggle(b.HUAVOptions.showSpeed)})}},toggle:function(){if(this.HUAVOptions.$elementShown.is(":hidden")){if(!this.HUAVOptions.hasBeenShown){if(_.isFunction(this.HUAVOptions.onshowFirstTime)){this.HUAVOptions.hasBeenShown=true;this.HUAVOptions.onshowFirstTime.call(this)}}else{if(_.isFunction(this.HUAVOptions.onshow)){this.HUAVOptions.onshow.call(this)}}}return this.HUAVOptions.showFn.apply(this.HUAVOptions.$elementShown,arguments)}};
var BaseModel=Backbone.Model.extend({defaults:{name:null,hidden:false},show:function(){this.set("hidden",false)},hide:function(){this.set("hidden",true)},is_visible:function(){return !this.attributes.hidden}});var BaseView=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.update_visible,this);this.update_visible()},update_visible:function(){if(this.model.attributes.hidden){this.$el.hide()}else{this.$el.show()}}});var LoggableMixin={logger:null,log:function(){if(this.logger){var a=this.logger.log;if(typeof this.logger.log==="object"){a=Function.prototype.bind.call(this.logger.log,this.logger)}return a.apply(this.logger,arguments)}return undefined}};var SessionStorageModel=Backbone.Model.extend({initialize:function(b){b.id=(!_.isString(b.id))?(_.uniqueId()):(b.id);this.id=b.id;var a=(!this.isNew())?(this._read(this)):({});this.clear({silent:true});this.save(_.extend({},this.defaults,a,b),{silent:true});this.on("change",function(){this.save()})},sync:function(d,b,a){if(!a.silent){b.trigger("request",b,{},a)}var c;switch(d){case"create":c=this._create(b);break;case"read":c=this._read(b);break;case"update":c=this._update(b);break;case"delete":c=this._delete(b);break}if(c!==undefined||c!==null){if(a.success){a.success()}}else{if(a.error){a.error()}}return c},_create:function(a){var b=a.toJSON(),c=sessionStorage.setItem(a.id,JSON.stringify(b));return(c===null)?(c):(b)},_read:function(a){return JSON.parse(sessionStorage.getItem(a.id))},_update:function(a){return a._create(a)},_delete:function(a){return sessionStorage.removeItem(a.id)},isNew:function(){return !sessionStorage.hasOwnProperty(this.id)},_log:function(){return JSON.stringify(this.toJSON(),null," ")},toString:function(){return"SessionStorageModel("+this.id+")"}});(function(){SessionStorageModel.prototype=_.omit(SessionStorageModel.prototype,"url","urlRoot")}());var HiddenUntilActivatedViewMixin={hiddenUntilActivated:function(a,c){c=c||{};this.HUAVOptions={$elementShown:this.$el,showFn:jQuery.prototype.toggle,showSpeed:"fast"};_.extend(this.HUAVOptions,c||{});this.HUAVOptions.hasBeenShown=this.HUAVOptions.$elementShown.is(":visible");if(a){var b=this;a.on("click",function(d){b.toggle(b.HUAVOptions.showSpeed)})}},toggle:function(){if(this.HUAVOptions.$elementShown.is(":hidden")){if(!this.HUAVOptions.hasBeenShown){if(_.isFunction(this.HUAVOptions.onshowFirstTime)){this.HUAVOptions.hasBeenShown=true;this.HUAVOptions.onshowFirstTime.call(this)}}else{if(_.isFunction(this.HUAVOptions.onshow)){this.HUAVOptions.onshow.call(this)}}}return this.HUAVOptions.showFn.apply(this.HUAVOptions.$elementShown,arguments)}};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
var ui=null;var view=null;var browser_router=null;require(["utils/galaxy.utils","libs/jquery/jstorage","libs/jquery/jquery.event.drag","libs/jquery/jquery.event.hover","libs/jquery/jquery.mousewheel","libs/jquery/jquery-ui","libs/jquery/select2","libs/farbtastic","libs/jquery/jquery.form","libs/jquery/jquery.rating","mvc/ui"],function(a){a.cssLoadFile("static/style/jquery.rating.css");a.cssLoadFile("static/style/autocomplete_tagging.css");a.cssLoadFile("static/style/jquery-ui/smoothness/jquery-ui.css");a.cssLoadFile("static/style/library.css");a.cssLoadFile("static/style/trackster.css")});define(["libs/backbone/backbone-relational","viz/visualization","viz/trackster_ui"],function(c,a,b){var d=Backbone.View.extend({initialize:function(){ui=new b.TracksterUI(galaxy_config.root);ui.createButtonMenu();ui.buttonMenu.$el.attr("style","float: right");$("#center .unified-panel-header-inner").append(ui.buttonMenu.$el);$("#right .unified-panel-title").append("Bookmarks");$("#right .unified-panel-icons").append("<a id='add-bookmark-button' class='icon-button menu-button plus-button' href='javascript:void(0);' title='Add bookmark'></a>");$("#right-border").click(function(){view.resize_window()});force_right_panel("hide");if(galaxy_config.app.id){this.view_existing()}else{this.view_new()}},set_up_router:function(e){browser_router=new a.TrackBrowserRouter(e);Backbone.history.start()},view_existing:function(){var e=galaxy_config.app.viz_config;view=ui.create_visualization({container:$("#center .unified-panel-body"),name:e.title,vis_id:e.vis_id,dbkey:e.dbkey},e.viewport,e.tracks,e.bookmarks,true);this.init_editor()},view_new:function(){var e=this;$.ajax({url:galaxy_config.root+"api/genomes?chrom_info=True",data:{},error:function(){alert("Couldn't create new browser.")},success:function(f){Galaxy.modal.show({title:"New Visualization",body:e.template_view_new(f),buttons:{Cancel:function(){window.location=galaxy_config.root+"visualization/list"},Create:function(){e.create_browser($("#new-title").val(),$("#new-dbkey").val());Galaxy.modal.hide()}}});if(galaxy_config.app.default_dbkey){$("#new-dbkey").val(galaxy_config.app.default_dbkey)}$("#new-title").focus();$("select[name='dbkey']").select2();$("#overlay").css("overflow","auto")}})},template_view_new:function(e){var g='<form id="new-browser-form" action="javascript:void(0);" method="post" onsubmit="return false;"><div class="form-row"><label for="new-title">Browser name:</label><div class="form-row-input"><input type="text" name="title" id="new-title" value="Unnamed"></input></div><div style="clear: both;"></div></div><div class="form-row"><label for="new-dbkey">Reference genome build (dbkey): </label><div class="form-row-input"><select name="dbkey" id="new-dbkey">';for(var f=0;f<e.length;f++){g+='<option value="'+e[f][1]+'">'+e[f][0]+"</option>"}g+='</select></div><div style="clear: both;"></div></div><div class="form-row">Is the build not listed here? <a href="'+galaxy_config.root+'user/dbkeys?use_panels=True">Add a Custom Build</a></div></form>';return g},create_browser:function(f,e){$(document).trigger("convert_to_values");view=ui.create_visualization({container:$("#center .unified-panel-body"),name:f,dbkey:e},galaxy_config.app.gene_region);this.init_editor();view.editor=true},init_editor:function(){$("#center .unified-panel-title").text(view.prefs.name+" ("+view.dbkey+")");if(galaxy_config.app.add_dataset){$.ajax({url:galaxy_config.root+"api/datasets/"+galaxy_config.app.add_dataset,data:{hda_ldda:"hda",data_type:"track_config"},dataType:"json",success:function(e){view.add_drawable(b.object_from_template(e,view,view))}})}$("#add-bookmark-button").click(function(){var f=view.chrom+":"+view.low+"-"+view.high,e="Bookmark description";return ui.add_bookmark(f,e,true)});ui.init_keyboard_nav(view);this.set_up_router({view:view})}});return{GalaxyApp:d}});
var ui=null;var view=null;var browser_router=null;require(["utils/galaxy.utils","libs/jquery/jstorage","libs/jquery/jquery.event.drag","libs/jquery/jquery.event.hover","libs/jquery/jquery.mousewheel","libs/jquery/jquery-ui","libs/jquery/select2","libs/farbtastic","libs/jquery/jquery.form","libs/jquery/jquery.rating","mvc/ui"],function(a){a.cssLoadFile("static/style/jquery.rating.css");a.cssLoadFile("static/style/autocomplete_tagging.css");a.cssLoadFile("static/style/jquery-ui/smoothness/jquery-ui.css");a.cssLoadFile("static/style/library.css");a.cssLoadFile("static/style/trackster.css")});define(["viz/visualization","viz/trackster_ui"],function(a,b){var c=Backbone.View.extend({initialize:function(){ui=new b.TracksterUI(galaxy_config.root);ui.createButtonMenu();ui.buttonMenu.$el.attr("style","float: right");$("#center .unified-panel-header-inner").append(ui.buttonMenu.$el);$("#right .unified-panel-title").append("Bookmarks");$("#right .unified-panel-icons").append("<a id='add-bookmark-button' class='icon-button menu-button plus-button' href='javascript:void(0);' title='Add bookmark'></a>");$("#right-border").click(function(){view.resize_window()});force_right_panel("hide");if(galaxy_config.app.id){this.view_existing()}else{this.view_new()}},set_up_router:function(d){browser_router=new a.TrackBrowserRouter(d);Backbone.history.start()},view_existing:function(){var d=galaxy_config.app.viz_config;view=ui.create_visualization({container:$("#center .unified-panel-body"),name:d.title,vis_id:d.vis_id,dbkey:d.dbkey},d.viewport,d.tracks,d.bookmarks,true);this.init_editor()},view_new:function(){var d=this;$.ajax({url:galaxy_config.root+"api/genomes?chrom_info=True",data:{},error:function(){alert("Couldn't create new browser.")},success:function(e){Galaxy.modal.show({title:"New Visualization",body:d.template_view_new(e),buttons:{Cancel:function(){window.location=galaxy_config.root+"visualization/list"},Create:function(){d.create_browser($("#new-title").val(),$("#new-dbkey").val());Galaxy.modal.hide()}}});if(galaxy_config.app.default_dbkey){$("#new-dbkey").val(galaxy_config.app.default_dbkey)}$("#new-title").focus();$("select[name='dbkey']").select2();$("#overlay").css("overflow","auto")}})},template_view_new:function(d){var f='<form id="new-browser-form" action="javascript:void(0);" method="post" onsubmit="return false;"><div class="form-row"><label for="new-title">Browser name:</label><div class="form-row-input"><input type="text" name="title" id="new-title" value="Unnamed"></input></div><div style="clear: both;"></div></div><div class="form-row"><label for="new-dbkey">Reference genome build (dbkey): </label><div class="form-row-input"><select name="dbkey" id="new-dbkey">';for(var e=0;e<d.length;e++){f+='<option value="'+d[e][1]+'">'+d[e][0]+"</option>"}f+='</select></div><div style="clear: both;"></div></div><div class="form-row">Is the build not listed here? <a href="'+galaxy_config.root+'user/dbkeys?use_panels=True">Add a Custom Build</a></div></form>';return f},create_browser:function(e,d){$(document).trigger("convert_to_values");view=ui.create_visualization({container:$("#center .unified-panel-body"),name:e,dbkey:d},galaxy_config.app.gene_region);this.init_editor();view.editor=true},init_editor:function(){$("#center .unified-panel-title").text(view.prefs.name+" ("+view.dbkey+")");if(galaxy_config.app.add_dataset){$.ajax({url:galaxy_config.root+"api/datasets/"+galaxy_config.app.add_dataset,data:{hda_ldda:"hda",data_type:"track_config"},dataType:"json",success:function(d){view.add_drawable(b.object_from_template(d,view,view))}})}$("#add-bookmark-button").click(function(){var e=view.chrom+":"+view.low+"-"+view.high,d="Bookmark description";return ui.add_bookmark(e,d,true)});ui.init_keyboard_nav(view);this.set_up_router({view:view})}});return{GalaxyApp:c}});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9 -36
View File
@@ -20,7 +20,7 @@ var ToolInputsSettings = Backbone.Model.extend({
/**
* Tree for a tool's parameters.
*/
var ToolParameterTree = Backbone.RelationalModel.extend({
var ToolParameterTree = Backbone.Model.extend({
defaults: {
tool: null,
tree_data: null
@@ -248,23 +248,16 @@ var ToolParameterTree = Backbone.RelationalModel.extend({
}
});
var SweepsterTrack = Backbone.RelationalModel.extend({
var SweepsterTrack = Backbone.Model.extend({
defaults: {
track: null,
mode: 'Pack',
settings: null,
regions: null
},
relations: [
{
type: Backbone.HasMany,
key: 'regions',
relatedModel: visualization.GenomeRegion
}
],
initialize: function(options) {
this.set('regions', new visualization.GenomeRegionCollection(options.regions));
if (options.track) {
// FIXME: find a better way to deal with needed URLs:
var track_config = _.extend({
@@ -313,31 +306,12 @@ var SweepsterVisualization = visualization.Visualization.extend({
default_mode: 'Pack'
}),
relations: [
{
type: Backbone.HasOne,
key: 'dataset',
relatedModel: data.Dataset
},
{
type: Backbone.HasOne,
key: 'tool',
relatedModel: tools.Tool
},
{
type: Backbone.HasMany,
key: 'regions',
relatedModel: visualization.GenomeRegion
},
{
type: Backbone.HasMany,
key: 'tracks',
relatedModel: SweepsterTrack
}
// NOTE: cannot use relationship for parameter tree because creating tree is complex.
],
initialize: function(options) {
this.set('dataset', new data.Dataset(options.dataset));
this.set('tool', new tools.Tool(options.tool));
this.set('regions', new visualization.GenomeRegionCollection(options.regions));
this.set('tracks', new SweepsterTrackCollection(options.tracks));
var tool_with_samplable_inputs = this.get('tool');
this.set('tool_with_samplable_inputs', tool_with_samplable_inputs);
// Remove complex parameters for now.
@@ -354,7 +328,6 @@ var SweepsterVisualization = visualization.Visualization.extend({
},
toJSON: function() {
// TODO: could this be easier by using relational models?
return {
id: this.get('id'),
title: 'Parameter exploration for dataset \'' + this.get('dataset').get('name') + '\'',
+2 -2
View File
@@ -29,8 +29,8 @@ require(
});
// trackster viewer
define( ["libs/backbone/backbone-relational", "viz/visualization", "viz/trackster_ui"],
function(backbone, visualization, trackster_ui)
define( ["viz/visualization", "viz/trackster_ui"],
function(visualization, trackster_ui)
{
var TracksterView = Backbone.View.extend(
+16 -12
View File
@@ -1618,6 +1618,8 @@ var TracksterTool = tools_mod.Tool.extend({
},
initialize: function(options) {
tools_mod.Tool.prototype.initialize.call(this, options);
// Restore tool visibility from state; default to hidden.
var hidden = true;
if (options.tool_state !== undefined && options.tool_state.hidden !== undefined) {
@@ -1787,7 +1789,7 @@ var TracksterToolView = Backbone.View.extend({
},
current_track = track,
// Set name of track to include tool name, parameters, and region used.
track_name = url_params.tool_id +
track_name = tool.get('name') +
current_track.tool_region_and_parameters_str(region),
container;
@@ -1909,7 +1911,9 @@ var Config = Backbone.Model.extend({
// Set default values.
_.each(options.params, function(p) {
values[p.key] = p.default_value;
// For color parameters without a default value, assign a random color.
values[p.key] = (p.type === 'color' && !p.default_value ? util.get_random_color() : p.default_value );
});
// Restore saved values.
@@ -2341,7 +2345,7 @@ var Track = function(view, container, obj_dict) {
this.dataset = null;
if (obj_dict.dataset) {
// Dataset can be a Backbone model or a dict that can be used to create a model.
this.dataset = (obj_dict.dataset instanceof Backbone.Model ? obj_dict.dataset : data.Dataset.findOrCreate(obj_dict.dataset) );
this.dataset = (obj_dict.dataset instanceof Backbone.Model ? obj_dict.dataset : new data.Dataset(obj_dict.dataset) );
}
this.dataset_check_type = 'converted_datasets_state';
this.data_url_extra_params = {};
@@ -2430,7 +2434,7 @@ extend(Track.prototype, Drawable.prototype, {
// Update track name.
if (track.tool.is_visible()) {
track.set_name(track.name + track.tool_region_and_parameters_str());
track.set_name(track.prefs.name + track.tool_region_and_parameters_str());
}
else {
track.revert_name();
@@ -2446,8 +2450,8 @@ extend(Track.prototype, Drawable.prototype, {
css_class: "arrow-split",
on_click_fn: function(track) {
var template =
'<strong>Tool</strong>: <%= track.tool.name %><br/>' +
'<strong>Dataset</strong>: <%= track.name %><br/>' +
'<strong>Tool</strong>: <%= track.tool.get("name") %><br/>' +
'<strong>Dataset</strong>: <%= track.prefs.name %><br/>' +
'<strong>Region(s)</strong>: <select name="regions">' +
'<option value="cur">current viewing area</option>' +
'<option value="bookmarks">bookmarks</option>' +
@@ -3821,7 +3825,7 @@ extend(LineTrack.prototype, Drawable.prototype, TiledTrack.prototype, {
display_modes: CONTINUOUS_DATA_MODES,
config_params: _.union( Drawable.prototype.config_params, [
{ key: 'color', label: 'Color', type: 'color', default_value: util.get_random_color() },
{ key: 'color', label: 'Color', type: 'color' },
{ key: 'min_value', label: 'Min Value', type: 'float', default_value: undefined },
{ key: 'max_value', label: 'Max Value', type: 'float', default_value: undefined },
{ key: 'mode', type: 'string', default_value: this.mode, hidden: true },
@@ -3919,8 +3923,8 @@ extend(FeatureTrack.prototype, Drawable.prototype, TiledTrack.prototype, {
display_modes: ["Auto", "Coverage", "Dense", "Squish", "Pack"],
config_params: _.union( Drawable.prototype.config_params, [
{ key: 'block_color', label: 'Block color', type: 'color', default_value: util.get_random_color() },
{ key: 'reverse_strand_color', label: 'Antisense strand color', type: 'color', default_value: util.get_random_color() },
{ key: 'block_color', label: 'Block color', type: 'color' },
{ key: 'reverse_strand_color', label: 'Antisense strand color', type: 'color' },
{ key: 'label_color', label: 'Label color', type: 'color', default_value: 'black' },
{ key: 'show_counts', label: 'Show summary counts', type: 'bool', default_value: true,
help: 'Show the number of items in each bin when drawing summary histogram' },
@@ -4217,7 +4221,7 @@ extend(VariantTrack.prototype, Drawable.prototype, TiledTrack.prototype, {
display_modes: ["Auto", "Coverage", "Dense", "Squish", "Pack"],
config_params: _.union( Drawable.prototype.config_params, [
{ key: 'color', label: 'Histogram color', type: 'color', default_value: util.get_random_color() },
{ key: 'color', label: 'Histogram color', type: 'color' },
{ key: 'show_sample_data', label: 'Show sample data', type: 'bool', default_value: true },
{ key: 'show_labels', label: 'Show summary and sample labels', type: 'bool', default_value: true },
{ key: 'summary_height', label: 'Locus summary height', type: 'float', default_value: 20 },
@@ -4361,8 +4365,8 @@ var ReadTrack = function (view, container, obj_dict) {
extend(ReadTrack.prototype, Drawable.prototype, TiledTrack.prototype, FeatureTrack.prototype, {
config_params: _.union( Drawable.prototype.config_params, [
{ key: 'block_color', label: 'Block and sense strand color', type: 'color', default_value: util.get_random_color() },
{ key: 'reverse_strand_color', label: 'Antisense strand color', type: 'color', default_value: util.get_random_color() },
{ key: 'block_color', label: 'Block and sense strand color', type: 'color' },
{ key: 'reverse_strand_color', label: 'Antisense strand color', type: 'color' },
{ key: 'label_color', label: 'Label color', type: 'color', default_value: 'black' },
{ key: 'show_insertions', label: 'Show insertions', type: 'bool', default_value: false },
{ key: 'show_differences', label: 'Show differences only', type: 'bool', default_value: true },
+15 -26
View File
@@ -681,7 +681,7 @@ var Genome = Backbone.Model.extend({
/**
* A genomic region.
*/
var GenomeRegion = Backbone.RelationalModel.extend({
var GenomeRegion = Backbone.Model.extend({
defaults: {
chrom: null,
start: 0,
@@ -850,19 +850,15 @@ var GenomeRegionCollection = Backbone.Collection.extend({
/**
* A genome browser bookmark.
*/
var BrowserBookmark = Backbone.RelationalModel.extend({
var BrowserBookmark = Backbone.Model.extend({
defaults: {
region: null,
note: ''
},
relations: [
{
type: Backbone.HasOne,
key: 'region',
relatedModel: GenomeRegion
}
]
initialize: function(options) {
this.set('region', new GenomeRegion(options.region));
}
});
/**
@@ -876,17 +872,10 @@ var BrowserBookmarkCollection = Backbone.Collection.extend({
* A track of data in a genome visualization.
*/
// TODO: rename to Track and merge with Trackster's Track object.
var BackboneTrack = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone.HasOne,
key: 'dataset',
relatedModel: data_mod.Dataset
}
],
var BackboneTrack = Backbone.Model.extend({
initialize: function(options) {
this.set('dataset', new data_mod.Dataset('dataset'));
// -- Set up config settings. --
@@ -913,10 +902,14 @@ var BackboneTrack = Backbone.RelationalModel.extend({
}
});
var BackboneTrackCollection = new Backbone.Collection.extend({
model: BackboneTrack
});
/**
* A visualization.
*/
var Visualization = Backbone.RelationalModel.extend({
var Visualization = Backbone.Model.extend({
defaults: {
title: '',
type: ''
@@ -953,13 +946,9 @@ var GenomeVisualization = Visualization.extend({
viewport: null
}),
relations: [
{
type: Backbone.HasMany,
key: 'tracks',
relatedModel: BackboneTrack
}
],
initialize: function(options) {
this.set('tracks', new BackboneTrackCollection(options.tracks));
},
/**
* Add a track or array of tracks to the visualization.
+1 -3
View File
@@ -47,7 +47,6 @@
"libs/bootstrap",
"libs/underscore",
"libs/backbone/backbone",
"libs/backbone/backbone-relational",
"libs/handlebars.runtime",
"galaxy.base",
"mvc/ui",
@@ -76,8 +75,7 @@
baseUrl: "${h.url_for('/static/scripts') }",
shim: {
"libs/underscore": { exports: "_" },
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
"libs/backbone/backbone": { exports: "Backbone" }
}
});
</script>
+1 -3
View File
@@ -53,7 +53,6 @@
'libs/bootstrap',
'libs/underscore',
'libs/backbone/backbone',
'libs/backbone/backbone-relational',
'libs/handlebars.runtime',
'galaxy.base',
'libs/require',
@@ -89,8 +88,7 @@
baseUrl: "${h.url_for('/static/scripts') }",
shim: {
"libs/underscore": { exports: "_" },
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
"libs/backbone/backbone": { exports: "Backbone" }
}
});
</script>
@@ -13,7 +13,6 @@
baseUrl: "${h.url_for('/static/scripts')}",
shim: {
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
}
});
@@ -13,7 +13,6 @@
baseUrl: "${h.url_for('/static/scripts')}",
shim: {
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
}
});
@@ -33,7 +33,6 @@
'libs/bootstrap',
'libs/underscore',
'libs/backbone/backbone',
'libs/backbone/backbone-relational',
'libs/require',
'libs/d3',
'galaxy.base',
@@ -103,7 +102,6 @@
"libs/underscore": { exports: "_" },
"libs/d3": { exports: "d3" },
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
}
});
@@ -58,7 +58,6 @@
shim: {
"libs/underscore": { exports: "_" },
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
}
});
require( ["base", "viz/visualization", "viz/trackster_ui", "viz/trackster/tracks"],
@@ -116,7 +116,6 @@
"libs/underscore": { exports: "_" },
"libs/d3": { exports: "d3" },
"libs/backbone/backbone": { exports: "Backbone" },
"libs/backbone/backbone-relational": ["libs/backbone/backbone"]
}
});