define(["libs/underscore","libs/d3","viz/trackster/util","viz/visualization","viz/trackster/tracks","mvc/tools","mvc/data","utils/config","mvc/ui/icon-button"],function(a,b,c,d,e,f,g,h,i){var j=Backbone.Model.extend({defaults:{inputs:null,values:null}}),k=Backbone.Model.extend({defaults:{tool:null,tree_data:null},initialize:function(b){var c=this;this.get("tool").get("inputs").each(function(a){a.on("change:min change:max change:num_samples",function(a){a.get("in_ptree")&&c.set_tree_data()},c),a.on("change:in_ptree",function(a){a.get("in_ptree")?c.add_param(a):c.remove_param(a),c.set_tree_data()},c)}),b.config&&a.each(b.config,function(a){var b=c.get("tool").get("inputs").find(function(b){return b.get("name")===a.name});c.add_param(b),b.set(a)})},add_param:function(a){a.get("ptree_index")||(a.set("in_ptree",!0),a.set("ptree_index",this.get_tree_params().length))},remove_param:function(b){b.set("in_ptree",!1),b.set("ptree_index",null),a(this.get_tree_params()).each(function(a,b){a.set("ptree_index",b+1)})},set_tree_data:function(){var b=a.map(this.get_tree_params(),function(a){return{param:a,samples:a.get_samples()}}),c=0,d=function(b,e){var f=b[e],g=f.param,h=(g.get("label"),f.samples);return b.length-1===e?a.map(h,function(a){return{id:c++,name:a,param:g,value:a}}):a.map(h,function(a){return{id:c++,name:a,param:g,value:a,children:d(b,e+1)}})};this.set("tree_data",{name:"Root",id:c++,children:0!==b.length?d(b,0):null})},get_tree_params:function(){return a(this.get("tool").get("inputs").where({in_ptree:!0})).sortBy(function(a){return a.get("ptree_index")})},get_num_leaves:function(){return this.get_tree_params().reduce(function(a,b){return a*b.get_samples().length},1)},get_node_settings:function(b){var c=this.get("tool").get_inputs_dict(),d=b.parent;if(d)for(;0!==d.depth;)c[d.param.get("name")]=d.value,d=d.parent;var e=this,f=function(b,c){return b.param&&(c[b.param.get("name")]=b.value),b.children?a.flatten(a.map(b.children,function(b){return f(b,a.clone(c))})):new j({inputs:e.get("tool").get("inputs"),values:c})},g=f(b,c);return a.isArray(g)||(g=[g]),g},get_connected_nodes:function(b){for(var c=function(b){return b.children?a.flatten([b,a.map(b.children,function(a){return c(a)})]):b},d=[],e=b.parent;e;)d.push(e),e=e.parent;return a.flatten([d,c(b)])},get_leaf:function(b){for(var c=this.get("tree_data"),d=function(c){return a.find(c,function(a){return b[a.param.get("name")]===a.value})};c.children;)c=d(c.children);return c},toJSON:function(){return this.get_tree_params().map(function(a){return{name:a.get("name"),min:a.get("min"),max:a.get("max"),num_samples:a.get("num_samples")}})}}),l=Backbone.Model.extend({defaults:{track:null,mode:"Pack",settings:null,regions:null},initialize:function(b){if(this.set("regions",b.regions),b.track){var c=a.extend({data_url:galaxy_config.root+"dummy1",converted_datasets_state_url:galaxy_config.root+"dummy2"},b.track);this.set("track",e.object_from_template(c,{},null))}},same_settings:function(a){var b=this.get("settings"),c=a.get("settings");for(var d in b)if(!c[d]||b[d]!==c[d])return!1;return!0},toJSON:function(){return{track:this.get("track").to_dict(),settings:this.get("settings"),regions:this.get("regions")}}}),m=Backbone.Collection.extend({model:l}),n=d.Visualization.extend({defaults:a.extend({},d.Visualization.prototype.defaults,{dataset:null,tool:null,parameter_tree:null,regions:null,tracks:null,default_mode:"Pack"}),initialize:function(a){this.set("dataset",new g.Dataset(a.dataset)),this.set("tool",new f.Tool(a.tool)),this.set("regions",new d.GenomeRegionCollection(a.regions)),this.set("tracks",new m(a.tracks));var b=this.get("tool");this.set("tool_with_samplable_inputs",b),b.remove_inputs(["data","hidden_data","conditional","text"]),this.set("parameter_tree",new k({tool:b,config:a.tree_config}))},add_track:function(a){this.get("tracks").add(a)},toJSON:function(){return{id:this.get("id"),title:"Parameter exploration for dataset '"+this.get("dataset").get("name")+"'",type:"sweepster",dataset_id:this.get("dataset").id,tool_id:this.get("tool").id,regions:this.get("regions").toJSON(),tree_config:this.get("parameter_tree").toJSON(),tracks:this.get("tracks").toJSON()}}}),o=Backbone.View.extend({tagName:"tr",TILE_LEN:250,initialize:function(a){this.canvas_manager=a.canvas_manager,this.render(),this.model.on("change:track change:mode",this.draw_tiles,this)},render:function(){var a=this.model.get("settings"),b=a.get("values"),c=$("").addClass("settings").appendTo(this.$el),d=$("
").addClass("track-info").hide().appendTo(c);d.append($("
").css("font-weight","bold").text("Track Settings")),a.get("inputs").each(function(a){d.append(a.get("label")+": "+b[a.get("name")]+"
")});var e=this,f=($("