From 214510bc3327030ad27d009362db5e6703ad9f20 Mon Sep 17 00:00:00 2001 From: Frank Knoll Date: Sun, 14 Jul 2024 00:32:36 +0200 Subject: [PATCH] adding url params vaccine and symptom --- docs/SymptomsCausedByDrugs/index.html | 22 +++------ .../js/PageInitializer.js | 23 +++------- docs/SymptomsCausedByDrugs/js/Select2.js | 45 +++++++++++++++++++ .../test/index.test.html | 16 +++---- 4 files changed, 66 insertions(+), 40 deletions(-) create mode 100644 docs/SymptomsCausedByDrugs/js/Select2.js diff --git a/docs/SymptomsCausedByDrugs/index.html b/docs/SymptomsCausedByDrugs/index.html index 00f83d3f0f9..e9465e25ac2 100644 --- a/docs/SymptomsCausedByDrugs/index.html +++ b/docs/SymptomsCausedByDrugs/index.html @@ -35,21 +35,25 @@ + diff --git a/docs/SymptomsCausedByDrugs/js/PageInitializer.js b/docs/SymptomsCausedByDrugs/js/PageInitializer.js index 227533551db..63defaa2597 100644 --- a/docs/SymptomsCausedByDrugs/js/PageInitializer.js +++ b/docs/SymptomsCausedByDrugs/js/PageInitializer.js @@ -5,34 +5,25 @@ class PageInitializer { PageInitializer.#configureVaccine(vaccine); } - static #configureSymptom({ symptomSelectElement, prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName }) { + static #configureSymptom({ symptomSelectElement, selectSymptom, prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName }) { const prrByVaccineTableView = new PrrByVaccineTableView(prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName); - PageInitializer.#initializeSelectElement( + Select2.initializeSelectElement( { selectElement: symptomSelectElement, + textOfOption2Select: selectSymptom, onValueSelected: (id, text) => prrByVaccineTableView.displayPrrByVaccineTable4Symptom(id, text), minimumInputLength: 0 }); } - static #configureVaccine({ vaccineSelectElement, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) { + static #configureVaccine({ vaccineSelectElement, selectVaccine, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) { const prrBySymptomTableView = new PrrBySymptomTableView(prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName); - PageInitializer.#initializeSelectElement( + Select2.initializeSelectElement( { selectElement: vaccineSelectElement, - onValueSelected: (id, text) => prrBySymptomTableView.displayPrrBySymptomTable4Vaccine(id ,text), + textOfOption2Select: selectVaccine, + onValueSelected: (id, text) => prrBySymptomTableView.displayPrrBySymptomTable4Vaccine(id, text), minimumInputLength: 0 }); } - - static #initializeSelectElement({ selectElement, onValueSelected, minimumInputLength }) { - selectElement.select2({ minimumInputLength: minimumInputLength }); - selectElement.on( - 'select2:select', - function (event) { - const id = event.params.data.id; - const text = event.params.data.text; - onValueSelected(id, text); - }); - } } diff --git a/docs/SymptomsCausedByDrugs/js/Select2.js b/docs/SymptomsCausedByDrugs/js/Select2.js new file mode 100644 index 00000000000..953046bf6be --- /dev/null +++ b/docs/SymptomsCausedByDrugs/js/Select2.js @@ -0,0 +1,45 @@ +class Select2 { + + // FK-TODO: rename onValueSelected to onSelectOptionHavingValueAndText + static initializeSelectElement({ selectElement, textOfOption2Select, onValueSelected, minimumInputLength }) { + selectElement.select2({ minimumInputLength: minimumInputLength }); + selectElement.on( + 'select2:select', + function (event) { + const id = event.params.data.id; + const text = event.params.data.text; + onValueSelected(id, text); + }); + Select2.#selectOptionHavingText(selectElement, textOfOption2Select); + } + + static #selectOptionHavingText(selectElement, text) { + const option = Select2.#getOptionHavingText(selectElement, text); + if (option === undefined) { + return; + } + Select2.#selectOption(selectElement, option); + } + + static #getOptionHavingText(selectElement, text) { + if (text === null) { + return undefined; + } + return Array + .from(selectElement[0].options) + .find(option => option.text == text); + } + + static #selectOption(selectElement, option) { + selectElement.val(option.value).trigger('change'); + selectElement.trigger({ + type: 'select2:select', + params: { + data: { + "id": option.value, + "text": option.text + } + } + }); + } +} diff --git a/docs/SymptomsCausedByVaccines/test/index.test.html b/docs/SymptomsCausedByVaccines/test/index.test.html index 21af9568fec..6f77573b4eb 100644 --- a/docs/SymptomsCausedByVaccines/test/index.test.html +++ b/docs/SymptomsCausedByVaccines/test/index.test.html @@ -11,14 +11,14 @@ - - - - - - - - + + + + + + + +