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