Проблема введения переменной круговой диаграммы с помощью highcharts-export-server - PullRequest
0 голосов
/ 12 января 2019

Я использую Highcharts Export Server в качестве модуля Node.js для создания диаграмм в формате PNG. Когда я включаю круговую диаграмму с переменным радиусом, я получаю сообщение об ошибке в результирующем файле. Ошибка Highcharts error # 17:

Запрошенный тип серии не существует. Эта ошибка возникает, когда вы устанавливаете для chart.type или series.type тип серии, который не определен в Highcharts. Типичная причина может заключаться в том, что у вас отсутствует файл расширения, в котором определен тип серии, например, для запуска серии rangerange вам необходимо загрузить файл highcharts-more.js.

Диаграмма, которую я использую, является частью модуля highcharts-more, поэтому ошибка имеет смысл. Я даже нашел документы, которые, казалось, излагали мое решение. Это опция resources, где вы можете предоставить скрипты для внедрения в ваш экспорт. Эта страница здесь , но я включу важный бит ниже:

-ресурсов

{ 
    "files": "highstock.js,highcharts-more.js,data.js,drilldown.js,funnel.js,heatmap.js,treemap.js,highcharts-3d.js,no-data-to-display.js,map.js,solid-gauge.js,broken-axis.js", 
    "css": "g.highcharts-series path {stroke-width:2;stroke: pink}", 
    "js": "document.body.style.webkitTransform = \"rotate(-10deg)\";" 
}
  • files: Разделенная запятыми строка имен файлов, которые необходимо вставить на страницу для рендеринга диаграммы. Внедряются только файлы с расширениями .css и .js, остальные игнорируются.
  • css: css вставлено в тело страницы
  • js: javascript, вставленный в тело страницы

После некоторых копаний я обнаружил, что могу передать эту опцию ресурса в виде строкового объекта JSON в мои параметры экспорта. Итак, я попытался внедрить удаленную версию highcharts-more.js.

const exportImagesBase64 = async(data, format = 'png') => {
  HighchartsExport.initPool();

  let resources = JSON.stringify({
    files: "http://code.highcharts.com/highcharts-more.js"
  });

  let charts = data.map(chart => exportPromise({
    type: format, //png
    options: chart, //standard highcharts config object
    resources //resources option to inject highcharts-more
  }));

  charts = await Promise.all(charts);

  HighchartsExport.killPool();

  return charts;
};

const exportPromise = (data) => {
  return new Promise((resolve, reject) => {
    HighchartsExport.export(data, (err, res) => err ? reject(err) : resolve(res));
  });
};

Вот пример того, что data может быть равно в коде выше

[{
    "chart": {
      "plotBackgroundColor": null,
      "plotBorderWidth": null,
      "plotShadow": false,
      "type": "variablepie",
      "height": 300,
      "width": 300
    },
    "title": {
      "text": "Placement Breakdown",
      "align": "left",
      "x": 30,
      "y": 30
    },
    "tooltip": {
      "headerFormat": "",
      "pointFormat": "<b> {point.name}</b><br/>Impressions: <b>{point.y}</b><br/>Clicks: <b>{point.z}</b><br/>"
    },
    "plotOptions": {
      "pie": {
        "allowPointSelect": true,
        "cursor": "pointer",
        "dataLabels": {
          "enabled": false
        },
        "showInLegend": true
      }
    },
    "series": [
      {
        "minPointSize": 10,
        "innerSize": "20%",
        "zMin": 0,
        "data": [
          {
            "name": "facebook",
            "y": 13642,
            "z": 357
          },
          {
            "name": "instagram",
            "y": 12920,
            "z": 326
          }
        ]
      }
    ],
    "credits": {
      "enabled": false
    }
  }]

После добавления параметров ресурса я все еще получаю ошибку # 17 Highcharts. Я думаю об этом совершенно неправильно? Я не могу найти больше информации об этом, поэтому надеюсь, что у кого-то есть какие-то знания, которыми можно поделиться.

1 Ответ

0 голосов
/ 14 января 2019

Документация для типа круговой диаграммы переменной ссылается на highcharts-more.js как требование.

Фактическое требование для этого типа диаграммы: modules/variable-pie.js. Использование этого дополнительного ресурса вместо этого должно исправить проблемы с «Запрошенный тип серии не существует» при экспорте.

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