UI, collection creators: attempt to unify validity/error handling between list and pair creators

This commit is contained in:
Carl Eberhard
2015-04-16 12:33:54 -04:00
parent b2c7344f8f
commit a92a719fe5
8 changed files with 111 additions and 59 deletions
@@ -62,10 +62,10 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin
var view = this,
parentWidth = this.$el.parent().width();
this.$el.animate({ 'margin-right' : parentWidth }, 'fast', function(){
view.destroy();
view.trigger( 'discard', {
source : view
});
view.destroy();
});
},
@@ -147,7 +147,10 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
elementViewClass : DatasetCollectionElementView,
/** the class this creator will create and save */
collectionClass : HDCA.HistoryListDatasetCollection,
className : 'list-collection-creator collection-creator flex-row-container',
className : 'list-collection-creator collection-creator flex-row-container',
/** minimum number of valid elements to start with in order to build a collection of this type */
minElements : 1,
defaultAttributes : {
//TODO: remove - use new collectionClass().save()
@@ -284,10 +287,13 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
// ------------------------------------------------------------------------ rendering
// templates : ListCollectionCreator.templates,
/** render the entire interface */
render : function( speed, callback ){
//this.debug( '-- _render' );
if( this.workingElements.length < this.minElements ){
return this._renderInvalid( speed, callback );
}
this.$el.empty().html( this.templates.main() );
this._renderHeader( speed );
this._renderMiddle( speed );
@@ -298,6 +304,21 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
return this;
},
/** render a simplified interface aimed at telling the user why they can't move forward */
_renderInvalid : function( speed, callback ){
//this.debug( '-- _render' );
this.$el.empty().html( this.templates.invalidInitial({
problems: this.invalidElements,
elements: this.workingElements,
}));
if( typeof this.oncancel === 'function' ){
this.$( '.cancel-create.btn' ).show();
}
this.trigger( 'rendered', this );
return this;
},
/** render the header section */
_renderHeader : function( speed, callback ){
var $header = this.$( '.header' ).empty().html( this.templates.header() )
@@ -350,6 +371,17 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
}
},
_disableNameAndCreate : function( disable ){
disable = !_.isUndefined( disable )? disable : true;
if( disable ){
this.$( '.collection-name' ).prop( 'disabled', true );
this.$( '.create-collection' ).toggleClass( 'disabled', true );
// } else {
// this.$( '.collection-name' ).prop( 'disabled', false );
// this.$( '.create-collection' ).removeClass( 'disable' );
}
},
// ------------------------------------------------------------------------ rendering elements
/** conv. to the main list display DOM */
$list : function(){
@@ -369,17 +401,18 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
_renderList : function( speed, callback ){
//this.debug( '-- _renderList' );
var creator = this,
$tmp = jQuery( '<div/>' );
$tmp = jQuery( '<div/>' ),
$list = creator.$list();
_.each( this.elementViews, function( view ){
view.destroy();
creator.removeElementView( view );
});
if( !this.workingElements.length ){
this._renderNoValidElements();
return;
}
// if( !this.workingElements.length ){
// this._renderNoValidElements();
// return;
// }
creator.workingElements.forEach( function( element ){
var elementView = creator._createElementView( element );
@@ -387,8 +420,14 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
});
creator._renderClearSelected();
creator.$list().empty().append( $tmp.children() );
$list.empty().append( $tmp.children() );
_.invoke( creator.elementViews, 'render' );
if( $list.height() > $list.css( 'max-height' ) ){
$list.css( 'border-width', '1px 0px 1px 0px' );
} else {
$list.css( 'border-width', '0px' );
}
},
/** create an element view, cache in elementViews, set up listeners, and return */
@@ -442,13 +481,15 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
/** render a message in the list that no elements remain to create a collection */
_renderNoElementsLeft : function(){
this._disableNameAndCreate( true );
this.$( '.collection-elements' ).append( this.templates.noElementsLeft() );
},
/** render a message in the list that no valid elements were found to create a collection */
_renderNoValidElements : function(){
this.$( '.collection-elements' ).append( this.templates.noValidElements() );
},
// /** render a message in the list that no valid elements were found to create a collection */
// _renderNoValidElements : function(){
// this._disableNameAndCreate( true );
// this.$( '.collection-elements' ).append( this.templates.noValidElements() );
// },
// ------------------------------------------------------------------------ API
/** convert element into JSON compatible with the collections API */
@@ -874,7 +915,7 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
/** shown in list when all elements are discarded */
invalidElements : _.template([
_l( 'The following selections could not be included due to problems' ),
_l( 'The following selections could not be included due to problems:' ),
'<ul><% _.each( problems, function( problem ){ %>',
'<li><b><%= problem.element.name %></b>: <%= problem.text %></li>',
'<% }); %></ul>'
@@ -882,22 +923,47 @@ var ListCollectionCreator = Backbone.View.extend( BASE_MVC.LoggableMixin ).exten
/** shown in list when all elements are discarded */
noElementsLeft : _.template([
'<li class="no-elements-left-message empty-message">',
_l( 'No elements left' ), '<br />',
_l( 'Would you like to ' ),
'<a class="reset" href="javascript:void(0)">', _l( 'start over' ), '</a>?',
'<li class="no-elements-left-message">',
_l( 'No elements left! ' ),
_l( 'Would you like to ' ), '<a class="reset" href="javascript:void(0)">', _l( 'start over' ), '</a>?',
'</li>'
].join('')),
/** shown in list when no valid elements were found to begin with */
noValidElements : _.template([
'<li class="no-valid-elements-message empty-message">',
_l( 'No valid elements!' ), '<br />',
_l( 'You may need to ' ),
'<a class="cancel-create" href="javascript:void(0)">', _l( 'cancel' ), '</a> ',
'and reselect new elements',
'</li>'
].join(''))
/** a simplified page communicating what went wrong and why the user needs to reselect something else */
invalidInitial : _.template([
'<div class="header flex-row no-flex">',
'<div class="alert alert-warning" style="display: block">',
'<span class="alert-message">',
'<% if( _.size( problems ) ){ %>',
_l( 'The following selections could not be included due to problems' ), ':',
'<ul><% _.each( problems, function( problem ){ %>',
'<li><b><%= problem.element.name %></b>: <%= problem.text %></li>',
'<% }); %></ul>',
'<% } else if( _.size( elements ) < 1 ){ %>',
_l( 'No datasets were selected' ), '.',
'<% } %>',
'</span>',
'</div>',
'</div>',
'<div class="middle flex-row flex-row-container">',
'<div class="collection-elements scroll-container flex-row">',
'<li class="no-valid-elements-message empty-message">',
_l( 'At least one element is needed for the collection' ), '. ',
_l( 'You may need to ' ),
'<a class="cancel-create" href="javascript:void(0)">', _l( 'cancel' ), '</a> ',
_l( 'and reselect new elements' ), '.',
'</li>',
'</div>',
'</div>',
'<div class="footer flex-row no-flex">',
'<div class="actions clear vertically-spaced">',
'<div class="other-options pull-left">',
'<button class="cancel-create btn" tabindex="-1">', _l( 'Cancel' ), '</button>',
// _l( 'Create a different kind of collection' ),
'</div>',
'</div>',
'</div>'
].join('')),
},
// ------------------------------------------------------------------------ misc
@@ -917,11 +983,6 @@ var collectionCreatorModal = function _collectionCreatorModal( elements, options
modal = Galaxy.modal || ( new UI_MODAL.View() ),
creator;
//TODO: handle no elements here
if( !_.isArray( elements ) || !elements.length ){
return deferred.reject( 'No elements' );
}
options = _.defaults( options || {}, {
elements : elements,
oncancel : function(){
@@ -70,27 +70,12 @@ var PairCollectionCreator = _super.extend({
// when the user has painted his/her self into a corner during creation/use-of-the-creator
/** render the entire interface */
render : function( speed, callback ){
var elementsLength = this.workingElements.length;
if( elementsLength === 2 ){
if( this.workingElements.length === 2 ){
return _super.prototype.render.call( this, speed, callback );
}
return this._renderInvalid( speed, callback );
},
/** render a simplified interface aimed at telling the user why they can't move forward */
_renderInvalid : function( speed, callback ){
//this.debug( '-- _render' );
this.$el.empty().html( this.templates.invalidInitial({
problems: this.invalidElements,
elements: this.workingElements,
}));
if( typeof this.oncancel === 'function' ){
this.$( '.cancel-create.btn' ).show();
}
this.trigger( 'rendered', this );
return this;
},
// ------------------------------------------------------------------------ rendering elements
/** render forward/reverse */
_renderList : function( speed, callback ){
@@ -193,8 +178,10 @@ var PairCollectionCreator = _super.extend({
'<ul><% _.each( problems, function( problem ){ %>',
'<li><b><%= problem.element.name %></b>: <%= problem.text %></li>',
'<% }); %></ul>',
'<% } else if( _.size( elements ) < 2 ){ %>',
_l( 'Not enough datasets were selected' ), ': <%= _.size( elements ) %>',
'<% } else if( _.size( elements ) === 0 ){ %>',
_l( 'No datasets were selected' ), '.',
'<% } else if( _.size( elements ) === 1 ){ %>',
_l( 'Only one dataset was selected' ), ': <%= elements[0].name %>',
'<% } else if( _.size( elements ) > 2 ){ %>',
_l( 'Too many datasets were selected' ), ': <%= _.pluck( elements, "name" ) %>',
'<% } %>',
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
{"version":3,"file":"pair-collection-creator.js","sources":["../../../src/mvc/collection/pair-collection-creator.js"],"names":["define","LIST_CREATOR","HDCA","BASE_MVC","_l","createPairCollection","contents","elements","toJSON","promise","pairCollectionCreatorModal","creationFn","name","src","id","createHDCA","PairedDatasetCollectionElementView","Backbone","View","extend","LoggableMixin","tagName","className","initialize","attributes","this","element","identifier","render","$el","attr","html","template","_","join","destroy","off","remove","toString","_super","ListCollectionCreator","PairCollectionCreator","elementViewClass","collectionClass","HistoryPairDatasetCollection","_mangleDuplicateNames","speed","callback","elementsLength","workingElements","length","prototype","call","_renderInvalid","empty","templates","invalidInitial","problems","invalidElements","oncancel","$","show","trigger","_renderList","creator","$tmp","jQuery","$list","each","elementViews","view","removeElementView","append","_createForwardElementView","_createReverseElementView","children","invoke","_createElementView","options","elementView","push","swap","events","clone","click .swap","middle","helpContent","title","collectionCreatorModal"],"mappings":"AAAAA,QACI,yCACA,yBACA,eACA,sBACD,SAAUC,EAAcC,EAAMC,EAAUC,GA8O3C,QAASC,GAAsBC,GAC3B,GAAIC,GAAWD,EAASE,SACpBC,EAAUC,EAA4BH,GAClCI,WAAa,SAAUJ,EAAUK,GAK7B,MAJAL,KACMK,KAAM,UAAWC,IAAK,MAAOC,GAAIP,EAAS,GAAGO,KAC7CF,KAAM,UAAWC,IAAK,MAAOC,GAAIP,EAAS,GAAGO,KAE5CR,EAASS,WAAYR,EAAU,SAAUK,KAG5D,OAAOH,GA/OX,GAAIO,GAAqCC,SAASC,KAAKC,OAAQhB,EAASiB,eAAgBD,QAEpFE,QAAc,KACdC,UAAc,qBAEdC,WAAa,SAAUC,GACnBC,KAAKC,QAAUF,EAAWE,YAC1BD,KAAKE,WAAaH,EAAWG,YAGjCC,OAAS,WAIL,MAHAH,MAAKI,IACAC,KAAM,kBAAmBL,KAAKC,QAAQZ,IACtCiB,KAAMN,KAAKO,UAAWL,WAAYF,KAAKE,WAAYD,QAASD,KAAKC,WAC/DD,MAIXO,SAAWC,EAAED,UACT,oDACA,iDACFE,KAAK,KAGPC,QAAU,WACNV,KAAKW,MACLX,KAAKI,IAAIQ,UAIbC,SAAW,WACP,MAAO,oCAMXC,EAAStC,EAAauC,sBAItBC,EAAwBF,EAAOpB,QAG/BuB,iBAAmB1B,EAEnB2B,gBAAkBzC,EAAK0C,6BACvBtB,UAAY,gEAGZuB,sBAAwB,aAMxBjB,OAAS,SAAUkB,EAAOC,GACtB,GAAIC,GAAiBvB,KAAKwB,gBAAgBC,MAC1C,OAAuB,KAAnBF,EACOT,EAAOY,UAAUvB,OAAOwB,KAAM3B,KAAMqB,EAAOC,GAE/CtB,KAAK4B,eAAgBP,EAAOC,IAIvCM,eAAiB,WAUb,MARA5B,MAAKI,IAAIyB,QAAQvB,KAAMN,KAAK8B,UAAUC,gBAClCC,SAAUhC,KAAKiC,gBACfnD,SAAUkB,KAAKwB,mBAEU,kBAAlBxB,MAAKkC,UACZlC,KAAKmC,EAAG,sBAAuBC,OAEnCpC,KAAKqC,QAAS,WAAYrC,MACnBA,MAKXsC,YAAc,WAGV,GAAIC,GAAUvC,KACVwC,EAAOC,OAAQ,UACfC,EAAQH,EAAQG,OAGpBlC,GAAEmC,KAAM3C,KAAK4C,aAAc,SAAUC,GACjCA,EAAKnC,UACL6B,EAAQO,kBAAmBD,KAE/BL,EAAKO,OAAQR,EAAQS,4BAA4B5C,KACjDoC,EAAKO,OAAQR,EAAQU,4BAA4B7C,KACjDsC,EAAMb,QAAQkB,OAAQP,EAAKU,YAC3B1C,EAAE2C,OAAQZ,EAAQK,aAAc,WAIpCI,0BAA4B,WACxB,MAAOhD,MAAKoD,mBAAoBpD,KAAKwB,gBAAgB,IAAMtB,WAAY,aAI3E+C,0BAA4B,WACxB,MAAOjD,MAAKoD,mBAAoBpD,KAAKwB,gBAAgB,IAAMtB,WAAY,aAI3EkD,mBAAqB,SAAUnD,EAASoD,GACpC,GAAIC,GAAc,GAAItD,MAAKiB,iBAAkBT,EAAEd,OAAQ2D,GACnDpD,QAAUA,IAGd,OADAD,MAAK4C,aAAaW,KAAMD,GACjBA,GAIXE,KAAO,WACHxD,KAAKwB,iBACDxB,KAAKwB,gBAAgB,GACrBxB,KAAKwB,gBAAgB,IAEzBxB,KAAKsC,eAGTmB,OAASjD,EAAEd,OAAQc,EAAEkD,MAAO5C,EAAOY,UAAU+B,SACzCE,cAAgB,SAQpB7B,UAAYtB,EAAEd,OAAQc,EAAEkD,MAAO5C,EAAOY,UAAUI,YAE5C8B,OAASpD,EAAED,UACP,6CACI,qDAAsD5B,EAAI,qCAAuC,KAC7FA,EAAI,QACR,OACJ,SACA,8DACA,UACF8B,KAAK,KAGPoD,YAAcrD,EAAED,UACZ,MAAO5B,GACH,oGACA,8FACA,oFACA,+EACF8B,KAAM,KAAO,OACf,OACI,OAAQ9B,GACJ,6FACA,oCACF8B,KAAM,KAAO,QACf,OAAQ9B,GACJ,wFACF8B,KAAM,KAAO,QACnB,cACA,MAAO9B,GACH,4FACA,gEACF8B,KAAM,KAAO,QACjBA,KAAK,KAGPsB,eAAiBvB,EAAED,UACf,wCACI,2DACI,+BACI,kCACI5B,EAAI,kEACJ,mDACI,mEACJ,iBACJ,6CACIA,EAAI,qCAAuC,8BAC/C,6CACIA,EAAI,mCAAqC,uCAC7C,UACJ,UACJ,SACJ,SACA,mDACI,8DACI,kDACIA,EAAI,uDAAyD,KAC7DA,EAAI,oBACJ,sDAAuDA,EAAI,UAAY,QACvEA,EAAI,6BAA+B,IACvC,QACJ,SACJ,SACA,wCACI,gDACI,wCACI,mDAAoDA,EAAI,UAAY,YAExE,SACJ,SACJ,UACF8B,KAAK,OAKXI,SAAW,WAAY,MAAO,2BAM9B5B,EAA6B,SAAsCH,EAAUuE,GAG7E,MAFAA,GAAUA,MACVA,EAAQS,MAAQnF,EAAI,+CACbH,EAAauF,uBAAwBjF,EAAUuE,EAASrC,GAuB/D,QACIA,sBAA8BA,EAC9B/B,2BAA8BA,EAC9BL,qBAA8BA"}
{"version":3,"file":"pair-collection-creator.js","sources":["../../../src/mvc/collection/pair-collection-creator.js"],"names":["define","LIST_CREATOR","HDCA","BASE_MVC","_l","createPairCollection","contents","elements","toJSON","promise","pairCollectionCreatorModal","creationFn","name","src","id","createHDCA","PairedDatasetCollectionElementView","Backbone","View","extend","LoggableMixin","tagName","className","initialize","attributes","this","element","identifier","render","$el","attr","html","template","_","join","destroy","off","remove","toString","_super","ListCollectionCreator","PairCollectionCreator","elementViewClass","collectionClass","HistoryPairDatasetCollection","_mangleDuplicateNames","speed","callback","workingElements","length","prototype","call","_renderInvalid","_renderList","creator","$tmp","jQuery","$list","each","elementViews","view","removeElementView","append","_createForwardElementView","_createReverseElementView","empty","children","invoke","_createElementView","options","elementView","push","swap","events","clone","click .swap","templates","middle","helpContent","invalidInitial","title","collectionCreatorModal"],"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
+4 -3
View File
@@ -2266,7 +2266,7 @@ pre.peek table,pre.peek th,pre.peek tr,pre.peek td{font-family:Monaco,Menlo,Cons
.collection-creator.list-collection-creator .footer{margin-top:8px}
.collection-creator.list-collection-creator .main-help{cursor:pointer}
.collection-creator.list-collection-creator .collection-elements-controls{margin-bottom:8px}.collection-creator.list-collection-creator .collection-elements-controls .clear-selected{float:right !important;float:right;display:none}
.collection-creator.list-collection-creator .collection-elements{max-height:400px;border:1px solid lightgrey;border-width:1px 0px 1px 0px;overflow-y:auto;overflow-x:hidden}
.collection-creator.list-collection-creator .collection-elements{max-height:400px;border:0px solid lightgrey;overflow-y:auto;overflow-x:hidden}
.collection-creator.list-collection-creator .collection-element{height:32px;margin:2px 4px 0px 4px;opacity:1.0;border:1px solid lightgrey;border-radius:3px;padding:0 8px 0 8px;line-height:28px;cursor:pointer;overflow:hidden}.collection-creator.list-collection-creator .collection-element:last-of-type{margin-bottom:2px}
.collection-creator.list-collection-creator .collection-element:hover{border-color:black}
.collection-creator.list-collection-creator .collection-element.selected{border-color:black;background:black;color:white}
@@ -2277,15 +2277,16 @@ pre.peek table,pre.peek th,pre.peek tr,pre.peek td{font-family:Monaco,Menlo,Cons
.collection-creator.list-collection-creator .element-drop-placeholder{width:60px;height:3px;margin:2px 0px 0px 6px;background:black}.collection-creator.list-collection-creator .element-drop-placeholder:before{float:left;font-size:120%;margin:-9px 0 0 -6px;font-family:FontAwesome;content:'\f0da'}
.collection-creator.list-collection-creator .element-drop-placeholder:last-child{margin-bottom:4px}
.collection-creator.list-collection-creator .empty-message{margin:8px;color:grey;font-style:italic;text-align:center}
.collection-creator.list-collection-creator .no-elements-left-message{text-align:left}
.collection-creator.pair-collection-creator .footer{margin-top:8px}
.collection-creator.pair-collection-creator .main-help{cursor:pointer}
.collection-creator.pair-collection-creator .collection-elements-controls{margin-bottom:8px}.collection-creator.pair-collection-creator .collection-elements-controls .clear-selected{float:right !important;float:right;display:none}
.collection-creator.pair-collection-creator .collection-elements{max-height:400px;overflow-y:auto;overflow-x:hidden}
.collection-creator.pair-collection-creator .collection-elements{max-height:400px;border:0px solid lightgrey;overflow-y:auto;overflow-x:hidden}
.collection-creator.pair-collection-creator .collection-element{height:32px;margin:2px 4px 0px 4px;opacity:1.0;border:1px solid lightgrey;border-radius:3px;padding:0 8px 0 8px;line-height:28px;cursor:pointer;overflow:hidden}.collection-creator.pair-collection-creator .collection-element:last-of-type{margin-bottom:2px}
.collection-creator.pair-collection-creator .collection-element:hover{border-color:black}
.collection-creator.pair-collection-creator .collection-element button{margin-top:3px}
.collection-creator.pair-collection-creator .collection-element .identifier:after{content:':';margin-right:6px}
.collection-creator.pair-collection-creator .collection-element .name:hover{text-decoration:auto}
.collection-creator.pair-collection-creator .collection-element .name:hover{text-decoration:none}
.collection-creator.pair-collection-creator .empty-message{margin:8px;color:grey;font-style:italic;text-align:center}
.collection-creator.list-of-pairs-collection-creator .column-headers{margin-bottom:8px}
.search-input .search-query{width:100%;padding-right:24px}
@@ -459,8 +459,7 @@
}
.collection-elements {
max-height: 400px;
border: 1px solid lightgrey;
border-width: 1px 0px 1px 0px;
border: 0px solid lightgrey;
overflow-y: auto;
overflow-x: hidden;
}
@@ -530,6 +529,9 @@
font-style: italic;
text-align: center;
}
.no-elements-left-message {
text-align: left;
}
}
// ======================================================================== pair
@@ -552,6 +554,7 @@
}
.collection-elements {
max-height: 400px;
border: 0px solid lightgrey;
overflow-y: auto;
overflow-x: hidden;
}