diff --git a/src/models/cumulativeLineChart.js b/src/models/cumulativeLineChart.js index af847c8..840141b 100644 --- a/src/models/cumulativeLineChart.js +++ b/src/models/cumulativeLineChart.js @@ -505,7 +505,7 @@ nv.models.cumulativeLineChart = function() { */ interactiveLayer.dispatch.on('elementMousemove', function(e) { - lines.dispatch.clearHighlights(); + lines.clearHighlights(); var singlePoint, pointIndex, pointXLocation, allData = []; data .filter(function(series, i) { @@ -514,7 +514,7 @@ nv.models.cumulativeLineChart = function() { }) .forEach(function(series,i) { pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x()); - lines.dispatch.highlightPoint(i, pointIndex, true); + lines.highlightPoint(i, pointIndex, true); var point = series.values[pointIndex]; if (typeof point === 'undefined') return; if (typeof singlePoint === 'undefined') singlePoint = point; @@ -547,7 +547,7 @@ nv.models.cumulativeLineChart = function() { interactiveLayer.dispatch.on("elementMouseout",function(e) { dispatch.tooltipHide(); - lines.dispatch.clearHighlights(); + lines.clearHighlights(); }); dispatch.on('tooltipShow', function(e) { diff --git a/src/models/line.js b/src/models/line.js index 92ccc64..01a44d4 100644 --- a/src/models/line.js +++ b/src/models/line.js @@ -209,7 +209,8 @@ nv.models.line = function() { chart.dispatch = scatter.dispatch; chart.scatter = scatter; - d3.rebind(chart, scatter, 'id', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi', 'clipRadius', 'padData'); + d3.rebind(chart, scatter, 'id', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', + 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi', 'clipRadius', 'padData','highlightPoint','clearHighlights'); chart.margin = function(_) { if (!arguments.length) return margin; diff --git a/src/models/lineChart.js b/src/models/lineChart.js index db741ec..9bb188d 100644 --- a/src/models/lineChart.js +++ b/src/models/lineChart.js @@ -255,7 +255,7 @@ nv.models.lineChart = function() { interactiveLayer.dispatch.on('elementMousemove', function(e) { - lines.dispatch.clearHighlights(); + lines.clearHighlights(); var singlePoint, pointIndex, pointXLocation, allData = []; data .filter(function(series, i) { @@ -264,7 +264,7 @@ nv.models.lineChart = function() { }) .forEach(function(series,i) { pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x()); - lines.dispatch.highlightPoint(i, pointIndex, true); + lines.highlightPoint(i, pointIndex, true); var point = series.values[pointIndex]; if (typeof point === 'undefined') return; if (typeof singlePoint === 'undefined') singlePoint = point; @@ -297,7 +297,7 @@ nv.models.lineChart = function() { interactiveLayer.dispatch.on("elementMouseout",function(e) { dispatch.tooltipHide(); - lines.dispatch.clearHighlights(); + lines.clearHighlights(); }); dispatch.on('tooltipShow', function(e) { diff --git a/src/models/scatter.js b/src/models/scatter.js index cdfa26f..9fe4a59 100644 --- a/src/models/scatter.js +++ b/src/models/scatter.js @@ -34,7 +34,7 @@ nv.models.scatter = function() { , sizeDomain = null // Override point size domain , sizeRange = null , singlePoint = false - , dispatch = d3.dispatch('elementClick', 'elementMouseover', 'elementMouseout', 'highlightPoint', 'clearHighlights') + , dispatch = d3.dispatch('elementClick', 'elementMouseover', 'elementMouseout') , useVoronoi = true ; @@ -432,20 +432,23 @@ nv.models.scatter = function() { //============================================================ // Event Handling/Dispatching (out of chart's scope) //------------------------------------------------------------ - dispatch.on('clearHighlights', function() { + chart.clearHighlights = function() { + //Remove the 'hover' class from all highlighted points. d3.selectAll(".nv-chart-" + id + " .nv-point.hover").classed("hover",false); - }); + }; - dispatch.on('highlightPoint', function(seriesIndex, pointIndex, isHoverOver) { + chart.highlightPoint = function(seriesIndex,pointIndex,isHoverOver) { d3.select(".nv-chart-" + id + " .nv-series-" + seriesIndex + " .nv-point-" + pointIndex) - .classed("hover",isHoverOver); - }); + .classed("hover",isHoverOver); + }; + + dispatch.on('elementMouseover.point', function(d) { - if (interactive) dispatch.highlightPoint(d.seriesIndex,d.pointIndex,true); + if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,true); }); dispatch.on('elementMouseout.point', function(d) { - if (interactive) dispatch.highlightPoint(d.seriesIndex,d.pointIndex,false); + if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,false); }); //============================================================ diff --git a/src/models/stackedArea.js b/src/models/stackedArea.js index 273b866..2fc8bb9 100644 --- a/src/models/stackedArea.js +++ b/src/models/stackedArea.js @@ -250,7 +250,8 @@ nv.models.stackedArea = function() { chart.dispatch = dispatch; chart.scatter = scatter; - d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi','clipRadius'); + d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', + 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi','clipRadius','highlightPoint','clearHighlights'); chart.x = function(_) { if (!arguments.length) return getX; diff --git a/src/models/stackedAreaChart.js b/src/models/stackedAreaChart.js index 6c9cb19..c5eeaad 100644 --- a/src/models/stackedAreaChart.js +++ b/src/models/stackedAreaChart.js @@ -341,7 +341,7 @@ nv.models.stackedAreaChart = function() { interactiveLayer.dispatch.on('elementMousemove', function(e) { - stacked.scatter.dispatch.clearHighlights(); + stacked.clearHighlights(); var singlePoint, pointIndex, pointXLocation, allData = []; data .filter(function(series, i) { @@ -350,7 +350,7 @@ nv.models.stackedAreaChart = function() { }) .forEach(function(series,i) { pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x()); - stacked.scatter.dispatch.highlightPoint(i, pointIndex, true); + stacked.highlightPoint(i, pointIndex, true); var point = series.values[pointIndex]; if (typeof point === 'undefined') return; if (typeof singlePoint === 'undefined') singlePoint = point; @@ -383,7 +383,7 @@ nv.models.stackedAreaChart = function() { interactiveLayer.dispatch.on("elementMouseout",function(e) { dispatch.tooltipHide(); - stacked.scatter.dispatch.clearHighlights(); + stacked.clearHighlights(); });