FabulaVotes/static_files/vote_chart.js
trotFunky dc00e22dba vote_chart: Remove log of received datasets
Another debug print that I forgot for the release.
2024-07-23 21:51:59 +01:00

84 lines
2.1 KiB
JavaScript

// const names = ["Bystus", "Dory", "Fen", "Lucky", "Nico", "Peran", "trot"]
//
//
// let data = [];
// for (let i = 0; i < 7; i++) {
// data.push({
// parsing: true,
// label: names[i],
// data: Array.from(keys, () => Math.round(Math.random()*1.33))})
// }
async function main() {
const vote_response = await fetch(document.URL+"/votes");
if (!vote_response.ok) {
return;
}
const keys = ["Vérité 1", "Vérité 2", "Vérité 3", "Vérité 4", "Vérité 5", "Vérité 6", "Vérité 7"]
let datasets = []
try {
const vote_data = (await vote_response.json()).votes;
for (let player in vote_data) {
datasets.push({
parsing: true,
label: player,
data: vote_data[player],
})
}
} catch (error) {
console.error("Failed to parse vote data : \n\t" + error.message);
return;
}
const chart_canvas = document.getElementById("vote_chart")
let chart
function create_chart(keys, data) {
let main_axis;
let aspect_ratio;
if (window.innerWidth > window.innerHeight) {
main_axis = 'x'
aspect_ratio = 2
} else {
main_axis = 'y'
aspect_ratio = 0.5
}
if ( chart ) {
chart.destroy()
}
chart = new Chart(chart_canvas, {
type: 'bar',
data: {
labels: keys,
datasets: data,
},
options: {
aspectRatio: aspect_ratio,
indexAxis: main_axis,
grouped: true,
scales: {
x: {
stacked: true
},
y: {
stacked: true
}
}
}
})
}
function update_chart_ratio(_) {
create_chart(keys, datasets)
}
const orientation_query = matchMedia("screen and (orientation:portrait)");
orientation_query.onchange = update_chart_ratio
create_chart(keys, datasets)
}
main().then()