feat(news,calendar): improve corporate calendar filters and news sentiment dialogs

This commit is contained in:
2026-08-15 19:30:00 +02:00
parent 067f1bfdd5
commit 960a4bdbd6
11 changed files with 556 additions and 87 deletions
@@ -25,9 +25,29 @@ class CalendarLoaded extends CalendarState {
this.selectedDate,
});
static bool matchesCategory(String eventType, String category) {
if (category == 'Alle' || category.isEmpty) return true;
final catKey = category.toLowerCase();
final t = eventType.toLowerCase();
if (catKey.contains('earn') || catKey.contains('quartal') || catKey.contains('ergebnis')) {
return t.contains('earn') || t.contains('quart') || t.contains('ergebnis') || t.contains('finan') || t.contains('report') || t.contains('bilanz') || t == 'event';
}
if (catKey.contains('ex') || catKey.contains('div')) {
return (t.contains('ex') || t.contains('div') || t.contains('ausschütt')) && !t.contains('pay') && !t.contains('zahl');
}
if (catKey.contains('pay') || catKey.contains('zahl')) {
return t.contains('pay') || t.contains('zahl') || t.contains('auszahl');
}
if (catKey.contains('split')) {
return t.contains('split');
}
return t.contains(catKey) || t == catKey;
}
List<CorporateEventModel> get filteredEvents {
return allEvents.where((e) {
if (selectedCategory != 'Alle' && e.eventType != selectedCategory) {
if (!matchesCategory(e.eventType, selectedCategory)) {
return false;
}
if (selectedDate != null) {