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>

View File

@@ -0,0 +1,25 @@
QUnit.module('PrrByKey2CsvConverterTest', function () {
QUnit.test('convertPrrByKey2Csv', function (assert) {
// Given
const prrByKey = {
"MM,R": 26.17432376240791,
"VARCEL": 10.549534724816644
};
// When
const csv = PrrByKey2CsvConverter.convertPrrByKey2Csv(
{
prrByKey: prrByKey,
keyColumn: 'Vaccine',
prrColumn: 'Proportional Reporting Ratio'
});
// Then
const csvExpected =
`"Vaccine","Proportional Reporting Ratio"
"MM,R",26.17432376240791
"VARCEL",10.549534724816644`;
assert.equal(csv, csvExpected);
});
});

View File

@@ -1,16 +0,0 @@
QUnit.module('UtilsTest', function () {
QUnit.test('convertDict2CSV', function (assert) {
// Given
const dict = {
"MM,R": 26.17432376240791,
"VARCEL": 10.549534724816644
};
// When
const csv = Utils.convertDict2CSV(dict);
// Then
assert.equal(csv, '"MM,R","VARCEL"\n26.17432376240791,10.549534724816644');
});
});

View File

@@ -9,9 +9,9 @@
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<title>Symptoms caused by Vaccines</title>
<script src="../../docs/Utils.js"></script>
<script src="../../docs/Dict2CsvConverter.js"></script>
<script src="../../docs/UIUtils.js"></script>
<script src="../../docs/NumberWithBarElementFactory.js"></script>
<script src="../../docs/SymptomsCausedByVaccines/js/PrrByKey2CsvConverter.js"></script>
<script src="../../docs/SymptomsCausedByVaccines/js/PageInitializer.js"></script>
<script src="../../docs/SymptomsCausedByVaccines/js/PrrByVaccineProvider.js"></script>
<script src="../../docs/SymptomsCausedByVaccines/js/PrrByVaccineTable.js"></script>
@@ -26,7 +26,7 @@
JsHamcrest.Integration.QUnit();
JsMockito.Integration.QUnit();
</script>
<script src="./UtilsTest.js"></script>
<script src="./PrrByKey2CsvConverterTest.js"></script>
</head>
<body class="nav-md">