diff --git a/client/galaxy/scripts/viz/circster.js b/client/galaxy/scripts/viz/circster.js index a673d971891..756d8e3f085 100644 --- a/client/galaxy/scripts/viz/circster.js +++ b/client/galaxy/scripts/viz/circster.js @@ -1,16 +1,20 @@ // load required libraries -require( -[ +require([ 'utils/utils', - 'mvc/ui/icon-button', - 'libs/farbtastic', -], function(mod_utils, mod_icon_btn) +], function(mod_utils) { // load css mod_utils.cssLoadFile("static/style/circster.css"); }); -define(["libs/underscore", "libs/d3", "viz/visualization", "utils/config"], function(_, d3, visualization, config) { +define([ + "libs/underscore", + "libs/d3", + "viz/visualization", + "utils/config", + 'mvc/ui/icon-button', + 'libs/farbtastic' +], function(_, d3, visualization, config, mod_icon_btn) { /** * Utility class for working with SVG. @@ -71,7 +75,7 @@ var UsesTicks = { else { tick_coords = [1, 0, 4, 0]; text_coords = [0, 4, ".35em", ""]; - + } ticks.append("line") @@ -80,7 +84,7 @@ var UsesTicks = { .attr("x2", tick_coords[2]) .attr("y1", tick_coords[3]) .style("stroke", "#000"); - + return ticks.append("text") .attr("x", text_coords[0]) .attr("y", text_coords[1]) @@ -98,11 +102,11 @@ var UsesTicks = { // Use default of 2 sig. digits. if (sigDigits === undefined) sigDigits = 2; - + // Verify input number if (num === null) return null; - + // Calculate return value var rval = null; if (Math.abs(num) < 1) { @@ -141,7 +145,7 @@ var CircsterLabelTrack = Backbone.Model.extend({}); */ var CircsterView = Backbone.View.extend({ className: 'circster', - + initialize: function(options) { this.genome = options.genome; this.label_arc_height = 50; @@ -188,7 +192,7 @@ var CircsterView = Backbone.View.extend({ track_gap = this.model.get('config').get_value('track_gap'), // Subtract 20 to make sure chrom labels are on screen. min_dimension = Math.min(this.$el.width(), this.$el.height()) - 20, - // Compute radius start based on model, will be centered + // Compute radius start based on model, will be centered // and fit entirely inside element by default. radius_start = min_dimension / 2 - circular_tracks.length * (dataset_arc_height + track_gap) + @@ -198,14 +202,14 @@ var CircsterView = Backbone.View.extend({ // Compute range of track starting radii. tracks_start_radii = d3.range(radius_start, min_dimension / 2, dataset_arc_height + track_gap); - + // Map from track start to bounds. var self = this; return _.map(tracks_start_radii, function(radius) { return [radius, radius + dataset_arc_height]; }); }, - + /** * Renders circular tracks, chord tracks, and label tracks. */ @@ -254,7 +258,7 @@ var CircsterView = Backbone.View.extend({ })) .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")") .append('svg:g').attr('class', 'tracks'); - + // -- Render circular tracks. -- // Create a view for each track in the visualization and render. @@ -266,12 +270,12 @@ var CircsterView = Backbone.View.extend({ genome: self.genome, total_gap: total_gap }); - + view.render(); - + return view; }); - + // -- Render chords tracks. -- this.chords_views = chords_tracks.map(function(track) { @@ -289,10 +293,10 @@ var CircsterView = Backbone.View.extend({ }); // -- Render label track. -- - + // Track bounds are: // (a) outer radius of last circular track; - // (b) + // (b) var outermost_radius = this.circular_views[this.circular_views.length-1].radius_bounds[1], track_bounds = [ outermost_radius, @@ -305,7 +309,7 @@ var CircsterView = Backbone.View.extend({ genome: self.genome, total_gap: total_gap }); - + this.label_track_view.render(); }, @@ -356,7 +360,7 @@ var CircsterView = Backbone.View.extend({ // Update label track. /* - FIXME: should never have to update label track because vis always expands to fit area + FIXME: should never have to update label track because vis always expands to fit area within label track. var track_bounds = new_track_bounds[ new_track_bounds.length-1 ]; track_bounds[1] = track_bounds[0]; @@ -373,7 +377,7 @@ var CircsterView = Backbone.View.extend({ var track_view = this.circular_views[options.index]; this.circular_views.splice(options.index, 1); track_view.$el.remove(); - + // Recompute and update track bounds. var new_track_bounds = this.get_tracks_bounds(); _.each(this.circular_views, function(track_view, i) { @@ -392,7 +396,7 @@ var CircsterView = Backbone.View.extend({ _.each(this.chords_views, function(track_view) { track_view.update_radius_bounds(new_track_bounds[0]); }); - + } }); @@ -455,7 +459,7 @@ var CircsterTrackView = Backbone.View.extend({ // Append titles to paths. chroms_paths.append("title").text(function(d) { return d.data.chrom; }); - + // -- Render track data and, when track data is rendered, apply preferences and update chrom_elts fill. -- var self = this, @@ -490,7 +494,7 @@ var CircsterTrackView = Backbone.View.extend({ var new_d = d3.svg.arc() .innerRadius(this.radius_bounds[0]) .outerRadius(this.radius_bounds[1]); - + this.parent_elt.selectAll('g>path.chrom-background').transition().duration(1000).attr('d', new_d); this._transition_chrom_data(); @@ -511,7 +515,7 @@ var CircsterTrackView = Backbone.View.extend({ } // -- Scale increased, so render visible data with more detail. -- - + var self = this, utils = new SVGUtils(); @@ -539,7 +543,7 @@ var CircsterTrackView = Backbone.View.extend({ $.when(data_deferred).then(function(data) { // Remove current data path. path_elt.remove(); - + // Update data bounds with new data. self._update_data_bounds(); @@ -598,12 +602,12 @@ var CircsterTrackView = Backbone.View.extend({ _transition_labels: function() {}, /** - * Update data bounds. If there are new_bounds, use them; otherwise use + * Update data bounds. If there are new_bounds, use them; otherwise use * default data bounds. */ _update_data_bounds: function(new_bounds) { var old_bounds = this.data_bounds; - this.data_bounds = new_bounds || + this.data_bounds = new_bounds || this.get_data_bounds(this.track.get('data_manager').get_genome_wide_data(this.genome)); this._transition_chrom_data(); }, @@ -624,7 +628,7 @@ var CircsterTrackView = Backbone.View.extend({ // Set min, max value in config so that they can be adjusted. Make this silent // because these attributes are watched for changes and the viz is updated - // accordingly (set up in initialize). Because we are setting up, we don't want + // accordingly (set up in initialize). Because we are setting up, we don't want // the watch to trigger events here. track.get('config').set_value('min_value', self.data_bounds[0], {silent: true}); track.get('config').set_value('max_value', self.data_bounds[1], {silent: true}); @@ -660,7 +664,7 @@ var CircsterTrackView = Backbone.View.extend({ _get_path_function: function(chrom_arc, chrom_data) {}, /** - * Returns arc layouts for genome's chromosomes/contigs. Arcs are arranged in a circle + * Returns arc layouts for genome's chromosomes/contigs. Arcs are arranged in a circle * separated by gaps. */ _chroms_layout: function() { @@ -700,14 +704,14 @@ var CircsterChromLabelTrackView = CircsterTrackView.extend({ * Render labels. */ _render_data: function(svg) { - // -- Add chromosome label where it will fit; an alternative labeling mechanism + // -- Add chromosome label where it will fit; an alternative labeling mechanism // would be nice for small chromosomes. -- var self = this, chrom_arcs = svg.selectAll('g'); chrom_arcs.selectAll('path') .attr('id', function(d) { return 'label-' + d.data.chrom; }); - + chrom_arcs.append("svg:text") .filter(function(d) { return d.endAngle - d.startAngle > self.min_arc_len; @@ -857,12 +861,12 @@ var CircsterQuantitativeTrackView = CircsterTrackView.extend({ return "rotate(90)"; }; - // FIXME: + // FIXME: // (1) using min_max class below is needed for _update_min_max, which could be improved. // (2) showing config on tick click should be replaced by proper track config icon. // Draw min, max on first chrom only. - var ticks = this.drawTicks(this.parent_elt, [ this.chroms_layout[0] ], + var ticks = this.drawTicks(this.parent_elt, [ this.chroms_layout[0] ], this._data_bounds_ticks_fn(), textTransform, true) .classed('min_max', true); @@ -872,7 +876,7 @@ var CircsterQuantitativeTrackView = CircsterTrackView.extend({ var view = new config.ConfigSettingCollectionView({ collection: self.track.get('config') }); - view.render_in_modal('Configure Track'); + view.render_in_modal('Configure Track'); }); }); @@ -951,7 +955,7 @@ _.extend(CircsterQuantitativeTrackView.prototype, UsesTicks); var CircsterBigWigTrackView = CircsterQuantitativeTrackView.extend({ get_data_bounds: function(data) { - // Set max across dataset by extracting all values, flattening them into a + // Set max across dataset by extracting all values, flattening them into a // single array, and getting third quartile. var values = _.flatten( _.map(data, function(d) { if (d) { @@ -965,8 +969,8 @@ var CircsterBigWigTrackView = CircsterQuantitativeTrackView.extend({ return 0; } }) ); - - // For max, use 98% quantile in attempt to avoid very large values. However, this max may be 0 + + // For max, use 98% quantile in attempt to avoid very large values. However, this max may be 0 // for sparsely populated data, so use max in that case. return [ _.min(values), this._quantile(values, 0.98) || _.max(values) ]; } @@ -1068,13 +1072,13 @@ var Circster = Backbone.View.extend( genome : genome, model : vis }); - + // Render vizualization viz_view.render(); - + // setup title $('#center .unified-panel-header-inner').append(galaxy_config.app.viz_config.title + " " + galaxy_config.app.viz_config.dbkey); - + // setup menu var menu = mod_icon_btn.create_icon_buttons_menu([ { @@ -1100,7 +1104,7 @@ var Circster = Backbone.View.extend( { // show saving dialog box Galaxy.modal.show({title: "Saving...", body: "progress" }); - + // send to server $.ajax({ url: galaxy_config.root + "visualization/save", @@ -1132,11 +1136,11 @@ var Circster = Backbone.View.extend( window.location = galaxy_config.root + "visualization/list"; } }], { tooltip_config: { placement: 'bottom' } }); - + // add menu menu.$el.attr("style", "float: right"); $("#center .unified-panel-header-inner").append(menu.$el); - + // manual tooltip config because default gravity is S and cannot be changed $(".menu-button").tooltip( { placement: 'bottom' } ); } diff --git a/static/maps/viz/circster.js.map b/static/maps/viz/circster.js.map index 88fefdce229..c3636d5c4a7 100644 --- a/static/maps/viz/circster.js.map +++ b/static/maps/viz/circster.js.map @@ -1 +1 @@ -{"version":3,"file":"circster.js","sources":["../../src/viz/circster.js"],"names":["require","mod_utils","cssLoadFile","define","_","d3","visualization","config","SVGUtils","Backbone","Model","extend","is_visible","svg_elt","eltBRect","getBoundingClientRect","svgBRect","$","right","left","bottom","top","UsesTicks","drawTicks","parent_elt","data","dataHandler","textTransform","horizontal","ticks","append","selectAll","enter","attr","d","angle","Math","PI","radius","tick_coords","text_coords","text_anchor","style","text","label","formatNum","num","sigDigits","undefined","rval","abs","toPrecision","roundedNum","round","toFixed","CircsterLabelTrack","CircsterView","View","className","initialize","options","this","genome","label_arc_height","scale","circular_views","chords_views","model","get","on","add_track","remove_track","vis_config","update_track_bounds","get_circular_tracks","filter","track","get_chord_tracks","get_tracks_bounds","circular_tracks","dataset_arc_height","get_value","track_gap","min_dimension","min","$el","width","height","radius_start","length","tracks_start_radii","range","map","render","self","chords_tracks","total_gap","tracks_bounds","svg","select","call","behavior","zoom","event","translate","zoom_drag_timeout","clearTimeout","setTimeout","index","view","CircsterBigWigTrackView","el","radius_bounds","CircsterChromInteractionsTrackView","outermost_radius","track_bounds","label_track_view","CircsterChromLabelTrackView","new_track","innermost_radius_bounds","new_view","push","new_track_bounds","each","track_view","i","update_radius_bounds","track_index","tracks","splice","remove","CircsterTrackView","tagName","bg_stroke","loading_bg_fill","bg_fill","chroms_layout","_chroms_layout","data_bounds","get_fill_color","color","track_parent_elt","genome_arcs","arc_gen","arc","innerRadius","outerRadius","chroms_elts","chroms_paths","chrom","data_manager","data_ready_deferred","data_is_ready","when","then","_render_data","render_labels","new_d","transition","duration","_transition_chrom_data","_transition_labels","update_scale","new_scale","old_scale","utils","data_deferred","path_elt","chrom_region","get_chrom_region","can_get_more_detailed_data","get_more_detailed_data","_update_data_bounds","chrom_arc","find","layout","_render_chrom_data","chrom_arcs","chrom_data_paths","num_paths","get_genome_wide_data","genome_wide_data","path_data","reject","chrom_data","path_fn","_get_path_function","p_data","path","new_bounds","get_data_bounds","rendered_deferred","Deferred","set_value","silent","layout_and_data","zip","chroms_data_layout","chrom_info","resolve","chroms_info","get_chroms_info","pie_layout","pie","value","len","sort","init_arcs","gap_per_chrom","new_endAngle","endAngle","startAngle","prototype","min_arc_len","chromArcTicks","k","v","visibleChroms","c","CircsterQuantitativeTrackView","track_config","_update_min_max","_quantile","numbers","quantile","ascending","parent","datum","linear","domain","clamp","line","radial","interpolate","area","_data_bounds_ticks_fn","classed","tick","click","ConfigSettingCollectionView","collection","render_in_modal","labeledChroms","new_data","flatten","values","p","parseInt","max","chord_data","cur_chrom","chrom_chord_data","source_angle","_get_region_angle","target_angle","source","target","concat","chord","position","chrom_angle_data","chrom_layout","Circster","Genome","galaxy_config","app","vis","GenomeVisualization","viz_config","add","key","type","hidden","viz_view","title","dbkey","menu","mod_icon_btn","create_icon_buttons_menu","icon_class","on_click","select_datasets","root","add_tracks","Galaxy","modal","show","body","ajax","url","dataType","id","vis_json","JSON","stringify","success","vis_info","hide","set","vis_id","error","buttons","Cancel","window","location","tooltip_config","placement","tooltip","GalaxyApp"],"mappings":"AACAA,SAEI,cACA,qBACA,mBACD,SAASC,GAGRA,EAAUC,YAAY,+BAG1BC,QAAQ,kBAAmB,UAAW,oBAAqB,gBAAiB,SAASC,EAAGC,EAAIC,EAAeC,GAK3G,GAAIC,GAAWC,SAASC,MAAMC,QAK1BC,WAAY,SAASC,GACjB,GAAIC,GAAWD,EAAQE,wBACnBC,EAAWC,EAAE,OAAO,GAAGF,uBAE3B,OACID,GAASI,MAAQ,GAEjBJ,EAASK,KAAOH,EAASE,OAEzBJ,EAASM,OAAS,GAElBN,EAASO,IAAML,EAASI,QACjB,GAEJ,KAOXE,GACAC,UAAW,SAASC,EAAYC,EAAMC,EAAaC,EAAeC,GAE9D,GAAIC,GAAQL,EAAWM,OAAO,KACbC,UAAU,KACNN,KAAKA,GACTO,QAAQF,OAAO,KACfC,UAAU,KACNN,KAAKC,GACTM,QAAQF,OAAO,KACXG,KAAK,QAAS,QACdA,KAAK,YAAa,SAASC,GACxB,MAAO,WAAuB,IAAVA,EAAEC,MAAcC,KAAKC,GAAK,IAAM,cAC7BH,EAAEI,OAAS,QAItDC,KACAC,KACAC,EAAc,SAASP,GACnB,MAAOA,GAAEC,MAAQC,KAAKC,GAAK,MAAQ,KAoB3C,OAlBIT,IACAW,GAAe,EAAG,EAAG,EAAG,IACxBC,GAAe,EAAG,EAAG,GAAI,SACzBC,EAAc,OAGdF,GAAe,EAAG,EAAG,EAAG,GACxBC,GAAe,EAAG,EAAG,QAAS,KAIlCX,EAAMC,OAAO,QACPG,KAAK,KAAMM,EAAY,IACvBN,KAAK,KAAMM,EAAY,IACvBN,KAAK,KAAMM,EAAY,IACvBN,KAAK,KAAMM,EAAY,IACvBG,MAAM,SAAU,QAEfb,EAAMC,OAAO,QACPG,KAAK,IAAKO,EAAY,IACtBP,KAAK,IAAKO,EAAY,IACtBP,KAAK,KAAMO,EAAY,IACvBP,KAAK,KAAMO,EAAY,IACvBP,KAAK,cAAeQ,GACpBR,KAAK,YAAaN,GAClBgB,KAAK,SAAST,GAAK,MAAOA,GAAEU,SAM7CC,UAAW,SAASC,EAAKC,GAMrB,GAJkBC,SAAdD,IACAA,EAAY,GAGJ,OAARD,EACA,MAAO,KAGX,IAAIG,GAAO,IACX,IAAIb,KAAKc,IAAIJ,GAAO,EAChBG,EAAOH,EAAIK,YAAYJ,OAEtB,CAED,GAAIK,GAAahB,KAAKiB,MAAMP,EAAIK,YAAYJ,GAG5CD,GAAMV,KAAKc,IAAIJ,GACL,IAANA,EACAG,EAAOG,EAEI,IAANN,EAELG,EAAOb,KAAKiB,OAAOD,EAAW,KAAMD,YAAY,IAAIG,QAAQ,GAAK,IAEtD,IAANR,IAELG,EAAOb,KAAKiB,OAAOD,EAAW,KAASD,YAAY,IAAIG,QAAQ,GAAK,KAI5E,MAAOL,KAOXM,EAAqB9C,SAASC,MAAMC,WAKpC6C,EAAe/C,SAASgD,KAAK9C,QAC7B+C,UAAW,WAEXC,WAAY,SAASC,GACjBC,KAAKC,OAASF,EAAQE,OACtBD,KAAKE,iBAAmB,GACxBF,KAAKG,MAAQ,EACbH,KAAKI,eAAiB,KACtBJ,KAAKK,aAAe,KAGpBL,KAAKM,MAAMC,IAAI,aAAaC,GAAG,MAAOR,KAAKS,UAAWT,MACtDA,KAAKM,MAAMC,IAAI,aAAaC,GAAG,SAAUR,KAAKU,aAAcV,KAG5D,IAAIW,GAAaX,KAAKM,MAAMC,IAAI,SAChCI,GAAWJ,IAAI,sBAAsBC,GAAG,eAAgBR,KAAKY,oBAAqBZ,MAClFW,EAAWJ,IAAI,aAAaC,GAAG,eAAgBR,KAAKY,oBAAqBZ,OAQ7Ea,oBAAqB,WACjB,MAAOb,MAAKM,MAAMC,IAAI,aAAaO,OAAO,SAASC,GAC/C,MAAmC,yBAA5BA,EAAMR,IAAI,iBAOzBS,iBAAkB,WACd,MAAOhB,MAAKM,MAAMC,IAAI,aAAaO,OAAO,SAASC,GAC/C,MAAmC,yBAA5BA,EAAMR,IAAI,iBAOzBU,kBAAmB,WACf,GAAIC,GAAkBlB,KAAKa,sBACvBM,EAAqBnB,KAAKM,MAAMC,IAAI,UAAUa,UAAU,sBACxDC,EAAYrB,KAAKM,MAAMC,IAAI,UAAUa,UAAU,aAE/CE,EAAgB/C,KAAKgD,IAAIvB,KAAKwB,IAAIC,QAASzB,KAAKwB,IAAIE,UAAY,GAGhEC,EAAeL,EAAgB,EACfJ,EAAgBU,QAAUT,EAAqBE,GAE/CA,EACArB,KAAKE,iBAGrB2B,EAAqBrF,EAAGsF,MAAMH,EAAcL,EAAgB,EAAGH,EAAqBE,EAIxF,OAAO9E,GAAEwF,IAAIF,EAAoB,SAASpD,GACtC,OAAQA,EAAQA,EAAS0C,MAOjCa,OAAQ,WACJ,GAAIC,GAAOjC,KACPyB,EAAQQ,EAAKT,IAAIC,QACjBC,EAASO,EAAKT,IAAIE,SAClBR,EAAkBlB,KAAKa,sBACvBqB,EAAgBlC,KAAKgB,mBACrBmB,EAAYF,EAAK3B,MAAMC,IAAI,UAAUa,UAAU,aAC/CgB,EAAgBpC,KAAKiB,oBAGrBoB,EAAM7F,EAAG8F,OAAOL,EAAKT,IAAI,IACtBvD,OAAO,OACLG,KAAK,QAASqD,GACdrD,KAAK,SAAUsD,GACftD,KAAK,iBAAkB,OAEzBH,OAAO,SACLsE,KAAK/F,EAAGgG,SAASC,OAAOjC,GAAG,OAAQ,WAEhC,GAAIL,GAAQ3D,EAAGkG,MAAMvC,KACrBkC,GAAIjE,KAAK,YACP,aAAe5B,EAAGkG,MAAMC,UAAY,WACxBxC,EAAQ,KAGlB8B,EAAK9B,QAAUA,IAEX8B,EAAKW,mBACLC,aAAaZ,EAAKW,mBAEtBX,EAAKW,kBAAoBE,WAAW,aAUjC,SAGV1E,KAAK,YAAa,aAAeqD,EAAQ,EAAI,IAAMC,EAAS,EAAI,KAClEzD,OAAO,SAASG,KAAK,QAAS,SAKrC4B,MAAKI,eAAiBc,EAAgBa,IAAI,SAAShB,EAAOgC,GACtD,GAAIC,GAAO,GAAIC,IACPC,GAAIb,EAAIpE,OAAO,KAAK,GACpB8C,MAAOA,EACPoC,cAAef,EAAcW,GAC7B9C,OAAQgC,EAAKhC,OACbkC,UAAWA,GAKnB,OAFAa,GAAKhB,SAEEgB,IAKXhD,KAAKK,aAAe6B,EAAcH,IAAI,SAAShB,GAC3C,GAAIiC,GAAO,GAAII,IACXF,GAAIb,EAAIpE,OAAO,KAAK,GACpB8C,MAAOA,EACPoC,cAAef,EAAc,GAC7BnC,OAAQgC,EAAKhC,OACbkC,UAAWA,GAKf,OAFAa,GAAKhB,SAEEgB,GAQX,IAAIK,GAAmBrD,KAAKI,eAAeJ,KAAKI,eAAewB,OAAO,GAAGuB,cAAc,GACnFG,GACID,EACAA,EAAmBrD,KAAKE,iBAEhCF,MAAKuD,iBAAmB,GAAIC,IACxBN,GAAIb,EAAIpE,OAAO,KAAK,GACpB8C,MAAO,GAAIrB,GACXyD,cAAeG,EACfrD,OAAQgC,EAAKhC,OACbkC,UAAWA,IAGfnC,KAAKuD,iBAAiBvB,UAM1BvB,UAAW,SAASgD,GAChB,GAAItB,GAAYnC,KAAKM,MAAMC,IAAI,UAAUa,UAAU,YAEnD,IAAoC,yBAAhCqC,EAAUlD,IAAI,cAA0C,CAExD,GAAImD,GAA0B1D,KAAKI,eAAe,GAAG+C,cACjDQ,EAAW,GAAIP,IACXF,GAAI1G,EAAG8F,OAAO,YAAYrE,OAAO,KAAK,GACtC8C,MAAO0C,EACPN,cAAeO,EACfzD,OAAQD,KAAKC,OACbkC,UAAWA,GAEfwB,GAAS3B,SACThC,KAAKK,aAAauD,KAAKD,OAE1B,CAID,GAAIE,GAAmB7D,KAAKiB,mBAC5B1E,GAAEuH,KAAK9D,KAAKI,eAAgB,SAAS2D,EAAYC,GAC7CD,EAAWE,qBAAqBJ,EAAiBG,MAIrDzH,EAAEuH,KAAK9D,KAAKK,aAAc,SAAS0D,GAC/BA,EAAWE,qBAAqBJ,EAAiB,KAIrD,IAAIK,GAAclE,KAAKI,eAAewB,OAClCmC,EAAa,GAAId,IACbC,GAAI1G,EAAG8F,OAAO,YAAYrE,OAAO,KAAK,GACtC8C,MAAO0C,EACPN,cAAeU,EAAiBK,GAChCjE,OAAQD,KAAKC,OACbkC,UAAWA,GAEnB4B,GAAW/B,SACXhC,KAAKI,eAAewD,KAAKG,KAgBjCrD,aAAc,SAASK,EAAOoD,EAAQpE,GAElC,GAAIgE,GAAa/D,KAAKI,eAAeL,EAAQgD,MAC7C/C,MAAKI,eAAegE,OAAOrE,EAAQgD,MAAO,GAC1CgB,EAAWvC,IAAI6C,QAGf,IAAIR,GAAmB7D,KAAKiB,mBAC5B1E,GAAEuH,KAAK9D,KAAKI,eAAgB,SAAS2D,EAAYC,GAC7CD,EAAWE,qBAAqBJ,EAAiBG,OAIzDpD,oBAAqB,WAEjB,GAAIiD,GAAmB7D,KAAKiB,mBAC5B1E,GAAEuH,KAAK9D,KAAKI,eAAgB,SAAS2D,EAAYC,GAC7CD,EAAWE,qBAAqBJ,EAAiBG,MAIrDzH,EAAEuH,KAAK9D,KAAKK,aAAc,SAAS0D,GAC/BA,EAAWE,qBAAqBJ,EAAiB,SASzDS,EAAoB1H,SAASgD,KAAK9C,QAClCyH,QAAS,IAITzE,WAAY,SAASC,GACjBC,KAAKwE,UAAY,OAEjBxE,KAAKyE,gBAAkB,OAEvBzE,KAAK0E,QAAU,OACf1E,KAAKmC,UAAYpC,EAAQoC,UACzBnC,KAAKe,MAAQhB,EAAQgB,MACrBf,KAAKmD,cAAgBpD,EAAQoD,cAC7BnD,KAAKC,OAASF,EAAQE,OACtBD,KAAK2E,cAAgB3E,KAAK4E,iBAC1B5E,KAAK6E,eACL7E,KAAKG,MAAQ,EACbH,KAAKrC,WAAanB,EAAG8F,OAAOtC,KAAKwB,IAAI,KAMzCsD,eAAgB,WACZ,GAAIC,GAAQ/E,KAAKe,MAAMR,IAAI,UAAUa,UAAU,cAE/C,OADK2D,KAASA,EAAQ/E,KAAKe,MAAMR,IAAI,UAAUa,UAAU,UAClD2D,GAMX/C,OAAQ,WAEJ,GAAIgD,GAAmBhF,KAAKrC,WAGxBsH,EAAcjF,KAAK2E,cACnBO,EAAU1I,EAAG6F,IAAI8C,MACJC,YAAYpF,KAAKmD,cAAc,IAC/BkC,YAAYrF,KAAKmD,cAAc,IAG5CmC,EAAcN,EAAiB9G,UAAU,KACpCN,KAAKqH,GAAa9G,QAAQF,OAAO,SAGtCsH,EAAeD,EAAYrH,OAAO,QAC7BG,KAAK,IAAK8G,GACV9G,KAAK,QAAS,oBACdS,MAAM,SAAUmB,KAAKwE,WACrB3F,MAAM,OAASmB,KAAKyE,gBAGzBc,GAAatH,OAAO,SAASa,KAAK,SAAST,GAAK,MAAOA,GAAET,KAAK4H,OAIlE,IAAIvD,GAAOjC,KACPyF,EAAexD,EAAKlB,MAAMR,IAAI,gBAE9BmF,EAAuBD,EAAeA,EAAaE,iBAAkB,CAGzEvI,GAAEwI,KAAKF,GAAqBG,KAAK,WAC7BzI,EAAEwI,KAAK3D,EAAK6D,aAAad,IAAmBa,KAAK,WAC7CN,EAAa1G,MAAM,OAAQoD,EAAKyC,SAGhCzC,EAAK8D,qBAQjBA,cAAe,aAKf9B,qBAAsB,SAASd,GAE3BnD,KAAKmD,cAAgBA,CAGrB,IAAI6C,GAAQxJ,EAAG6F,IAAI8C,MACFC,YAAYpF,KAAKmD,cAAc,IAC/BkC,YAAYrF,KAAKmD,cAAc,GAEhDnD,MAAKrC,WAAWO,UAAU,2BAA2B+H,aAAaC,SAAS,KAAM9H,KAAK,IAAK4H,GAE3FhG,KAAKmG,yBAELnG,KAAKoG,sBAMTC,aAAc,SAASC,GAGnB,GAAIC,GAAYvG,KAAKG,KAErB,IADAH,KAAKG,MAAQmG,IACIC,GAAbD,GAAJ,CAMA,GAAIrE,GAAOjC,KACPwG,EAAQ,GAAI7J,EAyChB,OAtCAqD,MAAKrC,WAAWO,UAAU,mBAAmB4C,OAAO,WAChD,MAAO0F,GAAMzJ,WAAWiD,QACzB8D,KAAK,WAGJ,GAII2C,GAJAC,EAAWlK,EAAG8F,OAAOtC,MACrBwF,EAAQkB,EAAStI,KAAK,SACtBuI,EAAe1E,EAAKhC,OAAO2G,iBAAiBpB,GAC5CC,EAAexD,EAAKlB,MAAMR,IAAI,eAI7BkF,GAAaoB,2BAA2BF,KAK7CF,EAAgBxE,EAAKlB,MAAMR,IAAI,gBAAgBuG,uBAAuBH,EAAc,WAAY,EAAGL,GAGnGlJ,EAAEwI,KAAKa,GAAeZ,KAAK,SAASjI,GAEhC8I,EAASrC,SAGTpC,EAAK8E,qBAGL,IAAIC,GAAYzK,EAAE0K,KAAKhF,EAAK0C,cAAe,SAASuC,GAC5C,MAAOA,GAAOtJ,KAAK4H,QAAUA,IAIjCT,EAAQ9C,EAAK6C,gBACjB7C,GAAKkF,mBAAmBlF,EAAKtE,WAAYqJ,EAAWpJ,GAAMiB,MAAM,SAAUkG,GAAOlG,MAAM,OAAQkG,QAIhG9C,IAQXkE,uBAAwB,WACpB,GAAIpF,GAAQf,KAAKe,MACbqG,EAAapH,KAAK2E,cAClB0C,EAAmBrH,KAAKrC,WAAWO,UAAU,qBAC7CoJ,EAAYD,EAAiB,GAAGzF,MAEpC,IAAI0F,EAAY,EAAG,CACf,GAAIrF,GAAOjC,IACX5C,GAAEwI,KAAK7E,EAAMR,IAAI,gBAAgBgH,qBAAqBvH,KAAKC,SAAS4F,KAAK,SAAS2B,GAE9E,GAAIC,GAAYlL,EAAEmL,OAAQnL,EAAEwF,IAAIyF,EAAkB,SAASG,EAAY3D,GACnE,GAAI5E,GAAO,KACPwI,EAAU3F,EAAK4F,mBAAmBT,EAAWpD,GAAI2D,EAIrD,OAHIC,KACAxI,EAAOwI,EAAQD,EAAW/J,OAEvBwB,IACP,SAAS0I,GAAU,MAAkB,QAAXA,IAG1B/C,EAAQhE,EAAMR,IAAI,UAAUa,UAAU,QAC1CiG,GAAiBvD,KAAK,SAASiE,EAAMhF,GACjCvG,EAAG8F,OAAOtC,MAAMiG,aAAaC,SAAS,KACtBrH,MAAM,SAAUkG,GAAOlG,MAAM,OAAQkG,GACrC3G,KAAK,IAAKqJ,EAAU1E,UASpDqD,mBAAoB,aAMpBW,oBAAqB,SAASiB,GACThI,KAAK6E,WACtB7E,MAAK6E,YAAcmD,GACAhI,KAAKiI,gBAAgBjI,KAAKe,MAAMR,IAAI,gBAAgBgH,qBAAqBvH,KAAKC,SACjGD,KAAKmG,0BAMTL,aAAc,SAASzD,GACnB,GAAIJ,GAAOjC,KACPoH,EAAapH,KAAK2E,cAClB5D,EAAQf,KAAKe,MACbmH,EAAoB9K,EAAE+K,UA+B1B,OA5BA/K,GAAEwI,KAAK7E,EAAMR,IAAI,gBAAgBgH,qBAAqBvH,KAAKC,SAAS4F,KAAK,SAAS2B,GAE9EvF,EAAK4C,YAAc5C,EAAKgG,gBAAgBT,GAMxCzG,EAAMR,IAAI,UAAU6H,UAAU,YAAanG,EAAK4C,YAAY,IAAKwD,QAAQ,IACzEtH,EAAMR,IAAI,UAAU6H,UAAU,YAAanG,EAAK4C,YAAY,IAAKwD,QAAQ,IAGzEC,gBAAkB/L,EAAEgM,IAAInB,EAAYI,GAGpCgB,mBAAqBjM,EAAEwF,IAAIuG,gBAAiB,SAASG,GACjD,GAAIzB,GAAYyB,EAAW,GACvB7K,EAAO6K,EAAW,EACtB,OAAOxG,GAAKkF,mBAAmB9E,EAAK2E,EAAWpJ,IAInD,IAAImH,GAAQ9C,EAAK6C,gBACjB7C,GAAKtE,WAAWO,UAAU,mBAAmBW,MAAM,SAAUkG,GAAOlG,MAAM,OAAQkG,GAElFmD,EAAkBQ,QAAQrG,KAGvB6F,GAMXf,mBAAoB,aAKpBU,mBAAoB,aAMpBjD,eAAgB,WAEZ,GAAI+D,GAAc3I,KAAKC,OAAO2I,kBAC1BC,EAAarM,EAAG0K,OAAO4B,MAAMC,MAAM,SAAS1K,GAAK,MAAOA,GAAE2K,MAAQC,KAAK,MACvEC,EAAYL,EAAWF,GACvBQ,EAAgB,EAAI5K,KAAKC,GAAKwB,KAAKmC,UAAYwG,EAAY/G,OAC3DwF,EAAa7K,EAAEwF,IAAImH,EAAW,SAAS/D,GAEnC,GAAIiE,GAAejE,EAAIkE,SAAWF,CAElC,OADAhE,GAAIkE,SAAYD,EAAejE,EAAImE,WAAaF,EAAejE,EAAImE,WAC5DnE,GAEf,OAAOiC,MAOX5D,EAA8Bc,EAAkBxH,QAEhDgD,WAAY,SAASC,GACjBuE,EAAkBiF,UAAUzJ,WAAWyC,KAAKvC,KAAMD,GAElDC,KAAKoF,YAAcpF,KAAKmD,cAAc,GACtCnD,KAAKmD,cAAc,GAAKnD,KAAKmD,cAAc,GAC3CnD,KAAKwE,UAAY,OACjBxE,KAAK0E,QAAU,OAGf1E,KAAKwJ,YAAc,KAMvB1D,aAAc,SAASzD,GAGnB,GAAIJ,GAAOjC,KACPoH,EAAa/E,EAAInE,UAAU,IAE/BkJ,GAAWlJ,UAAU,QAChBE,KAAK,KAAM,SAASC,GAAK,MAAO,SAAWA,EAAET,KAAK4H,QAEvD4B,EAAWnJ,OAAO,YACb6C,OAAO,SAASzC,GACb,MAAOA,GAAEgL,SAAWhL,EAAEiL,WAAarH,EAAKuH,cAE3CpL,KAAK,cAAe,UACtBH,OAAO,gBACLG,KAAK,QAAS,eACdA,KAAK,aAAc,SAASC,GAAK,MAAO,UAAYA,EAAET,KAAK4H,QAC3DpH,KAAK,cAAe,OACpBU,KAAK,SAAST,GACX,MAAOA,GAAET,KAAK4H,OAMtB,IAAIiE,GAAgB,SAASpL,GACzB,GAAIqL,IAAKrL,EAAEgL,SAAWhL,EAAEiL,YAAcjL,EAAE0K,MACpC/K,EAAQxB,EAAGsF,MAAM,EAAGzD,EAAE0K,MAAO,MAAUhH,IAAI,SAAS4H,EAAG3F,GACnD,OACIvF,OAAQwD,EAAKmD,YACb9G,MAAOqL,EAAID,EAAIrL,EAAEiL,WACjBvK,MAAa,IAANiF,EAAU,EAAKA,EAAI,EAAI,KAAO/B,EAAKjD,UAAU2K,KAWhE,OANI3L,GAAM4D,OAAS,IACf5D,EAAMA,EAAM4D,OAAO,GAAG7C,MAAQkD,EAAKjD,UAC/BT,KAAKiB,OAASxB,EAAMA,EAAM4D,OAAO,GAAGtD,MAAQD,EAAEiL,YAAeI,KAI9D1L,GAIPF,EAAgB,SAASO,GACrB,MAAOA,GAAEC,MAAQC,KAAKC,GAAK,4BAA8B,MAI7DoL,EAAgBrN,EAAEuE,OAAOd,KAAK2E,cAAe,SAASkF,GAAK,MAAOA,GAAER,SAAWQ,EAAEP,WAAarH,EAAKuH,aAEvGxJ,MAAKtC,UAAUsC,KAAKrC,WAAYiM,EAAeH,EAAe3L,KAGtEvB,GAAEO,OAAO0G,EAA4B+F,UAAW9L,EAKhD,IAAIqM,GAAgCxF,EAAkBxH,QAElDgD,WAAY,SAASC,GACjBuE,EAAkBiF,UAAUzJ,WAAWyC,KAAKvC,KAAMD,EAGlD,IAAIgK,GAAe/J,KAAKe,MAAMR,IAAI,SAClCwJ,GAAaxJ,IAAI,aAAaC,GAAG,eAAgBR,KAAKgK,gBAAiBhK,MACvE+J,EAAaxJ,IAAI,aAAaC,GAAG,eAAgBR,KAAKgK,gBAAiBhK,MACvE+J,EAAaxJ,IAAI,SAASC,GAAG,eAAgBR,KAAKmG,uBAAwBnG,OAM9EgK,gBAAiB,WACb,GAAID,GAAe/J,KAAKe,MAAMR,IAAI,UAC9ByH,GAAc+B,EAAa3I,UAAU,aAAc2I,EAAa3I,UAAU,aAC9EpB,MAAK+G,oBAAoBiB,GAIzBhI,KAAKrC,WAAWO,UAAU,YAAYY,KAAK,SAAST,EAAG2F,GACnD,MAAOgE,GAAWhE,MAO1BiG,UAAW,SAASC,EAASC,GAEzB,MADAD,GAAQjB,KAAKzM,EAAG4N,WACT5N,EAAG2N,SAASD,EAASC,IAOhChD,mBAAoB,SAAS9E,EAAK2E,EAAWW,GACzC,GAAIF,GAAYzH,KAAK6H,mBAAmBb,EAAWW,EAEnD,KAAKF,EAAa,MAAO,KAGzB,IAAI4C,GAAShI,EAAIiI,MAAM3C,EAAW/J,MAC9BmK,EAAOsC,EAAOpM,OAAO,QACPG,KAAK,QAAS,cACdA,KAAK,QAAS4I,EAAUpJ,KAAK4H,OAC7BpH,KAAK,IAAKqJ,EAE5B,OAAOM,IAMXF,mBAAoB,SAASb,EAAWW,GAEpC,GAA0B,gBAAfA,KAA4BA,EAAW/J,MAAmC,IAA3B+J,EAAW/J,KAAKgE,OACtE,MAAO,KAIX,IAAInD,GAASjC,EAAG2D,MAAMoK,SACNC,OAAOxK,KAAK6E,aACZ/C,MAAM9B,KAAKmD,eACXsH,OAAM,GAGlBnM,EAAQ9B,EAAG2D,MAAMoK,SAChBC,QAAQ,EAAG7C,EAAW/J,KAAKgE,SAC3BE,OAAOkF,EAAUsC,WAAYtC,EAAUqC,WAGxCqB,EAAOlO,EAAG6F,IAAIqI,KAAKC,SAClBC,YAAY,UACZnM,OAAO,SAASJ,GAAK,MAAOI,GAAOJ,EAAE,MACrCC,MAAM,SAASD,EAAG2F,GAAK,MAAO1F,GAAM0F,IAEzC,OAAOxH,GAAG6F,IAAIwI,KAAKF,SACdC,YAAYF,EAAKE,eACjBxF,YAAY3G,EAAO,IACnB4G,YAAYqF,EAAKjM,UACjBH,MAAMoM,EAAKpM,UAMpByH,cAAe,WACX,GAAI9D,GAAOjC,KAEPlC,EAAgB,WACZ,MAAO,cAQXE,EAAQgC,KAAKtC,UAAUsC,KAAKrC,YAAcqC,KAAK2E,cAAc,IACtC3E,KAAK8K,wBAAyBhN,GAAe,GACvDiN,QAAQ,WAAW,EAGpCxO,GAAEuH,KAAK9F,EAAO,SAASgN,GACnB5N,EAAE4N,GAAMC,MAAM,WACV,GAAIjI,GAAO,GAAItG,GAAOwO,6BAClBC,WAAYlJ,EAAKlB,MAAMR,IAAI,WAE/ByC,GAAKoI,gBAAgB,wBAkBjChF,mBAAoB,WAKhB,GAAgC,IAA5BpG,KAAK6E,YAAYjD,OAArB,CAGA,GAAIK,GAAOjC,KACP4J,EAAgBrN,EAAEuE,OAAOd,KAAK2E,cAAe,SAASkF,GAAK,MAAOA,GAAER,SAAWQ,EAAEP,WAAa,MAC9F+B,EAAgB9O,EAAEuE,OAAO8I,EAAe,SAASC,EAAG7F,GAAK,MAAOA,GAAI,IAAM,IAC1EsH,EAAW/O,EAAEgP,QAAShP,EAAEwF,IAAIsJ,EAAe,SAASxB,GAChD,MAAO5H,GAAK6I,wBAAwBjB,KAE5C7J,MAAKrC,WAAWO,UAAU,UAAUN,KAAK0N,GAAUrF,aAAa7H,KAAK,YAAa,SAASC,GACvF,MAAO,WAAuB,IAAVA,EAAEC,MAAcC,KAAKC,GAAK,IAAM,cAC7BH,EAAEI,OAAS,UAO1CqM,sBAAuB,WAEnB,GAAI7I,GAAOjC,IAIX,OAHI4J,eAAgB,EAGb,SAASvL,GAEZ,QAEQI,OAAQwD,EAAKkB,cAAc,GAC3B7E,MAAOD,EAAEiL,WACTvK,MAAOkD,EAAKjD,UAAUiD,EAAK4C,YAAY,MAGvCpG,OAAQwD,EAAKkB,cAAc,GAC3B7E,MAAOD,EAAEiL,WACTvK,MAAOkD,EAAKjD,UAAUiD,EAAK4C,YAAY,QAUvDoD,gBAAiB,cAGrB1L,GAAEO,OAAOgN,EAA8BP,UAAW9L,EAKlD,IAAIwF,GAA0B6G,EAA8BhN,QAExDmL,gBAAiB,SAASrK,GAGtB,GAAI4N,GAASjP,EAAEgP,QAAShP,EAAEwF,IAAInE,EAAM,SAASS,GACzC,MAAIA,GAEO9B,EAAEwF,IAAI1D,EAAET,KAAM,SAAS6N,GAE1B,MAAOC,UAASD,EAAE,GAAI,KAAO,IAI1B,IAMf,QAASlP,EAAEgF,IAAIiK,GAASxL,KAAKiK,UAAUuB,EAAQ,MAASjP,EAAEoP,IAAIH,OAOlEpI,EAAqCkB,EAAkBxH,QAEvDkF,OAAQ,WACJ,GAAIC,GAAOjC,IAGX5C,GAAEwI,KAAK3D,EAAKlB,MAAMR,IAAI,gBAAgBoF,iBAAiBE,KAAK,WAExDzI,EAAEwI,KAAK3D,EAAKlB,MAAMR,IAAI,gBAAgBgH,qBAAqBtF,EAAKhC,SAAS4F,KAAK,SAAS2B,GACnF,GAAIoE,MACAjD,EAAc1G,EAAKhC,OAAO2I,iBAE9BrM,GAAEuH,KAAK0D,EAAkB,SAASG,EAAY5E,GAE1C,GAAI8I,GAAYlD,EAAY5F,GAAOyC,MAC/BsG,EAAmBvP,EAAEwF,IAAI4F,EAAW/J,KAAM,SAAS0M,GAEnD,GAAIyB,GAAe9J,EAAK+J,kBAAkBH,EAAWvB,EAAM,IACvD2B,EAAehK,EAAK+J,kBAAkB1B,EAAM,GAAIA,EAAM,GAC1D,QACI4B,QACI5C,WAAYyC,EACZ1C,SAAU0C,EAAe,KAE7BI,QACI7C,WAAY2C,EACZ5C,SAAU4C,EAAe,OAKrCL,GAAaA,EAAWQ,OAAON,KAGnC7J,EAAKtE,WAAWM,OAAO,KACdG,KAAK,QAAS,SAClBF,UAAU,QACNN,KAAKgO,GACTzN,QAAQF,OAAO,QACXY,MAAM,OAAQoD,EAAK6C,kBACnB1G,KAAK,IAAK5B,EAAG6F,IAAIgK,QAAQ5N,OAAOwD,EAAKkB,cAAc,KACnDtE,MAAM,UAAW,QAKtCoF,qBAAsB,SAASd,GAC3BnD,KAAKmD,cAAgBA,EACrBnD,KAAKrC,WAAWO,UAAU,QAAQ+H,aAAa7H,KAAK,IAAK5B,EAAG6F,IAAIgK,QAAQ5N,OAAOuB,KAAKmD,cAAc,MAMtG6I,kBAAmB,SAASxG,EAAO8G,GAE/B,GAAIC,GAAmBhQ,EAAE0K,KAAKjH,KAAK2E,cAAe,SAAS6H,GACvD,MAAOA,GAAa5O,KAAK4H,QAAUA,GAIvC,OAAQ+G,GAAiBlD,UAEZkD,EAAiBlD,SAAWkD,EAAiBjD,aAC7CiD,EAAiB3O,KAAKoL,IAAMsD,GAAYC,EAAiB3O,KAAKoL,OAO/EyD,EAAW7P,SAASgD,KAAK9C,QAEzBgD,WAAY,WAGR,GAAIG,GAAS,GAAIxD,GAAciQ,OAAOC,cAAcC,IAAI3M,QACpD4M,EAAM,GAAIpQ,GAAcqQ,oBAAoBH,cAAcC,IAAIG,WAGlEF,GAAItM,IAAI,UAAUyM,MACZC,IAAK,qBAAsBlO,MAAO,qBAAsBmO,KAAM,MAAOnE,MAAO,GAAI/F,KAAM,aACtFiK,IAAK,YAAalO,MAAO,qBAAsBmO,KAAM,MAAOnE,MAAO,EAAG/F,KAAM,aAC5EiK,IAAK,YAAalO,MAAO,YAAamO,KAAM,QAASnE,MAAO,GAAK/F,KAAM,WAAYmK,QAAQ,IAGjG,IAAIC,GAAW,GAAIzN,IAGXuD,GAAsB9F,EAAE,+BACxB6C,OAAsBA,EACtBK,MAAsBuM,GAI9BO,GAASpL,SAGT5E,EAAE,uCAAuCa,OAAO0O,cAAcC,IAAIG,WAAWM,MAAQ,IAAMV,cAAcC,IAAIG,WAAWO,MAGxH,IAAIC,GAAOC,aAAaC,2BAEpBC,WAAY,cAAeL,MAAO,aAAcM,SAAU,WAEtDlR,EAAcmR,gBAAgBjB,cAAckB,KAAO,8CAA+ClB,cAAckB,KAAO,eAAgBhB,EAAItM,IAAI,SAAU,SAAS4D,GAE9J0I,EAAIiB,WAAW3J,QAKvBuJ,WAAY,OAAQL,MAAO,WAAYM,SAAU,WAE7C,GAAI3K,GAAO,GAAItG,GAAOwO,6BAClBC,WAAY0B,EAAItM,IAAI,WAExByC,GAAKoI,gBAAgB,8BAIzBsC,WAAY,cAAeL,MAAO,OAAQM,SAAU,WAGhDI,OAAOC,MAAMC,MAAMZ,MAAO,YAAaa,KAAM,aAG7C9Q,EAAE+Q,MACEC,IAAKzB,cAAckB,KAAO,qBAC1BX,KAAM,OACNmB,SAAU,OACVzQ,MACI0Q,GAAczB,EAAItM,IAAI,UACtB8M,MAAcR,EAAItM,IAAI,SACtB+M,MAAcT,EAAItM,IAAI,SACtB2M,KAAc,YACdqB,SAAcC,KAAKC,UAAU5B,MAElC6B,QAAQ,SAASC,GAChBZ,OAAOC,MAAMY,OACb/B,EAAIgC,IAAI,SAAUF,EAASG,UAC5BC,MAAM,WAELhB,OAAOC,MAAMC,MACTZ,MAAU,iBACVa,KAAU,wDACVc,SAAYC,OAAU,WAAalB,OAAOC,MAAMY,gBAM5DlB,WAAY,eAAgBL,MAAO,QAASM,SAAU,WAElDuB,OAAOC,SAAWxC,cAAckB,KAAO,yBAEzCuB,gBAAkBC,UAAW,WAGnC9B,GAAK/L,IAAIpD,KAAK,QAAS,gBACvBhB,EAAE,uCAAuCa,OAAOsP,EAAK/L,KAGrDpE,EAAE,gBAAgBkS,SAAWD,UAAW,aAKhD,QACIE,UAAW9C"} \ No newline at end of file +{"version":3,"file":"circster.js","sources":["../../src/viz/circster.js"],"names":["require","mod_utils","cssLoadFile","define","_","d3","visualization","config","mod_icon_btn","SVGUtils","Backbone","Model","extend","is_visible","svg_elt","eltBRect","getBoundingClientRect","svgBRect","$","right","left","bottom","top","UsesTicks","drawTicks","parent_elt","data","dataHandler","textTransform","horizontal","ticks","append","selectAll","enter","attr","d","angle","Math","PI","radius","tick_coords","text_coords","text_anchor","style","text","label","formatNum","num","sigDigits","undefined","rval","abs","toPrecision","roundedNum","round","toFixed","CircsterLabelTrack","CircsterView","View","className","initialize","options","this","genome","label_arc_height","scale","circular_views","chords_views","model","get","on","add_track","remove_track","vis_config","update_track_bounds","get_circular_tracks","filter","track","get_chord_tracks","get_tracks_bounds","circular_tracks","dataset_arc_height","get_value","track_gap","min_dimension","min","$el","width","height","radius_start","length","tracks_start_radii","range","map","render","self","chords_tracks","total_gap","tracks_bounds","svg","select","call","behavior","zoom","event","translate","zoom_drag_timeout","clearTimeout","setTimeout","index","view","CircsterBigWigTrackView","el","radius_bounds","CircsterChromInteractionsTrackView","outermost_radius","track_bounds","label_track_view","CircsterChromLabelTrackView","new_track","innermost_radius_bounds","new_view","push","new_track_bounds","each","track_view","i","update_radius_bounds","track_index","tracks","splice","remove","CircsterTrackView","tagName","bg_stroke","loading_bg_fill","bg_fill","chroms_layout","_chroms_layout","data_bounds","get_fill_color","color","track_parent_elt","genome_arcs","arc_gen","arc","innerRadius","outerRadius","chroms_elts","chroms_paths","chrom","data_manager","data_ready_deferred","data_is_ready","when","then","_render_data","render_labels","new_d","transition","duration","_transition_chrom_data","_transition_labels","update_scale","new_scale","old_scale","utils","data_deferred","path_elt","chrom_region","get_chrom_region","can_get_more_detailed_data","get_more_detailed_data","_update_data_bounds","chrom_arc","find","layout","_render_chrom_data","chrom_arcs","chrom_data_paths","num_paths","get_genome_wide_data","genome_wide_data","path_data","reject","chrom_data","path_fn","_get_path_function","p_data","path","new_bounds","get_data_bounds","rendered_deferred","Deferred","set_value","silent","layout_and_data","zip","chroms_data_layout","chrom_info","resolve","chroms_info","get_chroms_info","pie_layout","pie","value","len","sort","init_arcs","gap_per_chrom","new_endAngle","endAngle","startAngle","prototype","min_arc_len","chromArcTicks","k","v","visibleChroms","c","CircsterQuantitativeTrackView","track_config","_update_min_max","_quantile","numbers","quantile","ascending","parent","datum","linear","domain","clamp","line","radial","interpolate","area","_data_bounds_ticks_fn","classed","tick","click","ConfigSettingCollectionView","collection","render_in_modal","labeledChroms","new_data","flatten","values","p","parseInt","max","chord_data","cur_chrom","chrom_chord_data","source_angle","_get_region_angle","target_angle","source","target","concat","chord","position","chrom_angle_data","chrom_layout","Circster","Genome","galaxy_config","app","vis","GenomeVisualization","viz_config","add","key","type","hidden","viz_view","title","dbkey","menu","create_icon_buttons_menu","icon_class","on_click","select_datasets","root","add_tracks","Galaxy","modal","show","body","ajax","url","dataType","id","vis_json","JSON","stringify","success","vis_info","hide","set","vis_id","error","buttons","Cancel","window","location","tooltip_config","placement","tooltip","GalaxyApp"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/viz/circster.js b/static/scripts/viz/circster.js index 9ee68c2fb8b..0d1c77225b7 100644 --- a/static/scripts/viz/circster.js +++ b/static/scripts/viz/circster.js @@ -1,2 +1,2 @@ -require(["utils/utils","mvc/ui/icon-button","libs/farbtastic"],function(a){a.cssLoadFile("static/style/circster.css")}),define(["libs/underscore","libs/d3","viz/visualization","utils/config"],function(a,b,c,d){var e=Backbone.Model.extend({is_visible:function(a){var b=a.getBoundingClientRect(),c=$("svg")[0].getBoundingClientRect();return b.right<0||b.left>c.right||b.bottom<0||b.top>c.bottom?!1:!0}}),f={drawTicks:function(a,b,c,d,e){var f=a.append("g").selectAll("g").data(b).enter().append("g").selectAll("g").data(c).enter().append("g").attr("class","tick").attr("transform",function(a){return"rotate("+(180*a.angle/Math.PI-90)+")translate("+a.radius+",0)"}),g=[],h=[],i=function(a){return a.angle>Math.PI?"end":null};return e?(g=[0,0,0,-4],h=[4,0,"",".35em"],i=null):(g=[1,0,4,0],h=[0,4,".35em",""]),f.append("line").attr("x1",g[0]).attr("y1",g[1]).attr("x2",g[2]).attr("y1",g[3]).style("stroke","#000"),f.append("text").attr("x",h[0]).attr("y",h[1]).attr("dx",h[2]).attr("dy",h[3]).attr("text-anchor",i).attr("transform",d).text(function(a){return a.label})},formatNum:function(a,b){if(void 0===b&&(b=2),null===a)return null;var c=null;if(Math.abs(a)<1)c=a.toPrecision(b);else{var d=Math.round(a.toPrecision(b));a=Math.abs(a),1e3>a?c=d:1e6>a?c=Math.round((d/1e3).toPrecision(3)).toFixed(0)+"K":1e9>a&&(c=Math.round((d/1e6).toPrecision(3)).toFixed(0)+"M")}return c}},g=Backbone.Model.extend({}),h=Backbone.View.extend({className:"circster",initialize:function(a){this.genome=a.genome,this.label_arc_height=50,this.scale=1,this.circular_views=null,this.chords_views=null,this.model.get("drawables").on("add",this.add_track,this),this.model.get("drawables").on("remove",this.remove_track,this);var b=this.model.get("config");b.get("arc_dataset_height").on("change:value",this.update_track_bounds,this),b.get("track_gap").on("change:value",this.update_track_bounds,this)},get_circular_tracks:function(){return this.model.get("drawables").filter(function(a){return"DiagonalHeatmapTrack"!==a.get("track_type")})},get_chord_tracks:function(){return this.model.get("drawables").filter(function(a){return"DiagonalHeatmapTrack"===a.get("track_type")})},get_tracks_bounds:function(){var c=this.get_circular_tracks(),d=this.model.get("config").get_value("arc_dataset_height"),e=this.model.get("config").get_value("track_gap"),f=Math.min(this.$el.width(),this.$el.height())-20,g=f/2-c.length*(d+e)+e-this.label_arc_height,h=b.range(g,f/2,d+e);return a.map(h,function(a){return[a,a+d]})},render:function(){var a=this,c=a.$el.width(),d=a.$el.height(),e=this.get_circular_tracks(),f=this.get_chord_tracks(),h=a.model.get("config").get_value("total_gap"),i=this.get_tracks_bounds(),k=b.select(a.$el[0]).append("svg").attr("width",c).attr("height",d).attr("pointer-events","all").append("svg:g").call(b.behavior.zoom().on("zoom",function(){var c=b.event.scale;k.attr("transform","translate("+b.event.translate+") scale("+c+")"),a.scale!==c&&(a.zoom_drag_timeout&&clearTimeout(a.zoom_drag_timeout),a.zoom_drag_timeout=setTimeout(function(){},400))})).attr("transform","translate("+c/2+","+d/2+")").append("svg:g").attr("class","tracks");this.circular_views=e.map(function(b,c){var d=new l({el:k.append("g")[0],track:b,radius_bounds:i[c],genome:a.genome,total_gap:h});return d.render(),d}),this.chords_views=f.map(function(b){var c=new m({el:k.append("g")[0],track:b,radius_bounds:i[0],genome:a.genome,total_gap:h});return c.render(),c});var n=this.circular_views[this.circular_views.length-1].radius_bounds[1],o=[n,n+this.label_arc_height];this.label_track_view=new j({el:k.append("g")[0],track:new g,radius_bounds:o,genome:a.genome,total_gap:h}),this.label_track_view.render()},add_track:function(c){var d=this.model.get("config").get_value("total_gap");if("DiagonalHeatmapTrack"===c.get("track_type")){var e=this.circular_views[0].radius_bounds,f=new m({el:b.select("g.tracks").append("g")[0],track:c,radius_bounds:e,genome:this.genome,total_gap:d});f.render(),this.chords_views.push(f)}else{var g=this.get_tracks_bounds();a.each(this.circular_views,function(a,b){a.update_radius_bounds(g[b])}),a.each(this.chords_views,function(a){a.update_radius_bounds(g[0])});var h=this.circular_views.length,i=new l({el:b.select("g.tracks").append("g")[0],track:c,radius_bounds:g[h],genome:this.genome,total_gap:d});i.render(),this.circular_views.push(i)}},remove_track:function(b,c,d){var e=this.circular_views[d.index];this.circular_views.splice(d.index,1),e.$el.remove();var f=this.get_tracks_bounds();a.each(this.circular_views,function(a,b){a.update_radius_bounds(f[b])})},update_track_bounds:function(){var b=this.get_tracks_bounds();a.each(this.circular_views,function(a,c){a.update_radius_bounds(b[c])}),a.each(this.chords_views,function(a){a.update_radius_bounds(b[0])})}}),i=Backbone.View.extend({tagName:"g",initialize:function(a){this.bg_stroke="#ddd",this.loading_bg_fill="#ffc",this.bg_fill="#ddd",this.total_gap=a.total_gap,this.track=a.track,this.radius_bounds=a.radius_bounds,this.genome=a.genome,this.chroms_layout=this._chroms_layout(),this.data_bounds=[],this.scale=1,this.parent_elt=b.select(this.$el[0])},get_fill_color:function(){var a=this.track.get("config").get_value("block_color");return a||(a=this.track.get("config").get_value("color")),a},render:function(){var a=this.parent_elt,c=this.chroms_layout,d=b.svg.arc().innerRadius(this.radius_bounds[0]).outerRadius(this.radius_bounds[1]),e=a.selectAll("g").data(c).enter().append("svg:g"),f=e.append("path").attr("d",d).attr("class","chrom-background").style("stroke",this.bg_stroke).style("fill",this.loading_bg_fill);f.append("title").text(function(a){return a.data.chrom});var g=this,h=g.track.get("data_manager"),i=h?h.data_is_ready():!0;$.when(i).then(function(){$.when(g._render_data(a)).then(function(){f.style("fill",g.bg_fill),g.render_labels()})})},render_labels:function(){},update_radius_bounds:function(a){this.radius_bounds=a;var c=b.svg.arc().innerRadius(this.radius_bounds[0]).outerRadius(this.radius_bounds[1]);this.parent_elt.selectAll("g>path.chrom-background").transition().duration(1e3).attr("d",c),this._transition_chrom_data(),this._transition_labels()},update_scale:function(c){var d=this.scale;if(this.scale=c,!(d>=c)){var f=this,g=new e;return this.parent_elt.selectAll("path.chrom-data").filter(function(){return g.is_visible(this)}).each(function(){var d,e=b.select(this),g=e.attr("chrom"),h=f.genome.get_chrom_region(g),i=f.track.get("data_manager");i.can_get_more_detailed_data(h)&&(d=f.track.get("data_manager").get_more_detailed_data(h,"Coverage",0,c),$.when(d).then(function(b){e.remove(),f._update_data_bounds();var c=a.find(f.chroms_layout,function(a){return a.data.chrom===g}),d=f.get_fill_color();f._render_chrom_data(f.parent_elt,c,b).style("stroke",d).style("fill",d)}))}),f}},_transition_chrom_data:function(){var c=this.track,d=this.chroms_layout,e=this.parent_elt.selectAll("g>path.chrom-data"),f=e[0].length;if(f>0){var g=this;$.when(c.get("data_manager").get_genome_wide_data(this.genome)).then(function(f){var h=a.reject(a.map(f,function(a,b){var c=null,e=g._get_path_function(d[b],a);return e&&(c=e(a.data)),c}),function(a){return null===a}),i=c.get("config").get_value("color");e.each(function(a,c){b.select(this).transition().duration(1e3).style("stroke",i).style("fill",i).attr("d",h[c])})})}},_transition_labels:function(){},_update_data_bounds:function(a){this.data_bounds;this.data_bounds=a||this.get_data_bounds(this.track.get("data_manager").get_genome_wide_data(this.genome)),this._transition_chrom_data()},_render_data:function(b){var c=this,d=this.chroms_layout,e=this.track,f=$.Deferred();return $.when(e.get("data_manager").get_genome_wide_data(this.genome)).then(function(g){c.data_bounds=c.get_data_bounds(g),e.get("config").set_value("min_value",c.data_bounds[0],{silent:!0}),e.get("config").set_value("max_value",c.data_bounds[1],{silent:!0}),layout_and_data=a.zip(d,g),chroms_data_layout=a.map(layout_and_data,function(a){var d=a[0],e=a[1];return c._render_chrom_data(b,d,e)});var h=c.get_fill_color();c.parent_elt.selectAll("path.chrom-data").style("stroke",h).style("fill",h),f.resolve(b)}),f},_render_chrom_data:function(){},_get_path_function:function(){},_chroms_layout:function(){var c=this.genome.get_chroms_info(),d=b.layout.pie().value(function(a){return a.len}).sort(null),e=d(c),f=2*Math.PI*this.total_gap/c.length,g=a.map(e,function(a){var b=a.endAngle-f;return a.endAngle=b>a.startAngle?b:a.startAngle,a});return g}}),j=i.extend({initialize:function(a){i.prototype.initialize.call(this,a),this.innerRadius=this.radius_bounds[0],this.radius_bounds[0]=this.radius_bounds[1],this.bg_stroke="#fff",this.bg_fill="#fff",this.min_arc_len=.05},_render_data:function(c){var d=this,e=c.selectAll("g");e.selectAll("path").attr("id",function(a){return"label-"+a.data.chrom}),e.append("svg:text").filter(function(a){return a.endAngle-a.startAngle>d.min_arc_len}).attr("text-anchor","middle").append("svg:textPath").attr("class","chrom-label").attr("xlink:href",function(a){return"#label-"+a.data.chrom}).attr("startOffset","25%").text(function(a){return a.data.chrom});var f=function(a){var c=(a.endAngle-a.startAngle)/a.value,e=b.range(0,a.value,25e6).map(function(b,e){return{radius:d.innerRadius,angle:b*c+a.startAngle,label:0===e?0:e%3?null:d.formatNum(b)}});return e.length<4&&(e[e.length-1].label=d.formatNum(Math.round((e[e.length-1].angle-a.startAngle)/c))),e},g=function(a){return a.angle>Math.PI?"rotate(180)translate(-16)":null},h=a.filter(this.chroms_layout,function(a){return a.endAngle-a.startAngle>d.min_arc_len});this.drawTicks(this.parent_elt,h,f,g)}});a.extend(j.prototype,f);var k=i.extend({initialize:function(a){i.prototype.initialize.call(this,a);var b=this.track.get("config");b.get("min_value").on("change:value",this._update_min_max,this),b.get("max_value").on("change:value",this._update_min_max,this),b.get("color").on("change:value",this._transition_chrom_data,this)},_update_min_max:function(){var a=this.track.get("config"),b=[a.get_value("min_value"),a.get_value("max_value")];this._update_data_bounds(b),this.parent_elt.selectAll(".min_max").text(function(a,c){return b[c]})},_quantile:function(a,c){return a.sort(b.ascending),b.quantile(a,c)},_render_chrom_data:function(a,b,c){var d=this._get_path_function(b,c);if(!d)return null;var e=a.datum(c.data),f=e.append("path").attr("class","chrom-data").attr("chrom",b.data.chrom).attr("d",d);return f},_get_path_function:function(a,c){if("string"==typeof c||!c.data||0===c.data.length)return null;var d=b.scale.linear().domain(this.data_bounds).range(this.radius_bounds).clamp(!0),e=b.scale.linear().domain([0,c.data.length]).range([a.startAngle,a.endAngle]),f=b.svg.line.radial().interpolate("linear").radius(function(a){return d(a[1])}).angle(function(a,b){return e(b)});return b.svg.area.radial().interpolate(f.interpolate()).innerRadius(d(0)).outerRadius(f.radius()).angle(f.angle())},render_labels:function(){var b=this,c=function(){return"rotate(90)"},e=this.drawTicks(this.parent_elt,[this.chroms_layout[0]],this._data_bounds_ticks_fn(),c,!0).classed("min_max",!0);a.each(e,function(a){$(a).click(function(){var a=new d.ConfigSettingCollectionView({collection:b.track.get("config")});a.render_in_modal("Configure Track")})})},_transition_labels:function(){if(0!==this.data_bounds.length){var b=this,c=a.filter(this.chroms_layout,function(a){return a.endAngle-a.startAngle>.08}),d=a.filter(c,function(a,b){return b%3===0}),e=a.flatten(a.map(d,function(a){return b._data_bounds_ticks_fn()(a)}));this.parent_elt.selectAll("g.tick").data(e).transition().attr("transform",function(a){return"rotate("+(180*a.angle/Math.PI-90)+")translate("+a.radius+",0)"})}},_data_bounds_ticks_fn:function(){var a=this;return visibleChroms=0,function(b){return[{radius:a.radius_bounds[0],angle:b.startAngle,label:a.formatNum(a.data_bounds[0])},{radius:a.radius_bounds[1],angle:b.startAngle,label:a.formatNum(a.data_bounds[1])}]}},get_data_bounds:function(){}});a.extend(k.prototype,f);var l=k.extend({get_data_bounds:function(b){var c=a.flatten(a.map(b,function(b){return b?a.map(b.data,function(a){return parseInt(a[1],10)||0}):0}));return[a.min(c),this._quantile(c,.98)||a.max(c)]}}),m=i.extend({render:function(){var c=this;$.when(c.track.get("data_manager").data_is_ready()).then(function(){$.when(c.track.get("data_manager").get_genome_wide_data(c.genome)).then(function(d){var e=[],f=c.genome.get_chroms_info();a.each(d,function(b,d){var g=f[d].chrom,h=a.map(b.data,function(a){var b=c._get_region_angle(g,a[1]),d=c._get_region_angle(a[3],a[4]);return{source:{startAngle:b,endAngle:b+.01},target:{startAngle:d,endAngle:d+.01}}});e=e.concat(h)}),c.parent_elt.append("g").attr("class","chord").selectAll("path").data(e).enter().append("path").style("fill",c.get_fill_color()).attr("d",b.svg.chord().radius(c.radius_bounds[0])).style("opacity",1)})})},update_radius_bounds:function(a){this.radius_bounds=a,this.parent_elt.selectAll("path").transition().attr("d",b.svg.chord().radius(this.radius_bounds[0]))},_get_region_angle:function(b,c){var d=a.find(this.chroms_layout,function(a){return a.data.chrom===b});return d.endAngle-(d.endAngle-d.startAngle)*(d.data.len-c)/d.data.len}}),n=Backbone.View.extend({initialize:function(){var a=new c.Genome(galaxy_config.app.genome),b=new c.GenomeVisualization(galaxy_config.app.viz_config);b.get("config").add([{key:"arc_dataset_height",label:"Arc Dataset Height",type:"int",value:25,view:"circster"},{key:"track_gap",label:"Gap Between Tracks",type:"int",value:5,view:"circster"},{key:"total_gap",label:"Gap [0-1]",type:"float",value:.4,view:"circster",hidden:!0}]);var e=new h({el:$("#center .unified-panel-body"),genome:a,model:b});e.render(),$("#center .unified-panel-header-inner").append(galaxy_config.app.viz_config.title+" "+galaxy_config.app.viz_config.dbkey);var f=mod_icon_btn.create_icon_buttons_menu([{icon_class:"plus-button",title:"Add tracks",on_click:function(){c.select_datasets(galaxy_config.root+"visualization/list_current_history_datasets",galaxy_config.root+"api/datasets",b.get("dbkey"),function(a){b.add_tracks(a)})}},{icon_class:"gear",title:"Settings",on_click:function(){var a=new d.ConfigSettingCollectionView({collection:b.get("config")});a.render_in_modal("Configure Visualization")}},{icon_class:"disk--arrow",title:"Save",on_click:function(){Galaxy.modal.show({title:"Saving...",body:"progress"}),$.ajax({url:galaxy_config.root+"visualization/save",type:"POST",dataType:"json",data:{id:b.get("vis_id"),title:b.get("title"),dbkey:b.get("dbkey"),type:"trackster",vis_json:JSON.stringify(b)}}).success(function(a){Galaxy.modal.hide(),b.set("vis_id",a.vis_id)}).error(function(){Galaxy.modal.show({title:"Could Not Save",body:"Could not save visualization. Please try again later.",buttons:{Cancel:function(){Galaxy.modal.hide()}}})})}},{icon_class:"cross-circle",title:"Close",on_click:function(){window.location=galaxy_config.root+"visualization/list"}}],{tooltip_config:{placement:"bottom"}});f.$el.attr("style","float: right"),$("#center .unified-panel-header-inner").append(f.$el),$(".menu-button").tooltip({placement:"bottom"})}});return{GalaxyApp:n}}); +require(["utils/utils"],function(a){a.cssLoadFile("static/style/circster.css")}),define(["libs/underscore","libs/d3","viz/visualization","utils/config","mvc/ui/icon-button","libs/farbtastic"],function(a,b,c,d,e){var f=Backbone.Model.extend({is_visible:function(a){var b=a.getBoundingClientRect(),c=$("svg")[0].getBoundingClientRect();return b.right<0||b.left>c.right||b.bottom<0||b.top>c.bottom?!1:!0}}),g={drawTicks:function(a,b,c,d,e){var f=a.append("g").selectAll("g").data(b).enter().append("g").selectAll("g").data(c).enter().append("g").attr("class","tick").attr("transform",function(a){return"rotate("+(180*a.angle/Math.PI-90)+")translate("+a.radius+",0)"}),g=[],h=[],i=function(a){return a.angle>Math.PI?"end":null};return e?(g=[0,0,0,-4],h=[4,0,"",".35em"],i=null):(g=[1,0,4,0],h=[0,4,".35em",""]),f.append("line").attr("x1",g[0]).attr("y1",g[1]).attr("x2",g[2]).attr("y1",g[3]).style("stroke","#000"),f.append("text").attr("x",h[0]).attr("y",h[1]).attr("dx",h[2]).attr("dy",h[3]).attr("text-anchor",i).attr("transform",d).text(function(a){return a.label})},formatNum:function(a,b){if(void 0===b&&(b=2),null===a)return null;var c=null;if(Math.abs(a)<1)c=a.toPrecision(b);else{var d=Math.round(a.toPrecision(b));a=Math.abs(a),1e3>a?c=d:1e6>a?c=Math.round((d/1e3).toPrecision(3)).toFixed(0)+"K":1e9>a&&(c=Math.round((d/1e6).toPrecision(3)).toFixed(0)+"M")}return c}},h=Backbone.Model.extend({}),i=Backbone.View.extend({className:"circster",initialize:function(a){this.genome=a.genome,this.label_arc_height=50,this.scale=1,this.circular_views=null,this.chords_views=null,this.model.get("drawables").on("add",this.add_track,this),this.model.get("drawables").on("remove",this.remove_track,this);var b=this.model.get("config");b.get("arc_dataset_height").on("change:value",this.update_track_bounds,this),b.get("track_gap").on("change:value",this.update_track_bounds,this)},get_circular_tracks:function(){return this.model.get("drawables").filter(function(a){return"DiagonalHeatmapTrack"!==a.get("track_type")})},get_chord_tracks:function(){return this.model.get("drawables").filter(function(a){return"DiagonalHeatmapTrack"===a.get("track_type")})},get_tracks_bounds:function(){var c=this.get_circular_tracks(),d=this.model.get("config").get_value("arc_dataset_height"),e=this.model.get("config").get_value("track_gap"),f=Math.min(this.$el.width(),this.$el.height())-20,g=f/2-c.length*(d+e)+e-this.label_arc_height,h=b.range(g,f/2,d+e);return a.map(h,function(a){return[a,a+d]})},render:function(){var a=this,c=a.$el.width(),d=a.$el.height(),e=this.get_circular_tracks(),f=this.get_chord_tracks(),g=a.model.get("config").get_value("total_gap"),i=this.get_tracks_bounds(),j=b.select(a.$el[0]).append("svg").attr("width",c).attr("height",d).attr("pointer-events","all").append("svg:g").call(b.behavior.zoom().on("zoom",function(){var c=b.event.scale;j.attr("transform","translate("+b.event.translate+") scale("+c+")"),a.scale!==c&&(a.zoom_drag_timeout&&clearTimeout(a.zoom_drag_timeout),a.zoom_drag_timeout=setTimeout(function(){},400))})).attr("transform","translate("+c/2+","+d/2+")").append("svg:g").attr("class","tracks");this.circular_views=e.map(function(b,c){var d=new m({el:j.append("g")[0],track:b,radius_bounds:i[c],genome:a.genome,total_gap:g});return d.render(),d}),this.chords_views=f.map(function(b){var c=new n({el:j.append("g")[0],track:b,radius_bounds:i[0],genome:a.genome,total_gap:g});return c.render(),c});var l=this.circular_views[this.circular_views.length-1].radius_bounds[1],o=[l,l+this.label_arc_height];this.label_track_view=new k({el:j.append("g")[0],track:new h,radius_bounds:o,genome:a.genome,total_gap:g}),this.label_track_view.render()},add_track:function(c){var d=this.model.get("config").get_value("total_gap");if("DiagonalHeatmapTrack"===c.get("track_type")){var e=this.circular_views[0].radius_bounds,f=new n({el:b.select("g.tracks").append("g")[0],track:c,radius_bounds:e,genome:this.genome,total_gap:d});f.render(),this.chords_views.push(f)}else{var g=this.get_tracks_bounds();a.each(this.circular_views,function(a,b){a.update_radius_bounds(g[b])}),a.each(this.chords_views,function(a){a.update_radius_bounds(g[0])});var h=this.circular_views.length,i=new m({el:b.select("g.tracks").append("g")[0],track:c,radius_bounds:g[h],genome:this.genome,total_gap:d});i.render(),this.circular_views.push(i)}},remove_track:function(b,c,d){var e=this.circular_views[d.index];this.circular_views.splice(d.index,1),e.$el.remove();var f=this.get_tracks_bounds();a.each(this.circular_views,function(a,b){a.update_radius_bounds(f[b])})},update_track_bounds:function(){var b=this.get_tracks_bounds();a.each(this.circular_views,function(a,c){a.update_radius_bounds(b[c])}),a.each(this.chords_views,function(a){a.update_radius_bounds(b[0])})}}),j=Backbone.View.extend({tagName:"g",initialize:function(a){this.bg_stroke="#ddd",this.loading_bg_fill="#ffc",this.bg_fill="#ddd",this.total_gap=a.total_gap,this.track=a.track,this.radius_bounds=a.radius_bounds,this.genome=a.genome,this.chroms_layout=this._chroms_layout(),this.data_bounds=[],this.scale=1,this.parent_elt=b.select(this.$el[0])},get_fill_color:function(){var a=this.track.get("config").get_value("block_color");return a||(a=this.track.get("config").get_value("color")),a},render:function(){var a=this.parent_elt,c=this.chroms_layout,d=b.svg.arc().innerRadius(this.radius_bounds[0]).outerRadius(this.radius_bounds[1]),e=a.selectAll("g").data(c).enter().append("svg:g"),f=e.append("path").attr("d",d).attr("class","chrom-background").style("stroke",this.bg_stroke).style("fill",this.loading_bg_fill);f.append("title").text(function(a){return a.data.chrom});var g=this,h=g.track.get("data_manager"),i=h?h.data_is_ready():!0;$.when(i).then(function(){$.when(g._render_data(a)).then(function(){f.style("fill",g.bg_fill),g.render_labels()})})},render_labels:function(){},update_radius_bounds:function(a){this.radius_bounds=a;var c=b.svg.arc().innerRadius(this.radius_bounds[0]).outerRadius(this.radius_bounds[1]);this.parent_elt.selectAll("g>path.chrom-background").transition().duration(1e3).attr("d",c),this._transition_chrom_data(),this._transition_labels()},update_scale:function(c){var d=this.scale;if(this.scale=c,!(d>=c)){var e=this,g=new f;return this.parent_elt.selectAll("path.chrom-data").filter(function(){return g.is_visible(this)}).each(function(){var d,f=b.select(this),g=f.attr("chrom"),h=e.genome.get_chrom_region(g),i=e.track.get("data_manager");i.can_get_more_detailed_data(h)&&(d=e.track.get("data_manager").get_more_detailed_data(h,"Coverage",0,c),$.when(d).then(function(b){f.remove(),e._update_data_bounds();var c=a.find(e.chroms_layout,function(a){return a.data.chrom===g}),d=e.get_fill_color();e._render_chrom_data(e.parent_elt,c,b).style("stroke",d).style("fill",d)}))}),e}},_transition_chrom_data:function(){var c=this.track,d=this.chroms_layout,e=this.parent_elt.selectAll("g>path.chrom-data"),f=e[0].length;if(f>0){var g=this;$.when(c.get("data_manager").get_genome_wide_data(this.genome)).then(function(f){var h=a.reject(a.map(f,function(a,b){var c=null,e=g._get_path_function(d[b],a);return e&&(c=e(a.data)),c}),function(a){return null===a}),i=c.get("config").get_value("color");e.each(function(a,c){b.select(this).transition().duration(1e3).style("stroke",i).style("fill",i).attr("d",h[c])})})}},_transition_labels:function(){},_update_data_bounds:function(a){this.data_bounds;this.data_bounds=a||this.get_data_bounds(this.track.get("data_manager").get_genome_wide_data(this.genome)),this._transition_chrom_data()},_render_data:function(b){var c=this,d=this.chroms_layout,e=this.track,f=$.Deferred();return $.when(e.get("data_manager").get_genome_wide_data(this.genome)).then(function(g){c.data_bounds=c.get_data_bounds(g),e.get("config").set_value("min_value",c.data_bounds[0],{silent:!0}),e.get("config").set_value("max_value",c.data_bounds[1],{silent:!0}),layout_and_data=a.zip(d,g),chroms_data_layout=a.map(layout_and_data,function(a){var d=a[0],e=a[1];return c._render_chrom_data(b,d,e)});var h=c.get_fill_color();c.parent_elt.selectAll("path.chrom-data").style("stroke",h).style("fill",h),f.resolve(b)}),f},_render_chrom_data:function(){},_get_path_function:function(){},_chroms_layout:function(){var c=this.genome.get_chroms_info(),d=b.layout.pie().value(function(a){return a.len}).sort(null),e=d(c),f=2*Math.PI*this.total_gap/c.length,g=a.map(e,function(a){var b=a.endAngle-f;return a.endAngle=b>a.startAngle?b:a.startAngle,a});return g}}),k=j.extend({initialize:function(a){j.prototype.initialize.call(this,a),this.innerRadius=this.radius_bounds[0],this.radius_bounds[0]=this.radius_bounds[1],this.bg_stroke="#fff",this.bg_fill="#fff",this.min_arc_len=.05},_render_data:function(c){var d=this,e=c.selectAll("g");e.selectAll("path").attr("id",function(a){return"label-"+a.data.chrom}),e.append("svg:text").filter(function(a){return a.endAngle-a.startAngle>d.min_arc_len}).attr("text-anchor","middle").append("svg:textPath").attr("class","chrom-label").attr("xlink:href",function(a){return"#label-"+a.data.chrom}).attr("startOffset","25%").text(function(a){return a.data.chrom});var f=function(a){var c=(a.endAngle-a.startAngle)/a.value,e=b.range(0,a.value,25e6).map(function(b,e){return{radius:d.innerRadius,angle:b*c+a.startAngle,label:0===e?0:e%3?null:d.formatNum(b)}});return e.length<4&&(e[e.length-1].label=d.formatNum(Math.round((e[e.length-1].angle-a.startAngle)/c))),e},g=function(a){return a.angle>Math.PI?"rotate(180)translate(-16)":null},h=a.filter(this.chroms_layout,function(a){return a.endAngle-a.startAngle>d.min_arc_len});this.drawTicks(this.parent_elt,h,f,g)}});a.extend(k.prototype,g);var l=j.extend({initialize:function(a){j.prototype.initialize.call(this,a);var b=this.track.get("config");b.get("min_value").on("change:value",this._update_min_max,this),b.get("max_value").on("change:value",this._update_min_max,this),b.get("color").on("change:value",this._transition_chrom_data,this)},_update_min_max:function(){var a=this.track.get("config"),b=[a.get_value("min_value"),a.get_value("max_value")];this._update_data_bounds(b),this.parent_elt.selectAll(".min_max").text(function(a,c){return b[c]})},_quantile:function(a,c){return a.sort(b.ascending),b.quantile(a,c)},_render_chrom_data:function(a,b,c){var d=this._get_path_function(b,c);if(!d)return null;var e=a.datum(c.data),f=e.append("path").attr("class","chrom-data").attr("chrom",b.data.chrom).attr("d",d);return f},_get_path_function:function(a,c){if("string"==typeof c||!c.data||0===c.data.length)return null;var d=b.scale.linear().domain(this.data_bounds).range(this.radius_bounds).clamp(!0),e=b.scale.linear().domain([0,c.data.length]).range([a.startAngle,a.endAngle]),f=b.svg.line.radial().interpolate("linear").radius(function(a){return d(a[1])}).angle(function(a,b){return e(b)});return b.svg.area.radial().interpolate(f.interpolate()).innerRadius(d(0)).outerRadius(f.radius()).angle(f.angle())},render_labels:function(){var b=this,c=function(){return"rotate(90)"},e=this.drawTicks(this.parent_elt,[this.chroms_layout[0]],this._data_bounds_ticks_fn(),c,!0).classed("min_max",!0);a.each(e,function(a){$(a).click(function(){var a=new d.ConfigSettingCollectionView({collection:b.track.get("config")});a.render_in_modal("Configure Track")})})},_transition_labels:function(){if(0!==this.data_bounds.length){var b=this,c=a.filter(this.chroms_layout,function(a){return a.endAngle-a.startAngle>.08}),d=a.filter(c,function(a,b){return b%3===0}),e=a.flatten(a.map(d,function(a){return b._data_bounds_ticks_fn()(a)}));this.parent_elt.selectAll("g.tick").data(e).transition().attr("transform",function(a){return"rotate("+(180*a.angle/Math.PI-90)+")translate("+a.radius+",0)"})}},_data_bounds_ticks_fn:function(){var a=this;return visibleChroms=0,function(b){return[{radius:a.radius_bounds[0],angle:b.startAngle,label:a.formatNum(a.data_bounds[0])},{radius:a.radius_bounds[1],angle:b.startAngle,label:a.formatNum(a.data_bounds[1])}]}},get_data_bounds:function(){}});a.extend(l.prototype,g);var m=l.extend({get_data_bounds:function(b){var c=a.flatten(a.map(b,function(b){return b?a.map(b.data,function(a){return parseInt(a[1],10)||0}):0}));return[a.min(c),this._quantile(c,.98)||a.max(c)]}}),n=j.extend({render:function(){var c=this;$.when(c.track.get("data_manager").data_is_ready()).then(function(){$.when(c.track.get("data_manager").get_genome_wide_data(c.genome)).then(function(d){var e=[],f=c.genome.get_chroms_info();a.each(d,function(b,d){var g=f[d].chrom,h=a.map(b.data,function(a){var b=c._get_region_angle(g,a[1]),d=c._get_region_angle(a[3],a[4]);return{source:{startAngle:b,endAngle:b+.01},target:{startAngle:d,endAngle:d+.01}}});e=e.concat(h)}),c.parent_elt.append("g").attr("class","chord").selectAll("path").data(e).enter().append("path").style("fill",c.get_fill_color()).attr("d",b.svg.chord().radius(c.radius_bounds[0])).style("opacity",1)})})},update_radius_bounds:function(a){this.radius_bounds=a,this.parent_elt.selectAll("path").transition().attr("d",b.svg.chord().radius(this.radius_bounds[0]))},_get_region_angle:function(b,c){var d=a.find(this.chroms_layout,function(a){return a.data.chrom===b});return d.endAngle-(d.endAngle-d.startAngle)*(d.data.len-c)/d.data.len}}),o=Backbone.View.extend({initialize:function(){var a=new c.Genome(galaxy_config.app.genome),b=new c.GenomeVisualization(galaxy_config.app.viz_config);b.get("config").add([{key:"arc_dataset_height",label:"Arc Dataset Height",type:"int",value:25,view:"circster"},{key:"track_gap",label:"Gap Between Tracks",type:"int",value:5,view:"circster"},{key:"total_gap",label:"Gap [0-1]",type:"float",value:.4,view:"circster",hidden:!0}]);var f=new i({el:$("#center .unified-panel-body"),genome:a,model:b});f.render(),$("#center .unified-panel-header-inner").append(galaxy_config.app.viz_config.title+" "+galaxy_config.app.viz_config.dbkey);var g=e.create_icon_buttons_menu([{icon_class:"plus-button",title:"Add tracks",on_click:function(){c.select_datasets(galaxy_config.root+"visualization/list_current_history_datasets",galaxy_config.root+"api/datasets",b.get("dbkey"),function(a){b.add_tracks(a)})}},{icon_class:"gear",title:"Settings",on_click:function(){var a=new d.ConfigSettingCollectionView({collection:b.get("config")});a.render_in_modal("Configure Visualization")}},{icon_class:"disk--arrow",title:"Save",on_click:function(){Galaxy.modal.show({title:"Saving...",body:"progress"}),$.ajax({url:galaxy_config.root+"visualization/save",type:"POST",dataType:"json",data:{id:b.get("vis_id"),title:b.get("title"),dbkey:b.get("dbkey"),type:"trackster",vis_json:JSON.stringify(b)}}).success(function(a){Galaxy.modal.hide(),b.set("vis_id",a.vis_id)}).error(function(){Galaxy.modal.show({title:"Could Not Save",body:"Could not save visualization. Please try again later.",buttons:{Cancel:function(){Galaxy.modal.hide()}}})})}},{icon_class:"cross-circle",title:"Close",on_click:function(){window.location=galaxy_config.root+"visualization/list"}}],{tooltip_config:{placement:"bottom"}});g.$el.attr("style","float: right"),$("#center .unified-panel-header-inner").append(g.$el),$(".menu-button").tooltip({placement:"bottom"})}});return{GalaxyApp:o}}); //# sourceMappingURL=../../maps/viz/circster.js.map \ No newline at end of file