- From: Anssi Kostiainen via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 08 Sep 2011 16:37:06 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/docs/battery-status In directory hutz:/tmp/cvs-serv11441 Added Files: battery-status.html battery-status.css battery-status.js Log Message: Battery Status Events Playground --- NEW FILE: battery-status.js --- window.onload = function () { if (!isInputTypeRangeSupported()) { $('warning').innerHTML = 'Your browser does not support <input type="range">, ' + 'which means this demo will be crippled.'; $('warning').style.display = 'block'; } onIsPluggedChange(false); }; var _BATTERYLOW_THRESHOLD = 20, _BATTERYCRITICAL_THRESHOLD = 10, _BATTERY_CHARGING_INTERVAL = 1000, _BATTERY_DEPLETING_INTERVAL = 500; function BatteryStatusEventSource() { // _battery is a singleton if (typeof _battery === 'undefined') { _battery = this; } return _battery; } BatteryStatusEventSource.prototype = { // should isPlugged be nullable or should the default be true? e: { type: '', isPlugged: true, level: null, status: null }, onbatterystatus: null, onbatterylow: null, onbatterycritical: null, onbatteryok: null, // we cheat a bit and do not implement event capture addEventListener: function (type, listener, capture) { if (listener === null) { return; } _battery['on' + type] = function () { listener(_battery.e); }; }, removeEventListener: function (type, listener, capture) { _battery['on' + type] = null; } }; //---------------------------------------------------------------------------// function fire(status) { _battery.e.type = 'battery' + status; if (status !== 'ok' && status === _battery.e.status) { return; } if (status === 'low' || status === 'critical' || status === 'ok') { _battery.e.status = status; } try { _battery['onbattery' + status](_battery.e); } catch (ex) { console.log('onbattery' + status + ' event handler is null'); } } function onLevelChange(level) { _battery.e.level = level; $('levelmeter').innerHTML = level; if (!_battery.e.isPlugged) { if (level < _BATTERYCRITICAL_THRESHOLD) { fire('critical'); } else if (level < _BATTERYLOW_THRESHOLD) { fire('low'); } } fire('status'); } function onIsPluggedChange(isPlugged) { _battery.e.isPlugged = isPlugged; if (isPlugged) { // simulate charging fire('ok'); _battery_charging = setInterval(function () { if (typeof _battery_depleting !== 'undefined') { clearTimeout(_battery_depleting); } var level = $('level'); try { level.stepUp(1); } catch (ex) { } onLevelChange(level.value); }, _BATTERY_CHARGING_INTERVAL); } else { // simulate depleting if (typeof _battery_charging !== 'undefined') { clearTimeout(_battery_charging); } _battery_depleting = setInterval(function () { var level = $('level'); try { level.stepDown(1); } catch (ex) { } onLevelChange(level.value); }, _BATTERY_DEPLETING_INTERVAL); } fire('status'); } //---------------------------------------------------------------------------// function $(id) { return document.getElementById(id); } function isInputTypeRangeSupported() { var i = document.createElement('input'); i.setAttribute('type', 'range'); return i.type !== 'text'; } --- NEW FILE: battery-status.html --- <!DOCTYPE html> <html> <head> <title>Battery Status Events Playground</title> <link href="battery-status.css" rel="stylesheet"/> <script src="battery-status.js"></script> <script> // instantiate a new BatteryStatusEventSource object var battery = new BatteryStatusEventSource(); // then use addEventListener() ... battery.addEventListener('batterystatus', function (e) { log('status', e); blink('status', 'gray'); }); // ... or onbattery* event handlers battery.onbatterylow = function (e) { log('low', e); blink('low', 'salmon'); }; battery.onbatterycritical = function (e) { log('critical', e); blink('critical', 'red'); }; battery.onbatteryok = function (e) { log('ok', e); blink('ok', 'green'); }; // for logging debug output to console.log function log(type, e) { console.log('onbattery' + type + '(' + JSON.stringify(e) + ');'); } // <blink> is back! function blink(id, color) { $(id).style.backgroundColor = color; setTimeout(function() { $(id).style.backgroundColor = ''; }, 300); } </script> </head> <body> <h1>Battery Status Events Playground</h1> <p id="warning"></p> <p>This demo implements the <a href="http://dev.w3.org/2009/dap/system-info/battery-status.html"> Battery Status Events</a> specification and simulates battery-powered user agent behavior. You can adjust the battery level and whether the device is plugged in from the controls below. A blink of an event name indicates the event has been fired. </p> <div class="controls"> <div class="blink">event: <span id="status">batterystatus</span> <span id="low">batterylow</span> <span id="critical">batterycritical</span> <span id="ok">batteryok</span> </div> <br> <div>level: <span id="levelmeter"></span> <br> <input id="level" type="range" min="0" max="100" step="1" value="30" onchange="onLevelChange(this.value)"> </div> <div>isPlugged: <input id="isplugged" type="checkbox" onchange="onIsPluggedChange(this.checked)"> </div> </div> <p> See console.log() for debug information. </p> <div id="footer">by <a href="http://twitter.com/anssik">Anssi Kostiainen</a></div> </body> </html> --- NEW FILE: battery-status.css --- body { margin-top: 0; padding-top: 0; font: 100% sans-serif; top: 0px; margin-left: auto; margin-right: auto; max-width: 50em; } h1, h2, h3 { color: #005a9c; } h1 { font: 170% sans-serif; margin-top: 30px; } h2 { font: 140% sans-serif; } h3 { font: 110% sans-serif; } .blink > span { border-radius: 5px; padding: 0 10px 0 10px; -webkit-transition: all 0.2s ease-in; -moz-transition: all 0.2s ease-in; -o-transition: all 0.2s ease-in; -transition: all 0.2s ease-in; } #level { width: 500px; } #levelmeter { width: 30px; } .controls { border: dotted 1px gray; padding: 5px; margin-bottom: 10px; background-color: #f0f0f0; } #warning { display: none; background-color: #ff6a6a; border: solid 1px red; padding: 10px; margin-top: 15px; } #footer { border-top: dotted 1px gray; color: gray; font: 75% sans-serif; padding: 10px; }
Received on Thursday, 8 September 2011 16:37:08 UTC