Skip to content

Commit 0f3f4ab

Browse files
author
Quique Fernandez
committed
Add orders list
1 parent d67f566 commit 0f3f4ab

7 files changed

Lines changed: 48 additions & 140 deletions

File tree

src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { AppService } from './app.service';
99
import { AppComponent } from './app.component';
1010
import { SharedModule } from './shared/shared.module';
1111
import { CatalogModule } from './catalog/catalog.module';
12+
import { OrdersModule } from './orders/orders.module';
1213
import { BasketModule } from './basket/basket.module';
1314

1415
@NgModule({
@@ -20,6 +21,7 @@ import { BasketModule } from './basket/basket.module';
2021
// Only module that app module loads
2122
SharedModule.forRoot(),
2223
CatalogModule,
24+
OrdersModule,
2325
BasketModule
2426
],
2527
providers: [

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

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,38 @@
1-
<div class="esh-order-header">
1+
<div class="esh-orders-header">
22
<ul class="container">
3-
<li class="esh-order-header-back" routerLink="/catalog">Back to list</li>
3+
<li class="esh-orders-header-back" routerLink="/catalog">Back to list</li>
44
</ul>
55
</div>
6-
<div class="container esh-order-container">
6+
<div class="container esh-orders-container">
77
<div class="row">
88
<div class="col-md-12">
99
<section>
1010
<table class="table">
1111
<thead>
1212
<tr>
13-
<th class="esh-order-product-column">
14-
PRODUCT
13+
<th class="esh-orders-order-column">
14+
ORDER NUMBER
1515
</th>
1616
<th>
17-
17+
DATE
1818
</th>
1919
<th>
20-
BRAND
20+
TOTAL
2121
</th>
2222
<th>
23-
PRICE
24-
</th>
25-
<th>
26-
QUANTITY
27-
</th>
28-
<th>
29-
COST
23+
STATUS
3024
</th>
25+
<th></th>
3126
</tr>
3227
</thead>
3328
<tbody>
34-
<tr *ngFor="let item of order?.items">
35-
<td class="esh-order-product-column"><img class="esh-order-product-image" src="{{item.pictureUrl}}" /></td>
36-
<td class="esh-order-product-column">{{item.productName}}</td>
37-
<td class="esh-order-product-column">ROSLYN</td>
38-
<td class="esh-order-product-column">$ {{item.unitPrice}}</td>
39-
<td class="esh-order-product-column">
40-
<input type="number" style="width:100px" min="1" [(ngModel)]="item.quantity" (change)="itemQuantityChanged(item)" />
41-
</td>
42-
<td class="esh-order-product-column esh-order-total-value">$ {{item.unitPrice * item.quantity}}</td>
43-
</tr>
44-
<tr class="esh-order-totals">
45-
<td></td>
46-
<td></td>
47-
<td></td>
48-
<td></td>
49-
<td></td>
50-
<td>
51-
<div class="esh-order-total-value">
52-
<div class="esh-order-total-label"><span>TOTAL</span></div>
53-
<span>$ {{totalPrice}}</span>
54-
</div>
29+
<tr *ngFor="let order of orders">
30+
<td class="esh-orders-order-column">{{order.ordernumber}}</td>
31+
<td class="esh-orders-order-column">{{order.date | date:'short'}}</td>
32+
<td class="esh-orders-order-column">$ {{order.total}}</td>
33+
<td class="esh-orders-order-column">{{order.status}}</td>
34+
<td class="esh-orders-order-column">
35+
<a class="esh-orders-order-link" href="#">Detail</a>
5536
</td>
5637
</tr>
5738
</tbody>

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
@import '../_variables.scss';
22

33
.esh-orders {
4+
min-height: 80vh;
5+
46
&-header {
57
background-color: #00A69C;
68
height: 63px;
@@ -38,13 +40,16 @@
3840
min-width: 992px;
3941
}
4042

41-
&-product-column {
43+
&-order-column {
4244
max-width: 120px;
43-
text-transform: uppercase;
4445
vertical-align: middle !important;
4546
}
4647

47-
&-product-image {
48+
&-order-link {
49+
color: #83d01b;
50+
}
51+
52+
&-order-image {
4853
max-width: 210px;
4954
}
5055

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

Lines changed: 10 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,26 @@
11
import { Component, OnInit } from '@angular/core';
2-
import { OrdersService } from './orders.service';
3-
import { ICatalog } from '../shared/models/catalog.model';
4-
import { ICatalogItem } from '../shared/models/catalogItem.model';
5-
import { ICatalogType } from '../shared/models/catalogType.model';
6-
import { ICatalogBrand } from '../shared/models/catalogBrand.model';
7-
import { IPager } from '../shared/models/pager.model';
8-
import { BasketWrapperService} from '../shared/services/basket.wrapper.service';
2+
import { OrdersService } from './orders.service';
3+
import { IOrder } from '../shared/models/order.model';
94

105
@Component({
116
selector: 'esh-orders .orders',
127
styleUrls: ['./orders.component.scss'],
138
templateUrl: './orders.component.html'
149
})
15-
export class CatalogComponent implements OnInit {
16-
brands: ICatalogBrand[];
17-
types: ICatalogType[];
18-
catalog: ICatalog;
19-
brandSelected: number;
20-
typeSelected: number;
21-
paginationInfo: IPager;
10+
export class OrdersComponent implements OnInit {
11+
orders: IOrder[];
2212

23-
constructor(private service: OrdersService, private basketService: BasketWrapperService) { }
13+
constructor(private service: OrdersService) { }
2414

2515
ngOnInit() {
26-
this.getBrands();
27-
this.getCatalog(10, 0);
28-
this.getTypes();
16+
this.getOrders();
2917
}
3018

31-
onFilterApplied(event: any) {
32-
event.preventDefault();
33-
this.getCatalog(this.paginationInfo.itemsPage, this.paginationInfo.actualPage, this.brandSelected, this.typeSelected);
34-
}
35-
36-
onBrandFilterChanged(event: any, value: number) {
37-
event.preventDefault();
38-
this.brandSelected = value;
39-
}
40-
41-
onTypeFilterChanged(event: any, value: number) {
42-
event.preventDefault();
43-
this.typeSelected = value;
44-
}
45-
46-
onPageChanged(value: any) {
47-
console.log('catalog pager event fired' + value);
48-
event.preventDefault();
49-
this.paginationInfo.actualPage = value;
50-
this.getCatalog(this.paginationInfo.itemsPage, value);
51-
}
52-
53-
addToCart(item: ICatalogItem) {
54-
this.basketService.addItemToBasket(item);
55-
}
56-
57-
getCatalog(pageSize:number, pageIndex: number, brand?: number, type?: number) {
58-
this.service.getCatalog(pageIndex, pageSize, brand, type).subscribe(catalog => {
59-
this.catalog = catalog;
60-
console.log('catalog items retrieved: ' + catalog.count);
61-
62-
this.paginationInfo = {
63-
actualPage : catalog.pageIndex,
64-
itemsPage : catalog.pageSize,
65-
totalItems : catalog.count,
66-
totalPages: Math.ceil(catalog.count / catalog.pageSize),
67-
items: catalog.pageSize
68-
};
69-
70-
console.log(this.paginationInfo);
71-
});
72-
}
73-
74-
getTypes() {
75-
this.service.getTypes().subscribe(types => {
76-
this.types = types;
77-
let alltypes = { id: null, type: 'All' };
78-
this.types.unshift(alltypes);
79-
console.log('types retrieved: ' + types.length);
80-
});
81-
}
8219

83-
getBrands() {
84-
this.service.getBrands().subscribe(brands => {
85-
this.brands = brands;
86-
let allBrands = { id: null, brand: 'All' };
87-
this.brands.unshift(allBrands);
88-
console.log('brands retrieved: ' + brands.length);
20+
getOrders() {
21+
this.service.getOrders().subscribe(orders => {
22+
this.orders = orders;
23+
console.log('orders items retrieved: ' + orders.length);
8924
});
9025
}
9126
}

src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/orders/orders.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ import { Pager } from '../shared/components/pager/pager';
1111
declarations: [OrdersComponent],
1212
providers: [OrdersService]
1313
})
14-
export class CatalogModule { }
14+
export class OrdersModule { }

src/Web/WebSPA/eShopOnContainers.WebSPA/Client/modules/orders/orders.service.ts

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ import { Injectable } from '@angular/core';
22
import { Response } from '@angular/http';
33

44
import { DataService } from '../shared/services/data.service';
5-
import { ICatalog } from '../shared/models/catalog.model';
6-
import { ICatalogBrand } from '../shared/models/catalogBrand.model';
7-
import { ICatalogType } from '../shared/models/catalogType.model';
5+
import { IOrder } from '../shared/models/order.model';
86

97
import 'rxjs/Rx';
108
import { Observable } from 'rxjs/Observable';
@@ -14,35 +12,16 @@ import 'rxjs/add/operator/map';
1412

1513
@Injectable()
1614
export class OrdersService {
17-
private catalogUrl: string = 'http://eshopcontainers:5101/api/v1/catalog/items';
18-
private brandUrl: string = 'http://eshopcontainers:5101/api/v1/catalog/catalogbrands';
19-
private typesUrl: string = 'http://eshopcontainers:5101/api/v1/catalog/catalogtypes';
15+
private ordersUrl: string = 'http://eshopcontainers:5102/api/v1/orders';
2016

2117
constructor(private service: DataService) {
2218
}
2319

24-
getCatalog(pageIndex: number, pageSize: number, brand: number, type: number): Observable<ICatalog> {
25-
var url = this.catalogUrl;
26-
if (brand || type) {
27-
url = this.catalogUrl + '/type/' + ((type) ? type.toString() : 'null') + '/brand/' + ((brand) ? brand.toString() : 'null');
28-
}
29-
30-
url = url + '?pageIndex=' + pageIndex + '&pageSize=' + pageSize;
20+
getOrders(): Observable<any> {
21+
var url = this.ordersUrl;
3122

3223
return this.service.get(url).map((response: Response) => {
3324
return response.json();
3425
});
3526
}
36-
37-
getBrands(): Observable<ICatalogBrand[]> {
38-
return this.service.get(this.brandUrl).map((response: Response) => {
39-
return response.json();
40-
});
41-
}
42-
43-
getTypes(): Observable<ICatalogType[]> {
44-
return this.service.get(this.typesUrl).map((response: Response) => {
45-
return response.json();
46-
});
47-
};
48-
}
27+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export interface IOrder {
2+
ordernumber: number,
3+
date: Date,
4+
status: string,
5+
total: number
6+
}

0 commit comments

Comments
 (0)