From f59d1828caad7cfd620171e662bc71e1408798a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Andr=C3=A9?= Date: Sun, 2 May 2021 15:00:11 +0200 Subject: [PATCH] =?UTF-8?q?Modification=20de=20la=20r=C3=A9cup=C3=A9ration?= =?UTF-8?q?=20des=20sauts=20et=20mapping=20entre=20les=20IDs=20des=20donn?= =?UTF-8?q?=C3=A9es=20r=C3=A9f=C3=A9rentielles=20et=20les=20donn=C3=A9es?= =?UTF-8?q?=20pr=C3=A9sentes=20dans=20le=20cache.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/list-of-dzs/list-of-dzs.component.ts | 17 ++++++++-------- .../src/app/summary/summary.component.html | 1 + Front/skydivelogs-app/src/models/jump.ts | 6 ++++++ .../src/services/aircraft.service.ts | 8 ++++++++ .../src/services/dropzone.service.ts | 7 +++++++ .../src/services/gear.service.ts | 8 ++++++++ .../src/services/jump-type.service.ts | 8 ++++++++ .../src/services/jump.service.ts | 20 +++++++++++++++++-- .../src/services/service-cache-api.service.ts | 10 +++++----- 9 files changed, 70 insertions(+), 15 deletions(-) diff --git a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts index 05496fd..c65eaa9 100644 --- a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts +++ b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts @@ -46,14 +46,15 @@ export class ListOfDzsComponent implements OnInit { } private getListOfDropZones() { - this.serviceApi.getListOfDropZones().subscribe((data) => { - setTimeout(() => { - data.sort((a, b) => (b.isFavorite ? 1 : 0) - (a.isFavorite ? 1 : 0) || a.name.localeCompare(b.name)); - this.dataSourceTable = new MatTableDataSource(data); - this.dataSourceTable.paginator = this.paginator; - this.resultsLength = data.length; - }, 500); - }); + this.serviceApi.getListOfDropZones() + .subscribe((data) => { + setTimeout(() => { + data.sort((a, b) => (b.isFavorite ? 1 : 0) - (a.isFavorite ? 1 : 0) || a.name.localeCompare(b.name)); + this.dataSourceTable = new MatTableDataSource(data); + this.dataSourceTable.paginator = this.paginator; + this.resultsLength = data.length; + }, 500); + }); } public setToFavorite(dropzone: DropZoneResp) { diff --git a/Front/skydivelogs-app/src/app/summary/summary.component.html b/Front/skydivelogs-app/src/app/summary/summary.component.html index 972c77a..546d566 100644 --- a/Front/skydivelogs-app/src/app/summary/summary.component.html +++ b/Front/skydivelogs-app/src/app/summary/summary.component.html @@ -15,6 +15,7 @@
+ cached
diff --git a/Front/skydivelogs-app/src/models/jump.ts b/Front/skydivelogs-app/src/models/jump.ts index b5fbfe0..ddf1f19 100644 --- a/Front/skydivelogs-app/src/models/jump.ts +++ b/Front/skydivelogs-app/src/models/jump.ts @@ -32,6 +32,12 @@ export class JumpResp { public aircraft: AircraftResp; public dropZone: DropZoneResp; public gear: GearResp; + + public jumpTypeId: number; + public aircraftId: number; + public dropZoneId: number; + public gearId: number; + public exitAltitude: number; public deployAltitude: number; public withCutaway: boolean; diff --git a/Front/skydivelogs-app/src/services/aircraft.service.ts b/Front/skydivelogs-app/src/services/aircraft.service.ts index 509c7f5..1575ddd 100644 --- a/Front/skydivelogs-app/src/services/aircraft.service.ts +++ b/Front/skydivelogs-app/src/services/aircraft.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; +import { map } from "rxjs/operators"; import { AircraftResp, AircraftReq } from '../models/aircraft'; @@ -36,4 +37,11 @@ export class AircraftService extends BaseService { bodyNewAircraft, { headers: this.headers }); } + + public getById(id: number) : Observable { + return this.serviceCacheApi.getByKey>(CacheApiKey.Aircraft) + .pipe(map(data => { + return data.find(f => f.id === id); + })); + } } diff --git a/Front/skydivelogs-app/src/services/dropzone.service.ts b/Front/skydivelogs-app/src/services/dropzone.service.ts index 87fd63a..647f393 100644 --- a/Front/skydivelogs-app/src/services/dropzone.service.ts +++ b/Front/skydivelogs-app/src/services/dropzone.service.ts @@ -77,4 +77,11 @@ export class DropzoneService extends BaseService { bodyNewDropZone, { headers: this.headers }); } + + public getById(id: number) : Observable { + return this.serviceCacheApi.getByKey>(CacheApiKey.Dropzone) + .pipe(map(data => { + return data.find(f => f.id === id); + })); + } } diff --git a/Front/skydivelogs-app/src/services/gear.service.ts b/Front/skydivelogs-app/src/services/gear.service.ts index 1f5b454..927d9dd 100644 --- a/Front/skydivelogs-app/src/services/gear.service.ts +++ b/Front/skydivelogs-app/src/services/gear.service.ts @@ -1,6 +1,7 @@ import { Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { Observable } from "rxjs"; +import { map } from "rxjs/operators"; import { GearResp, GearReq } from "../models/gear"; @@ -40,4 +41,11 @@ export class GearService extends BaseService { this.serviceCacheApi.delete(CacheApiKey.Gear); return this.http.post(`${this.apiUrl}/Gear`, bodyNewGear, { headers: this.headers}); } + + public getById(id: number) : Observable { + return this.serviceCacheApi.getByKey>(CacheApiKey.Gear) + .pipe(map(data => { + return data.find(f => f.id === id); + })); + } } diff --git a/Front/skydivelogs-app/src/services/jump-type.service.ts b/Front/skydivelogs-app/src/services/jump-type.service.ts index 3407ad3..6d25998 100644 --- a/Front/skydivelogs-app/src/services/jump-type.service.ts +++ b/Front/skydivelogs-app/src/services/jump-type.service.ts @@ -1,6 +1,7 @@ import { Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { Observable } from "rxjs"; +import { map } from "rxjs/operators"; import { JumpTypeResp, JumpTypeReq } from "../models/jumpType"; @@ -28,4 +29,11 @@ export class JumpTypeService extends BaseService { bodyJumpType, { headers: this.headers }); } + + public getById(id: number) : Observable { + return this.serviceCacheApi.getByKey>(CacheApiKey.JumpType) + .pipe(map(data => { + return data.find(f => f.id === id); + })); + } } diff --git a/Front/skydivelogs-app/src/services/jump.service.ts b/Front/skydivelogs-app/src/services/jump.service.ts index c2ae918..d623876 100644 --- a/Front/skydivelogs-app/src/services/jump.service.ts +++ b/Front/skydivelogs-app/src/services/jump.service.ts @@ -8,12 +8,20 @@ import { JumpResp, JumpReq } from "../models/jump"; import { DateService } from "./date.service"; import { BaseService } from "./base.service"; +import { DropzoneService } from "./dropzone.service"; +import { AircraftService } from "./aircraft.service"; +import { JumpTypeService } from "./jump-type.service"; +import { GearService } from "./gear.service"; @Injectable() export class JumpService extends BaseService { constructor(private http: HttpClient, private dateService: DateService, - private datePipe: DatePipe) { + private datePipe: DatePipe, + private dropzoneService: DropzoneService, + private aircraftService: AircraftService, + private jumpTypeService: JumpTypeService, + private gearService: GearService,) { super(); } @@ -22,7 +30,15 @@ export class JumpService extends BaseService { { headers: this.headers }) .pipe( map((response) => { - const details = response.map((data) => new JumpResp(data)); + let details = response.map((data) => + { + let t = new JumpResp(data); + this.dropzoneService.getById(t.dropZoneId).subscribe((d)=> t.dropZone = d ); + this.aircraftService.getById(t.aircraftId).subscribe((d)=> t.aircraft = d ); + this.jumpTypeService.getById(t.jumpTypeId).subscribe((d)=> t.jumpType = d ); + this.gearService.getById(t.gearId).subscribe((d)=> t.gear = d ); + return t; + }); return details; }) ); diff --git a/Front/skydivelogs-app/src/services/service-cache-api.service.ts b/Front/skydivelogs-app/src/services/service-cache-api.service.ts index 62171a0..1a7db62 100644 --- a/Front/skydivelogs-app/src/services/service-cache-api.service.ts +++ b/Front/skydivelogs-app/src/services/service-cache-api.service.ts @@ -14,11 +14,7 @@ export class ServiceCacheApi { this.cache = new Map>(); } - public get(key: CacheApiKey, callToApi: Observable, withResetCache: boolean = false) : Observable { - if (withResetCache === true) { - this.cache.delete(key); - } - + public get(key: CacheApiKey, callToApi: Observable) : Observable { const cached = this.cache.get(key); if (cached) { @@ -34,4 +30,8 @@ export class ServiceCacheApi { public delete(key: CacheApiKey) { this.cache.delete(key); } + + public getByKey(key: CacheApiKey) : Observable { + return this.cache.get(key); + } }