Highcharts; добавить произвольные данные, которые сохраняются при визуализации

0

скажем, я создаю диаграмму json, которая может выглядеть примерно так:

return jsonify({
  chart: {
    post_url: '/some/url/'
    type: column
  },
  title: {
    text: this is a chart
  },
  tooltip: {
    shared: true
  },
  xAxis: {
    categories: [x[0].strftime('%b %y') for x in arr]
  },
  plotOptions: {
    column: {
      stacking: normal
    }
  }
  series: [{
    data: [[x.thing for x in month].count(True) for month in arr]
  }, {
    data: [[x.thing for x in month].count(False) for month in arr]
  }]
})

В setOptions я делаю следующее.

Highcharts.setOptions({
        plotOptions: {
          series: {
            cursor: 'pointer',
            point: {
              events: {
                click: function(el) {
                  $.post(this.chart.post_url + this.category, function(data) {
                    console.log(data);
                  });
                }
              }
            }
          }
        }
      });

Однако это не позволяет мне щелкнуть и перейти к URL-адресу сообщения, говоря, что post_url не определен. Поэтому я полагаю, что данные теряются при визуализации графика.

Каким образом это можно сделать?

Теги:
highcharts

2 ответа

3
Лучший ответ

this через point.events.click referres до точечного объекта, а не объект диаграммы. Вы можете this.series.chart.userOptions.chart.post_url назад к конфигурации диаграммы, используя this.series.chart.userOptions.chart.post_url например:

point: {
    events: {
         click: function() {
              alert(this.series.chart.userOptions.chart.post_url);
          }
    }
}

Вот пример скрипки.

0

Если я правильно понял, вы хотите, чтобы на series.points URL-адрес, когда вы нажимаете на них? Вам не хватает конечной запятой после определения post_url и кавычек вокруг значения типа. При этом я бы установил URL-адрес в параметрах series, а не в параметрах chart. Тогда вам может потребоваться установить его так:

  series: [{
    post_url: '/some/url/',
    data: [[x.thing for x in month].count(True) for month in arr]
  }, {
    post_url: '/some/url/',
    data: [[x.thing for x in month].count(False) for month in arr]
  }]

Затем в событии click:

  events: {
    click: function(el) {
      $.post(this.post_url + this.category, function(data) {
        console.log(data);
      });
    }

Demo.

Если вы все еще хотите использовать метод chart.post_url вам нужно исправить опечатки. Демо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню