Highcharts: HTML DataLabels y actualización sin ninguna causa excepción de javascript

Creado en 27 feb. 2017  ·  3Comentarios  ·  Fuente: highcharts/highcharts

Yo de nuevo con otro tema oscuro.

Utilizo un dataLabels HTML condicional para mostrar una imagen dependiendo del valor de un punto.

A veces, cuando paso de un gráfico con dataLabels presente a un gráfico sin ninguno, obtengo una excepción de javascript:

TypeError: no se puede establecer la propiedad 'onmouseover' de undefined

Esto solo ocurre en estas condiciones:

  • DataLabel está configurado para usar HTML: verdadero
  • Tuvimos un gráfico renderizado con al menos un dataLabels presente seguido de una llamada "setData ()" cambiando los valores para que no haya dataLabels presente.
  • Llamamos a .update () en las propiedades de la serie (incluso si las propiedades para fusionar están vacías).

Comportamiento esperado

No hay error

Comportamiento real

Excepción lanzada

Demostración en vivo con pasos para reproducir

http://jsfiddle.net/gts29eq7/1/

Haga clic en el botón.

Navegadores afectados

Todos

Solución alterna

Sé que puedo devolver una cadena vacía en lugar de nula en las etiquetas de datos, pero esto causa una desaceleración masiva con muchos puntos.
También puedo deshabilitar useHTML, pero luego no puedo mostrar imágenes.

Como nota al margen, su plantilla de problema nuevo de github tiene un error tipográfico en "comportamiento" (comportamiento)

Bug

Comentario más útil

@Dunge Gracias por informar, arreglaremos esto lo antes posible.

_Nota interna: falla en Html.js L320 porque hay un series.dataLabelGroup pero no un elemento div_

Todos 3 comentarios

@Dunge Gracias por informar, arreglaremos esto lo antes posible.

_Nota interna: falla en Html.js L320 porque hay un series.dataLabelGroup pero no un elemento div_

@ jon-a-nygaard ¿Alguna actualización sobre una solución para esto? ¡Gracias!

La causa principal es que el grupo SVG tiene una contraparte HTML, y aunque la contraparte HTML se elimina, la función on anulada del SVGWrapper no lo es. Teóricamente sucede lo mismo con translateXSetter y translateYSetter . Arreglaré esto simplemente verificando parents[0].div , pero una solución completa requeriría que restauremos las funciones originales al eliminar el div en SvgRenderer.js .

¿Fue útil esta página
0 / 5 - 0 calificaciones