Flot を使用して Rails 3.2.11 アプリを作成しています。Prawn を使用して Flot チャートを PDF にレンダリングしたいと考えています。私の Flot チャートはブラウザで正常に表示されます。エビのPDFをうまく作成できます(ただし、チャート画像はまだありません)。
Flot キャンバス プラグインを使用して軸などをキャンバスにレンダリングしたいので、.getCanvas()および.toDataURL()メソッドを使用して画像データをサーバーに Ajax するときにそれらが含まれるようにしますが、見えませんそれを機能させるために。
jquery.flot.min.js 0.8.0 と jquery.flot.canvas.min.js を使用しています (バージョンは示されていません)。Chrome コンソールで、両方が読み込まれていることがわかります。
私のCoffeescriptは次のようになります。
temp_plot = $.plot $("#barchart"), [
data: $("#barchart").data("bardata")
bars:
show: true
barWidth: (365/12)*24*60*60*1000*0.8
align: 'center'
],
xaxis:
mode: "time"
timeformat: "%b"
tickSize: [1, "month"]
yaxis:
position: 'right'
labelWidth: '40'
reserveSpace: true
canvas: true
barchart_canvas = temp_plot.getCanvas()
Ajax ペイロードを見ることができます。実際には、軸などを除いた Flot チャート キャンバスです。アドバイスをいただければ幸いです。ありがとう!
さらに明確にするために、Javascript としてのコードは次のようになります。
var barchart_canvas, temp_plot;
temp_plot = $.plot($("#barchart"), [
{
data: $("#barchart").data("bardata"),
bars: {
show: true,
barWidth: (365 / 12) * 24 * 60 * 60 * 1000 * 0.8,
align: 'center'
}
}
], {
xaxis: {
mode: "time",
timeformat: "%b",
tickSize: [1, "month"]
},
yaxis: {
position: 'right',
labelWidth: '40',
reserveSpace: true
},
canvas: true
});
barchart_canvas = temp_plot.getCanvas();
更新 - 成功
Flot を 0.8.1 に更新し、0.8.1 .zip アーカイブに含まれていた jquery.flot.canvas.js ファイルを含めました。(jquery.flot.js 0.8.1 で Flot 0.8.0 のプラグインを使用すると、奇妙なレンダリング動作が発生していたので、注意してください。)
これで、軸がキャンバスにレンダリングされます。すごい!フロットの神々に感謝します!