Remove history selector in favor of history sorting feature

This commit is contained in:
guerler
2017-07-12 12:32:14 -04:00
parent 78ffd4d915
commit a601e5f78e
22 changed files with 54 additions and 83 deletions
@@ -107,7 +107,6 @@ return Backbone.Model.extend({
_.each(_.pairs(self.attributes.filters), function(k) {
url_data['f-' + k[0]] = k[1];
});
return url_data;
},
+8 -3
View File
@@ -35,10 +35,15 @@ return Backbone.View.extend({
if ( this.dict_format ) {
this.setElement('<div/>');
if ( grid_config.url_base && !grid_config.items ) {
Utils.get({
url: grid_config.url_base,
success: function( response ) {
var url_data = {};
_.each(grid_config.filters, function(v, k) {
url_data['f-' + k] = v;
});
$.ajax({
url : grid_config.url_base + '?' + $.param( url_data ),
success : function( response ) {
response.embedded = grid_config.embedded;
response.filters = grid_config.filters;
self.init_grid( response );
}
});
+1 -1
View File
@@ -1084,7 +1084,7 @@ var Circster = Backbone.View.extend(
{
icon_class: 'plus-button', title: 'Add tracks', on_click: function()
{
visualization.select_datasets(Galaxy.root + "visualization/list_current_history_datasets", Galaxy.root + "api/datasets", vis.get('dbkey'), function(tracks)
visualization.select_datasets({'dbkey': vis.get('dbkey')}, function(tracks)
{
vis.add_tracks(tracks);
});
+1 -1
View File
@@ -115,7 +115,7 @@ var TracksterUI = Base.extend({
var self = this,
menu = mod_icon_btn.create_icon_buttons_menu([
{ icon_class: 'plus-button', title: 'Add tracks', on_click: function() {
visualization.select_datasets(Galaxy.root + "visualization/list_current_history_datasets", Galaxy.root + "api/datasets", { 'f-dbkey': view.dbkey },
visualization.select_datasets({ 'dbkey': view.dbkey },
function(new_tracks) {
_.each(new_tracks, function(track) {
view.add_drawable( tracks.object_from_template(track, view, view) );
@@ -909,7 +909,7 @@ var TracksterView = Backbone.View.extend({
// Introduction div shown when there are no tracks.
this.intro_div = $("<div/>").addClass("intro").appendTo(this.viewport_container);
var add_tracks_button = $("<div/>").text("Add Datasets to Visualization").addClass("action-button").appendTo(this.intro_div).click(function () {
visualization.select_datasets(Galaxy.root + "visualization/list_current_history_datasets", Galaxy.root + "api/datasets", { 'f-dbkey': view.dbkey }, function(tracks) {
visualization.select_datasets({ 'dbkey': view.dbkey }, function(tracks) {
_.each(tracks, function(track) {
view.add_drawable( object_from_template(track, view, view) );
});
+3 -28
View File
@@ -35,40 +35,18 @@ var CustomToJSON = {
* track definitions are obtained from the server and the success_fn is called with the list of
* definitions for selected datasets.
*/
var select_datasets = function(dataset_url, add_track_async_url, filters, success_fn) {
var select_datasets = function(filters, success_fn) {
// history dataset selection tab
var history_grid = new GridView({
url_base : Galaxy.root + 'visualization/list_history_datasets',
filters : filters,
dict_format : true,
embedded : true
});
var history_list = new Ui.Select.View({
onchange: function() {
history_grid.grid.add_filter( 'history', history_list.value() );
_.each( filters, function( value, key ) {
if ( key.substr( 0, 2 ) == 'f-' ) {
history_grid.grid.add_filter( key.substr( 2 ), value );
}
});
history_grid.update_grid();
}
});
$.ajax( {
url : Galaxy.root + 'api/histories',
success : function( response ) {
var options = [];
_.each( response, function( item ) {
options.push({ label: item.name, value: item.id });
});
history_list.update( options );
history_list.trigger( 'change' );
}
});
// library dataset selection tab
var library_grid = new GridView( {
url_base : Galaxy.root + 'visualization/list_library_datasets',
url_data : filters,
dict_format : true,
embedded : true
});
@@ -77,10 +55,7 @@ var select_datasets = function(dataset_url, add_track_async_url, filters, succes
var tabs = new Tabs.View();
tabs.add({ id : 'histories',
title : 'Histories',
$el : $( '<div/>' ).append( $( '<h5/>' ).append( 'Selected history:' ) )
.append( history_list.$el )
.append( $( '<h5/>' ).append( 'Available datasets:' ) )
.append( history_grid.$el )
$el : $( '<div/>' ).append( history_grid.$el )
});
tabs.add({ id : 'libraries',
title : 'Libraries',
@@ -31,36 +31,36 @@ log = logging.getLogger( __name__ )
#
# -- Grids --
#
class DbKeyColumn( grids.GridColumn ):
""" Column for filtering by and displaying dataset dbkey. """
def filter( self, trans, user, query, dbkey ):
""" Filter by dbkey. """
# Use raw SQL b/c metadata is a BLOB.
dbkey_user, dbkey = decode_dbkey( dbkey )
dbkey = dbkey.replace("'", "\\'")
return query.filter( or_( "metadata like '%%\"dbkey\": [\"%s\"]%%'" % dbkey, "metadata like '%%\"dbkey\": \"%s\"%%'" % dbkey ) )
class HistoryColumn( grids.GridColumn ):
""" Column for filtering by history id. """
def filter( self, trans, user, query, history_id ):
return query.filter( model.History.id == trans.security.decode_id(history_id) )
class HistoryDatasetsSelectionGrid( grids.Grid ):
class DbKeyColumn( grids.GridColumn ):
def filter( self, trans, user, query, dbkey ):
""" Filter by dbkey through a raw SQL b/c metadata is a BLOB. """
dbkey_user, dbkey = decode_dbkey( dbkey )
dbkey = dbkey.replace("'", "\\'")
return query.filter( or_( "metadata like '%%\"dbkey\": [\"%s\"]%%'" % dbkey, "metadata like '%%\"dbkey\": \"%s\"%%'" % dbkey ) )
class HistoryColumn( grids.GridColumn ):
def get_value( self, trans, grid, hda):
return escape(hda.history.name)
def sort( self, trans, query, ascending, column_name=None ):
"""Sort query using this column."""
return grids.GridColumn.sort( self, trans, query, ascending, column_name="history_id" )
available_tracks = None
title = "Add Datasets"
model_class = model.HistoryDatasetAssociation
default_filter = { "deleted": "False", "shared": "All" }
default_sort_key = "-hid"
use_async = True
use_paging = False
columns = [
grids.GridColumn( "Id", key="hid" ),
grids.TextColumn( "Name", key="name", model_class=model.HistoryDatasetAssociation ),
grids.TextColumn( "Filetype", key="extension", model_class=model.HistoryDatasetAssociation ),
HistoryColumn( "History", key="history", visible=False ),
grids.TextColumn( "Type", key="extension", model_class=model.HistoryDatasetAssociation ),
grids.TextColumn( "history_id", key="history_id", model_class=model.HistoryDatasetAssociation, visible=False ),
HistoryColumn( "History", key="history", visible=True ),
DbKeyColumn( "Dbkey", key="dbkey", model_class=model.HistoryDatasetAssociation, visible=True, sortable=False )
]
columns.append(
@@ -68,13 +68,6 @@ class HistoryDatasetsSelectionGrid( grids.Grid ):
key="free-text-search", visible=False, filterable="standard" )
)
def get_current_item( self, trans, **kwargs ):
"""
Current item for grid is the history being queried. This is a bit
of hack since current_item typically means the current item in the grid.
"""
return trans.sa_session.query( model.History ).get( trans.security.decode_id( kwargs[ 'f-history' ] ) )
def build_initial_query( self, trans, **kwargs ):
return trans.sa_session.query( self.model_class ).join( model.History.table ).join( model.Dataset.table )
@@ -253,7 +246,6 @@ class VisualizationController( BaseUIController, SharableMixin, UsesVisualizatio
@web.require_login( "see a history's datasets that can added to this visualization" )
def list_history_datasets( self, trans, **kwargs ):
"""List a history's datasets that can be added to a visualization."""
kwargs[ 'f-history' ] = kwargs.get( 'f-history', trans.security.encode_id( trans.get_history().id ) )
kwargs[ 'show_item_checkboxes' ] = 'True'
kwargs[ 'dict_format' ] = True
return self._history_datasets_grid( trans, **kwargs )
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"grid-model.js","sources":["../../../src/mvc/grid/grid-model.js"],"names":["define","Backbone","Model","extend","defaults","url_base","async","async_ops","categorical_filters","filters","sort_key","show_item_checkboxes","advanced_search","cur_page","num_pages","operation","undefined","item_ids","can_async_op","op","_","indexOf","this","attributes","add_filter","key","value","append","new_val","cur_val","values","push","remove_filter","condition","condition_index","get_url_data","url_data","sort","page","id","self","each","pairs","k","get_url","args","get","$","param"],"mappings":"AACAA,UAAW,WAGX,MAAOC,UAASC,MAAMC,QAClBC,UACIC,SAAU,GACVC,OAAO,EACPC,aACAC,uBACAC,WACAC,SAAU,KACVC,sBAAsB,EACtBC,iBAAiB,EACjBC,SAAU,EACVC,UAAW,EACXC,UAAWC,OACXC,SAAUD,QAMdE,aAAc,SAASC,GACnB,MAAoD,KAA7CC,EAAEC,QAAQC,KAAKC,WAAWhB,UAAWY,IAMhDK,WAAY,SAASC,EAAKC,EAAOC,GAE7B,GAAIA,EAAQ,CAER,GACIC,GADAC,EAAUP,KAAKC,WAAWd,QAAQgB,EAEtC,IAAgB,OAAZI,GAAgCb,SAAZa,EACpBD,EAAUF,MAET,IAAuB,gBAAb,GACX,GAAe,OAAXG,EACAD,EAAUF,MACP,CAEH,GAAII,KACJA,GAAO,GAAKD,EACZC,EAAO,GAAKJ,EACZE,EAAUE,MAKdF,GAAUC,EACVD,EAAQG,KAAKL,EAEjBJ,MAAKC,WAAWd,QAAQgB,GAAOG,MAI/BN,MAAKC,WAAWd,QAAQgB,GAAOC,GAOvCM,cAAe,SAASP,EAAKQ,GACzB,GAAIJ,GAAUP,KAAKC,WAAWd,QAAQgB,EACtC,IAAgB,OAAZI,GAAgCb,SAAZa,EACpB,OAAO,CAGX,IAAwB,gBAAd,GAENP,KAAKC,WAAWd,QAAQgB,GAAO,OAC5B,CAEH,GAAIS,GAAkBd,EAAEC,QAAQQ,EAASI,EACjB,MAApBC,IACAL,EAAQK,GAAmB,MAQvCC,aAAc,WACV,GAAIC,IACA9B,MAAOgB,KAAKC,WAAWjB,MACvB+B,KAAMf,KAAKC,WAAWb,SACtB4B,KAAMhB,KAAKC,WAAWV,SACtBF,qBAAsBW,KAAKC,WAAWZ,qBACtCC,gBAAiBU,KAAKC,WAAWX,gBAIjCU,MAAKC,WAAWR,YAChBqB,EAASrB,UAAYO,KAAKC,WAAWR,WAErCO,KAAKC,WAAWN,WAChBmB,EAASG,GAAKjB,KAAKC,WAAWN,SAIlC,IAAIuB,GAAOlB,IAKX,OAJAF,GAAEqB,KAAKrB,EAAEsB,MAAMF,EAAKjB,WAAWd,SAAU,SAASkC,GAC9CP,EAAS,KAAOO,EAAE,IAAMA,EAAE,KAGvBP,GAIXQ,QAAS,SAAUC,GACf,MAAOvB,MAAKwB,IAAI,YAAc,IAAMC,EAAEC,MAAM1B,KAAKa,gBAAkB,IAAMY,EAAEC,MAAMH"}
{"version":3,"file":"grid-model.js","sources":["../../../src/mvc/grid/grid-model.js"],"names":["define","Backbone","Model","extend","defaults","url_base","async","async_ops","categorical_filters","filters","sort_key","show_item_checkboxes","advanced_search","cur_page","num_pages","operation","undefined","item_ids","can_async_op","op","_","indexOf","this","attributes","add_filter","key","value","append","new_val","cur_val","values","push","remove_filter","condition","condition_index","get_url_data","url_data","sort","page","id","self","each","pairs","k","get_url","args","get","$","param"],"mappings":"AACAA,UAAW,WAGX,MAAOC,UAASC,MAAMC,QAClBC,UACIC,SAAU,GACVC,OAAO,EACPC,aACAC,uBACAC,WACAC,SAAU,KACVC,sBAAsB,EACtBC,iBAAiB,EACjBC,SAAU,EACVC,UAAW,EACXC,UAAWC,OACXC,SAAUD,QAMdE,aAAc,SAASC,GACnB,MAAoD,KAA7CC,EAAEC,QAAQC,KAAKC,WAAWhB,UAAWY,IAMhDK,WAAY,SAASC,EAAKC,EAAOC,GAE7B,GAAIA,EAAQ,CAER,GACIC,GADAC,EAAUP,KAAKC,WAAWd,QAAQgB,EAEtC,IAAgB,OAAZI,GAAgCb,SAAZa,EACpBD,EAAUF,MAET,IAAuB,gBAAb,GACX,GAAe,OAAXG,EACAD,EAAUF,MACP,CAEH,GAAII,KACJA,GAAO,GAAKD,EACZC,EAAO,GAAKJ,EACZE,EAAUE,MAKdF,GAAUC,EACVD,EAAQG,KAAKL,EAEjBJ,MAAKC,WAAWd,QAAQgB,GAAOG,MAI/BN,MAAKC,WAAWd,QAAQgB,GAAOC,GAOvCM,cAAe,SAASP,EAAKQ,GACzB,GAAIJ,GAAUP,KAAKC,WAAWd,QAAQgB,EACtC,IAAgB,OAAZI,GAAgCb,SAAZa,EACpB,OAAO,CAGX,IAAwB,gBAAd,GAENP,KAAKC,WAAWd,QAAQgB,GAAO,OAC5B,CAEH,GAAIS,GAAkBd,EAAEC,QAAQQ,EAASI,EACjB,MAApBC,IACAL,EAAQK,GAAmB,MAQvCC,aAAc,WACV,GAAIC,IACA9B,MAAOgB,KAAKC,WAAWjB,MACvB+B,KAAMf,KAAKC,WAAWb,SACtB4B,KAAMhB,KAAKC,WAAWV,SACtBF,qBAAsBW,KAAKC,WAAWZ,qBACtCC,gBAAiBU,KAAKC,WAAWX,gBAIjCU,MAAKC,WAAWR,YAChBqB,EAASrB,UAAYO,KAAKC,WAAWR,WAErCO,KAAKC,WAAWN,WAChBmB,EAASG,GAAKjB,KAAKC,WAAWN,SAIlC,IAAIuB,GAAOlB,IAIX,OAHAF,GAAEqB,KAAKrB,EAAEsB,MAAMF,EAAKjB,WAAWd,SAAU,SAASkC,GAC9CP,EAAS,KAAOO,EAAE,IAAMA,EAAE,KAEvBP,GAIXQ,QAAS,SAAUC,GACf,MAAOvB,MAAKwB,IAAI,YAAc,IAAMC,EAAEC,MAAM1B,KAAKa,gBAAkB,IAAMY,EAAEC,MAAMH"}
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
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
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
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long