diff --git a/client/galaxy/scripts/mvc/collection/list-collection-creator.js b/client/galaxy/scripts/mvc/collection/list-collection-creator.js
index b72cb7d3511..33c69e46743 100644
--- a/client/galaxy/scripts/mvc/collection/list-collection-creator.js
+++ b/client/galaxy/scripts/mvc/collection/list-collection-creator.js
@@ -15,7 +15,6 @@ define([
* (things that implement collection-model:DatasetCollectionElementMixin)
*/
var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({
-
//TODO: use proper class (DatasetDCE or NestedDCDCE (or the union of both))
tagName : 'li',
className : 'collection-element',
@@ -44,6 +43,7 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
'',
].join('')),
+ /** select this element and pub */
select : function( toggle ){
this.$el.toggleClass( 'selected', toggle );
this.trigger( 'select', {
@@ -52,12 +52,15 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
});
},
+ /** animate the removal of this element and pub */
discard : function(){
- var element = this,
+ var view = this,
parentWidth = this.$el.parent().width();
this.$el.animate({ 'margin-right' : parentWidth }, 'fast', function(){
- element.trigger( 'discard', {
- source : element
+ view.off();
+ view.$el.remove();
+ view.trigger( 'discard', {
+ source : view
});
});
},
@@ -73,12 +76,13 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
'drop' : '_sendToParent'
},
+ /** select when the li is clicked */
_click : function( ev ){
ev.stopPropagation();
this.select( ev );
},
- /** rename a pair when the pair name is clicked */
+ /** rename a pair when the name is clicked */
_clickName : function( ev ){
ev.stopPropagation();
ev.preventDefault();
@@ -90,6 +94,7 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
//TODO: cancelling with ESC leads to closure of the creator...
},
+ /** discard when the discard button is clicked */
_clickDiscard : function( ev ){
ev.stopPropagation();
this.discard();
@@ -105,7 +110,7 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
this.$el.parent().trigger( 'collection-element.dragstart', [ this ] );
},
- /** dragging pairs for re-ordering */
+ /** dragging for re-ordering */
_dragend : function( ev ){
this.$el.removeClass( 'dragging' );
this.$el.parent().trigger( 'collection-element.dragend', [ this ] );
@@ -132,49 +137,58 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
collectionClass : HDCA.HistoryListDatasetCollection,
className : 'list-collection-creator collection-creator flex-row-container',
+ defaultAttributes : {
+//TODO: remove - use new collectionClass().save()
+ /** takes elements and creates the proper collection - returns a promise */
+ creationFn : function(){ throw new TypeError( 'no creation fn for creator' ); },
+ /** fn to call when the collection is created (scoped to this) */
+ oncreate : function(){},
+ /** fn to call when the cancel button is clicked (scoped to this) - if falsy, no btn is displayed */
+ oncancel : function(){},
+ /** distance from list edge to begin autoscrolling list */
+ autoscrollDist : 24,
+ /** Color passed to hoverhighlight */
+ highlightClr : 'rgba( 64, 255, 255, 1.0 )'
+ },
+
/** set up initial options, instance vars, behaviors */
initialize : function( attributes ){
this.metric( 'ListCollectionCreator.initialize', attributes );
-
- attributes = _.defaults( attributes, {
- elements : [],
- creationFn : function(){ throw new TypeError( 'no creation fn for creator' ); }
+ var creator = this;
+ _.each( this.defaultAttributes, function( value, key ){
+ value = attributes[ key ] || value;
+ creator[ key ] = value;
});
/** unordered, original list - cache to allow reversal */
- this.initialElements = attributes.elements;
- /** a list of invalid elements and the reasons they aren't valid */
- this.invalidElements = [];
- /** data for list in progress */
- this.workingElements = [];
- /** views for workingElements */
- this.elementViews = [];
+ creator.initialElements = attributes.elements || [];
-//TODO: remove - use new collectionClass().save()
- /** takes elements and creates the proper collection - returns a promise */
- this.creationFn = attributes.creationFn;
- /** fn to call when the collection is created (scoped to this) */
- this.oncreate = attributes.oncreate;
- /** fn to call when the cancel button is clicked (scoped to this) - if falsy, no btn is displayed */
- this.oncancel = attributes.oncancel;
+ this._instanceSetUp();
+ this._elementsSetUp();
+ this._setUpBehaviors();
+ },
- /** fn to call when the cancel button is clicked (scoped to this) - if falsy, no btn is displayed */
- this.autoscrollDist = attributes.autoscrollDist || 24;
+ /** set up instance vars */
+ _instanceSetUp : function(){
/** Ids of elements that have been selected by the user - to preserve over renders */
this.selectedIds = {};
/** DOM elements currently being dragged */
this.$dragging = null;
/** Used for blocking UI events during ajax/operations (don't post twice) */
this.blocking = false;
-
- this._setUpBehaviors();
- this._elementsSetUp();
},
// ------------------------------------------------------------------------ process raw list
/** set up main data */
_elementsSetUp : function(){
//this.debug( '-- _dataSetUp' );
+ /** a list of invalid elements and the reasons they aren't valid */
+ this.invalidElements = [];
+//TODO: handle fundamental problem of syncing DOM, views, and list here
+ /** data for list in progress */
+ this.workingElements = [];
+ /** views for workingElements */
+ this.elementViews = [];
// copy initial list, sort, add ids if needed
this.workingElements = this.initialElements.slice( 0 );
@@ -213,24 +227,24 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
return this.workingElements;
},
- /** separate working list into valid and invalid elements for this collection */
+ /** describe what is wrong with a particular element if anything */
_isElementInvalid : function( element ){
+ if( element.history_content_type !== 'dataset' ){
+ return _l( "is not a dataset" );
+ }
if( element.state !== STATES.OK ){
if( _.contains( STATES.NOT_READY_STATES, element.state ) ){
return _l( "hasn't finished running yet" );
}
return _l( "has errored, is paused, or is not accessible" );
}
- if( element.history_content_type !== 'dataset' ){
- return _l( "is not a dataset" );
- }
if( element.deleted || element.purged ){
return _l( "has been deleted or purged" );
}
return null;
},
- /** sort a list of datasets */
+ /** mangle duplicate names using a mac-like '(counter)' addition to any duplicates */
_mangleDuplicateNames : function(){
var SAFETY = 900,
counter = 1,
@@ -265,6 +279,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
this._renderMiddle( speed );
this._renderFooter( speed );
this._addPluginComponents();
+ this.$( '.collection-name' ).focus();
this.trigger( 'rendered', this );
return this;
},
@@ -298,10 +313,23 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
/** add any jQuery/bootstrap/custom plugins to elements rendered */
_addPluginComponents : function(){
- this.$( '.help-content i' ).hoverhighlight( '.collection-creator', 'rgba( 64, 255, 255, 1.0 )' );
+ this.$( '.help-content i' ).hoverhighlight( '.collection-creator', this.highlightClr );
},
- /** add (or clear if clear is truthy) a validation warning to what */
+ /** build and show an alert describing any elements that could not be included due to problems */
+ _invalidElementsAlert : function(){
+ var message = _l( 'The following selections could not be included due to problems' ) + ':';
+ message += '
';
+ this._showAlert( message, 'alert-warning' );
+ },
+
+ /** add (or clear if clear is truthy) a validation warning to the DOM element described in what */
_validationWarning : function( what, clear ){
var VALIDATION_CLASS = 'validation-warning';
if( what === 'name' ){
@@ -317,25 +345,12 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
},
// ------------------------------------------------------------------------ rendering elements
- /** */
+ /** conv. to the main list display DOM */
$list : function(){
return this.$( '.collection-elements' );
},
- /** */
- _invalidElementsAlert : function(){
- var message = _l( 'The following selections could not be included due to problems' ) + ':';
- message += '
';
- this._showAlert( message, 'alert-warning' );
- },
-
- /** */
+ /** show or hide the clear selected control based on the num of selected elements */
_renderClearSelected : function(){
if( _.size( this.selectedIds ) ){
this.$( '.collection-elements-controls > .clear-selected' ).show();
@@ -344,11 +359,17 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
}
},
- /** */
+ /** render the elements in order (or a warning if no elements found) */
_renderList : function( speed, callback ){
+ if( !this.workingElements.length ){
+ this._renderNoValidElements();
+ return;
+ }
+
//this.debug( '-- _renderList' );
var creator = this,
$tmp = jQuery( '' );
+
creator.workingElements.forEach( function( element ){
var elementView = creator._createElementView( element );
$tmp.append( elementView.$el );
@@ -359,7 +380,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
_.invoke( creator.elementViews, 'render' );
},
- /** */
+ /** create an element view, cache in elementViews, set up listeners, and return */
_createElementView : function( element ){
var elementView = new DatasetCollectionElementView({
//TODO: use non-generic class or not all
@@ -372,6 +393,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
return elementView;
},
+ /** listen to any element events */
_listenToElementView : function( view ){
var creator = this;
creator.listenTo( view, {
@@ -390,29 +412,26 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
});
},
- /** */
+ /** add a new element view based on the json in element */
addElementView : function( element ){
- // workingElements is sorted, add element in appropo index
+//TODO: workingElements is sorted, add element in appropo index
// add element, sort elements, find element index
- var view = this._createElementView( element );
- return view;
+ // var view = this._createElementView( element );
+ // return view;
},
- /** */
+ /** stop listening to view and remove from caches */
removeElementView : function( view ){
- view.$el.remove();
-
delete this.selectedIds[ view.element.id ];
this._renderClearSelected();
this.elementViews = _.without( this.elementViews, view );
this.stopListening( view );
- view.off();
},
+ /** render a message in the list that no elements remain to create a collection */
_renderNoElementsLeft : function(){
- var $message = $( '' ),
- $startOverLink = $( '' );
+ var $message = $( '' );
$message.html([
_l( 'No elements left' ), ' ', _l( 'Would you like to ' ),
'', _l( 'start over' ), '?'
@@ -420,6 +439,11 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
this.$( '.collection-elements' ).append( $message );
},
+ /** render a message in the list that no valid elements were found to create a collection */
+ _renderNoValidElements : function(){
+ this.$( '.collection-elements' ).append( ListCollectionCreator.templates.noValidElements() );
+ },
+
// ------------------------------------------------------------------------ API
/** convert element into JSON compatible with the collections API */
_elementToJSON : function( element ){
@@ -428,9 +452,18 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
},
/** create the collection via the API
- * @returns {jQuery.xhr Object} the jquery ajax request
+ * @returns {jQuery.xhr Object} the jquery ajax request
*/
createList : function( name ){
+ if( !this.workingElements.length ){
+ var message = _l( 'No valid elements for final list' ) + '. ';
+ message += '' + _l( 'Cancel' ) + ' ';
+ message += _l( 'or' );
+ message += ' ' + _l( 'start over' ) + '.';
+ this._showAlert( message );
+ return;
+ }
+
var creator = this,
elements = this.workingElements.map( function( element ){
return creator._elementToJSON( element );
@@ -463,7 +496,6 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
this.on( 'error', this._errorHandler );
this.once( 'rendered', function(){
- this.$( '.collection-name' ).focus();
this.trigger( 'rendered:initial', this );
});
@@ -562,7 +594,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
this.$( '.more-help' ).toggle();
},
- /** show an alert on the top of the interface containing message (alertClass is bootstrap's alert-*)*/
+ /** show an alert on the top of the interface containing message (alertClass is bootstrap's alert-*) */
_showAlert : function( message, alertClass ){
alertClass = alertClass || 'alert-danger';
this.$( '.main-help' ).hide();
@@ -576,29 +608,28 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
},
// ........................................................................ elements
+ /** reset all data to the initial state */
reset : function(){
- this.selectedIds = {};
- this.$dragging = null;
- this.blocking = false;
+ this._instanceSetUp();
this._elementsSetUp();
this.render();
},
- /** deselect all pairs */
+ /** deselect all elements */
clearSelectedElements : function( ev ){
this.$( '.collection-elements .collection-element' ).removeClass( 'selected' );
this.$( '.collection-elements-controls > .clear-selected' ).hide();
},
//_dragenterElements : function( ev ){
- // this.debug( '_dragenterElements:', ev );
+ // //this.debug( '_dragenterElements:', ev );
//},
- _dragleaveElements : function( ev ){
- //this.debug( '_dragleaveElements:', ev );
//TODO: if selected are dragged out of the list area - remove the placeholder - cuz it won't work anyway
- },
+ // _dragleaveElements : function( ev ){
+ // //this.debug( '_dragleaveElements:', ev );
+ // },
- /** track the mouse drag over the paired list adding a placeholder to show where the drop would occur */
+ /** track the mouse drag over the list adding a placeholder to show where the drop would occur */
_dragoverElements : function( ev ){
//this.debug( '_dragoverElements:', ev );
ev.preventDefault();
@@ -607,7 +638,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
this._checkForAutoscroll( $list, ev.originalEvent.clientY );
var $nearest = this._getNearestElement( ev.originalEvent.clientY );
-//TODO: no need to re-create - move instead
+ //TODO: no need to re-create - move instead
this.$( '.element-drop-placeholder' ).remove();
var $placeholder = $( '' );
if( !$nearest.size() ){
@@ -642,7 +673,6 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
top = $li.offset().top,
halfHeight = Math.floor( $li.outerHeight() / 2 ) + WIGGLE;
if( top + halfHeight > y && top - halfHeight < y ){
- //this.debug( y, top + halfHeight, top - halfHeight )
return $li;
}
}
@@ -656,15 +686,15 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
ev.preventDefault();
ev.dataTransfer.dropEffect = 'move';
- // remove the placeholder if any and insert before the nearest element or after the last.
+ // insert before the nearest element or after the last.
var $nearest = this._getNearestElement( ev.clientY );
if( $nearest.size() ){
this.$dragging.insertBefore( $nearest );
} else {
- // no nearest before - insert after last element (unpair button)
+ // no nearest before - insert after last element
this.$dragging.insertAfter( this.$( '.collection-elements .collection-element' ).last() );
}
- // resync the creator's list of paired based on the new DOM order
+ // resync the creator's list based on the new DOM order
this._syncOrderToDom();
return false;
},
@@ -761,7 +791,7 @@ ListCollectionCreator.templates = ListCollectionCreator.templates || {
'',
].join('')),
- /** the middle: unpaired, divider, and paired */
+ /** the middle: element list */
middle : _.template([
'
',
- // contains two flex rows (rows that fill available space) and a divider btwn
'
',
'
'
].join('')),
@@ -841,11 +870,33 @@ ListCollectionCreator.templates = ListCollectionCreator.templates || {
'Once your collection is complete, enter a name and ',
'click "Create list".'
].join( '' )), ''
+ ].join('')),
+
+ /** shown in list when all elements are discarded */
+ noElementsLeft : _.template([
+ '
',
+ _l( 'No elements left' ), ' ',
+ _l( 'Would you like to ' ),
+ '', _l( 'start over' ), '?',
+ '
'
+ ].join('')),
+
+ /** shown in list when no valid elements were found to begin with */
+ noValidElements : _.template([
+ '
',
+ _l( 'No valid elements!' ), ' ',
+ _l( 'You may need to ' ),
+ '', _l( 'cancel' ), ' ',
+ 'and reselect new elements',
+ '
'
].join(''))
};
//=============================================================================
+/** Create a modal and load its body with the given CreatorClass creator type
+ * @returns {Deferred} resolved when creator has built a collection.
+ */
var collectionCreatorModal = function _collectionCreatorModal( elements, options, CreatorClass ){
var deferred = jQuery.Deferred(),
@@ -853,6 +904,9 @@ var collectionCreatorModal = function _collectionCreatorModal( elements, options
creator;
//TODO: handle no elements here
+ if( !_.isArray( elements ) || !elements.length ){
+ return deferred.reject( 'No elements' );
+ }
options = _.defaults( options || {}, {
elements : elements,
@@ -868,7 +922,7 @@ var collectionCreatorModal = function _collectionCreatorModal( elements, options
creator = new CreatorClass( options );
modal.show({
- title : _l( 'Create a collection from a list of datasets' ),
+ title : options.title || _l( 'Create a collection' ),
body : creator.$el,
width : '80%',
height : 'min-content',
@@ -881,24 +935,23 @@ var collectionCreatorModal = function _collectionCreatorModal( elements, options
return deferred;
};
+/** List collection flavor of collectionCreatorModal. */
var listCollectionCreatorModal = function _listCollectionCreatorModal( elements, options ){
+ options = options || {};
+ options.title = _l( 'Create a collection from a list of datasets' );
return collectionCreatorModal( elements, options, ListCollectionCreator );
};
//==============================================================================
-function createListCollection( collection ){
- var elements = collection.toJSON(),
+/** Use a modal to create a list collection, then add it to the given history contents.
+ * @returns {Deferred} resolved when the collection is added to the history.
+ */
+function createListCollection( contents ){
+ var elements = contents.toJSON(),
promise = listCollectionCreatorModal( elements, {
creationFn : function( elements, name ){
- // var list = this.workingElements.map( function( element ){
- // return element.name;
- // });
- // alert( list.join( '\n' ) );
- // return jQuery.Deferred().reject();
-
elements = elements.map( function( element ){
- //TODO: Handle duplicate names.
return {
id : element.id,
name : element.name,
@@ -906,23 +959,18 @@ function createListCollection( collection ){
src : ( element.history_content_type === 'dataset'? 'hda' : 'hdca' )
};
});
- return collection.createHDCA( elements, 'list', name );
+ return contents.createHDCA( elements, 'list', name );
}
});
- promise.done( function( response ){
- console.debug( 'createListCollection, done:', response );
- });
- promise.fail( function( response ){
- console.error( 'createListCollection, fail:', arguments );
- });
return promise;
}
//==============================================================================
return {
ListCollectionCreator : ListCollectionCreator,
- listCollectionCreatorModal : listCollectionCreatorModal,
+ collectionCreatorModal : collectionCreatorModal,
+ listCollectionCreatorModal : listCollectionCreatorModal,
createListCollection : createListCollection
};
});
diff --git a/static/maps/mvc/collection/list-collection-creator.js.map b/static/maps/mvc/collection/list-collection-creator.js.map
index 9e4d4768523..371cd166a20 100644
--- a/static/maps/mvc/collection/list-collection-creator.js.map
+++ b/static/maps/mvc/collection/list-collection-creator.js.map
@@ -1 +1 @@
-{"version":3,"file":"list-collection-creator.js","sources":["../../../src/mvc/collection/list-collection-creator.js"],"names":["define","HDCA","STATES","BASE_MVC","UI_MODAL","naturalSort","_l","createListCollection","collection","elements","toJSON","promise","listCollectionCreatorModal","creationFn","name","map","element","id","src","history_content_type","createHDCA","done","response","console","debug","fail","error","arguments","DatasetCollectionElementView","Backbone","View","extend","LoggableMixin","tagName","className","initialize","attributes","this","selected","render","$el","attr","html","template","addClass","_","join","select","toggle","toggleClass","trigger","source","hasClass","discard","parentWidth","parent","width","animate","margin-right","events","click","click .name","click .discard","dragstart","dragend","dragover","drop","_click","ev","stopPropagation","_clickName","preventDefault","prompt","_clickDiscard","_dragstart","originalEvent","dataTransfer","effectAllowed","setData","JSON","stringify","_dragend","removeClass","_sendToParent","toString","ListCollectionCreator","collectionClass","HistoryListDatasetCollection","metric","defaults","TypeError","initialElements","invalidElements","workingElements","elementViews","oncreate","oncancel","autoscrollDist","selectedIds","$dragging","blocking","_setUpBehaviors","_elementsSetUp","slice","_ensureElementIds","_validateElements","_mangleDuplicateNames","forEach","hasOwnProperty","uniqueId","creator","filter","problem","_isElementInvalid","push","text","state","OK","contains","NOT_READY_STATES","deleted","purged","SAFETY","counter","existingNames","currName","Error","_sortElements","sort","a","b","speed","empty","templates","main","_renderHeader","_renderMiddle","_renderFooter","_addPluginComponents","$header","$","header","find","prepend","helpContent","length","_invalidElementsAlert","$middle","middle","_renderList","$footer","footer","show","hoverhighlight","_validationWarning","what","clear","VALIDATION_CLASS","add","focus","$list","message","_showAlert","_renderClearSelected","size","hide","$tmp","jQuery","elementView","_createElementView","append","children","invoke","has","_listenToElementView","view","listenTo","data","addElementView","removeElementView","remove","without","stopListening","off","_renderNoElementsLeft","$message","_elementToJSON","createList","always","xhr","status","call","on","_errorHandler","once","content","readyState","responseJSON","click .more-help","click .less-help","click .main-help","click .header .alert button","click .reset","click .clear-selected","click .collection-elements","dragover .collection-elements","drop .collection-elements","collection-element.dragstart .collection-elements","collection-element.dragend .collection-elements","change .collection-name","keydown .collection-name","click .cancel-create","click .create-collection","_clickMoreHelp","_clickLessHelp","_toggleHelp","alertClass","_hideAlert","reset","clearSelectedElements","_dragleaveElements","_dragoverElements","_checkForAutoscroll","clientY","$nearest","_getNearestElement","$placeholder","before","$element","y","AUTOSCROLL_SPEED","offset","scrollTop","upperDist","top","lowerDist","outerHeight","WIGGLE","lis","toArray","i","$li","halfHeight","Math","floor","_dropElements","dropEffect","insertBefore","insertAfter","last","_syncOrderToDom","newElements","each","findWhere","_elementDragstart","_elementDragend","_changeName","_getName","_nameCheckForEnter","keyCode","_clickCreate","escape","val","collectionCreatorModal","options","CreatorClass","deferred","Deferred","modal","Galaxy","reject","resolve","title","body","height","closing_events","window","_collectionCreator"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"list-collection-creator.js","sources":["../../../src/mvc/collection/list-collection-creator.js"],"names":["define","HDCA","STATES","BASE_MVC","UI_MODAL","naturalSort","_l","createListCollection","contents","elements","toJSON","promise","listCollectionCreatorModal","creationFn","name","map","element","id","src","history_content_type","createHDCA","DatasetCollectionElementView","Backbone","View","extend","LoggableMixin","tagName","className","initialize","attributes","this","selected","render","$el","attr","html","template","addClass","_","join","select","toggle","toggleClass","trigger","source","hasClass","discard","view","parentWidth","parent","width","animate","margin-right","off","remove","events","click","click .name","click .discard","dragstart","dragend","dragover","drop","_click","ev","stopPropagation","_clickName","preventDefault","response","prompt","_clickDiscard","_dragstart","originalEvent","dataTransfer","effectAllowed","setData","JSON","stringify","_dragend","removeClass","_sendToParent","toString","ListCollectionCreator","collectionClass","HistoryListDatasetCollection","defaultAttributes","TypeError","oncreate","oncancel","autoscrollDist","highlightClr","metric","creator","each","value","key","initialElements","_instanceSetUp","_elementsSetUp","_setUpBehaviors","selectedIds","$dragging","blocking","invalidElements","workingElements","elementViews","slice","_ensureElementIds","_validateElements","_mangleDuplicateNames","forEach","hasOwnProperty","uniqueId","filter","problem","_isElementInvalid","push","text","state","OK","contains","NOT_READY_STATES","deleted","purged","SAFETY","counter","existingNames","currName","Error","_sortElements","sort","a","b","speed","empty","templates","main","_renderHeader","_renderMiddle","_renderFooter","_addPluginComponents","$","focus","$header","header","find","prepend","helpContent","length","_invalidElementsAlert","$middle","middle","_renderList","$footer","footer","show","hoverhighlight","message","_showAlert","_validationWarning","what","clear","VALIDATION_CLASS","add","$list","_renderClearSelected","size","hide","_renderNoValidElements","$tmp","jQuery","elementView","_createElementView","append","children","invoke","has","_listenToElementView","listenTo","data","addElementView","removeElementView","without","stopListening","_renderNoElementsLeft","$message","noValidElements","_elementToJSON","createList","always","fail","xhr","status","done","call","on","_errorHandler","once","error","content","readyState","responseJSON","click .more-help","click .less-help","click .main-help","click .header .alert button","click .reset","click .clear-selected","click .collection-elements","dragover .collection-elements","drop .collection-elements","collection-element.dragstart .collection-elements","collection-element.dragend .collection-elements","change .collection-name","keydown .collection-name","click .cancel-create","click .create-collection","_clickMoreHelp","_clickLessHelp","_toggleHelp","alertClass","_hideAlert","reset","clearSelectedElements","_dragoverElements","_checkForAutoscroll","clientY","$nearest","_getNearestElement","$placeholder","before","$element","y","AUTOSCROLL_SPEED","offset","scrollTop","upperDist","top","lowerDist","outerHeight","WIGGLE","lis","toArray","i","$li","halfHeight","Math","floor","_dropElements","dropEffect","insertBefore","insertAfter","last","_syncOrderToDom","newElements","findWhere","console","_elementDragstart","_elementDragend","_changeName","_getName","_nameCheckForEnter","keyCode","_clickCreate","escape","val","noElementsLeft","collectionCreatorModal","options","CreatorClass","deferred","Deferred","modal","Galaxy","isArray","defaults","reject","resolve","title","body","height","closing_events","window","_collectionCreator"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/scripts/mvc/collection/list-collection-creator.js b/static/scripts/mvc/collection/list-collection-creator.js
index 62c99d714eb..6e9f7cf1c90 100644
--- a/static/scripts/mvc/collection/list-collection-creator.js
+++ b/static/scripts/mvc/collection/list-collection-creator.js
@@ -1,2 +1,2 @@
-define(["mvc/history/hdca-model","mvc/dataset/states","mvc/base-mvc","mvc/ui/ui-modal","utils/natural-sort","utils/localization","ui/hoverhighlight"],function(a,b,c,d,e,f){function g(a){var b=a.toJSON(),c=k(b,{creationFn:function(b,c){return b=b.map(function(a){return{id:a.id,name:a.name,src:"dataset"===a.history_content_type?"hda":"hdca"}}),a.createHDCA(b,"list",c)}});return c.done(function(a){console.debug("createListCollection, done:",a)}),c.fail(function(){console.error("createListCollection, fail:",arguments)}),c}var h=Backbone.View.extend(c.LoggableMixin).extend({tagName:"li",className:"collection-element",initialize:function(a){this.element=a.element||{},this.selected=a.selected||!1},render:function(){return this.$el.attr("data-element-id",this.element.id).attr("draggable",!0).html(this.template({element:this.element})),this.selected&&this.$el.addClass("selected"),this},template:_.template(['<%= element.name %>','"].join("")),select:function(a){this.$el.toggleClass("selected",a),this.trigger("select",{source:this,selected:this.$el.hasClass("selected")})},discard:function(){var a=this,b=this.$el.parent().width();this.$el.animate({"margin-right":b},"fast",function(){a.trigger("discard",{source:a})})},events:{click:"_click","click .name":"_clickName","click .discard":"_clickDiscard",dragstart:"_dragstart",dragend:"_dragend",dragover:"_sendToParent",drop:"_sendToParent"},_click:function(a){a.stopPropagation(),this.select(a)},_clickName:function(a){a.stopPropagation(),a.preventDefault();var b=prompt(f("Enter a new name for the element")+":",this.element.name);b&&(this.element.name=b,this.render())},_clickDiscard:function(a){a.stopPropagation(),this.discard()},_dragstart:function(a){a.originalEvent&&(a=a.originalEvent),a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",JSON.stringify(this.element)),this.$el.addClass("dragging"),this.$el.parent().trigger("collection-element.dragstart",[this])},_dragend:function(){this.$el.removeClass("dragging"),this.$el.parent().trigger("collection-element.dragend",[this])},_sendToParent:function(a){this.$el.parent().trigger(a)},toString:function(){return"DatasetCollectionElementView()"}}),i=Backbone.View.extend(c.LoggableMixin).extend({collectionClass:a.HistoryListDatasetCollection,className:"list-collection-creator collection-creator flex-row-container",initialize:function(a){this.metric("ListCollectionCreator.initialize",a),a=_.defaults(a,{elements:[],creationFn:function(){throw new TypeError("no creation fn for creator")}}),this.initialElements=a.elements,this.invalidElements=[],this.workingElements=[],this.elementViews=[],this.creationFn=a.creationFn,this.oncreate=a.oncreate,this.oncancel=a.oncancel,this.autoscrollDist=a.autoscrollDist||24,this.selectedIds={},this.$dragging=null,this.blocking=!1,this._setUpBehaviors(),this._elementsSetUp()},_elementsSetUp:function(){this.workingElements=this.initialElements.slice(0),this._ensureElementIds(),this._validateElements(),this._mangleDuplicateNames()},_ensureElementIds:function(){return this.workingElements.forEach(function(a){a.hasOwnProperty("id")||(a.id=_.uniqueId())}),this.workingElements},_validateElements:function(){var a=this;return a.invalidElements=[],this.workingElements=this.workingElements.filter(function(b){var c=a._isElementInvalid(b);return c&&a.invalidElements.push({element:b,text:c}),!c}),this.workingElements},_isElementInvalid:function(a){return a.state!==b.OK?f(_.contains(b.NOT_READY_STATES,a.state)?"hasn't finished running yet":"has errored, is paused, or is not accessible"):"dataset"!==a.history_content_type?f("is not a dataset"):a.deleted||a.purged?f("has been deleted or purged"):null},_mangleDuplicateNames:function(){var a=900,b=1,c={};this.workingElements.forEach(function(d){for(var e=d.name;c.hasOwnProperty(e);)if(e=d.name+" ("+b+")",b+=1,b>=a)throw new Error("Safety hit in while loop - thats impressive");d.name=e,c[d.name]=!0})},_sortElements:function(){return this.workingElements.sort(function(a,b){return e(a.name,b.name)}),this.workingElements},render:function(a){return this.$el.empty().html(i.templates.main()),this._renderHeader(a),this._renderMiddle(a),this._renderFooter(a),this._addPluginComponents(),this.trigger("rendered",this),this},_renderHeader:function(){var a=this.$(".header").empty().html(i.templates.header()).find(".help-content").prepend($(i.templates.helpContent()));return this.invalidElements.length&&this._invalidElementsAlert(),a},_renderMiddle:function(a){var b=this.$(".middle").empty().html(i.templates.middle());return this._renderList(a),b},_renderFooter:function(){var a=this.$(".footer").empty().html(i.templates.footer());return"function"==typeof this.oncancel&&this.$(".cancel-create.btn").show(),a},_addPluginComponents:function(){this.$(".help-content i").hoverhighlight(".collection-creator","rgba( 64, 255, 255, 1.0 )")},_validationWarning:function(a,b){var c="validation-warning";"name"===a&&(a=this.$(".collection-name").add(this.$(".collection-name-prompt")),this.$(".collection-name").focus().select()),b?(a=a||this.$("."+c),a.removeClass(c)):a.addClass(c)},$list:function(){return this.$(".collection-elements")},_invalidElementsAlert:function(){var a=f("The following selections could not be included due to problems")+":";a+="
",this._showAlert(a,"alert-warning")},_renderClearSelected:function(){_.size(this.selectedIds)?this.$(".collection-elements-controls > .clear-selected").show():this.$(".collection-elements-controls > .clear-selected").hide()},_renderList:function(){var a=this,b=jQuery("");a.workingElements.forEach(function(c){var d=a._createElementView(c);b.append(d.$el)}),a._renderClearSelected(),a.$list().empty().append(b.children()),_.invoke(a.elementViews,"render")},_createElementView:function(a){var b=new h({element:a,selected:_.has(this.selectedIds,a.id)});return this.elementViews.push(b),this._listenToElementView(b),b},_listenToElementView:function(a){var b=this;b.listenTo(a,{select:function(a){var c=a.source.element;a.selected?b.selectedIds[c.id]=!0:delete b.selectedIds[c.id],b.trigger("elements:select",a)},discard:function(a){b.trigger("elements:discard",a)}})},addElementView:function(a){var b=this._createElementView(a);return b},removeElementView:function(a){a.$el.remove(),delete this.selectedIds[a.element.id],this._renderClearSelected(),this.elementViews=_.without(this.elementViews,a),this.stopListening(a),a.off()},_renderNoElementsLeft:function(){{var a=$('');$('')}a.html([f("No elements left")," ",f("Would you like to "),'',f("start over"),"?"].join("")),this.$(".collection-elements").append(a)},_elementToJSON:function(a){return a},createList:function(a){var b=this,c=this.workingElements.map(function(a){return b._elementToJSON(a)});return b.blocking=!0,b.creationFn(c,a).always(function(){b.blocking=!1}).fail(function(a,c){b.trigger("error",{xhr:a,status:c,message:f("An error occurred while creating this collection")})}).done(function(a,c,d){b.trigger("collection:created",a,c,d),b.metric("collection:created",a),"function"==typeof b.oncreate&&b.oncreate.call(this,a,c,d)})},_setUpBehaviors:function(){return this.on("error",this._errorHandler),this.once("rendered",function(){this.$(".collection-name").focus(),this.trigger("rendered:initial",this)}),this.on("elements:select",function(){this._renderClearSelected()}),this.on("elements:discard",function(a){var b=a.source.element;this.removeElementView(a.source),this.workingElements=_.without(this.workingElements,b),this.workingElements.length||this._renderNoElementsLeft()}),this},_errorHandler:function(a){this.error(a);var b=this;if(content=a.message||f("An error occurred"),a.xhr){var c=a.xhr,d=a.message;content+=0===c.readyState&&0===c.status?": "+f("Galaxy could not be reached and may be updating.")+f(" Try again in a few minutes."):c.responseJSON?":