BP 660: changed error handling
diff --git a/src/app/core/components/error/error.component.html b/src/app/core/components/error/error.component.html
index de4ea0d..82a26fa 100644
--- a/src/app/core/components/error/error.component.html
+++ b/src/app/core/components/error/error.component.html
@@ -11,7 +11,7 @@
-->
<p-toast class="mt-5" baseZIndex="1060"></p-toast>
<p *ngIf="errorMessage">
- <ngb-alert [dismissible]="false" type="danger">
- <strong>Fehler {{errorMessage.httpStatus}}:</strong> {{errorMessage.message}}
+ <ngb-alert [dismissible]="false" type="danger" *ngFor="let error of errorMessage">
+ <strong>Fehler {{error.httpStatus}}:</strong> {{error.message}}
</ngb-alert>
</p>
\ No newline at end of file
diff --git a/src/app/core/components/error/error.component.ts b/src/app/core/components/error/error.component.ts
index 28cce22..4e0e61a 100644
--- a/src/app/core/components/error/error.component.ts
+++ b/src/app/core/components/error/error.component.ts
@@ -19,7 +19,7 @@
styleUrls: ['./error.component.scss']
})
export class ErrorComponent implements OnInit {
- errorMessage: ErrorObject;
+ errorMessage: ErrorObject[];
constructor(
public utilService: UtilService,
private ref: ChangeDetectorRef,
diff --git a/src/app/core/interceptors/error.interceptor.ts b/src/app/core/interceptors/error.interceptor.ts
index ffb623e..8b23952 100644
--- a/src/app/core/interceptors/error.interceptor.ts
+++ b/src/app/core/interceptors/error.interceptor.ts
@@ -8,37 +8,47 @@
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
import { Injectable, ErrorHandler, Injector } from '@angular/core';
+import { HttpErrorResponse } from '@angular/common/http';
+
+import { MessageService } from 'primeng/components/common/messageservice';
+
import { UtilService } from '@core/services/util.service';
import { ErrorObject } from '@shared/model/ErrorObject';
-import { HttpErrorResponse } from '@angular/common/http';
@Injectable()
export class ErrorInterceptor implements ErrorHandler {
constructor(
- private injector: Injector
+ private injector: Injector,
+ private messageService: MessageService
) { }
handleError(httpErrorResponse: HttpErrorResponse) {
const utilService = this.injector.get(UtilService);
-
- let errorMessage: ErrorObject = {
- httpStatus: httpErrorResponse.error.httpStatus,
- message: httpErrorResponse.error.message,
- localizedMessage: httpErrorResponse.error.localizedMessage
- };
- if (errorMessage.httpStatus === undefined) {
- errorMessage.httpStatus = httpErrorResponse.status;
- errorMessage.message = httpErrorResponse.statusText;
- errorMessage.localizedMessage = httpErrorResponse.statusText;
- }
-
-
- const encodedString = String.fromCharCode.apply(null, new Uint8Array(httpErrorResponse.error));
- const decodedString = decodeURIComponent(escape(encodedString));
- if (decodedString) {
- errorMessage = JSON.parse(decodedString);
+ let errorMessage: ErrorObject[];
+ if (Array.isArray(httpErrorResponse.error)) { // should be any kind of validation error
+ httpErrorResponse.error.forEach(error => {
+ error.httpStatus = httpErrorResponse.status;
+ });
+ errorMessage = httpErrorResponse.error;
+ } else if (httpErrorResponse.error.byteLength !== undefined) { // reports error
+ const encodedString = String.fromCharCode.apply(null, new Uint8Array(httpErrorResponse.error));
+ const decodedString = decodeURIComponent(escape(encodedString));
+ if (decodedString) {
+ errorMessage = [JSON.parse(decodedString)];
+ }
+ } else { // any other error
+ errorMessage = [{
+ httpStatus: httpErrorResponse.error.httpStatus,
+ message: httpErrorResponse.error.message,
+ localizedMessage: httpErrorResponse.error.localizedMessage
+ }];
+ if (errorMessage[0].httpStatus === undefined) {
+ errorMessage[0].httpStatus = httpErrorResponse.status;
+ errorMessage[0].message = httpErrorResponse.statusText;
+ errorMessage[0].localizedMessage = httpErrorResponse.statusText;
+ }
}
utilService.throwError(errorMessage);
diff --git a/src/app/core/services/util.service.ts b/src/app/core/services/util.service.ts
index 70bd8f6..9ba13fc 100644
--- a/src/app/core/services/util.service.ts
+++ b/src/app/core/services/util.service.ts
@@ -18,7 +18,7 @@
providedIn: 'root'
})
export class UtilService {
- error$: Subject<ErrorObject> = new Subject();
+ error$: Subject<ErrorObject[]> = new Subject();
loadingState$: BehaviorSubject<boolean> = new BehaviorSubject(false);
constructor(
@@ -34,7 +34,7 @@
}
}
- throwError(errorObject: ErrorObject) {
+ throwError(errorObject: ErrorObject[]) {
this.error$.next(errorObject);
}
diff --git a/src/app/masterdata-management/components/organisation/organisation.component.html b/src/app/masterdata-management/components/organisation/organisation.component.html
index 0505cc5..33d0596 100644
--- a/src/app/masterdata-management/components/organisation/organisation.component.html
+++ b/src/app/masterdata-management/components/organisation/organisation.component.html
@@ -108,21 +108,21 @@
<div class="row">
<div class="col-md-6">
<div class="form-group row">
- <label for="latitude" class="col-sm-3 col-form-label">WGS84 Koordinate 1 dienstl. (geolänge)</label>
+ <label for="longitude" class="col-sm-3 col-form-label">WGS84 Koordinate 1 dienstl. (geolänge)</label>
<div class="col-sm-9">
- <input type="text" class="form-control" id="latitude" placeholder="latitude" formControlName="latitude"
+ <input type="text" class="form-control" id="longitude" placeholder="longitude" formControlName="longitude"
required>
- <ok-error [control]="form.controls.address.controls['latitude']"></ok-error>
+ <ok-error [control]="form.controls.address.controls['longitude']"></ok-error>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
- <label for="longitude" class="col-sm-3 col-form-label">WGS84 Koordinate 2 dienstl. (geobreite)</label>
+ <label for="latitude" class="col-sm-3 col-form-label">WGS84 Koordinate 2 dienstl. (geobreite)</label>
<div class="col-sm-9">
- <input type="text" class="form-control" id="longitude" placeholder="longitude" formControlName="longitude"
+ <input type="text" class="form-control" id="latitude" placeholder="latitude" formControlName="latitude"
required>
- <ok-error [control]="form.controls.address.controls['longitude']"></ok-error>
+ <ok-error [control]="form.controls.address.controls['latitude']"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/masterdata-management/components/user/user.component.html b/src/app/masterdata-management/components/user/user.component.html
index 2ff0819..7261d09 100644
--- a/src/app/masterdata-management/components/user/user.component.html
+++ b/src/app/masterdata-management/components/user/user.component.html
@@ -224,17 +224,17 @@
<div class="row">
<div class="col-md-6">
<div class="form-group row">
- <label for="latitude" class="col-sm-3 col-form-label">WGS84 Koordinate 1 dienstl. (geolänge)</label>
+ <label for="longitude" class="col-sm-3 col-form-label">WGS84 Koordinate 1 dienstl. (geolänge)</label>
<div class="col-sm-9">
- <input type="text" class="form-control" id="latitude" formControlName="latitude" required>
+ <input type="text" class="form-control" id="longitude" formControlName="longitude" required>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
- <label for="longitude" class="col-sm-3 col-form-label">WGS84 Koordinate 2 dienstl. (geobreite)</label>
+ <label for="latitude" class="col-sm-3 col-form-label">WGS84 Koordinate 2 dienstl. (geobreite)</label>
<div class="col-sm-9">
- <input type="text" class="form-control" id="longitude" formControlName="longitude" required>
+ <input type="text" class="form-control" id="latitude" formControlName="latitude" required>
</div>
</div>
</div>
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
index 2d52a5b..1cf41bf 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
@@ -62,6 +62,7 @@
generate() {
if (FormUtil.validate(this.form)) {
const formValue = this.form.getRawValue();
+ FormUtil.formatDates(formValue, ['validFrom', 'validTo']);
const object = {
validFrom: formValue.validFrom,
validTo: formValue.validTo,
@@ -73,7 +74,6 @@
object['standByListId'] = formValue['standById'];
}
- FormUtil.formatDates(object, ['validFrom', 'validTo']);
this.reportingService.generateReport(object, formValue).subscribe(response => {
let mimeType = '';