gpt4 book ai didi

用于导出服务器的 Highcharts 数据标签格式化程序

转载 作者:行者123 更新时间:2023-12-05 07:57:29 24 4
gpt4 key购买 nike

我的导出服务器已启动并正在运行,用于在服务器上生成所有图表。我遇到的一个问题是数据标签。如果我使用格式,它工作正常,但我需要格式化程序,它似乎没有被调用。这是我的选项的相关部分:

 dataLabels: {
enabled: true,
color: '#606060',
align: 'right',
//format:'{point.y:.0f}',
formatter:function(){

var val = this.y;

return val / 1000000 + 'M';

},

由于该值刚刚正常显示,因此似乎没有调用此函数。当我在客户端上使用这些确切的选项时,它工作正常。这不可能吗?

更新:我有自己的导出服务器 (highcharts-converter.js),因为我在服务器上用 phantomjs 做这一切。我所做的是从另一个服务获取数据,然后像在客户端上一样构建 infile。我遇到的问题是 1. 在 infile 上执行 JSON.stringify 摆脱了格式化程序功能。 2. 如果我创建的函数字符串也不起作用,因为我必须为 highcharts phantomjs 调用 web 服务。这意味着配置会自动转换为 JSON,当转换器执行 JSON.parse 时,函数仍然是字符串。不确定我是否需要更改 highcharts-convert.js 以某种方式将它们转回函数,但无法弄清楚如何并且不确定如何调试该文件,因为它位于一个单独的进程(phantomjs 子进程)上。已经尝试了几乎所有我能想到的方法来解决这个问题,但到目前为止还没有成功。

还有:因为函数是一个字符串 highcharts 抛出这个错误:TypeError: 'undefined' 不是函数(正在评估 'axis.labelFormatter.call')

最佳答案

我找到了一个解决方案,但不确定它是否是最好的。我调用 json.stringify 然后覆盖它。然后我将该函数转换为一个字符串,这样当它在 post 调用中发送时就不会被删除。然后在 highcharts-convert.js 中我将它转回一个函数。

抱歉这么久才回来。已经有一段时间了,但我相信就是这样。为了字符串化,我这样做了:

function toJSONWithFuncs(obj) {
Object.prototype.toJSON = function() {
var sobj = {}, i;
for (i in this)
if (this.hasOwnProperty(i))
sobj[i] = typeof this[i] == 'function' ?
this[i].toString() : this[i];

return sobj;
};

var str = JSON.stringify(obj);

delete Object.prototype.toJSON;

return str;

然后在 highcharts-convert.createChart 中,我在 page.open 之前执行此操作

input = params.infile;
input = input.replace(/:"function/g,':function');
input = input.replace(/(}\|")/g,'}');

关于用于导出服务器的 Highcharts 数据标签格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com