<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 = ""; }); });