mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 12:13:33 +08:00
Remove history selector in favor of history sorting feature
This commit is contained in:
@@ -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;
|
||||
},
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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) );
|
||||
});
|
||||
|
||||
@@ -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 @@
|
||||
{"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
Reference in New Issue
Block a user