Merge branch 'release_15.10' into dev

This commit is contained in:
Nate Coraor
2015-11-30 14:13:26 -05:00
8 changed files with 111 additions and 36 deletions
@@ -66,7 +66,7 @@ var FolderRowView = Backbone.View.extend({
var dataset_id = $(event.target).closest('tr')[0].id;
var dataset = Galaxy.libraries.folderListView.collection.get(dataset_id);
dataset.url = dataset.urlRoot + dataset.id + '?undelete=true';
dataset.destroy({
dataset.destroy({
success : function(model, response){
Galaxy.libraries.folderListView.collection.remove(dataset_id);
var updated_dataset = new mod_library_model.Item(response);
@@ -76,7 +76,7 @@ var FolderRowView = Backbone.View.extend({
var folder_id = that.model.get('folder_id');
window.location='#folders/' + folder_id + '/datasets/' + that.id;
}});
},
},
error : function(model, response){
if (typeof response.responseJSON !== "undefined"){
mod_toastr.error('Dataset was not undeleted. ' + response.responseJSON.err_msg);
@@ -103,7 +103,7 @@ var FolderRowView = Backbone.View.extend({
Galaxy.libraries.folderListView.collection.add(updated_folder);
Galaxy.libraries.folderListView.collection.sortByNameAsc();
mod_toastr.success('Folder undeleted.');
},
},
error : function(model, response){
if (typeof response.responseJSON !== "undefined"){
mod_toastr.error('Folder was not undeleted. ' + response.responseJSON.err_msg);
@@ -157,7 +157,7 @@ var FolderRowView = Backbone.View.extend({
tmpl_array.push('</tr>');
return _.template(tmpl_array.join(''));
},
},
templateRowDeletedFile: function(){
tmpl_array = [];
@@ -180,7 +180,7 @@ var FolderRowView = Backbone.View.extend({
templateRowDeletedFolder: function(){
tmpl_array = [];
tmpl_array.push('<tr class="active folder_row light library-row" id="<%- content_item.id %>">');
tmpl_array.push('<tr class="active deleted_folder light library-row" id="<%- content_item.id %>">');
tmpl_array.push(' <td>');
tmpl_array.push(' <span title="Folder" class="fa fa-folder-o"></span>');
tmpl_array.push(' </td>');
@@ -196,7 +196,7 @@ var FolderRowView = Backbone.View.extend({
return _.template(tmpl_array.join(''));
}
});
return {
@@ -63,7 +63,7 @@ var FolderToolbarView = Backbone.View.extend({
' to set your data to the format you think it should be.' +
' You can also upload compressed files, which will automatically be decompressed.'
},
// genomes
list_genomes : [],
@@ -99,7 +99,7 @@ var FolderToolbarView = Backbone.View.extend({
renderPaginator: function( options ){
this.options = _.extend( this.options, options );
var paginator_template = this.templatePaginator();
this.$el.find( '#folder_paginator' ).html( paginator_template({
this.$el.find( '#folder_paginator' ).html( paginator_template({
id: this.options.id,
show_page: parseInt( this.options.show_page ),
page_count: parseInt( this.options.page_count ),
@@ -163,7 +163,7 @@ var FolderToolbarView = Backbone.View.extend({
var folder = new mod_library_model.FolderAsModel();
url_items = Backbone.history.fragment.split('/');
current_folder_id = url_items[url_items.length-1];
folder.url = folder.urlRoot + '/' + current_folder_id ;
folder.url = folder.urlRoot + current_folder_id ;
folder.save(folderDetails, {
success: function (folder) {
@@ -281,7 +281,7 @@ var FolderToolbarView = Backbone.View.extend({
}
this.initChainCallControl( { length: datasets_to_import.length, action: 'to_history', history_name: history_name } );
// set the used history as current so user will see the last one
// set the used history as current so user will see the last one
// that he imported into in the history panel on the 'analysis' page
jQuery.getJSON( galaxy_config.root + 'history/set_as_current?id=' + history_id );
this.chainCallImportingIntoHistory( datasets_to_import, history_name );
@@ -360,7 +360,7 @@ var FolderToolbarView = Backbone.View.extend({
Galaxy.libraries.library_router.back();
}
});
// user should always have a history, even anonymous user
if (self.histories.models.length > 0){
self.fetchAndDisplayHistoryContents(self.histories.models[0].id);
@@ -393,7 +393,7 @@ var FolderToolbarView = Backbone.View.extend({
// TODO: should not trigger routes outside of the router
Galaxy.libraries.library_router.navigate( 'folders/' + that.id, { trigger: true } );
}
});
});
this.renderSelectBoxes();
},
@@ -439,7 +439,7 @@ var FolderToolbarView = Backbone.View.extend({
renderSelectBoxes: function(){
// This won't work properly unlesss we already have the data fetched.
// See this.fetchExtAndGenomes()
// TODO switch to common resources:
// TODO switch to common resources:
// https://trello.com/c/dIUE9YPl/1933-ui-common-resources-and-data-into-galaxy-object
var that = this;
this.select_genome = new mod_select.View( {
@@ -469,7 +469,7 @@ var FolderToolbarView = Backbone.View.extend({
title : 'Please select folders or files',
body : template_modal({}),
buttons : {
'Import' : function() {
'Import' : function() {
that.importFromJstreePath( that, options );
},
'Close' : function() {
@@ -503,7 +503,7 @@ var FolderToolbarView = Backbone.View.extend({
that.renderJstree( options );
}
}
);
);
},
/**
@@ -518,9 +518,9 @@ var FolderToolbarView = Backbone.View.extend({
var target = options.source || 'userdir';
var disabled_jstree_element = this.options.disabled_jstree_element;
this.jstree = new mod_library_model.Jstree();
this.jstree.url = this.jstree.urlRoot +
'?target=' + target +
'&format=jstree' +
this.jstree.url = this.jstree.urlRoot +
'?target=' + target +
'&format=jstree' +
'&disable=' + disabled_jstree_element;
this.jstree.fetch({
success: function(model, response){
@@ -583,8 +583,8 @@ var FolderToolbarView = Backbone.View.extend({
};
this.initChainCallControl( { length: valid_paths.length, action: 'adding_datasets' } );
this.chainCallImportingFolders( { paths: valid_paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
preserve_dirs: preserve_dirs,
link_data: link_data,
source: 'admin_path',
file_type: file_type,
dbkey: dbkey } );
@@ -626,9 +626,9 @@ var FolderToolbarView = Backbone.View.extend({
/**
* Take the selected items from the jstree, create a request queue
* and send them one by one to the server for importing into
* the current folder.
*
* and send them one by one to the server for importing into
* the current folder.
*
* jstree.js has to be loaded before
* @see renderJstree
*/
@@ -653,8 +653,8 @@ var FolderToolbarView = Backbone.View.extend({
if ( selection_type === 'folder' ){
var full_source = options.source + '_folder';
this.chainCallImportingFolders( { paths: paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
preserve_dirs: preserve_dirs,
link_data: link_data,
source: full_source,
file_type: file_type,
dbkey: dbkey } );
@@ -767,7 +767,7 @@ var FolderToolbarView = Backbone.View.extend({
}
return true;
}
var promise = $.when( $.post( ( window.galaxy_config ? galaxy_config.root : '/' ) + 'api/libraries/datasets?encoded_folder_id=' + that.id +
var promise = $.when( $.post( ( window.galaxy_config ? galaxy_config.root : '/' ) + 'api/libraries/datasets?encoded_folder_id=' + that.id +
'&source=' + options.source +
'&path=' + popped_item +
'&file_type=' + options.file_type +
@@ -789,7 +789,7 @@ var FolderToolbarView = Backbone.View.extend({
* @param {array} paths paths relative to Galaxy root folder
* @param {boolean} preserve_dirs indicates whether to preserve folder structure
* @param {boolean} link_data copy files to Galaxy or link instead
* @param {str} source string representing what type of folder
* @param {str} source string representing what type of folder
* is the source of import
*/
chainCallImportingFolders: function( options ){
@@ -825,7 +825,7 @@ var FolderToolbarView = Backbone.View.extend({
},
/**
* Take the array of hdas and create a request for each.
* Take the array of hdas and create a request for each.
* Call them in chain and update progress bar in between each.
* @param {array} hdas_set array of empty hda objects
*/
@@ -859,7 +859,7 @@ var FolderToolbarView = Backbone.View.extend({
},
/**
* Take the array of lddas, create request for each and
* Take the array of lddas, create request for each and
* call them in chain. Update progress bar in between each.
* @param {array} lddas_set array of lddas to delete
*/
@@ -953,7 +953,7 @@ var FolderToolbarView = Backbone.View.extend({
var items_total = dataset_ids.length + folder_ids.length
this.progressStep = 100 / items_total;
this.progress = 0;
// prepare the dataset items to be added
var items_to_delete = [];
for (var i = dataset_ids.length - 1; i >= 0; i--) {
@@ -1017,7 +1017,7 @@ var FolderToolbarView = Backbone.View.extend({
case "importdir":
this.importFilesFromGalaxyFolderModal( { source: 'importdir' } );
break;
case "path":
case "path":
this.importFilesFromPathModal();
break;
case "userdir":
@@ -1215,7 +1215,7 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');
tmpl_array.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');
tmpl_array.push('<div style="margin-bottom:1em;">');
tmpl_array.push('<label class="radio-inline">');
tmpl_array.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');
+3
View File
@@ -427,6 +427,8 @@
<datatype extension="vtkbinary" type="galaxy.datatypes.constructive_solid_geometry:VtkBinary" display_in_upload="true" />
<!-- Metagenomic Datatype -->
<datatype extension="biom1" type="galaxy.datatypes.text:Biom1" display_in_upload="True" subclass="True" mimetype="application/json" />
<!-- Strand-specific Coordinate Count Datatype used by the Center for Eukaryotic Gene Regulation labs at Penn State -->
<datatype extension="scidx" type="galaxy.datatypes.interval:ScIdx" display_in_upload="true" />
</registration>
<sniffers>
<!--
@@ -440,6 +442,7 @@
<sniffer type="galaxy.datatypes.constructive_solid_geometry:PlyBinary"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:VtkAscii"/>
<sniffer type="galaxy.datatypes.constructive_solid_geometry:VtkBinary"/>
<sniffer type="galaxy.datatypes.interval:ScIdx"/>
<sniffer type="galaxy.datatypes.tabular:Vcf"/>
<sniffer type="galaxy.datatypes.binary:TwoBit"/>
<sniffer type="galaxy.datatypes.binary:GeminiSQLite"/>
+72
View File
@@ -1482,6 +1482,78 @@ class ChromatinInteractions( Interval ):
return False
class ScIdx(Tabular):
"""
ScIdx files are 1-based and consist of strand-specific coordinate counts.
They always have 5 columns, and the first row is the column labels:
'chrom', 'index', 'forward', 'reverse', 'value'.
Each line following the first consists of data:
chromosome name (type str), peak index (type int), Forward strand peak
count (type int), Reverse strand peak count (type int) and value (type int).
The value of the 5th 'value' column is the sum of the forward and reverse
peak count values.
"""
file_ext = "scidx"
MetadataElement(name="columns", default=0, desc="Number of columns", readonly=True, visible=False)
MetadataElement(name="column_types", default=[], param=metadata.ColumnTypesParameter, desc="Column types", readonly=True, visible=False, no_value=[])
def __init__(self, **kwd):
"""
Initialize scidx datatype.
"""
Tabular.__init__(self, **kwd)
# Don't set column names since the first
# line of the dataset displays them.
self.column_names = ['chrom', 'index', 'forward', 'reverse', 'value']
def sniff(self, filename):
"""
Checks for 'scidx-ness.'
"""
try:
count = 0
fh = open(filename, "r")
while True:
line = fh.readline()
line = line.strip()
if not line:
# EOF
if count > 1:
# We need at least the column labels and a data line.
return True
return False
# Skip first line.
if count > 0:
items = line.split('\t')
if len(items) != 5:
return False
index = items[1]
if not index.isdigit():
return False
forward = items[2]
if not forward.isdigit():
return False
reverse = items[3]
if not reverse.isdigit():
return False
value = items[4]
if not value.isdigit():
return False
if int(forward) + int(reverse) != int(value):
return False
if count == 100:
return True
count += 1
if count < 100 and count > 0:
return True
except:
return False
finally:
fh.close()
return False
if __name__ == '__main__':
import doctest
doctest.testmod(sys.modules[__name__])
@@ -1 +1 @@
{"version":3,"file":"library-folderrow-view.js","sources":["../../../src/mvc/library/library-folderrow-view.js"],"names":["define","mod_masthead","mod_utils","mod_toastr","mod_library_model","mod_library_dataset_view","FolderRowView","Backbone","View","extend","lastSelectedHistory","events","click .undelete_dataset_btn","click .undelete_folder_btn","options","type","initialize","folder_item","this","model","render","template","get","templateRowDeletedFolder","templateRowFolder","templateRowDeletedFile","templateRowFile","console","error","setElement","content_item","$el","show","showDatasetDetails","Galaxy","libraries","datasetView","LibraryDatasetView","id","undeleteDataset","event","$","hide","that","dataset_id","target","closest","dataset","folderListView","collection","url","urlRoot","destroy","success","response","remove","updated_dataset","Item","add","sortByNameAsc","onclick","folder_id","window","location","responseJSON","err_msg","undeleteFolder","folder","updated_folder","FolderAsModel","tmpl_array","push","_","join"],"mappings":"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"}
{"version":3,"file":"library-folderrow-view.js","sources":["../../../src/mvc/library/library-folderrow-view.js"],"names":["define","mod_masthead","mod_utils","mod_toastr","mod_library_model","mod_library_dataset_view","FolderRowView","Backbone","View","extend","lastSelectedHistory","events","click .undelete_dataset_btn","click .undelete_folder_btn","options","type","initialize","folder_item","this","model","render","template","get","templateRowDeletedFolder","templateRowFolder","templateRowDeletedFile","templateRowFile","console","error","setElement","content_item","$el","show","showDatasetDetails","Galaxy","libraries","datasetView","LibraryDatasetView","id","undeleteDataset","event","$","hide","that","dataset_id","target","closest","dataset","folderListView","collection","url","urlRoot","destroy","success","response","remove","updated_dataset","Item","add","sortByNameAsc","onclick","folder_id","window","location","responseJSON","err_msg","undeleteFolder","folder","updated_folder","FolderAsModel","tmpl_array","push","_","join"],"mappings":"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"}
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