Skip to content

Commit

Permalink
Merge pull request #1562 from martenson/datalibs_better_foldermanagement
Browse files Browse the repository at this point in the history
datalibs: introduce folder management; fix various glitches; refactor
  • Loading branch information
blankenberg committed Feb 1, 2016
2 parents 962fdc0 + cb10106 commit dacb919
Show file tree
Hide file tree
Showing 17 changed files with 282 additions and 147 deletions.
21 changes: 7 additions & 14 deletions client/galaxy/scripts/mvc/library/library-folderlist-view.js
Expand Up @@ -178,11 +178,6 @@ var FolderListView = Backbone.View.extend({
var fetched_metadata = this.folderContainer.attributes.metadata;
fetched_metadata.contains_file_or_folder = typeof this.collection.findWhere({type: 'file'}) !== 'undefined' || typeof this.collection.findWhere({type: 'folder'}) !== 'undefined';
Galaxy.libraries.folderToolbarView.configureElements(fetched_metadata);
$('.library-row').hover(function() {
$(this).find('.show_on_hover').show();
}, function () {
$(this).find('.show_on_hover').hide();
});
},

/**
Expand All @@ -207,26 +202,22 @@ var FolderListView = Backbone.View.extend({
// model.set('readable_size', this.size_to_string(model.get('file_size')));
//}
model.set('folder_id', this.id);
var rowView = new mod_library_folderrow_view.FolderRowView(model);
var rowView = new mod_library_folderrow_view.FolderRowView({model: model});

// save new rowView to cache
this.rowViews[model.get('id')] = rowView;

this.$el.find('#first_folder_item').after(rowView.el);

$('.library-row').hover(function() {
$(this).find('.show_on_hover').show();
}, function () {
$(this).find('.show_on_hover').hide();
});
},

/**
* Remove the view of the given model from the DOM.
* @param {Item or FolderAsModel} model of the view that will be removed
*/
removeOne: function( model ){
this.$el.find( '#' + model.id ).remove();
this.$el.find('tr').filter(function(){
return $(this).data('id') && $(this).data('id') === model.id;
}).remove();
},

/**
Expand Down Expand Up @@ -310,8 +301,8 @@ var FolderListView = Backbone.View.extend({
$row = $(event.target.parentElement.parentElement);
source = 'input';
} else if (event.target.localName === 'td') {
checkbox = $("#" + event.target.parentElement.id).find(':checkbox')[0];
$row = $(event.target.parentElement);
checkbox = $row.find(':checkbox')[0];
source = 'td';
}
if (checkbox.checked){
Expand Down Expand Up @@ -374,6 +365,7 @@ var FolderListView = Backbone.View.extend({
tmpl_array.push(' <th class="button_heading"></th>');
tmpl_array.push(' <th style="text-align: center; width: 20px; " title="Check to select all datasets"><input id="select-all-checkboxes" style="margin: 0;" type="checkbox"></th>');
tmpl_array.push(' <th><a class="sort-folder-link" title="Click to reverse order" href="#">name</a> <span title="Sorted alphabetically" class="sort-icon fa fa-sort-alpha-<%- order %>"></span></th>');
tmpl_array.push(' <th style="width:25%;">description</th>');
tmpl_array.push(' <th style="width:5%;">data type</th>');
tmpl_array.push(' <th style="width:10%;">size</th>');
tmpl_array.push(' <th style="width:160px;">time updated (UTC)</th>');
Expand All @@ -388,6 +380,7 @@ var FolderListView = Backbone.View.extend({
tmpl_array.push(' <td></td>');
tmpl_array.push(' <td></td>');
tmpl_array.push(' <td></td>');
tmpl_array.push(' <td></td>');
tmpl_array.push(' </tr>');

tmpl_array.push(' </tbody>');
Expand Down
227 changes: 178 additions & 49 deletions client/galaxy/scripts/mvc/library/library-folderrow-view.js

Large diffs are not rendered by default.

37 changes: 21 additions & 16 deletions client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
Expand Up @@ -20,7 +20,7 @@ var FolderToolbarView = Backbone.View.extend({
'click #toolbtn_bulk_import' : 'modalBulkImport',
'click #include_deleted_datasets_chk' : 'checkIncludeDeleted',
'click #toolbtn_show_libinfo' : 'showLibInfo',
'click #toolbtn_bulk_delete' : 'deleteSelectedDatasets',
'click #toolbtn_bulk_delete' : 'deleteSelectedItems',
'click #page_size_prompt' : 'showPageSizePrompt'

},
Expand Down Expand Up @@ -252,10 +252,10 @@ var FolderToolbarView = Backbone.View.extend({
var dataset_ids = [];
var folder_ids = [];
$('#folder_table').find(':checked').each(function(){
if (this.parentElement.parentElement.id !== '' && this.parentElement.parentElement.classList.contains('dataset_row') ) {
dataset_ids.push(this.parentElement.parentElement.id);
} else if (this.parentElement.parentElement.id !== '' && this.parentElement.parentElement.classList.contains('folder_row') ) {
folder_ids.push(this.parentElement.parentElement.id);
if ($(this.parentElement.parentElement).data('id') !== '' && this.parentElement.parentElement.classList.contains('dataset_row') ) {
dataset_ids.push($(this.parentElement.parentElement).data('id'));
} else if ($(this.parentElement.parentElement).data('id') !== '' && this.parentElement.parentElement.classList.contains('folder_row') ) {
folder_ids.push($(this.parentElement.parentElement).data('id'));
}
});
// prepare the dataset objects to be imported
Expand Down Expand Up @@ -306,10 +306,10 @@ var FolderToolbarView = Backbone.View.extend({
var dataset_ids = [];
var folder_ids = [];
$( '#folder_table' ).find( ':checked' ).each( function(){
if ( this.parentElement.parentElement.id !== '' && this.parentElement.parentElement.classList.contains('dataset_row') ) {
dataset_ids.push( this.parentElement.parentElement.id );
} else if ( this.parentElement.parentElement.id !== '' && this.parentElement.parentElement.classList.contains('folder_row') ) {
folder_ids.push( this.parentElement.parentElement.id );
if ( $(this.parentElement.parentElement).data('id') !== '' && this.parentElement.parentElement.classList.contains('dataset_row') ) {
dataset_ids.push( $(this.parentElement.parentElement).data('id') );
} else if ( $(this.parentElement.parentElement).data('id') !== '' && this.parentElement.parentElement.classList.contains('folder_row') ) {
folder_ids.push( $(this.parentElement.parentElement).data('id') );
}
} );
var url = Galaxy.root + 'api/libraries/datasets/download/' + format;
Expand Down Expand Up @@ -868,6 +868,8 @@ var FolderToolbarView = Backbone.View.extend({
* @param {array} lddas_set array of lddas to delete
*/
chainCallDeletingItems: function( items_to_delete ){
console.log('chaincall');
console.log(items_to_delete);
var self = this;
this.deleted_items = new mod_library_model.Folder();
var popped_item = items_to_delete.pop();
Expand Down Expand Up @@ -898,6 +900,8 @@ var FolderToolbarView = Backbone.View.extend({
console.error('Unknown library item type found.');
console.error(item.type || item.model_class);
}
console.log('updated item')
console.log(updated_item);
Galaxy.libraries.folderListView.collection.add( updated_item );
}
self.chainCallDeletingItems( items_to_delete );
Expand All @@ -921,9 +925,9 @@ var FolderToolbarView = Backbone.View.extend({
},

/**
* Deletes the selected datasets. Atomic. One by one.
* Delete the selected items. Atomic. One by one.
*/
deleteSelectedDatasets: function(){
deleteSelectedItems: function(){
var checkedValues = $('#folder_table').find(':checked');
if(checkedValues.length === 0){
mod_toastr.info('You must select at least one dataset for deletion.');
Expand All @@ -945,11 +949,11 @@ var FolderToolbarView = Backbone.View.extend({
var dataset_ids = [];
var folder_ids = [];
checkedValues.each(function(){
if (this.parentElement.parentElement.id !== '') {
if (this.parentElement.parentElement.id.substring(0,1) == 'F'){
folder_ids.push(this.parentElement.parentElement.id);
if ($(this.parentElement.parentElement).data('id') !== '') {
if ($(this.parentElement.parentElement).data('id').substring(0,1) == 'F'){
folder_ids.push($(this.parentElement.parentElement).data('id'));
} else {
dataset_ids.push(this.parentElement.parentElement.id);
dataset_ids.push($(this.parentElement.parentElement).data('id'));
}
}
});
Expand All @@ -968,6 +972,7 @@ var FolderToolbarView = Backbone.View.extend({
var folder = new mod_library_model.FolderAsModel({id:folder_ids[i]});
items_to_delete.push(folder);
}
console.log(items_to_delete);

this.options.chain_call_control.total_number = items_total.length;
// call the recursive function to call ajax one after each other (request FIFO queue)
Expand Down Expand Up @@ -1104,7 +1109,7 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');
tmpl_array.push(' </ul>');
tmpl_array.push(' </div>');
tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');
tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected items deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');
tmpl_array.push(' <button data-id="<%- id %>" data-toggle="tooltip" data-placement="top" title="Show library information" id="toolbtn_show_libinfo" class="primary-button" style="margin-left: 0.5em;" type="button"><span class="fa fa-info-circle"></span> Library Info</button>');
tmpl_array.push(' <span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki"><a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank"><button class="primary-button" type="button"><span class="fa fa-question-circle"></span> Help</button></a></span>');
tmpl_array.push(' </div>');
Expand Down

0 comments on commit dacb919

Please sign in to comment.