74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
/**
|
|
* @file
|
|
* Extends methods from core/misc/progress.js.
|
|
*/
|
|
|
|
(function ($, Drupal) {
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Theme function for the progress bar.
|
|
*
|
|
* @param {string} id
|
|
*
|
|
* @return {string}
|
|
* The HTML for the progress bar.
|
|
*/
|
|
Drupal.theme.progressBar = function (id) {
|
|
return '<div class="progress-wrapper" aria-live="polite">' +
|
|
'<div class="message"></div>'+
|
|
'<div id ="' + id + '" class="progress progress-striped active">' +
|
|
'<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">' +
|
|
'<span class="percentage"></span>' +
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="progress-label"></div>' +
|
|
'</div>';
|
|
};
|
|
|
|
$.extend(Drupal.ProgressBar.prototype, /** @lends Drupal.ProgressBar */{
|
|
|
|
/**
|
|
* Set the percentage and status message for the progressbar.
|
|
*
|
|
* @param {number} percentage
|
|
* @param {string} message
|
|
* @param {string} label
|
|
*/
|
|
setProgress: function (percentage, message, label) {
|
|
if (percentage >= 0 && percentage <= 100) {
|
|
$(this.element).find('.progress-bar').css('width', percentage + '%').attr('aria-valuenow', percentage);
|
|
$(this.element).find('.percentage').html(percentage + '%');
|
|
}
|
|
if (message) {
|
|
// Remove the unnecessary whitespace at the end of the message.
|
|
message = message.replace(/<br\/> |\s*$/, '');
|
|
|
|
$('.message', this.element).html(message);
|
|
}
|
|
if (label) {
|
|
$('.progress-label', this.element).html(label);
|
|
}
|
|
if (this.updateCallback) {
|
|
this.updateCallback(percentage, message, this);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Display errors on the page.
|
|
*
|
|
* @param {string} string
|
|
*/
|
|
displayError: function (string) {
|
|
var error = $('<div class="alert alert-block alert-error"><button class="close" data-dismiss="alert">×</button><h4>' + Drupal.t('Error message') + '</h4></div>').append(string);
|
|
$(this.element).before(error).hide();
|
|
|
|
if (this.errorCallback) {
|
|
this.errorCallback(this);
|
|
}
|
|
}
|
|
});
|
|
|
|
})(jQuery, Drupal);
|