|
|
@@ -94,11 +94,11 @@ The plugin allso adds the following methods to the plot object:
|
|
|
var savedhandlers = {};
|
|
|
|
|
|
var mouseUpHandler = null;
|
|
|
-
|
|
|
+
|
|
|
function onMouseMove(e) {
|
|
|
if (selection.active) {
|
|
|
updateSelection(e);
|
|
|
-
|
|
|
+
|
|
|
plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]);
|
|
|
}
|
|
|
}
|
|
|
@@ -106,7 +106,7 @@ The plugin allso adds the following methods to the plot object:
|
|
|
function onMouseDown(e) {
|
|
|
if (e.which != 1) // only accept left-click
|
|
|
return;
|
|
|
-
|
|
|
+
|
|
|
// cancel out any text selections
|
|
|
document.body.focus();
|
|
|
|
|
|
@@ -127,13 +127,13 @@ The plugin allso adds the following methods to the plot object:
|
|
|
// this is a bit silly, but we have to use a closure to be
|
|
|
// able to whack the same handler again
|
|
|
mouseUpHandler = function (e) { onMouseUp(e); };
|
|
|
-
|
|
|
+
|
|
|
$(document).one("mouseup", mouseUpHandler);
|
|
|
}
|
|
|
|
|
|
function onMouseUp(e) {
|
|
|
mouseUpHandler = null;
|
|
|
-
|
|
|
+
|
|
|
// revert drag stuff for old-school browsers
|
|
|
if (document.onselectstart !== undefined)
|
|
|
document.onselectstart = savedhandlers.onselectstart;
|
|
|
@@ -158,13 +158,22 @@ The plugin allso adds the following methods to the plot object:
|
|
|
function getSelection() {
|
|
|
if (!selectionIsSane())
|
|
|
return null;
|
|
|
-
|
|
|
+
|
|
|
if (!selection.show) return null;
|
|
|
|
|
|
var r = {}, c1 = selection.first, c2 = selection.second;
|
|
|
- $.each(plot.getAxes(), function (name, axis) {
|
|
|
- if (axis.used) {
|
|
|
- var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]);
|
|
|
+ var axes = plot.getAxes();
|
|
|
+ // look if no axis is used
|
|
|
+ var noAxisInUse = true;
|
|
|
+ $.each(axes, function (name, axis) {
|
|
|
+ if (axis.used) {
|
|
|
+ anyUsed = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ $.each(axes, function (name, axis) {
|
|
|
+ if (axis.used || noAxisInUse) {
|
|
|
+ var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]);
|
|
|
r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };
|
|
|
}
|
|
|
});
|
|
|
@@ -252,10 +261,10 @@ The plugin allso adds the following methods to the plot object:
|
|
|
from = to;
|
|
|
to = tmp;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return { from: from, to: to, axis: axis };
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
function setSelection(ranges, preventEvent) {
|
|
|
var axis, range, o = plot.getOptions();
|
|
|
|
|
|
@@ -333,11 +342,11 @@ The plugin allso adds the following methods to the plot object:
|
|
|
ctx.restore();
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
plot.hooks.shutdown.push(function (plot, eventHolder) {
|
|
|
eventHolder.unbind("mousemove", onMouseMove);
|
|
|
eventHolder.unbind("mousedown", onMouseDown);
|
|
|
-
|
|
|
+
|
|
|
if (mouseUpHandler)
|
|
|
$(document).unbind("mouseup", mouseUpHandler);
|
|
|
});
|