Skip to content

Commit 5fb82e0

Browse files
authored
Bugfix/iot 1581 gateway deleted mismatch (#177)
* Made error message service look at error message before just error. * Added error messages if trying to delete organizations with gateways. * added some margin to for error box.
1 parent b651829 commit 5fb82e0

File tree

6 files changed

+41
-7
lines changed

6 files changed

+41
-7
lines changed

src/app/admin/organisation/organisation-detail/organisation-detail.component.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@
1010
>
1111
</app-top-bar>
1212
<div class="container-fluid">
13+
<div *ngIf="errorMessages" class="error-messages p-3">
14+
<ul class="mb-0">
15+
<li *ngFor="let error of errorMessages">
16+
{{ error | translate }}
17+
</li>
18+
</ul>
19+
</div>
1320
<div class="row">
1421
<div class="col-12">
1522
<div class="jumbotron">

src/app/admin/organisation/organisation-detail/organisation-detail.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import { environment } from "@environments/environment";
1717
import { Title } from "@angular/platform-browser";
1818
import { MeService } from "@shared/services/me.service";
1919
import { OrganizationAccessScope } from "@shared/enums/access-scopes";
20+
import { ErrorMessageService } from "@shared/error-message.service";
21+
import { HttpErrorResponse } from "@angular/common/http";
2022

2123
@Component({
2224
selector: "app-organisation-detail",
@@ -34,6 +36,7 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy
3436
private applicationsSubscription: Subscription;
3537
private deleteDialogSubscription: Subscription;
3638
public dropdownButton: DropdownButton;
39+
public errorMessages: string[];
3740

3841
organisation: OrganisationResponse;
3942
public backButton: BackButton = {
@@ -53,7 +56,8 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy
5356
private deleteDialogService: DeleteDialogService,
5457
private location: Location,
5558
private titleService: Title,
56-
private meService: MeService
59+
private meService: MeService,
60+
private errorMessageService: ErrorMessageService
5761
) {}
5862

5963
ngOnChanges(changes: SimpleChanges): void {}
@@ -100,6 +104,10 @@ export class OrganisationDetailComponent implements OnInit, OnChanges, OnDestroy
100104
this.deleteDialogSubscription = this.deleteDialogService.showSimpleDialog().subscribe(response => {
101105
if (response) {
102106
this.organisationService.delete(this.organisation.id).subscribe(response => {
107+
if (response instanceof HttpErrorResponse) {
108+
this.errorMessages = this.errorMessageService.handleErrorMessageWithFields(response).errorMessages;
109+
return;
110+
}
103111
this.location.back();
104112
});
105113
} else {

src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
<div class="mat-elevation-z8">
1+
<div *ngIf="errorMessages" class="error-messages p-3">
2+
<ul class="mb-0">
3+
<li *ngFor="let error of errorMessages">
4+
{{ error | translate }}
5+
</li>
6+
</ul>
7+
</div>
8+
<div class="mat-elevation-z8 mt-3">
29
<div class="loading-shade" *ngIf="isLoadingResults">
310
<mat-spinner *ngIf="isLoadingResults"></mat-spinner>
411
</div>

src/app/admin/organisation/organisation-list/organisation-tabel/organisation-tabel.component.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import { MatPaginator, PageEvent } from "@angular/material/paginator";
88
import { environment } from "@environments/environment";
99
import { startWith, switchMap, map, catchError } from "rxjs/operators";
1010
import { DefaultPageSizeOptions } from "@shared/constants/page.constants";
11+
import { ErrorMessageService } from "@shared/error-message.service";
12+
import { HttpErrorResponse } from "@angular/common/http";
1113

1214
@Component({
1315
selector: "app-organisation-tabel",
@@ -30,8 +32,13 @@ export class OrganisationTabelComponent implements AfterViewInit {
3032
pageSizeOptions = DefaultPageSizeOptions;
3133

3234
isLoadingResults = true;
35+
public errorMessages: string[];
3336

34-
constructor(private organisationService: OrganisationService, private deleteDialogService: DeleteDialogService) {}
37+
constructor(
38+
private organisationService: OrganisationService,
39+
private deleteDialogService: DeleteDialogService,
40+
private errorMessageService: ErrorMessageService
41+
) {}
3542

3643
ngAfterViewInit() {
3744
// If the user changes the sort order, reset back to the first page.
@@ -72,6 +79,10 @@ export class OrganisationTabelComponent implements AfterViewInit {
7279
this.deleteDialogService.showSimpleDialog().subscribe(response => {
7380
if (response) {
7481
this.organisationService.delete(element.id).subscribe(response => {
82+
if (response instanceof HttpErrorResponse) {
83+
this.errorMessages = this.errorMessageService.handleErrorMessageWithFields(response).errorMessages;
84+
return;
85+
}
7586
if (response.ok) {
7687
this.refresh();
7788
}

src/app/shared/error-message.service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ export class ErrorMessageService {
2828

2929
public handleErrorMessageWithFields(error: HttpErrorResponse | Pick<HttpErrorResponse, "error">): ErrorMessage {
3030
const errors: ErrorMessage = { errorFields: [], errorMessages: [] };
31-
if (typeof error.error === "string") {
31+
if (typeof error.error?.message === "string") {
32+
errors.errorMessages.push(error.error.message);
33+
} else if (typeof error.error === "string") {
3234
errors.errorMessages.push(error.error);
3335
} else if (typeof error.error?.error === "string" && !Array.isArray(error.error?.message)) {
3436
errors.errorMessages.push(error.error.error);
35-
} else if (typeof error.error?.message === "string") {
36-
errors.errorMessages.push(error.error.message);
3737
} else {
3838
error.error.message.forEach(err => {
3939
if (err.children?.length > 0) {

src/assets/i18n/da.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,8 @@
10341034
"INVALID-VALUE-IN-KEY-VALUE-PAIR": "En eller flere værdier er ugyldige. Det skal være en gyldig tekstværdi",
10351035
"INVALID-DATE": "Datoen er ugyldig",
10361036
"USER-ALREADY-HAVE-MAIL": "Brugeren har allerede sat en email",
1037-
"EMAIL-ALREADY-IN-USE": "Den valgte email er allerede i brug. Kontakt din lokale administrator for hjælp."
1037+
"EMAIL-ALREADY-IN-USE": "Den valgte email er allerede i brug. Kontakt din lokale administrator for hjælp.",
1038+
"ORGANIZATION-GATEWAYS-EXISTS": "Denne organisation kan ikke slettes, fordi der er tilknyttet en eller flere gateways. Slet først disse eller flyt dem til en ny organisation."
10381039
},
10391040
"PROFILES": {
10401041
"NAME": "LoRaWAN profiler",

0 commit comments

Comments
 (0)