Skip to content

Commit a243777

Browse files
committed
Added pageoptions
1 parent 0c7ca52 commit a243777

File tree

10 files changed

+41
-13
lines changed

10 files changed

+41
-13
lines changed

apps/car-rental/src/components/vehicles/create-vehicle-form/create-vehicle-form.component.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
55
import { MatInputModule } from '@angular/material/input';
66
import { MatSelectModule } from '@angular/material/select';
77
import { VehicleBrandsService } from '../../../../src/services/vehicle-brands.service';
8-
import { VehicleBrandDto } from '../../../../src/dto/vehicle-brand';
8+
import { VehicleBrandDto } from '../../../dtos/vehicle-brand';
99

1010
@Component({
1111
selector: 'app-create-vehicle-form',
@@ -34,9 +34,11 @@ export class CreateVehicleFormComponent implements OnInit {
3434
}
3535

3636
ngOnInit(): void {
37-
this.vehiclesBrandService.getVehicleBrands().subscribe((response) => {
38-
this.vehicleBrands = response.data;
39-
});
37+
this.vehiclesBrandService
38+
.getVehicleBrands({ sortField: 'name', take: 5 })
39+
.subscribe((response) => {
40+
this.vehicleBrands = response.data;
41+
});
4042
}
4143

4244
onSubmit(): void {

apps/car-rental/src/components/vehicles/vehicles-list/vehicles-list.component.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core';
22
import { CommonModule } from '@angular/common';
33
import { VehiclesService } from '../../../services/vehicles.service';
44
import { VehicleBrandsService } from '../../../services/vehicle-brands.service';
5-
import { VehicleDto } from '../../../../src/dto/vehicle';
6-
import { VehicleBrandDto } from '../../../../src/dto/vehicle-brand';
5+
import { VehicleDto } from '../../../dtos/vehicle';
6+
import { VehicleBrandDto } from '../../../dtos/vehicle-brand';
77
import { MatDividerModule } from '@angular/material/divider';
88
import { MatTableModule } from '@angular/material/table';
99
import { MatButtonModule } from '@angular/material/button';
File renamed without changes.
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Order } from "../enums/order";
2+
3+
export type PageOptions = {
4+
readonly sortField?: string;
5+
readonly order?: Order;
6+
readonly page?: number;
7+
readonly take?: number;
8+
}
File renamed without changes.
File renamed without changes.

apps/car-rental/src/enums/order.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export enum Order {
2+
ASC = 'ASC',
3+
DESC = 'DESC',
4+
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { HttpClient } from '@angular/common/http';
1+
import { HttpClient, HttpParams } from '@angular/common/http';
22
import { Injectable } from '@angular/core';
33
import { Observable } from 'rxjs';
4-
import { VehicleBrandDto } from '../dto/vehicle-brand';
5-
import { Page } from '../dto/page';
4+
import { VehicleBrandDto } from '../dtos/vehicle-brand';
5+
import { Page } from '../dtos/page';
6+
import { PageOptions } from '../dtos/page-options';
67

78
@Injectable({
89
providedIn: 'root',
@@ -11,7 +12,20 @@ export class VehicleBrandsService {
1112
private apiUrl = 'http://localhost:3000/api/vehicle-brands';
1213
constructor(private readonly http: HttpClient) {}
1314

14-
getVehicleBrands(): Observable<Page<VehicleBrandDto>> {
15-
return this.http.get<Page<VehicleBrandDto>>(this.apiUrl);
15+
getVehicleBrands(opts: PageOptions = {}): Observable<Page<VehicleBrandDto>> {
16+
let params = new HttpParams();
17+
if (opts.sortField) {
18+
params = params.set('sortField', opts.sortField);
19+
}
20+
if (opts.order) {
21+
params = params.set('order', opts.order);
22+
}
23+
if (opts.page) {
24+
params = params.set('page', opts.page.toString());
25+
}
26+
if (opts.take) {
27+
params = params.set('take', opts.take.toString());
28+
}
29+
return this.http.get<Page<VehicleBrandDto>>(this.apiUrl, { params });
1630
}
1731
}

apps/car-rental/src/services/vehicles.service.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Injectable } from '@angular/core';
22
import { HttpClient } from '@angular/common/http';
33
import { Observable } from 'rxjs';
4-
import { VehicleDto } from '../dto/vehicle';
5-
import { Page } from '../dto/page';
4+
import { VehicleDto } from '../dtos/vehicle';
5+
import { Page } from '../dtos/page';
66

77
@Injectable({
88
providedIn: 'root',

0 commit comments

Comments
 (0)