|
6 | 6 | // These are the defaults. |
7 | 7 | foregroundColor: "#556b2f", |
8 | 8 | backgroundColor: "#eee", |
| 9 | + fillColor: false, |
9 | 10 | width: 15, |
10 | 11 | dimension: 200, |
11 | 12 | size: 15, |
12 | | - percent: 50 |
| 13 | + percent: 50, |
| 14 | + animationStep: 1.0 |
13 | 15 | }, options ); |
14 | 16 | return this.each(function() { |
15 | 17 | var dimension = ''; |
|
22 | 24 | var fgcolor = ''; |
23 | 25 | var bgcolor = ''; |
24 | 26 | var icon = ''; |
| 27 | + var animationstep = 0.0; |
25 | 28 |
|
26 | | - $(this).attr('class', 'circliful'); |
| 29 | + $(this).addClass('circliful'); |
27 | 30 |
|
28 | 31 | if($(this).data('dimension') != undefined) { |
29 | 32 | dimension = $(this).data('dimension'); |
|
61 | 64 | } else { |
62 | 65 | bgcolor = settings.backgroundColor; |
63 | 66 | } |
64 | | - |
| 67 | + |
| 68 | + if($(this).data('animation-step') != undefined) { |
| 69 | + animationstep = parseFloat($(this).data('animation-step')); |
| 70 | + } else { |
| 71 | + animationstep = settings.animationStep; |
| 72 | + } |
65 | 73 | if($(this).data('text') != undefined) { |
66 | 74 | text = $(this).data('text'); |
67 | 75 |
|
|
108 | 116 |
|
109 | 117 | $(this).width(dimension + 'px'); |
110 | 118 |
|
111 | | - $(this).append('<canvas id="' + $(this).attr('id') + '_canvas" width="' + dimension + '" height="' + dimension + '"></canvas>'); |
112 | | - |
113 | | - |
114 | | - var canvas = document.getElementById($(this).attr('id') + '_canvas'); |
| 119 | + var canvas = $('<canvas></canvas>').attr({ width: dimension, height: dimension }).appendTo($(this)).get(0); |
115 | 120 | var context = canvas.getContext('2d'); |
116 | 121 | var x = canvas.width / 2; |
117 | 122 | var y = canvas.height / 2; |
|
121 | 126 | var startAngle = 2.3 * Math.PI; |
122 | 127 | var endAngle = 0; |
123 | 128 | var counterClockwise = false; |
124 | | - var curPerc = 0; |
| 129 | + var curPerc = animationstep === 0.0 ? endPercent : 0.0; |
| 130 | + var curStep = Math.max(animationstep, 0.0); |
125 | 131 | var circ = Math.PI * 2; |
126 | 132 | var quart = Math.PI / 2; |
127 | 133 | var type = ''; |
|
140 | 146 |
|
141 | 147 | if($(this).data('fill') != undefined) { |
142 | 148 | fill = $(this).data('fill'); |
| 149 | + } else { |
| 150 | + fill = settings.fillColor; |
143 | 151 | } |
144 | | - |
145 | 152 | //animate foreground circle |
146 | 153 | function animate(current) { |
147 | 154 | context.clearRect(0, 0, canvas.width, canvas.height); |
|
165 | 172 | // line color |
166 | 173 | context.strokeStyle = fgcolor; |
167 | 174 | context.stroke(); |
168 | | - curPerc++; |
169 | | - |
170 | | - if (curPerc <= endPercent) { |
| 175 | + |
| 176 | + if (curPerc < endPercent) { |
| 177 | + curPerc += curStep; |
171 | 178 | requestAnimationFrame(function () { |
172 | | - animate(curPerc / 100); |
| 179 | + animate(Math.min(curPerc, endPercent) / 100); |
173 | 180 | }); |
174 | 181 | } |
175 | 182 |
|
176 | 183 | } |
177 | | - |
178 | | - animate(); |
| 184 | + |
| 185 | + animate(curPerc / 100); |
179 | 186 |
|
180 | 187 | }); |
181 | 188 |
|
|
0 commit comments