making symptoms for scatter chart axes selectable

This commit is contained in:
frankknoll
2023-11-09 11:29:38 +01:00
parent 15786071c8
commit eb69b5d553
3 changed files with 26383 additions and 12 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,13 @@
class PageInitializer { class PageInitializer {
static #symptomVsSymptomChartView; static #symptomVsSymptomChartView;
static #symptomX = 'Immunosuppression';
static #symptomY = 'Immunoglobulin therapy';
static initializePage({ symptom, vaccine, symptomVsSymptomChartViewElement }) { static initializePage({ symptom, vaccine, symptomVsSymptomChart }) {
PageInitializer.#configureSymptom(symptom); PageInitializer.#configureSymptom(symptom);
PageInitializer.#configureVaccine(vaccine); PageInitializer.#configureVaccine(vaccine);
PageInitializer.#symptomVsSymptomChartView = new SymptomVsSymptomChartView(symptomVsSymptomChartViewElement); PageInitializer.#configureSymptomVsSymptomChart(symptomVsSymptomChart);
PageInitializer.#symptomVsSymptomChartView.loadAndDisplayChart('Immunosuppression', 'Immunoglobulin therapy');
} }
static #configureSymptom({ symptomSelectElement, prrByVaccineTableElement, downloadPrrByVaccineTableButton }) { static #configureSymptom({ symptomSelectElement, prrByVaccineTableElement, downloadPrrByVaccineTableButton }) {
@@ -29,6 +30,29 @@ class PageInitializer {
}); });
} }
static #configureSymptomVsSymptomChart({ symptomSelectXElement, symptomSelectYElement, symptomVsSymptomChartViewElement }) {
PageInitializer.#symptomVsSymptomChartView = new SymptomVsSymptomChartView(symptomVsSymptomChartViewElement);
PageInitializer.#initializeSelectElement(
{
selectElement: symptomSelectXElement,
onValueSelected: symptomX => {
PageInitializer.#symptomX = symptomX;
PageInitializer.#symptomVsSymptomChartView.loadAndDisplayChart(PageInitializer.#symptomX, PageInitializer.#symptomY);
},
minimumInputLength: 0
});
PageInitializer.#initializeSelectElement(
{
selectElement: symptomSelectYElement,
onValueSelected: symptomY => {
PageInitializer.#symptomY = symptomY;
PageInitializer.#symptomVsSymptomChartView.loadAndDisplayChart(PageInitializer.#symptomX, PageInitializer.#symptomY);
},
minimumInputLength: 0
});
PageInitializer.#symptomVsSymptomChartView.loadAndDisplayChart(PageInitializer.#symptomX, PageInitializer.#symptomY);
}
static #initializeSelectElement({ selectElement, onValueSelected, minimumInputLength }) { static #initializeSelectElement({ selectElement, onValueSelected, minimumInputLength }) {
selectElement.select2({ minimumInputLength: minimumInputLength }); selectElement.select2({ minimumInputLength: minimumInputLength });
selectElement.on( selectElement.on(

View File

@@ -7,7 +7,6 @@ class SymptomVsSymptomChartView {
this.#canvas = canvas; this.#canvas = canvas;
} }
// FK-TODO: refactor
loadAndDisplayChart(symptomX, symptomY) { loadAndDisplayChart(symptomX, symptomY) {
Promise Promise
.all([symptomX, symptomY].map(symptom => PrrByVaccineProvider.getPrrByVaccine(symptom))) .all([symptomX, symptomY].map(symptom => PrrByVaccineProvider.getPrrByVaccine(symptom)))
@@ -18,12 +17,6 @@ class SymptomVsSymptomChartView {
}); });
} }
setData(histoDescr) {
const data = this.#getData(histoDescr);
this.#chart.config.data = data;
this.#chart.update();
}
#displayChart(symptomX, symptomY, labels, data) { #displayChart(symptomX, symptomY, labels, data) {
if (this.#chart != null) { if (this.#chart != null) {
this.#chart.destroy(); this.#chart.destroy();