defaultbinding.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset='utf-8' />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="description" content="Jquery-idletimer : provides you a way to monitor user activity with a page." />
  8. <title>Jquery-idletimer</title>
  9. <!-- jQuery and idleTimer -->
  10. <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  11. <script type="text/javascript" src="../src/idle-timer.js"></script>
  12. <!-- Bootstrap/respond (ie8) and moment -->
  13. <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
  14. <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
  15. <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
  16. <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.js"></script>
  17. <!-- Respond.js proxy on external server -->
  18. <link href="//netdna.bootstrapcdn.com/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
  19. <link href="respond.proxy.gif" id="respond-redirect" rel="respond-redirect" />
  20. <script src="respond.proxy.js"></script>
  21. <style>
  22. body {
  23. margin-top: 40px;
  24. margin-bottom: 40px;
  25. }
  26. .btn {
  27. padding: 5px 6px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="navbar navbar-default navbar-fixed-top" role="navigation">
  33. <div class="container">
  34. <div class="navbar-header">
  35. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
  36. <span class="sr-only">Toggle navigation</span>
  37. <span class="icon-bar"></span>
  38. <span class="icon-bar"></span>
  39. <span class="icon-bar"></span>
  40. </button>
  41. <a class="navbar-brand" href="index.html">Jquery-idletimer</a>
  42. </div>
  43. <div class="navbar-collapse collapse">
  44. <ul class="nav navbar-nav">
  45. <li><a href="index.html">Main Demo</a></li>
  46. <li><a href="autologout.html">Auto Logout</a></li>
  47. <li><a href="https://github.com/thorst/jquery-idletimer">Documentation</a></li>
  48. </ul>
  49. <ul class="nav navbar-nav navbar-right">
  50. <li><a href="https://github.com/thorst/jquery-idletimer/zipball/master">Zip</a></li>
  51. <li><a href="https://github.com/thorst/jquery-idletimer/tarball/master">Tar</a></li>
  52. <li><a href="https://github.com/thorst/jquery-idletimer">Github</a></li>
  53. </ul>
  54. </div> <!--/.nav-collapse -->
  55. </div>
  56. </div>
  57. <div class="container">
  58. <h2>Concept</h2>
  59. <p>Here we use default bindings. Instead of explicitly telling idleTimer which element to bind to, it assumes document.</p>
  60. <p>Some previous versions had issues mixing default binding with explicit calling on document.</p>
  61. <p>This should no longer be the case. To test I've added 2 sets of buttons to show that they can be mixed.</p>
  62. <p>The background color changes to show that it is returning a jQuery object</p>
  63. <div class="row">
  64. <div class="col-md-12">
  65. <h3>Document <small><span id="docTimeout"></span> second timeout</small></h3>
  66. <h4>default binding</h4>
  67. <div class="btn-group">
  68. <a href="#" id="btDefaultPause" class="btn btn-default btn-sm">Pause</a>
  69. <a href="#" id="btDefaultResume" class="btn btn-default btn-sm">Resume</a>
  70. <a href="#" id="btDefaultElapsed" class="btn btn-default btn-sm">Elapsed</a>
  71. <a href="#" id="btDefaultInit" class="btn btn-default btn-sm">Init</a>
  72. <a href="#" id="btDefaultDestroy" class="btn btn-default btn-sm">Destroy</a>
  73. <a href="#" id="btDefaultReset" class="btn btn-default btn-sm">Reset</a>
  74. <a href="#" id="btDefaultLastActive" class="btn btn-default btn-sm">Last Active</a>
  75. <a href="#" id="btDefaultRemaining" class="btn btn-default btn-sm">Remaining</a>
  76. <a href="#" id="btDefaultState" class="btn btn-default btn-sm">State</a>
  77. </div>
  78. <h4>explicit binding</h4>
  79. <div class="btn-group">
  80. <a href="#" id="btExplicitPause" class="btn btn-default btn-sm">Pause</a>
  81. <a href="#" id="btExplicitResume" class="btn btn-default btn-sm">Resume</a>
  82. <a href="#" id="btExplicitElapsed" class="btn btn-default btn-sm">Elapsed</a>
  83. <a href="#" id="btExplicitInit" class="btn btn-default btn-sm">Init</a>
  84. <a href="#" id="btExplicitDestroy" class="btn btn-default btn-sm">Destroy</a>
  85. <a href="#" id="btExplicitReset" class="btn btn-default btn-sm">Reset</a>
  86. <a href="#" id="btExplicitLastActive" class="btn btn-default btn-sm">Last Active</a>
  87. <a href="#" id="btExplicitRemaining" class="btn btn-default btn-sm">Remaining</a>
  88. <a href="#" id="btExplicitState" class="btn btn-default btn-sm">State</a>
  89. </div>
  90. <textarea rows="10" cols="30" id="docStatus" class="form-control"></textarea><br />
  91. </div>
  92. </div>
  93. </div>
  94. <script>
  95. /*
  96. scrollToBottom plugin, chainable
  97. */
  98. $.fn.scrollToBottom = function () {
  99. this.scrollTop(this[0].scrollHeight);
  100. return this;
  101. };
  102. var rndColor = function () {
  103. return '#' + Math.floor(Math.random() * 16777215).toString(16);
  104. }
  105. var
  106. docTimeout = 5000
  107. ;
  108. </script>
  109. <script>
  110. /*
  111. Code for document idle timer
  112. */
  113. (function ($) {
  114. // Display the actual timeout on the page
  115. $('#docTimeout').text(docTimeout / 1000);
  116. //Clear old statuses
  117. $('#docStatus').val('');
  118. //Handle idle event
  119. $(document).on("idle.idleTimer", function () {
  120. $("#docStatus")
  121. .val(function (i, v) {
  122. return v + "Idle @ " + new Date() + " \n";
  123. })
  124. .removeClass("alert-success")
  125. .addClass("alert-warning")
  126. .scrollToBottom();
  127. });
  128. //Handle active event
  129. $(document).on("active.idleTimer", function () {
  130. $('#docStatus')
  131. .val(function (i, v) {
  132. return v + "Active @ " + new Date() + " \n";
  133. })
  134. .addClass("alert-success")
  135. .removeClass("alert-warning")
  136. .scrollToBottom();
  137. });
  138. //Start timeout, passing no options
  139. //Same as $(document).idleTimer(docTimeout);
  140. $.idleTimer(docTimeout);
  141. //For demo purposes, get initial state and style accordingly
  142. if ($.idleTimer("isIdle")) {
  143. $("#docStatus")
  144. .val(function (i, v) {
  145. return v + "Initial Idle @ " + new Date() + " \n";
  146. })
  147. .removeClass("alert-success")
  148. .addClass("alert-warning")
  149. .scrollToBottom();
  150. } else {
  151. $('#docStatus')
  152. .val(function (i, v) {
  153. return v + "Initial Active @ " + new Date() + " \n";
  154. })
  155. .addClass("alert-success")
  156. .removeClass("alert-warning")
  157. .scrollToBottom();
  158. }
  159. })(jQuery);
  160. </script>
  161. <script>
  162. (function ($) {
  163. /*
  164. Handle button events
  165. */
  166. $("#btDefaultPause").click(function () {
  167. //pause
  168. $.idleTimer("pause").find("h2").css({ "background-color": rndColor() });
  169. $('#docStatus')
  170. .val(function (i, v) {
  171. return v + "Paused @ " + new Date() + " \n";
  172. })
  173. .scrollToBottom();
  174. $(this).blur();
  175. return false;
  176. });
  177. $("#btDefaultResume").click(function () {
  178. //resume
  179. $.idleTimer("resume").find("h2").css({ "background-color": rndColor() });
  180. $('#docStatus')
  181. .val(function (i, v) {
  182. return v + "Resumed @ " + new Date() + " \n";
  183. })
  184. .scrollToBottom();
  185. $(this).blur();
  186. return false;
  187. });
  188. $("#btDefaultElapsed").click(function () {
  189. $('#docStatus')
  190. .val(function (i, v) {
  191. return v + "Elapsed: " + $.idleTimer("getElapsedTime") + " \n";
  192. })
  193. .scrollToBottom();
  194. $(this).blur();
  195. return false;
  196. });
  197. $("#btDefaultInit").click(function () {
  198. // for demo purposes show init with just object
  199. $.idleTimer({ timeout: docTimeout }).find("h2").css({ "background-color": rndColor() });
  200. $('#docStatus')
  201. .val(function (i, v) {
  202. return v + "Init: @ " + moment().format() + " \n";
  203. })
  204. .scrollToBottom();
  205. //Apply classes for default state
  206. if ($.idleTimer("isIdle")) {
  207. $('#docStatus')
  208. .removeClass("alert-success")
  209. .addClass("alert-warning");
  210. } else {
  211. $('#docStatus')
  212. .addClass("alert-success")
  213. .removeClass("alert-warning");
  214. }
  215. $(this).blur();
  216. return false;
  217. });
  218. $("#btDefaultDestroy").click(function () {
  219. // console.log($.idleTimer("destroy"));
  220. $.idleTimer("destroy").find("h2").css({ "background-color": rndColor() });
  221. $('#docStatus')
  222. .val(function (i, v) {
  223. return v + "Destroyed: @ " + moment().format() + " \n";
  224. })
  225. .removeClass("alert-success")
  226. .removeClass("alert-warning")
  227. .scrollToBottom();
  228. $(this).blur();
  229. return false;
  230. });
  231. $("#btDefaultReset").click(function () {
  232. //Reset
  233. var s = $.idleTimer("reset").find("h2").css({ "background-color": rndColor() });
  234. //Output
  235. $('#docStatus')
  236. .val(function (i, v) {
  237. return v + "Reset @ " + new Date() + " \n";
  238. })
  239. .scrollToBottom();
  240. //Apply classes for default state
  241. var idle = $.idleTimer("isIdle");
  242. if (idle) {
  243. $('#docStatus')
  244. .removeClass("alert-success")
  245. .addClass("alert-warning");
  246. } else {
  247. $('#docStatus')
  248. .addClass("alert-success")
  249. .removeClass("alert-warning");
  250. }
  251. $(this).blur();
  252. return false;
  253. });
  254. $("#btDefaultLastActive").click(function () {
  255. $('#docStatus')
  256. .val(function (i, v) {
  257. return v + "Last Active: " + $.idleTimer("getLastActiveTime") + " \n";
  258. })
  259. .scrollToBottom();
  260. $(this).blur();
  261. return false;
  262. });
  263. $("#btDefaultRemaining").click(function () {
  264. $('#docStatus')
  265. .val(function (i, v) {
  266. return v + "Remaining: " + $.idleTimer("getRemainingTime") + " \n";
  267. })
  268. .scrollToBottom();
  269. $(this).blur();
  270. return false;
  271. });
  272. $("#btDefaultState").click(function () {
  273. $('#docStatus')
  274. .val(function (i, v) {
  275. return v + "State: " + ($.idleTimer("isIdle") ? "idle" : "active") + " \n";
  276. })
  277. .scrollToBottom();
  278. $(this).blur();
  279. return false;
  280. });
  281. })(jQuery);
  282. </script>
  283. <script>
  284. (function ($) {
  285. /*
  286. Handle button events
  287. */
  288. $("#btExplicitPause").click(function () {
  289. //pause
  290. $(document).idleTimer("pause").find("h2").css({ "background-color": rndColor() });
  291. $('#docStatus')
  292. .val(function (i, v) {
  293. return v + "Paused @ " + new Date() + " \n";
  294. })
  295. .scrollToBottom();
  296. $(this).blur();
  297. return false;
  298. });
  299. $("#btExplicitResume").click(function () {
  300. //resume
  301. $(document).idleTimer("resume").find("h2").css({ "background-color": rndColor() });
  302. $('#docStatus')
  303. .val(function (i, v) {
  304. return v + "Resumed @ " + new Date() + " \n";
  305. })
  306. .scrollToBottom();
  307. $(this).blur();
  308. return false;
  309. });
  310. $("#btExplicitElapsed").click(function () {
  311. $('#docStatus')
  312. .val(function (i, v) {
  313. return v + "Elapsed: " + $(document).idleTimer("getElapsedTime") + " \n";
  314. })
  315. .scrollToBottom();
  316. $(this).blur();
  317. return false;
  318. });
  319. $("#btExplicitInit").click(function () {
  320. // for demo purposes show init with just object
  321. $.idleTimer({ timeout: docTimeout }).find("h2").css({ "background-color": rndColor() });
  322. $('#docStatus')
  323. .val(function (i, v) {
  324. return v + "Init: @ " + moment().format() + " \n";
  325. })
  326. .scrollToBottom();
  327. //Apply classes for default state
  328. if ($(document).idleTimer("isIdle")) {
  329. $('#docStatus')
  330. .removeClass("alert-success")
  331. .addClass("alert-warning");
  332. } else {
  333. $('#docStatus')
  334. .addClass("alert-success")
  335. .removeClass("alert-warning");
  336. }
  337. $(this).blur();
  338. return false;
  339. });
  340. $("#btExplicitDestroy").click(function () {
  341. $(document).idleTimer("destroy").find("h2").css({ "background-color": rndColor() });
  342. $('#docStatus')
  343. .val(function (i, v) {
  344. return v + "Destroyed: @ " + moment().format() + " \n";
  345. })
  346. .removeClass("alert-success")
  347. .removeClass("alert-warning")
  348. .scrollToBottom();
  349. $(this).blur();
  350. return false;
  351. });
  352. $("#btExplicitReset").click(function () {
  353. //Reset
  354. var s = $(document).idleTimer("reset").find("h2").css({ "background-color": rndColor() });
  355. //Output
  356. $('#docStatus')
  357. .val(function (i, v) {
  358. return v + "Reset @ " + new Date() + " \n";
  359. })
  360. .scrollToBottom();
  361. //Apply classes for default state
  362. var idle = $(document).idleTimer("isIdle");
  363. if (idle) {
  364. $('#docStatus')
  365. .removeClass("alert-success")
  366. .addClass("alert-warning");
  367. } else {
  368. $('#docStatus')
  369. .addClass("alert-success")
  370. .removeClass("alert-warning");
  371. }
  372. $(this).blur();
  373. return false;
  374. });
  375. $("#btExplicitLastActive").click(function () {
  376. $('#docStatus')
  377. .val(function (i, v) {
  378. return v + "Last Active: " + $(document).idleTimer("getLastActiveTime") + " \n";
  379. })
  380. .scrollToBottom();
  381. $(this).blur();
  382. return false;
  383. });
  384. $("#btExplicitRemaining").click(function () {
  385. $('#docStatus')
  386. .val(function (i, v) {
  387. return v + "Remaining: " + $(document).idleTimer("getRemainingTime") + " \n";
  388. })
  389. .scrollToBottom();
  390. $(this).blur();
  391. return false;
  392. });
  393. $("#btExplicitState").click(function () {
  394. $('#docStatus')
  395. .val(function (i, v) {
  396. return v + "State: " + ($(document).idleTimer("isIdle") ? "idle" : "active") + " \n";
  397. })
  398. .scrollToBottom();
  399. $(this).blur();
  400. return false;
  401. });
  402. })(jQuery);
  403. </script>
  404. </body>
  405. </html>