X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2FDygraphOps.js;h=072d99294f9848fafd8d2501ad1bd4683331fd89;hb=a12f271c5fc6420d764bae5a5c12ca0785f7fd4c;hp=3bd3c4417ea5a1a86e80f49c429da6e41950af85;hpb=3fc84ab9f2bd242018fd4d91f41a151e6d3b79f1;p=dygraphs.git diff --git a/auto_tests/tests/DygraphOps.js b/auto_tests/tests/DygraphOps.js index 3bd3c44..072d992 100644 --- a/auto_tests/tests/DygraphOps.js +++ b/auto_tests/tests/DygraphOps.js @@ -26,72 +26,124 @@ */ var DygraphOps = {}; -DygraphOps.dispatchDoubleClick = function(g, func) { - var evt = document.createEvent('MouseEvents'); - evt.initMouseEvent( - 'dblclick', - true, true, document.defaultView, - 2, 0, 0, 0, 0, - false, false, false, false, 0, null); - if (func) { - func(evt); +DygraphOps.defaultEvent_ = { + type : '', + canBubble : true, + cancelable : true, + view : document.defaultView, + detail : 0, + screenX : 0, + screenY : 0, + clientX : 0, + clientY : 0, + ctrlKey : false, + altKey : false, + shiftKey : false, + metaKey : false, + button : 0, + relatedTarget : null +}; + +DygraphOps.createEvent_ = function(command, custom) { + + var copy = function(from, to) { + if (from != null) { + for (var prop in from) { + if(from.hasOwnProperty(prop)) { + to[prop] = from[prop]; + } + } + } } - g.canvas_.dispatchEvent(evt); + + var e = {}; + copy(DygraphOps.defaultEvent_, e); + copy(command, e); + copy(custom, e); + + var event = document.createEvent('MouseEvents'); + event.initMouseEvent( + e.type, + e.canBubble, + e.cancelable, + e.view, + e.detail, + e.screenX, + e.screenY, + e.clientX, + e.clientY, + e.ctrlKey, + e.altKey, + e.shiftKey, + e.metaKey, + e.button, + e.relatedTarget); + return event; +} + +DygraphOps.dispatchDoubleClick = function(g, custom) { + var opts = { + type : 'dblclick', + detail : 2 + }; + var event = DygraphOps.createEvent_(opts, custom); + g.canvas_.dispatchEvent(event); }; -DygraphOps.dispatchMouseDown = function(g, x, y, func) { +DygraphOps.dispatchMouseDown = function(g, x, y, custom) { var px = Dygraph.findPosX(g.canvas_); var py = Dygraph.findPosY(g.canvas_); var pageX = px + g.toDomXCoord(x); var pageY = py + g.toDomYCoord(y); - var evt = document.createEvent('MouseEvents'); - evt.initMouseEvent( - 'mousedown', - true, true, document.defaultView, - 1, pageX, pageY, pageX, pageY, - false, false, false, false, 0, null); - if (func) { - func(evt); - } - g.canvas_.dispatchEvent(evt); + var opts = { + type : 'mousedown', + detail : 1, + screenX : pageX, + screenY : pageY, + clientX : pageX, + clientY : pageY, + }; + + var event = DygraphOps.createEvent_(opts, custom); + g.canvas_.dispatchEvent(event); }; -DygraphOps.dispatchMouseMove = function(g, x, y, func) { +DygraphOps.dispatchMouseMove = function(g, x, y, custom) { var px = Dygraph.findPosX(g.canvas_); var py = Dygraph.findPosY(g.canvas_); var pageX = px + g.toDomXCoord(x); var pageY = py + g.toDomYCoord(y); - var evt = document.createEvent('MouseEvents'); - evt.initMouseEvent( - 'mousemove', - true, true, document.defaultView, - 0, pageX, pageY, pageX, pageY, - false, false, false, false, 0, null); - if (func) { - func(evt); - } - g.canvas_.dispatchEvent(evt); + var opts = { + type : 'mousemove', + screenX : pageX, + screenY : pageY, + clientX : pageX, + clientY : pageY, + }; + + var event = DygraphOps.createEvent_(opts, custom); + g.canvas_.dispatchEvent(event); }; -DygraphOps.dispatchMouseUp = function(g, x, y, func) { +DygraphOps.dispatchMouseUp = function(g, x, y, custom) { var px = Dygraph.findPosX(g.canvas_); var py = Dygraph.findPosY(g.canvas_); var pageX = px + g.toDomXCoord(x); var pageY = py + g.toDomYCoord(y); - var evt = document.createEvent('MouseEvents'); - evt.initMouseEvent( - 'mouseup', - true, true, document.defaultView, - 0, pageX, pageY, pageX, pageY, - false, false, false, false, 0, null); - if (func) { - func(evt); - } - g.canvas_.dispatchEvent(evt); + var opts = { + type : 'mouseup', + screenX : pageX, + screenY : pageY, + clientX : pageX, + clientY : pageY, + }; + + var event = DygraphOps.createEvent_(opts, custom); + g.canvas_.dispatchEvent(event); };