2014-04-21 26 views
3

我使用highcharts-convert.js在服務器端創建PDF圖表。我想爲列圖設置dataLabel格式器(http://api.highcharts.com/highcharts#plotOptions.column.dataLabels)。由於這是一個函數,因此我無法將它寫入輸出json文件,該文件是highcharts-convert.js的輸入。所以,我想我需要把它放在我的callback.js並調用它像:使用highcharts-convert.js設置格式化程序回調

highcharts-convert.js -infile infile.js -OUTFILE outfile.pdf -width 1000 -callback callback.js

但我無法在callback.js中設置格式化函數。我嘗試這樣做:

function(chart) { 
    var labelFormatter = function(p) { 
     if (this.y == 0) { 
      return ''; 
     } 
     else { 
      return this.y 
     } 
    }; 

    chart.series.dataLabels.formatter = labelFormatter; 
} 

但是,這給了我這個錯誤:

TypeError: 'undefined' is not an object (evaluating 'chart.series.dataLabels.formatter = labelFormatter') 

我試圖把格式化函數的回調的定義之外,但highcharts-convert.js不會接受。如何爲highcharts-convert.js設置dataLabel格式器回調?

回答

3

那麼,Highcharts導出服務器的輸入文件不一定是真正的JSON。一般來說,支持JSON中的函數。以此爲例:

{"series": [{"data": [29.9, 71.5, 106.4], "dataLabels": { "enabled": true, "formatter":function(p) {if (this.y == 0) {return '';} else {return this.y+'a';}}}}]} 
+0

這並沒有工作,要麼;我得到了「TypeError:'undefined'不是一個函數(評估'd.formatter.call(l,d)')」。是否使用highcharts-convert.js爲你工作?見上面我的編輯。 –

+0

對不起,我以前的更新有一個語法錯誤。不要將函數體包裝在引號中,這一點很重要。這是一個可以接受的答案,謝謝。 –

0

如果您在服務器端使用回調函數,請使用此函數。

function (chart) { 

     options = chart.options; 



     var labelFormatter = function() { 
     if (this.y == 0) return ''; 
     else return this.y; 
     } 

     options.yAxis[0].labels = new Object(); 
     options.yAxis[0].labels.formatter = labelFormatter; 
     chart = new Highcharts.Chart(options); 

     chart.redraw(); 

}

相關問題