From 1e8d97e6d3642bf1893382eec43b29617af89d75 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Thu, 17 Mar 2022 16:52:19 +0100 Subject: [PATCH] adding median --- docs/FreeBedsChartView.js | 8 ++++++++ docs/Utils.js | 9 +++++++++ docs/intensivstationen.html | 1 + docs/intensivstationen.js | 19 +++++++++++++++++-- src/help.txt | 4 ++-- 5 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 docs/Utils.js diff --git a/docs/FreeBedsChartView.js b/docs/FreeBedsChartView.js index b5a3becb8aa..4ad0fc95cbc 100644 --- a/docs/FreeBedsChartView.js +++ b/docs/FreeBedsChartView.js @@ -57,6 +57,14 @@ class FreeBedsChartView { yAxisKey: 'free_beds_divided_by_all_beds_in_percent' }, backgroundColor: 'rgba(0, 0, 150, 1)' + }, + { + label: 'Median des Anteils freier Betten', + data: data, + parsing: { + yAxisKey: 'median_free_beds_in_percent' + }, + backgroundColor: 'rgba(0, 150, 150, 1)' } ] }; diff --git a/docs/Utils.js b/docs/Utils.js new file mode 100644 index 00000000000..a1acab191aa --- /dev/null +++ b/docs/Utils.js @@ -0,0 +1,9 @@ +class Utils { + + // adapted from https://www.w3resource.com/javascript-exercises/fundamental/javascript-fundamental-exercise-88.php + static median(arr) { + const mid = Math.floor(arr.length / 2); + const nums = [...arr].sort((a, b) => a - b); + return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2; + } +} diff --git a/docs/intensivstationen.html b/docs/intensivstationen.html index b1629303881..5252de1e7d6 100644 --- a/docs/intensivstationen.html +++ b/docs/intensivstationen.html @@ -9,6 +9,7 @@ + diff --git a/docs/intensivstationen.js b/docs/intensivstationen.js index 1cc0aece53a..11ff6378c84 100644 --- a/docs/intensivstationen.js +++ b/docs/intensivstationen.js @@ -16,12 +16,18 @@ function displayFreeBedsChart({ freeBedsChartView, kreisText, kreisValue }) { .then(json => freeBedsChartView.displayChart( { - data: get_free_beds_divided_by_all_beds_in_percent(json.data), + data: getDataDicts(json.data), title: kreisText })); } -function get_free_beds_divided_by_all_beds_in_percent(data) { +function getDataDicts(data) { + const dataDicts = get_free_beds_divided_by_all_beds_in_percent_dataDicts(data); + add_median_free_beds_in_percent(dataDicts); + return dataDicts; +} + +function get_free_beds_divided_by_all_beds_in_percent_dataDicts(data) { return data.map(({ date, betten_frei, betten_belegt }) => ( { @@ -30,3 +36,12 @@ function get_free_beds_divided_by_all_beds_in_percent(data) { } )); } + +function add_median_free_beds_in_percent(dataDicts) { + const median_free_beds_in_percent = + Utils.median( + dataDicts.map(dataDict => dataDict.free_beds_divided_by_all_beds_in_percent)); + for (const dataDict of dataDicts) { + dataDict["median_free_beds_in_percent"] = median_free_beds_in_percent; + } +} \ No newline at end of file diff --git a/src/help.txt b/src/help.txt index cb650c20382..93513f7ef22 100644 --- a/src/help.txt +++ b/src/help.txt @@ -47,8 +47,8 @@ man 5 fcrontab fcrontab -e fcrontab -l -# each day at 14:00 Uhr -00 14 * * * /home/frankknoll/Dokumente/Corona/projects/HowBadIsMyBatch-pages/src/intensivstationen/intensivstationen.sh +# each day at 13:30 Uhr +30 13 * * * /home/frankknoll/Dokumente/Corona/projects/HowBadIsMyBatch-pages/src/intensivstationen/intensivstationen.sh systemctl status fcron tail -f /var/log/syslog