highcharts导出服务器-带有curl / POST的可变饼

时间:2019-03-03 00:20:40

标签: highcharts

我正在尝试使用highcharts导出服务器生成可变饼图(以及堆积图-稍后会详细介绍)。

我同时使用curl和带有JSON数据的POST请求。两者都有问题。在export.highcharts.com以及本地docker导出服务器上。本质上,所有图表配置都是根据highcharts网站进行的。

顺便说一句,“简单”示例图表在两种使用情况下都能很好地工作。

现在,这是curl命令:

curl -H "Content-Type: application/json" -X POST -d '{"infile": {"chart": {"type": "variablepie"}, "title": {"text": "Countriescomparedbypopulationdensityandtotalarea."}, "series": [{"minPointSize": 10, "innerSize": "20%", "zMin": 0, "name": "countries", "data": [{"name": "Spain", "y": 505, "z": 92}, {"name": "France", "y": 551, "z": 11}, {"name": "Poland", "y": 312, "z": 12}]}]}, "type": "svg", "resources": {"files": "highcharts.js,modules/exporting.js,modules/export-data.js,modules/variable-pie.js"}}' http://export.highcharts.com -o /tmp/highcharts_testchart.svg

具有上述curl命令的有效负载的POST返回400;否则,返回400。但是,服务器响应包含以下html代码段:

  

SyntaxError:意外令牌“       在解析时(/var/app/current/node_modules/highcharts-export-server/node_modules/body-parser/lib/types/json.js:83:15)       在/var/app/current/node_modules/highcharts-export-server/node_modules/body-parser/lib/read.js:116:18       在invokeCallback(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:262:16)       完成时(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:251:7)       在IncomingMessage.onEnd(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:307:7)       在emitNone(events.js:86:13)       在IncomingMessage.emit(events.js:185:7)       在endReadableNT(_stream_visible.js:974:12)       在_combinedTickCallback(内部/进程/next_tick.js:80:11)       在process._tickCallback(internal / process / next_tick.js:104:9)

有没有人设法获得饼图以使用导出服务器工作?有人对堆栈跟踪发表评论吗?

更新以下内容已得到修复(POST请求中的引号未通过)

最后,进入堆积图。在这里变得令人困惑。 curl命令:

curl -H "Content-Type: application/json" -X POST -d '{"infile": {"chart": {"type": "column"}, "title": {"text": "Stacked column chart"}, "xAxis": {"categories": ["Apples", "Oranges", "Pears", "Grapes", "Bananas"]}, "yAxis": {"min": 0, "title": {"text": "Total fruit consumption"}, "stackLabels": {"enabled": true, "style": {"fontWeight": "bold"}}}, "legend": {"align": "right", "x": -30, "verticalAlign": "top", "y": 25, "floating": true, "borderColor": "#CCC", "borderWidth": 1, "shadow": false}, "plotOptions": {"column": {"stacking": "normal", "dataLabels": {"enabled": true}}}, "series": [{"name": "John", "data": [5, 3, 4, 7, 2]}, {"name": "Jane", "data": [2, 2, 3, 2, 1]}, {"name": "Joe", "data": [3, 4, 4, 2, 5]}]}, "type": "svg", "resources": {"files": "highcharts.js,modules/exporting.js,modules/export-data.js"}}' http://export.highcharts.com -o /tmp/highcharts_testchart.svg

工作正常-并产生完美的图像。

但是OST(有效载荷相同)给出了上述堆栈跟踪。

有什么想法吗?有评论吗?

不胜感激。

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方案。在node-export-server Github上检查该线程:https://github.com/highcharts/node-export-server/issues/156。如您所见,缺少几个模块,需要手动添加它们。

1)在您的node-export-server存储库中找到 build.js 文件,并将variable-pie模块添加到该对象:

const cdnScriptsOptional = {
  '{{version}}/modules/sunburst.js': 1,
  '{{version}}/modules/xrange.js': 1,
  '{{version}}/modules/streamgraph.js': 1,
  '{{version}}/modules/tilemap.js': 1,
  '{{version}}/modules/histogram-bellcurve.js': 1,
  '{{version}}/modules/variable-pie.js': 1
};

2)重建服务器(请参见https://github.com/highcharts/node-export-server#setup-injecting-the-highcharts-dependency):

  • 要手动执行此操作,可以运行node build.js(在node-export-server文件夹中)

3)启动服务器:

highcharts-export-server --enableServer 1

4)运行此卷曲:

curl -H "Content-Type: application/json" -X POST -d '{"infile":{"chart": {"type": "variablepie"}, "title": {"text": "Title"}, "series": [{"minPointSize": 10, "innerSize": "20%", "zMin": 0, "name": "countries", "data": [{"name": "Spain", "y": 505, "z": 92}, {"name": "France", "y": 551, "z": 11}, {"name": "Poland", "y": 312, "z": 12}]}]}, "type": "svg"}' 127.0.0.1:7801 -o chart.svg



不幸的是,您不能强制 http://export.highcharts.com 添加variable-pie模块。目前,仅可以使用自己的node-export-server导出此系列类型。