mirror of https://github.com/ColorlibHQ/gentelella
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
6.0 KiB
168 lines
6.0 KiB
/*! |
|
* bootstrap-progressbar v0.9.0 by @minddust |
|
* Copyright (c) 2012-2015 Stephan Groß |
|
* |
|
* http://www.minddust.com/project/bootstrap-progressbar/ |
|
* |
|
* Licensed under the MIT license: |
|
* http://www.opensource.org/licenses/MIT |
|
*/ |
|
(function($) { |
|
|
|
'use strict'; |
|
|
|
// PROGRESSBAR CLASS DEFINITION |
|
// ============================ |
|
|
|
var Progressbar = function(element, options) { |
|
this.$element = $(element); |
|
this.options = $.extend({}, Progressbar.defaults, options); |
|
}; |
|
|
|
Progressbar.defaults = { |
|
transition_delay: 300, |
|
refresh_speed: 50, |
|
display_text: 'none', |
|
use_percentage: true, |
|
percent_format: function(percent) { return percent + '%'; }, |
|
amount_format: function(amount_part, amount_max, amount_min) { return amount_part + ' / ' + amount_max; }, |
|
update: $.noop, |
|
done: $.noop, |
|
fail: $.noop |
|
}; |
|
|
|
Progressbar.prototype.transition = function() { |
|
var $this = this.$element; |
|
var $parent = $this.parent(); |
|
var $back_text = this.$back_text; |
|
var $front_text = this.$front_text; |
|
var options = this.options; |
|
var data_transitiongoal = parseInt($this.attr('data-transitiongoal')); |
|
var aria_valuemin = parseInt($this.attr('aria-valuemin')) || 0; |
|
var aria_valuemax = parseInt($this.attr('aria-valuemax')) || 100; |
|
var is_vertical = $parent.hasClass('vertical'); |
|
var update = options.update && typeof options.update === 'function' ? options.update : Progressbar.defaults.update; |
|
var done = options.done && typeof options.done === 'function' ? options.done : Progressbar.defaults.done; |
|
var fail = options.fail && typeof options.fail === 'function' ? options.fail : Progressbar.defaults.fail; |
|
|
|
if (isNaN(data_transitiongoal)) { |
|
fail('data-transitiongoal not set'); |
|
return; |
|
} |
|
var percentage = Math.round(100 * (data_transitiongoal - aria_valuemin) / (aria_valuemax - aria_valuemin)); |
|
|
|
if (options.display_text === 'center' && !$back_text && !$front_text) { |
|
this.$back_text = $back_text = $('<span>').addClass('progressbar-back-text').prependTo($parent); |
|
this.$front_text = $front_text = $('<span>').addClass('progressbar-front-text').prependTo($this); |
|
|
|
var parent_size; |
|
|
|
if (is_vertical) { |
|
parent_size = $parent.css('height'); |
|
$back_text.css({height: parent_size, 'line-height': parent_size}); |
|
$front_text.css({height: parent_size, 'line-height': parent_size}); |
|
|
|
$(window).resize(function() { |
|
parent_size = $parent.css('height'); |
|
$back_text.css({height: parent_size, 'line-height': parent_size}); |
|
$front_text.css({height: parent_size, 'line-height': parent_size}); |
|
}); // normal resizing would brick the structure because width is in px |
|
} |
|
else { |
|
parent_size = $parent.css('width'); |
|
$front_text.css({width: parent_size}); |
|
|
|
$(window).resize(function() { |
|
parent_size = $parent.css('width'); |
|
$front_text.css({width: parent_size}); |
|
}); // normal resizing would brick the structure because width is in px |
|
} |
|
} |
|
|
|
setTimeout(function() { |
|
var current_percentage; |
|
var current_value; |
|
var this_size; |
|
var parent_size; |
|
var text; |
|
|
|
if (is_vertical) { |
|
$this.css('height', percentage + '%'); |
|
} |
|
else { |
|
$this.css('width', percentage + '%'); |
|
} |
|
|
|
var progress = setInterval(function() { |
|
if (is_vertical) { |
|
this_size = $this.height(); |
|
parent_size = $parent.height(); |
|
} |
|
else { |
|
this_size = $this.width(); |
|
parent_size = $parent.width(); |
|
} |
|
|
|
current_percentage = Math.round(100 * this_size / parent_size); |
|
current_value = Math.round(aria_valuemin + this_size / parent_size * (aria_valuemax - aria_valuemin)); |
|
|
|
if (current_percentage >= percentage) { |
|
current_percentage = percentage; |
|
current_value = data_transitiongoal; |
|
done($this); |
|
clearInterval(progress); |
|
} |
|
|
|
if (options.display_text !== 'none') { |
|
text = options.use_percentage ? options.percent_format(current_percentage) : options.amount_format(current_value, aria_valuemax, aria_valuemin); |
|
|
|
if (options.display_text === 'fill') { |
|
$this.text(text); |
|
} |
|
else if (options.display_text === 'center') { |
|
$back_text.text(text); |
|
$front_text.text(text); |
|
} |
|
} |
|
$this.attr('aria-valuenow', current_value); |
|
|
|
update(current_percentage, $this); |
|
}, options.refresh_speed); |
|
}, options.transition_delay); |
|
}; |
|
|
|
|
|
// PROGRESSBAR PLUGIN DEFINITION |
|
// ============================= |
|
|
|
var old = $.fn.progressbar; |
|
|
|
$.fn.progressbar = function(option) { |
|
return this.each(function () { |
|
var $this = $(this); |
|
var data = $this.data('bs.progressbar'); |
|
var options = typeof option === 'object' && option; |
|
|
|
if (data && options) { |
|
$.extend(data.options, options); |
|
} |
|
|
|
if (!data) { |
|
$this.data('bs.progressbar', (data = new Progressbar(this, options))); |
|
} |
|
data.transition(); |
|
}); |
|
}; |
|
|
|
$.fn.progressbar.Constructor = Progressbar; |
|
|
|
|
|
// PROGRESSBAR NO CONFLICT |
|
// ======================= |
|
|
|
$.fn.progressbar.noConflict = function () { |
|
$.fn.progressbar = old; |
|
return this; |
|
}; |
|
|
|
})(window.jQuery);
|
|
|