From af0e22666574844b8a8d77e5b9fab54f140c36c0 Mon Sep 17 00:00:00 2001 From: Hugo Smith Date: Fri, 16 May 2025 10:40:51 +0800 Subject: [PATCH 1/3] Add buttons to graph to choose a view --- src/app/static/js/visualise.js | 78 ++++++++++++++++++++++---------- src/app/templates/base.html | 1 - src/app/templates/visualise.html | 13 +++++- 3 files changed, 65 insertions(+), 27 deletions(-) diff --git a/src/app/static/js/visualise.js b/src/app/static/js/visualise.js index 17d86c5..6a95e58 100644 --- a/src/app/static/js/visualise.js +++ b/src/app/static/js/visualise.js @@ -1,33 +1,61 @@ -document.addEventListener("DOMContentLoaded", function() { - fetch('/chart/unit_data') - .then(res => res.json()) - .then(data => { - new Chart(document.getElementById('unit_data'), { +document.addEventListener("DOMContentLoaded", () => { + const friendBtn = document.getElementById('friendPicks'); + const totalBtn = document.getElementById('totalPicks'); + const ctx = document.getElementById('unit_data').getContext('2d'); + let currentType = 'friend'; + let chart; + + function buildOrUpdate(data) { + const labels = data.labels; + const values = currentType === 'friend' + ? data.friend_count + : data.total_count; + const color = currentType === 'friend' + ? 'rgba(29, 71, 225, 1)' + : 'rgba(192, 75, 75, 1)'; + + if (chart) { + chart.data.labels = labels; + chart.data.datasets = [{ label: + currentType === 'friend' ? 'Friend Picks' : 'Total Picks', + data: values, + backgroundColor: color + }]; + chart.update(); + } else { + chart = new Chart(ctx, { type: 'bar', data: { - labels: data.labels, - datasets: [ - { - label: 'Friend Picks', - data: data.friend_count, - backgroundColor: 'rgba(29, 71, 225, 1)' - }, - { - label: 'Total Picks', - data: data.total_count, - backgroundColor: 'rgba(192, 75, 75, 1)' - } - ] + labels, + datasets: [{ + label: currentType === 'friend' ? 'Friend Picks' : 'Total Picks', + data: values, + backgroundColor: color + }] }, options: { indexAxis: 'y', - scales: { - x: { - beginAtZero: true - } - } + scales: { x: { beginAtZero: true } } } }); - }); -}); + } + } + + function fetchData() { + fetch('/chart/unit_data') + .then(res => res.json()) + .then(buildOrUpdate); + } + friendBtn.addEventListener('click', () => { + currentType = 'friend'; + fetchData(); + }); + + totalBtn.addEventListener('click', () => { + currentType = 'total'; + fetchData(); + }); + + fetchData(); +}); diff --git a/src/app/templates/base.html b/src/app/templates/base.html index e78683f..22399a6 100644 --- a/src/app/templates/base.html +++ b/src/app/templates/base.html @@ -14,7 +14,6 @@ - diff --git a/src/app/templates/visualise.html b/src/app/templates/visualise.html index 6dee12e..acd5166 100644 --- a/src/app/templates/visualise.html +++ b/src/app/templates/visualise.html @@ -3,7 +3,18 @@ {% block title %}Visualise{% endblock %} {% block content %} -
+
+ +
+ + +
From 5b2133272c314c195472c24aa376cbb12b4a64e8 Mon Sep 17 00:00:00 2001 From: Hugo Smith Date: Fri, 16 May 2025 10:51:14 +0800 Subject: [PATCH 2/3] Attempt to style buttons --- src/app/templates/visualise.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/templates/visualise.html b/src/app/templates/visualise.html index acd5166..f8daca8 100644 --- a/src/app/templates/visualise.html +++ b/src/app/templates/visualise.html @@ -3,7 +3,7 @@ {% block title %}Visualise{% endblock %} {% block content %} -
+
-
- + + +
+ +
-{% endblock %} +{% endblock %} \ No newline at end of file