##// END OF EJS Templates
Better fix for empty dropdown button alignment...
Better fix for empty dropdown button alignment Now an   character is inserted and bootstrap is left alone to deal with alignment.

File last commit:

r14342:90efa5b8
r14359:9012e20a
Show More
float_range.js
239 lines | 8.8 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 define(["notebook/js/widget"], function(){
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 var FloatRangeWidgetModel = IPython.WidgetModel.extend({});
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 IPython.widget_manager.register_widget_model('FloatRangeWidgetModel', FloatRangeWidgetModel);
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 var FloatSliderView = IPython.WidgetView.extend({
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 // Called when view is rendered.
render : function(){
this.$el
Jonathan Frederic
MAJOR CSS FIXES...
r14295 .addClass('widget-hbox-single')
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278 .html('');
Jonathan Frederic
Added labels to basic widgets
r14292 this.$label = $('<div />')
.appendTo(this.$el)
Jonathan Frederic
Fixed vertical widget labels
r14297 .addClass('widget-hlabel')
Jonathan Frederic
Added labels to basic widgets
r14292 .hide();
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 this.$slider = $('<div />')
Jonathan Frederic
Attempt 1, HBox and VBox implementation.
r14268 .slider({})
.addClass('slider');
Jonathan Frederic
Lots of updates to widget(s) js...
r14263
// Put the slider in a container
this.$slider_container = $('<div />')
Jonathan Frederic
Added slider vertical mode, and...
r14296 .addClass('widget-hslider')
Jonathan Frederic
Attempt 1, HBox and VBox implementation.
r14268 .append(this.$slider);
Jonathan Frederic
Set default element to be styled in built-in views
r14314 this.$el_to_style = this.$slider_container; // Set default element to style
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 this.$el.append(this.$slider_container);
// Set defaults.
this.update();
},
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 // Handles: Backend -> Frontend Sync
// Frontent -> Frontend Sync
update : function(){
// Slider related keys.
Jonathan Frederic
Fix slider orientation change, value-handle-offset bug
r14301 var _keys = ['step', 'max', 'min', 'disabled'];
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 for (var index in _keys) {
var key = _keys[index];
if (this.model.get(key) != undefined) {
this.$slider.slider("option", key, this.model.get(key));
}
Jonathan Frederic
Moved view code into model files
r14252 }
Jonathan Frederic
Added labels to basic widgets
r14292
Jonathan Frederic
Fix slider orientation change, value-handle-offset bug
r14301 // WORKAROUND FOR JQUERY SLIDER BUG.
// The horizontal position of the slider handle
// depends on the value of the slider at the time
// of orientation change. Before applying the new
// workaround, we set the value to the minimum to
// make sure that the horizontal placement of the
// handle in the vertical slider is always
// consistent.
Jonathan Frederic
Added slider vertical mode, and...
r14296 var orientation = this.model.get('orientation');
Jonathan Frederic
Fix slider orientation change, value-handle-offset bug
r14301 var value = this.model.get('min');
this.$slider.slider('option', 'value', value);
this.$slider.slider('option', 'orientation', orientation);
var value = this.model.get('value');
this.$slider.slider('option', 'value', value);
// Use the right CSS classes for vertical & horizontal sliders
Jonathan Frederic
Added slider vertical mode, and...
r14296 if (orientation=='vertical') {
this.$slider_container
.removeClass('widget-hslider')
.addClass('widget-vslider');
this.$el
.removeClass('widget-hbox-single')
Jonathan Frederic
Fixed vertical widget labels
r14297 .addClass('widget-vbox-single');
this.$label
.removeClass('widget-hlabel')
.addClass('widget-vlabel');
Jonathan Frederic
Added slider vertical mode, and...
r14296 } else {
this.$slider_container
.removeClass('widget-vslider')
.addClass('widget-hslider');
this.$el
Jonathan Frederic
Fixed vertical widget labels
r14297 .removeClass('widget-vbox-single')
Jonathan Frederic
Added slider vertical mode, and...
r14296 .addClass('widget-hbox-single');
Jonathan Frederic
Fixed vertical widget labels
r14297 this.$label
.removeClass('widget-vlabel')
.addClass('widget-hlabel');
Jonathan Frederic
Added slider vertical mode, and...
r14296 }
Jonathan Frederic
Added labels to basic widgets
r14292 var description = this.model.get('description');
if (description.length == 0) {
this.$label.hide();
} else {
this.$label.html(description);
this.$label.show();
}
Jonathan Frederic
Fixes that allow last commit to work.
r14279 return IPython.WidgetView.prototype.update.call(this);
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 },
// Handles: User input
events: { "slide" : "handleSliderChange" },
handleSliderChange: function(e, ui) {
this.model.set('value', ui.value);
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278 this.model.update_other_views(this);
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 },
});
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 IPython.widget_manager.register_widget_view('FloatSliderView', FloatSliderView);
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 var FloatTextView = IPython.WidgetView.extend({
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 // Called when view is rendered.
render : function(){
this.$el
Jonathan Frederic
MAJOR CSS FIXES...
r14295 .addClass('widget-hbox-single')
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278 .html('');
Jonathan Frederic
Added labels to basic widgets
r14292 this.$label = $('<div />')
.appendTo(this.$el)
Jonathan Frederic
Fixed vertical widget labels
r14297 .addClass('widget-hlabel')
Jonathan Frederic
Added labels to basic widgets
r14292 .hide();
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 this.$textbox = $('<input type="text" />')
.addClass('input')
Jonathan Frederic
MAJOR CSS FIXES...
r14295 .addClass('widget-numeric-text')
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 .appendTo(this.$el);
Jonathan Frederic
Set default element to be styled in built-in views
r14314 this.$el_to_style = this.$textbox; // Set default element to style
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 this.update(); // Set defaults.
},
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 // Handles: Backend -> Frontend Sync
// Frontent -> Frontend Sync
update : function(){
var value = this.model.get('value');
if (!this.changing && parseFloat(this.$textbox.val()) != value) {
this.$textbox.val(value);
}
if (this.model.get('disabled')) {
this.$textbox.attr('disabled','disabled');
} else {
this.$textbox.removeAttr('disabled');
}
Jonathan Frederic
Added labels to basic widgets
r14292
var description = this.model.get('description');
if (description.length == 0) {
this.$label.hide();
} else {
this.$label.html(description);
this.$label.show();
}
Jonathan Frederic
Fixes that allow last commit to work.
r14279 return IPython.WidgetView.prototype.update.call(this);
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 },
Jonathan Frederic
Use require.js to load widget manager.
r14253
Jonathan Frederic
Lots of updates to widget(s) js...
r14263
events: {"keyup input" : "handleChanging",
"paste input" : "handleChanging",
"cut input" : "handleChanging",
"change input" : "handleChanged"}, // Fires only when control is validated or looses focus.
// Handles and validates user input.
handleChanging: function(e) {
Jonathan Frederic
Use require.js to load widget manager.
r14253
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 // Try to parse value as a float.
var numericalValue = 0.0;
if (e.target.value != '') {
numericalValue = parseFloat(e.target.value);
}
// If parse failed, reset value to value stored in model.
if (isNaN(numericalValue)) {
e.target.value = this.model.get('value');
} else if (!isNaN(numericalValue)) {
if (this.model.get('max') != undefined) {
numericalValue = Math.min(this.model.get('max'), numericalValue);
}
if (this.model.get('min') != undefined) {
numericalValue = Math.max(this.model.get('min'), numericalValue);
}
// Apply the value if it has changed.
if (numericalValue != this.model.get('value')) {
this.changing = true;
this.model.set('value', numericalValue);
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278 this.model.update_other_views(this);
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 this.changing = false;
}
}
},
// Applies validated input.
handleChanged: function(e) {
// Update the textbox
if (this.model.get('value') != e.target.value) {
e.target.value = this.model.get('value');
Jonathan Frederic
Moved view code into model files
r14252 }
}
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 });
Jonathan Frederic
Moved view code into model files
r14252
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 IPython.widget_manager.register_widget_view('FloatTextView', FloatTextView);
Jonathan Frederic
Added ProgressView
r14298
var ProgressView = IPython.WidgetView.extend({
// Called when view is rendered.
render : function(){
this.$el
.addClass('widget-hbox-single')
.html('');
this.$label = $('<div />')
.appendTo(this.$el)
.addClass('widget-hlabel')
.hide();
this.$progress = $('<div />')
.addClass('progress')
.addClass('widget-progress')
.appendTo(this.$el);
Jonathan Frederic
Set default element to be styled in built-in views
r14314 this.$el_to_style = this.$progress; // Set default element to style
Jonathan Frederic
Added ProgressView
r14298 this.$bar = $('<div />')
.addClass('bar')
.css('width', '50%')
.appendTo(this.$progress);
this.update(); // Set defaults.
},
// Handles: Backend -> Frontend Sync
// Frontent -> Frontend Sync
update : function(){
var value = this.model.get('value');
var max = this.model.get('max');
var min = this.model.get('min');
var percent = 100.0 * (value - min) / (max - min);
this.$bar.css('width', percent + '%');
var description = this.model.get('description');
if (description.length == 0) {
this.$label.hide();
} else {
this.$label.html(description);
this.$label.show();
}
return IPython.WidgetView.prototype.update.call(this);
},
});
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 IPython.widget_manager.register_widget_view('ProgressView', ProgressView);
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 });