refactoring

This commit is contained in:
Frank Knoll
2024-07-14 02:11:41 +02:00
parent b143949798
commit a8ec099c00
8 changed files with 54 additions and 45 deletions

View File

@@ -27,6 +27,7 @@
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css" />
<script src="../Utils.js"></script>
<script src="../UIUtils.js"></script>
<script src="../UrlUtils.js"></script>
<script src="../NumberWithBarElementFactory.js"></script>
<script src="./js/PrrByKey2CsvConverter.js"></script>
<script src="./js/PageInitializer.js"></script>
@@ -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

View File

@@ -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
});

View File

@@ -33,7 +33,7 @@ class PrrByKeyTableView {
}
#downloadPrrByKey() {
UIUtils.downloadUrlAsFilename(
UrlUtils.downloadUrlAsFilename(
window.URL.createObjectURL(
new Blob(
[this.#prrByKeyTable.getDisplayedTableAsCsv(`# ${this.#valueName}: ${this.#text}`)],

View File

@@ -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);
}
}

View File

@@ -26,6 +26,7 @@
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css"/>
<script src="../Utils.js"></script>
<script src="../UIUtils.js"></script>
<script src="../UrlUtils.js"></script>
<script src="../NumberWithBarElementFactory.js"></script>
<script src="../SymptomsCausedByDrugs/js/PrrByKey2CsvConverter.js"></script>
<script src="../SymptomsCausedByDrugs/js/PageInitializer.js"></script>

View File

@@ -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();
}
}

38
docs/UrlUtils.js Normal file
View File

@@ -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);
}
}

View File

@@ -30,6 +30,7 @@
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.2.0/dist/chart.umd.min.js"></script>
<script src="./Utils.js"></script>
<script src="./UIUtils.js"></script>
<script src="./UrlUtils.js"></script>
<script src="./DataTablesFilter.js"></script>
<script src="./ColumnSearch.js"></script>
<script src="./BatchCodeTableInitializer.js"></script>
@@ -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'),
});
});
</script>