near_expiry_unpinned_analysis/visualization_tool/js/app.js

49 lines
No EOL
1.3 KiB
JavaScript

import { fetchResults } from './api.js';
import { renderTable, clearTable } from './ui.js';
import { renderChart, clearChart } from './charts.js';
/**
* Aktualisiert die Darstellung basierend auf aktuellen Filterparametern.
* @param {Object} filters - Aktuelle Filtereinstellungen (run_type, time_range etc.)
*/
export async function refreshData(filters = {}) {
try {
clearTable();
clearChart();
const results = await fetchResults(filters);
if (!Array.isArray(results)) {
console.error('Unerwartetes Datenformat von /results');
return;
}
renderTable(results);
renderChart(results);
} catch (error) {
console.error('Fehler beim Laden der Analyseergebnisse:', error);
}
}
/**
* Initialisiert die Anwendung: Filter, Eventlistener und initialen Datenabruf.
*/
export function initApp() {
const filterRunType = document.getElementById('filter-run-type');
const filterTimeRange = document.getElementById('filter-time-range');
const handleFilterChange = async () => {
const filters = {
run_type: filterRunType?.value || '',
time_range: filterTimeRange?.value || ''
};
await refreshData(filters);
};
filterRunType?.addEventListener('change', handleFilterChange);
filterTimeRange?.addEventListener('change', handleFilterChange);
refreshData();
}
window.addEventListener('load', initApp);