Skip to content

Commit 84a2d50

Browse files
committed
Added alert when error ocurrs listing catalog products, orders and campaigns in SPA app
1 parent 96c55b8 commit 84a2d50

10 files changed

Lines changed: 74 additions & 26 deletions

File tree

src/Web/WebSPA/Client/modules/campaigns/campaigns.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<esh-header url="/catalog">Back to catalog</esh-header>
22
<div class="container">
3+
<div class="alert alert-warning esh-campaign-alert" role="alert" [hidden]="!errorReceived">
4+
Error requesting campaigns list, please try later on
5+
</div>
36
<div *ngIf="campaigns?.data?.length > 0">
47
<esh-pager [model]="paginationInfo" (changed)="onPageChanged($event)"></esh-pager>
58
<div class="card-group esh-campaign-items row">

src/Web/WebSPA/Client/modules/campaigns/campaigns.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,8 @@
6262
text-align: center;
6363
text-transform: uppercase;
6464
}
65+
66+
&-alert {
67+
margin-top: 10px;
68+
}
6569
}

src/Web/WebSPA/Client/modules/campaigns/campaigns.component.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { CampaignsService } from './campaigns.service';
33
import { ICampaign } from '../shared/models/campaign.model';
44
import { IPager } from '../shared/models/pager.model';
55
import { ConfigurationService } from '../shared/services/configuration.service';
6+
import { Observable } from 'rxjs/Observable';
67

78
@Component({
89
selector: 'esh-campaigns',
@@ -14,6 +15,7 @@ export class CampaignsComponent implements OnInit {
1415
paginationInfo: IPager;
1516
campaigns: ICampaign;
1617
isCampaignDetailFunctionEnabled: boolean = false;
18+
errorReceived: boolean;
1719

1820
constructor(private service: CampaignsService, private configurationService: ConfigurationService) { }
1921

@@ -37,20 +39,28 @@ export class CampaignsComponent implements OnInit {
3739
}
3840

3941
getCampaigns(pageSize: number, pageIndex: number) {
40-
this.service.getCampaigns(pageIndex, pageSize).subscribe(campaigns => {
41-
this.campaigns = campaigns;
42-
this.paginationInfo = {
43-
actualPage : campaigns.pageIndex,
44-
itemsPage : campaigns.pageSize,
45-
totalItems : campaigns.count,
46-
totalPages: Math.ceil(campaigns.count / campaigns.pageSize),
47-
items: campaigns.pageSize
48-
};
42+
this.errorReceived = false;
43+
this.service.getCampaigns(pageIndex, pageSize)
44+
.catch((err) => this.handleError(err))
45+
.subscribe(campaigns => {
46+
this.campaigns = campaigns;
47+
this.paginationInfo = {
48+
actualPage : campaigns.pageIndex,
49+
itemsPage : campaigns.pageSize,
50+
totalItems : campaigns.count,
51+
totalPages: Math.ceil(campaigns.count / campaigns.pageSize),
52+
items: campaigns.pageSize
53+
};
4954
});
5055
}
5156

5257
onNavigateToDetails(uri: string) {
5358
window.open(uri, "_blank");
5459
}
60+
61+
private handleError(error: any) {
62+
this.errorReceived = true;
63+
return Observable.throw(error);
64+
}
5565
}
5666

src/Web/WebSPA/Client/modules/catalog/catalog.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
<section class="esh-catalog-filters">
88
<div class="container">
9+
<div class="alert alert-warning esh-catalog-alert" role="alert" [hidden]="!errorReceived">
10+
Error requesting catalog products, please try later on
11+
</div>
912
<label class="esh-catalog-label" data-title="brand">
1013
<select class="esh-catalog-filter" (change)="onBrandFilterChanged($event, $event.target.value)">
1114
<option *ngFor="let brand of brands" [value]="brand.id">{{brand.brand}}</option>

src/Web/WebSPA/Client/modules/catalog/catalog.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,8 @@
151151
content: '$';
152152
}
153153
}
154+
155+
&-alert {
156+
margin-top: 10px;
157+
}
154158
}

src/Web/WebSPA/Client/modules/catalog/catalog.component.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ICatalogBrand } from '../shared/models/catalogBrand.model';
1010
import { IPager } from '../shared/models/pager.model';
1111
import { BasketWrapperService} from '../shared/services/basket.wrapper.service';
1212
import { SecurityService } from '../shared/services/security.service';
13+
import { Observable } from 'rxjs/Observable';
1314

