refactoring
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css" />
|
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css" />
|
||||||
<script src="../Utils.js"></script>
|
<script src="../Utils.js"></script>
|
||||||
<script src="../UIUtils.js"></script>
|
<script src="../UIUtils.js"></script>
|
||||||
|
<script src="../UrlUtils.js"></script>
|
||||||
<script src="../NumberWithBarElementFactory.js"></script>
|
<script src="../NumberWithBarElementFactory.js"></script>
|
||||||
<script src="./js/PrrByKey2CsvConverter.js"></script>
|
<script src="./js/PrrByKey2CsvConverter.js"></script>
|
||||||
<script src="./js/PageInitializer.js"></script>
|
<script src="./js/PageInitializer.js"></script>
|
||||||
@@ -42,22 +43,18 @@
|
|||||||
"DOMContentLoaded",
|
"DOMContentLoaded",
|
||||||
event => {
|
event => {
|
||||||
const name = 'Drug';
|
const name = 'Drug';
|
||||||
const symptomSearchParam = new SearchParam('symptom');
|
|
||||||
const vaccineSearchParam = new SearchParam('vaccine');
|
|
||||||
PageInitializer.initializePage(
|
PageInitializer.initializePage(
|
||||||
{
|
{
|
||||||
symptom: {
|
symptom: {
|
||||||
symptomSelectElement: $('#symptomSelect'),
|
symptomSelectElement: $('#symptomSelect'),
|
||||||
selectSymptom: symptomSearchParam.get(),
|
searchParam: new SearchParam('symptom'),
|
||||||
onSymptomSelected: symptom => symptomSearchParam.set(symptom),
|
|
||||||
prrByVaccineTableElement: $('#prrByVaccineTable'),
|
prrByVaccineTableElement: $('#prrByVaccineTable'),
|
||||||
downloadPrrByVaccineTableButton: document.querySelector("#downloadPrrByVaccineTable"),
|
downloadPrrByVaccineTableButton: document.querySelector("#downloadPrrByVaccineTable"),
|
||||||
keyColumnName: name
|
keyColumnName: name
|
||||||
},
|
},
|
||||||
vaccine: {
|
vaccine: {
|
||||||
vaccineSelectElement: $('#vaccineSelect'),
|
vaccineSelectElement: $('#vaccineSelect'),
|
||||||
selectVaccine: vaccineSearchParam.get(),
|
searchParam: new SearchParam('vaccine'),
|
||||||
onVaccineSelected: vaccine => vaccineSearchParam.set(vaccine),
|
|
||||||
prrBySymptomTableElement: $('#prrBySymptomTable'),
|
prrBySymptomTableElement: $('#prrBySymptomTable'),
|
||||||
downloadPrrBySymptomTableButton: document.querySelector("#downloadPrrBySymptomTable"),
|
downloadPrrBySymptomTableButton: document.querySelector("#downloadPrrBySymptomTable"),
|
||||||
valueName: name
|
valueName: name
|
||||||
|
|||||||
@@ -5,29 +5,29 @@ class PageInitializer {
|
|||||||
PageInitializer.#configureVaccine(vaccine);
|
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);
|
const prrByVaccineTableView = new PrrByVaccineTableView(prrByVaccineTableElement, downloadPrrByVaccineTableButton, keyColumnName);
|
||||||
Select2.initializeSelectElement(
|
Select2.initializeSelectElement(
|
||||||
{
|
{
|
||||||
selectElement: symptomSelectElement,
|
selectElement: symptomSelectElement,
|
||||||
textOfOption2Select: selectSymptom,
|
textOfOption2Select: searchParam.get(),
|
||||||
onValueSelected: (id, text) => {
|
onValueSelected: (id, text) => {
|
||||||
prrByVaccineTableView.displayPrrByVaccineTable4Symptom(id, text);
|
prrByVaccineTableView.displayPrrByVaccineTable4Symptom(id, text);
|
||||||
onSymptomSelected(text);
|
searchParam.set(text);
|
||||||
},
|
},
|
||||||
minimumInputLength: 0
|
minimumInputLength: 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static #configureVaccine({ vaccineSelectElement, selectVaccine, onVaccineSelected, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) {
|
static #configureVaccine({ vaccineSelectElement, searchParam, prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName }) {
|
||||||
const prrBySymptomTableView = new PrrBySymptomTableView(prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName);
|
const prrBySymptomTableView = new PrrBySymptomTableView(prrBySymptomTableElement, downloadPrrBySymptomTableButton, valueName);
|
||||||
Select2.initializeSelectElement(
|
Select2.initializeSelectElement(
|
||||||
{
|
{
|
||||||
selectElement: vaccineSelectElement,
|
selectElement: vaccineSelectElement,
|
||||||
textOfOption2Select: selectVaccine,
|
textOfOption2Select: searchParam.get(),
|
||||||
onValueSelected: (id, text) => {
|
onValueSelected: (id, text) => {
|
||||||
prrBySymptomTableView.displayPrrBySymptomTable4Vaccine(id, text);
|
prrBySymptomTableView.displayPrrBySymptomTable4Vaccine(id, text);
|
||||||
onVaccineSelected(text);
|
searchParam.set(text);
|
||||||
},
|
},
|
||||||
minimumInputLength: 0
|
minimumInputLength: 0
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class PrrByKeyTableView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#downloadPrrByKey() {
|
#downloadPrrByKey() {
|
||||||
UIUtils.downloadUrlAsFilename(
|
UrlUtils.downloadUrlAsFilename(
|
||||||
window.URL.createObjectURL(
|
window.URL.createObjectURL(
|
||||||
new Blob(
|
new Blob(
|
||||||
[this.#prrByKeyTable.getDisplayedTableAsCsv(`# ${this.#valueName}: ${this.#text}`)],
|
[this.#prrByKeyTable.getDisplayedTableAsCsv(`# ${this.#valueName}: ${this.#text}`)],
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ class SearchParam {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get() {
|
get() {
|
||||||
return UIUtils.getSearchParamOfCurrentUrl(this.#name);
|
return UrlUtils.getSearchParamOfCurrentUrl(this.#name);
|
||||||
}
|
}
|
||||||
|
|
||||||
set(value) {
|
set(value) {
|
||||||
UIUtils.setSearchParamOfCurrentUrl(this.#name, value);
|
UrlUtils.setSearchParamOfCurrentUrl(this.#name, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css"/>
|
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css"/>
|
||||||
<script src="../Utils.js"></script>
|
<script src="../Utils.js"></script>
|
||||||
<script src="../UIUtils.js"></script>
|
<script src="../UIUtils.js"></script>
|
||||||
|
<script src="../UrlUtils.js"></script>
|
||||||
<script src="../NumberWithBarElementFactory.js"></script>
|
<script src="../NumberWithBarElementFactory.js"></script>
|
||||||
<script src="../SymptomsCausedByDrugs/js/PrrByKey2CsvConverter.js"></script>
|
<script src="../SymptomsCausedByDrugs/js/PrrByKey2CsvConverter.js"></script>
|
||||||
<script src="../SymptomsCausedByDrugs/js/PageInitializer.js"></script>
|
<script src="../SymptomsCausedByDrugs/js/PageInitializer.js"></script>
|
||||||
|
|||||||
@@ -27,32 +27,4 @@ class UIUtils {
|
|||||||
static getSelectedOption(selectElement) {
|
static getSelectedOption(selectElement) {
|
||||||
return selectElement.options[selectElement.selectedIndex];
|
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
38
docs/UrlUtils.js
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.2.0/dist/chart.umd.min.js"></script>
|
<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="./Utils.js"></script>
|
||||||
<script src="./UIUtils.js"></script>
|
<script src="./UIUtils.js"></script>
|
||||||
|
<script src="./UrlUtils.js"></script>
|
||||||
<script src="./DataTablesFilter.js"></script>
|
<script src="./DataTablesFilter.js"></script>
|
||||||
<script src="./ColumnSearch.js"></script>
|
<script src="./ColumnSearch.js"></script>
|
||||||
<script src="./BatchCodeTableInitializer.js"></script>
|
<script src="./BatchCodeTableInitializer.js"></script>
|
||||||
@@ -41,8 +42,8 @@
|
|||||||
new BatchCodeTableInitializer().initialize(
|
new BatchCodeTableInitializer().initialize(
|
||||||
{
|
{
|
||||||
batchCodeTableElement: $('#batchCodeTable'),
|
batchCodeTableElement: $('#batchCodeTable'),
|
||||||
showCountriesColumn: UIUtils.isSearchParamYES(urlSearchParams, 'showCountriesColumn'),
|
showCountriesColumn: UrlUtils.isSearchParamYES(urlSearchParams, 'showCountriesColumn'),
|
||||||
showDataTablesFilter: UIUtils.isSearchParamYES(urlSearchParams, 'showDataTablesFilter'),
|
showDataTablesFilter: UrlUtils.isSearchParamYES(urlSearchParams, 'showDataTablesFilter'),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user