Highcharts передавая переменную в подсказку - PullRequest
0 голосов
/ 25 февраля 2019

Привет. Я пытаюсь передать переменную в подсказку, используя setData.

. Вот фрагмент моего кода, объясняющий, как я устанавливаю данные диаграммы, этот код не передает sensorValue к моей всплывающей подсказке:

nitrogenDioxide = [];
$.each(data['NO2'], function(key, value) {
    nitrogenDioxide.push([value.ts * 1000, value.rating]);
});

chart_2_1.series[0].setData(nitrogenDioxide);
chart_2_1.series[0].update({name:'Nitrogen Dioxide'}, true);

Вот код, который я использовал для создания моей всплывающей подсказки:

tooltip: {
        shared: true,
        useHTML: true,
        formatter: function () {
            var tooltipcontent = '<b>' + moment.unix((this.points[0].key / 1000)).format("DD/MM/YYYY HH:mm"); + '</b>';
            tooltipcontent += '<table style="width:100%">';

            $.each(this.points, function () {
                console.log(this);
                tooltipcontent += '<tr><td>' + this.y.toLocaleString() + '</td></tr>';
                tooltipcontent += '<tr><td>' + sensorValue + '</td></tr>';
            });

            tooltipcontent += '</table>';
            return tooltipcontent;
        }
    }

Как вы можете видеть, у меня есть переменная с именем sensorValue в моей подсказке,В цикле foreach у меня есть номинальное значение (ось Y) и значение датчика.Я хочу передать это значение датчика мне во всплывающей подсказке.

Я видел несколько способов сделать это онлайн, но ни один из них не установил данные так, как я, они делают это так:

new Highcharts.Chart( {
...,
series: [ {
    name: 'Foo',
    data: [
        {
            y : 3,
            myData : 'firstPoint'
        },
        {
            y : 7,
            myData : 'secondPoint'
        },
        {
            y : 1,
            myData : 'thirdPoint'
        }
    ]
} ]

});

Я пробовал что-то подобное, но не знал, как вызвать это дополнительное значение в подсказке:

nitrogenDioxide = [];
$.each(data['NO2'], function(key, value) {
    nitrogenDioxide.push([value.ts * 1000, value.rating, value.value]);
});

В приведенном выше коде я нажалЗначение датчика в массиве nitrogenDioxide[].

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

1 Ответ

0 голосов
/ 25 февраля 2019

Надеюсь, я правильно понял, в чем ваша проблема, и приведенная ниже демонстрация будет полезна для вас.

Когда передается массив с дополнительным значением (в нашем случае - sensorValue), его можно получить внутри форматера , используя этот подход:

  • получить индекс пойманной точки: this.point.index
  • использовать индекс точки для получения дополнительного значения из this.series.userOptions.data array

Код:

Highcharts.chart('container', {
  tooltip: {
    formatter: function() {
      var point = this.point,
        series = this.series,
        pointIndex = point.index,
        text,
        additionalValue;

      text = '<span style="color:' +
        this.color + '">\u25CF</span> ' +
        series.name +
        ': <b>' +
        this.y +
        '</b><br/>';

      additionalValue =
        series.userOptions.data[pointIndex][2];

      text += '<br> Additional value: ' +
        additionalValue;

      return text;
    }
  },
  series: [{
    data: [
      [1, 2, 'aaa'], // 'aaa' is an additional value
      [2, 5, 'bbb'],
      [3, 9, 'ccc']
    ]
  }],
});

Демонстрация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...