integration/back-office/lib/jquery-ui/ui/jquery.ui.progressbar.js
changeset 1 b95aebb070b5
equal deleted inserted replaced
0:a51471894a9e 1:b95aebb070b5
       
     1 /*!
       
     2  * jQuery UI Progressbar 1.10.3
       
     3  * http://jqueryui.com
       
     4  *
       
     5  * Copyright 2013 jQuery Foundation and other contributors
       
     6  * Released under the MIT license.
       
     7  * http://jquery.org/license
       
     8  *
       
     9  * http://api.jqueryui.com/progressbar/
       
    10  *
       
    11  * Depends:
       
    12  *   jquery.ui.core.js
       
    13  *   jquery.ui.widget.js
       
    14  */
       
    15 (function( $, undefined ) {
       
    16 
       
    17 $.widget( "ui.progressbar", {
       
    18 	version: "1.10.3",
       
    19 	options: {
       
    20 		max: 100,
       
    21 		value: 0,
       
    22 
       
    23 		change: null,
       
    24 		complete: null
       
    25 	},
       
    26 
       
    27 	min: 0,
       
    28 
       
    29 	_create: function() {
       
    30 		// Constrain initial value
       
    31 		this.oldValue = this.options.value = this._constrainedValue();
       
    32 
       
    33 		this.element
       
    34 			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
       
    35 			.attr({
       
    36 				// Only set static values, aria-valuenow and aria-valuemax are
       
    37 				// set inside _refreshValue()
       
    38 				role: "progressbar",
       
    39 				"aria-valuemin": this.min
       
    40 			});
       
    41 
       
    42 		this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
       
    43 			.appendTo( this.element );
       
    44 
       
    45 		this._refreshValue();
       
    46 	},
       
    47 
       
    48 	_destroy: function() {
       
    49 		this.element
       
    50 			.removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
       
    51 			.removeAttr( "role" )
       
    52 			.removeAttr( "aria-valuemin" )
       
    53 			.removeAttr( "aria-valuemax" )
       
    54 			.removeAttr( "aria-valuenow" );
       
    55 
       
    56 		this.valueDiv.remove();
       
    57 	},
       
    58 
       
    59 	value: function( newValue ) {
       
    60 		if ( newValue === undefined ) {
       
    61 			return this.options.value;
       
    62 		}
       
    63 
       
    64 		this.options.value = this._constrainedValue( newValue );
       
    65 		this._refreshValue();
       
    66 	},
       
    67 
       
    68 	_constrainedValue: function( newValue ) {
       
    69 		if ( newValue === undefined ) {
       
    70 			newValue = this.options.value;
       
    71 		}
       
    72 
       
    73 		this.indeterminate = newValue === false;
       
    74 
       
    75 		// sanitize value
       
    76 		if ( typeof newValue !== "number" ) {
       
    77 			newValue = 0;
       
    78 		}
       
    79 
       
    80 		return this.indeterminate ? false :
       
    81 			Math.min( this.options.max, Math.max( this.min, newValue ) );
       
    82 	},
       
    83 
       
    84 	_setOptions: function( options ) {
       
    85 		// Ensure "value" option is set after other values (like max)
       
    86 		var value = options.value;
       
    87 		delete options.value;
       
    88 
       
    89 		this._super( options );
       
    90 
       
    91 		this.options.value = this._constrainedValue( value );
       
    92 		this._refreshValue();
       
    93 	},
       
    94 
       
    95 	_setOption: function( key, value ) {
       
    96 		if ( key === "max" ) {
       
    97 			// Don't allow a max less than min
       
    98 			value = Math.max( this.min, value );
       
    99 		}
       
   100 
       
   101 		this._super( key, value );
       
   102 	},
       
   103 
       
   104 	_percentage: function() {
       
   105 		return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
       
   106 	},
       
   107 
       
   108 	_refreshValue: function() {
       
   109 		var value = this.options.value,
       
   110 			percentage = this._percentage();
       
   111 
       
   112 		this.valueDiv
       
   113 			.toggle( this.indeterminate || value > this.min )
       
   114 			.toggleClass( "ui-corner-right", value === this.options.max )
       
   115 			.width( percentage.toFixed(0) + "%" );
       
   116 
       
   117 		this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
       
   118 
       
   119 		if ( this.indeterminate ) {
       
   120 			this.element.removeAttr( "aria-valuenow" );
       
   121 			if ( !this.overlayDiv ) {
       
   122 				this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
       
   123 			}
       
   124 		} else {
       
   125 			this.element.attr({
       
   126 				"aria-valuemax": this.options.max,
       
   127 				"aria-valuenow": value
       
   128 			});
       
   129 			if ( this.overlayDiv ) {
       
   130 				this.overlayDiv.remove();
       
   131 				this.overlayDiv = null;
       
   132 			}
       
   133 		}
       
   134 
       
   135 		if ( this.oldValue !== value ) {
       
   136 			this.oldValue = value;
       
   137 			this._trigger( "change" );
       
   138 		}
       
   139 		if ( value === this.options.max ) {
       
   140 			this._trigger( "complete" );
       
   141 		}
       
   142 	}
       
   143 });
       
   144 
       
   145 })( jQuery );