From 82a78b99b6329d0d6e90700a3bd7e1b3aec56576 Mon Sep 17 00:00:00 2001 From: Mitja Stachowiak Date: Mon, 1 Apr 2024 03:43:20 +0200 Subject: [PATCH] =?UTF-8?q?FetchText:=20Support=20f=C3=BCr=20einfache=20Ab?= =?UTF-8?q?stimmungen=20mit=20Ja/Nein/Enthaltung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/fetchText.js | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/js/fetchText.js b/js/fetchText.js index a3ba2fd..2d974cc 100644 --- a/js/fetchText.js +++ b/js/fetchText.js @@ -34,6 +34,11 @@ window.showAcceptance = function (arr) { if (arr == chartAcceptanceData) return; chartAcceptanceData = arr; chartAcceptance.series[0].setData(arr); + if (arr.length == 10) + chartAcceptance.xAxis[0].update({categories: ['-5', '-4', '-3', '-2', '-1', '+1', '+2', '+3', '+4', '+5']}); + else if (arr.length == 3) + chartAcceptance.xAxis[0].update({categories: ['Nein', 'Enthaltung', 'Ja']}); + else throw 'Unknown vote system!'; } else if (document.getElementById('Acceptance')) document.getElementById('Acceptance').style.display = 'none'; }; @@ -185,23 +190,30 @@ function fetchText (win) { function interpretAcceptance (str) { let arr = str.split(','); - if (arr.length != 10) return null; let accepted = false; - let nPositiv = 0; let average = 0; - let sum = 0; - for (let j = 0; j < 10; j++) { - arr[j] = parseInt(arr[j]); - sum += arr[j]; - if (j < 5) { - average += arr[j] * (j-5); - } else { - nPositiv += arr[j]; - average += arr[j] * (j-4); + if (arr.length == 10) { + let nPositiv = 0; + let sum = 0; + for (let j = 0; j < 10; j++) { + arr[j] = parseInt(arr[j]); + sum += arr[j]; + if (j < 5) { + average += arr[j] * (j-5); + } else { + nPositiv += arr[j]; + average += arr[j] * (j-4); + } } - } - average /= sum; - accepted = (average > 0) && (nPositiv >= sum / 3 * 2); + average /= sum; + accepted = (average > 0) && (nPositiv >= sum / 3 * 2); + } else if (arr.length == 3) { + arr[0] = parseInt(arr[0]); + arr[1] = parseInt(arr[1]); + arr[2] = parseInt(arr[2]); + accepted = arr[0] < arr[2]; + average = (arr[2] - arr[0]) / (arr[0]+arr[1]+arr[2]); + } else return; return { arr: arr, average: average,