diff --git a/src/app/features/error/error.module.ts b/src/app/features/error/error.module.ts new file mode 100644 index 0000000..d4b3183 --- /dev/null +++ b/src/app/features/error/error.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + + + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class ErrorModule { } diff --git a/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.html b/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.html index 7843fbb..39f8e85 100644 --- a/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.html +++ b/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.html @@ -1,15 +1,15 @@
- +
-
- +

+
- - +

+
- +

diff --git a/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.ts b/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.ts index aefcfa6..f8e6739 100644 --- a/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.ts +++ b/src/app/features/vehicle/page/vehicle-edit/vehicle-edit.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import {VehicleService} from "../../service/vehicle.service"; -import {Router} from "@angular/router"; +import {ActivatedRoute, Router} from "@angular/router"; @Component({ selector: 'app-vehicle-edit', @@ -10,16 +10,45 @@ import {Router} from "@angular/router"; export class VehicleEditComponent implements OnInit { vehicle : any = {}; + id: string = "0"; constructor(private vehicleService: VehicleService, + private activatedRoute : ActivatedRoute, private router: Router) { } ngOnInit(): void { + this.id = this.activatedRoute.snapshot.params['id']; + + if(this.id && this.id != "0"){ + this.getById(); + } } - save() { - this.vehicleService.create(this.vehicle).subscribe( { + getById(): void{ + this.vehicleService.getById(this.id).subscribe({ + next :(res)=>{ + if(res.success){ + this.vehicle = res.data; + } + }, + error:(err)=>{ + + } + }) + } + + save(): void { + + if(this.id == "0"){ + this.create(this.vehicle); + }else { + this.update(this.vehicle); + } + } + + create(vehicle: any): void{ + this.vehicleService.create(vehicle).subscribe( { next: (res)=>{ if(res.success){ this.router.navigateByUrl("/app/vehicle").then(); @@ -27,4 +56,15 @@ export class VehicleEditComponent implements OnInit { } }) } + + update(vehicle: any): void { + this.vehicleService.update(vehicle).subscribe( { + next: (res)=>{ + if(res.success){ + this.router.navigateByUrl("/app/vehicle").then(); + } + } + }) + } + } diff --git a/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.html b/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.html index dcc67d1..a22ce25 100644 --- a/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.html +++ b/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.html @@ -1,6 +1,18 @@ +
+
+
+ Recherche
+ + +
+ +
Filtre pard ta
+
+
+
- +
@@ -18,9 +30,9 @@ {{product.model}} {{product.matricule}} - - - + + + diff --git a/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.ts b/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.ts index 62b6d85..b6fcc3b 100644 --- a/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.ts +++ b/src/app/features/vehicle/page/vehicle-list/vehicle-list.component.ts @@ -8,6 +8,13 @@ import {VehicleService} from "../../service/vehicle.service"; styleUrls: ['./vehicle-list.component.scss'] }) export class VehicleListComponent implements OnInit { + + //1. filter + searchTerm : string = ""; + params : any = {}; + + //2. table + vehicles: any[] = []; constructor(private router: Router, @@ -15,11 +22,16 @@ export class VehicleListComponent implements OnInit { } ngOnInit(): void { - this.getServices(); + this.params.search = ""; + this.params.fields = ["matricule", "mark", "model"]; + this.params.page = 1; + this.params.limit = 5; + this.getVehicles(); } - getServices() { - this.vehicleService.getAll().subscribe({ + getVehicles() { + + this.vehicleService.getAll(this.params).subscribe({ next: (res) => { if (res.success) { this.vehicles = res.data; @@ -28,16 +40,27 @@ export class VehicleListComponent implements OnInit { }) } - edit(): void { - /* - let vehicle : any = {}; - vehicle.model = "RangeRoger"; - vehicle.mark = "Sport"; - vehicle.matricule = "535353"; - - this.vehicles.push(vehicle); - */ - this.router.navigateByUrl('/app/vehicle/edit').then(); + edit(_id: string): void { + this.router.navigateByUrl('/app/vehicle/edit/'+_id).then(); + } + view(_id: string): void { + this.router.navigateByUrl('/app/vehicle/view/'+_id).then(); } + protected readonly visualViewport = visualViewport; + + delete(_id: string): void { + this.vehicleService.delete(_id).subscribe({ + next: (res)=>{ + if(res.success){ + this.getVehicles(); + } + } + }) + } + + search() { + this.params.search = this.searchTerm; + this.getVehicles() + } } diff --git a/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.html b/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.html index e5a89af..6922491 100644 --- a/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.html +++ b/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.html @@ -1 +1,14 @@ -

vehicle-view works!

+
+
+
+ {{vehicle.mark }} +

+
+ {{vehicle.model}} +

+
+ {{vehicle.matricule}} +
+

+ +
diff --git a/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.ts b/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.ts index 4fdb71a..96e0031 100644 --- a/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.ts +++ b/src/app/features/vehicle/page/vehicle-view/vehicle-view.component.ts @@ -1,4 +1,6 @@ -import { Component, OnInit } from '@angular/core'; +import {ChangeDetectorRef, Component, OnInit} from '@angular/core'; +import {VehicleService} from "../../service/vehicle.service"; +import {ActivatedRoute, Router} from "@angular/router"; @Component({ selector: 'app-vehicle-view', @@ -6,10 +8,39 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./vehicle-view.component.scss'] }) export class VehicleViewComponent implements OnInit { + vehicle : any = {}; + id: string = "0"; - constructor() { } + constructor(private vehicleService: VehicleService, + private activatedRoute : ActivatedRoute, + private cdr: ChangeDetectorRef, + private router: Router) { } ngOnInit(): void { + this.id = this.activatedRoute.snapshot.params['id']; + + if(this.id && this.id != "0"){ + this.getById(); + } + } + getById(): void{ + this.vehicleService.getById(this.id).subscribe({ + next :(res)=>{ + if(res.success){ + this.vehicle = res.data; + this.cdr.detectChanges(); + } + }, + error:(err)=>{ + + } + }) + } + + + + + } diff --git a/src/app/features/vehicle/service/vehicle.service.ts b/src/app/features/vehicle/service/vehicle.service.ts index a33962b..5dc1146 100644 --- a/src/app/features/vehicle/service/vehicle.service.ts +++ b/src/app/features/vehicle/service/vehicle.service.ts @@ -10,8 +10,8 @@ export class VehicleService { url: string = "vehicle" constructor(private http: HttpClient) { } - getAll():Observable{ - return this.http.get(apiRoute+this.url); + getAll(params:any):Observable{ + return this.http.get(apiRoute+this.url, {params}); } getById(id: string):Observable { @@ -23,7 +23,7 @@ export class VehicleService { } update(vehicle: any):Observable{ - return this.http.put(apiRoute+this.url+ "/"+vehicle.id,vehicle); + return this.http.put(apiRoute+this.url+ "/"+vehicle._id,vehicle); } delete(id: string):Observable{ diff --git a/src/app/features/vehicle/vehicle.module.ts b/src/app/features/vehicle/vehicle.module.ts index e4e316b..da8f94b 100644 --- a/src/app/features/vehicle/vehicle.module.ts +++ b/src/app/features/vehicle/vehicle.module.ts @@ -15,11 +15,11 @@ const routes: Routes = [ component: VehicleListComponent }, { - path: 'edit', + path: 'edit/:id', component: VehicleEditComponent }, { - path:'view', + path:'view/:id', component:VehicleViewComponent } ]