diff --git a/lib/galaxy/visualization/tracks/data_providers.py b/lib/galaxy/visualization/tracks/data_providers.py index 1cc8196105e..afa4ad86c5f 100644 --- a/lib/galaxy/visualization/tracks/data_providers.py +++ b/lib/galaxy/visualization/tracks/data_providers.py @@ -945,6 +945,8 @@ class GFFDataProvider( TracksDataProvider ): """ Process data from an iterator to a format that can be provided to client. """ + filter_cols = from_json_string( kwargs.get( "filter_cols", "[]" ) ) + no_detail = ( "no_detail" in kwargs ) results = [] message = None offset = 0 @@ -956,7 +958,7 @@ class GFFDataProvider( TracksDataProvider ): message = ERROR_MAX_VALS % ( max_vals, "reads" ) break - payload = package_gff_feature( feature ) + payload = package_gff_feature( feature, no_detail=no_detail, filter_cols=filter_cols ) payload.insert( 0, offset ) results.append( payload ) offset += feature.raw_size diff --git a/static/scripts/trackster.js b/static/scripts/trackster.js index 43f01bd0787..373a310b158 100644 --- a/static/scripts/trackster.js +++ b/static/scripts/trackster.js @@ -2001,6 +2001,8 @@ extend(Tool.prototype, { var new_track = new current_track.constructor(track_name, view, container, "hda"); new_track.init_for_tool_data(); new_track.change_mode(current_track.mode); + new_track.set_filters_manager(current_track.filters_manager.copy(new_track)); + new_track.update_icons(); container.add_drawable(new_track); new_track.content_div.text("Starting job."); @@ -2258,6 +2260,12 @@ var NumberFilter = function(name, index, tool_id, tool_exp_name) { $("
").appendTo(filter.parent_div); }; extend(NumberFilter.prototype, { + /** + * Return a copy of filter. + */ + copy: function() { + return new NumberFilter(this.name, this.index, this.tool_id, this.tool_exp_name); + }, /** * Get step for slider. */ @@ -2413,6 +2421,16 @@ var FiltersManager = function(track, filters_dict) { }; extend(FiltersManager.prototype, { + /** + * Return a copy of the manager. + */ + copy: function(new_track) { + var copy = new FiltersManager(new_track); + for (var i = 0; i < this.filters.length; i++) { + copy.add_filter(this.filters[i].copy()); + } + return copy; + }, /** * Add a filter to the manager. */ @@ -3194,12 +3212,9 @@ var TiledTrack = function(name, view, container, prefs, filters_dict, tool_dict, if (this.header_div) { // - // Create filters div. + // Setup filters. // - if (this.filters_manager) { - this.filters_div = this.filters_manager.parent_div - this.header_div.after(this.filters_div); - } + this.set_filters_manager(this.filters_manager); // // Create dynamic tool div. @@ -3223,6 +3238,14 @@ extend(TiledTrack.prototype, Drawable.prototype, Track.prototype, { new_track.enabled = this.enabled; return new_track; }, + /** + * Set filters manager + HTML elements. + */ + set_filters_manager: function(filters_manager) { + this.filters_manager = filters_manager; + this.filters_div = this.filters_manager.parent_div; + this.header_div.after(this.filters_div); + }, /** * Returns representation of object in a dictionary for easy saving. * Use from_dict to recreate object.