public bindCrosshairEvents()

in src/EnhancedScatterChart.ts [2173:2216]


    public bindCrosshairEvents(): void {
        if (!this.axisGraphicsContextScrollable) {
            return;
        }

        this.axisGraphicsContextScrollable
            .on("mousemove", () => {
                const event: MouseEvent = <MouseEvent>getEvent();
                let currentTarget = <SVGAElement>event.currentTarget,
                    svgNode: SVGElement = currentTarget.viewportElement,
                    scaledRect: ClientRect = svgNode.getBoundingClientRect(),
                    domRect: SVGRect = (<any>svgNode).getBBox(),
                    ratioX: number = scaledRect.width / domRect.width,
                    ratioY: number = scaledRect.height / domRect.height,
                    x: number = event.pageX,
                    y: number = event.pageY;

                if (domRect.width > EnhancedScatterChart.MinViewport.width
                    && !equalWithPrecision(
                        ratioX,
                        EnhancedScatterChart.DefaultCrosshairYPosition,
                        EnhancedScatterChart.CrosshairPrecision)) {

                    x = x / ratioX;
                }

                if (domRect.height > EnhancedScatterChart.MinViewport.height
                    && !equalWithPrecision(
                        ratioY,
                        EnhancedScatterChart.DefaultCrosshairYPosition,
                        EnhancedScatterChart.CrosshairPrecision)) {

                    y = y / ratioY;
                }

                this.updateCrosshair(x, y);
            })
            .on("mouseover", () => {
                this.crosshairCanvasSelection.style("display", "block");
            })
            .on("mouseout", () => {
                this.crosshairCanvasSelection.style("display", "none");
            });
    }