mirror of https://github.com/interlegis/sapl.git
3 changed files with 300 additions and 5 deletions
@ -0,0 +1,296 @@ |
|||||
|
/*! |
||||
|
* jQuery-runner - v2.3.3 - 2014-08-06 |
||||
|
* https://github.com/jylauril/jquery-runner/
|
||||
|
* Copyright (c) 2014 Jyrki Laurila <https://github.com/jylauril>
|
||||
|
*/ |
||||
|
(function() { |
||||
|
var Runner, formatTime, meta, pad, runners, uid, _$, _requestAnimationFrame, _uid; |
||||
|
|
||||
|
meta = { |
||||
|
version: "2.3.3", |
||||
|
name: "jQuery-runner" |
||||
|
}; |
||||
|
|
||||
|
_$ = this.jQuery || this.Zepto || this.$; |
||||
|
|
||||
|
if (!(_$ && _$.fn)) { |
||||
|
throw new Error('[' + meta.name + '] jQuery or jQuery-like library is required for this plugin to work'); |
||||
|
} |
||||
|
|
||||
|
runners = {}; |
||||
|
|
||||
|
pad = function(num) { |
||||
|
return (num < 10 ? '0' : '') + num; |
||||
|
}; |
||||
|
|
||||
|
_uid = 1; |
||||
|
|
||||
|
uid = function() { |
||||
|
return 'runner' + _uid++; |
||||
|
}; |
||||
|
|
||||
|
_requestAnimationFrame = (function(win, raf) { |
||||
|
return win['r' + raf] || win['webkitR' + raf] || win['mozR' + raf] || win['msR' + raf] || function(fn) { |
||||
|
return setTimeout(fn, 30); |
||||
|
}; |
||||
|
})(this, 'equestAnimationFrame'); |
||||
|
|
||||
|
formatTime = function(time, settings) { |
||||
|
var i, len, ms, output, prefix, separator, step, steps, value, _i, _len; |
||||
|
settings = settings || {}; |
||||
|
steps = [3600000, 60000, 1000, 10]; |
||||
|
separator = ['', ':', ':', '.']; |
||||
|
prefix = ''; |
||||
|
output = ''; |
||||
|
ms = settings.milliseconds; |
||||
|
len = steps.length; |
||||
|
value = 0; |
||||
|
if (time < 0) { |
||||
|
time = Math.abs(time); |
||||
|
prefix = '-'; |
||||
|
} |
||||
|
for (i = _i = 0, _len = steps.length; _i < _len; i = ++_i) { |
||||
|
step = steps[i]; |
||||
|
value = 0; |
||||
|
if (time >= step) { |
||||
|
value = Math.floor(time / step); |
||||
|
time -= value * step; |
||||
|
} |
||||
|
if ((value || i > 1 || output) && (i !== len - 1 || ms)) { |
||||
|
output += (output ? separator[i] : '') + pad(value); |
||||
|
} |
||||
|
} |
||||
|
return prefix + output; |
||||
|
}; |
||||
|
|
||||
|
Runner = (function() { |
||||
|
function Runner(items, options, start) { |
||||
|
var id; |
||||
|
if (!(this instanceof Runner)) { |
||||
|
return new Runner(items, options, start); |
||||
|
} |
||||
|
this.items = items; |
||||
|
id = this.id = uid(); |
||||
|
this.settings = _$.extend({}, this.settings, options); |
||||
|
runners[id] = this; |
||||
|
items.each(function(index, element) { |
||||
|
_$(element).data('runner', id); |
||||
|
}); |
||||
|
this.value(this.settings.startAt); |
||||
|
if (start || this.settings.autostart) { |
||||
|
this.start(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Runner.prototype.running = false; |
||||
|
|
||||
|
Runner.prototype.updating = false; |
||||
|
|
||||
|
Runner.prototype.finished = false; |
||||
|
|
||||
|
Runner.prototype.interval = null; |
||||
|
|
||||
|
Runner.prototype.total = 0; |
||||
|
|
||||
|
Runner.prototype.lastTime = 0; |
||||
|
|
||||
|
Runner.prototype.startTime = 0; |
||||
|
|
||||
|
Runner.prototype.lastLap = 0; |
||||
|
|
||||
|
Runner.prototype.lapTime = 0; |
||||
|
|
||||
|
Runner.prototype.settings = { |
||||
|
autostart: false, |
||||
|
countdown: false, |
||||
|
stopAt: null, |
||||
|
startAt: 0, |
||||
|
milliseconds: true, |
||||
|
format: null |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.value = function(value) { |
||||
|
this.items.each((function(_this) { |
||||
|
return function(item, element) { |
||||
|
var action; |
||||
|
item = _$(element); |
||||
|
action = item.is('input') ? 'val' : 'text'; |
||||
|
item[action](_this.format(value)); |
||||
|
}; |
||||
|
})(this)); |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.format = function(value) { |
||||
|
var format; |
||||
|
format = this.settings.format; |
||||
|
format = _$.isFunction(format) ? format : formatTime; |
||||
|
return format(value, this.settings); |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.update = function() { |
||||
|
var countdown, delta, settings, stopAt, time; |
||||
|
if (!this.updating) { |
||||
|
this.updating = true; |
||||
|
settings = this.settings; |
||||
|
time = _$.now(); |
||||
|
stopAt = settings.stopAt; |
||||
|
countdown = settings.countdown; |
||||
|
delta = time - this.lastTime; |
||||
|
this.lastTime = time; |
||||
|
if (countdown) { |
||||
|
this.total -= delta; |
||||
|
} else { |
||||
|
this.total += delta; |
||||
|
} |
||||
|
if (stopAt !== null && ((countdown && this.total <= stopAt) || (!countdown && this.total >= stopAt))) { |
||||
|
this.total = stopAt; |
||||
|
this.finished = true; |
||||
|
this.stop(); |
||||
|
this.fire('runnerFinish'); |
||||
|
} |
||||
|
this.value(this.total); |
||||
|
this.updating = false; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.fire = function(event) { |
||||
|
this.items.trigger(event, this.info()); |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.start = function() { |
||||
|
var step; |
||||
|
if (!this.running) { |
||||
|
this.running = true; |
||||
|
if (!this.startTime || this.finished) { |
||||
|
this.reset(); |
||||
|
} |
||||
|
this.lastTime = _$.now(); |
||||
|
step = (function(_this) { |
||||
|
return function() { |
||||
|
if (_this.running) { |
||||
|
_this.update(); |
||||
|
_requestAnimationFrame(step); |
||||
|
} |
||||
|
}; |
||||
|
})(this); |
||||
|
_requestAnimationFrame(step); |
||||
|
this.fire('runnerStart'); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.stop = function() { |
||||
|
if (this.running) { |
||||
|
this.running = false; |
||||
|
this.update(); |
||||
|
this.fire('runnerStop'); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.toggle = function() { |
||||
|
if (this.running) { |
||||
|
this.stop(); |
||||
|
} else { |
||||
|
this.start(); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.lap = function() { |
||||
|
var lap, last; |
||||
|
last = this.lastTime; |
||||
|
lap = last - this.lapTime; |
||||
|
if (this.settings.countdown) { |
||||
|
lap = -lap; |
||||
|
} |
||||
|
if (this.running || lap) { |
||||
|
this.lastLap = lap; |
||||
|
this.lapTime = last; |
||||
|
} |
||||
|
last = this.format(this.lastLap); |
||||
|
this.fire('runnerLap'); |
||||
|
return last; |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.reset = function(stop) { |
||||
|
var nowTime; |
||||
|
if (stop) { |
||||
|
this.stop(); |
||||
|
} |
||||
|
nowTime = _$.now(); |
||||
|
if (typeof this.settings.startAt === 'number' && !this.settings.countdown) { |
||||
|
nowTime -= this.settings.startAt; |
||||
|
} |
||||
|
this.startTime = this.lapTime = this.lastTime = nowTime; |
||||
|
this.total = this.settings.startAt; |
||||
|
this.value(this.total); |
||||
|
this.finished = false; |
||||
|
this.fire('runnerReset'); |
||||
|
}; |
||||
|
|
||||
|
Runner.prototype.info = function() { |
||||
|
var lap; |
||||
|
lap = this.lastLap || 0; |
||||
|
return { |
||||
|
running: this.running, |
||||
|
finished: this.finished, |
||||
|
time: this.total, |
||||
|
formattedTime: this.format(this.total), |
||||
|
startTime: this.startTime, |
||||
|
lapTime: lap, |
||||
|
formattedLapTime: this.format(lap), |
||||
|
settings: this.settings |
||||
|
}; |
||||
|
}; |
||||
|
|
||||
|
return Runner; |
||||
|
|
||||
|
})(); |
||||
|
|
||||
|
_$.fn.runner = function(method, options, start) { |
||||
|
var id, runner; |
||||
|
if (!method) { |
||||
|
method = 'init'; |
||||
|
} |
||||
|
if (typeof method === 'object') { |
||||
|
start = options; |
||||
|
options = method; |
||||
|
method = 'init'; |
||||
|
} |
||||
|
id = this.data('runner'); |
||||
|
runner = id ? runners[id] : false; |
||||
|
switch (method) { |
||||
|
case 'init': |
||||
|
new Runner(this, options, start); |
||||
|
break; |
||||
|
case 'info': |
||||
|
if (runner) { |
||||
|
return runner.info(); |
||||
|
} |
||||
|
break; |
||||
|
case 'reset': |
||||
|
if (runner) { |
||||
|
runner.reset(options); |
||||
|
} |
||||
|
break; |
||||
|
case 'lap': |
||||
|
if (runner) { |
||||
|
return runner.lap(); |
||||
|
} |
||||
|
break; |
||||
|
case 'start': |
||||
|
case 'stop': |
||||
|
case 'toggle': |
||||
|
if (runner) { |
||||
|
return runner[method](); |
||||
|
} |
||||
|
break; |
||||
|
case 'version': |
||||
|
return meta.version; |
||||
|
default: |
||||
|
_$.error('[' + meta.name + '] Method ' + method + ' does not exist'); |
||||
|
} |
||||
|
return this; |
||||
|
}; |
||||
|
|
||||
|
_$.fn.runner.format = formatTime; |
||||
|
|
||||
|
}).call(this); |
Loading…
Reference in new issue