New Angular based web version #1
@@ -11,10 +11,13 @@ import { SelectModule } from 'primeng/select';
|
|||||||
import { SkeletonModule } from 'primeng/skeleton';
|
import { SkeletonModule } from 'primeng/skeleton';
|
||||||
import {
|
import {
|
||||||
BehaviorSubject,
|
BehaviorSubject,
|
||||||
|
catchError,
|
||||||
combineLatest,
|
combineLatest,
|
||||||
|
EMPTY,
|
||||||
map,
|
map,
|
||||||
Observable,
|
Observable,
|
||||||
startWith
|
startWith,
|
||||||
|
throwError
|
||||||
} from 'rxjs';
|
} from 'rxjs';
|
||||||
import { EntriesOverviewService } from './services/entries-overview.service';
|
import { EntriesOverviewService } from './services/entries-overview.service';
|
||||||
import { EntryCardComponent } from './components/entry-card/entry-card.component';
|
import { EntryCardComponent } from './components/entry-card/entry-card.component';
|
||||||
@@ -22,6 +25,7 @@ import {
|
|||||||
matAddSharp,
|
matAddSharp,
|
||||||
} from '@ng-icons/material-icons/sharp';
|
} from '@ng-icons/material-icons/sharp';
|
||||||
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
||||||
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-entries',
|
selector: 'app-entries',
|
||||||
@@ -62,7 +66,10 @@ export class EntriesComponent {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
const entries = this.entriesOverviewService.getEntries()
|
const entries = this.entriesOverviewService.getEntries()
|
||||||
.pipe(takeUntilDestroyed());
|
.pipe(
|
||||||
|
takeUntilDestroyed(),
|
||||||
|
catchError((error) => this.handleGetEntriesError(error))
|
||||||
|
);
|
||||||
|
|
||||||
this.consumptionEntries$ = combineLatest([
|
this.consumptionEntries$ = combineLatest([
|
||||||
entries,
|
entries,
|
||||||
@@ -97,4 +104,32 @@ export class EntriesComponent {
|
|||||||
detail: 'Der Eintrag wurde erfolgreich gelöscht.',
|
detail: 'Der Eintrag wurde erfolgreich gelöscht.',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private handleGetEntriesError(error: unknown): Observable<never> {
|
||||||
|
if (!(error instanceof HttpErrorResponse)) {
|
||||||
|
return throwError(() => new Error('An unexpected error occurred'));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (true) {
|
||||||
|
case error.status >= 500 && error.status <= 599:
|
||||||
|
this.messageService.add({
|
||||||
|
severity: 'error',
|
||||||
|
summary: 'Serverfehler',
|
||||||
|
detail:
|
||||||
|
'Beim Abrufen der Einträge ist ein Fehler aufgetreten. Bitte versuche es erneut.',
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.error(error);
|
||||||
|
this.messageService.add({
|
||||||
|
severity: 'error',
|
||||||
|
summary: 'Unerwarteter Fehler',
|
||||||
|
detail:
|
||||||
|
'Beim Abrufen der Einträge hat der Server eine unerwartete Antwort zurückgegeben.',
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EMPTY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user