diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 3aa149b..b1f4940 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,6 +12,8 @@ import { BackToHomeComponent } from './back-to-home/back-to-home.component'; import {MatIconModule} from "@angular/material/icon"; import { ObservablesExampleComponent } from './observables-example/observables-example.component'; import { StateManagementExampleComponent } from './state-management-example/state-management-example.component'; +import {RestServicesModule} from "./core/rest-services/rest-services.module"; +import { CarComponent } from './core/components/car/car.component'; @NgModule({ declarations: [ @@ -21,14 +23,16 @@ import { StateManagementExampleComponent } from './state-management-example/stat HomeComponent, BackToHomeComponent, ObservablesExampleComponent, - StateManagementExampleComponent + StateManagementExampleComponent, + CarComponent ], imports: [ BrowserModule, AppRoutingModule, BrowserAnimationsModule, MatButtonModule, - MatIconModule + MatIconModule, + RestServicesModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/core/components/car/car.component.html b/src/app/core/components/car/car.component.html new file mode 100644 index 0000000..414682d --- /dev/null +++ b/src/app/core/components/car/car.component.html @@ -0,0 +1,14 @@ +
+

{{car?.model}}

+ +
\ No newline at end of file diff --git a/src/app/core/components/car/car.component.scss b/src/app/core/components/car/car.component.scss new file mode 100644 index 0000000..1385010 --- /dev/null +++ b/src/app/core/components/car/car.component.scss @@ -0,0 +1,18 @@ +.component { + display: flex; + flex-direction: column; + border: 1px solid #ccc; + box-shadow: 0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f; + border-radius: .5rem; + width: 10rem; + padding: 1rem; + + h1 { + display: flex; + justify-content: center; + } + + ul { + margin: 0; + } +} \ No newline at end of file diff --git a/src/app/core/components/car/car.component.spec.ts b/src/app/core/components/car/car.component.spec.ts new file mode 100644 index 0000000..6c797a7 --- /dev/null +++ b/src/app/core/components/car/car.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CarComponent } from './car.component'; + +describe('CarComponent', () => { + let component: CarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CarComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/core/components/car/car.component.ts b/src/app/core/components/car/car.component.ts new file mode 100644 index 0000000..b364c93 --- /dev/null +++ b/src/app/core/components/car/car.component.ts @@ -0,0 +1,11 @@ +import {Component, Input} from '@angular/core'; +import {Car} from "../../model/car"; + +@Component({ + selector: 'app-car', + templateUrl: './car.component.html', + styleUrls: ['./car.component.scss'] +}) +export class CarComponent { + @Input("value") car?: Car; +} diff --git a/src/app/core/model/car.ts b/src/app/core/model/car.ts new file mode 100644 index 0000000..1faa5cb --- /dev/null +++ b/src/app/core/model/car.ts @@ -0,0 +1,7 @@ +export interface Car { + id: string; + brand: string; + model: string; + power: number; + numberOfSeats: number; +} \ No newline at end of file diff --git a/src/app/core/rest-services/car.rest-service.ts b/src/app/core/rest-services/car.rest-service.ts new file mode 100644 index 0000000..0cd0897 --- /dev/null +++ b/src/app/core/rest-services/car.rest-service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {Car} from "../model/car"; +import {toPromise} from "../utils/promises.utils"; + +@Injectable({ + providedIn: 'root' +}) +export class CarRestService { + + constructor( + private http: HttpClient + ) { } + + findById(carId: string): Promise { + return toPromise(this.http.get(`/cars/${carId}`)); + } +} diff --git a/src/app/core/rest-services/rest-services.module.ts b/src/app/core/rest-services/rest-services.module.ts new file mode 100644 index 0000000..6fb0bde --- /dev/null +++ b/src/app/core/rest-services/rest-services.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + + + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class RestServicesModule { } diff --git a/src/app/core/utils/promises.utils.ts b/src/app/core/utils/promises.utils.ts new file mode 100644 index 0000000..79bb620 --- /dev/null +++ b/src/app/core/utils/promises.utils.ts @@ -0,0 +1,5 @@ +import {firstValueFrom, Observable} from "rxjs"; + +export function toPromise(observable: Observable): Promise { + return firstValueFrom(observable); +} \ No newline at end of file diff --git a/src/app/promises-example/promises-example.component.html b/src/app/promises-example/promises-example.component.html index 944ca19..491046a 100644 --- a/src/app/promises-example/promises-example.component.html +++ b/src/app/promises-example/promises-example.component.html @@ -1 +1,4 @@ -

promises-example works!

+
+

Les promesses

+ +
\ No newline at end of file diff --git a/src/app/promises-example/promises-example.component.ts b/src/app/promises-example/promises-example.component.ts index fcfcf50..fdc78b7 100644 --- a/src/app/promises-example/promises-example.component.ts +++ b/src/app/promises-example/promises-example.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import {Car} from "../core/model/car"; @Component({ selector: 'app-promises-example', @@ -6,5 +7,11 @@ import { Component } from '@angular/core'; styleUrls: ['./promises-example.component.scss'] }) export class PromisesExampleComponent { - + car?: Car = { + id: '1234567890', + brand: 'Toyota', + model: 'Yaris', + power: 12, + numberOfSeats: 5 + }; }