1415
@Component({
1516
selector: 'esh-catalog .esh-catalog',
@@ -25,6 +26,7 @@ export class CatalogComponent implements OnInit {
2526
paginationInfo: IPager;
2627
authenticated: boolean = false;
2728
authSubscription: Subscription;
29+
errorReceived: boolean;
2830

2931
constructor(private service: CatalogService, private basketService: BasketWrapperService, private configurationService: ConfigurationService, private securityService: SecurityService) {
3032
this.authenticated = securityService.IsAuthorized;
@@ -79,17 +81,18 @@ export class CatalogComponent implements OnInit {
7981
}
8082

8183
getCatalog(pageSize: number, pageIndex: number, brand?: number, type?: number) {
82-
this.service.getCatalog(pageIndex, pageSize, brand, type).subscribe(catalog => {
83-
this.catalog = catalog;
84-
85-
this.paginationInfo = {
86-
actualPage : catalog.pageIndex,
87-
itemsPage : catalog.pageSize,
88-
totalItems : catalog.count,
89-
totalPages: Math.ceil(catalog.count / catalog.pageSize),
90-
items: catalog.pageSize
91-
};
92-
84+
this.errorReceived = false;
85+
this.service.getCatalog(pageIndex, pageSize, brand, type)
86+
.catch((err) => this.handleError(err))
87+
.subscribe(catalog => {
88+
this.catalog = catalog;
89+
this.paginationInfo = {
90+
actualPage : catalog.pageIndex,
91+
itemsPage : catalog.pageSize,
92+
totalItems : catalog.count,
93+
totalPages: Math.ceil(catalog.count / catalog.pageSize),
94+
items: catalog.pageSize
95+
};
9396
});
9497
}
9598

@@ -108,5 +111,10 @@ export class CatalogComponent implements OnInit {
108111
this.brands.unshift(allBrands);
109112
});
110113
}
114+
115+
private handleError(error: any) {
116+
this.errorReceived = true;
117+
return Observable.throw(error);
118+
}
111119
}
112120

src/Web/WebSPA/Client/modules/orders/orders.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
<esh-header url="/catalog">Back to catalog</esh-header>
33

44
<div class="container">
5+
<div class="alert alert-warning esh-orders-alert" role="alert" [hidden]="!errorReceived">
6+
Error requesting order list, please try later on
7+
</div>
58
<article class="esh-orders-titles row">
69
<section class="esh-orders-title col-xs-2">Order number</section>
710
<section class="esh-orders-title col-xs-4">Date</section>

src/Web/WebSPA/Client/modules/orders/orders.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,8 @@
7878
transition: color $animation-speed-default;
7979
}
8080
}
81+
82+
&-alert {
83+
margin-top: 10px;
84+
}
8185
}

src/Web/WebSPA/Client/modules/orders/orders.component.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
22
import { OrdersService } from './orders.service';
33
import { IOrder } from '../shared/models/order.model';
44
import { ConfigurationService } from '../shared/services/configuration.service';
5+
import { Observable } from 'rxjs/Observable';
56

67
@Component({
78
selector: 'esh-orders',
@@ -11,6 +12,7 @@ import { ConfigurationService } from '../shared/services/configuration.service';
1112
export class OrdersComponent implements OnInit {
1213
private oldOrders: IOrder[];
1314
private interval = null;
15+
errorReceived: boolean;
1416

1517
orders: IOrder[];
1618

@@ -36,13 +38,20 @@ export class OrdersComponent implements OnInit {
3638
}, 1000);
3739
}
3840

39-
4041
getOrders() {
41-
this.service.getOrders().subscribe(orders => {
42-
this.orders = orders;
43-
this.oldOrders = this.orders;
44-
console.log('orders items retrieved: ' + orders.length);
42+
this.errorReceived = false;
43+
this.service.getOrders()
44+
.catch((err) => this.handleError(err))
45+
.subscribe(orders => {
46+
this.orders = orders;
47+
this.oldOrders = this.orders;
48+
console.log('orders items retrieved: ' + orders.length);
4549
});
4650
}
51+
52+
private handleError(error: any) {
53+
this.errorReceived = true;
54+
return Observable.throw(error);
55+
}
4756
}
4857

src/Web/WebSPA/Client/modules/shared/components/identity/identity.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
height: 0;
3232
min-width: 14rem;
3333
overflow: hidden;
34-
padding: .5rem;
34+
padding: .3rem;
3535
position: absolute;
3636
right: 0;
3737
top: 2.5rem;

0 commit comments

Comments
 (0)