Autor Zpráva
quatzael
Profil
Už jsem řešil nefungující syntaxi ve vedlejším vlákně: V ofiko dokumentaci je chybná syntaxe, zřejmě chyba u "=>"

Teď už je syntaxe ok, ale funkce addData() nedělá co má:
 var chart = new Chart(document.getElementById("chartjs-results"),{
 "type":"line",
 "data":{
  "labels":["","",""],
  "datasets":[{"label":"Betting Results (EUR)","data":[1,2,3],
  "fill":false,"borderColor":"rgb(75, 192, 192)","lineTension":0.1}]},
  "options":{}});
  
  function addData(chart, label, data) {
    chart.data.labels.push(label);
    chart.data.datasets.forEach(function(dataset) {  dataset.data.push(data);  });  // problém je tady!!!
    chart.update();
}   

addData(chart, ["","",""], [4,5,6]);   
   

Vypadá to, že místo toho, aby data v chartu upravila na: "data":[1,2,3,4,5,6],
tak tam vkládá další pole: "data":[1,2,3,[4,5,6]]..

Nevíte někdo prosím jak by to mělo být správně?
Keeehi
Profil
Místo push má být concat.

  function addData(chart, label, data) {
    chart.data.labels.concat(label);
    chart.data.datasets.forEach(function(dataset) {  dataset.data.concat(data);  });
    chart.update();
} 
quatzael
Profil
Keeehi:
To concat taky nefunguje. U toho labels ten push normálně fungoval.. Jen ne u toho dataset.. Tam možná má být concat, ale celý to musí být postavený jinak..
TomášK.
Profil *
Dokumentace je správně. I minule byla správně. A skoro vždycky bude správně. Je dobré začit chybu hledat ve svém kódu před tím než začneš tvrdit, že něco jiný má něco špatně. Nejen ze slušnosti, ale i i prakticky - tu knihovnu/dokumentaci používá spoustu dalších lidí a zřejmě jim takto funguje.

Pokud addData voláš s polem [4,5,6] a dostaneš "data":[1,2,3,[4,5,6]] místo "data":[1,2,3,4,5,6], pak ta funkce patrně očekává jako argument element toho pole a ne celé pole. A když tam chceš pole, musíš si to upravit, na což se budou hodit funkce pro práci s polem (push, concat). Zjisti, co dělají, a pak by mělo být jednoduché i vymyslet, jak to upravit.
quatzael
Profil
TomášK.:
No v tý původní funkci to hlásilo chybnou syntaxi, nic jsem s tím nedělal, jenom jsem to zkopíroval, tak jak to bylo. Neřeknu kdyby to bylo něco jako "objekt není definován", ale takhle opravdu nevím jak bych to měl implementovat správně..

Máš ale pravdu, že ten řádek:

chart.data.datasets.forEach(function(dataset) {  dataset.data.concat(data);  });

jsem napsal vlastně já, takže je teď chyba u mě a není to přímo z tý jejich dokumentace.

Každopádně to teď nedělá to co má..

Jen jsem to totiž upravil podle odkazu, který mi dal pcmanik. Z logiky věci by to mělo spíš takhle:

data.forEach(function(dataset) {  chart.data.datasets.data.push(dataset);  });

ale to nefungovalo..

Změnil jsem to celé na:

 function addData(chart, label, data) {
    chart.data.labels.push(label);
    data.forEach(function(dataset) {
        chart.data.datasets[0].data.push(dataset);
    });
    chart.update();
}   
  

a už to vypadá, že to funguje.. jen se ten graf nějak nedokresluje úplně do konce..

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: