@@ 284-332 (lines=49) @@ | ||
281 | * @param duration in ms |
|
282 | * @param easing 'swing', 'linear' |
|
283 | */ |
|
284 | function setVisibleRatio(ratio, animate, duration, easing) { |
|
285 | if (typeof animate == 'undefined') { |
|
286 | animate = false; |
|
287 | } |
|
288 | ||
289 | var width = getRatioValue(ratio); |
|
290 | ||
291 | if (animate) { |
|
292 | var finalDuration = duration ? duration : options.animationDuration; |
|
293 | var finalEasing = easing ? easing : options.animationEasing; |
|
294 | ||
295 | launchAnimation(lastRatio, ratio, finalDuration, finalEasing); |
|
296 | ||
297 | // Let the world know something has changed |
|
298 | if (lastRatio != ratio) { |
|
299 | element.trigger({ |
|
300 | type: events.changed, |
|
301 | ratio: lastRatio, |
|
302 | value: width, |
|
303 | animate: animate |
|
304 | }); |
|
305 | } |
|
306 | ||
307 | return; |
|
308 | ||
309 | } else { |
|
310 | frontElement.stop().css('clip', 'rect(0, ' + width + 'px, ' + size.height + 'px, 0)'); |
|
311 | ||
312 | if (options.addSeparator) { |
|
313 | $(separator).stop().css('left', width + 'px'); |
|
314 | } |
|
315 | ||
316 | if (options.addDragHandle) { |
|
317 | dragHandle.css('left', width + 'px'); |
|
318 | } |
|
319 | } |
|
320 | ||
321 | // Let the world know something has changed |
|
322 | if (lastRatio != ratio) { |
|
323 | element.trigger({ |
|
324 | type: events.changed, |
|
325 | ratio: ratio, |
|
326 | value: width, |
|
327 | animate: animate |
|
328 | }); |
|
329 | } |
|
330 | ||
331 | lastRatio = ratio; |
|
332 | } |
|
333 | ||
334 | function setSize(width, height, maxWidth, maxHeight) { |
|
335 | if (typeof width != 'undefined') { |
|
@@ 229-263 (lines=35) @@ | ||
226 | * @param duration value in ms |
|
227 | * @param easing linear or swing |
|
228 | */ |
|
229 | function launchAnimation(startValue, endValue, duration, easing) { |
|
230 | $(frontElement).attr('ratio', startValue).animate({ratio: startValue}, { |
|
231 | duration: 0 |
|
232 | }); |
|
233 | ||
234 | $(frontElement).stop().attr('ratio', startValue).animate({ratio: endValue}, { |
|
235 | duration: duration, |
|
236 | easing: easing, |
|
237 | step: function (now) { |
|
238 | var width = getRatioValue(now); |
|
239 | lastRatio = now; |
|
240 | frontElement.attr('ratio', now).css('clip', 'rect(0, ' + width + 'px, ' + size.height + 'px, 0)'); |
|
241 | ||
242 | if (options.addSeparator) { |
|
243 | separator.css('left', width + 'px'); |
|
244 | } |
|
245 | ||
246 | if (options.addDragHandle) { |
|
247 | dragHandle.css('left', width + 'px'); |
|
248 | } |
|
249 | }, |
|
250 | done: function (animation, jumpedToEnd) { |
|
251 | var ratio = $(frontElement).attr('ratio'); |
|
252 | // Let the world know something has changed |
|
253 | element.trigger({ |
|
254 | type: events.changed, |
|
255 | ratio: ratio, |
|
256 | value: getRatioValue(ratio), |
|
257 | animate: true, |
|
258 | animation : animation, |
|
259 | jumpedToEnd: jumpedToEnd |
|
260 | }); |
|
261 | } |
|
262 | }); |
|
263 | } |
|
264 | ||
265 | /** |
|
266 | * Get value to reach, based on a ratio |