All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.diagram-viewer.js.jquery.jquery.progressbar.js Maven / Gradle / Ivy

/*
 * @ Dmitry Farafonov
 */

(function($){
$.ProgressBar = function(options) {
	this.element = $(options.boundingBox);
	if (options.on && options.on.complete){
		this.onComplete = options.on.complete;
	}
	if (options.on && options.on.valueChange){
		this.onValueChange = options.on.valueChange;
	}
	
	this._create();
	
	if (options.label)
		this.set("label", options.label);
	if (options.value)
		this.value(options.value);
	if (options.max)
		this.set("max", options.max);
};
$.ProgressBar.prototype = {
	options: {
		value: 0,
		max: 100
	},

	min: 0,

	_create: function() {
		this.element
			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
			.attr({
				role: "progressbar",
				"aria-valuemin": this.min,
				"aria-valuemax": this.options.max,
				"aria-valuenow": this._value()
			});

		this.valueDiv = $( "
" ) .appendTo( this.element ); this.valueDiv = $( "
" ) .appendTo( this.element ); this.oldValue = this._value(); this._refreshValue(); }, _destroy: function() { this.element .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) .removeAttr( "role" ) .removeAttr( "aria-valuemin" ) .removeAttr( "aria-valuemax" ) .removeAttr( "aria-valuenow" ); this.valueDiv.remove(); }, value: function( newValue ) { if ( newValue === undefined ) { return this._value(); } this._setOption( "value", newValue ); return this; }, _setOption: function( key, value ) { if ( key === "value" ) { //var oldVal = this.options.value; this.options.value = value; this._refreshValue(); if (this.onValueChange) this.onValueChange.apply(this, [{oldVal: this.oldValue, newVal: value}]); if ( this._value() === this.options.max ) { //this._trigger( "complete" ); if (this.onComplete) this.onComplete.apply(this); } } else if (key === "label") { $(this.element).find(".ui-progressbar-label").html(value); } else if (key === "max") { this.options.max = value; } //this._super( key, value ); }, _value: function() { var val = this.options.value; // normalize invalid value if ( typeof val !== "number" ) { val = 0; } return Math.min( this.options.max, Math.max( this.min, val ) ); }, _percentage: function() { return 100 * this._value() / this.options.max; }, _refreshValue: function() { var value = this.value(), percentage = this._percentage(); if ( this.oldValue !== value ) { this.oldValue = value; //this._trigger( "change" ); } this.valueDiv .toggle( value > this.min ) .toggleClass( "ui-corner-right", value === this.options.max ) .width( percentage.toFixed(0) + "%" ); this.element.attr( "aria-valuenow", value ); //$(this.element).find(".ui-progressbar-label").html(value + "%"); }, set: function(key, value){ this._setOption(key, value); } }; })( jQuery );




© 2015 - 2024 Weber Informatics LLC | Privacy Policy