2016-08-02 6 views
0

ダイナミックに作成されたチャートのハイチャートデータをデータベースに保存し、そのデータをハイチャートに戻そうとしています。 、/、[1470009600000、-1]、[[1471219200000,0]、これは、この「[1470009600000,0]のような文字列を作成しますダイナミックに埋め込まれたハイチャートのデータとデータベースの格納

var chartPoints = ""; 

var series = chart.series; 

for(var i = 0; i < series.length; i++) { 
    var numberOfPoints = series[i].data.length;  //Get number of points 

    for(var n = 0, length = numberOfPoints; n < length; n++) { 
     chartPoints += '[' + series[i].points[n].x + ',' + series[i].points[n].y + '],'; 

    } 
    chartPoints += '/,'; 
} 

:私はこのような文字列を作成してデータベースにデータを格納するために、 1471219200000、-1]、/、 "x値は日付です。これはシリーズの間に "/"が付いた2つのシリーズです。 2つのシリーズにはそれぞれ2つのデータポイントがあります。すべてのデータポイントは、xとyの値を持ちます。これは、動作させるために、ポイント数とシリーズ数が少ない例です。

問題は、文字列の値をハイチャートに戻す方法がわかりません。私は動的にこのようなハイチャートにシリーズを追加することができます:

chart.addSeries({       
    name: "Test", 
    data: [ 
      [x, y], 
      [x, y] 
     ] 
}); 

しかし、私はこのような文字列でそれを行う方法がわかりません。私はいくつかのループでそれから値をプッシュするために、文字列の複数の次元を持つ配列を作成しようとしましたが、私はそれを正しく得ることができませんでした。これを行う最善の方法は何ですか?

+0

なぜネイティブJSONの代わりにスラッシュとデータを文字列として返すのですか? –

+0

どうすればいいのか教えてください – Koiski

+0

いくつかの基本的なjs関数を使ってデータを解析できますが、実際にはHighchartsには最適なフォーマットではありません。Sebastianは文字列の代わりにJSONを使用する方がはるかに優れていると述べました。 http://jsfiddle.net/y3quyg4n/1/ –

答えて

2

シリーズデータをjson文字列として保存し、それをオブジェクトに解析してデータパラメータに渡すことについて考えましたか?

var sData = JSON.stringify(chart.series[0].options.data); 

などのようにして、sDataを文字列として保存できます。次に行うhighchartsに戻ってロードするために:https://plnkr.co/edit/myGoss?p=previewsetData()を使用してデータを設定しますが、シリーズを作成したときにデータをロードすることもできます

var oData = JSON.parse(json_string_from_db); 

chart.addSeries({       
    name: "Test", 
    data: oData 
}); 

または

chart.series[0].setData(oData); 

私はplunkを作りました。

+0

動作しません... Uncaught TypeError:循環構造をJSONに変換 – Koiski

+0

上記の変更を試み、 'chart.series [0] .options.data'を使用してデータを取得してください。それをテストするために私が作った塊をチェックしてください。 –

関連する問題