aboutsummaryrefslogtreecommitdiffstats
path: root/ui/tests/jquery.useraction.js
diff options
context:
space:
mode:
authorEduardo Lundgren <eduardolundgren@gmail.com>2008-05-30 23:34:46 +0000
committerEduardo Lundgren <eduardolundgren@gmail.com>2008-05-30 23:34:46 +0000
commite175417d95bd4dc45edee1dbfd7b5b6cc6e76e69 (patch)
treebfb163fb542ddfef2b86f525a60bff02e9b1e2a7 /ui/tests/jquery.useraction.js
parent10afdceddedad72ef826cebb441b4cfd8a788270 (diff)
downloadjquery-ui-e175417d95bd4dc45edee1dbfd7b5b6cc6e76e69.tar.gz
jquery-ui-e175417d95bd4dc45edee1dbfd7b5b6cc6e76e69.zip
Drag synchronously added option - Let the automated tests being done.
Diffstat (limited to 'ui/tests/jquery.useraction.js')
-rw-r--r--ui/tests/jquery.useraction.js86
1 files changed, 67 insertions, 19 deletions
diff --git a/ui/tests/jquery.useraction.js b/ui/tests/jquery.useraction.js
index 6a94b3944..b3b2d508e 100644
--- a/ui/tests/jquery.useraction.js
+++ b/ui/tests/jquery.useraction.js
@@ -10,7 +10,7 @@
*/
;(function($) {
-
+
$.fn.extend({
userAction: function(type) {
var args = arguments, opts = {}, a1 = args[1], a2 = args[2];
@@ -39,9 +39,14 @@ $.userAction = function(el, type, options) {
this.options = $.extend({}, $.userAction.defaults, options || {});
this.target = $(this.options.target || el)[0];
- var self = this, o = this.options, c = o.center, center = this.findCenter(
- c && c.length ? c : [0, 0]
- );
+ var self = this, o = this.options, c = o.center;
+
+ if (!o.x || !o.y) {
+ var center = this.findCenter(
+ c && c.length ? c : [0, 0]
+ )
+ }
+
// if x and y not set, get the center of the element
o.x = o.x || center.x; o.y = o.y || center.y;
@@ -61,13 +66,19 @@ $.userAction = function(el, type, options) {
// Simulating drag and drop event
if (/^drag$/i.test(type)) {
- var t = this.target, queue = $.data(t, StringPool.DATA_QUEUE),
- data = [options.dx || options.x, options.dy || options.y];
+ var self = this, t = this.target, queue = $.data(t, StringPool.DATA_QUEUE),
+ data = [options.dx || options.x, options.dy || options.y, this];
+
+ var fire = function() {
+ self.drag(options.dx || options.x, options.dy || options.y);
+ };
+
+ if (/^sync$/i.test(o.speed)) {
+ fire(); return;
+ }
if (!queue) {
- $.data(t, StringPool.DATA_QUEUE, [data]);
- this.drag(options.dx || options.x, options.dy || options.y);
- return;
+ $.data(t, StringPool.DATA_QUEUE, [data]); fire(); return;
}
// queuing drags...
if (queue && queue.length) {
@@ -110,6 +121,19 @@ $.userAction = function(el, type, options) {
$.extend($.userAction.prototype, {
+ down: function(target) {
+ $(target).userAction(StringPool.MOUSEOVER).userAction(StringPool.MOUSEDOWN)
+ .userAction(StringPool.MOUSEMOVE);
+ },
+
+ up: function(target) {
+ $(target).userAction(StringPool.MOUSEUP).userAction(StringPool.MOUSEOUT);
+ },
+
+ move: function(target, x, y, after) {
+ $(target).userAction(StringPool.MOUSEMOVE, { x: x, y: y, after: after });
+ },
+
drag: function(dx, dy) {
// drag helper function, thanks Richard Worth's testmouse api.
var self = this, o = this.options, center = this.findCenter(),
@@ -118,16 +142,34 @@ $.extend($.userAction.prototype, {
speed = o.speed || StringPool.SLOW,
easing = o.easing || StringPool.SWING;
+ var complete = function() {
+ // fire complete or after cb
+ if (o.after||o.complete) (o.after||o.complete).apply(self.target, [o, self]);
+ };
+
+ // drag synchronously
+ if (/^sync$/i.test(o.speed)) {
+ self.down(target);
+
+ for (var dt = 1; dt <= dx; dt++) {
+ var x = center.x + (dt <= Math.abs(dx) ? dt : 0),
+ y = center.y + (dt <= Math.abs(dy) ? dt : 0);
+
+ this.move(target, x, y, o.drag);
+ }
+ self.up(target);
+ complete();
+ return;
+ }
+
+ // drag asynchronously - animated
fake = fake.size() ? fake :
$(StringPool.FAKE_CURSOR_DIV)
.css({ position: StringPool.ABSOLUTE }).appendTo(document.body);
fake
- .animate({ left: center.x, top: center.y }, speed, easing, function() {
- target
- .userAction(StringPool.MOUSEOVER)
- .userAction(StringPool.MOUSEDOWN)
- .userAction(StringPool.MOUSEMOVE);
+ .animate({ left: center.x, top: center.y }, speed, easing, function(){
+ self.down(target);
})
.animate({ left: center.x + (dx||0), top: center.y + (dy||0) }, {
speed: speed,
@@ -135,21 +177,27 @@ $.extend($.userAction.prototype, {
step: function(i, anim) {
lastx = anim.prop == StringPool.LEFT ? i : lastx;
lasty = anim.prop == StringPool.TOP ? i : lasty;
- target.userAction(StringPool.MOUSEMOVE, { x: lastx, y: lasty, after: o.drag || o.after });
+ self.move(target, lastx, lasty, o.drag);
},
complete: function() {
- target.userAction(StringPool.MOUSEUP).userAction(StringPool.MOUSEOUT);
+
+ self.up(target);
// remove fake cursor
$(this).remove();
+ complete();
+
// trigger drag queue
var queue = $.data(self.target, StringPool.DATA_QUEUE);
-
if (queue) queue.shift();
- if (queue && queue[0]) self.drag(queue[0][0], queue[0][1]);
- else $.removeData(self.target, StringPool.DATA_QUEUE);
+ if (queue && queue[0]) {
+ // trigger drag on correct instance
+ queue[0][2].drag(queue[0][0], queue[0][1]);
+ }
+ else
+ $.removeData(self.target, StringPool.DATA_QUEUE);
}
});
},