グラフ作成にChart.js ( http://www.chartjs.org/docs/ ) を使用しています。
Ajax リクエストからデータを取得し、グラフをレスポンシブにする必要があります。
私の HTML コードでは、次のようにキャンバスを追加しました。
<div>
<canvas id="userscreated" class="plot" data-url="/stats/userscreated"></canvas>
</div>
そして、私のjavascript(JQuery)コードには次のものがあります:
var data2;
$.ajax({
url: $('#userscreated').data('url'),
async: true,
dataType: 'json',
type: "get",
}).done(function (data) {
data2 = data;
// Draw chart
var context = $('#userscreated').get(0).getContext("2d");
var wrapper = $('#userscreated').parent();
var width = $('#userscreated').attr('width', $(wrapper).width());
new Chart(context).Line(
{
labels: data.Dates,
datasets: [
{ fillColor: #404040, data: data.Users }
]
},
{ animation: false }
);
});
// Redraw the chart with the same data
$(window).resize(function () {
var context = $('#userscreated').get(0).getContext("2d");
var wrapper = $('#userscreated').parent();
var width = $('#userscreated').attr('width', $(wrapper).width());
new Chart(context).Line(
{
labels: data2.Dates,
datasets: [
{ fillColor: #404040, data: data2.Users }
]
},
{ animation: false }
);
});
問題
- ウィンドウのサイズ変更時にグラフのサイズが変更されていません。
- これを行うためのより良いコードはありますか? 私は多くのコードを繰り返していると思います。
- Google では描画が高速です。Firefox では、しばらくハングすることがあります。私のコードに何か問題がありますか?
- リクエストは非同期にする必要がありますか?