| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset='utf-8' />
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description" content="Jquery-idletimer : provides you a way to monitor user activity with a page." />
- <title>Jquery-idletimer</title>
- <!-- jQuery and idleTimer -->
- <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
- <script type="text/javascript" src="../src/idle-timer.js"></script>
- <!-- Bootstrap/respond (ie8) and moment -->
- <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.js"></script>
- <!-- Respond.js proxy on external server -->
- <link href="//netdna.bootstrapcdn.com/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
- <link href="respond.proxy.gif" id="respond-redirect" rel="respond-redirect" />
- <script src="respond.proxy.js"></script>
- <style>
- body {
- margin-top: 40px;
- margin-bottom: 40px;
- }
- .btn {
- padding: 5px 6px;
- }
- </style>
- </head>
- <body>
- <div class="navbar navbar-default navbar-fixed-top" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="index.html">Jquery-idletimer</a>
- </div>
- <div class="navbar-collapse collapse">
- <ul class="nav navbar-nav">
- <li><a href="autologout.html">Auto Logout</a></li>
- <li><a href="defaultbinding.html">Default Binding</a></li>
- <li><a href="https://github.com/thorst/jquery-idletimer">Documentation</a></li>
- </ul>
- <ul class="nav navbar-nav navbar-right">
- <li><a href="https://github.com/thorst/jquery-idletimer/zipball/master">Zip</a></li>
- <li><a href="https://github.com/thorst/jquery-idletimer/tarball/master">Tar</a></li>
- <li><a href="https://github.com/thorst/jquery-idletimer">Github</a></li>
- </ul>
- </div> <!--/.nav-collapse -->
- </div>
- </div>
- <div class="container">
- <h2>Concept</h2>
- <p>The idle timer is built on <a href="http://jquery.com/">jQuery</a> and provides two events: <code>idle.idleTimer</code> and <code>active.idleTimer</code>, which fire when the user's idle state has changed.</p>
- <p>When you move your mouse over the page or start typing, you're considered "active".</p>
- <p>On this page we have two idle timers. One for the entire document. Another for the text area on the right (or bottom if your on mobile).</p>
- <p>I use explicit instantiation here</p>
- <div class="row">
- <div class="col-md-6">
- <h3>Document <small><span id="docTimeout"></span> second timeout</small></h3>
- <div class="btn-group">
- <a href="#" id="btPause" class="btn btn-default btn-sm">Pause</a>
- <a href="#" id="btResume" class="btn btn-default btn-sm">Resume</a>
- <a href="#" id="btElapsed" class="btn btn-default btn-sm">Elapsed</a>
- <a href="#" id="btInit" class="btn btn-default btn-sm">Init</a>
- <a href="#" id="btDestroy" class="btn btn-default btn-sm">Destroy</a>
- </div>
- <textarea rows="10" cols="30" id="docStatus" class="form-control"></textarea><br />
- </div>
- <div class="col-md-6">
- <h3>Element <small><span id="elTimeout"></span> second timeout</small></h3>
- <div class="btn-group">
- <a href="#" id="btReset" class="btn btn-default btn-sm">Reset</a>
- <a href="#" id="btLastActive" class="btn btn-default btn-sm">Last Active</a>
- <a href="#" id="btRemaining" class="btn btn-default btn-sm">Remaining</a>
- <a href="#" id="btState" class="btn btn-default btn-sm">State</a>
- </div>
- <textarea rows="10" cols="30" id="elStatus" class="form-control"></textarea><br />
- </div>
- </div>
- <h3>Dialogs</h3>
- <!-- Button trigger modal -->
- <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
- Launch modal
- </button>
- <button id="alert" class="btn btn-primary btn-lg">
- Launch alert
- </button>
- <!-- Modal -->
- <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title" id="myModalLabel">Modal title</h4>
- </div>
- <div class="modal-body">
- ...
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- /*
- scrollToBottom plugin, chainable
- */
- $.fn.scrollToBottom = function () {
- this.scrollTop(this[0].scrollHeight);
- return this;
- };
- /*
- click event for alert button
- */
- (function ($) {
- //Display alert
- $("#alert").click(function () { alert("Hello!"); return false; });
- })(jQuery);
- </script>
- <script type="text/javascript">
- /*
- Code for document idle timer
- */
- (function ($) {
- //Define default
- var
- docTimeout = 5000
- ;
- /*
- Handle raised idle/active events
- */
- $(document).on("idle.idleTimer", function (event, elem, obj) {
- $("#docStatus")
- .val(function (i, v) {
- return v + "Idle @ " + moment().format() + " \n";
- })
- .removeClass("alert-success")
- .addClass("alert-warning")
- .scrollToBottom();
- });
- $(document).on("active.idleTimer", function (event, elem, obj, e) {
- $('#docStatus')
- .val(function (i, v) {
- return v + "Active [" + e.type + "] [" + e.target.nodeName + "] @ " + moment().format() + " \n";
- })
- .addClass("alert-success")
- .removeClass("alert-warning")
- .scrollToBottom();
- });
- /*
- Handle button events
- */
- $("#btPause").click(function () {
- $(document).idleTimer("pause");
- $('#docStatus')
- .val(function (i, v) {
- return v + "Paused @ " + moment().format() + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btResume").click(function () {
- $(document).idleTimer("resume");
- $('#docStatus')
- .val(function (i, v) {
- return v + "Resumed @ " + moment().format() + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btElapsed").click(function () {
- $('#docStatus')
- .val(function (i, v) {
- return v + "Elapsed (since becoming active): " + $(document).idleTimer("getElapsedTime") + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btDestroy").click(function () {
- $(document).idleTimer("destroy");
- $('#docStatus')
- .val(function (i, v) {
- return v + "Destroyed: @ " + moment().format() + " \n";
- })
- .removeClass("alert-success")
- .removeClass("alert-warning")
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btInit").click(function () {
- // for demo purposes show init with just object
- $(document).idleTimer({ timeout: docTimeout });
- $('#docStatus')
- .val(function (i, v) {
- return v + "Init: @ " + moment().format() + " \n";
- })
- .scrollToBottom();
- //Apply classes for default state
- if ($(document).idleTimer("isIdle")) {
- $('#docStatus')
- .removeClass("alert-success")
- .addClass("alert-warning");
- } else {
- $('#docStatus')
- .addClass("alert-success")
- .removeClass("alert-warning");
- }
- $(this).blur();
- return false;
- });
- //Clear old statuses
- $('#docStatus').val('');
- //Start timeout, passing no options
- //Same as $.idleTimer(docTimeout, docOptions);
- $(document).idleTimer(docTimeout);
- //For demo purposes, style based on initial state
- if ($(document).idleTimer("isIdle")) {
- $("#docStatus")
- .val(function (i, v) {
- return v + "Initial Idle State @ " + moment().format() + " \n";
- })
- .removeClass("alert-success")
- .addClass("alert-warning")
- .scrollToBottom();
- } else {
- $('#docStatus')
- .val(function (i, v) {
- return v + "Initial Active State @ " + moment().format() + " \n";
- })
- .addClass("alert-success")
- .removeClass("alert-warning")
- .scrollToBottom();
- }
- //For demo purposes, display the actual timeout on the page
- $('#docTimeout').text(docTimeout / 1000);
- })(jQuery);
- </script>
- <script type="text/javascript">
- /*
- Code for element idle timer
- */
- (function ($) {
- //Define textarea settings
- var
- taTimeout = 3000
- ;
- /*
- Handle raised idle/active events
- */
- $('#elStatus').on("idle.idleTimer", function (event, elem, obj) {
- //If you dont stop propagation it will bubble up to document event handler
- event.stopPropagation();
- $('#elStatus')
- .val(function (i, v) {
- return v + "Idle @ " + moment().format() + " \n";
- })
- .removeClass("alert-success")
- .addClass("alert-warning")
- .scrollToBottom();
- });
- $('#elStatus').on("active.idleTimer", function (event) {
- //If you dont stop propagation it will bubble up to document event handler
- event.stopPropagation();
- $('#elStatus')
- .val(function (i, v) {
- return v + "Active @ " + moment().format() + " \n";
- })
- .addClass("alert-success")
- .removeClass("alert-warning")
- .scrollToBottom();
- });
- /*
- Handle button events
- */
- $("#btReset").click(function () {
- $('#elStatus')
- .idleTimer("reset")
- .val(function (i, v) {
- return v + "Reset @ " + moment().format() + " \n";
- })
- .scrollToBottom();
- //Apply classes for default state
- if ($("#elStatus").idleTimer("isIdle")) {
- $('#elStatus')
- .removeClass("alert-success")
- .addClass("alert-warning");
- } else {
- $('#elStatus')
- .addClass("alert-success")
- .removeClass("alert-warning");
- }
- $(this).blur();
- return false;
- });
- $("#btRemaining").click(function () {
- $('#elStatus')
- .val(function (i, v) {
- return v + "Remaining: " + $("#elStatus").idleTimer("getRemainingTime") + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btLastActive").click(function () {
- $('#elStatus')
- .val(function (i, v) {
- return v + "LastActive: " + $("#elStatus").idleTimer("getLastActiveTime") + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- $("#btState").click(function () {
- $('#elStatus')
- .val(function (i, v) {
- return v + "State: " + ($("#elStatus").idleTimer("isIdle")? "idle":"active") + " \n";
- })
- .scrollToBottom();
- $(this).blur();
- return false;
- });
- //Clear value if there was one cached & start time
- $('#elStatus').val('').idleTimer(taTimeout);
- //For demo purposes, show initial state
- if ($("#elStatus").idleTimer("isIdle")) {
- $("#elStatus")
- .val(function (i, v) {
- return v + "Initial Idle @ " + moment().format() + " \n";
- })
- .removeClass("alert-success")
- .addClass("alert-warning")
- .scrollToBottom();
- } else {
- $('#elStatus')
- .val(function (i, v) {
- return v + "Initial Active @ " + moment().format() + " \n";
- })
- .addClass("alert-success")
- .removeClass("alert-warning")
- .scrollToBottom();
- }
- // Display the actual timeout on the page
- $('#elTimeout').text(taTimeout / 1000);
- })(jQuery);
- </script>
- </body>
- </html>
|