You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.3 KiB
Plaintext
92 lines
2.3 KiB
Plaintext
11 months ago
|
/**
|
||
|
* progressbar - jQuery EasyUI
|
||
|
*
|
||
|
* Licensed under the GPL terms
|
||
|
* To use it on other terms please contact us
|
||
|
*
|
||
|
* Copyright(c) 2009-2012 stworthy [ stworthy@gmail.com ]
|
||
|
*
|
||
|
* Dependencies:
|
||
|
* none
|
||
|
*
|
||
|
*/
|
||
|
(function($){
|
||
|
function init(target){
|
||
|
$(target).addClass('progressbar');
|
||
|
$(target).html('<div class="progressbar-text"></div><div class="progressbar-value"> </div>');
|
||
|
return $(target);
|
||
|
}
|
||
|
|
||
|
function setSize(target,width){
|
||
|
var opts = $.data(target, 'progressbar').options;
|
||
|
var bar = $.data(target, 'progressbar').bar;
|
||
|
if (width) opts.width = width;
|
||
|
bar._outerWidth(opts.width);
|
||
|
bar.find('div.progressbar-text').width(bar.width());
|
||
|
}
|
||
|
|
||
|
$.fn.progressbar = function(options, param){
|
||
|
if (typeof options == 'string'){
|
||
|
var method = $.fn.progressbar.methods[options];
|
||
|
if (method){
|
||
|
return method(this, param);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
options = options || {};
|
||
|
return this.each(function(){
|
||
|
var state = $.data(this, 'progressbar');
|
||
|
if (state){
|
||
|
$.extend(state.options, options);
|
||
|
} else {
|
||
|
state = $.data(this, 'progressbar', {
|
||
|
options: $.extend({}, $.fn.progressbar.defaults, $.fn.progressbar.parseOptions(this), options),
|
||
|
bar: init(this)
|
||
|
});
|
||
|
}
|
||
|
$(this).progressbar('setValue', state.options.value);
|
||
|
setSize(this);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
$.fn.progressbar.methods = {
|
||
|
options: function(jq){
|
||
|
return $.data(jq[0], 'progressbar').options;
|
||
|
},
|
||
|
resize: function(jq, width){
|
||
|
return jq.each(function(){
|
||
|
setSize(this, width);
|
||
|
});
|
||
|
},
|
||
|
getValue: function(jq){
|
||
|
return $.data(jq[0], 'progressbar').options.value;
|
||
|
},
|
||
|
setValue: function(jq, value){
|
||
|
if (value < 0) value = 0;
|
||
|
if (value > 100) value = 100;
|
||
|
return jq.each(function(){
|
||
|
var opts = $.data(this, 'progressbar').options;
|
||
|
var text = opts.text.replace(/{value}/, value);
|
||
|
var oldValue = opts.value;
|
||
|
opts.value = value;
|
||
|
$(this).find('div.progressbar-value').width(value+'%');
|
||
|
$(this).find('div.progressbar-text').html(text);
|
||
|
if (oldValue != value){
|
||
|
opts.onChange.call(this, value, oldValue);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$.fn.progressbar.parseOptions = function(target){
|
||
|
return $.extend({}, $.parser.parseOptions(target, ['width','text',{value:'number'}]));
|
||
|
};
|
||
|
|
||
|
$.fn.progressbar.defaults = {
|
||
|
width: 'auto',
|
||
|
value: 0, // percentage value
|
||
|
text: '{value}%',
|
||
|
onChange:function(newValue,oldValue){}
|
||
|
};
|
||
|
})(jQuery);
|