@atlassian/aui
Version:
Atlassian User Interface Framework
73 lines (49 loc) • 2.4 kB
JavaScript
/*
Progress Bar
============
Adds a progress bar to your div. The progress bar consists of a two divs; one containing the other. The outer div is
represents the incomplete status, and the inner div is expanded as percentage progress increases.
USAGE:
Set up a <div> with an id:
<div id="progressBarContainer"></div>
and add the following JS:
$("#progressBarContainer").progressBar(50);
$("#progressBarContainer").progressBar(50, {height: "12px", showPercentage: false});
STYLING:
You must also set up a style for the 'complete' class.
*/
(function ($) {
$.fn.progressBar = function (percentComplete, options) {
var $progressBarContainer = this;
var defaults = {
height: '1em',
showPercentage: true
};
var opts = $.extend(defaults, options);
var incompleteBarId = $progressBarContainer.attr('id') + '-incomplete-bar';
var completeBarId = $progressBarContainer.attr('id') + '-complete-bar';
var percentCompleteTextId = $progressBarContainer.attr('id') + '-percent-complete-text';
if ($('#' + incompleteBarId).length == 0) {
var $incompleteBar = $(document.createElement('div'));
$incompleteBar.attr('id', incompleteBarId);
$incompleteBar.css({width: '90%', border: 'solid 1px #ccc', 'float': 'left', 'margin-right': '0.5em'});
$incompleteBar.addClass('progress-background-color');
var $completeBar = $(document.createElement('div'));
$completeBar.attr('id', completeBarId);
$completeBar.addClass('progress-fill-color');
$completeBar.css({height: opts.height, width: percentComplete + '%'});
var $percentCompleteText = $(document.createElement('span'));
$percentCompleteText.attr('id', percentCompleteTextId);
$percentCompleteText.addClass('percent-complete-text');
$percentCompleteText.html(percentComplete + '%');
$incompleteBar.append($completeBar);
$progressBarContainer.append($incompleteBar);
if (opts.showPercentage) {
$progressBarContainer.append($percentCompleteText);
}
} else {
$('#' + completeBarId).css('width', percentComplete + '%');
$('#' + percentCompleteTextId).html(percentComplete + '%');
}
}
})(jQuery);