Няма описание
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

extended-ui-misc-idle-timer.js 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. /**
  2. * Ideal Timer (jquery)
  3. */
  4. 'use strict';
  5. $(function () {
  6. var timerDoc = $('#document-Status'),
  7. btnPause = $('#document-Pause'),
  8. btnResume = $('#document-Resume'),
  9. btnElapsed = $('#document-Elapsed'),
  10. btnDestroy = $('#document-Destroy'),
  11. btnInit = $('#document-Init');
  12. // Document 5 Sec Timeout
  13. // --------------------------------------------------------------------
  14. if (timerDoc.length) {
  15. var docTimeout = 5000;
  16. // idle/active events
  17. $(document).on('idle.idleTimer', function (event, elem, obj) {
  18. timerDoc
  19. .val(function (i, value) {
  20. return value + 'Idle @ ' + moment().format() + ' \n';
  21. })
  22. .removeClass('alert-success')
  23. .addClass('alert-warning');
  24. });
  25. $(document).on('active.idleTimer', function (event, elem, obj, e) {
  26. timerDoc
  27. .val(function (i, value) {
  28. return value + 'Active [' + e.type + '] [' + e.target.nodeName + '] @ ' + moment().format() + ' \n';
  29. })
  30. .addClass('alert-success')
  31. .removeClass('alert-warning');
  32. });
  33. // button events
  34. btnPause.on('click', function () {
  35. // Pause
  36. $(document).idleTimer('pause');
  37. timerDoc.val(function (i, value) {
  38. return value + 'Paused @ ' + moment().format() + ' \n';
  39. });
  40. $(this).blur();
  41. return false;
  42. });
  43. btnResume.on('click', function () {
  44. // Resume
  45. $(document).idleTimer('resume');
  46. timerDoc.val(function (i, value) {
  47. return value + 'Resumed @ ' + moment().format() + ' \n';
  48. });
  49. $(this).blur();
  50. return false;
  51. });
  52. btnElapsed.on('click', function () {
  53. // Elapsed
  54. timerDoc.val(function (i, value) {
  55. return value + 'Elapsed (since becoming active): ' + $(document).idleTimer('getElapsedTime') + ' \n';
  56. });
  57. $(this).blur();
  58. return false;
  59. });
  60. btnDestroy.on('click', function () {
  61. // Destroy
  62. $(document).idleTimer('destroy');
  63. timerDoc
  64. .val(function (i, value) {
  65. return value + 'Destroyed: @ ' + moment().format() + ' \n';
  66. })
  67. .removeClass('alert-success')
  68. .removeClass('alert-warning');
  69. $(this).blur();
  70. return false;
  71. });
  72. btnInit.on('click', function () {
  73. // Initialize
  74. // show init with object
  75. $(document).idleTimer({
  76. timeout: docTimeout
  77. });
  78. timerDoc.val(function (i, value) {
  79. return value + 'Init: @ ' + moment().format() + ' \n';
  80. });
  81. // Apply classes for default state
  82. if ($(document).idleTimer('isIdle')) {
  83. timerDoc.removeClass('alert-success').addClass('alert-warning');
  84. } else {
  85. timerDoc.addClass('alert-success').removeClass('alert-warning');
  86. }
  87. $(this).blur();
  88. return false;
  89. });
  90. // Clear old statuses
  91. timerDoc.val('');
  92. // Start timeout, passing no options
  93. $(document).idleTimer(docTimeout);
  94. // style based on state
  95. if ($(document).idleTimer('isIdle')) {
  96. timerDoc
  97. .val(function (i, value) {
  98. return value + 'Initial Idle State @ ' + moment().format() + ' \n';
  99. })
  100. .removeClass('alert-success')
  101. .addClass('alert-warning');
  102. } else {
  103. timerDoc
  104. .val(function (i, value) {
  105. return value + 'Initial Active State @ ' + moment().format() + ' \n';
  106. })
  107. .addClass('alert-success')
  108. .removeClass('alert-warning');
  109. }
  110. }
  111. // Element 3 Sec Timeout
  112. // --------------------------------------------------------------------
  113. var elementTimer = $('#element-Status'),
  114. btnReset = $('#element-Reset'),
  115. btnRemaining = $('#element-Remaining'),
  116. btnLastActive = $('#element-LastActive'),
  117. btnState = $('#element-State');
  118. if (elementTimer.length) {
  119. var elTimeout = 3000;
  120. // idle/active events
  121. elementTimer.on('idle.idleTimer', function (event, elem, obj) {
  122. event.stopPropagation();
  123. elementTimer
  124. .val(function (i, value) {
  125. return value + 'Idle @ ' + moment().format() + ' \n';
  126. })
  127. .removeClass('alert-success')
  128. .addClass('alert-warning');
  129. });
  130. elementTimer.on('active.idleTimer', function (event) {
  131. event.stopPropagation();
  132. elementTimer
  133. .val(function (i, value) {
  134. return value + 'Active @ ' + moment().format() + ' \n';
  135. })
  136. .addClass('alert-success')
  137. .removeClass('alert-warning');
  138. });
  139. // button events
  140. btnReset.on('click', function () {
  141. // Reset
  142. elementTimer.idleTimer('reset').val(function (i, value) {
  143. return value + 'Reset @ ' + moment().format() + ' \n';
  144. });
  145. // classes for default state
  146. if ($('#element-Status').idleTimer('isIdle')) {
  147. elementTimer.removeClass('alert-success').addClass('alert-warning');
  148. } else {
  149. elementTimer.addClass('alert-success').removeClass('alert-warning');
  150. }
  151. $(this).blur();
  152. return false;
  153. });
  154. btnRemaining.on('click', function () {
  155. // Remaining
  156. elementTimer.val(function (i, value) {
  157. return value + 'Remaining: ' + elementTimer.idleTimer('getRemainingTime') + ' \n';
  158. });
  159. $(this).blur();
  160. return false;
  161. });
  162. btnLastActive.on('click', function () {
  163. // Last Active
  164. elementTimer.val(function (i, value) {
  165. return value + 'LastActive: ' + elementTimer.idleTimer('getLastActiveTime') + ' \n';
  166. });
  167. $(this).blur();
  168. return false;
  169. });
  170. btnState.on('click', function () {
  171. // State
  172. elementTimer.val(function (i, value) {
  173. return value + 'State: ' + ($('#element-Status').idleTimer('isIdle') ? 'idle' : 'active') + ' \n';
  174. });
  175. $(this).blur();
  176. return false;
  177. });
  178. // Clear value if cached & start time
  179. elementTimer.val('').idleTimer(elTimeout);
  180. // show initial state
  181. if (elementTimer.idleTimer('isIdle')) {
  182. elementTimer
  183. .val(function (i, value) {
  184. return value + 'Initial Idle @ ' + moment().format() + ' \n';
  185. })
  186. .removeClass('alert-success')
  187. .addClass('alert-warning');
  188. } else {
  189. elementTimer
  190. .val(function (i, value) {
  191. return value + 'Initial Active @ ' + moment().format() + ' \n';
  192. })
  193. .addClass('alert-success')
  194. .removeClass('alert-warning');
  195. }
  196. }
  197. });