source: trunk/themes/default/js/ui/jquery.ui.progressbar.js @ 20824

Last change on this file since 20824 was 20824, checked in by rvelices, 11 years ago

upgraded jquery ui from 1.9.0 to 1.10.1

File size: 3.3 KB
Line 
1/*!
2 * jQuery UI Progressbar 1.10.1
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.1",
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 );
Note: See TracBrowser for help on using the repository browser.