Add max_outlier_visualization/js/app.js
This commit is contained in:
parent
c1f30c9b13
commit
f68e04d099
1 changed files with 61 additions and 0 deletions
61
max_outlier_visualization/js/app.js
Normal file
61
max_outlier_visualization/js/app.js
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
import { fetchMaxOutlierResults } from './api.js';
|
||||||
|
import { renderTable, renderChart, updateFilters, exportData } from './ui.js';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisiert die Anwendung, ruft Daten ab und richtet UI-Interaktionen ein.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
export async function initApp() {
|
||||||
|
try {
|
||||||
|
const data = await fetchMaxOutlierResults();
|
||||||
|
if (!Array.isArray(data) || data.length === 0) {
|
||||||
|
console.warn('Keine Max-Outlier-Ergebnisse verfügbar');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderTable(data);
|
||||||
|
renderChart(data);
|
||||||
|
bindUIEvents(data);
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Fehler beim Initialisieren der Anwendung:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verbindet UI-Elemente mit Logik – z. B. Filteränderungen und Export.
|
||||||
|
* @param {Array<object>} dataset
|
||||||
|
*/
|
||||||
|
export function bindUIEvents(dataset) {
|
||||||
|
const filterForm = document.querySelector('#filter-form');
|
||||||
|
const exportCsvBtn = document.querySelector('#export-csv');
|
||||||
|
const exportJsonBtn = document.querySelector('#export-json');
|
||||||
|
|
||||||
|
if (filterForm) {
|
||||||
|
filterForm.addEventListener('submit', async (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const formData = new FormData(filterForm);
|
||||||
|
const filter = Object.fromEntries(formData.entries());
|
||||||
|
|
||||||
|
try {
|
||||||
|
const filteredData = await fetchMaxOutlierResults(filter);
|
||||||
|
renderTable(filteredData);
|
||||||
|
renderChart(filteredData);
|
||||||
|
updateFilters(filter);
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Fehler beim Anwenden der Filter:', err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exportCsvBtn) {
|
||||||
|
exportCsvBtn.addEventListener('click', () => exportData(dataset, 'csv'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exportJsonBtn) {
|
||||||
|
exportJsonBtn.addEventListener('click', () => exportData(dataset, 'json'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
initApp();
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue