2017-12-01 5 views
0

私は、データを取得するためにJSONSmoothieChartのデータをTimeSeriesの第2の値にスパムさせずに更新するにはどうすればよいですか?

function getJSON(_url, _type) { 
    var request = new XMLHttpRequest(); 
    request.open("GET", _url, true); 
    request.onload = function() { 
     if (request.status == 200 && request.readyState == 4) { 
      Callback(JSON.parse(request.responseText), _type); 
     } else 
      error("reach"); 
    }; 
    request.send(null); 
} 

とコールバック関数を使用して株取引のウェブサイトのいくつかの種類を構築したいです。

function Callback(_data, _type) { 

    switch (_type) { 
     case 1.1: 
      initAktien(_data); 
      break; 
     case 1.2: 
      updateAktien(_data); 
      break; 
    } 
} 

私はSmoothieChartを使用している株を視覚化するために。

あなたが迷っている場合で
var lines = []; 
var smoothie = new SmoothieChart({ 
    tooltip: true, millisPerPixel: 50, minValueScale: 0, 
    grid: {fillStyle: '#99d6ff', strokeStyle: '#6c7d82', verticalSections: 8, borderVisible: false}, 
    labels: {disabled: true, fontSize: 9}, minValue: 0, horizontalLines: [{color: '#000000', lineWidth: 1, value: 0}, {color: '#4d0f00', lineWidth: 2, value: 100}] 
}); 
smoothie.streamTo(document.getElementById("aktien-grafik"), 500); 

少しヘッドアップ:「Aktienは」株式を意味し、「preisは」価格を意味し、「anzahlVerfügbarは、」利用可能量を意味します。私はこのコードを他の人から手に入れました。私はそれを "修正"することになっています。それがドイツ語の部分的な理由です。

function initAktien(_data) { 
    var stocks = document.getElementById("aktien"); 
    var amount = document.getElementById("amount"); 

    for (var i = 0; i <= _data.length - 1; i++) { 
     var stockoption = document.createElement("option"); 
     stockoption.innerHTML = _data[i].name; 
     stocks.appendChild(stockoption); 
    } 

    for (var j = 1; j <= 5; j++) { 
     var amountoption = document.createElement("option"); 
     amountoption.innerHTML = j; 
     amount.appendChild(amountoption); 
    } 
} 

function updateAktien(_data) { 
    var select = document.getElementById("aktien").selectedIndex; 
    document.getElementById("kurs").innerHTML = _data[select].preis; 
    document.getElementById("anz").innerHTML = _data[select].anzahlVerfuegbar; 

    //spam is because of here 
    lines.push(new TimeSeries()); 
    lines[select].append(new Date().getTime(), _data[select].preis); 
    smoothie.addTimeSeries(lines[select], {lineWidth: 2, strokeStyle: "#000000"}); 
} 

私はちょうど良いグラフを描画することができますし、私もタイムスタンプとし、価格や時間を表示するオーバーレイを取得します。残念なことに、オーバーレイで価格をスパムするため、サイトがかなり遅くなります。オーバレイを削除しても問題は解決しません。なぜなら、価格はマークされたポイントのどこかでノンストップ に追加されるからです。私はその値をスパムすることなく、データの更新とチャートの描画を維持する方法を知らない。

答えて

0

私はそれが最良の解決策ではありませんが、動作します。やや冗長なコードです。

function initAktien(_data) { 
    var stocks = getID("aktien"); 
    var amount = getID("amount"); 

    for (var i = 0; i <= _data.length - 1; i++) { 
     var stockoption = document.createElement("option"); 
     stockoption.innerHTML = _data[i].name; 
     stocks.appendChild(stockoption); 

     lines.push(new TimeSeries()); 
     lines[i].append(new Date().getTime(), _data[i].preis.toFixed(2)); 
     smoothie.addTimeSeries(lines[i], {lineWidth: 2, strokeStyle: "#000000"}); 
    } 
} 

function updateAktien(_data) { 
    var select = getID("aktien").selectedIndex; 
    getID("kurs").innerHTML = _data[select].preis.toFixed(2); 
    getID("anz").innerHTML = _data[select].anzahlVerfuegbar; 

    //Grafik update 
    lines[select].append(new Date().getTime(), _data[select].preis.toFixed(2)); 
} 
関連する問題