Comparing version 3.2.5 to 3.2.6
{ | ||
"name": "flot", | ||
"version": "3.2.5", | ||
"version": "3.2.6", | ||
"main": "dist/es5/jquery.flot.js", | ||
@@ -5,0 +5,0 @@ "scripts": { |
@@ -38,3 +38,2 @@ /* global jQuery */ | ||
var browser = $.plot.browser; | ||
var highlights = []; | ||
@@ -46,295 +45,293 @@ var eventType = { | ||
var lastMouseMoveEvent; | ||
function init(plot) { | ||
var lastMouseMoveEvent; | ||
var highlights = []; | ||
var plot; | ||
function bindEvents(plot, eventHolder) { | ||
var o = plot.getOptions(); | ||
function bindEvents(plot, eventHolder) { | ||
var o = plot.getOptions(); | ||
if (o.grid.hoverable || o.grid.clickable) { | ||
eventHolder[0].addEventListener('touchevent', triggerCleanupEvent, false); | ||
eventHolder[0].addEventListener('tap', tap.generatePlothoverEvent, false); | ||
} | ||
if (o.grid.hoverable || o.grid.clickable) { | ||
eventHolder[0].addEventListener('touchevent', triggerCleanupEvent, false); | ||
eventHolder[0].addEventListener('tap', tap.generatePlothoverEvent, false); | ||
} | ||
if (o.grid.clickable) { | ||
eventHolder.bind("click", onClick); | ||
} | ||
if (o.grid.clickable) { | ||
eventHolder.bind("click", onClick); | ||
} | ||
if (o.grid.hoverable) { | ||
eventHolder.bind("mousemove", onMouseMove); | ||
if (o.grid.hoverable) { | ||
eventHolder.bind("mousemove", onMouseMove); | ||
// Use bind, rather than .mouseleave, because we officially | ||
// still support jQuery 1.2.6, which doesn't define a shortcut | ||
// for mouseenter or mouseleave. This was a bug/oversight that | ||
// was fixed somewhere around 1.3.x. We can return to using | ||
// .mouseleave when we drop support for 1.2.6. | ||
// Use bind, rather than .mouseleave, because we officially | ||
// still support jQuery 1.2.6, which doesn't define a shortcut | ||
// for mouseenter or mouseleave. This was a bug/oversight that | ||
// was fixed somewhere around 1.3.x. We can return to using | ||
// .mouseleave when we drop support for 1.2.6. | ||
eventHolder.bind("mouseleave", onMouseLeave); | ||
} | ||
} | ||
eventHolder.bind("mouseleave", onMouseLeave); | ||
function shutdown(plot, eventHolder) { | ||
eventHolder[0].removeEventListener('tap', tap.generatePlothoverEvent); | ||
eventHolder[0].removeEventListener('touchevent', triggerCleanupEvent); | ||
eventHolder.unbind("mousemove", onMouseMove); | ||
eventHolder.unbind("mouseleave", onMouseLeave); | ||
eventHolder.unbind("click", onClick); | ||
highlights = []; | ||
} | ||
} | ||
function shutdown(plot, eventHolder) { | ||
eventHolder[0].removeEventListener('tap', tap.generatePlothoverEvent); | ||
eventHolder[0].removeEventListener('touchevent', triggerCleanupEvent); | ||
eventHolder.unbind("mousemove", onMouseMove); | ||
eventHolder.unbind("mouseleave", onMouseLeave); | ||
eventHolder.unbind("click", onClick); | ||
highlights = []; | ||
} | ||
var tap = { | ||
generatePlothoverEvent: function (e) { | ||
var o = plot.getOptions(), | ||
newEvent = new CustomEvent('mouseevent'); | ||
var tap = { | ||
generatePlothoverEvent: function (e) { | ||
var o = plot.getOptions(), | ||
newEvent = new CustomEvent('mouseevent'); | ||
//transform from touch event to mouse event format | ||
newEvent.pageX = e.detail.changedTouches[0].pageX; | ||
newEvent.pageY = e.detail.changedTouches[0].pageY; | ||
newEvent.clientX = e.detail.changedTouches[0].clientX; | ||
newEvent.clientY = e.detail.changedTouches[0].clientY; | ||
//transform from touch event to mouse event format | ||
newEvent.pageX = e.detail.changedTouches[0].pageX; | ||
newEvent.pageY = e.detail.changedTouches[0].pageY; | ||
newEvent.clientX = e.detail.changedTouches[0].clientX; | ||
newEvent.clientY = e.detail.changedTouches[0].clientY; | ||
if (o.grid.hoverable) { | ||
doTriggerClickHoverEvent(newEvent, eventType.hover, 30); | ||
} | ||
return false; | ||
} | ||
}; | ||
if (o.grid.hoverable) { | ||
doTriggerClickHoverEvent(newEvent, eventType.hover, 30); | ||
function doTriggerClickHoverEvent(event, eventType, searchDistance) { | ||
var series = plot.getData(); | ||
if (event !== undefined | ||
&& series.length > 0 | ||
&& series[0].xaxis.c2p !== undefined | ||
&& series[0].yaxis.c2p !== undefined) { | ||
var eventToTrigger = "plot" + eventType; | ||
var seriesFlag = eventType + "able"; | ||
triggerClickHoverEvent(eventToTrigger, event, | ||
function(i) { | ||
return series[i][seriesFlag] !== false; | ||
}, searchDistance); | ||
} | ||
return false; | ||
} | ||
}; | ||
function doTriggerClickHoverEvent(event, eventType, searchDistance) { | ||
var series = plot.getData(); | ||
if (event !== undefined | ||
&& series.length > 0 | ||
&& series[0].xaxis.c2p !== undefined | ||
&& series[0].yaxis.c2p !== undefined) { | ||
var eventToTrigger = "plot" + eventType; | ||
var seriesFlag = eventType + "able"; | ||
triggerClickHoverEvent(eventToTrigger, event, | ||
function onMouseMove(e) { | ||
lastMouseMoveEvent = e; | ||
plot.getPlaceholder()[0].lastMouseMoveEvent = e; | ||
doTriggerClickHoverEvent(e, eventType.hover); | ||
} | ||
function onMouseLeave(e) { | ||
lastMouseMoveEvent = undefined; | ||
plot.getPlaceholder()[0].lastMouseMoveEvent = undefined; | ||
triggerClickHoverEvent("plothover", e, | ||
function(i) { | ||
return series[i][seriesFlag] !== false; | ||
}, searchDistance); | ||
return false; | ||
}); | ||
} | ||
} | ||
function onMouseMove(e) { | ||
lastMouseMoveEvent = e; | ||
plot.getPlaceholder()[0].lastMouseMoveEvent = e; | ||
doTriggerClickHoverEvent(e, eventType.hover); | ||
} | ||
function onClick(e) { | ||
doTriggerClickHoverEvent(e, eventType.click); | ||
} | ||
function onMouseLeave(e) { | ||
lastMouseMoveEvent = undefined; | ||
plot.getPlaceholder()[0].lastMouseMoveEvent = undefined; | ||
triggerClickHoverEvent("plothover", e, | ||
function(i) { | ||
return false; | ||
}); | ||
} | ||
function triggerCleanupEvent() { | ||
plot.unhighlight(); | ||
plot.getPlaceholder().trigger('plothovercleanup'); | ||
} | ||
function onClick(e) { | ||
doTriggerClickHoverEvent(e, eventType.click); | ||
} | ||
// trigger click or hover event (they send the same parameters | ||
// so we share their code) | ||
function triggerClickHoverEvent(eventname, event, seriesFilter, searchDistance) { | ||
var options = plot.getOptions(), | ||
offset = plot.offset(), | ||
page = browser.getPageXY(event), | ||
canvasX = page.X - offset.left, | ||
canvasY = page.Y - offset.top, | ||
pos = plot.c2p({ | ||
left: canvasX, | ||
top: canvasY | ||
}), | ||
distance = searchDistance !== undefined ? searchDistance : options.grid.mouseActiveRadius; | ||
function triggerCleanupEvent() { | ||
plot.unhighlight(); | ||
plot.getPlaceholder().trigger('plothovercleanup'); | ||
} | ||
pos.pageX = page.X; | ||
pos.pageY = page.Y; | ||
// trigger click or hover event (they send the same parameters | ||
// so we share their code) | ||
function triggerClickHoverEvent(eventname, event, seriesFilter, searchDistance) { | ||
var options = plot.getOptions(), | ||
offset = plot.offset(), | ||
page = browser.getPageXY(event), | ||
canvasX = page.X - offset.left, | ||
canvasY = page.Y - offset.top, | ||
pos = plot.c2p({ | ||
left: canvasX, | ||
top: canvasY | ||
}), | ||
distance = searchDistance !== undefined ? searchDistance : options.grid.mouseActiveRadius; | ||
var item = plot.findNearbyItem(canvasX, canvasY, seriesFilter, distance); | ||
pos.pageX = page.X; | ||
pos.pageY = page.Y; | ||
if (item) { | ||
// fill in mouse pos for any listeners out there | ||
item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left, 10); | ||
item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top, 10); | ||
} | ||
var item = plot.findNearbyItem(canvasX, canvasY, seriesFilter, distance); | ||
if (options.grid.autoHighlight) { | ||
// clear auto-highlights | ||
for (var i = 0; i < highlights.length; ++i) { | ||
var h = highlights[i]; | ||
if ((h.auto === eventname && | ||
!(item && h.series === item.series && | ||
h.point[0] === item.datapoint[0] && | ||
h.point[1] === item.datapoint[1])) || !item) { | ||
unhighlight(h.series, h.point); | ||
} | ||
} | ||
if (item) { | ||
// fill in mouse pos for any listeners out there | ||
item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left, 10); | ||
item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top, 10); | ||
if (item) { | ||
highlight(item.series, item.datapoint, eventname); | ||
} | ||
} | ||
plot.getPlaceholder().trigger(eventname, [pos, item]); | ||
} | ||
if (options.grid.autoHighlight) { | ||
// clear auto-highlights | ||
for (var i = 0; i < highlights.length; ++i) { | ||
var h = highlights[i]; | ||
if ((h.auto === eventname && | ||
!(item && h.series === item.series && | ||
h.point[0] === item.datapoint[0] && | ||
h.point[1] === item.datapoint[1])) || !item) { | ||
unhighlight(h.series, h.point); | ||
} | ||
function highlight(s, point, auto) { | ||
if (typeof s === "number") { | ||
s = plot.getData()[s]; | ||
} | ||
if (item) { | ||
highlight(item.series, item.datapoint, eventname); | ||
if (typeof point === "number") { | ||
var ps = s.datapoints.pointsize; | ||
point = s.datapoints.points.slice(ps * point, ps * (point + 1)); | ||
} | ||
} | ||
plot.getPlaceholder().trigger(eventname, [pos, item]); | ||
} | ||
var i = indexOfHighlight(s, point); | ||
if (i === -1) { | ||
highlights.push({ | ||
series: s, | ||
point: point, | ||
auto: auto | ||
}); | ||
function highlight(s, point, auto) { | ||
if (typeof s === "number") { | ||
s = plot.getData()[s]; | ||
plot.triggerRedrawOverlay(); | ||
} else if (!auto) { | ||
highlights[i].auto = false; | ||
} | ||
} | ||
if (typeof point === "number") { | ||
var ps = s.datapoints.pointsize; | ||
point = s.datapoints.points.slice(ps * point, ps * (point + 1)); | ||
} | ||
function unhighlight(s, point) { | ||
if (s == null && point == null) { | ||
highlights = []; | ||
plot.triggerRedrawOverlay(); | ||
return; | ||
} | ||
var i = indexOfHighlight(s, point); | ||
if (i === -1) { | ||
highlights.push({ | ||
series: s, | ||
point: point, | ||
auto: auto | ||
}); | ||
if (typeof s === "number") { | ||
s = plot.getData()[s]; | ||
} | ||
plot.triggerRedrawOverlay(); | ||
} else if (!auto) { | ||
highlights[i].auto = false; | ||
} | ||
} | ||
if (typeof point === "number") { | ||
var ps = s.datapoints.pointsize; | ||
point = s.datapoints.points.slice(ps * point, ps * (point + 1)); | ||
} | ||
function unhighlight(s, point) { | ||
if (s == null && point == null) { | ||
highlights = []; | ||
plot.triggerRedrawOverlay(); | ||
return; | ||
var i = indexOfHighlight(s, point); | ||
if (i !== -1) { | ||
highlights.splice(i, 1); | ||
plot.triggerRedrawOverlay(); | ||
} | ||
} | ||
if (typeof s === "number") { | ||
s = plot.getData()[s]; | ||
function indexOfHighlight(s, p) { | ||
for (var i = 0; i < highlights.length; ++i) { | ||
var h = highlights[i]; | ||
if (h.series === s && | ||
h.point[0] === p[0] && | ||
h.point[1] === p[1]) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
if (typeof point === "number") { | ||
var ps = s.datapoints.pointsize; | ||
point = s.datapoints.points.slice(ps * point, ps * (point + 1)); | ||
function processRawData() { | ||
triggerCleanupEvent(); | ||
doTriggerClickHoverEvent(lastMouseMoveEvent, eventType.hover); | ||
} | ||
var i = indexOfHighlight(s, point); | ||
if (i !== -1) { | ||
highlights.splice(i, 1); | ||
function drawOverlay(plot, octx, overlay) { | ||
var plotOffset = plot.getPlotOffset(), | ||
i, hi; | ||
plot.triggerRedrawOverlay(); | ||
} | ||
} | ||
octx.save(); | ||
octx.translate(plotOffset.left, plotOffset.top); | ||
for (i = 0; i < highlights.length; ++i) { | ||
hi = highlights[i]; | ||
function indexOfHighlight(s, p) { | ||
for (var i = 0; i < highlights.length; ++i) { | ||
var h = highlights[i]; | ||
if (h.series === s && | ||
h.point[0] === p[0] && | ||
h.point[1] === p[1]) { | ||
return i; | ||
if (hi.series.bars.show) drawBarHighlight(hi.series, hi.point, octx); | ||
else drawPointHighlight(hi.series, hi.point, octx, plot); | ||
} | ||
octx.restore(); | ||
} | ||
return -1; | ||
} | ||
function drawPointHighlight(series, point, octx, plot) { | ||
var x = point[0], | ||
y = point[1], | ||
axisx = series.xaxis, | ||
axisy = series.yaxis, | ||
highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); | ||
function processRawData() { | ||
triggerCleanupEvent(); | ||
doTriggerClickHoverEvent(lastMouseMoveEvent, eventType.hover); | ||
} | ||
if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) { | ||
return; | ||
} | ||
function drawOverlay(plot, octx, overlay) { | ||
var plotOffset = plot.getPlotOffset(), | ||
i, hi; | ||
var pointRadius = series.points.radius + series.points.lineWidth / 2; | ||
octx.lineWidth = pointRadius; | ||
octx.strokeStyle = highlightColor; | ||
var radius = 1.5 * pointRadius; | ||
x = axisx.p2c(x); | ||
y = axisy.p2c(y); | ||
octx.save(); | ||
octx.translate(plotOffset.left, plotOffset.top); | ||
for (i = 0; i < highlights.length; ++i) { | ||
hi = highlights[i]; | ||
octx.beginPath(); | ||
var symbol = series.points.symbol; | ||
if (symbol === 'circle') { | ||
octx.arc(x, y, radius, 0, 2 * Math.PI, false); | ||
} else if (typeof symbol === 'string' && plot.drawSymbol && plot.drawSymbol[symbol]) { | ||
plot.drawSymbol[symbol](octx, x, y, radius, false); | ||
} | ||
if (hi.series.bars.show) drawBarHighlight(hi.series, hi.point, octx); | ||
else drawPointHighlight(hi.series, hi.point, octx, plot); | ||
octx.closePath(); | ||
octx.stroke(); | ||
} | ||
octx.restore(); | ||
} | ||
function drawPointHighlight(series, point, octx, plot) { | ||
var x = point[0], | ||
y = point[1], | ||
axisx = series.xaxis, | ||
axisy = series.yaxis, | ||
highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); | ||
function drawBarHighlight(series, point, octx) { | ||
var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), | ||
fillStyle = highlightColor, | ||
barLeft; | ||
if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) { | ||
return; | ||
} | ||
var barWidth = series.bars.barWidth[0] || series.bars.barWidth; | ||
switch (series.bars.align) { | ||
case "left": | ||
barLeft = 0; | ||
break; | ||
case "right": | ||
barLeft = -barWidth; | ||
break; | ||
default: | ||
barLeft = -barWidth / 2; | ||
} | ||
var pointRadius = series.points.radius + series.points.lineWidth / 2; | ||
octx.lineWidth = pointRadius; | ||
octx.strokeStyle = highlightColor; | ||
var radius = 1.5 * pointRadius; | ||
x = axisx.p2c(x); | ||
y = axisy.p2c(y); | ||
octx.lineWidth = series.bars.lineWidth; | ||
octx.strokeStyle = highlightColor; | ||
octx.beginPath(); | ||
var symbol = series.points.symbol; | ||
if (symbol === 'circle') { | ||
octx.arc(x, y, radius, 0, 2 * Math.PI, false); | ||
} else if (typeof symbol === 'string' && plot.drawSymbol && plot.drawSymbol[symbol]) { | ||
plot.drawSymbol[symbol](octx, x, y, radius, false); | ||
} | ||
var fillTowards = series.bars.fillTowards || 0, | ||
bottom = fillTowards > series.yaxis.min ? Math.min(series.yaxis.max, fillTowards) : series.yaxis.min; | ||
octx.closePath(); | ||
octx.stroke(); | ||
} | ||
function drawBarHighlight(series, point, octx) { | ||
var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), | ||
fillStyle = highlightColor, | ||
barLeft; | ||
var barWidth = series.bars.barWidth[0] || series.bars.barWidth; | ||
switch (series.bars.align) { | ||
case "left": | ||
barLeft = 0; | ||
break; | ||
case "right": | ||
barLeft = -barWidth; | ||
break; | ||
default: | ||
barLeft = -barWidth / 2; | ||
$.plot.drawSeries.drawBar(point[0], point[1], point[2] || bottom, barLeft, barLeft + barWidth, | ||
function() { | ||
return fillStyle; | ||
}, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); | ||
} | ||
octx.lineWidth = series.bars.lineWidth; | ||
octx.strokeStyle = highlightColor; | ||
function initHover(plot, options) { | ||
plot.highlight = highlight; | ||
plot.unhighlight = unhighlight; | ||
if (options.grid.hoverable || options.grid.clickable) { | ||
plot.hooks.drawOverlay.push(drawOverlay); | ||
plot.hooks.processRawData.push(processRawData); | ||
} | ||
var fillTowards = series.bars.fillTowards || 0, | ||
bottom = fillTowards > series.yaxis.min ? Math.min(series.yaxis.max, fillTowards) : series.yaxis.min; | ||
$.plot.drawSeries.drawBar(point[0], point[1], point[2] || bottom, barLeft, barLeft + barWidth, | ||
function() { | ||
return fillStyle; | ||
}, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); | ||
} | ||
function initHover(plot, options) { | ||
plot.highlight = highlight; | ||
plot.unhighlight = unhighlight; | ||
if (options.grid.hoverable || options.grid.clickable) { | ||
plot.hooks.drawOverlay.push(drawOverlay); | ||
plot.hooks.processRawData.push(processRawData); | ||
lastMouseMoveEvent = plot.getPlaceholder()[0].lastMouseMoveEvent; | ||
} | ||
lastMouseMoveEvent = plot.getPlaceholder()[0].lastMouseMoveEvent; | ||
} | ||
function init(plt) { | ||
plot = plt; | ||
plot.hooks.bindEvents.push(bindEvents); | ||
@@ -341,0 +338,0 @@ plot.hooks.shutdown.push(shutdown); |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
979715
19426