diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/demos/timers.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/demos/timers.html | 291 |
1 files changed, 0 insertions, 291 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/demos/timers.html b/contexts/data/lib/closure-library/closure/goog/demos/timers.html deleted file mode 100644 index 1938178..0000000 --- a/contexts/data/lib/closure-library/closure/goog/demos/timers.html +++ /dev/null @@ -1,291 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2010 The Closure Library Authors. All Rights Reserved. - -Use of this source code is governed by the Apache License, Version 2.0. -See the COPYING file for details. ---> -<head> - <title>goog.Timer, goog.async.Throttle goog.async.Delay</title> - <script src="../base.js"></script> - - <script> - goog.require('goog.async.Delay'); - goog.require('goog.async.Throttle'); - goog.require('goog.Timer'); - goog.require('goog.dom'); - </script> - - <link rel="stylesheet" href="css/demo.css"> - <style> - .userStatus { - font-style: italic; - font-weight: bold; - } - </style> -</head> -<body> - <h1>A Collection of Time Based Utilities</h1> - <h2>goog.async.Delay</h2> - <p>An action can be invoked after some delay.</p> - Delay (seconds): <input size="2" type="text" id="delaySeconds" value="2"> - <button onclick="doDelay()">Start Delay</button> - <button onclick="doReset()">Restart Delay</button> - <br /> - Delay Status: <span class="userStatus" id="delayStatus">Not Set</span> - - <h2>goog.async.Throttle</h2> - A throttle prevents the action from being called more than once per time - interval. - <br /> - 'Create' the Throttle, then hit the 'Do Throttle' button a lot - of times. Notice the number of 'Hits' increasing with each button press. - <br /> - The action will be invoked no more than once per time interval. - <p> - Throttle interval (seconds): - <input size="2" type="text" id="throttleSeconds" value="2"> - <button onclick="doThrottleStart()">Create Throttle</button> - <button onclick="doThrottle()">Do Throttle</button> - <br /> - Throttle Hits: <span class="userStatus" id="throttleHits"></span> - <br /> - Throttle Action Called: <span class="userStatus" id="throttleStatus"></span> - </p> - <h2>goog.Timer</h2> - A timer can be set up to call a timeout function on every 'tick' of the timer. - <p> - Timer interval (seconds): - <input size="2" type="text" id="timerSeconds" value="1"> - <button onclick="doTimerStart()">Start Timer</button> - <button onclick="doTimerStop()">Stop Timer</button> - <button onclick="doTimerRestart()">Restart Timer</button> - <br /> - Timer Status: <span class="userStatus" id="timerStatus">Not Set</span> - </p> - <h2>goog.Timer.callOnce</h2> - Timer also has a useful utility function that can call an action after some - timeout. - <br /> - This a shortcut/replacement for window.setTimeout, and has a - corresponding goog.Timer.clear as well, which stops the action. - <p> - Timeout (seconds): <input size="2" type="text" id="doOnceSeconds" value="2"> - <button onclick="doOnce()">Go</button> - <button onclick="doOnceClear()">Clear</button> - <br /> - Do Once Status: <span class="userStatus" id="doOnceStatus"></span> - </p> - <script> - - /** - * Get the seconds from a document element. - * @param {string} id The id of the element - * @return {number} - */ - var getSeconds = function (id) { - var time = Number(goog.dom.getElement(id).value); - if (isNaN(time)) { - alert('Please enter a Number'); - return null; - } else { - return time; - } - }; - - /** - * Convert seconds to ms. - * @param {number} seconds The time in Seconds - * @return {number} - */ - var inMs = function (seconds) { - return seconds * 1000; - }; - - /** - * Delay. - */ - - var delay = null; - var delayStatus = goog.dom.getElement('delayStatus'); - - /** - * Start the delay, on the button press. - */ - var doDelay = function() { - if (delay) { - goog.dom.setTextContent(delayStatus, 'Delay already set.'); - return; - } - - var seconds = getSeconds('delaySeconds'); - if (!goog.isNumber(seconds)) { - return; - } - delay = new goog.async.Delay(delayedAction, inMs(seconds)); - delay.start(); - goog.dom.setTextContent(delayStatus, - 'Delay for: ' + seconds + ' seconds.'); - }; - - /** - * Reset the delay. - */ - var doReset = function(){ - if (!delay) { - return; - } - goog.dom.setTextContent(delayStatus, 'Delay Restarted.'); - delay.start(); - }; - - /** - * Callback, after some delay. - */ - var delayedAction = function() { - goog.dom.setTextContent(delayStatus, 'Action called.'); - delay.dispose(); - delay = null; - }; - - /** - * Throttle. - */ - - var throttle = null; - var throttleCount = 0; - var throttleFireCount = 0; - var throttleHits = goog.dom.getElement('throttleHits'); - var throttleStatus = goog.dom.getElement('throttleStatus'); - - /** - * Start a Throttle. - */ - var doThrottleStart = function() { - var seconds = getSeconds('throttleSeconds'); - if (!goog.isNumber(seconds)) { - return; - } - // Get rid of an old one, if it exists. - if (throttle) { - throttle.dispose(); - throttleCount = 0; - throttleFireCount = 0; - } - // Create the throttle object for the given time. - throttle = new goog.async.Throttle(throttleAction, inMs(seconds)); - // Reset the hits and the count. - goog.dom.setTextContent(throttleHits, throttleFireCount); - goog.dom.setTextContent(throttleStatus, throttleCount); - }; - - /** - * Do the throttle action, this can be called as often as desired. - */ - var doThrottle = function(){ - if (throttle) { - // Fire the throttle, this will only actually 'fire' no more than - // once per interval. - throttle.fire(); - goog.dom.setTextContent(throttleHits, ++throttleFireCount); - } - }; - - /** - * Throttle Action Callback. - */ - var throttleAction = function() { - goog.dom.setTextContent(throttleStatus, ++throttleCount); - }; - - /** - * Timer. - */ - - var timer = null; - var timerStatus = goog.dom.getElement('timerStatus'); - var tickCount = 0; - - /** - * Start a timer. - */ - var doTimerStart = function() { - var seconds = getSeconds('timerSeconds'); - if (!goog.isNumber(seconds)) { - return; - } - if (timer) { - timer.dispose(); - tickCount = 0; - } - // A timer can be created with no callback object, - // listen for the TICK event. - timer = new goog.Timer(inMs(seconds)); - timer.start(); - goog.events.listen(timer, goog.Timer.TICK, tickAction); - }; - - /** - * Stop the Timer. - */ - var doTimerStop = function() { - if (timer) { - timer.stop(); - } - }; - - /** - * Reset the Timer. - */ - var doTimerRestart = function() { - if (timer) { - timer.start(); - } - }; - - /** - * Tick callback, called whenever the Timer sends a TICK event. - */ - var tickAction = function() { - tickCount++; - goog.dom.setTextContent(timerStatus, 'Got tick: ' + tickCount); - }; - - var doOnceTimer = null; - var doOnceStatus = goog.dom.getElement('doOnceStatus'); - - /* - * Do some action once, optional delay. Can not be restarted, like Delay, - * only cleared. - */ - var doOnce = function() { - if (doOnceTimer) { - // Timer already set, do not reset it. - return; - } - var seconds = getSeconds('doOnceSeconds'); - if (!goog.isNumber(seconds)) { - return; - } - goog.dom.setTextContent(doOnceStatus, 'Will call action in ' + seconds + - ' seconds.'); - doOnceTimer = goog.Timer.callOnce(function() { - goog.dom.setTextContent(doOnceStatus, 'Action called.'); - doOnceTimer = null; - }, inMs(seconds)); - }; - - /* - * Clear the doOnce, do not do the action. - */ - var doOnceClear = function() { - goog.Timer.clear(doOnceTimer); - doOnceTimer = null; - goog.dom.setTextContent(doOnceStatus, - 'Timer cleared, action not called.'); - }; - - </script> -</body> -</html> |