trotFunky
8fd8ce8220
This was written for testing the chart before plugging in to the database, remove it now that is not useful anymore.
78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
|
|
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;
|
|
}
|
|
|
|
// Sort by label to maintain the same graph order, as it goes through a hash map in the backend.
|
|
datasets.sort((a, b) => a.label > b.label)
|
|
|
|
const chart_canvas = document.getElementById("vote_chart")
|
|
let chart
|
|
function create_chart(keys, data) {
|
|
let main_axis;
|
|
let aspect_ratio;
|
|
// TODO: Move to the event, to check and not re-create for no reason.
|
|
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()
|