diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index ec6d281..aefdad4 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -66,6 +66,7 @@ import { SelectObjectDialogComponent } from './components/select-object-dialog/s
import { AutocompleteSelectComponent } from './components/autocomplete-select/autocomplete-select.component';
import { LendingStationComponent } from './pages/dataPages/lending-station/lending-station.component';
import { ProfileComponent } from './pages/profile/profile.component';
+import { ErrorSnackbarComponent, SnackbarDialog } from './helper/snackbar-ref.component';
@@ -96,6 +97,8 @@ import { ProfileComponent } from './pages/profile/profile.component';
AutocompleteSelectComponent,
LendingStationComponent,
ProfileComponent,
+ ErrorSnackbarComponent,
+ SnackbarDialog
],
imports: [
BrowserModule,
diff --git a/src/app/helper/snackbar-dialog.html b/src/app/helper/snackbar-dialog.html
new file mode 100644
index 0000000..1bddf5b
--- /dev/null
+++ b/src/app/helper/snackbar-dialog.html
@@ -0,0 +1,5 @@
+
Dialog with elements
+This dialog showcases the title, close, content and actions elements.
+
+
+
diff --git a/src/app/helper/snackbar-ref.component.ts b/src/app/helper/snackbar-ref.component.ts
new file mode 100644
index 0000000..2d4ff33
--- /dev/null
+++ b/src/app/helper/snackbar-ref.component.ts
@@ -0,0 +1,35 @@
+import { Component, Inject } from '@angular/core';
+import { MatDialog } from '@angular/material/dialog';
+import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';
+
+@Component({
+ selector: 'app-error-snackbar',
+ template: `
+ {{ data.message }}
+
+ `,
+})
+
+
+export class ErrorSnackbarComponent {
+ constructor(
+ public snackBarRef: MatSnackBarRef,
+ public dialog: MatDialog,
+ @Inject(MAT_SNACK_BAR_DATA) public data: any,
+ ) {}
+
+
+ public actionAndDismiss(){
+ console.log("test");
+ this.dialog.open(SnackbarDialog);
+ this.snackBarRef.dismiss()
+ }
+}
+
+@Component({
+ selector: 'app-snackbar-dialog',
+ templateUrl: 'snackbar-dialog.html',
+ })
+ export class SnackbarDialog {}
\ No newline at end of file
diff --git a/src/app/helper/token.interceptor.ts b/src/app/helper/token.interceptor.ts
index dd68b6a..a60e2c9 100644
--- a/src/app/helper/token.interceptor.ts
+++ b/src/app/helper/token.interceptor.ts
@@ -39,12 +39,11 @@ export class TokenInterceptor implements HttpInterceptor {
break;
default:
- errorMessage = `${error.error.message}. Error Code: ${error.status}.`;
+ errorMessage = this.serverErrorMessageGenerator(error);
break;
}
- } else
- if (error.status === 401) {
+ } else if (error.status === 401) {
var urlSplit : string[] = error.url.split("/");
if (urlSplit[3] === "users" && urlSplit[5] === "update"){ // Allow user pw updates to be processed correctly
errorMessage = "Das aktuelle Passwort ist inkorrekt.";
@@ -52,14 +51,29 @@ export class TokenInterceptor implements HttpInterceptor {
return this.handle401Error(request, next);
}
} else {
- errorMessage = `${error.error.message}. Error Code: ${error.status}.`;
+ errorMessage = this.serverErrorMessageGenerator(error);
}
}
- this.snackBar.openSnackBar(errorMessage, "Ok", true);
+ if (errorMessage === "Viele Fehler sind aufgetreten.") {
+ this.snackBar.openSnackBar(errorMessage, "Erweitert", true, error.error.errors);
+ } else {
+ this.snackBar.openSnackBar(errorMessage, "Ok", true);
+ }
+
return throwError(errorMessage);
}));
}
+ private serverErrorMessageGenerator (error: HttpErrorResponse): string {
+ if (error.error.message === undefined){
+ return "Viele Fehler sind aufgetreten." // If you change this you have to change it over this aswell
+ } else {
+ `${error.error.message}. Fehlercode: ${error.status}.`;
+ }
+
+ }
+
+
private addToken(request: HttpRequest, token: string) {
return request.clone({
setHeaders: {
diff --git a/src/app/services/snackbar.service.ts b/src/app/services/snackbar.service.ts
index 1ef6718..05f6f07 100644
--- a/src/app/services/snackbar.service.ts
+++ b/src/app/services/snackbar.service.ts
@@ -1,5 +1,6 @@
import { Injectable } from '@angular/core';
import {MatSnackBar} from '@angular/material/snack-bar';
+import { ErrorSnackbarComponent } from '../helper/snackbar-ref.component';
@Injectable({
providedIn: 'root',
@@ -9,15 +10,26 @@ export class SnackBarService {
constructor(private snackBar : MatSnackBar) { }
- openSnackBar(message: string, action: string = "", error: boolean = false) {
+ openSnackBar(message: string, action: string = "", error: boolean = false, errorMessageArray: Object[] = undefined) {
if (error){
- this.snackBar.open(message, action, {
- duration: 5000,
- panelClass: ['mat-toolbar', 'mat-warn', 'simple-snack-bar']
- });
+ if (errorMessageArray === undefined){
+ this.snackBar.open(message, action, {
+ duration: 5000,
+ panelClass: ['mat-toolbar', 'mat-warn', 'simple-snack-bar']
+ });
+ } else {
+ this.snackBar.openFromComponent(ErrorSnackbarComponent, {
+ data: {
+ "message" : message,
+ "action" : action,
+ },
+ panelClass: ['mat-toolbar', 'mat-warn', 'simple-snack-bar'],
+ duration: 5000
+ });
+ }
} else {
this.snackBar.open(message, action, {
- duration: 5000,
+ duration: 2000,
panelClass: ['mat-toolbar', 'mat-primary', 'simple-snack-bar']
});
}