diff --git a/src/inherit/barEvt.jsx b/src/inherit/barEvt.jsx index 29b55ee..45949be 100644 --- a/src/inherit/barEvt.jsx +++ b/src/inherit/barEvt.jsx @@ -27,8 +27,8 @@ export default class BarEvt extends Component { } mouseOver(e, d) { - - const contentTooltip = {title: d.name, value:d.y, fieldTitle: d.x, color: d.color}; + const customContentToolTip = this.props.contentTooltip; + const contentTooltip = customContentToolTip? customContentToolTip(d): {title: d.name, value:d.y, fieldTitle: d.x, color: d.color}; this.setState({ xTooltip: e.clientX, yTooltip: e.clientY, diff --git a/src/inherit/voronoiEvt.jsx b/src/inherit/voronoiEvt.jsx index f8d8fda..f9dad0a 100644 --- a/src/inherit/voronoiEvt.jsx +++ b/src/inherit/voronoiEvt.jsx @@ -30,8 +30,9 @@ export default class VoronoiEvt extends Component { } voronoiMouseOver(e, d, xScaleSet, yScaleSet, stack) { - var newY = stack? yScaleSet(d.y + d.y0): yScaleSet(d.y); - const contentTooltip = {title: d.x.toString(), fieldTitle: d.name.toString(), value: d.y.toString(), color: d.color}; + var newY = stack ? yScaleSet(d.y + d.y0) : yScaleSet(d.y); + const customContentToolTip = this.props.contentTooltip; + const contentTooltip = customContentToolTip ? customContentToolTip(d) : { title: d.x.toString(), fieldTitle: d.name.toString(), value: d.y.toString(), color: d.color }; this.setState({ focusX: xScaleSet(d.x), diff --git a/src/pie.jsx b/src/pie.jsx index c2fb328..bf6e14b 100644 --- a/src/pie.jsx +++ b/src/pie.jsx @@ -13,42 +13,17 @@ import { import {Legend} from 'react-d3-core'; import Tooltip from './utils/tooltip'; +import BarEvt from './inherit/barEvt'; import pieProps from './commonProps'; -export default class PieTooltip extends Component { +export default class PieTooltip extends BarEvt { constructor(props) { super(props); - this.state = { - xTooltip: null, - yTooltip: null, - contentTooltip: null - } } static defaultProps = pieProps - _mouseOver(e, d) { - const contentTooltip = { - fieldTitle: d.data.name, - value: d.value, - color: d.color - } - this.setState({ - xTooltip: e.clientX, - yTooltip: e.clientY, - contentTooltip: contentTooltip - }) - } - - _mouseOut(e, d) { - this.setState({ - xTooltip: null, - yTooltip: null, - contentTooltip: null - }) - } - render() { const { @@ -74,8 +49,8 @@ export default class PieTooltip extends Component { {...this.props} radius= {radius} outerRadius= {outerRadius} - onMouseOver={this._mouseOver.bind(this)} - onMouseOut={this._mouseOut.bind(this)} + onMouseOver={this.mouseOver.bind(this)} + onMouseOut={this.mouseOut.bind(this)} /> diff --git a/src/utils/voronoi.jsx b/src/utils/voronoi.jsx index c9c961f..616884e 100644 --- a/src/utils/voronoi.jsx +++ b/src/utils/voronoi.jsx @@ -74,8 +74,8 @@ export default class Voronoi extends Component { d={"M" + area.join("L") + "Z"} onMouseOut={this.triggerOut.bind(this, area.point)} onMouseOver={this.triggerOver.bind(this, area.point)} - style={{fill: 'none', pointerEvents: 'all'}}, - key: Math.random() + style={{fill: 'none', pointerEvents: 'all'}} + key={Math.random()} /> ) })