2014-07-21 12 views
5

Używam c3.js i c3.css do tworzenia kilku wykresów na jednej stronie. Mam wiele wykresów i chcę aktualizować dane co 60 sekund, więc używam interwału ustawiania, uzyskuję zaktualizowane dane, a następnie ładuję je do wykresu, jednak umieszcza on wszystkie dane w ostatnio wykonanym wykresie. Próbowałem dodać bindto do danych, aby przejść do poprawnego wykresu, ale nadal ładuje się na dolny wykres. jak mogę to naprawić?c3 chart.load z wieloma wykresami

... 
<div id='chart1'></div> 
<div id='chart2'></div> 
... 
function update()//this function collects the new data in arrays cols and xrows 
... 
setInterval(function(){ 
    update(); 
    chart.unload(); 
    chart.load({bindto:'#chart1',columns:cols, xs:xrows}); 
},3000); 
+1

Nadal szukasz odpowiedzi? – yuvi

+0

jak udało ci się to zrobić? – Baig

+0

Wygląda na to, że nadpisuje zmienną 'chart', dlatego zawsze aktualizuje tylko ostatni wykres –

Odpowiedz

2

Za pokazanie danych aktualizacji atfirst

  • ukryć poprzednie DIV Danych
  • użycie CLEAR do czyszczenia danych
  • ponownie załadować div
0

Jeśli ktoś nadal chce zrobić to znalazłem rozwiązanie.

Podczas generowania każdego wykresu, deklaracja kończy:

}); }, chart = generate(); 

przypadku zmiany nazwy wykresu tak:

}); }, first_chart = generate(); 

Następnie można manipulować, że wykres tak:

first_chart.load ({ <some_stuff> }) 

Podaj każdą zmienną wykresu jako odrębną nazwę i możesz je wyraźnie edytować.