<p><strong>ProgressBar sample - messages</strong></p>
<p>This sample shows how to customize messages by overriding progress bar methods.</p>
<hr>
<input id="loadBtn" type="button" value="load"/>
<d-progress-bar id="pb1"></d-progress-bar>
<input id="resetBtn" type="button" value="stop/reset"/>
<hr>
require.config({
baseUrl: "http://ibm-js.github.io/libraries/master",
});
require(["deliteful-build/layer"], function () {
require([
"deliteful/ProgressBar",
"delite/theme!delite/themes/{{theme}}/global.css", // page level CSS
"requirejs-domready/domReady!"
], function () {
var label = document.getElementById("lb");
var progressBar = document.getElementById("pb1");
var loadBtn = document.getElementById("loadBtn");
var resetBtn = document.getElementById("resetBtn");
loadBtn.disabled = false;
resetBtn.disabled = true;
var UPDATE_FREQ = 100; //ms
var timerId = 0;
//custom message: override ProgressBar format methods
var lastValue = 0;
progressBar.formatMessage = function(percent, value, max) {
//formatMessage allows to customize the message
var message;
if (isNaN(value)) {//indeterminate
message = "Click load to start transfer.";
} else {
if (percent === 1) {
message = "Transfert complete.";
} else {
message = Math.round(percent * 100) + "% - " + ((value - lastValue) / UPDATE_FREQ) + " KB/s";
lastValue = value;
}
}
return message;
};
progressBar.formatExtMsg = function (percent, value, max) {
if (percent === 1) {
return "";
} else {
return Math.round((this.max - value)/1000) + " KB";
}
};
progressBar.displayExtMsg = true;//allow extra message to display
progressBar.value = NaN;//displays indeterminate state custom message
//fake function which simulates a long task and updates the progress bar
//accordingly to the progression.
loadBtn.addEventListener("click", function () {
loadBtn.disabled = true;
resetBtn.disabled = false;
progressBar.value = 0;
progressBar.min = 0;
progressBar.max = 2000000;//bytes (2Mb)
var progress, rate = 500 * Math.random();
timerId = setInterval(function () {
progress = Math.round(progressBar.max / rate);
progressBar.value = Math.min(progressBar.max, progressBar.value + progress);
if (progressBar.value === progressBar.max) {
window.clearInterval(timerId);
}
}, UPDATE_FREQ);
});
//reset button
resetBtn.addEventListener("click", function () {
window.clearInterval(timerId);
resetBtn.disabled = true;
setTimeout(function(){
progressBar.value = NaN;
lastValue = 0;
loadBtn.disabled = false;
},UPDATE_FREQ);
});
document.body.style.display = "";
});
});