PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 2.2.0
Page Builder: Pagelayer – Drag and Drop website builder v2.2.0
2.2.1 2.2.0 2.1.9 2.1.8 2.1.7 2.1.6 2.1.5 2.1.4 2.1.3 trunk 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 1.0.0 1.0.2 1.0.3 1.0.4 1.0.5 All 129 releases
pagelayer / js / jquery-numerator.js

jquery-numerator.js in Page Builder: Pagelayer – Drag and Drop website builder 2.2.0, at js/jquery-numerator.js

137 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * jQuery Numerator Plugin 0.2.1
3 * https://github.com/garethdn/jquery-numerator
4 *
5 * Copyright 2015, Gareth Nolan
6 * http://ie.linkedin.com/in/garethnolan/
7
8 * Based on jQuery Boilerplate by Zeno Rocha with the help of Addy Osmani
9 * http://jqueryboilerplate.com
10 *
11 * Licensed under the MIT license:
12 * http://www.opensource.org/licenses/MIT
13 */
14
15 ;(function (factory) {
16 'use strict';
17 if (typeof define === 'function' && define.amd) {
18 // AMD is used - Register as an anonymous module.
19 define(['jquery'], factory);
20 } else if (typeof exports === 'object') {
21 factory(require('jquery'));
22 } else {
23 // Neither AMD nor CommonJS used. Use global variables.
24 if (typeof jQuery === 'undefined') {
25 throw 'jquery-numerator requires jQuery to be loaded first';
26 }
27 factory(jQuery);
28 }
29 }(function ($) {
30
31 var pluginName = "numerator",
32 defaults = {
33 easing: 'swing',
34 duration: 500,
35 delimiter: undefined,
36 rounding: 0,
37 toValue: undefined,
38 fromValue: undefined,
39 queue: false,
40 onStart: function(){},
41 onStep: function(){},
42 onProgress: function(){},
43 onComplete: function(){}
44 };
45
46 function Plugin ( element, options ) {
47 this.element = element;
48 this.settings = $.extend( {}, defaults, options );
49 this._defaults = defaults;
50 this._name = pluginName;
51 this.init();
52 }
53
54 Plugin.prototype = {
55
56 init: function () {
57 this.parseElement();
58 this.setValue();
59 },
60
61 parseElement: function () {
62 var elText = $.trim($(this.element).text());
63
64 this.settings.fromValue = this.settings.fromValue || this.format(elText);
65 },
66
67 setValue: function() {
68 var self = this;
69
70 $({value: self.settings.fromValue}).animate({value: self.settings.toValue}, {
71
72 duration: parseInt(self.settings.duration, 10),
73
74 easing: self.settings.easing,
75
76 start: self.settings.onStart,
77
78 step: function(now, fx) {
79 $(self.element).text(self.format(now));
80 // accepts two params - (now, fx)
81 self.settings.onStep(now, fx);
82 },
83
84 // accepts three params - (animation object, progress ratio, time remaining(ms))
85 progress: self.settings.onProgress,
86
87 complete: self.settings.onComplete
88 });
89 },
90
91 format: function(value){
92 var self = this;
93
94 if ( parseInt(this.settings.rounding ) < 1) {
95 value = parseInt(value, 10);
96 } else {
97 value = parseFloat(value).toFixed( parseInt(this.settings.rounding) );
98 }
99
100 if (self.settings.delimiter) {
101 return this.delimit(value)
102 } else {
103 return value;
104 }
105 },
106
107 // TODO: Add comments to this function
108 delimit: function(value){
109 var self = this;
110
111 value = value.toString();
112
113 if (self.settings.rounding && parseInt(self.settings.rounding, 10) > 0) {
114 var decimals = value.substring( (value.length - (self.settings.rounding + 1)), value.length ),
115 wholeValue = value.substring( 0, (value.length - (self.settings.rounding + 1)));
116
117 return self.addDelimiter(wholeValue) + decimals;
118 } else {
119 return self.addDelimiter(value);
120 }
121 },
122
123 addDelimiter: function(value){
124 return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.settings.delimiter);
125 }
126 };
127
128 $.fn[ pluginName ] = function ( options ) {
129 return this.each(function() {
130 if ( $.data( this, "plugin_" + pluginName ) ) {
131 $.data(this, 'plugin_' + pluginName, null);
132 }
133 $.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
134 });
135 };
136
137 }));