123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict';
- import $ from 'jquery';
- function Timer(elem, options, cb) {
- var _this = this,
- duration = options.duration,//options is an object for easily adding features later.
- nameSpace = Object.keys(elem.data())[0] || 'timer',
- remain = -1,
- start,
- timer;
- this.isPaused = false;
- this.restart = function() {
- remain = -1;
- clearTimeout(timer);
- this.start();
- }
- this.start = function() {
- this.isPaused = false;
- // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
- clearTimeout(timer);
- remain = remain <= 0 ? duration : remain;
- elem.data('paused', false);
- start = Date.now();
- timer = setTimeout(function(){
- if(options.infinite){
- _this.restart();//rerun the timer.
- }
- if (cb && typeof cb === 'function') { cb(); }
- }, remain);
- elem.trigger(`timerstart.zf.${nameSpace}`);
- }
- this.pause = function() {
- this.isPaused = true;
- //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
- clearTimeout(timer);
- elem.data('paused', true);
- var end = Date.now();
- remain = remain - (end - start);
- elem.trigger(`timerpaused.zf.${nameSpace}`);
- }
- }
- export {Timer};
|