From 83401a2ecba63b526bb8fe9ac77f439afbe8d6fc Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Sat, 5 Nov 2022 20:28:56 +0100 Subject: [PATCH] #71 added a generic error view --- .../src/app/app-routing.module.ts | 5 ++++ quartz-manager-frontend/src/app/app.module.ts | 3 ++- .../src/app/services/user.service.ts | 6 +++-- .../views/error/genericError.component.css | 0 .../views/error/genericError.component.html | 13 ++++++++++ .../error/genericError.component.spec.ts | 25 +++++++++++++++++++ .../app/views/error/genericError.component.ts | 15 +++++++++++ .../src/assets/image/error.svg | 1 + 8 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 quartz-manager-frontend/src/app/views/error/genericError.component.css create mode 100644 quartz-manager-frontend/src/app/views/error/genericError.component.html create mode 100644 quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/views/error/genericError.component.ts create mode 100644 quartz-manager-frontend/src/assets/image/error.svg diff --git a/quartz-manager-frontend/src/app/app-routing.module.ts b/quartz-manager-frontend/src/app/app-routing.module.ts index b2325dc..4a3a973 100644 --- a/quartz-manager-frontend/src/app/app-routing.module.ts +++ b/quartz-manager-frontend/src/app/app-routing.module.ts @@ -6,6 +6,7 @@ import {NotFoundComponent} from './views/not-found'; import {ForbiddenComponent} from './views/forbidden'; import {ManagerComponent} from './views/manager'; +import {GenericErrorComponent} from './views/error/genericError.component'; export const routes: Routes = [ { @@ -33,6 +34,10 @@ export const routes: Routes = [ path: '403', component: ForbiddenComponent }, + { + path: 'error', + component: GenericErrorComponent + }, { path: '**', redirectTo: '/404' diff --git a/quartz-manager-frontend/src/app/app.module.ts b/quartz-manager-frontend/src/app/app.module.ts index 7b13b2e..f521893 100644 --- a/quartz-manager-frontend/src/app/app.module.ts +++ b/quartz-manager-frontend/src/app/app.module.ts @@ -59,9 +59,9 @@ import { } from './services'; import { ForbiddenComponent } from './views/forbidden/forbidden.component'; import { APP_BASE_HREF } from '@angular/common'; -import { environment } from '../environments/environment'; import {SimpleTriggerConfigComponent} from './components/simple-trigger-config'; import JobService from './services/job.service'; +import {GenericErrorComponent} from './views/error/genericError.component'; export function initUserFactory(userService: UserService) { return () => userService.fetchLoggedUser(); @@ -116,6 +116,7 @@ export function jwtOptionsFactory(apiService: ApiService) { LogsPanelComponent, ProgressPanelComponent, ForbiddenComponent, + GenericErrorComponent, TriggerListComponent ], imports: [ diff --git a/quartz-manager-frontend/src/app/services/user.service.ts b/quartz-manager-frontend/src/app/services/user.service.ts index 8f10eb1..3f2cc21 100644 --- a/quartz-manager-frontend/src/app/services/user.service.ts +++ b/quartz-manager-frontend/src/app/services/user.service.ts @@ -35,13 +35,15 @@ export class UserService { this.currentUser = user; this.router.initialNavigation(); }, err => { - console.log(`error retrieving current user due to ` + err); + console.log(`error retrieving current user due to ` + JSON.stringify(err)); const httpErrorResponse = err as HttpErrorResponse; if (httpErrorResponse.status === 404) { this.isAnAnonymousUser = true; this.router.initialNavigation(); + return; } - // TODO generic error! + if (httpErrorResponse.status < 200 || httpErrorResponse.status > 399) + this.router.navigateByUrl('/error'); }); } diff --git a/quartz-manager-frontend/src/app/views/error/genericError.component.css b/quartz-manager-frontend/src/app/views/error/genericError.component.css new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/app/views/error/genericError.component.html b/quartz-manager-frontend/src/app/views/error/genericError.component.html new file mode 100644 index 0000000..497e949 --- /dev/null +++ b/quartz-manager-frontend/src/app/views/error/genericError.component.html @@ -0,0 +1,13 @@ +
+
+
+

Unexpected Error

+

Please try again later!

+
+
+
+

+ generic error +

+
+
diff --git a/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts b/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts new file mode 100644 index 0000000..b2656a6 --- /dev/null +++ b/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import {GenericErrorComponent} from './genericError.component'; + +describe('GenericComponent', () => { + let component: GenericErrorComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GenericErrorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GenericErrorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/views/error/genericError.component.ts b/quartz-manager-frontend/src/app/views/error/genericError.component.ts new file mode 100644 index 0000000..dd5ca17 --- /dev/null +++ b/quartz-manager-frontend/src/app/views/error/genericError.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'qrzmng-generic-error', + templateUrl: './genericError.component.html', + styleUrls: ['./genericError.component.css'] +}) +export class GenericErrorComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/quartz-manager-frontend/src/assets/image/error.svg b/quartz-manager-frontend/src/assets/image/error.svg new file mode 100644 index 0000000..a310786 --- /dev/null +++ b/quartz-manager-frontend/src/assets/image/error.svg @@ -0,0 +1 @@ + \ No newline at end of file