Witam
Walczę już jakiś czas i nie potrafię poradzić sobie z takim problemem.
Mam plik html który rysuje wykres, pobiera dane wygenerowane plikiem dane.php i rysuje wykres.
<!doctype html>
<!--
Most basic sample showing the c3js sample in it's most basic form.
-->
<link href="assets/css/c3.min.css" rel="stylesheet" type="text/css">
<!-- Load the javascript libraries -->
<!-- Initialize and draw the chart -->
<script type="text/javascript">
var chart = c3.generate({
bindto: '#chart',
data: { x: 'x', url: 'dane.php'},
size: { height: 566},
point:{ show: false },
grid: {
y: {
lines: [
{value: 80, text: '80 Stopni C', position: 'middle'},
{value: 0, text: '0 Stopni C', position: 'middle'}
]
}
},
axis:
{
x: {label: { text: 'Czas zapisu'}, type: 'category', tick: { rotate: 15, multiline: false,culling: { max: 25},fit: true }},
y: { label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]},
//y2: { show: true, label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]}
}
});
Chciałbym teraz zrobić aby dane były dynamicznie odświeżane co pewien czas.
Zmodyfikowałem kod tak.
<!doctype html>
<!--
Most basic sample showing the c3js sample in it's most basic form.
-->
<link href="assets/css/c3.min.css" rel="stylesheet" type="text/css">
// tworzymy zmienna
var object = null;
try
{
object = new XMLHttpRequest();
}
catch(e)
{
try
{
object = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e2)
{
try
{
object = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e3)
{
alert("Niestety Twoja przeglądarka nie obsługuje AJAXA");
}
}
}
function getData(dataSource, divID)
{
if (object.readyState==4 || object.readyState==0)
{
var obj = document.getElementById(divID);
// czyta z pliku lub wykonuje skrypt
object.open("POST", dataSource);
object.onreadystatechange = function()
{
if (object.readyState == 4 && object.status == 200)
obj.innerHTML= object.responseText;
}
object.send(null);
}
}
// w ponizszej funkcji wywolujemy funkcje getData z odpowiednimi parametrami
// oraz wywolujemy ja sama rekurencyjnie po co okreslony czas (w naszym wypadku 1000 ms)
function odswiezaj()
{
getData('dane.php','mojDIVIK');
setTimeout("odswiezaj()", 1000);
}
<div id="mojDIVIK"></div><!-- tutaj pokazują się dane z pliku dane.php
<!-- Load the javascript libraries -->
<!-- Initialize and draw the chart -->
<script type="text/javascript">
var chart = c3.generate({
bindto: '#chart',
data: { x: 'x', url: 'dane.php'},
size: { height: 566},
point:{ show: false },
grid: {
y: {
lines: [
{value: 80, text: '80 Stopni C', position: 'middle'},
{value: 0, text: '0 Stopni C', position: 'middle'}
]
}
},
axis:
{
x: {label: { text: 'Czas zapisu'}, type: 'category', tick: { rotate: 15, multiline: false,culling: { max: 25},fit: true }},
y: { label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]},
//y2: { show: true, label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]}
}
});
odswiezaj();
Niestety nie potrafię tego połączyć na stronie wyświetla się wykres a pod spodem dane.
Wydaje mi się że trzeba by jakoś połączyć ten kawałem kodu
var chart = c3.generate({
bindto: '#chart',
data: { x: 'x', url: '
<div id="mojDIVIK"></div>'},
size: { height: 566},
point:{ show: false },
Proszę o jakąś wskazówkę która pomogła by mi rozwiązać problem.