Diskuze: Django - grafy a javascript
Zobrazeno 6 zpráv z 6.
Tak práveže so žiadnou takouto knižnicou nemám skúsenosti a takto si posielam tie grafy do templatu, graf som priložil v prílohe, a mám toho celkom dosť, nerád by som to celé prerábal a pod. Takže moja otázka spočíva len v tom či som nejako schopný takýto graf spracovať v JS, zobraziť si ho kľudne môžem aj cez window.alert to je už jedno, len spôsobom {{ nejaky_list }} to uloží pekne v js, aj viem s tým pracovať, ale {{moj_graf}} to padá. Ak sa to týmto spôsobom ako si predstavujem nebude dať, tak budem musieť zbytočne duplikovať 3x veľa kódu.
Data do js je nejlepsi posilat ve formatu text/json nebo text/csv
<script>
var x, y, z, yz;
x = 'a;b;c'.split(';'); // simulace str csv to js array, zrovna na spravny csv format bys musel pridat nejakou knihovnu
alert(x.join(', '))
y = {x:1, y:2, z:3}; // js array 1
z = [1, 2, 3]; // js array 2
yz = {x:1, y:[1, 2, 3], z:{x:1, y:2, z:3}}; // aray pak muzes ruzne kombinovat
var json, obj;
json = '{"result":true, "count":42}';
obj = JSON.parse(json); // convert str json to js array
</script> <!-- vzdy musis mit tag script ukonceny! -->
No, co se tyce problemu tech grafu, jak pise kolega, je treba to rozdelit na
jednotlive grafy a pomoci javascriptu a tlacitek prepinat, css vlastnost
display. Neco takoveho...
google = js switch visible image example
<style>
#xxx div.hide {display:none;}
#xxx div.show {display:block;}
</style>
<div id=xxx>
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<input type=button value=1 onclick="myShow(this)">
<input type=button value=2 onclick="myShow(this)">
<input type=button value=3 onclick="myShow(this)">
<script>
function myShow(el)
{
var items = document.getElementById("xxx").getElementsByTagName("DIV").
// hide all
for (i=0; i<items.length;i++)
{ items[i].className = 'hide'; }
// show one
i = (int) el.value;
items[i].className = 'show';
}
</script>
https://jsfiddle.net/7e62m5st/
Udelal jsem tam 2-3 zmeny.
1. Script do policka script.
2. za getElementsByTagName("DIV"). nema byt tecka, ale strednik nebo nic
3.
i = (int) el.value;
i = el.value * 1 - 1; // vypada to, ze fiddle si s int neporadi, je to prilis moderni
Zobrazeno 6 zpráv z 6.