-
ERROR {{status}}
-
{{errorMessage?.message}}
-
-
API response:
→ {{comment}}
-
+
+
{{message.type | uppercase}} {{status}} | {{message?.message}}
+
+
+
+ Response in detail:
→
+
+
+
+
Please come back in a few minutes and try to reload the page.
+
diff --git a/src/app/main/error/error.component.scss b/src/app/main/status/status.component.scss
similarity index 82%
rename from src/app/main/error/error.component.scss
rename to src/app/main/status/status.component.scss
index cb38084733..f32c15740f 100644
--- a/src/app/main/error/error.component.scss
+++ b/src/app/main/status/status.component.scss
@@ -1,6 +1,6 @@
@import "../../../assets/style/responsive";
-.error-page {
+.status-page {
background: #fff;
height: 100%;
width: 100%;
@@ -12,16 +12,18 @@
align-items: stretch;
align-content: space-evenly;
padding-top: 120px;
+ width: 480px;
+ margin: 0 auto;
.image,
.text {
justify-self: stretch;
align-self: stretch;
box-sizing: border-box;
- padding: 24px;
max-height: 280px;
+ width: 360px;
- &.error-message {
+ &.status-message {
line-height: 1.5;
margin: 0 auto;
}
@@ -29,7 +31,7 @@
img {
display: block;
margin: 0 auto;
- max-width: 400px;
+ max-width: 360px;
}
}
}
@@ -44,7 +46,7 @@
.image {
display: none;
}
- .error-page .container {
+ .status-page .container {
padding-top: 30px;
}
}
diff --git a/src/app/main/status/status.component.spec.ts b/src/app/main/status/status.component.spec.ts
new file mode 100644
index 0000000000..76be25ea3b
--- /dev/null
+++ b/src/app/main/status/status.component.spec.ts
@@ -0,0 +1,145 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { MatDialogRef } from '@angular/material/dialog';
+import { MatIconModule } from '@angular/material/icon';
+import { By } from '@angular/platform-browser';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { RouterTestingModule } from '@angular/router/testing';
+import { HealthEndpointSystem, MockHealth } from '@dasch-swiss/dsp-js';
+import { of } from 'rxjs';
+import { HttpStatusMsg } from 'src/assets/http/statusMsg';
+import { DspApiConnectionToken } from '../declarations/dsp-api-tokens';
+import { StatusComponent } from './status.component';
+
+/**
+ * test host component to simulate parent component.
+ * dsp specific http status message
+ */
+@Component({
+ template: `
+
`
+})
+class NoContentTestHostComponent implements OnInit {
+
+ @ViewChild('warning', { static: false }) StatusComponent: StatusComponent;
+
+ constructor() {
+ }
+
+ ngOnInit() { }
+}
+
+/**
+ * test host component to simulate parent component.
+ * default http status message
+ */
+@Component({
+ template: `
+
`
+})
+class TeapotTestHostComponent implements OnInit {
+
+ @ViewChild('error', { static: false }) StatusComponent: StatusComponent;
+
+ constructor() {
+ }
+
+ ngOnInit() { }
+}
+
+describe('StatusComponent', () => {
+ let noContentTestHostComponent: NoContentTestHostComponent;
+ let noContentTestHostFixture: ComponentFixture
;
+
+ let teapotTestHostComponent: TeapotTestHostComponent;
+ let teapotTestHostFixture: ComponentFixture;
+
+ let status: HttpStatusMsg;
+
+ const apiEndpointSpyObj = {
+ system: {
+ healthEndpoint: jasmine.createSpyObj('healthEndpoint', ['getHealthStatus'])
+ }
+ };
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ StatusComponent,
+ NoContentTestHostComponent,
+ TeapotTestHostComponent
+ ],
+ imports: [
+ BrowserAnimationsModule,
+ MatIconModule,
+ RouterTestingModule
+ ],
+ providers: [
+ HttpStatusMsg,
+ {
+ provide: MatDialogRef,
+ useValue: {}
+ },
+ {
+ provide: DspApiConnectionToken,
+ useValue: apiEndpointSpyObj
+ },
+ ]
+ }).compileComponents();
+
+ status = TestBed.inject(HttpStatusMsg);
+
+ }));
+
+ beforeEach(() => {
+ noContentTestHostFixture = TestBed.createComponent(NoContentTestHostComponent);
+ noContentTestHostComponent = noContentTestHostFixture.componentInstance;
+ noContentTestHostFixture.detectChanges();
+
+ teapotTestHostFixture = TestBed.createComponent(TeapotTestHostComponent);
+ teapotTestHostComponent = teapotTestHostFixture.componentInstance;
+ teapotTestHostFixture.detectChanges();
+
+ const dspConnSpy = TestBed.inject(DspApiConnectionToken);
+ (dspConnSpy.system.healthEndpoint as jasmine.SpyObj).getHealthStatus.and.callFake(
+ () => {
+ const health = MockHealth.mockRunning();
+ return of(health);
+ }
+ );
+ });
+
+ it('should create', () => {
+ expect(noContentTestHostComponent).toBeTruthy();
+ });
+
+ it('should display "warning 204 | no content"', () => {
+ expect(noContentTestHostComponent.StatusComponent).toBeTruthy();
+ expect(noContentTestHostComponent.StatusComponent.message.status).toEqual(204);
+ expect(noContentTestHostComponent.StatusComponent.message.type).toEqual('warning');
+
+ const hostCompDe = noContentTestHostFixture.debugElement;
+
+ const messageEl = hostCompDe.query(By.directive(StatusComponent));
+
+ const titleEle = messageEl.query(By.css('.mat-title'));
+
+ expect(titleEle.nativeElement.innerText).toEqual('WARNING 204 | No Content');
+ });
+
+ it('should display "error 418 | I\'m a teapot"', () => {
+ expect(teapotTestHostComponent.StatusComponent).toBeTruthy();
+ expect(teapotTestHostComponent.StatusComponent.message.status).toEqual(418);
+ expect(teapotTestHostComponent.StatusComponent.message.type).toEqual('error');
+
+ const hostCompDe = teapotTestHostFixture.debugElement;
+
+ const messageEl = hostCompDe.query(By.directive(StatusComponent));
+
+ const titleEle = messageEl.query(By.css('.mat-title'));
+
+ expect(titleEle.nativeElement.innerText).toEqual('ERROR 418 | I\'m a teapot');
+ });
+
+ // todo: check the input, check the switch (display 403 template if we get a 403 error, same for 404)
+});
diff --git a/src/app/main/error/error.component.ts b/src/app/main/status/status.component.ts
similarity index 64%
rename from src/app/main/error/error.component.ts
rename to src/app/main/status/status.component.ts
index 81290b2711..59dcf2ea84 100644
--- a/src/app/main/error/error.component.ts
+++ b/src/app/main/status/status.component.ts
@@ -2,31 +2,38 @@ import { Component, Inject, Input, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
import { ActivatedRoute } from '@angular/router';
import { ApiResponseData, ApiResponseError, HealthResponse, KnoraApiConnection } from '@dasch-swiss/dsp-js';
+import { HttpStatusMsg } from 'src/assets/http/statusMsg';
import { DspApiConnectionToken } from '../declarations/dsp-api-tokens';
-export interface ErrorMsg {
+export interface StatusMsg {
status: number;
message: string;
description: string;
- action: 'goback' | 'reload';
- image: string;
+ action?: 'goback' | 'reload' | 'goto';
+ type?: 'info' | 'warning' | 'error';
+ image?: string;
}
@Component({
- selector: 'app-error',
- templateUrl: './error.component.html',
- styleUrls: ['./error.component.scss']
+ selector: 'app-status',
+ templateUrl: './status.component.html',
+ styleUrls: ['./status.component.scss']
})
-export class ErrorComponent implements OnInit {
+export class StatusComponent implements OnInit {
@Input() status: number;
@Input() comment?: string;
+ @Input() url?: string;
refresh = false;
+
+ // error message that will be shown in template
+ message: StatusMsg;
+
// default error messages
- errorMessages: ErrorMsg[] = [
+ errorMessages: StatusMsg[] = [
{
status: 0,
message: 'Undefined Error',
@@ -35,11 +42,19 @@ export class ErrorComponent implements OnInit {
action: 'goback',
image: 'dsp-error.svg'
},
+ {
+ status: 204,
+ message: 'No Content',
+ description: `This content is not supported on small devices.
+ Please resize the browser window or switch to a desktop computer.`,
+ action: 'goback',
+ image: 'dsp-error.svg'
+ },
{
status: 403,
message: 'Forbidden',
description: `Invalid Permissions.
- Your request was valid but you do not have the
+ Your request was valid but you do not have the
necessary permissions to access it.`,
action: 'goback',
image: 'dsp-error-403.svg'
@@ -54,7 +69,7 @@ export class ErrorComponent implements OnInit {
{
status: 500,
message: 'Internal Server Error',
- description: `The DaSCH Service Platform is not available at the moment.
+ description: `The DaSCH Service Platform is not available at the moment.
An error has occured in a server side script.`,
action: 'reload',
image: 'dsp-error-500.svg'
@@ -62,20 +77,18 @@ export class ErrorComponent implements OnInit {
{
status: 503,
message: 'Service unavailable',
- description: `The DaSCH Service Platform is not available at the moment.
+ description: `The DaSCH Service Platform is not available at the moment.
The server is currently unavailable (overloaded or down).`,
action: 'reload',
image: 'dsp-error-503.svg'
}
];
- // error message that will be shown in template
- errorMessage: ErrorMsg;
-
constructor(
@Inject(DspApiConnectionToken) private _dspApiConnection: KnoraApiConnection,
private _titleService: Title,
- private _route: ActivatedRoute
+ private _route: ActivatedRoute,
+ private _status: HttpStatusMsg
) { }
ngOnInit() {
@@ -91,18 +104,30 @@ export class ErrorComponent implements OnInit {
this._titleService.setTitle('DSP | Error ' + this.status);
// get error message by status
- this.errorMessage = this.getErrorMsgByStatus(this.status);
+ this.message = this.getMsgByStatus(this.status);
+
+ }
+
+ getMsgByStatus(status: number): StatusMsg {
+ let msg = this.errorMessages.filter(x => x.status === status)[0];
- // if error message is not defined for the current status
- // use the default error message
- if (!this.errorMessage) {
- this.errorMessage = this.errorMessages[0];
+ if (!msg) {
+ msg = this._status.default[status];
+ msg.status = status;
+ msg.image = 'dsp-error.svg';
+ msg.action = (this.url ? 'goto' : undefined);
}
+ msg.type = this.getTypeByStatus(status);
+ return msg;
}
- getErrorMsgByStatus(status: number): ErrorMsg {
- return this.errorMessages.filter(x => x.status === status)[0];
+ getTypeByStatus(status: number): 'info' | 'warning' | 'error' {
+ switch (true) {
+ case status >= 0 && status < 203: return 'info';
+ case status >= 203 && status < 400: return 'warning';
+ case status >= 400 && status < 600: return 'error';
+ }
}
reload() {
diff --git a/src/app/project/board/board.component.spec.ts b/src/app/project/board/board.component.spec.ts
index cf9e97d719..2959757c42 100644
--- a/src/app/project/board/board.component.spec.ts
+++ b/src/app/project/board/board.component.spec.ts
@@ -12,7 +12,7 @@ import { of } from 'rxjs';
import { AppInitService } from 'src/app/app-init.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { CacheService } from '../../main/cache/cache.service';
import { BoardComponent } from './board.component';
@@ -29,7 +29,7 @@ describe('BoardComponent', () => {
declarations: [
BoardComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/board/board.component.ts b/src/app/project/board/board.component.ts
index 26f1076a07..795db8451f 100644
--- a/src/app/project/board/board.component.ts
+++ b/src/app/project/board/board.component.ts
@@ -8,7 +8,7 @@ import {
ReadProject
} from '@dasch-swiss/dsp-js';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { Session, SessionService } from 'src/app/main/services/session.service';
import { CacheService } from '../../main/cache/cache.service';
diff --git a/src/app/project/collaboration/add-user/add-user.component.spec.ts b/src/app/project/collaboration/add-user/add-user.component.spec.ts
index 7ad876f818..3e96dc2a23 100644
--- a/src/app/project/collaboration/add-user/add-user.component.spec.ts
+++ b/src/app/project/collaboration/add-user/add-user.component.spec.ts
@@ -12,7 +12,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { AppInitService } from 'src/app/app-init.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { AddUserComponent } from './add-user.component';
@@ -25,7 +25,7 @@ describe('AddUserComponent', () => {
declarations: [
AddUserComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/collaboration/add-user/add-user.component.ts b/src/app/project/collaboration/add-user/add-user.component.ts
index 81fc431e1c..5586a9ba5c 100644
--- a/src/app/project/collaboration/add-user/add-user.component.ts
+++ b/src/app/project/collaboration/add-user/add-user.component.ts
@@ -17,7 +17,7 @@ import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
import { existingNamesValidator } from 'src/app/main/directive/existing-name/existing-name.directive';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { AutocompleteItem } from 'src/app/workspace/search/advanced-search/resource-and-property-selection/search-select-property/specify-property-value/operator';
@Component({
diff --git a/src/app/project/collaboration/collaboration.component.html b/src/app/project/collaboration/collaboration.component.html
index d7f803156c..dcc3639e07 100644
--- a/src/app/project/collaboration/collaboration.component.html
+++ b/src/app/project/collaboration/collaboration.component.html
@@ -16,5 +16,5 @@
diff --git a/src/app/project/collaboration/collaboration.component.spec.ts b/src/app/project/collaboration/collaboration.component.spec.ts
index 2a3f68d0b3..ed00282e7e 100644
--- a/src/app/project/collaboration/collaboration.component.spec.ts
+++ b/src/app/project/collaboration/collaboration.component.spec.ts
@@ -19,7 +19,7 @@ import { AppInitService } from 'src/app/app-init.service';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { UsersListComponent } from 'src/app/system/users/users-list/users-list.component';
import { TestConfig } from 'test.config';
import { AddUserComponent } from './add-user/add-user.component';
@@ -41,7 +41,7 @@ describe('CollaborationComponent', () => {
UsersListComponent,
SelectGroupComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/collaboration/collaboration.component.ts b/src/app/project/collaboration/collaboration.component.ts
index b2517fdabf..4e0c448f93 100644
--- a/src/app/project/collaboration/collaboration.component.ts
+++ b/src/app/project/collaboration/collaboration.component.ts
@@ -10,7 +10,7 @@ import {
ReadUser
} from '@dasch-swiss/dsp-js';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { Session, SessionService } from 'src/app/main/services/session.service';
import { CacheService } from '../../main/cache/cache.service';
import { AddUserComponent } from './add-user/add-user.component';
diff --git a/src/app/project/collaboration/select-group/select-group.component.spec.ts b/src/app/project/collaboration/select-group/select-group.component.spec.ts
index 1e68cbe165..64e4691898 100644
--- a/src/app/project/collaboration/select-group/select-group.component.spec.ts
+++ b/src/app/project/collaboration/select-group/select-group.component.spec.ts
@@ -10,7 +10,7 @@ import { KnoraApiConnection } from '@dasch-swiss/dsp-js';
import { AppInitService } from 'src/app/app-init.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { SelectGroupComponent } from './select-group.component';
@@ -23,7 +23,7 @@ describe('SelectGroupComponent', () => {
declarations: [
SelectGroupComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/collaboration/select-group/select-group.component.ts b/src/app/project/collaboration/select-group/select-group.component.ts
index c487cca5e4..c938d9574e 100644
--- a/src/app/project/collaboration/select-group/select-group.component.ts
+++ b/src/app/project/collaboration/select-group/select-group.component.ts
@@ -3,7 +3,7 @@ import { FormControl } from '@angular/forms';
import { ApiResponseData, ApiResponseError, GroupsResponse, KnoraApiConnection } from '@dasch-swiss/dsp-js';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { AutocompleteItem } from 'src/app/workspace/search/advanced-search/resource-and-property-selection/search-select-property/specify-property-value/operator';
@Component({
diff --git a/src/app/project/list/list-info-form/list-info-form.component.spec.ts b/src/app/project/list/list-info-form/list-info-form.component.spec.ts
index 5e40f4083b..d3b335e872 100644
--- a/src/app/project/list/list-info-form/list-info-form.component.spec.ts
+++ b/src/app/project/list/list-info-form/list-info-form.component.spec.ts
@@ -18,7 +18,7 @@ import { AjaxResponse } from 'rxjs/ajax';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogHeaderComponent } from 'src/app/main/dialog/dialog-header/dialog-header.component';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { ListInfoFormComponent } from './list-info-form.component';
/**
@@ -80,7 +80,7 @@ describe('ListInfoFormComponent', () => {
ListInfoFormComponent,
DialogComponent,
DialogHeaderComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/list/list-info-form/list-info-form.component.ts b/src/app/project/list/list-info-form/list-info-form.component.ts
index 31d88f3cff..65af38cbe0 100644
--- a/src/app/project/list/list-info-form/list-info-form.component.ts
+++ b/src/app/project/list/list-info-form/list-info-form.component.ts
@@ -14,7 +14,7 @@ import {
UpdateListInfoRequest
} from '@dasch-swiss/dsp-js';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
@Component({
selector: 'app-list-info-form',
diff --git a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts
index a5a94b23f2..d220ca599b 100644
--- a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts
+++ b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts
@@ -14,7 +14,7 @@ import {
} from '@dasch-swiss/dsp-js';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
@Component({
selector: 'app-edit-list-item',
diff --git a/src/app/project/list/list-item-form/list-item-form.component.ts b/src/app/project/list/list-item-form/list-item-form.component.ts
index 54f852529f..f12728113c 100644
--- a/src/app/project/list/list-item-form/list-item-form.component.ts
+++ b/src/app/project/list/list-item-form/list-item-form.component.ts
@@ -15,7 +15,7 @@ import {
} from '@dasch-swiss/dsp-js';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
export class ListNodeOperation {
operation: 'create' | 'insert' | 'update' | 'delete' | 'reposition';
diff --git a/src/app/project/list/list-item/list-item.component.ts b/src/app/project/list/list-item/list-item.component.ts
index 0fe8750193..7697735afd 100644
--- a/src/app/project/list/list-item/list-item.component.ts
+++ b/src/app/project/list/list-item/list-item.component.ts
@@ -10,7 +10,7 @@ import {
RepositionChildNodeResponse
} from '@dasch-swiss/dsp-js';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { ListNodeOperation } from '../list-item-form/list-item-form.component';
@Component({
diff --git a/src/app/project/list/list.component.html b/src/app/project/list/list.component.html
index e54f47c003..ce36b70151 100644
--- a/src/app/project/list/list.component.html
+++ b/src/app/project/list/list.component.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/app/project/list/list.component.ts b/src/app/project/list/list.component.ts
index fbee16f4dd..578bd1db8e 100644
--- a/src/app/project/list/list.component.ts
+++ b/src/app/project/list/list.component.ts
@@ -19,7 +19,7 @@ import { AppGlobal } from 'src/app/app-global';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { Session, SessionService } from 'src/app/main/services/session.service';
@Component({
diff --git a/src/app/project/ontology/ontology-form/ontology-form.component.ts b/src/app/project/ontology/ontology-form/ontology-form.component.ts
index 4e476a40ca..edd595dad2 100644
--- a/src/app/project/ontology/ontology-form/ontology-form.component.ts
+++ b/src/app/project/ontology/ontology-form/ontology-form.component.ts
@@ -12,7 +12,7 @@ import {
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { existingNamesValidator } from 'src/app/main/directive/existing-name/existing-name.directive';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { CustomRegex } from 'src/app/workspace/resource/values/custom-regex';
import { OntologyService } from '../ontology.service';
diff --git a/src/app/project/ontology/ontology.component.html b/src/app/project/ontology/ontology.component.html
index 5e8662e9a9..a10cb245ca 100644
--- a/src/app/project/ontology/ontology.component.html
+++ b/src/app/project/ontology/ontology.component.html
@@ -211,10 +211,9 @@
diff --git a/src/app/project/ontology/ontology.component.spec.ts b/src/app/project/ontology/ontology.component.spec.ts
index cb19c687bd..92da0bb479 100644
--- a/src/app/project/ontology/ontology.component.spec.ts
+++ b/src/app/project/ontology/ontology.component.spec.ts
@@ -31,7 +31,7 @@ import { AjaxResponse } from 'rxjs/ajax';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { OntologyComponent } from './ontology.component';
import { PropertyInfoComponent } from './property-info/property-info.component';
@@ -64,7 +64,7 @@ describe('OntologyComponent', () => {
declarations: [
OntologyComponent,
DialogComponent,
- ErrorComponent,
+ StatusComponent,
PropertyInfoComponent,
ResourceClassInfoComponent
],
diff --git a/src/app/project/ontology/ontology.component.ts b/src/app/project/ontology/ontology.component.ts
index 78ef38f7f5..87bc38b425 100644
--- a/src/app/project/ontology/ontology.component.ts
+++ b/src/app/project/ontology/ontology.component.ts
@@ -24,7 +24,7 @@ import {
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { Session, SessionService } from 'src/app/main/services/session.service';
import { SortingService } from 'src/app/main/services/sorting.service';
import { DefaultProperties, PropertyCategory, PropertyInfoObject } from './default-data/default-properties';
diff --git a/src/app/project/ontology/property-form/property-form.component.ts b/src/app/project/ontology/property-form/property-form.component.ts
index 2f6f37562d..8e04eb8f3c 100644
--- a/src/app/project/ontology/property-form/property-form.component.ts
+++ b/src/app/project/ontology/property-form/property-form.component.ts
@@ -22,7 +22,7 @@ import {
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { existingNamesValidator } from 'src/app/main/directive/existing-name/existing-name.directive';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { CustomRegex } from 'src/app/workspace/resource/values/custom-regex';
import { AutocompleteItem } from 'src/app/workspace/search/advanced-search/resource-and-property-selection/search-select-property/specify-property-value/operator';
import { DefaultProperties, DefaultProperty, PropertyCategory, PropertyInfoObject } from '../default-data/default-properties';
diff --git a/src/app/project/ontology/property-info/property-info.component.ts b/src/app/project/ontology/property-info/property-info.component.ts
index cd1278464c..7e4b59c2d1 100644
--- a/src/app/project/ontology/property-info/property-info.component.ts
+++ b/src/app/project/ontology/property-info/property-info.component.ts
@@ -16,7 +16,7 @@ import {
} from '@dasch-swiss/dsp-js';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import {
DefaultProperties,
DefaultProperty,
diff --git a/src/app/project/ontology/resource-class-form/resource-class-form.component.spec.ts b/src/app/project/ontology/resource-class-form/resource-class-form.component.spec.ts
index 653bed3e01..7bc8f51818 100644
--- a/src/app/project/ontology/resource-class-form/resource-class-form.component.spec.ts
+++ b/src/app/project/ontology/resource-class-form/resource-class-form.component.spec.ts
@@ -22,7 +22,7 @@ import { AppInitService } from 'src/app/app-init.service';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { PropertyFormComponent } from '../property-form/property-form.component';
import { ResourceClassFormComponent } from './resource-class-form.component';
@@ -47,7 +47,7 @@ describe('ResourceClassFormComponent', () => {
TestHostResourceClassFormComponent,
PropertyFormComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
HttpClientTestingModule,
diff --git a/src/app/project/ontology/resource-class-form/resource-class-form.component.ts b/src/app/project/ontology/resource-class-form/resource-class-form.component.ts
index 46edafac8d..337b762510 100644
--- a/src/app/project/ontology/resource-class-form/resource-class-form.component.ts
+++ b/src/app/project/ontology/resource-class-form/resource-class-form.component.ts
@@ -18,7 +18,7 @@ import { AppGlobal } from 'src/app/app-global';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { existingNamesValidator } from 'src/app/main/directive/existing-name/existing-name.directive';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { CustomRegex } from 'src/app/workspace/resource/values/custom-regex';
import { OntologyService } from '../ontology.service';
diff --git a/src/app/project/ontology/resource-class-info/resource-class-info.component.ts b/src/app/project/ontology/resource-class-info/resource-class-info.component.ts
index b901ce92e6..9089c32e2e 100644
--- a/src/app/project/ontology/resource-class-info/resource-class-info.component.ts
+++ b/src/app/project/ontology/resource-class-info/resource-class-info.component.ts
@@ -18,7 +18,7 @@ import {
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { NotificationService } from 'src/app/main/services/notification.service';
import { SortingService } from 'src/app/main/services/sorting.service';
import { DefaultProperties, DefaultProperty, PropertyCategory, PropertyInfoObject } from '../default-data/default-properties';
diff --git a/src/app/project/permission/add-group/add-group.component.html b/src/app/project/permission/add-group/add-group.component.html
index 94d9a73b48..e69de29bb2 100644
--- a/src/app/project/permission/add-group/add-group.component.html
+++ b/src/app/project/permission/add-group/add-group.component.html
@@ -1,3 +0,0 @@
-
- add-group works!
-
diff --git a/src/app/project/permission/permission.component.html b/src/app/project/permission/permission.component.html
index aaa6ae479e..b8290c8025 100644
--- a/src/app/project/permission/permission.component.html
+++ b/src/app/project/permission/permission.component.html
@@ -21,5 +21,5 @@
diff --git a/src/app/project/permission/permission.component.spec.ts b/src/app/project/permission/permission.component.spec.ts
index 34e3401376..cf13fcf122 100644
--- a/src/app/project/permission/permission.component.spec.ts
+++ b/src/app/project/permission/permission.component.spec.ts
@@ -12,7 +12,7 @@ import { AppInitService } from 'src/app/app-init.service';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { GroupsListComponent } from 'src/app/system/groups/groups-list/groups-list.component';
import { TestConfig } from 'test.config';
import { AddGroupComponent } from './add-group/add-group.component';
@@ -32,7 +32,7 @@ describe('PermissionComponent', () => {
AddGroupComponent,
GroupsListComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/permission/permission.component.ts b/src/app/project/permission/permission.component.ts
index c2807f9a12..4ce7686854 100644
--- a/src/app/project/permission/permission.component.ts
+++ b/src/app/project/permission/permission.component.ts
@@ -9,7 +9,7 @@ import {
} from '@dasch-swiss/dsp-js';
import { CacheService } from 'src/app/main/cache/cache.service';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { Session, SessionService } from 'src/app/main/services/session.service';
import { AddGroupComponent } from './add-group/add-group.component';
diff --git a/src/app/project/project-form/project-form.component.spec.ts b/src/app/project/project-form/project-form.component.spec.ts
index a2ec4fd919..d6958fa8e9 100644
--- a/src/app/project/project-form/project-form.component.spec.ts
+++ b/src/app/project/project-form/project-form.component.spec.ts
@@ -12,7 +12,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { AppInitService } from 'src/app/app-init.service';
import { DspApiConfigToken, DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { DialogComponent } from 'src/app/main/dialog/dialog.component';
-import { ErrorComponent } from 'src/app/main/error/error.component';
+import { StatusComponent } from 'src/app/main/status/status.component';
import { TestConfig } from 'test.config';
import { ProjectFormComponent } from './project-form.component';
@@ -26,7 +26,7 @@ describe('ProjectFormComponent', () => {
declarations: [
ProjectFormComponent,
DialogComponent,
- ErrorComponent
+ StatusComponent
],
imports: [
BrowserAnimationsModule,
diff --git a/src/app/project/project-form/project-form.component.ts b/src/app/project/project-form/project-form.component.ts
index d6e367c8cb..abe8a0d1f2 100644
--- a/src/app/project/project-form/project-form.component.ts
+++ b/src/app/project/project-form/project-form.component.ts
@@ -17,7 +17,7 @@ import {
} from '@dasch-swiss/dsp-js';
import { DspApiConnectionToken } from 'src/app/main/declarations/dsp-api-tokens';
import { existingNamesValidator } from 'src/app/main/directive/existing-name/existing-name.directive';
-import { ErrorHandlerService } from 'src/app/main/error/error-handler.service';
+import { ErrorHandlerService } from 'src/app/main/services/error-handler.service';
import { NotificationService } from 'src/app/main/services/notification.service';
import { SessionService } from 'src/app/main/services/session.service';
import { CacheService } from '../../main/cache/cache.service';
diff --git a/src/app/project/project.component.html b/src/app/project/project.component.html
index 3315c3e1bd..d8abe7dd91 100644
--- a/src/app/project/project.component.html
+++ b/src/app/project/project.component.html
@@ -1,4 +1,4 @@
-