【问题标题】:Highcharts Export Service Gantt Chart not workingHighcharts 导出服务甘特图不起作用
【发布时间】:2019-11-05 21:13:05
【问题描述】:

尝试使用 highcharts-export-server 在服务器端渲染甘特图,但根本无法获取要渲染的系列数据。

根据the docs,我尝试运行导出via commandlineas a node module,但我总是得到一个显示标题、副标题和系列名称的空图,但没有实际数据。

Failed Gantt Render

所有基本的折线图示例配置都有效,我可以通过浏览器使用Highcharts.ganttChart 方法渲染图表,所以我相信它特定于导出服务器的甘特图配置,或与毫秒相关日期转换(如您在屏幕截图中所见,X 轴不是呈现为日期,而是呈现为普通数字)。根据其他线程的建议,我在node_modules/highcharts-export-server 中运行build.js,全局用于命令行尝试,本地项目用于节点模块尝试,确保同时启用 gantt 和 moment 库,但这也无济于事。

包括下面我的选项 json。我无法找到专门用于导出服务器的甘特图配置示例,所以这是我最好的插入它们的尝试:

{
  "title": {
    "text": "Gantt PoC"
  },
  "subtitle": {
    "text": "Timeline"
  },
  "series": [
    {
      "name": "Gantt Demo",
      "type": "gantt",
      "data": [
        {
          "name": "Demo Task 1",
          "id": "demo_task_1",
          "start": 1564113600000,
          "end": 1564718400000
        },
        {
          "name": "Demo Task 2",
          "id": "demo_task_2",
          "start": 1564113600000,
          "end": 1564718400000
        }
      ]
    }
  ],
  "xAxis": {
    "min": 1563681600000,
    "max": 1571803200000
  }
}

如果我的配置有任何明显的问题,如果我错过了准备环境的任何关键步骤,或者你有什么想法可以让我排除故障,请告诉我。谢谢!

【问题讨论】:

  • 首先,在安装节点导出服务器时,您可以选择包含甘特模块。您需要它来导出甘特图。其次,您需要使用正确的构造函数。在甘特图的情况下,它是甘特图。尝试使用以下命令:highcharts-export-server --infile gantt.json --outfile gantt.png --type png --constr ganttChart,其中 gantt.json 是正确的 JSON 文件,其中包含所需图表的选项。
  • @pawel_d 感谢您的回复!所以,一定要确保在安装过程中添加甘特图库。对于--constr arg,我已经看到,在文档上它特别声明它仅适用于“图表”或“股票图表”,但肯定会试一试。另外,您是否碰巧有 gantt.json 的示例,或者验证我帖子中包含的示例是否准确?我搜索了高低,找不到用于导出流程的甘特图配置的任何具体参考。
  • 对于 gantt.json 文件,这里有一个最简单的例子:jsfiddle.net/BlackLabel/gk96b41f 从中您可以获取 options 对象并将其用作 JSON 来生成最简单的甘特图。至于您的 JSON 对象,它当然也是正确的(我能够使用它生成正确的图像)。

标签: node.js highcharts gantt-chart


【解决方案1】:

我也尝试使用甘特图生成图像,只是我尝试了您建议完美运行的构造函数,谢谢。

highcharts-export-server --infile gantt.json --outfile gantt.png --type png --constr ganttChart

其实我也试过HTTP Server,效果很好。谢谢@pawel_d

const fs = require("fs");
const chartExporter = require('highcharts-export-server');
chartExporter.initPool();
const chartDetails = {
  type: "png",
  constr : 'ganttChart',
  options: {
    series: [{
      data: [{
        start: 1,
        end: 10
      }]
    }]
  }
};
chartExporter.export(chartDetails, (err, res) => {
  // Get the image data (base64)
  let imageb64 = res.data;
  // Filename of the output
  let outputFile = "bar.png";
  // Save the image to file
  fs.writeFileSync(outputFile, imageb64, "base64", function(err) {
    if (err) console.log(err);
  });
  console.log("Saved image!");
  chartExporter.killPool();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多