From a8ec099c0004112ac9da60c61a99ea26f0955d74 Mon Sep 17 00:00:00 2001 From: Frank Knoll Date: Sun, 14 Jul 2024 02:11:41 +0200 Subject: [PATCH] refactoring --- docs/SymptomsCausedByDrugs/index.html | 9 ++--- .../js/PageInitializer.js | 12 +++--- .../js/PrrByKeyTableView.js | 2 +- docs/SymptomsCausedByDrugs/js/SearchParam.js | 4 +- docs/SymptomsCausedByVaccines/index.html | 1 + docs/UIUtils.js | 28 -------------- docs/UrlUtils.js | 38 +++++++++++++++++++ docs/batchCodes.html | 5 ++- 8 files changed, 54 insertions(+), 45 deletions(-) create mode 100644 docs/UrlUtils.js diff --git a/docs/SymptomsCausedByDrugs/index.html b/docs/SymptomsCausedByDrugs/index.html index 91ff432b899..243d67e9e6b 100644 --- a/docs/SymptomsCausedByDrugs/index.html +++ b/docs/SymptomsCausedByDrugs/index.html @@ -27,6 +27,7 @@ + @@ -42,22 +43,18 @@ "DOMContentLoaded", event => { const name = 'Drug'; - const symptomSearchParam = new SearchParam('symptom'); - const vaccineSearchParam = new SearchParam('vaccine'); PageInitializer.initializePage( { symptom: { symptomSelectElement: $('#symptomSelect'), - selectSymptom: symptomSearchParam.get(), - onSymptomSelected: symptom => symptomSearchParam.set(symptom), + searchParam: new SearchParam('symptom'), prrByVaccineTableElement: $('#prrByVaccineTable'), downloadPrrByVaccineTableButton: document.querySelector("#downloadPrrByVaccineTable"), keyColumnName: name }, vaccine: { vaccineSelectElement: $('#vaccineSelect'), - selectVaccine: vaccineSearchParam.get(), - onVaccineSelected: vaccine => vaccineSearchParam.set(vaccine), + searchParam: new SearchParam('vaccine'), prrBySymptomTableElement: $('#prrBySymptomTable'), downloadPrrBySymptomTableButton: document.querySelector("#downloadPrrBySymptomTable"), valueName: name diff --git a/docs/SymptomsCausedByDrugs/js/PageInitializer.js b/docs/SymptomsCausedByDrugs/js/PageInitializer.js index e4a1ee846a2..d5c094d6107 100644 --- a/docs/SymptomsCausedByDrugs/js/PageInitializer.js +++ b/docs/SymptomsCausedByDrugs/js/PageInitializer.js @@ -5,29 +5,29 @@ class PageInitializer { PageInitializer.#configureVaccine(vaccine); } - static #configureSymptom({ symptomSelectElement, selectSymptom, onSymptomSelected, prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName }) { + static #configureSymptom({ symptomSelectElement, searchParam, prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName }) { const prrByVaccineTableView = new PrrByVaccineTableView(prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName); Select2.initializeSelectElement( { selectElement: symptomSelectElement, - textOfOption2Select: selectSymptom, + textOfOption2Select: searchParam.get(), onValueSelected: (id, text) => { prrByVaccineTableView.displayPrrByVaccineTable4Symptom(id, text); - onSymptomSelected(text); + searchParam.set(text); }, minimumInputLength: 0 }); } - static #configureVaccine({ vaccineSelectElement, selectVaccine, onVaccineSelected, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) { + static #configureVaccine({ vaccineSelectElement, searchParam, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) { const prrBySymptomTableView = new PrrBySymptomTableView(prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName); Select2.initializeSelectElement( { selectElement: vaccineSelectElement, - textOfOption2Select: selectVaccine, + textOfOption2Select: searchParam.get(), onValueSelected: (id, text) => { prrBySymptomTableView.displayPrrBySymptomTable4Vaccine(id, text); - onVaccineSelected(text); + searchParam.set(text); }, minimumInputLength: 0 }); diff --git a/docs/SymptomsCausedByDrugs/js/PrrByKeyTableView.js b/docs/SymptomsCausedByDrugs/js/PrrByKeyTableView.js index 715f8473e5d..378f5c30130 100644 --- a/docs/SymptomsCausedByDrugs/js/PrrByKeyTableView.js +++ b/docs/SymptomsCausedByDrugs/js/PrrByKeyTableView.js @@ -33,7 +33,7 @@ class PrrByKeyTableView { } #downloadPrrByKey() { - UIUtils.downloadUrlAsFilename( + UrlUtils.downloadUrlAsFilename( window.URL.createObjectURL( new Blob( [this.#prrByKeyTable.getDisplayedTableAsCsv(`# ${this.#valueName}: ${this.#text}`)], diff --git a/docs/SymptomsCausedByDrugs/js/SearchParam.js b/docs/SymptomsCausedByDrugs/js/SearchParam.js index 6c911f2f467..d22583d1bec 100644 --- a/docs/SymptomsCausedByDrugs/js/SearchParam.js +++ b/docs/SymptomsCausedByDrugs/js/SearchParam.js @@ -7,10 +7,10 @@ class SearchParam { } get() { - return UIUtils.getSearchParamOfCurrentUrl(this.#name); + return UrlUtils.getSearchParamOfCurrentUrl(this.#name); } set(value) { - UIUtils.setSearchParamOfCurrentUrl(this.#name, value); + UrlUtils.setSearchParamOfCurrentUrl(this.#name, value); } } \ No newline at end of file diff --git a/docs/SymptomsCausedByVaccines/index.html b/docs/SymptomsCausedByVaccines/index.html index a72065159ff..b318664b19b 100644 --- a/docs/SymptomsCausedByVaccines/index.html +++ b/docs/SymptomsCausedByVaccines/index.html @@ -26,6 +26,7 @@ + diff --git a/docs/UIUtils.js b/docs/UIUtils.js index d5b113f62a0..668fc8758d5 100644 --- a/docs/UIUtils.js +++ b/docs/UIUtils.js @@ -27,32 +27,4 @@ class UIUtils { static getSelectedOption(selectElement) { return selectElement.options[selectElement.selectedIndex]; } - - static getSearchParam(urlParams, searchParam, defaultValue) { - return urlParams.has(searchParam) ? - urlParams.get(searchParam) : - defaultValue; - } - - static isSearchParamYES(urlParams, searchParam) { - return UIUtils.getSearchParam(urlParams, searchParam, 'NO').toUpperCase() == 'YES'; - } - - static getSearchParamOfCurrentUrl(searchParam) { - const urlSearchParams = new URLSearchParams(window.location.search); - return UIUtils.getSearchParam(urlSearchParams, searchParam, null) - } - - static setSearchParamOfCurrentUrl(nameOfSearchParam, valueOfSearchParam) { - const url = new URL(window.location.href); - url.searchParams.set(nameOfSearchParam, valueOfSearchParam); - window.history.replaceState(null, "", url); - } - - static downloadUrlAsFilename(url, filename) { - const a = document.createElement('a'); - a.setAttribute('href', url); - a.setAttribute('download', filename); - a.click(); - } } diff --git a/docs/UrlUtils.js b/docs/UrlUtils.js new file mode 100644 index 00000000000..eb84b60ebab --- /dev/null +++ b/docs/UrlUtils.js @@ -0,0 +1,38 @@ +class UrlUtils { + + static isSearchParamYES(urlParams, searchParam) { + return UrlUtils.#getSearchParam(urlParams, searchParam, 'NO').toUpperCase() == 'YES'; + } + + static getSearchParamOfCurrentUrl(searchParam) { + return UrlUtils.#getSearchParam( + new URLSearchParams(window.location.search), + searchParam, + null) + } + + static setSearchParamOfCurrentUrl(nameOfSearchParam, valueOfSearchParam) { + UrlUtils.#setSearchParam( + new URL(window.location.href), + nameOfSearchParam, + valueOfSearchParam); + } + + static downloadUrlAsFilename(url, filename) { + const a = document.createElement('a'); + a.setAttribute('href', url); + a.setAttribute('download', filename); + a.click(); + } + + static #getSearchParam(urlParams, searchParam, defaultValue) { + return urlParams.has(searchParam) ? + urlParams.get(searchParam) : + defaultValue; + } + + static #setSearchParam(url, nameOfSearchParam, valueOfSearchParam) { + url.searchParams.set(nameOfSearchParam, valueOfSearchParam); + window.history.replaceState(null, "", url); + } +} diff --git a/docs/batchCodes.html b/docs/batchCodes.html index e11eeef01ce..59b4daf8988 100644 --- a/docs/batchCodes.html +++ b/docs/batchCodes.html @@ -30,6 +30,7 @@ + @@ -41,8 +42,8 @@ new BatchCodeTableInitializer().initialize( { batchCodeTableElement: $('#batchCodeTable'), - showCountriesColumn: UIUtils.isSearchParamYES(urlSearchParams, 'showCountriesColumn'), - showDataTablesFilter: UIUtils.isSearchParamYES(urlSearchParams, 'showDataTablesFilter'), + showCountriesColumn: UrlUtils.isSearchParamYES(urlSearchParams, 'showCountriesColumn'), + showDataTablesFilter: UrlUtils.isSearchParamYES(urlSearchParams, 'showDataTablesFilter'), }); });