Я использую highcharts-ng с highcharts.js
Каждый раз, когда я запускаю график, я получаю эту ошибку:
angular.js:13920 TypeError: Cannot read property 'pos' of undefined
at https://code.highcharts.com/stock/highstock.js:518:422
at Array.forEach (<anonymous>)
at a.each (https://code.highcharts.com/stock/highstock.js:27:466)
at F.<anonymous> (https://code.highcharts.com/stock/highstock.js:518:396)
at F.a.(anonymous function) [as getPlotLinePath] (https://code.highcharts.com/stock/highstock.js:19:437)
at a.Tick.renderGridLine (https://code.highcharts.com/stock/highstock.js:113:264)
at a.Tick.render (https://code.highcharts.com/stock/highstock.js:115:472)
at F.renderTick (https://code.highcharts.com/stock/highstock.js:159:427)
at https://code.highcharts.com/stock/highstock.js:160:448
at Array.forEach (<anonymous>)
Есть идеи?
Привет @ Lir10
Не могли бы вы связаться с нашей службой поддержки? См .: https://www.highcharts.com/support
Мы используем вопросы github для отчетов об ошибках. В вашем случае я не уверен, является ли это ошибкой в Highstock, неправильно настроенной диаграммой или ошибкой в модуле highcharts-ng.
Есть идеи?
Только одна идея: ошибка предполагает проблему с тиками xAxis / yAxis, поэтому я бы попытался удалить определенные там параметры и посмотреть, решит ли это проблему. Если да, то воссоздайте проблему в jsfiddle без highcharts-ng, чтобы убедиться, что это ошибка в библиотеке Highstock.
Привет @pawelfus!
Вы были правы - проблема была в тиках xAxis
Закрытие вопроса
@ Lir10 Могу я спросить, в чем проблема? У меня такая же проблема, и я пытаюсь определить причину. Благодаря!
@bobheadxi
Я бы посоветовал сделать это:
Есть идеи?
Только одна идея: ошибка предполагает проблему с тиками xAxis / yAxis, поэтому я бы попытался удалить определенные там параметры и посмотреть, решит ли это проблему. Если да, то воссоздайте проблему в jsfiddle без highcharts-ng, чтобы убедиться, что это ошибка в библиотеке Highstock.
@ Lir10 , не могли бы вы описать, где именно была проблема, если вы еще помните? У меня такая же проблема, но я не могу уловить обстоятельства, это происходит случайно, и, к сожалению, ответ @pawelfus не очень помогает.
Привет @davletovalmir
Если вы сможете предоставить стабильный способ воссоздать проблему, поделитесь ссылкой на демонстрацию или необходимые файлы.
@KacperMadej , я пока не смог найти основную причину, но вот что я узнал (заранее извиняюсь за фрагменты запутанного кода ниже):
step
внутри этого блока:d.group.animate({
scaleY: 1
}, G(z(d.options.animation), {
step: function(a, b) {
h[f] = v + b.pos * (c.pos - v); /// <-- b is undefined
d.group.attr(h)
}
}))
step
, как вы можете заметить, с контекстом, но без a
и b
args:animate: function(e, q, b) {
q = a.animObject(y(q, this.renderer.globalAnimation, !0));
y(m.hidden, m.msHidden, m.webkitHidden, !1) && (q.duration = 0);
0 !== q.duration ? (b && (q.complete = b),
h(this, e, q)) : (this.attr(e, null, b),
q.step && q.step.call(this)); /// <-- function called without arguments
return this
}
animate
является частью SVGElement
и вызывается внутри функции render
.У меня не было достаточно времени, чтобы глубоко изучить этот вопрос. Надеюсь, то, что я нашел, будет для вас полезным.
PS Также прикрепляю кусок скриншота с ошибкой консоли. Не уверен, что это сильно поможет, но кто знает :)
@davletovalmir
Спасибо за информацию - мне достаточно воссоздать проблему.
Вот обходной путь с исправлением кода:
https://jsfiddle.net/BlackLabel/L6x08jeq/1/
Вы можете применить исправление кода из демонстрации в свой код (как модуль - после основного файла Highcharts). Если у вас есть время, проверьте, устраняет ли это ошибку в вашем приложении.
К вашему сведению: не минифицированный, читаемый человеком код для файлов, связанных с Highcharts, доступен при использовании файлов с .src.js
- например, highcharts.src.js
.
когда диаграмма отображается в первый раз, и в основном, когда фокус не в браузере
Это то, что нужно проверить - это может быть связано с недавней функцией, которая предотвращает анимацию для несфокусированных карточек / окон браузера (потому что нет необходимости анимировать, когда никто не смотрит).
Мне удалось получить правильный соответствующий код в неминифицированном коде. Ключевым моментом здесь является использование типа серии столбцов.
Демо: https://jsfiddle.net/BlackLabel/L6x08jeq/
Шаги:
_Внутреннее примечание: _
H.pick((fx && fx.pos), 1)
вместо fx.pos
похоже, решает проблему, но для подтверждения требуется тестирование.
@KacperMadej , спасибо, это имеет смысл. Фикс работает :)
Не могли бы вы прикинуть, когда будет выпущено это исправление?
@davletovalmir
Исправление будет опубликовано на этой неделе и должно быть выпущено в следующей версии Highcharts.
В это время:
Проблема была вызвана тем, что функция animate
не передает соответствующие аргументы step
при обходе анимации, поэтому вместо этого я исправил ее.
@KacperMadej, сколько времени до следующего релиза? Мы только что перешли с angular highcharts и хотели бы просто установить версию с исправлением перед объединением нашей функциональной ветки, вместо того, чтобы начинать с дополнительного кода для исправления ошибки, которой больше не будет через несколько дней.
Следующая версия (7.0.3) запланирована на конец этой недели
Есть ли обновленное расчетное время прибытия?
Выполняются регрессионные тесты. Как только все проблемы будут решены, будет выпущена новая версия - я бы ожидал новую версию в ближайшее время, максимум через несколько дней.
Он выпущен сейчас @yhoiseth
Сладкий! Спасибо, что сообщили мне 🙂
По какой-то причине GitHub меня не уведомил, хотя я «смотрю релизы» для этого репозитория 🤔
Я не знаю, почему вы не получили уведомление, но вы все же можете подписаться на наш список рассылки: https://www.highcharts.com/blog/download/
Самый полезный комментарий
Следующая версия (7.0.3) запланирована на конец этой недели