Pregunta

Estoy tratando de construir un gráfico que dibuja una línea vertical al eje X bajo el cursor. Usando esto como una pauta:

http: //dojo-toolkit.33424.n3 .nabble.com / Trazando-eventos-td40659.html

Estoy utilizando el código siguiente para coger 'mouseout' y 'mousemove' para el área del gráfico trama (no incluye los márgenes de gráficos y etiquetas)

        chart = new dojox.charting.Chart2D("rating");
        chart.addPlot("default", {
            type: "Bubble"
        });

        chart.addPlot("grid", {
            type: "Grid",
            hMinorLines: true
        });

        var plotArea = chart.surface.rawNode.children[1];
        dojo.connect(plotArea, "onmousemove", this, this.showRatingHighlight);
        dojo.connect(plotArea, "onmouseout", this, this.hideRatingHighlight);

En general, funciona como se esperaba. sin embargo también tengo una cuadrícula dibujada en el gráfico, y cada vez que el ratón pasa sobre las líneas de cuadrícula, consigo un evento "mouseout". También pierdo el evento MouseMove cuando el ratón pasa por encima de un marcador con una acción de información sobre herramientas / culminante en su lugar.

Q: ¿Cómo puedo coger mousemove / mousemove sobre el 'PlotArea' sin perder por encima de las líneas de división o marcadores trama

Q: ¿Hay una mejor manera de conseguir el 'PlotArea' de la tabla para el cálculo de las compensaciones

¿Fue útil?

Solución

A1: Superposición de un div transparente sobre una tabla y captura los eventos que lo usan. Advertencia - más probable es que bloqueará eventos de llegar a los marcadores y las líneas de la cuadrícula

.

Por cierto, el ejemplo se supone que se utiliza SVG o VML extracción de grasas. De manera más general a los eventos de captura:

var h1 = surface.connect("onmouseout", f1);
var h2 = shape.connect("onmouseout", f2);
// ...
shape.disconnect(h2);
surface.disconnect(h1);

A2: Después se hizo un gráfico (y toda la geometría calculado), puede extraer dimensiones como esto:

chart.dim; // {width, height} --- dimensions of the chart
chart.offsets; // {l, b, r, t} --- offsets from dimensions
var plotArea = {
  // in pixels relative to chart's top-left corner
  x: chart.offsets.l,
  y: chart.offsets.t,
  width:  chart.dim.width  - chart.offsets.l - chart.offsets.r,
  height: chart.dim.height - chart.offsets.t - chart.offsets.b
};

Uso dojo.position() o una función similar para obtener la posición de la tabla de la página, si es necesario coordenadas absolutas a nivel de página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top