130 lines
3.5 KiB
HTML
130 lines
3.5 KiB
HTML
<html>
|
|
<head>
|
|
<title>ARIA Progress Bar</title>
|
|
<style type="text/css">
|
|
<!--
|
|
span[role="progressbar"] { color: red; font-family: courier; font-size: .1em;}
|
|
*[aria-hidden] { visibility: hidden; }
|
|
div[role="group"] { border: 3px solid black; width: 50%; }
|
|
-->
|
|
</style>
|
|
<script>
|
|
<!--
|
|
function displayProgress(progress)
|
|
{
|
|
var valueNow = parseInt(progress.getAttribute("aria-valuenow"));
|
|
var valueMin = parseInt(progress.getAttribute("aria-valuemin"));
|
|
var valueMax = parseInt(progress.getAttribute("aria-valuemax"));
|
|
|
|
// I'm sure there's something better than using a loop, but I don't feel like looking it up right now
|
|
var progressText = "|";
|
|
var count = valueMin;
|
|
for (; count < valueNow; count += 2) {
|
|
progressText += "*";
|
|
}
|
|
for (; count < valueMax; count += 2) {
|
|
progressText += "-";
|
|
}
|
|
progressText += "|";
|
|
progress.firstChild.data = progressText;
|
|
return false;
|
|
}
|
|
|
|
var gProgressId = "progress1"; // for now just a global to store the progress id
|
|
var gbUpdate = false;
|
|
var gTimerId = null;
|
|
|
|
function updateProgress()
|
|
{
|
|
// will update the first time it is drawn but so what - this is a prototype !
|
|
var progress = document.getElementById(gProgressId);
|
|
var valueNow = parseInt(progress.getAttribute("aria-valuenow"));
|
|
var valueMin = parseInt(progress.getAttribute("aria-valuemin"));
|
|
var valueMax = parseInt(progress.getAttribute("aria-valuemax"));
|
|
valueNow += 5;
|
|
if (valueNow < valueMin) {
|
|
valueNow = valueMin;
|
|
}
|
|
if (valueNow > valueMax) {
|
|
valueNow = valueMax; //loop around
|
|
}
|
|
|
|
progress.setAttribute("aria-valuenow", valueNow);
|
|
|
|
displayProgress(progress);
|
|
|
|
if (valueNow == valueMax) {
|
|
stopProgress();
|
|
var schedule = document.getElementById("schedule");
|
|
schedule.removeAttribute("aria-hidden");
|
|
schedule.className += ""; // Force IE7 reflow
|
|
|
|
}
|
|
}
|
|
|
|
function startProgress()
|
|
{
|
|
gbUpdate = true;
|
|
gTimerId = setInterval("updateProgress();", 400);
|
|
document.getElementById("disabled").removeAttribute("disabled");
|
|
}
|
|
|
|
function stopProgress()
|
|
{
|
|
gbUpdate = false;
|
|
if ( gTimerId != null) {
|
|
clearInterval(gTimerId);
|
|
gTimerId = null;
|
|
}
|
|
document.getElementById("disabled").setAttribute("disabled", "true");
|
|
}
|
|
-->
|
|
</script><style type="text/css"></style>
|
|
</head>
|
|
|
|
<body onload="displayProgress(document.getElementById(gProgressId));">
|
|
<p>Here is a progress bar that you can start and stop using the buttons below. Both the progress bar and the schedule are within an assertive live region.</p>
|
|
|
|
<p style="margin-top:2em;">
|
|
<button onclick="startProgress();">Load schedule</button><span style="padding-left:5em;"> </span>
|
|
<button id="disabled" onclick="stopProgress();" disabled="true">Cancel</button>
|
|
</p>
|
|
<p></p>
|
|
<div role="group" aria-live="assertive" aria-labelledby="scheduleLabel">
|
|
<h1 id="scheduleLabel">My schedule</h1>
|
|
<p> Loading schedule ...
|
|
<span role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="50" id="progress1" title="My progress">|-------------------------|</span>
|
|
<table id="schedule" aria-hidden="true" border="1" cellpadding="3" cellspacing="0">
|
|
<tbody><tr>
|
|
<td>Monday</td>
|
|
<td>Work</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Tuesday</td>
|
|
<td>Work</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Wednesday</td>
|
|
<td>Work</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Thursday</td>
|
|
<td>Work</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Friday</td>
|
|
<td>Work</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Saturday</td>
|
|
<td>Play</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Sunday</td>
|
|
<td>Play</td>
|
|
</tr>
|
|
</tbody></table>
|
|
</p></div>
|
|
</body>
|
|
</html>
|