Как вызвать функцию форматирования всплывающей подсказки Highcharts из-за пределов объекта конфигурации?

так что у меня есть интересная проблема.

Вот где функция форматирования находится внутри объекта конфигурации диаграммы:

В контроллере HighCharts

vm.config = {
    options: {
        ....
        chart: {
            ....
        },
        navigator: {
            ....
        },
        tooltip: {
            shared: true,
            useHTML: true,
            backgroundColor: null,
            borderWidth: 0,
            shadow: false,
            formatter: function(tooltipObj) {
                return formatTooltip(tooltipObj, this.points);
            }
        },
        ....

Я хотел бы иметь возможность вызывать функцию formatTooltip из другого места в моем приложении. Однако 1) Как мне это сделать? и 2) Как пройти в tooltipObj?

Например, внутри моего alertFactory я хочу, чтобы событие mouseover, которое происходит, когда пользователь наводит курсор на plotBand, отправляло дополнительную информацию во всплывающую подсказку:

В AlertsFactory

var formatPlotBand = _.curry((color, alert) => {
    return {
        color : color,
        from  : alert.start_epoch * 1000,
        to    : alert.end_epoch * 1000,
        id    :'alert-plotband',
        events: {
            mouseover: function (e) {
                /*
                    Somehow from here call the formatTooltip function
                    in the highCharts Controller.
                */
            },
            mouseout: function (e) {
                ....

person Leon Gaban    schedule 01.08.2016    source источник
comment
Не могли бы вы показать, как выглядит метод formatTooltip()? Этот метод возвращает только новое значение для средства форматирования? Или это еще что-то? В первом случае вы просто получите строку и ничего больше: она не обновит всплывающую подсказку (поскольку форматер не вызывается). Я думаю, что chart.tooltip.refresh([point, point, point]); (не часть API) - это путь, но это зависит от того, чего вы хотите достичь.   -  person Paweł Fus    schedule 02.08.2016


Ответы (1)


var formatPlotBand = _.curry((color, alert) => {
return {
    color : color,
    from  : alert.start_epoch * 1000,
    to    : alert.end_epoch * 1000,
    id    :'alert-plotband',
    events: {
        mouseover: function (e) {
            vm.config.options.tooltip.formatter(tooltipObj);
            chart.tooltip.refresh([chart.series[0].points[i]])
        },
        mouseout: function (e) {
            ....

Я не знаю, является ли vm тем, что вы называете своей диаграммой, поэтому замените chart в коде любым именем переменной, которое вы используете.

person Dr. Cool    schedule 02.08.2016