Highcharts: DataLabels HTML e atualização sem qualquer exceção de javascript de causa

Criado em 27 fev. 2017  ·  3Comentários  ·  Fonte: highcharts/highcharts

Eu novamente com outro assunto obscuro.

Eu uso um dataLabels HTML condicional para exibir uma imagem dependendo do valor de um ponto.

Às vezes, quando passo de um gráfico com dataLabels presentes para um gráfico sem nenhum, recebo uma exceção de javascript:

TypeError: Não é possível definir a propriedade 'onmouseover' de indefinido

Isso só acontece nestas condições:

  • DataLabel está definido para usarHTML: true
  • Tivemos um gráfico renderizado com pelo menos um dataLabels presente seguido de uma chamada "setData ()" alterando os valores para que nenhum dataLabels estivesse presente.
  • Chamamos .update () nas propriedades da série (mesmo se as propriedades a serem mescladas estiverem vazias).

Comportamento esperado

Sem erro

Comportamento real

Exceção lançada

Demonstração ao vivo com etapas para reproduzir

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

Clique no botão.

Navegadores afetados

Tudo

Gambiarra

Eu sei que posso retornar uma string vazia em vez de nula nos dataLabels, mas isso causa uma desaceleração massiva com muitos pontos.
Também posso desativar o uso de HTML, mas não consigo exibir imagens.

Como uma observação lateral, seu novo modelo de problema do github tem um erro de digitação em "comportamento" (comportamento)

Bug

Comentários muito úteis

@Dunge Obrigado por relatar, vamos corrigir isso o mais rápido possível.

_Nota interna: falha em Html.js L320 porque há um series.dataLabelGroup mas nenhum elemento div_

Todos 3 comentários

@Dunge Obrigado por relatar, vamos corrigir isso o mais rápido possível.

_Nota interna: falha em Html.js L320 porque há um series.dataLabelGroup mas nenhum elemento div_

@ Jon-a-nygaard Alguma atualização para corrigir isso? Obrigado!

A causa raiz é que o grupo SVG tem uma contraparte HTML e, embora a contraparte HTML seja excluída, a função on substituída do SVGWrapper não o é. A mesma coisa teoricamente acontece com translateXSetter e translateYSetter . Vou consertar isso simplesmente verificando parents[0].div , mas uma correção completa exigiria que restaurássemos as funções originais ao excluir o div em SvgRenderer.js .

Esta página foi útil?
0 / 5 - 0 avaliações