diff --git a/examples/mouse_move.html b/examples/mouse_move.html
new file mode 100755
index 0000000..74ccd21
--- /dev/null
+++ b/examples/mouse_move.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/index.ts b/src/index.ts
index f186d0f..a8552d0 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,5 +1,5 @@
import { ChartwerkPod, VueChartwerkPodMixin, TimeFormat, CrosshairOrientation, BrushOrientation, yAxisOrientation } from '@chartwerk/core';
-import { LineTimeSerie, LineOptions } from './types';
+import { LineTimeSerie, LineOptions, MouseObj } from './types';
import { Markers } from './components/markers';
import { Segments } from './components/segments';
@@ -290,18 +290,17 @@ class LinePod extends ChartwerkPod {
return _.max(intervals);
}
- onMouseMove(): void {
+ getMouseObj(): MouseObj {
const eventX = d3.mouse(this.chartContainer.node())[0];
const eventY = d3.mouse(this.chartContainer.node())[1];
const xValue = this.state.xScale.invert(eventX); // mouse x position in xScale
const yValue = this.state.yScale.invert(eventY);
- this.moveCrosshairLine(eventX, eventY);
const datapoints = this.findAndHighlightDatapoints(xValue, yValue);
- // TDOO: is shift key pressed
+ // TODO: is shift key pressed
// TODO: need to refactor this object
- this.options.callbackMouseMove({
+ return {
x: d3.event.pageX,
y: d3.event.pageY,
xVal: xValue,
@@ -309,7 +308,21 @@ class LinePod extends ChartwerkPod {
series: datapoints,
chartX: eventX,
chartWidth: this.width
- });
+ };
+ }
+
+ override onMouseMove(): void {
+ const obj = this.getMouseObj();
+ this.moveCrosshairLine(obj.x, obj.y);
+ // TODO: is shift key pressed
+ // TODO: need to refactor this object
+ this.options.callbackMouseMove(obj);
+ }
+
+ // TODO: add override
+ onMouseClick(): void {
+ const obj = this.getMouseObj();
+ console.log(obj);
}
findAndHighlightDatapoints(xValue: number, yValue: number): { value: [number, number], color: string, label: string }[] {
@@ -341,14 +354,14 @@ class LinePod extends ChartwerkPod {
return points;
}
- onMouseOver(): void {
+ override onMouseOver(): void {
this.onMouseMove();
this.crosshair.style('display', null);
this.crosshair.selectAll('.crosshair-circle')
.style('display', null);
}
- onMouseOut(): void {
+ override onMouseOut(): void {
this.options.callbackMouseOut();
this.crosshair.style('display', 'none');
}
diff --git a/src/types.ts b/src/types.ts
index 5924894..379763f 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -11,3 +11,13 @@ type LineTimeSerieParams = {
export type LineTimeSerie = Serie & Partial;
export type LineOptions = Options;
+
+export type MouseObj = {
+ x: number,
+ y: number,
+ xVal: number,
+ yVal: number,
+ series: { value: [number, number], color: string, label: string }[],
+ chartX: number,
+ chartWidth: number
+}
\ No newline at end of file