update
This commit is contained in:
123
static/front/assets/js/jquery.counterup.js
Executable file
123
static/front/assets/js/jquery.counterup.js
Executable file
@@ -0,0 +1,123 @@
|
||||
/*!
|
||||
* jquery.counterup.js 2.1.0
|
||||
*
|
||||
* Copyright 2013, Benjamin Intal http://gambit.ph @bfintal
|
||||
* Released under the GPL v2 License
|
||||
*
|
||||
* Amended by Jeremy Paris, Ciro Mattia Gonano and others
|
||||
*
|
||||
* Date: Feb 24, 2017
|
||||
*/
|
||||
(function ($) {
|
||||
"use strict";
|
||||
|
||||
$.fn.counterUp = function (options) {
|
||||
|
||||
// Defaults
|
||||
var settings = $.extend({
|
||||
'time': 400,
|
||||
'delay': 10,
|
||||
'offset': 100,
|
||||
'beginAt': 0,
|
||||
'formatter': false,
|
||||
'context': 'window',
|
||||
callback: function () {
|
||||
}
|
||||
}, options),
|
||||
s;
|
||||
|
||||
return this.each(function () {
|
||||
|
||||
// Store the object
|
||||
var $this = $(this),
|
||||
counter = {
|
||||
time: $(this).data('counterup-time') || settings.time,
|
||||
delay: $(this).data('counterup-delay') || settings.delay,
|
||||
offset: $(this).data('counterup-offset') || settings.offset,
|
||||
beginAt: $(this).data('counterup-beginat') || settings.beginAt,
|
||||
context: $(this).data('counterup-context') || settings.context
|
||||
};
|
||||
|
||||
var counterUpper = function () {
|
||||
var nums = [];
|
||||
var divisions = counter.time / counter.delay;
|
||||
var num = $this.attr('data-num') ? $this.attr('data-num') : $this.text();
|
||||
var isComma = /[0-9]+,[0-9]+/.test(num);
|
||||
num = num.replace(/,/g, '');
|
||||
var decimalPlaces = (num.split('.')[1] || []).length;
|
||||
if (counter.beginAt > num)
|
||||
counter.beginAt = num;
|
||||
|
||||
var isTime = /[0-9]+:[0-9]+:[0-9]+/.test(num);
|
||||
|
||||
// Convert time to total seconds
|
||||
if (isTime) {
|
||||
var times = num.split(':'),
|
||||
m = 1;
|
||||
s = 0;
|
||||
while (times.length > 0) {
|
||||
s += m * parseInt(times.pop(), 10);
|
||||
m *= 60;
|
||||
}
|
||||
}
|
||||
|
||||
// Generate list of incremental numbers to display
|
||||
for (var i = divisions; i >= counter.beginAt / num * divisions; i--) {
|
||||
|
||||
var newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces);
|
||||
|
||||
// Add incremental seconds and convert back to time
|
||||
if (isTime) {
|
||||
newNum = parseInt(s / divisions * i);
|
||||
var hours = parseInt(newNum / 3600) % 24;
|
||||
var minutes = parseInt(newNum / 60) % 60;
|
||||
var seconds = parseInt(newNum % 60, 10);
|
||||
newNum = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
|
||||
}
|
||||
|
||||
// Preserve commas if input had commas
|
||||
if (isComma) {
|
||||
while (/(\d+)(\d{3})/.test(newNum.toString())) {
|
||||
newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
|
||||
}
|
||||
}
|
||||
if (settings.formatter) {
|
||||
newNum = settings.formatter.call(this, newNum);
|
||||
}
|
||||
nums.unshift(newNum);
|
||||
}
|
||||
|
||||
$this.data('counterup-nums', nums);
|
||||
$this.text(counter.beginAt);
|
||||
|
||||
// Updates the number until we're done
|
||||
var f = function () {
|
||||
if (!$this.data('counterup-nums')) {
|
||||
settings.callback.call(this);
|
||||
return;
|
||||
}
|
||||
$this.html($this.data('counterup-nums').shift());
|
||||
if ($this.data('counterup-nums').length) {
|
||||
setTimeout($this.data('counterup-func'), counter.delay);
|
||||
} else {
|
||||
$this.data('counterup-nums', null);
|
||||
$this.data('counterup-func', null);
|
||||
settings.callback.call(this);
|
||||
}
|
||||
};
|
||||
$this.data('counterup-func', f);
|
||||
|
||||
// Start the count up
|
||||
setTimeout($this.data('counterup-func'), counter.delay);
|
||||
};
|
||||
|
||||
// Perform counts when the element gets into view
|
||||
$this.waypoint(function (direction) {
|
||||
counterUpper();
|
||||
this.destroy(); //-- Waypoint 3.0 version of triggerOnce
|
||||
}, {offset: counter.offset + "%", context: counter.context});
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user