refactoring

This commit is contained in:
frankknoll
2023-10-15 13:55:50 +02:00
parent 893d4a38b9
commit d3acdd66f4
12 changed files with 70 additions and 43 deletions

View File

@@ -1,15 +0,0 @@
class Dict2CsvConverter {
static convertDict2CSV(dict) {
const { 'keys': columns, 'values': firstRow } = Utils.getKeysAlignedWithValues(dict);
return `${Dict2CsvConverter.#quoteValues(columns)}\n${firstRow}`;
}
static #quoteValues(values) {
return values.map(Dict2CsvConverter.#quoteValue);
}
static #quoteValue(value) {
return '"' + value + '"';
}
}

View File

@@ -26,7 +26,6 @@
<link href="gentelella/build/css/custom.css" rel="stylesheet" />
<link href="forkMeOnGitHub.css" rel="stylesheet" type="text/css" />
<script src="./Utils.js"></script>
<script src="./Dict2CsvConverter.js"></script>
<script src="./UIUtils.js"></script>
<script src="./DataTablesFilter.js"></script>
<script src="./NumberWithBarElementFactory.js"></script>

View File

@@ -26,9 +26,9 @@
<link href="../gentelella/build/css/custom.css" rel="stylesheet" />
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css" />
<script src="../Utils.js"></script>
<script src="../Dict2CsvConverter.js"></script>
<script src="../UIUtils.js"></script>
<script src="../NumberWithBarElementFactory.js"></script>
<script src="./js/PrrByKey2CsvConverter.js"></script>
<script src="./js/PageInitializer.js"></script>
<script src="./js/PrrByVaccineProvider.js"></script>
<script src="./js/PrrByVaccineTable.js"></script>

View File

@@ -0,0 +1,34 @@
class PrrByKey2CsvConverter {
static convertPrrByKey2Csv({ prrByKey, keyColumn, prrColumn }) {
return PrrByKey2CsvConverter.#convert2Csv(
{
prrByKey: PrrByKey2CsvConverter.#quoteKeys(prrByKey),
keyColumn: PrrByKey2CsvConverter.#quote(keyColumn),
prrColumn: PrrByKey2CsvConverter.#quote(prrColumn)
});
}
static #quoteKeys(prrByKey) {
return Object.fromEntries(
Object
.entries(prrByKey)
.map(([key, prr]) => [PrrByKey2CsvConverter.#quote(key), prr]))
}
static #quote(str) {
return '"' + str + '"';
}
static #convert2Csv({ prrByKey, keyColumn, prrColumn }) {
const header = `${keyColumn},${prrColumn}`;
return `${header}\n${PrrByKey2CsvConverter.#convertDict2Csv(prrByKey)}`;
}
static #convertDict2Csv(dict) {
return Object
.entries(dict)
.map(([key, value]) => `${key},${value}`)
.join('\n');
}
}

View File

@@ -35,7 +35,14 @@ class PrrByVaccineTableView {
UIUtils.downloadUrlAsFilename(
window.URL.createObjectURL(
new Blob(
[Utils.convertDict2CSV(this.#prrByVaccine)],
[
PrrByKey2CsvConverter.convertPrrByKey2Csv(
{
prrByKey: this.#prrByVaccine,
keyColumn: 'Vaccine',
prrColumn: 'Proportional Reporting Ratio'
})
],
{ type: 'text/csv' })),
this.#symptom
);

View File

@@ -24,8 +24,4 @@ class Utils {
static sliceDict(dict, start, end) {
return Object.fromEntries(Object.entries(dict).slice(start, end));
}
static convertDict2CSV(dict) {
return Dict2CsvConverter.convertDict2CSV(dict);
}
}

View File

@@ -12,7 +12,6 @@
<script charset="utf8" src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js"
type="text/javascript"></script>
<script src="./Utils.js"></script>
<script src="./Dict2CsvConverter.js"></script>
<script src="./UIUtils.js"></script>
<script src="./DataTablesFilter.js"></script>
<script src="./VaccineDistributionByZipcodeTableInitializer.js"></script>

View File

@@ -22,7 +22,6 @@
<script charset="utf8" src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" type="text/javascript"></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="./Dict2CsvConverter.js"></script>
<script src="./UIUtils.js"></script>
<script src="./DataTablesFilter.js"></script>
<script src="./ColumnSearch.js"></script>

View File

@@ -23,7 +23,6 @@
integrity="sha512-MKxcSu/LDtbIYHBNAWUQwfB3iVoG9xeMCm32QV5hZ/9lFaQZJVaXfz9aFa0IZExWzCpm7OWvp9zq9gVip/nLMg=="
referrerpolicy="no-referrer" rel="stylesheet" />
<script src="./Utils.js"></script>
<script src="./Dict2CsvConverter.js"></script>
<script src="./UIUtils.js"></script>
<script src="./IntensiveCareCapacitiesChartView.js"></script>
<script src="./FreeBedsChartView.js"></script>