adding slider4intensiveCareCapacities

This commit is contained in:
frankknoll
2022-04-01 10:00:34 +02:00
parent 40c6447ddb
commit 1be04b9022
3 changed files with 33 additions and 10 deletions

View File

@@ -20,6 +20,12 @@ class IntensiveCareCapacitiesChartView {
}); });
} }
setData(data) {
this.#chart.config.data.datasets[0].data = data;
this.#chart.config.data.datasets[1].data = data;
this.#chart.update();
}
#getData(data) { #getData(data) {
return { return {
datasets: [ datasets: [

View File

@@ -49,6 +49,7 @@
displayIntensiveCareCapacitiesChart( displayIntensiveCareCapacitiesChart(
{ {
intensiveCareCapacitiesChartView: intensiveCareCapacitiesChartView, intensiveCareCapacitiesChartView: intensiveCareCapacitiesChartView,
sliderElement: document.getElementById('slider4intensiveCareCapacities'),
headingElement: document.querySelector(".heading"), headingElement: document.querySelector(".heading"),
populationElement: document.querySelector(".population"), populationElement: document.querySelector(".population"),
kreisText: selectedOption.text, kreisText: selectedOption.text,
@@ -536,6 +537,7 @@
<h3 class="heading"></h3> <h3 class="heading"></h3>
Einwohnerzahl: <span class="population"></span> Einwohnerzahl: <span class="population"></span>
<canvas id="intensiveCareCapacities"></canvas> <canvas id="intensiveCareCapacities"></canvas>
<div id="slider4intensiveCareCapacities"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,5 @@
function displayIntensiveCareCapacitiesChart( function displayIntensiveCareCapacitiesChart(
{ intensiveCareCapacitiesChartView, headingElement, populationElement, kreisText, kreisValue }) { { intensiveCareCapacitiesChartView, sliderElement, headingElement, populationElement, kreisText, kreisValue }) {
headingElement.textContent = kreisText headingElement.textContent = kreisText
fetch(`data/intensivstationen/intensivstationen-${kreisValue}.json`) fetch(`data/intensivstationen/intensivstationen-${kreisValue}.json`)
@@ -7,6 +7,16 @@ function displayIntensiveCareCapacitiesChart(
.then(json => { .then(json => {
populationElement.textContent = new Intl.NumberFormat().format(json.population); populationElement.textContent = new Intl.NumberFormat().format(json.population);
intensiveCareCapacitiesChartView.displayChart({ data: json.data, title: kreisText }); intensiveCareCapacitiesChartView.displayChart({ data: json.data, title: kreisText });
createSlider(
{
sliderElement: sliderElement,
range: {
min: 0,
max: json.data.length - 1
},
orientation: 'horizontal',
onUpdate: ([start, end]) => intensiveCareCapacitiesChartView.setData(json.data.slice(start, end + 1))
});
}); });
} }
@@ -56,16 +66,19 @@ function _displayMedianOfFreeBedsByKreisChart(canvas, sliderElement, data) {
const medianOfFreeBedsByKreisChartView = new MedianOfFreeBedsByKreisChartView(canvas); const medianOfFreeBedsByKreisChartView = new MedianOfFreeBedsByKreisChartView(canvas);
medianOfFreeBedsByKreisChartView.displayChart(data); medianOfFreeBedsByKreisChartView.displayChart(data);
createSlider( createSlider(
sliderElement,
{ {
sliderElement: sliderElement,
range: {
min: 0, min: 0,
max: data.length - 1 max: data.length - 1
}, },
canvas.style.height, orientation: 'vertical',
([start, end]) => medianOfFreeBedsByKreisChartView.setData(data.slice(start, end + 1))); height: canvas.style.height,
onUpdate: ([start, end]) => medianOfFreeBedsByKreisChartView.setData(data.slice(start, end + 1))
});
} }
function createSlider(sliderElement, range, height, onUpdate) { function createSlider({ sliderElement, range, orientation, height = null, onUpdate }) {
noUiSlider.create( noUiSlider.create(
sliderElement, sliderElement,
{ {
@@ -73,8 +86,10 @@ function createSlider(sliderElement, range, height, onUpdate) {
connect: true, connect: true,
range: range, range: range,
step: 1, step: 1,
orientation: 'vertical' orientation: orientation
}); });
sliderElement.noUiSlider.on('update', onUpdate); sliderElement.noUiSlider.on('update', onUpdate);
if (height != null) {
sliderElement.style.height = height; sliderElement.style.height = height;
}
} }