mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
194 lines
8.2 KiB
JavaScript
194 lines
8.2 KiB
JavaScript
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
|
// === MAIN GALAXY LIBRARY MODULE ====
|
|
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
|
|
|
define([
|
|
"galaxy.masthead",
|
|
"utils/utils",
|
|
"libs/toastr",
|
|
"mvc/base-mvc",
|
|
"mvc/library/library-model",
|
|
"mvc/library/library-folderlist-view",
|
|
"mvc/library/library-librarylist-view",
|
|
"mvc/library/library-librarytoolbar-view",
|
|
"mvc/library/library-foldertoolbar-view",
|
|
"mvc/library/library-dataset-view",
|
|
"mvc/library/library-library-view",
|
|
"mvc/library/library-folder-view"
|
|
],
|
|
function(mod_masthead,
|
|
mod_utils,
|
|
mod_toastr,
|
|
mod_baseMVC,
|
|
mod_library_model,
|
|
mod_folderlist_view,
|
|
mod_librarylist_view,
|
|
mod_librarytoolbar_view,
|
|
mod_foldertoolbar_view,
|
|
mod_library_dataset_view,
|
|
mod_library_library_view,
|
|
mod_library_folder_view
|
|
) {
|
|
|
|
// ============================================================================
|
|
// ROUTER
|
|
var LibraryRouter = Backbone.Router.extend({
|
|
initialize: function() {
|
|
this.routesHit = 0;
|
|
//keep count of number of routes handled by the application
|
|
Backbone.history.on( 'route', function() { this.routesHit++; }, this );
|
|
},
|
|
|
|
routes: {
|
|
"" : "libraries",
|
|
"page/:show_page" : "libraries_page",
|
|
"library/:library_id/permissions" : "library_permissions",
|
|
"folders/:folder_id/permissions" : "folder_permissions",
|
|
"folders/:id" : "folder_content",
|
|
"folders/:id/page/:show_page" : "folder_page",
|
|
"folders/:folder_id/datasets/:dataset_id" : "dataset_detail",
|
|
"folders/:folder_id/datasets/:dataset_id/permissions" : "dataset_permissions",
|
|
"folders/:folder_id/datasets/:dataset_id/versions/:ldda_id" : "dataset_version",
|
|
"folders/:folder_id/download/:format" : "download",
|
|
"folders/:folder_id/import/:source" : "import_datasets"
|
|
},
|
|
|
|
back: function() {
|
|
if( this.routesHit > 1 ) {
|
|
//more than one route hit -> user did not land to current page directly
|
|
window.history.back();
|
|
} else {
|
|
//otherwise go to the home page. Use replaceState if available so
|
|
//the navigation doesn't create an extra history entry
|
|
this.navigate( '#', { trigger:true, replace:true } );
|
|
}
|
|
}
|
|
});
|
|
|
|
// ============================================================================
|
|
/** session storage for library preferences */
|
|
var LibraryPrefs = mod_baseMVC.SessionStorageModel.extend({
|
|
defaults : {
|
|
with_deleted : false,
|
|
sort_order : 'asc',
|
|
sort_by : 'name',
|
|
library_page_size : 20,
|
|
folder_page_size : 15
|
|
}
|
|
});
|
|
|
|
// ============================================================================
|
|
// Main controller of Galaxy Library
|
|
var GalaxyLibrary = Backbone.View.extend({
|
|
|
|
libraryToolbarView: null,
|
|
libraryListView: null,
|
|
library_router: null,
|
|
libraryView: null,
|
|
folderToolbarView: null,
|
|
folderListView: null,
|
|
datasetView: null,
|
|
|
|
initialize : function(){
|
|
Galaxy.libraries = this;
|
|
|
|
this.preferences = new LibraryPrefs( { id: 'global-lib-prefs' } );
|
|
|
|
this.library_router = new LibraryRouter();
|
|
|
|
this.library_router.on( 'route:libraries', function() {
|
|
Galaxy.libraries.libraryToolbarView = new mod_librarytoolbar_view.LibraryToolbarView();
|
|
Galaxy.libraries.libraryListView = new mod_librarylist_view.LibraryListView();
|
|
});
|
|
|
|
this.library_router.on('route:libraries_page', function( show_page ) {
|
|
if ( Galaxy.libraries.libraryToolbarView === null ){
|
|
Galaxy.libraries.libraryToolbarView = new mod_librarytoolbar_view.LibraryToolbarView();
|
|
Galaxy.libraries.libraryListView = new mod_librarylist_view.LibraryListView( { show_page: show_page } );
|
|
} else {
|
|
Galaxy.libraries.libraryListView.render( { show_page: show_page } )
|
|
}
|
|
});
|
|
|
|
this.library_router.on( 'route:folder_content', function( id ) {
|
|
if (Galaxy.libraries.folderToolbarView){
|
|
Galaxy.libraries.folderToolbarView.$el.unbind( 'click' );
|
|
}
|
|
Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( { id: id } );
|
|
Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: id } );
|
|
});
|
|
|
|
this.library_router.on( 'route:folder_page', function( id, show_page ) {
|
|
if ( Galaxy.libraries.folderToolbarView === null ){
|
|
Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( {id: id} );
|
|
Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: id, show_page: show_page } );
|
|
} else {
|
|
Galaxy.libraries.folderListView.render( { id: id, show_page: parseInt( show_page ) } )
|
|
}
|
|
});
|
|
|
|
this.library_router.on( 'route:download', function( folder_id, format ) {
|
|
if ( $( '#folder_list_body' ).find( ':checked' ).length === 0 ) {
|
|
mod_toastr.info( 'You must select at least one dataset to download' );
|
|
Galaxy.libraries.library_router.navigate( 'folders/' + folder_id, { trigger: true, replace: true } );
|
|
} else {
|
|
Galaxy.libraries.folderToolbarView.download( folder_id, format );
|
|
Galaxy.libraries.library_router.navigate( 'folders/' + folder_id, { trigger: false, replace: true } );
|
|
}
|
|
});
|
|
|
|
this.library_router.on( 'route:dataset_detail', function(folder_id, dataset_id){
|
|
if (Galaxy.libraries.datasetView){
|
|
Galaxy.libraries.datasetView.$el.unbind('click');
|
|
}
|
|
Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id});
|
|
});
|
|
|
|
this.library_router.on( 'route:dataset_version', function(folder_id, dataset_id, ldda_id){
|
|
if (Galaxy.libraries.datasetView){
|
|
Galaxy.libraries.datasetView.$el.unbind('click');
|
|
}
|
|
Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id, ldda_id: ldda_id, show_version: true});
|
|
});
|
|
|
|
this.library_router.on( 'route:dataset_permissions', function(folder_id, dataset_id){
|
|
if (Galaxy.libraries.datasetView){
|
|
Galaxy.libraries.datasetView.$el.unbind('click');
|
|
}
|
|
Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id, show_permissions: true});
|
|
});
|
|
|
|
this.library_router.on( 'route:library_permissions', function(library_id){
|
|
if (Galaxy.libraries.libraryView){
|
|
Galaxy.libraries.libraryView.$el.unbind('click');
|
|
}
|
|
Galaxy.libraries.libraryView = new mod_library_library_view.LibraryView({id: library_id, show_permissions: true});
|
|
});
|
|
|
|
this.library_router.on( 'route:folder_permissions', function(folder_id){
|
|
if (Galaxy.libraries.folderView){
|
|
Galaxy.libraries.folderView.$el.unbind('click');
|
|
}
|
|
Galaxy.libraries.folderView = new mod_library_folder_view.FolderView({id: folder_id, show_permissions: true});
|
|
});
|
|
|
|
this.library_router.on( 'route:import_datasets', function( folder_id, source ){
|
|
if ( Galaxy.libraries.folderToolbarView && Galaxy.libraries.folderListView ){
|
|
Galaxy.libraries.folderToolbarView.showImportModal( { source:source } );
|
|
} else {
|
|
Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( { id: folder_id } );
|
|
Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: folder_id } );
|
|
Galaxy.libraries.folderToolbarView.showImportModal( { source: source } );
|
|
}
|
|
});
|
|
|
|
Backbone.history.start({pushState: false});
|
|
}
|
|
});
|
|
|
|
return {
|
|
GalaxyApp: GalaxyLibrary
|
|
};
|
|
|
|
});
|