mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #2305 from guerler/revise_select_000
Revise selection, options and drilldown wrappers, add tests
This commit is contained in:
@@ -105,7 +105,6 @@ define(['utils/utils',
|
||||
error_text : input_def.error_text || 'No options available',
|
||||
multiple : input_def.multiple,
|
||||
optional : input_def.optional,
|
||||
searchable : input_def.searchable,
|
||||
onchange : function() {
|
||||
self.app.trigger( 'change' );
|
||||
}
|
||||
@@ -126,6 +125,7 @@ define(['utils/utils',
|
||||
id : 'field-' + input_def.id,
|
||||
data : input_def.options,
|
||||
display : input_def.display,
|
||||
optional : input_def.optional,
|
||||
onchange : function() {
|
||||
self.app.trigger( 'change' );
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ define(['utils/utils',
|
||||
var field = this._addRow( input_def.test_param );
|
||||
|
||||
// set onchange event for test parameter
|
||||
field.options.onchange = function(value) {
|
||||
field.model && field.model.set( 'onchange', function( value ) {
|
||||
var selectedCase = self.app.data.matchCase(input_def, value);
|
||||
for (var i in input_def.cases) {
|
||||
var case_def = input_def.cases[i];
|
||||
@@ -93,7 +93,7 @@ define(['utils/utils',
|
||||
}
|
||||
}
|
||||
self.app.trigger('change');
|
||||
};
|
||||
});
|
||||
|
||||
// add conditional sub sections
|
||||
for (var i in input_def.cases) {
|
||||
|
||||
@@ -1,134 +1,91 @@
|
||||
// dependencies
|
||||
define(['utils/utils', 'mvc/ui/ui-options'], function(Utils, Options) {
|
||||
/** This class creates/wraps a drill down element. */
|
||||
define([ 'utils/utils', 'mvc/ui/ui-options' ], function( Utils, Options ) {
|
||||
|
||||
/**
|
||||
* This class creates/wraps a drill down element.
|
||||
*/
|
||||
var View = Options.BaseIcons.extend({
|
||||
// initialize
|
||||
initialize: function(options) {
|
||||
initialize: function( options ) {
|
||||
options.type = options.display || 'checkbox';
|
||||
options.multiple = (options.display == 'checkbox');
|
||||
Options.BaseIcons.prototype.initialize.call(this, options);
|
||||
this.initial = true;
|
||||
options.multiple = ( options.type == 'checkbox' );
|
||||
Options.BaseIcons.prototype.initialize.call( this, options );
|
||||
},
|
||||
|
||||
// set expand states for initial value
|
||||
value: function (new_val) {
|
||||
var val = Options.BaseIcons.prototype.value.call(this, new_val);
|
||||
if (this.initial && val !== null && this.header_index) {
|
||||
this.initial = false;
|
||||
var values = val;
|
||||
if (!$.isArray(values)) {
|
||||
values = [values];
|
||||
}
|
||||
for (var i in values) {
|
||||
var list = this.header_index[values[i]];
|
||||
for (var j in list) {
|
||||
this._setState(list[j], true);
|
||||
}
|
||||
}
|
||||
/** Set states for selected values */
|
||||
_setValue: function ( new_value ) {
|
||||
Options.BaseIcons.prototype._setValue.call( this, new_value );
|
||||
if ( new_value !== undefined && new_value !== null && this.header_index ) {
|
||||
var self = this;
|
||||
var values = $.isArray( new_value ) ? new_value : [ new_value ];
|
||||
_.each( values, function( v ) {
|
||||
var list = self.header_index[ v ];
|
||||
_.each( list, function( element ) {
|
||||
self._setState( element, true );
|
||||
});
|
||||
});
|
||||
}
|
||||
return val;
|
||||
},
|
||||
|
||||
/** Expand/collapse a sub group
|
||||
*/
|
||||
_setState: function (header_id, is_expanded) {
|
||||
var $button = this.$('.button-' + header_id);
|
||||
var $subgroup = this.$('.subgroup-' + header_id);
|
||||
$button.data('is_expanded', is_expanded);
|
||||
if (is_expanded) {
|
||||
$subgroup.fadeIn('fast')
|
||||
$button.removeClass('fa-plus-square');
|
||||
$button.addClass('fa-minus-square');
|
||||
/** Expand/collapse a sub group */
|
||||
_setState: function ( header_id, is_expanded ) {
|
||||
var $button = this.$( '.button-' + header_id );
|
||||
var $subgroup = this.$( '.subgroup-' + header_id );
|
||||
$button.data( 'is_expanded', is_expanded );
|
||||
if ( is_expanded ) {
|
||||
$subgroup.show();
|
||||
$button.removeClass( 'fa-plus-square' ).addClass( 'fa-minus-square' );
|
||||
} else {
|
||||
$subgroup.hide();
|
||||
$button.removeClass('fa-minus-square');
|
||||
$button.addClass('fa-plus-square');
|
||||
$button.removeClass( 'fa-minus-square' ).addClass( 'fa-plus-square' );
|
||||
}
|
||||
},
|
||||
|
||||
/** Template to create options tree
|
||||
*/
|
||||
_templateOptions: function(options) {
|
||||
// link this
|
||||
/** Template to create options tree */
|
||||
_templateOptions: function() {
|
||||
var self = this;
|
||||
|
||||
// link data
|
||||
this.header_index = {};
|
||||
|
||||
|
||||
// attach event handler
|
||||
function attach($el, header_id) {
|
||||
var $button = $el.find('.button-' + header_id);
|
||||
$button.on('click', function() {
|
||||
self._setState(header_id, !$button.data('is_expanded'));
|
||||
function attach( $el, header_id ) {
|
||||
var $button = $el.find( '.button-' + header_id );
|
||||
$button.on( 'click', function() {
|
||||
self._setState( header_id, !$button.data( 'is_expanded' ) );
|
||||
});
|
||||
}
|
||||
|
||||
// recursive function which iterates through options
|
||||
function iterate ($tmpl, options, header) {
|
||||
function iterate ( $tmpl, options, header ) {
|
||||
header = header || [];
|
||||
for (i in options) {
|
||||
// current option level in hierarchy
|
||||
var level = options[i];
|
||||
|
||||
// check for options
|
||||
var has_options = level.options.length > 0;
|
||||
|
||||
// copy current header list
|
||||
var new_header = header.slice(0);
|
||||
|
||||
// keep track of header list
|
||||
self.header_index[level.value] = new_header.slice(0);
|
||||
|
||||
// build template
|
||||
var $group = $('<div/>');
|
||||
if (has_options) {
|
||||
// create button and subgroup
|
||||
for ( i in options ) {
|
||||
var level = options[ i ];
|
||||
var has_options = level.options && level.options.length > 0;
|
||||
var new_header = header.slice( 0 );
|
||||
self.header_index[ level.value ] = new_header.slice( 0 );
|
||||
var $group = $( '<div/>' );
|
||||
if ( has_options ) {
|
||||
var header_id = Utils.uid();
|
||||
var $button = $('<span class="button-' + header_id + ' ui-drilldown-button fa fa-plus-square"/>');
|
||||
var $subgroup = $('<div class="subgroup-' + header_id + '" style="display: none; margin-left: 25px;"/>');
|
||||
|
||||
// keep track of button and subgroup
|
||||
new_header.push(header_id);
|
||||
|
||||
// create expandable header section
|
||||
var $buttongroup = $('<div/>');
|
||||
$buttongroup.append($button);
|
||||
$buttongroup.append(self._templateOption({
|
||||
label: level.name,
|
||||
value: level.value
|
||||
}));
|
||||
$group.append($buttongroup);
|
||||
iterate($subgroup, level.options, new_header);
|
||||
$group.append($subgroup);
|
||||
|
||||
// attach expand/collapse events
|
||||
attach($group, header_id);
|
||||
var $button = $( '<span/>' ).addClass( 'button-' + header_id ).addClass( 'ui-drilldown-button fa fa-plus-square' );
|
||||
var $subgroup = $( '<div/>' ).addClass( 'subgroup-' + header_id ).addClass( 'ui-drilldown-subgroup' );
|
||||
$group.append( $( '<div/>' )
|
||||
.append( $button )
|
||||
.append( self._templateOption( { label: level.name, value: level.value } ) ) );
|
||||
new_header.push( header_id );
|
||||
iterate ( $subgroup, level.options, new_header );
|
||||
$group.append( $subgroup );
|
||||
attach( $group, header_id );
|
||||
} else {
|
||||
// append child options
|
||||
$group.append(self._templateOption({
|
||||
label: level.name,
|
||||
value: level.value
|
||||
}));
|
||||
$group.append( self._templateOption( { label: level.name, value: level.value } ) );
|
||||
}
|
||||
$tmpl.append($group);
|
||||
$tmpl.append( $group );
|
||||
}
|
||||
}
|
||||
|
||||
// iterate through options and create dom
|
||||
var $tmpl = $('<div/>');
|
||||
iterate($tmpl, options);
|
||||
|
||||
// return template
|
||||
var $tmpl = $( '<div/>' );
|
||||
iterate( $tmpl, this.model.get( 'data' ) );
|
||||
return $tmpl;
|
||||
},
|
||||
|
||||
/** Template for drill down view
|
||||
*/
|
||||
_template: function(options) {
|
||||
return '<div class="ui-options-list drilldown-container" id="' + options.id + '"/>';
|
||||
/** Template for drill down view */
|
||||
_template: function() {
|
||||
return $( '<div/>' ).addClass( 'ui-options-list drilldown-container' ).attr( 'id', this.model.id );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,313 +1,237 @@
|
||||
// dependencies
|
||||
define(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {
|
||||
|
||||
/** Base class for options based ui elements **/
|
||||
define([ 'utils/utils', 'mvc/ui/ui-buttons' ], function( Utils, Buttons ) {
|
||||
var Base = Backbone.View.extend({
|
||||
// initialize
|
||||
initialize: function(options) {
|
||||
// link this
|
||||
initialize: function( options ) {
|
||||
var self = this;
|
||||
|
||||
// configure options
|
||||
this.options = Utils.merge(options, {
|
||||
this.model = options && options.model || new Backbone.Model({
|
||||
visible : true,
|
||||
data : [],
|
||||
id : Utils.uid(),
|
||||
error_text : 'No options available.',
|
||||
wait_text : 'Please wait...',
|
||||
multiple : false
|
||||
});
|
||||
multiple : false,
|
||||
optional : false,
|
||||
onchange : function(){}
|
||||
}).set( options );
|
||||
this.listenTo( this.model, 'change:value', this._changeValue, this );
|
||||
this.listenTo( this.model, 'change:wait', this._changeWait, this );
|
||||
this.listenTo( this.model, 'change:data', this._changeData, this );
|
||||
this.listenTo( this.model, 'change:visible', this._changeVisible, this );
|
||||
this.on( 'change', function() { self.model.get( 'onchange' )( self.value() ) } );
|
||||
this.render();
|
||||
},
|
||||
|
||||
// create new element
|
||||
this.setElement('<div class="ui-options"/>');
|
||||
|
||||
// create elements
|
||||
this.$message = $('<div/>');
|
||||
this.$options = $(this._template(options));
|
||||
this.$menu = $('<div class="ui-options-menu"/>');
|
||||
|
||||
// append
|
||||
this.$el.append(this.$message);
|
||||
this.$el.append(this.$menu);
|
||||
this.$el.append(this.$options);
|
||||
render: function() {
|
||||
var self = this;
|
||||
this.$el.empty()
|
||||
.removeClass()
|
||||
.addClass( 'ui-options' )
|
||||
.append( this.$message = $( '<div/>' ) )
|
||||
.append( this.$menu = $( '<div/>' ).addClass( 'ui-options-menu' ) )
|
||||
.append( this.$options = $( this._template() ) );
|
||||
|
||||
// add select/unselect all button
|
||||
if (this.options.multiple) {
|
||||
this.all_button = null;
|
||||
if ( this.model.get( 'multiple' ) ) {
|
||||
this.all_button = new Buttons.ButtonCheck({
|
||||
onclick: function() {
|
||||
self.$('input').prop('checked', self.all_button.value() !== 0);
|
||||
self.trigger('change');
|
||||
self.$( 'input' ).prop( 'checked', self.all_button.value() !== 0 );
|
||||
self.value( self._getValue() );
|
||||
self.trigger( 'change' );
|
||||
}
|
||||
});
|
||||
this.$menu.append(this.all_button.$el);
|
||||
this.$menu.append( this.all_button.$el );
|
||||
}
|
||||
|
||||
// hide input field
|
||||
if (!this.options.visible) {
|
||||
this.$el.hide();
|
||||
}
|
||||
|
||||
// initialize data
|
||||
this.update(this.options.data);
|
||||
|
||||
// set initial value
|
||||
if (this.options.value !== undefined) {
|
||||
this.value(this.options.value);
|
||||
}
|
||||
|
||||
// add change event. fires on trigger
|
||||
this.on('change', function() {
|
||||
this.options.onchange && this.options.onchange(this.value());
|
||||
});
|
||||
// finalize dom
|
||||
this._changeData();
|
||||
this._changeWait();
|
||||
this._changeVisible();
|
||||
},
|
||||
|
||||
/** Update options
|
||||
*/
|
||||
update: function(options) {
|
||||
// backup current value
|
||||
var current = this._getValue();
|
||||
|
||||
// remove all options
|
||||
this.$options.empty();
|
||||
|
||||
// add new options using single option templates or full template
|
||||
if (this._templateOptions) {
|
||||
// rebuild options using full template
|
||||
this.$options.append(this._templateOptions(options));
|
||||
} else {
|
||||
// rebuild options using single option templates
|
||||
for (var key in options) {
|
||||
var $option = $(this._templateOption(options[key]));
|
||||
$option.addClass('ui-option');
|
||||
$option.tooltip({title: options[key].tooltip, placement: 'bottom'});
|
||||
this.$options.append($option);
|
||||
}
|
||||
}
|
||||
|
||||
// add change events
|
||||
_changeData: function() {
|
||||
var self = this;
|
||||
this.$('input').on('change', function() {
|
||||
self.value(self._getValue());
|
||||
self.trigger('change');
|
||||
this.$options.empty();
|
||||
if ( this._templateOptions ) {
|
||||
this.$options.append( this._templateOptions( this.model.get( 'data' ) ) );
|
||||
} else {
|
||||
_.each( this.model.get( 'data' ), function( option ) {
|
||||
self.$options.append( $( self._templateOption( option ) )
|
||||
.addClass( 'ui-option' )
|
||||
.tooltip( { title: option.tooltip, placement: 'bottom' } ) );
|
||||
});
|
||||
}
|
||||
var self = this;
|
||||
this.$( 'input' ).on( 'change', function() {
|
||||
self.value( self._getValue() );
|
||||
self.trigger( 'change' );
|
||||
});
|
||||
|
||||
// set previous value
|
||||
this.value(current);
|
||||
|
||||
// data initialization has been completed
|
||||
this.unwait();
|
||||
this._changeValue();
|
||||
this._changeWait();
|
||||
},
|
||||
|
||||
/** Return/Set current value
|
||||
*/
|
||||
value: function (new_value) {
|
||||
// set new value if available
|
||||
if (new_value !== undefined) {
|
||||
// reset selection
|
||||
this.$('input').prop('checked', false);
|
||||
// set value
|
||||
if (new_value !== null) {
|
||||
// check if its an array
|
||||
if (!(new_value instanceof Array)) {
|
||||
new_value = [new_value];
|
||||
}
|
||||
// update to new selection
|
||||
for (var i in new_value) {
|
||||
this.$('input[value="' + new_value[i] + '"]').first().prop('checked', true);
|
||||
}
|
||||
};
|
||||
}
|
||||
// get current value
|
||||
var current = this._getValue();
|
||||
if (this.all_button) {
|
||||
var value = current;
|
||||
if (!(value instanceof Array)) {
|
||||
value = 0;
|
||||
_changeVisible: function() {
|
||||
this.$el[ this.model.get( 'visible' ) ? 'show' : 'hide' ]();
|
||||
},
|
||||
|
||||
_changeWait: function() {
|
||||
if ( this.model.get( 'wait' ) ) {
|
||||
if ( this.length() === 0 ) {
|
||||
this._messageShow( this.model.get( 'wait_text' ), 'info' );
|
||||
this.$options.hide();
|
||||
this.$menu.hide();
|
||||
}
|
||||
} else {
|
||||
if ( this.length() === 0 ) {
|
||||
this._messageShow( this.model.get( 'error_text' ), 'danger' );
|
||||
this.$options.hide();
|
||||
this.$menu.hide();
|
||||
} else {
|
||||
value = value.length;
|
||||
}
|
||||
this.all_button.value(value, this._size());
|
||||
}
|
||||
return current;
|
||||
},
|
||||
|
||||
/** Check if selected value exists (or any if multiple)
|
||||
*/
|
||||
exists: function(value) {
|
||||
if (value !== undefined) {
|
||||
if (!(value instanceof Array)) {
|
||||
value = [value];
|
||||
}
|
||||
for (var i in value) {
|
||||
if (this.$('input[value="' + value[i] + '"]').length > 0) {
|
||||
return true;
|
||||
}
|
||||
this.$message.hide();
|
||||
this.$options.css( 'display', 'inline-block' );
|
||||
this.$menu.show();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
/** Return first available option
|
||||
*/
|
||||
_changeValue: function() {
|
||||
this._setValue( this.model.get( 'value' ) );
|
||||
if ( this._getValue() === null && !this.model.get( 'multiple' ) && !this.model.get( 'optional' ) ) {
|
||||
this._setValue( this.first() );
|
||||
}
|
||||
this.all_button && this.all_button.value( $.isArray( this._getValue() ) ? this._getValue().length : 0, this.length() );
|
||||
},
|
||||
|
||||
/** Return/Set current selection */
|
||||
value: function ( new_value ) {
|
||||
new_value !== undefined && this.model.set( 'value', new_value );
|
||||
return this._getValue();
|
||||
},
|
||||
|
||||
/** Return first available option */
|
||||
first: function() {
|
||||
var options = this.$('input').first();
|
||||
if (options.length > 0) {
|
||||
return options.val();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
var options = this.$( 'input' ).first();
|
||||
return options.length > 0 ? options.val() : null;
|
||||
},
|
||||
|
||||
/** Wait message during request processing
|
||||
*/
|
||||
/** Show a spinner indicating that the select options are currently loaded */
|
||||
wait: function() {
|
||||
if (this._size() == 0) {
|
||||
this._messageShow(this.options.wait_text, 'info');
|
||||
this.$options.hide();
|
||||
this.$menu.hide();
|
||||
}
|
||||
this.model.set( 'wait', true );
|
||||
},
|
||||
|
||||
/** Hide wait message
|
||||
*/
|
||||
/** Hide spinner indicating that the request has been completed */
|
||||
unwait: function() {
|
||||
var total = this._size();
|
||||
if (total == 0) {
|
||||
this._messageShow(this.options.error_text, 'danger');
|
||||
this.$options.hide();
|
||||
this.$menu.hide();
|
||||
} else {
|
||||
this._messageHide();
|
||||
this.$options.css('display', 'inline-block');
|
||||
this.$menu.show();
|
||||
this.model.set( 'wait', false );
|
||||
},
|
||||
|
||||
/** Returns the number of options */
|
||||
length: function() {
|
||||
return this.$( '.ui-option' ).length;
|
||||
},
|
||||
|
||||
/** Set value to dom */
|
||||
_setValue: function( new_value ) {
|
||||
var self = this;
|
||||
if ( new_value !== undefined ) {
|
||||
this.$( 'input' ).prop( 'checked', false );
|
||||
if ( new_value !== null ) {
|
||||
var values = $.isArray( new_value ) ? new_value : [ new_value ];
|
||||
_.each( values, function( v ) {
|
||||
self.$( 'input[value="' + v + '"]' ).first().prop( 'checked', true );
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/** Return current selection
|
||||
*/
|
||||
/** Return current selection */
|
||||
_getValue: function() {
|
||||
// track values in array
|
||||
var selected = [];
|
||||
this.$(':checked').each(function() {
|
||||
selected.push($(this).val());
|
||||
this.$( ':checked' ).each( function() {
|
||||
selected.push( $( this ).val() );
|
||||
});
|
||||
|
||||
// get selected elements
|
||||
if (Utils.isEmpty(selected)) {
|
||||
if ( Utils.isEmpty( selected ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// return multiple or single value
|
||||
if (this.options.multiple) {
|
||||
return selected;
|
||||
} else {
|
||||
return selected[0];
|
||||
}
|
||||
return this.model.get( 'multiple' ) ? selected : selected[ 0 ];
|
||||
},
|
||||
|
||||
/** Returns the number of options
|
||||
*/
|
||||
_size: function() {
|
||||
return this.$('.ui-option').length;
|
||||
/** Show message instead if options */
|
||||
_messageShow: function( text, status ) {
|
||||
this.$message.show()
|
||||
.removeClass()
|
||||
.addClass( 'ui-message alert alert-' + status )
|
||||
.html( text );
|
||||
},
|
||||
|
||||
/** Show message instead if options
|
||||
*/
|
||||
_messageShow: function(text, status) {
|
||||
this.$message.show();
|
||||
this.$message.removeClass();
|
||||
this.$message.addClass('ui-message alert alert-' + status);
|
||||
this.$message.html(text);
|
||||
},
|
||||
|
||||
/** Hide message
|
||||
*/
|
||||
_messageHide: function() {
|
||||
this.$message.hide();
|
||||
},
|
||||
|
||||
/** Main template function
|
||||
*/
|
||||
/** Main template function */
|
||||
_template: function() {
|
||||
return '<div class="ui-options-list"/>';
|
||||
return $( '<div/>' ).addClass( 'ui-options-list' );
|
||||
}
|
||||
});
|
||||
|
||||
/** Iconized **/
|
||||
var BaseIcons = Base.extend({
|
||||
_templateOption: function(pair) {
|
||||
_templateOption: function( pair ) {
|
||||
var id = Utils.uid();
|
||||
return '<div class="ui-option">' +
|
||||
'<input id="' + id + '" type="' + this.options.type + '" name="' + this.options.id + '" value="' + pair.value + '"/>' +
|
||||
'<label class="ui-options-label" for="' + id + '">' + pair.label + '</label>' +
|
||||
'</div>';
|
||||
return $( '<div/>' ).addClass( 'ui-option' )
|
||||
.append( $( '<input/>' ).attr( {
|
||||
id : id,
|
||||
type : this.model.get( 'type' ),
|
||||
name : this.model.id,
|
||||
value : pair.value } ) )
|
||||
.append( $( '<label/>' ).addClass( 'ui-options-label' )
|
||||
.attr( 'for', id )
|
||||
.html( pair.label ) );
|
||||
}
|
||||
});
|
||||
|
||||
/** Radio button field **/
|
||||
var Radio = {};
|
||||
Radio.View = BaseIcons.extend({
|
||||
initialize: function(options) {
|
||||
initialize: function( options ) {
|
||||
options.type = 'radio';
|
||||
BaseIcons.prototype.initialize.call(this, options);
|
||||
BaseIcons.prototype.initialize.call( this, options );
|
||||
}
|
||||
});
|
||||
|
||||
/** Checkbox options field **/
|
||||
var Checkbox = {};
|
||||
Checkbox.View = BaseIcons.extend({
|
||||
initialize: function(options) {
|
||||
options.multiple = true;
|
||||
initialize: function( options ) {
|
||||
options.type = 'checkbox';
|
||||
BaseIcons.prototype.initialize.call(this, options);
|
||||
options.multiple = true;
|
||||
BaseIcons.prototype.initialize.call( this, options );
|
||||
}
|
||||
});
|
||||
|
||||
/** Radio button options field styled as classic buttons **/
|
||||
var RadioButton = {};
|
||||
RadioButton.View = Base.extend({
|
||||
// initialize
|
||||
initialize: function(options) {
|
||||
Base.prototype.initialize.call(this, options);
|
||||
initialize: function( options ) {
|
||||
Base.prototype.initialize.call( this, options );
|
||||
},
|
||||
|
||||
/** Return/Set current value
|
||||
*/
|
||||
value: function (new_value) {
|
||||
// set new value
|
||||
if (new_value !== undefined) {
|
||||
this.$('input').prop('checked', false);
|
||||
this.$('label').removeClass('active');
|
||||
this.$('[value="' + new_value + '"]').prop('checked', true).closest('label').addClass('active');
|
||||
/** Set current value */
|
||||
_setValue: function ( new_value ) {
|
||||
if ( new_value !== undefined ) {
|
||||
this.$( 'input' ).prop( 'checked', false );
|
||||
this.$( 'label' ).removeClass( 'active' );
|
||||
this.$( '[value="' + new_value + '"]' ).prop( 'checked', true ).closest( 'label' ).addClass( 'active' );
|
||||
}
|
||||
|
||||
// get and return value
|
||||
return this._getValue();
|
||||
},
|
||||
|
||||
/** Template for a single option
|
||||
*/
|
||||
_templateOption: function(pair) {
|
||||
var cls = 'fa ' + pair.icon;
|
||||
if (!pair.label) {
|
||||
cls += ' no-padding';
|
||||
}
|
||||
var tmpl = '<label class="btn btn-default">';
|
||||
if (pair.icon) {
|
||||
tmpl += '<i class="' + cls + '"/>';
|
||||
}
|
||||
tmpl += '<input type="radio" name="' + this.options.id + '" value="' + pair.value + '"/>';
|
||||
if (pair.label) {
|
||||
tmpl += pair.label;
|
||||
}
|
||||
tmpl += '</label>';
|
||||
return tmpl;
|
||||
/** Template for a single option */
|
||||
_templateOption: function( pair ) {
|
||||
var $el = $( '<label/>' ).addClass( 'btn btn-default' );
|
||||
pair.icon && $el.append( $( '<i/>' ).addClass( 'fa' ).addClass( pair.icon ).addClass( !pair.label && 'no-padding' ) );
|
||||
$el.append( $( '<input/>' ).attr( { type: 'radio', name: this.model.id, value: pair.value } ) );
|
||||
pair.label && $el.append( pair.label );
|
||||
return $el;
|
||||
},
|
||||
|
||||
/** Main template function
|
||||
*/
|
||||
/** Main template function */
|
||||
_template: function() {
|
||||
return '<div class="btn-group ui-radiobutton" data-toggle="buttons"/>';
|
||||
return $( '<div/>' ).addClass( 'btn-group ui-radiobutton' ).attr( 'data-toggle', 'buttons' );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,296 +1,252 @@
|
||||
/**
|
||||
* This class creates/wraps a default html select field as backbone class.
|
||||
*/
|
||||
define(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {
|
||||
define([ 'utils/utils', 'mvc/ui/ui-buttons' ], function( Utils, Buttons ) {
|
||||
var View = Backbone.View.extend({
|
||||
// options
|
||||
optionsDefault: {
|
||||
id : Utils.uid(),
|
||||
cls : 'ui-select',
|
||||
error_text : 'No options available',
|
||||
empty_text : 'Nothing selected',
|
||||
visible : true,
|
||||
wait : false,
|
||||
multiple : false,
|
||||
searchable : true,
|
||||
optional : false
|
||||
initialize: function( options ) {
|
||||
var self = this;
|
||||
this.model = options && options.model || new Backbone.Model({
|
||||
id : Utils.uid(),
|
||||
cls : 'ui-select',
|
||||
error_text : 'No options available',
|
||||
empty_text : 'Nothing selected',
|
||||
visible : true,
|
||||
wait : false,
|
||||
multiple : false,
|
||||
searchable : true,
|
||||
optional : false,
|
||||
disabled : false,
|
||||
onchange : function(){}
|
||||
}).set( options );
|
||||
this.on( 'change', function() { self.model.get( 'onchange' )( self.value() ) } );
|
||||
this.listenTo( this.model, 'change:data', this._changeData, this );
|
||||
this.listenTo( this.model, 'change:disabled', this._changeDisabled, this );
|
||||
this.listenTo( this.model, 'change:wait', this._changeWait, this );
|
||||
this.listenTo( this.model, 'change:visible', this._changeVisible, this );
|
||||
this.listenTo( this.model, 'change:value', this._changeValue, this );
|
||||
this.listenTo( this.model, 'change:multiple change:searchable change:cls change:id', this.render, this );
|
||||
this.render();
|
||||
},
|
||||
|
||||
// initialize
|
||||
initialize: function(options) {
|
||||
// link this
|
||||
render: function() {
|
||||
var self = this;
|
||||
this.model = new Backbone.Model();
|
||||
this.$el.empty().append( this.$select = $( '<select/>' ) )
|
||||
.append( this.$dropdown = $( '<div/>' ) )
|
||||
.append( this.$resize = $( '<div/>' )
|
||||
.append( this.$resize_icon = $( '<i/>' ) ) );
|
||||
|
||||
// configure options
|
||||
this.options = Utils.merge(options, this.optionsDefault);
|
||||
// set element properties
|
||||
this.$el.addClass( this.model.get( 'cls' ) )
|
||||
.attr( 'id', this.model.get( 'id' ) );
|
||||
|
||||
// create new element
|
||||
this.setElement(this._template(this.options));
|
||||
// set select properties
|
||||
this.$select.addClass( 'select' )
|
||||
.attr( 'id', this.model.get( 'id' ) + '_select' )
|
||||
.prop( 'multiple', this.model.get( 'multiple' ) )
|
||||
.on( 'change', function() {
|
||||
self.value( self._getValue() );
|
||||
self.trigger( 'change' );
|
||||
});
|
||||
|
||||
// link elements
|
||||
this.$select = this.$el.find('.select');
|
||||
this.$icon_dropdown = this.$el.find('.icon-dropdown');
|
||||
this.$icon_dropdown.on( 'click', function() { self.$select.select2 && self.$select.select2( 'open' ) });
|
||||
|
||||
// allow regular multi-select field to be resized
|
||||
var minHeight = null;
|
||||
this.$('.icon-resize').on('mousedown', function(event) {
|
||||
var currentY = event.pageY;
|
||||
var currentHeight = self.$select.height();
|
||||
minHeight = minHeight || currentHeight;
|
||||
$('#dd-helper').show().on('mousemove', function(event) {
|
||||
self.$select.height(Math.max(currentHeight + (event.pageY - currentY), minHeight));
|
||||
}).on('mouseup mouseleave', function() {
|
||||
$('#dd-helper').hide().off();
|
||||
// render drop down
|
||||
this.$dropdown.hide();
|
||||
if ( !this.model.get( 'multiple' ) ) {
|
||||
this.$dropdown.show().on( 'click', function() {
|
||||
self.$select.select2 && self.$select.select2( 'open' );
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// multiple select fields have an additional button and other custom properties
|
||||
if (this.options.multiple) {
|
||||
// create select all button
|
||||
if (this.options.searchable) {
|
||||
// render resize options for classic multi-select field
|
||||
this.$resize.hide();
|
||||
if ( this.model.get( 'multiple' ) && !this.model.get( 'searchable' ) ) {
|
||||
this.$resize_icon.addClass( 'fa fa-angle-double-right fa-rotate-45' );
|
||||
this.$resize.show()
|
||||
.removeClass()
|
||||
.addClass( 'icon-resize' )
|
||||
.off( 'mousedown' ).on( 'mousedown', function( event ) {
|
||||
var currentY = event.pageY;
|
||||
var currentHeight = self.$select.height();
|
||||
self.minHeight = self.minHeight || currentHeight;
|
||||
$( '#dd-helper' ).show().on( 'mousemove', function( event ) {
|
||||
self.$select.height( Math.max( currentHeight + ( event.pageY - currentY ), self.minHeight ) );
|
||||
}).on( 'mouseup mouseleave', function() {
|
||||
$( '#dd-helper' ).hide().off();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// build select all button
|
||||
this.all_button = null;
|
||||
if ( this.model.get( 'multiple' ) ) {
|
||||
if ( this.model.get( 'searchable' ) ) {
|
||||
this.all_button = new Buttons.ButtonCheck({
|
||||
onclick: function() {
|
||||
var new_value = [];
|
||||
if (self.all_button.value() !== 0) {
|
||||
new_value = self._availableOptions();
|
||||
}
|
||||
self.value(new_value);
|
||||
self.trigger('change');
|
||||
self.all_button.value() !== 0 && _.each( self.model.get( 'data' ), function( option ) {
|
||||
new_value.push( option.value );
|
||||
});
|
||||
self.value( new_value );
|
||||
self.trigger( 'change' );
|
||||
}
|
||||
});
|
||||
this.$el.prepend(this.all_button.$el);
|
||||
this.$el.prepend( this.all_button.$el );
|
||||
} else {
|
||||
this.$el.addClass('ui-select-multiple');
|
||||
this.$el.addClass( 'ui-select-multiple' );
|
||||
}
|
||||
this.$select.prop('multiple', true);
|
||||
this.$icon_dropdown.remove();
|
||||
}
|
||||
|
||||
// update initial options
|
||||
this.update(this.options.data);
|
||||
// finalize dom
|
||||
this._changeData();
|
||||
this._changeWait();
|
||||
this._changeVisible();
|
||||
},
|
||||
|
||||
// set initial value
|
||||
if (this.options.value !== undefined) {
|
||||
this.value(this.options.value);
|
||||
_changeData: function() {
|
||||
var self = this;
|
||||
this.$select.find( 'option' ).remove();
|
||||
if ( !this.model.get( 'multiple' ) && this.model.get( 'optional' ) ) {
|
||||
this.$select.append( this._templateOption( { value: '__null__', label: self.model.get( 'empty_text' ) } ) );
|
||||
}
|
||||
|
||||
// show/hide
|
||||
if (!this.options.visible) {
|
||||
this.hide();
|
||||
}
|
||||
|
||||
// wait
|
||||
if (this.options.wait) {
|
||||
this.wait();
|
||||
_.each( this.model.get( 'data' ), function( option ) {
|
||||
self.$select.append( self._templateOption( option ) );
|
||||
});
|
||||
if ( this.length() == 0 ) {
|
||||
this.$select.prop( 'disabled', true )
|
||||
.append( this._templateOption( { value: '__null__', label: this.model.get( 'error_text' ) } ) );
|
||||
} else {
|
||||
this.show();
|
||||
this.$select.prop( 'disabled', false );
|
||||
}
|
||||
|
||||
// add change event. fires only on user activity
|
||||
this.$select.on('change', function() {
|
||||
self.trigger('change');
|
||||
});
|
||||
|
||||
// add change event. fires on trigger
|
||||
this.on('change', function() {
|
||||
self.options.onchange && self.options.onchange(this.value());
|
||||
});
|
||||
this.$select.select2( 'destroy' );
|
||||
if ( this.model.get( 'searchable' ) ) {
|
||||
this.$select.select2( { closeOnSelect: !this.model.get( 'multiple' ) } );
|
||||
this.$( '.select2-container .select2-search input' ).off( 'blur' );
|
||||
}
|
||||
this._changeValue();
|
||||
},
|
||||
|
||||
/** Return/Set current selection
|
||||
*/
|
||||
value: function (new_value) {
|
||||
// set new value
|
||||
if (new_value !== undefined) {
|
||||
if (new_value === null) {
|
||||
new_value = '__null__';
|
||||
}
|
||||
if (this.exists(new_value) || this.options.multiple) {
|
||||
this.$select.val(new_value);
|
||||
if (this.$select.select2) {
|
||||
this.$select.select2('val', new_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
// get current value
|
||||
var current = this._getValue();
|
||||
if (this.all_button) {
|
||||
this.all_button.value($.isArray(current) && current.length || 0, this._size());
|
||||
}
|
||||
return current;
|
||||
_changeDisabled: function() {
|
||||
this.$select.prop( 'disabled', this.model.get( 'disabled' ) );
|
||||
},
|
||||
|
||||
/** Return the first select option
|
||||
*/
|
||||
_changeWait: function() {
|
||||
this.$dropdown.removeClass()
|
||||
.addClass( 'icon-dropdown fa' )
|
||||
.addClass( this.model.get( 'wait' ) ? 'fa-spinner fa-spin' : 'fa-caret-down' );
|
||||
},
|
||||
|
||||
_changeVisible: function() {
|
||||
this.$el[ this.model.get( 'visible' ) ? 'show' : 'hide' ]();
|
||||
this.$select[ this.model.get( 'visible' ) ? 'show' : 'hide' ]();
|
||||
},
|
||||
|
||||
_changeValue: function() {
|
||||
this._setValue( this.model.get( 'value' ) );
|
||||
if ( this._getValue() === null && !this.model.get( 'multiple' ) && !this.model.get( 'optional' ) ) {
|
||||
this._setValue( this.first() );
|
||||
}
|
||||
var value = this._getValue();
|
||||
this.all_button && this.all_button.value( $.isArray( value ) ? value.length : 0, this.length() );
|
||||
},
|
||||
|
||||
/** Return/Set current selection */
|
||||
value: function ( new_value ) {
|
||||
new_value !== undefined && this.model.set( 'value', new_value );
|
||||
return this._getValue();
|
||||
},
|
||||
|
||||
/** Return the first select option */
|
||||
first: function() {
|
||||
var options = this.$select.find('option').first();
|
||||
if (options.length > 0) {
|
||||
return options.val();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
var options = this.$select.find( 'option' ).first();
|
||||
return options.length > 0 ? options.val() : null;
|
||||
},
|
||||
|
||||
/** Return the label/text of the current selection
|
||||
*/
|
||||
/** Check if a value is an existing option */
|
||||
exists: function( value ) {
|
||||
return this.$select.find( 'option[value="' + value + '"]' ).length > 0;
|
||||
},
|
||||
|
||||
/** Return the label/text of the current selection */
|
||||
text: function () {
|
||||
return this.$select.find('option:selected').text();
|
||||
return this.$select.find( 'option:selected' ).first().text();
|
||||
},
|
||||
|
||||
/** Show the select field
|
||||
*/
|
||||
/** Show the select field */
|
||||
show: function() {
|
||||
this.unwait();
|
||||
this.$select.show();
|
||||
this.$el.show();
|
||||
this.model.set( 'visible', true );
|
||||
},
|
||||
|
||||
/** Hide the select field
|
||||
*/
|
||||
/** Hide the select field */
|
||||
hide: function() {
|
||||
this.$el.hide();
|
||||
this.model.set( 'visible', false );
|
||||
},
|
||||
|
||||
/** Show a spinner indicating that the select options are currently loaded
|
||||
*/
|
||||
/** Show a spinner indicating that the select options are currently loaded */
|
||||
wait: function() {
|
||||
this.$icon_dropdown.removeClass();
|
||||
this.$icon_dropdown.addClass('icon-dropdown fa fa-spinner fa-spin');
|
||||
this.model.set( 'wait', true );
|
||||
},
|
||||
|
||||
/** Hide spinner indicating that the request has been completed
|
||||
*/
|
||||
/** Hide spinner indicating that the request has been completed */
|
||||
unwait: function() {
|
||||
this.$icon_dropdown.removeClass();
|
||||
this.$icon_dropdown.addClass('icon-dropdown fa fa-caret-down');
|
||||
this.model.set( 'wait', false );
|
||||
},
|
||||
|
||||
/** Returns true if the field is disabled
|
||||
*/
|
||||
/** Returns true if the field is disabled */
|
||||
disabled: function() {
|
||||
return this.$select.is(':disabled');
|
||||
return this.model.get( 'disabled' );
|
||||
},
|
||||
|
||||
/** Enable the select field
|
||||
*/
|
||||
/** Enable the select field */
|
||||
enable: function() {
|
||||
this.$select.prop('disabled', false);
|
||||
this.model.set( 'disabled', false );
|
||||
},
|
||||
|
||||
/** Disable the select field
|
||||
*/
|
||||
/** Disable the select field */
|
||||
disable: function() {
|
||||
this.$select.prop('disabled', true);
|
||||
this.model.set( 'disabled', true );
|
||||
},
|
||||
|
||||
/** Update all available options at once
|
||||
*/
|
||||
/** Update all available options at once */
|
||||
add: function( options, sorter ) {
|
||||
_.each( this.model.get( 'options' ), function( v ) {
|
||||
_.each( this.model.get( 'data' ), function( v ) {
|
||||
!_.findWhere( options, v ) && options.push( v );
|
||||
});
|
||||
sorter && options && options.sort( sorter );
|
||||
this.update( options );
|
||||
this.model.set( 'data', options );
|
||||
},
|
||||
update: function(options) {
|
||||
// backup current value
|
||||
var current = this._getValue();
|
||||
|
||||
// remove all options
|
||||
this.$select.find('option').remove();
|
||||
/** Update available options */
|
||||
update: function( options ) {
|
||||
this.model.set( 'data', options );
|
||||
},
|
||||
|
||||
// add optional field
|
||||
if (!this.options.multiple && this.options.optional) {
|
||||
this.$select.append(this._templateOption({value : '__null__', label : this.options.empty_text}));
|
||||
}
|
||||
/** Set the custom onchange callback function */
|
||||
setOnChange: function( callback ) {
|
||||
this.model.set( 'onchange', callback );
|
||||
},
|
||||
|
||||
// add new options
|
||||
this.model.set( 'options', options );
|
||||
for (var key in options) {
|
||||
this.$select.append(this._templateOption(options[key]));
|
||||
}
|
||||
/** Number of available options */
|
||||
length: function() {
|
||||
return $.isArray( this.model.get( 'data' ) ) ? this.model.get( 'data' ).length : 0;
|
||||
},
|
||||
|
||||
// count remaining entries
|
||||
if (this._size() == 0) {
|
||||
// disable select field
|
||||
this.disable();
|
||||
|
||||
// create placeholder
|
||||
this.$select.append(this._templateOption({value : '__null__', label : this.options.error_text}));
|
||||
} else {
|
||||
// enable select field
|
||||
this.enable();
|
||||
}
|
||||
|
||||
// update to searchable field (in this case select2)
|
||||
if (this.options.searchable) {
|
||||
this.$select.select2('destroy');
|
||||
this.$select.select2({ closeOnSelect: !this.options.multiple });
|
||||
this.$( '.select2-container .select2-search input' ).off( 'blur' );
|
||||
}
|
||||
|
||||
// set previous value
|
||||
this.value(current);
|
||||
|
||||
// check if any value was set
|
||||
if (this._getValue() === null && !(this.options.multiple && this.options.optional)) {
|
||||
this.value(this.first());
|
||||
/** Set value to dom */
|
||||
_setValue: function( new_value ) {
|
||||
if ( new_value !== undefined ) {
|
||||
new_value = new_value !== null ? new_value : '__null__';
|
||||
this.$select.val( new_value );
|
||||
this.$select.select2 && this.$select.select2( 'val', new_value );
|
||||
}
|
||||
},
|
||||
|
||||
/** Set the custom onchange callback function
|
||||
*/
|
||||
setOnChange: function(callback) {
|
||||
this.options.onchange = callback;
|
||||
},
|
||||
|
||||
/** Check if a value is an existing option
|
||||
*/
|
||||
exists: function(value) {
|
||||
return this.$select.find('option[value="' + value + '"]').length > 0;
|
||||
},
|
||||
|
||||
/** Get current value from dom
|
||||
*/
|
||||
/** Get value from dom */
|
||||
_getValue: function() {
|
||||
var val = this.$select.val();
|
||||
return Utils.isEmpty( val ) ? null : val;
|
||||
},
|
||||
|
||||
/** Returns all currently available options
|
||||
*/
|
||||
_availableOptions: function() {
|
||||
var available = [];
|
||||
this.$select.find('option').each(function(i, e){
|
||||
available.push($(e).attr('value'));
|
||||
});
|
||||
return available;
|
||||
},
|
||||
|
||||
/** Number of available options
|
||||
*/
|
||||
_size: function() {
|
||||
return this.$select.find('option').length;
|
||||
},
|
||||
|
||||
/** Template for select options
|
||||
*/
|
||||
_templateOption: function(options) {
|
||||
return '<option value="' + options.value + '">' + _.escape(options.label) + '</option>';
|
||||
},
|
||||
|
||||
/** Template for select view
|
||||
*/
|
||||
_template: function(options) {
|
||||
return '<div id="' + options.id + '" class="' + options.cls + '">' +
|
||||
'<select id="' + options.id + '_select" class="select"/>' +
|
||||
'<div class="icon-dropdown"/>' +
|
||||
'<div class="icon-resize">' +
|
||||
'<i class="fa fa-angle-double-right fa-rotate-45"/>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
/** Template for select options */
|
||||
_templateOption: function( options ) {
|
||||
return $( '<option/>' ).attr( 'value', options.value ).html( _.escape( options.label ) );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -534,6 +534,10 @@
|
||||
margin-top: 3px;
|
||||
|
||||
}
|
||||
.ui-drilldown-subgroup {
|
||||
display: none;
|
||||
margin-left: 25px;
|
||||
}
|
||||
input[type=checkbox] + label:before {
|
||||
font-family: FontAwesome;
|
||||
display: inline-block;
|
||||
|
||||
@@ -92,8 +92,7 @@ return Backbone.View.extend({
|
||||
|
||||
// create select field
|
||||
var select = new Ui.Select.View({
|
||||
id : 'select_' + id,
|
||||
wait : true
|
||||
id : 'select_' + id
|
||||
});
|
||||
|
||||
// title
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","SelectFtp","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","ftpfile","initialize","app","this","create","input_def","fieldClass","type","field","call","incompatible","options","_fieldSelect","_fieldText","Galaxy","emit","debug","undefined","value","_fieldData","self","View","id","extensions","optional","multiple","onchange","trigger","is_workflow","error_text","_","each","option","push","label","SelectClass","Select","display","Checkbox","Radio","searchable","_fieldDrilldown","Drilldown","area","isEmpty","$","isArray","str_value","i","String","Input","new_value","_fieldSlider","Slider","precise","min","max","_fieldHidden","Hidden","info","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary","_fieldFtp"],"mappings":"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"}
|
||||
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","SelectFtp","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","ftpfile","initialize","app","this","create","input_def","fieldClass","type","field","call","incompatible","options","_fieldSelect","_fieldText","Galaxy","emit","debug","undefined","value","_fieldData","self","View","id","extensions","optional","multiple","onchange","trigger","is_workflow","error_text","_","each","option","push","label","SelectClass","Select","display","Checkbox","Radio","_fieldDrilldown","Drilldown","area","isEmpty","$","isArray","str_value","i","String","Input","new_value","_fieldSlider","Slider","precise","min","max","_fieldHidden","Hidden","info","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary","_fieldFtp"],"mappings":"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"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"form-section.js","sources":["../../../src/mvc/form/form-section.js"],"names":["define","Utils","Table","Ui","Portlet","Repeat","InputElement","Parameters","View","Backbone","extend","initialize","app","options","this","inputs","cls","cls_tr","table","parameters","setElement","$el","render","delAll","i","add","input","input_def","jQuery","id","uid","input_list","type","_addConditional","_addRepeat","_addSection","_addRow","self","test_param","sustain_conditionals","disabled","field","onchange","value","selectedCase","data","matchCase","cases","case_def","section_id","section_row","get","nonhidden","j","hidden","fadeIn","hide","trigger","sub_section_id","sub_section","addClass","append","create","block_index","repeat","ondel","del","title","title_new","min","max","onnew","n_cache","_","size","cache","Math","default","sustain_repeats","hideOptions","input_element","label","name","help","button_visible","ButtonIcon","icon","tooltip","portlet","collapsible","collapsed","operations","$","html","setOperation","expand","collapse","on","setIcon","input_id","length","expanded","field_list","text_value","collapsible_value","collapsible_preview","argument","element_list"],"mappings":"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"}
|
||||
{"version":3,"file":"form-section.js","sources":["../../../src/mvc/form/form-section.js"],"names":["define","Utils","Table","Ui","Portlet","Repeat","InputElement","Parameters","View","Backbone","extend","initialize","app","options","this","inputs","cls","cls_tr","table","parameters","setElement","$el","render","delAll","i","add","input","input_def","jQuery","id","uid","input_list","type","_addConditional","_addRepeat","_addSection","_addRow","self","test_param","sustain_conditionals","disabled","field","model","set","value","selectedCase","data","matchCase","cases","case_def","section_id","section_row","get","nonhidden","j","hidden","fadeIn","hide","trigger","sub_section_id","sub_section","addClass","append","create","block_index","repeat","ondel","del","title","title_new","min","max","onnew","n_cache","_","size","cache","Math","default","sustain_repeats","hideOptions","input_element","label","name","help","button_visible","ButtonIcon","icon","tooltip","portlet","collapsible","collapsed","operations","$","html","setOperation","expand","collapse","on","setIcon","input_id","length","expanded","field_list","text_value","collapsible_value","collapsible_preview","argument","element_list"],"mappings":"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"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"ui-drilldown.js","sources":["../../../src/mvc/ui/ui-drilldown.js"],"names":["define","Utils","Options","View","BaseIcons","extend","initialize","options","type","display","multiple","prototype","call","this","initial","value","new_val","val","header_index","values","$","isArray","i","list","j","_setState","header_id","is_expanded","$button","$subgroup","data","fadeIn","removeClass","addClass","hide","_templateOptions","attach","$el","find","on","self","iterate","$tmpl","header","level","has_options","length","new_header","slice","$group","uid","push","$buttongroup","append","_templateOption","label","name","_template","id"],"mappings":"AACAA,QAAQ,cAAe,qBAAsB,SAASC,EAAOC,GAK7D,GAAIC,GAAOD,EAAQE,UAAUC,QAEzBC,WAAY,SAASC,GACjBA,EAAQC,KAAWD,EAAQE,SAAW,WACtCF,EAAQG,SAA+B,YAAnBH,EAAQE,QAC5BP,EAAQE,UAAUO,UAAUL,WAAWM,KAAKC,KAAMN,GAClDM,KAAKC,SAAU,GAInBC,MAAO,SAAUC,GACb,GAAIC,GAAMf,EAAQE,UAAUO,UAAUI,MAAMH,KAAKC,KAAMG,EACvD,IAAIH,KAAKC,SAAmB,OAARG,GAAgBJ,KAAKK,aAAc,CACnDL,KAAKC,SAAU,CACf,IAAIK,GAASF,CACRG,GAAEC,QAAQF,KACXA,GAAUA,GAEd,KAAK,GAAIG,KAAKH,GAAQ,CAClB,GAAII,GAAOV,KAAKK,aAAaC,EAAOG,GACpC,KAAK,GAAIE,KAAKD,GACVV,KAAKY,UAAUF,EAAKC,IAAI,IAIpC,MAAOP,IAKXQ,UAAW,SAAUC,EAAWC,GAC5B,GAAIC,GAAUf,KAAKO,EAAE,WAAaM,GAC9BG,EAAYhB,KAAKO,EAAE,aAAeM,EACtCE,GAAQE,KAAK,cAAeH,GACxBA,GACAE,EAAUE,OAAO,QACjBH,EAAQI,YAAY,kBACpBJ,EAAQK,SAAS,qBAEjBJ,EAAUK,OACVN,EAAQI,YAAY,mBACpBJ,EAAQK,SAAS,oBAMzBE,iBAAkB,SAAS5B,GAQvB,QAAS6B,GAAOC,EAAKX,GACjB,GAAIE,GAAUS,EAAIC,KAAK,WAAaZ,EACpCE,GAAQW,GAAG,QAAS,WAChBC,EAAKf,UAAUC,GAAYE,EAAQE,KAAK,kBAKhD,QAASW,GAASC,EAAOnC,EAASoC,GAC9BA,EAASA,KACT,KAAKrB,IAAKf,GAAS,CAEf,GAAIqC,GAAQrC,EAAQe,GAGhBuB,EAAcD,EAAMrC,QAAQuC,OAAS,EAGrCC,EAAaJ,EAAOK,MAAM,EAG9BR,GAAKtB,aAAa0B,EAAM7B,OAASgC,EAAWC,MAAM,EAGlD,IAAIC,GAAS7B,EAAE,SACf,IAAIyB,EAAa,CAEb,GAAInB,GAAYzB,EAAMiD,MAClBtB,EAAUR,EAAE,uBAAyBM,EAAY,6CACjDG,EAAYT,EAAE,wBAA0BM,EAAY,gDAGxDqB,GAAWI,KAAKzB,EAGhB,IAAI0B,GAAehC,EAAE,SACrBgC,GAAaC,OAAOzB,GACpBwB,EAAaC,OAAOb,EAAKc,iBACrBC,MAAOX,EAAMY,KACbzC,MAAO6B,EAAM7B,SAEjBkC,EAAOI,OAAOD,GACdX,EAAQZ,EAAWe,EAAMrC,QAASwC,GAClCE,EAAOI,OAAOxB,GAGdO,EAAOa,EAAQvB,OAGfuB,GAAOI,OAAOb,EAAKc,iBACfC,MAAOX,EAAMY,KACbzC,MAAO6B,EAAM7B,QAGrB2B,GAAMW,OAAOJ,IA5DrB,GAAIT,GAAO3B,IAGXA,MAAKK,eA8DL,IAAIwB,GAAQtB,EAAE,SAId,OAHAqB,GAAQC,EAAOnC,GAGRmC,GAKXe,UAAW,SAASlD,GAChB,MAAO,wDAA0DA,EAAQmD,GAAK,QAItF,QACIvD,KAAMA"}
|
||||
{"version":3,"file":"ui-drilldown.js","sources":["../../../src/mvc/ui/ui-drilldown.js"],"names":["define","Utils","Options","View","BaseIcons","extend","initialize","options","type","display","multiple","prototype","call","this","_setValue","new_value","undefined","header_index","self","values","$","isArray","_","each","v","list","element","_setState","header_id","is_expanded","$button","$subgroup","data","show","removeClass","addClass","hide","_templateOptions","attach","$el","find","on","iterate","$tmpl","header","i","level","has_options","length","new_header","slice","value","$group","uid","append","_templateOption","label","name","push","model","get","_template","attr","id"],"mappings":"AACAA,QAAS,cAAe,qBAAuB,SAAUC,EAAOC,GAEhE,GAAIC,GAAOD,EAAQE,UAAUC,QACzBC,WAAY,SAAUC,GAClBA,EAAQC,KAAWD,EAAQE,SAAW,WACtCF,EAAQG,SAA6B,YAAhBH,EAAQC,KAC7BN,EAAQE,UAAUO,UAAUL,WAAWM,KAAMC,KAAMN,IAIvDO,UAAW,SAAWC,GAElB,GADAb,EAAQE,UAAUO,UAAUG,UAAUF,KAAMC,KAAME,GAC/BC,SAAdD,GAAyC,OAAdA,GAAsBF,KAAKI,aAAe,CACtE,GAAIC,GAAOL,KACPM,EAASC,EAAEC,QAASN,GAAcA,GAAcA,EACpDO,GAAEC,KAAMJ,EAAQ,SAAUK,GACtB,GAAIC,GAAOP,EAAKD,aAAcO,EAC9BF,GAAEC,KAAME,EAAM,SAAUC,GACpBR,EAAKS,UAAWD,GAAS,SAOzCC,UAAW,SAAWC,EAAWC,GAC7B,GAAIC,GAAUjB,KAAKO,EAAG,WAAaQ,GAC/BG,EAAYlB,KAAKO,EAAG,aAAeQ,EACvCE,GAAQE,KAAM,cAAeH,GACxBA,GACDE,EAAUE,OACVH,EAAQI,YAAa,kBAAmBC,SAAU,qBAElDJ,EAAUK,OACVN,EAAQI,YAAa,mBAAoBC,SAAU,oBAK3DE,iBAAkB,WAKd,QAASC,GAAQC,EAAKX,GAClB,GAAIE,GAAUS,EAAIC,KAAM,WAAaZ,EACrCE,GAAQW,GAAI,QAAS,WACjBvB,EAAKS,UAAWC,GAAYE,EAAQE,KAAM,kBAKlD,QAASU,GAAUC,EAAOpC,EAASqC,GAC/BA,EAASA,KACT,KAAMC,IAAKtC,GAAU,CACjB,GAAIuC,GAAQvC,EAASsC,GACjBE,EAAcD,EAAMvC,SAAWuC,EAAMvC,QAAQyC,OAAS,EACtDC,EAAaL,EAAOM,MAAO,EAC/BhC,GAAKD,aAAc6B,EAAMK,OAAUF,EAAWC,MAAO,EACrD,IAAIE,GAAShC,EAAG,SAChB,IAAK2B,EAAc,CACf,GAAInB,GAAY3B,EAAMoD,MAClBvB,EAAUV,EAAG,WAAYe,SAAU,UAAYP,GAAYO,SAAU,yCACrEJ,EAAYX,EAAG,UAAWe,SAAU,YAAcP,GAAYO,SAAU,wBAC5EiB,GAAOE,OAAQlC,EAAG,UACGkC,OAAQxB,GACRwB,OAAQpC,EAAKqC,iBAAmBC,MAAOV,EAAMW,KAAMN,MAAOL,EAAMK,UACrFF,EAAWS,KAAM9B,GACjBc,EAAUX,EAAWe,EAAMvC,QAAS0C,GACpCG,EAAOE,OAAQvB,GACfO,EAAQc,EAAQxB,OAEhBwB,GAAOE,OAAQpC,EAAKqC,iBAAmBC,MAAOV,EAAMW,KAAMN,MAAOL,EAAMK,QAE3ER,GAAMW,OAAQF,IAlCtB,GAAIlC,GAAOL,IACXA,MAAKI,eAsCL,IAAI0B,GAAQvB,EAAG,SAEf,OADAsB,GAASC,EAAO9B,KAAK8C,MAAMC,IAAK,SACzBjB,GAIXkB,UAAW,WACP,MAAOzC,GAAG,UAAWe,SAAU,uCAAwC2B,KAAM,KAAMjD,KAAK8C,MAAMI,MAItG,QACI5D,KAAMA"}
|
||||
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp"},initialize:function(a){this.app=a},create:function(a){var b=this.types[a.type],c="function"==typeof this[b]?this[b].call(this,a):null;return c||(this.app.incompatible=!0,c=a.options?this._fieldSelect(a):this._fieldText(a),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+a.type+").")),void 0===a.value&&(a.value=null),c.value(a.value),c},_fieldData:function(a){var b=this;return new c.View({id:"field-"+a.id,extensions:a.extensions,optional:a.optional,multiple:a.multiple,type:a.type,data:a.options,onchange:function(){b.app.trigger("change")}})},_fieldSelect:function(a){if(a.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];_.each(a.options,function(a){c.push({label:a[0],value:a[1]})});var d=b.Select;switch(a.display){case"checkboxes":d=b.Checkbox;break;case"radio":d=b.Radio}var e=this;return new d.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",multiple:a.multiple,optional:a.optional,searchable:a.searchable,onchange:function(){e.app.trigger("change")}})},_fieldDrilldown:function(a){if(a.is_workflow)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){if(c.options)if(c.area=c.multiple,a.isEmpty(c.value))c.value=null;else if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}var f=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(a){c.onchange?c.onchange(a):f.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,is_workflow:a.is_workflow,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new f({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})},_fieldFtp:function(a){var b=this;return new e.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
|
||||
define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp"},initialize:function(a){this.app=a},create:function(a){var b=this.types[a.type],c="function"==typeof this[b]?this[b].call(this,a):null;return c||(this.app.incompatible=!0,c=a.options?this._fieldSelect(a):this._fieldText(a),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+a.type+").")),void 0===a.value&&(a.value=null),c.value(a.value),c},_fieldData:function(a){var b=this;return new c.View({id:"field-"+a.id,extensions:a.extensions,optional:a.optional,multiple:a.multiple,type:a.type,data:a.options,onchange:function(){b.app.trigger("change")}})},_fieldSelect:function(a){if(a.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];_.each(a.options,function(a){c.push({label:a[0],value:a[1]})});var d=b.Select;switch(a.display){case"checkboxes":d=b.Checkbox;break;case"radio":d=b.Radio}var e=this;return new d.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",multiple:a.multiple,optional:a.optional,onchange:function(){e.app.trigger("change")}})},_fieldDrilldown:function(a){if(a.is_workflow)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,optional:a.optional,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){if(c.options)if(c.area=c.multiple,a.isEmpty(c.value))c.value=null;else if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}var f=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(a){c.onchange?c.onchange(a):f.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,is_workflow:a.is_workflow,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new f({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})},_fieldFtp:function(a){var b=this;return new e.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
|
||||
//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({initialize:function(a,c){this.app=a,this.inputs=c.inputs,c.cls="ui-table-plain",c.cls_tr="section-row",this.table=new b.View(c),this.parameters=new g(a,c),this.setElement(this.table.$el),this.render()},render:function(){this.table.delAll();for(var a in this.inputs)this.add(this.inputs[a])},add:function(b){var c=jQuery.extend(!0,{},b);c.id=b.id=a.uid(),this.app.input_list[c.id]=c;var d=c.type;switch(d){case"conditional":this._addConditional(c);break;case"repeat":this._addRepeat(c);break;case"section":this._addSection(c);break;default:this._addRow(c)}},_addConditional:function(a){var b=this;a.test_param.id=a.id,this.app.options.sustain_conditionals&&(a.test_param.disabled=!0);var c=this._addRow(a.test_param);c.options.onchange=function(c){var d=b.app.data.matchCase(a,c);for(var e in a.cases){var f=a.cases[e],g=a.id+"-section-"+e,h=b.table.get(g),i=!1;for(var j in f.inputs)if(!f.inputs[j].hidden){i=!0;break}e==d&&i?h.fadeIn("fast"):h.hide()}b.app.trigger("change")};for(var d in a.cases){var e=a.id+"-section-"+d,f=new h(this.app,{inputs:a.cases[d].inputs});f.$el.addClass("ui-table-section"),this.table.add(f.$el),this.table.append(e)}c.trigger("change")},_addRepeat:function(a){function b(b){var e=a.id+"-section-"+d++,f=new h(c.app,{inputs:b});g.add({id:e,$el:f.$el,ondel:function(){g.del(e),c.app.trigger("change")}})}for(var c=this,d=0,g=new e.View({title:a.title||"Repeat",title_new:a.title||"",min:a.min,max:a.max,onnew:function(){b(a.inputs),c.app.trigger("change")}}),i=_.size(a.cache),j=0;j<Math.max(Math.max(i,a.min),a.default);j++)b(i>j?a.cache[j]:a.inputs);this.app.options.sustain_repeats&&g.hideOptions();var k=new f(this.app,{label:a.title||a.name,help:a.help,field:g});this.table.add(k.$el),this.table.append(a.id)},_addSection:function(a){var b=this,e=new h(b.app,{inputs:a.inputs}),f=new c.ButtonIcon({icon:"fa-eye-slash",tooltip:"Show/hide section",cls:"ui-button-icon-plain"}),g=new d.View({title:a.title||a.name,cls:"ui-portlet-section",collapsible:!0,collapsed:!0,operations:{button_visible:f}});g.append(e.$el),g.append($("<div/>").addClass("ui-form-info").html(a.help)),g.setOperation("button_visible",function(){g.collapsed?g.expand():g.collapse()}),g.on("expanded",function(){f.setIcon("fa-eye")}),g.on("collapsed",function(){f.setIcon("fa-eye-slash")}),this.app.on("expand",function(a){g.$("#"+a).length>0&&g.expand()}),a.expanded&&g.expand(),this.table.add(g.$el),this.table.append(a.id)},_addRow:function(a){var b=a.id,c=this.parameters.create(a);this.app.field_list[b]=c;var d=new f(this.app,{name:a.name,label:a.label||a.name,value:a.value,text_value:a.text_value||a.value,collapsible_value:a.collapsible_value,collapsible_preview:a.collapsible_preview,help:a.help,argument:a.argument,disabled:a.disabled,field:c});return this.app.element_list[b]=d,this.table.add(d.$el),this.table.append(b),a.hidden&&this.table.get(b).hide(),c}});return{View:h}});
|
||||
define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({initialize:function(a,c){this.app=a,this.inputs=c.inputs,c.cls="ui-table-plain",c.cls_tr="section-row",this.table=new b.View(c),this.parameters=new g(a,c),this.setElement(this.table.$el),this.render()},render:function(){this.table.delAll();for(var a in this.inputs)this.add(this.inputs[a])},add:function(b){var c=jQuery.extend(!0,{},b);c.id=b.id=a.uid(),this.app.input_list[c.id]=c;var d=c.type;switch(d){case"conditional":this._addConditional(c);break;case"repeat":this._addRepeat(c);break;case"section":this._addSection(c);break;default:this._addRow(c)}},_addConditional:function(a){var b=this;a.test_param.id=a.id,this.app.options.sustain_conditionals&&(a.test_param.disabled=!0);var c=this._addRow(a.test_param);c.model&&c.model.set("onchange",function(c){var d=b.app.data.matchCase(a,c);for(var e in a.cases){var f=a.cases[e],g=a.id+"-section-"+e,h=b.table.get(g),i=!1;for(var j in f.inputs)if(!f.inputs[j].hidden){i=!0;break}e==d&&i?h.fadeIn("fast"):h.hide()}b.app.trigger("change")});for(var d in a.cases){var e=a.id+"-section-"+d,f=new h(this.app,{inputs:a.cases[d].inputs});f.$el.addClass("ui-table-section"),this.table.add(f.$el),this.table.append(e)}c.trigger("change")},_addRepeat:function(a){function b(b){var e=a.id+"-section-"+d++,f=new h(c.app,{inputs:b});g.add({id:e,$el:f.$el,ondel:function(){g.del(e),c.app.trigger("change")}})}for(var c=this,d=0,g=new e.View({title:a.title||"Repeat",title_new:a.title||"",min:a.min,max:a.max,onnew:function(){b(a.inputs),c.app.trigger("change")}}),i=_.size(a.cache),j=0;j<Math.max(Math.max(i,a.min),a.default);j++)b(i>j?a.cache[j]:a.inputs);this.app.options.sustain_repeats&&g.hideOptions();var k=new f(this.app,{label:a.title||a.name,help:a.help,field:g});this.table.add(k.$el),this.table.append(a.id)},_addSection:function(a){var b=this,e=new h(b.app,{inputs:a.inputs}),f=new c.ButtonIcon({icon:"fa-eye-slash",tooltip:"Show/hide section",cls:"ui-button-icon-plain"}),g=new d.View({title:a.title||a.name,cls:"ui-portlet-section",collapsible:!0,collapsed:!0,operations:{button_visible:f}});g.append(e.$el),g.append($("<div/>").addClass("ui-form-info").html(a.help)),g.setOperation("button_visible",function(){g.collapsed?g.expand():g.collapse()}),g.on("expanded",function(){f.setIcon("fa-eye")}),g.on("collapsed",function(){f.setIcon("fa-eye-slash")}),this.app.on("expand",function(a){g.$("#"+a).length>0&&g.expand()}),a.expanded&&g.expand(),this.table.add(g.$el),this.table.append(a.id)},_addRow:function(a){var b=a.id,c=this.parameters.create(a);this.app.field_list[b]=c;var d=new f(this.app,{name:a.name,label:a.label||a.name,value:a.value,text_value:a.text_value||a.value,collapsible_value:a.collapsible_value,collapsible_preview:a.collapsible_preview,help:a.help,argument:a.argument,disabled:a.disabled,field:c});return this.app.element_list[b]=d,this.table.add(d.$el),this.table.append(b),a.hidden&&this.table.get(b).hide(),c}});return{View:h}});
|
||||
//# sourceMappingURL=../../../maps/mvc/form/form-section.js.map
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-options"],function(a,b){var c=b.BaseIcons.extend({initialize:function(a){a.type=a.display||"checkbox",a.multiple="checkbox"==a.display,b.BaseIcons.prototype.initialize.call(this,a),this.initial=!0},value:function(a){var c=b.BaseIcons.prototype.value.call(this,a);if(this.initial&&null!==c&&this.header_index){this.initial=!1;var d=c;$.isArray(d)||(d=[d]);for(var e in d){var f=this.header_index[d[e]];for(var g in f)this._setState(f[g],!0)}}return c},_setState:function(a,b){var c=this.$(".button-"+a),d=this.$(".subgroup-"+a);c.data("is_expanded",b),b?(d.fadeIn("fast"),c.removeClass("fa-plus-square"),c.addClass("fa-minus-square")):(d.hide(),c.removeClass("fa-minus-square"),c.addClass("fa-plus-square"))},_templateOptions:function(b){function c(a,b){var c=a.find(".button-"+b);c.on("click",function(){e._setState(b,!c.data("is_expanded"))})}function d(b,f,g){g=g||[];for(i in f){var h=f[i],j=h.options.length>0,k=g.slice(0);e.header_index[h.value]=k.slice(0);var l=$("<div/>");if(j){var m=a.uid(),n=$('<span class="button-'+m+' ui-drilldown-button fa fa-plus-square"/>'),o=$('<div class="subgroup-'+m+'" style="display: none; margin-left: 25px;"/>');k.push(m);var p=$("<div/>");p.append(n),p.append(e._templateOption({label:h.name,value:h.value})),l.append(p),d(o,h.options,k),l.append(o),c(l,m)}else l.append(e._templateOption({label:h.name,value:h.value}));b.append(l)}}var e=this;this.header_index={};var f=$("<div/>");return d(f,b),f},_template:function(a){return'<div class="ui-options-list drilldown-container" id="'+a.id+'"/>'}});return{View:c}});
|
||||
define(["utils/utils","mvc/ui/ui-options"],function(a,b){var c=b.BaseIcons.extend({initialize:function(a){a.type=a.display||"checkbox",a.multiple="checkbox"==a.type,b.BaseIcons.prototype.initialize.call(this,a)},_setValue:function(a){if(b.BaseIcons.prototype._setValue.call(this,a),void 0!==a&&null!==a&&this.header_index){var c=this,d=$.isArray(a)?a:[a];_.each(d,function(a){var b=c.header_index[a];_.each(b,function(a){c._setState(a,!0)})})}},_setState:function(a,b){var c=this.$(".button-"+a),d=this.$(".subgroup-"+a);c.data("is_expanded",b),b?(d.show(),c.removeClass("fa-plus-square").addClass("fa-minus-square")):(d.hide(),c.removeClass("fa-minus-square").addClass("fa-plus-square"))},_templateOptions:function(){function b(a,b){var c=a.find(".button-"+b);c.on("click",function(){d._setState(b,!c.data("is_expanded"))})}function c(e,f,g){g=g||[];for(i in f){var h=f[i],j=h.options&&h.options.length>0,k=g.slice(0);d.header_index[h.value]=k.slice(0);var l=$("<div/>");if(j){var m=a.uid(),n=$("<span/>").addClass("button-"+m).addClass("ui-drilldown-button fa fa-plus-square"),o=$("<div/>").addClass("subgroup-"+m).addClass("ui-drilldown-subgroup");l.append($("<div/>").append(n).append(d._templateOption({label:h.name,value:h.value}))),k.push(m),c(o,h.options,k),l.append(o),b(l,m)}else l.append(d._templateOption({label:h.name,value:h.value}));e.append(l)}}var d=this;this.header_index={};var e=$("<div/>");return c(e,this.model.get("data")),e},_template:function(){return $("<div/>").addClass("ui-options-list drilldown-container").attr("id",this.model.id)}});return{View:c}});
|
||||
//# sourceMappingURL=../../../maps/mvc/ui/ui-drilldown.js.map
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-buttons"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.options=a.merge(c,{visible:!0,data:[],id:a.uid(),error_text:"No options available.",wait_text:"Please wait...",multiple:!1}),this.setElement('<div class="ui-options"/>'),this.$message=$("<div/>"),this.$options=$(this._template(c)),this.$menu=$('<div class="ui-options-menu"/>'),this.$el.append(this.$message),this.$el.append(this.$menu),this.$el.append(this.$options),this.options.multiple&&(this.all_button=new b.ButtonCheck({onclick:function(){d.$("input").prop("checked",0!==d.all_button.value()),d.trigger("change")}}),this.$menu.append(this.all_button.$el)),this.options.visible||this.$el.hide(),this.update(this.options.data),void 0!==this.options.value&&this.value(this.options.value),this.on("change",function(){this.options.onchange&&this.options.onchange(this.value())})},update:function(a){var b=this._getValue();if(this.$options.empty(),this._templateOptions)this.$options.append(this._templateOptions(a));else for(var c in a){var d=$(this._templateOption(a[c]));d.addClass("ui-option"),d.tooltip({title:a[c].tooltip,placement:"bottom"}),this.$options.append(d)}var e=this;this.$("input").on("change",function(){e.value(e._getValue()),e.trigger("change")}),this.value(b),this.unwait()},value:function(a){if(void 0!==a&&(this.$("input").prop("checked",!1),null!==a)){a instanceof Array||(a=[a]);for(var b in a)this.$('input[value="'+a[b]+'"]').first().prop("checked",!0)}var c=this._getValue();if(this.all_button){var d=c;d=d instanceof Array?d.length:0,this.all_button.value(d,this._size())}return c},exists:function(a){if(void 0!==a){a instanceof Array||(a=[a]);for(var b in a)if(this.$('input[value="'+a[b]+'"]').length>0)return!0}return!1},first:function(){var a=this.$("input").first();return a.length>0?a.val():null},wait:function(){0==this._size()&&(this._messageShow(this.options.wait_text,"info"),this.$options.hide(),this.$menu.hide())},unwait:function(){var a=this._size();0==a?(this._messageShow(this.options.error_text,"danger"),this.$options.hide(),this.$menu.hide()):(this._messageHide(),this.$options.css("display","inline-block"),this.$menu.show())},_getValue:function(){var b=[];return this.$(":checked").each(function(){b.push($(this).val())}),a.isEmpty(b)?null:this.options.multiple?b:b[0]},_size:function(){return this.$(".ui-option").length},_messageShow:function(a,b){this.$message.show(),this.$message.removeClass(),this.$message.addClass("ui-message alert alert-"+b),this.$message.html(a)},_messageHide:function(){this.$message.hide()},_template:function(){return'<div class="ui-options-list"/>'}}),d=c.extend({_templateOption:function(b){var c=a.uid();return'<div class="ui-option"><input id="'+c+'" type="'+this.options.type+'" name="'+this.options.id+'" value="'+b.value+'"/><label class="ui-options-label" for="'+c+'">'+b.label+"</label></div>"}}),e={};e.View=d.extend({initialize:function(a){a.type="radio",d.prototype.initialize.call(this,a)}});var f={};f.View=d.extend({initialize:function(a){a.multiple=!0,a.type="checkbox",d.prototype.initialize.call(this,a)}});var g={};return g.View=c.extend({initialize:function(a){c.prototype.initialize.call(this,a)},value:function(a){return void 0!==a&&(this.$("input").prop("checked",!1),this.$("label").removeClass("active"),this.$('[value="'+a+'"]').prop("checked",!0).closest("label").addClass("active")),this._getValue()},_templateOption:function(a){var b="fa "+a.icon;a.label||(b+=" no-padding");var c='<label class="btn btn-default">';return a.icon&&(c+='<i class="'+b+'"/>'),c+='<input type="radio" name="'+this.options.id+'" value="'+a.value+'"/>',a.label&&(c+=a.label),c+="</label>"},_template:function(){return'<div class="btn-group ui-radiobutton" data-toggle="buttons"/>'}}),{Base:c,BaseIcons:d,Radio:e,RadioButton:g,Checkbox:f}});
|
||||
define(["utils/utils","mvc/ui/ui-buttons"],function(a,b){var c=Backbone.View.extend({initialize:function(b){var c=this;this.model=b&&b.model||new Backbone.Model({visible:!0,data:[],id:a.uid(),error_text:"No options available.",wait_text:"Please wait...",multiple:!1,optional:!1,onchange:function(){}}).set(b),this.listenTo(this.model,"change:value",this._changeValue,this),this.listenTo(this.model,"change:wait",this._changeWait,this),this.listenTo(this.model,"change:data",this._changeData,this),this.listenTo(this.model,"change:visible",this._changeVisible,this),this.on("change",function(){c.model.get("onchange")(c.value())}),this.render()},render:function(){var a=this;this.$el.empty().removeClass().addClass("ui-options").append(this.$message=$("<div/>")).append(this.$menu=$("<div/>").addClass("ui-options-menu")).append(this.$options=$(this._template())),this.all_button=null,this.model.get("multiple")&&(this.all_button=new b.ButtonCheck({onclick:function(){a.$("input").prop("checked",0!==a.all_button.value()),a.value(a._getValue()),a.trigger("change")}}),this.$menu.append(this.all_button.$el)),this._changeData(),this._changeWait(),this._changeVisible()},_changeData:function(){var a=this;this.$options.empty(),this._templateOptions?this.$options.append(this._templateOptions(this.model.get("data"))):_.each(this.model.get("data"),function(b){a.$options.append($(a._templateOption(b)).addClass("ui-option").tooltip({title:b.tooltip,placement:"bottom"}))});var a=this;this.$("input").on("change",function(){a.value(a._getValue()),a.trigger("change")}),this._changeValue(),this._changeWait()},_changeVisible:function(){this.$el[this.model.get("visible")?"show":"hide"]()},_changeWait:function(){this.model.get("wait")?0===this.length()&&(this._messageShow(this.model.get("wait_text"),"info"),this.$options.hide(),this.$menu.hide()):0===this.length()?(this._messageShow(this.model.get("error_text"),"danger"),this.$options.hide(),this.$menu.hide()):(this.$message.hide(),this.$options.css("display","inline-block"),this.$menu.show())},_changeValue:function(){this._setValue(this.model.get("value")),null!==this._getValue()||this.model.get("multiple")||this.model.get("optional")||this._setValue(this.first()),this.all_button&&this.all_button.value($.isArray(this._getValue())?this._getValue().length:0,this.length())},value:function(a){return void 0!==a&&this.model.set("value",a),this._getValue()},first:function(){var a=this.$("input").first();return a.length>0?a.val():null},wait:function(){this.model.set("wait",!0)},unwait:function(){this.model.set("wait",!1)},length:function(){return this.$(".ui-option").length},_setValue:function(a){var b=this;if(void 0!==a&&(this.$("input").prop("checked",!1),null!==a)){var c=$.isArray(a)?a:[a];_.each(c,function(a){b.$('input[value="'+a+'"]').first().prop("checked",!0)})}},_getValue:function(){var b=[];return this.$(":checked").each(function(){b.push($(this).val())}),a.isEmpty(b)?null:this.model.get("multiple")?b:b[0]},_messageShow:function(a,b){this.$message.show().removeClass().addClass("ui-message alert alert-"+b).html(a)},_template:function(){return $("<div/>").addClass("ui-options-list")}}),d=c.extend({_templateOption:function(b){var c=a.uid();return $("<div/>").addClass("ui-option").append($("<input/>").attr({id:c,type:this.model.get("type"),name:this.model.id,value:b.value})).append($("<label/>").addClass("ui-options-label").attr("for",c).html(b.label))}}),e={};e.View=d.extend({initialize:function(a){a.type="radio",d.prototype.initialize.call(this,a)}});var f={};f.View=d.extend({initialize:function(a){a.type="checkbox",a.multiple=!0,d.prototype.initialize.call(this,a)}});var g={};return g.View=c.extend({initialize:function(a){c.prototype.initialize.call(this,a)},_setValue:function(a){void 0!==a&&(this.$("input").prop("checked",!1),this.$("label").removeClass("active"),this.$('[value="'+a+'"]').prop("checked",!0).closest("label").addClass("active"))},_templateOption:function(a){var b=$("<label/>").addClass("btn btn-default");return a.icon&&b.append($("<i/>").addClass("fa").addClass(a.icon).addClass(!a.label&&"no-padding")),b.append($("<input/>").attr({type:"radio",name:this.model.id,value:a.value})),a.label&&b.append(a.label),b},_template:function(){return $("<div/>").addClass("btn-group ui-radiobutton").attr("data-toggle","buttons")}}),{Base:c,BaseIcons:d,Radio:e,RadioButton:g,Checkbox:f}});
|
||||
//# sourceMappingURL=../../../maps/mvc/ui/ui-options.js.map
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-buttons"],function(a,b){var c=Backbone.View.extend({optionsDefault:{id:a.uid(),cls:"ui-select",error_text:"No options available",empty_text:"Nothing selected",visible:!0,wait:!1,multiple:!1,searchable:!0,optional:!1},initialize:function(c){var d=this;this.model=new Backbone.Model,this.options=a.merge(c,this.optionsDefault),this.setElement(this._template(this.options)),this.$select=this.$el.find(".select"),this.$icon_dropdown=this.$el.find(".icon-dropdown"),this.$icon_dropdown.on("click",function(){d.$select.select2&&d.$select.select2("open")});var e=null;this.$(".icon-resize").on("mousedown",function(a){var b=a.pageY,c=d.$select.height();e=e||c,$("#dd-helper").show().on("mousemove",function(a){d.$select.height(Math.max(c+(a.pageY-b),e))}).on("mouseup mouseleave",function(){$("#dd-helper").hide().off()})}),this.options.multiple&&(this.options.searchable?(this.all_button=new b.ButtonCheck({onclick:function(){var a=[];0!==d.all_button.value()&&(a=d._availableOptions()),d.value(a),d.trigger("change")}}),this.$el.prepend(this.all_button.$el)):this.$el.addClass("ui-select-multiple"),this.$select.prop("multiple",!0),this.$icon_dropdown.remove()),this.update(this.options.data),void 0!==this.options.value&&this.value(this.options.value),this.options.visible||this.hide(),this.options.wait?this.wait():this.show(),this.$select.on("change",function(){d.trigger("change")}),this.on("change",function(){d.options.onchange&&d.options.onchange(this.value())})},value:function(a){void 0!==a&&(null===a&&(a="__null__"),(this.exists(a)||this.options.multiple)&&(this.$select.val(a),this.$select.select2&&this.$select.select2("val",a)));var b=this._getValue();return this.all_button&&this.all_button.value($.isArray(b)&&b.length||0,this._size()),b},first:function(){var a=this.$select.find("option").first();return a.length>0?a.val():null},text:function(){return this.$select.find("option:selected").text()},show:function(){this.unwait(),this.$select.show(),this.$el.show()},hide:function(){this.$el.hide()},wait:function(){this.$icon_dropdown.removeClass(),this.$icon_dropdown.addClass("icon-dropdown fa fa-spinner fa-spin")},unwait:function(){this.$icon_dropdown.removeClass(),this.$icon_dropdown.addClass("icon-dropdown fa fa-caret-down")},disabled:function(){return this.$select.is(":disabled")},enable:function(){this.$select.prop("disabled",!1)},disable:function(){this.$select.prop("disabled",!0)},add:function(a,b){_.each(this.model.get("options"),function(b){!_.findWhere(a,b)&&a.push(b)}),b&&a&&a.sort(b),this.update(a)},update:function(a){var b=this._getValue();this.$select.find("option").remove(),!this.options.multiple&&this.options.optional&&this.$select.append(this._templateOption({value:"__null__",label:this.options.empty_text})),this.model.set("options",a);for(var c in a)this.$select.append(this._templateOption(a[c]));0==this._size()?(this.disable(),this.$select.append(this._templateOption({value:"__null__",label:this.options.error_text}))):this.enable(),this.options.searchable&&(this.$select.select2("destroy"),this.$select.select2({closeOnSelect:!this.options.multiple}),this.$(".select2-container .select2-search input").off("blur")),this.value(b),null!==this._getValue()||this.options.multiple&&this.options.optional||this.value(this.first())},setOnChange:function(a){this.options.onchange=a},exists:function(a){return this.$select.find('option[value="'+a+'"]').length>0},_getValue:function(){var b=this.$select.val();return a.isEmpty(b)?null:b},_availableOptions:function(){var a=[];return this.$select.find("option").each(function(b,c){a.push($(c).attr("value"))}),a},_size:function(){return this.$select.find("option").length},_templateOption:function(a){return'<option value="'+a.value+'">'+_.escape(a.label)+"</option>"},_template:function(a){return'<div id="'+a.id+'" class="'+a.cls+'"><select id="'+a.id+'_select" class="select"/><div class="icon-dropdown"/><div class="icon-resize"><i class="fa fa-angle-double-right fa-rotate-45"/></div></div>'}});return{View:c}});
|
||||
define(["utils/utils","mvc/ui/ui-buttons"],function(a,b){var c=Backbone.View.extend({initialize:function(b){var c=this;this.model=b&&b.model||new Backbone.Model({id:a.uid(),cls:"ui-select",error_text:"No options available",empty_text:"Nothing selected",visible:!0,wait:!1,multiple:!1,searchable:!0,optional:!1,disabled:!1,onchange:function(){}}).set(b),this.on("change",function(){c.model.get("onchange")(c.value())}),this.listenTo(this.model,"change:data",this._changeData,this),this.listenTo(this.model,"change:disabled",this._changeDisabled,this),this.listenTo(this.model,"change:wait",this._changeWait,this),this.listenTo(this.model,"change:visible",this._changeVisible,this),this.listenTo(this.model,"change:value",this._changeValue,this),this.listenTo(this.model,"change:multiple change:searchable change:cls change:id",this.render,this),this.render()},render:function(){var a=this;this.$el.empty().append(this.$select=$("<select/>")).append(this.$dropdown=$("<div/>")).append(this.$resize=$("<div/>").append(this.$resize_icon=$("<i/>"))),this.$el.addClass(this.model.get("cls")).attr("id",this.model.get("id")),this.$select.addClass("select").attr("id",this.model.get("id")+"_select").prop("multiple",this.model.get("multiple")).on("change",function(){a.value(a._getValue()),a.trigger("change")}),this.$dropdown.hide(),this.model.get("multiple")||this.$dropdown.show().on("click",function(){a.$select.select2&&a.$select.select2("open")}),this.$resize.hide(),this.model.get("multiple")&&!this.model.get("searchable")&&(this.$resize_icon.addClass("fa fa-angle-double-right fa-rotate-45"),this.$resize.show().removeClass().addClass("icon-resize").off("mousedown").on("mousedown",function(b){var c=b.pageY,d=a.$select.height();a.minHeight=a.minHeight||d,$("#dd-helper").show().on("mousemove",function(b){a.$select.height(Math.max(d+(b.pageY-c),a.minHeight))}).on("mouseup mouseleave",function(){$("#dd-helper").hide().off()})})),this.all_button=null,this.model.get("multiple")&&(this.model.get("searchable")?(this.all_button=new b.ButtonCheck({onclick:function(){var b=[];0!==a.all_button.value()&&_.each(a.model.get("data"),function(a){b.push(a.value)}),a.value(b),a.trigger("change")}}),this.$el.prepend(this.all_button.$el)):this.$el.addClass("ui-select-multiple")),this._changeData(),this._changeWait(),this._changeVisible()},_changeData:function(){var a=this;this.$select.find("option").remove(),!this.model.get("multiple")&&this.model.get("optional")&&this.$select.append(this._templateOption({value:"__null__",label:a.model.get("empty_text")})),_.each(this.model.get("data"),function(b){a.$select.append(a._templateOption(b))}),0==this.length()?this.$select.prop("disabled",!0).append(this._templateOption({value:"__null__",label:this.model.get("error_text")})):this.$select.prop("disabled",!1),this.$select.select2("destroy"),this.model.get("searchable")&&(this.$select.select2({closeOnSelect:!this.model.get("multiple")}),this.$(".select2-container .select2-search input").off("blur")),this._changeValue()},_changeDisabled:function(){this.$select.prop("disabled",this.model.get("disabled"))},_changeWait:function(){this.$dropdown.removeClass().addClass("icon-dropdown fa").addClass(this.model.get("wait")?"fa-spinner fa-spin":"fa-caret-down")},_changeVisible:function(){this.$el[this.model.get("visible")?"show":"hide"](),this.$select[this.model.get("visible")?"show":"hide"]()},_changeValue:function(){this._setValue(this.model.get("value")),null!==this._getValue()||this.model.get("multiple")||this.model.get("optional")||this._setValue(this.first());var a=this._getValue();this.all_button&&this.all_button.value($.isArray(a)?a.length:0,this.length())},value:function(a){return void 0!==a&&this.model.set("value",a),this._getValue()},first:function(){var a=this.$select.find("option").first();return a.length>0?a.val():null},exists:function(a){return this.$select.find('option[value="'+a+'"]').length>0},text:function(){return this.$select.find("option:selected").first().text()},show:function(){this.model.set("visible",!0)},hide:function(){this.model.set("visible",!1)},wait:function(){this.model.set("wait",!0)},unwait:function(){this.model.set("wait",!1)},disabled:function(){return this.model.get("disabled")},enable:function(){this.model.set("disabled",!1)},disable:function(){this.model.set("disabled",!0)},add:function(a,b){_.each(this.model.get("data"),function(b){!_.findWhere(a,b)&&a.push(b)}),b&&a&&a.sort(b),this.model.set("data",a)},update:function(a){this.model.set("data",a)},setOnChange:function(a){this.model.set("onchange",a)},length:function(){return $.isArray(this.model.get("data"))?this.model.get("data").length:0},_setValue:function(a){void 0!==a&&(a=null!==a?a:"__null__",this.$select.val(a),this.$select.select2&&this.$select.select2("val",a))},_getValue:function(){var b=this.$select.val();return a.isEmpty(b)?null:b},_templateOption:function(a){return $("<option/>").attr("value",a.value).html(_.escape(a.label))}});return{View:c}});
|
||||
//# sourceMappingURL=../../../maps/mvc/ui/ui-select-default.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -4,6 +4,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="../../../static/style/blue/base.css" media="screen" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
|
||||
<script data-main="../test-common" src="../scripts/libs/require.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
+412
-20
@@ -1,6 +1,6 @@
|
||||
/* global define, QUnit, module, test, ok, equal, deepEqual, notEqual */
|
||||
define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
], function( testApp, Ui, SelectContent ){
|
||||
define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content', 'mvc/ui/ui-drilldown'
|
||||
], function( testApp, Ui, SelectContent, Drilldown ){
|
||||
'use strict';
|
||||
module( 'Ui test', {
|
||||
setup: function() {
|
||||
@@ -11,6 +11,398 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
}
|
||||
} );
|
||||
|
||||
test( 'options', function() {
|
||||
function _test( obj, options ) {
|
||||
ok( JSON.stringify( obj.value() ) == JSON.stringify( options.value ), 'Selected value is ' + options.value );
|
||||
ok( obj.$menu.css( 'display' ) == ( options.menu_visible ? 'block' : 'none' ), 'Menu visibility: ' + options.menu_visible );
|
||||
ok( obj.$message.css( 'display' ) == ( options.message_visible ? 'block' : 'none' ), 'Message visibility: ' + options.message_visible );
|
||||
ok( obj.$options.css( 'display' ) == ( options.options_visible ? 'inline-block' : 'none' ), 'Options visibility: ' + options.options_visible );
|
||||
options.message_cls && ok( obj.$message.hasClass( options.message_cls ), 'Message has class: ' + options.message_cls );
|
||||
ok( obj.length() === options.length, 'Number of options: ' + options.length );
|
||||
options.message_text && ok( obj.$message.html() === options.message_text, 'Message text is: ' + options.message_text );
|
||||
options.first && ok( obj.first() === options.first, 'First value is: ' + options.first );
|
||||
options.all_icon && ok( obj.all_button.$( '.icon' ).hasClass( options.all_icon ), 'All button in correct state: ' + options.all_icon );
|
||||
ok( obj.$menu.find( '.ui-button-check' ).length === ( Boolean( options.all_icon ) ? 1 : 0 ), 'All button available: ' + Boolean( options.all_active ) );
|
||||
}
|
||||
|
||||
var radio = new Ui.Radio.View({});
|
||||
$( 'body' ).prepend( radio.$el );
|
||||
radio.model.set( 'visible', false );
|
||||
ok( radio.value() === null, 'Initial value is `null`.' );
|
||||
ok( radio.$el.css( 'display' ) === 'none', 'Options hidden.' );
|
||||
radio.model.set( 'visible', true );
|
||||
ok( radio.$el.css( 'display' ) === 'block', 'Options shown.' );
|
||||
radio.model.set( 'value', 'Unavailable.' );
|
||||
ok( radio.value() === null, 'Unavailable value ignored.' );
|
||||
_test( radio, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
message_text: 'No options available.',
|
||||
message_cls: 'alert-danger',
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0
|
||||
});
|
||||
radio.model.set( 'wait', true );
|
||||
_test( radio, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
message_text: 'Please wait...',
|
||||
message_cls: 'alert-info',
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0
|
||||
});
|
||||
radio.model.set( 'wait', false );
|
||||
_test( radio, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
message_text: 'No options available.',
|
||||
message_cls: 'alert-danger',
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0
|
||||
});
|
||||
radio.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' } ] );
|
||||
_test( radio, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valuea',
|
||||
first: 'valuea',
|
||||
length: 2
|
||||
});
|
||||
radio.model.set( 'value', 'valueb' );
|
||||
_test( radio, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valueb',
|
||||
first: 'valuea',
|
||||
length: 2
|
||||
});
|
||||
radio.model.set( 'data', null );
|
||||
_test( radio, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
message_text: 'No options available.',
|
||||
message_cls: 'alert-danger',
|
||||
options_visible: false,
|
||||
value: null,
|
||||
first: null,
|
||||
length: 0
|
||||
});
|
||||
radio.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' }, { value: 'valuec', label: 'labelc' } ] );
|
||||
_test( radio, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valueb',
|
||||
first: 'valuea',
|
||||
length: 3
|
||||
});
|
||||
radio.$( 'input' ).last().click();
|
||||
_test( radio, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valuec',
|
||||
first: 'valuea',
|
||||
length: 3
|
||||
});
|
||||
|
||||
var check = new Ui.Checkbox.View({});
|
||||
$( 'body' ).prepend( check.$el );
|
||||
_test( check, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
message_text: 'No options available.',
|
||||
message_cls: 'alert-danger',
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
check.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' }, { value: 'valuec', label: 'labelc' } ] );
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: null,
|
||||
length: 3,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
check.model.set( 'value', [ 'valuea', 'valuec' ] );
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea', 'valuec' ],
|
||||
length: 3,
|
||||
all_icon: 'fa-minus-square-o'
|
||||
});
|
||||
check.model.set( 'value', [ 'valuea', 'valueb', 'valuec' ] );
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea', 'valueb', 'valuec' ],
|
||||
length: 3,
|
||||
all_icon: 'fa-check-square-o'
|
||||
});
|
||||
check.model.set( 'data', [] );
|
||||
_test( check, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
check.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' } ] );
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea', 'valueb' ],
|
||||
first: 'valuea',
|
||||
length: 2,
|
||||
all_icon: 'fa-check-square-o'
|
||||
});
|
||||
check.all_button.$el.click();
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: null,
|
||||
first: 'valuea',
|
||||
length: 2,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
check.all_button.$el.click();
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea', 'valueb' ],
|
||||
first: 'valuea',
|
||||
length: 2,
|
||||
all_icon: 'fa-check-square-o'
|
||||
});
|
||||
check.$( 'input' ).last().click();
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea' ],
|
||||
first: 'valuea',
|
||||
length: 2,
|
||||
all_icon: 'fa-minus-square-o'
|
||||
});
|
||||
check.$( 'input' ).last().click();
|
||||
_test( check, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuea', 'valueb' ],
|
||||
first: 'valuea',
|
||||
length: 2,
|
||||
all_icon: 'fa-check-square-o'
|
||||
});
|
||||
|
||||
var radiobutton = new Ui.RadioButton.View({});
|
||||
$( 'body' ).prepend( radiobutton.$el );
|
||||
radiobutton.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' } ] );
|
||||
_test( radiobutton, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valuea',
|
||||
first: 'valuea',
|
||||
length: 2
|
||||
});
|
||||
radiobutton.$( 'input' ).last().click();
|
||||
_test( radiobutton, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valueb',
|
||||
first: 'valuea',
|
||||
length: 2
|
||||
});
|
||||
|
||||
var drilldown = new Drilldown.View({});
|
||||
$( 'body' ).prepend( drilldown.$el );
|
||||
drilldown.model.set( 'data', [ { value: 'valuea', name: 'labela', options: [
|
||||
{ value: 'valueb', name: 'labelb' },
|
||||
{ value: 'valuec', name: 'labelc' },
|
||||
{ value: 'valued', name: 'labeld', options: [
|
||||
{ value: 'valuee', name: 'labele' },
|
||||
{ value: 'valuef', name: 'labelf' } ] } ] },
|
||||
{ value: 'valueg', name: 'labelg', options: [
|
||||
{ value: 'valueh', name: 'labelh' },
|
||||
{ value: 'valuei', name: 'labeli' },
|
||||
{ value: 'valuej', name: 'labelj', options: [
|
||||
{ value: 'valuek', name: 'labelk' },
|
||||
{ value: 'valuel', name: 'labell' },
|
||||
{ value: 'valuem', name: 'labelm' } ] } ] },
|
||||
{ value: 'valuen', name: 'labeln' } ] );
|
||||
_test( drilldown, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: null,
|
||||
first: 'valuea',
|
||||
length: 14,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
drilldown.model.set( 'value', [ 'valuek', 'valuen' ] );
|
||||
_test( drilldown, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: [ 'valuek', 'valuen' ],
|
||||
first: 'valuea',
|
||||
length: 14,
|
||||
all_icon: 'fa-minus-square-o'
|
||||
});
|
||||
var drillradio = new Drilldown.View( { display: 'radio' } );
|
||||
$( 'body' ).prepend( drillradio.$el );
|
||||
_test( drillradio, {
|
||||
menu_visible: false,
|
||||
message_visible: true,
|
||||
options_visible: false,
|
||||
value: null,
|
||||
length: 0
|
||||
});
|
||||
drillradio.model.set( 'data', drilldown.model.get( 'data' ) );
|
||||
_test( drillradio, {
|
||||
menu_visible: true,
|
||||
message_visible: false,
|
||||
options_visible: true,
|
||||
value: 'valuea',
|
||||
first: 'valuea',
|
||||
length: 14
|
||||
});
|
||||
});
|
||||
|
||||
test( 'select-default', function() {
|
||||
function _test( options ) {
|
||||
ok( JSON.stringify( select.value() ) == JSON.stringify( options.value ), 'Selected value is ' + options.value );
|
||||
ok( select.text() == options.label, 'Selected label is ' + options.label );
|
||||
ok( select.$el.display === options.visible ? 'block' : 'none', options.visible ? 'Visible' : 'Hidden' );
|
||||
ok( select.$select.find( 'option' ).length === options.count && select.length(), 'Found ' + options.count + ' option' );
|
||||
options.exists && ok( select.$select.find( 'option[value="' + options.exists + '"]' ).length === 1, 'Found value: ' + options.exists );
|
||||
ok( select.$select.prop( 'multiple' ) === Boolean( options.multiple ), 'Multiple state set to: ' + options.multiple );
|
||||
ok( Boolean( select.all_button ) === Boolean( options.multiple ), 'Visiblity of select all button correct.' );
|
||||
options.multiple && ok( select.all_button.$( '.icon' ).hasClass( options.all_icon ), 'All button in correct state: ' + options.all_icon );
|
||||
}
|
||||
var select = new Ui.Select.View({});
|
||||
$( 'body' ).prepend( select.$el );
|
||||
ok( select.first() === '__null__', 'First select is \'__null__\'' );
|
||||
ok( select.$dropdown.hasClass( 'fa-caret-down' ), 'Caret down shown.' );
|
||||
select.model.set( 'data', [ { value: 'value', label: 'label' } ] );
|
||||
_test({
|
||||
value : 'value',
|
||||
label : 'label',
|
||||
visible : true,
|
||||
count : 1
|
||||
});
|
||||
select.model.set( 'data', [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' } ] );
|
||||
_test({
|
||||
value : 'valuea',
|
||||
label : 'labela',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valueb'
|
||||
});
|
||||
select.value( 'valueb' );
|
||||
_test({
|
||||
value : 'valueb',
|
||||
label : 'labelb',
|
||||
visible : true,
|
||||
count : 2
|
||||
});
|
||||
select.model.set( 'data', [ { value: 'value', label: 'label' } ] );
|
||||
_test({
|
||||
value : 'value',
|
||||
label : 'label',
|
||||
visible : true,
|
||||
count : 1
|
||||
});
|
||||
select.model.set( { visible: false, value: 'unavailable' } );
|
||||
_test({
|
||||
value : 'value',
|
||||
label : 'label',
|
||||
visible : false,
|
||||
count : 1
|
||||
});
|
||||
select.model.set( { visible: true, value: 'valueb', data: [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' } ] } );
|
||||
_test({
|
||||
value : 'valueb',
|
||||
label : 'labelb',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valuea'
|
||||
});
|
||||
select.model.set( { multiple: true } );
|
||||
_test({
|
||||
value : [ 'valueb' ],
|
||||
label : 'labelb',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valuea',
|
||||
multiple: true,
|
||||
all_icon: 'fa-minus-square-o'
|
||||
});
|
||||
select.model.set( 'value', [ 'valuea', 'valueb' ] );
|
||||
_test({
|
||||
value : [ 'valuea', 'valueb' ],
|
||||
label : 'labela',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valueb',
|
||||
multiple: true,
|
||||
all_icon: 'fa-check-square-o'
|
||||
});
|
||||
select.model.set( 'value', [] );
|
||||
_test({
|
||||
value : null,
|
||||
label : '',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valuea',
|
||||
multiple: true,
|
||||
all_icon: 'fa-square-o'
|
||||
});
|
||||
select.model.set( { multiple: false } );
|
||||
_test({
|
||||
value : 'valuea',
|
||||
label : 'labela',
|
||||
visible : true,
|
||||
count : 2,
|
||||
exists : 'valuea'
|
||||
});
|
||||
select.model.set( { visible: false } );
|
||||
_test({
|
||||
value : 'valuea',
|
||||
label : 'labela',
|
||||
visible : false,
|
||||
count : 2,
|
||||
exists : 'valuea'
|
||||
});
|
||||
select.model.set( { multiple: true, visible: true, value: [ 'valueb', 'valuec' ], data: [ { value: 'valuea', label: 'labela' }, { value: 'valueb', label: 'labelb' }, { value: 'valuec', label: 'labelc' } ] } );
|
||||
_test({
|
||||
value : [ 'valueb', 'valuec' ],
|
||||
label : 'labelb',
|
||||
visible : true,
|
||||
count : 3,
|
||||
exists : 'valuea',
|
||||
multiple: true,
|
||||
all_icon: 'fa-minus-square-o'
|
||||
});
|
||||
} );
|
||||
|
||||
test( 'label', function() {
|
||||
var label = new Ui.Label({
|
||||
title : '_title'
|
||||
@@ -87,7 +479,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
test( 'select-content', function() {
|
||||
var select = new SelectContent.View({});
|
||||
$( 'body' ).prepend( select.$el );
|
||||
var checkSelect = function( tag, options ) {
|
||||
var _testSelect = function( tag, options ) {
|
||||
var $select = select.$( '.ui-select:' + tag );
|
||||
var $option = $select.find( 'option:first' );
|
||||
var $button = select.$( '.ui-radiobutton' ).find( 'label:' + tag );
|
||||
@@ -100,16 +492,16 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
$button.trigger( 'mouseleave' );
|
||||
ok( tooltip.indexOf( 'dataset' ) != -1 || tooltip.indexOf( 'collection' ) != -1, 'Basic tooltip check' );
|
||||
};
|
||||
var check = function( options ) {
|
||||
var _test = function( options ) {
|
||||
ok ( select.button_type.$( '.ui-option:first' ).hasClass( 'active' ), 'First one is toggled' );
|
||||
ok ( select.$( '.ui-select' ).length == options.selectfields, 'Found ' + options.selectfields + ' select fields' );
|
||||
ok ( select.button_type.$( '.ui-option' ).length == options.selectfields, 'Found ' + options.selectfields + ' radio button options' );
|
||||
ok ( select.$( '.ui-select-multiple' ).length == options.totalmultiple, 'Contains ' + options.totalmultiple + ' multiselect fields' );
|
||||
ok ( select.button_type.$el.css( 'display' ) == ( options.selectfields > 1 ? 'block' : '' ), 'Radio button visibility' );
|
||||
ok ( select.$( '.ui-radiobutton' ).length === ( options.selectfields > 1 ? 1 : 0 ), 'Radio button visibility' );
|
||||
ok ( select.$( '.ui-select:first' ).css( 'display' ) == 'block', 'Check select visibility' );
|
||||
ok ( select.$( '.ui-select:last' ).css( 'display' ) == ( options.selectfields == 1 ? 'block' : 'none' ), 'Last select visibility' );
|
||||
checkSelect( 'first', options );
|
||||
checkSelect( 'last', options );
|
||||
_testSelect( 'first', options );
|
||||
_testSelect( 'last', options );
|
||||
};
|
||||
|
||||
ok ( select.button_type.value() == 0, 'Initial mode selected by default.' );
|
||||
@@ -129,11 +521,11 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
lastlabel : 'hid2: name2',
|
||||
lastlength : 3,
|
||||
lastmultiple : false };
|
||||
check( initial );
|
||||
_test( initial );
|
||||
|
||||
select.model.set( 'multiple', true );
|
||||
select.model.set( 'type', 'data' );
|
||||
check({ selectfields : 2,
|
||||
_test({ selectfields : 2,
|
||||
firstlength : 2,
|
||||
firstvalue : 'id0',
|
||||
firstlabel : 'hid0: name0',
|
||||
@@ -146,7 +538,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
|
||||
select.model.set( 'multiple', false );
|
||||
select.model.set( 'type', 'data_collection' );
|
||||
check({ selectfields : 1,
|
||||
_test({ selectfields : 1,
|
||||
firstlength : 3,
|
||||
firstvalue : 'id2',
|
||||
firstlabel : 'hid2: name2',
|
||||
@@ -158,7 +550,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
lastmultiple : false });
|
||||
|
||||
select.model.set( 'type', 'workflow_collection' );
|
||||
check({ selectfields : 2,
|
||||
_test({ selectfields : 2,
|
||||
firstlength : 3,
|
||||
firstvalue : 'id2',
|
||||
firstlabel : 'hid2: name2',
|
||||
@@ -170,7 +562,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
lastmultiple : true });
|
||||
|
||||
select.model.set( 'type', 'workflow_data' );
|
||||
check({ selectfields : 2,
|
||||
_test({ selectfields : 2,
|
||||
firstlength : 2,
|
||||
firstvalue : 'id0',
|
||||
firstlabel : 'hid0: name0',
|
||||
@@ -182,7 +574,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
lastmultiple : true });
|
||||
|
||||
select.model.set( 'type', 'data' );
|
||||
check( initial );
|
||||
_test( initial );
|
||||
|
||||
select.model.set( 'wait', true );
|
||||
ok ( select.$( '.icon-dropdown' ).hasClass( 'fa-spinner' ), 'Shows spinner' );
|
||||
@@ -206,7 +598,7 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
|
||||
select = new SelectContent.View({});
|
||||
$( 'body' ).prepend( select.$el );
|
||||
var checkEmptySelect = function( tag, txt_extension, txt_label ) {
|
||||
var _testEmptySelect = function( tag, txt_extension, txt_label ) {
|
||||
var $select = select.$( '.ui-select:' + tag );
|
||||
var $option = $select.find( 'option:first' );
|
||||
ok ( $option.prop( 'value' ) == '__null__', tag + ' option has correct empty value.' );
|
||||
@@ -214,13 +606,13 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content',
|
||||
};
|
||||
|
||||
var labels = select.model.get( 'src_labels' );
|
||||
checkEmptySelect( 'first', '', labels.hda );
|
||||
checkEmptySelect( 'last', '', labels.hdca );
|
||||
_testEmptySelect( 'first', '', labels.hda );
|
||||
_testEmptySelect( 'last', '', labels.hdca );
|
||||
select.model.set( 'extensions', [ 'txt', 'bam' ] );
|
||||
checkEmptySelect( 'first', 'txt or bam ', labels.hda );
|
||||
checkEmptySelect( 'last', 'txt or bam ', labels.hdca );
|
||||
_testEmptySelect( 'first', 'txt or bam ', labels.hda );
|
||||
_testEmptySelect( 'last', 'txt or bam ', labels.hdca );
|
||||
select.model.set( 'extensions', [ 'txt' ] );
|
||||
checkEmptySelect( 'first', 'txt ', labels.hda );
|
||||
checkEmptySelect( 'last', 'txt ', labels.hdca );
|
||||
_testEmptySelect( 'first', 'txt ', labels.hda );
|
||||
_testEmptySelect( 'last', 'txt ', labels.hdca );
|
||||
} );
|
||||
});
|
||||
Reference in New Issue
Block a user