/** * 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('
 
'); 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);