The progressbar has a
max
option, and a value
option. The value
is the used part, while the max - value
is the remaining part. Users care about both. In fact, they may care more about what's remaining. Here's an example of how to customize the progressbar widget, adding a new labels
option.The two buttons in the simply increment and decrement the progressbar value, so you can watch the two labels update. The bulk of our progressbar customization takes place in the
_refreshValue()
method, which looks like this._refreshValue: function() {
this._super();
if ( !this.options.labels ) {
return;
}
this.element.addClass( "ui-progressbar-labels" )
.find( "span" ).remove();
$( "<span/>" ).text( this.options.max - this.value() )
.prependTo( this.element );
$( "<span/>" ).text( this.value() )
.prependTo( this.element );
}
The first thing that happens inside
_refreshValue()
is a call to _super()
. This method calls the original implementation, and since we have no need to interfere with that, we get it out of the way. Next, we perform a short-circuit exit from the method if the labels
options isn't true.Next, the progressbar element gets the
ui-progressbar-labels
class applied to it. This will apply the CSS necessary to align the two spans we add to the progressbar div
. Note, that the line-height
has to be the same as the height
of the progressbar div
. We also remove any span
elements that may have been added already.Last but not least, we compute the label values, add them to their
span
elements, and add those to the progressbar. The value label to the left, the remaining label to the right.
No comments :
Post a Comment