diff --git a/Front/skydivelogs-app/src/app/app.component.ts b/Front/skydivelogs-app/src/app/app.component.ts index 20db848..8188b9b 100644 --- a/Front/skydivelogs-app/src/app/app.component.ts +++ b/Front/skydivelogs-app/src/app/app.component.ts @@ -2,12 +2,12 @@ import { Component, OnInit } from "@angular/core"; import { Router } from "@angular/router"; import { User } from "../models/user"; -import { RefData } from "../models/ref-data.enum"; +import { CacheApiKey } from "../models/cache-api-key.enum"; import { AuthenticationService } from "../services/authentication.service"; import { ServiceComm } from "../services/service-comm.service"; import { ConfigurationHelper } from "../services/configuration-helper"; -import { ServiceRefData } from "../services/service-ref-data.service"; +import { ServiceCacheApi } from "../services/service-cache-api.service"; import { AircraftService } from "../services/aircraft.service"; import { GearService } from "../services/gear.service"; import { JumpTypeService } from "../services/jump-type.service"; @@ -26,7 +26,7 @@ export class AppComponent implements OnInit { constructor(private router: Router, private authenticationService: AuthenticationService, private serviceComm: ServiceComm, - private serviceRefData : ServiceRefData, + private serviceCacheApi : ServiceCacheApi, private serviceApiAircraft : AircraftService, private serviceApiJumpType : JumpTypeService, private serviceApiDropzone : DropzoneService, @@ -58,7 +58,7 @@ export class AppComponent implements OnInit { } logout() { - this.serviceRefData.delete(RefData.Dropzone); + this.serviceCacheApi.delete(CacheApiKey.Dropzone); this.authenticationService.logout(); this.router.navigate(["/login"], { skipLocationChange: true }); } diff --git a/Front/skydivelogs-app/src/app/app.module.ts b/Front/skydivelogs-app/src/app/app.module.ts index d2b7dd8..0e94417 100644 --- a/Front/skydivelogs-app/src/app/app.module.ts +++ b/Front/skydivelogs-app/src/app/app.module.ts @@ -35,7 +35,7 @@ import { RequestCache } from "../services/request-cache.service"; import { AuthGuardService } from "../services/auth-guard.service"; import { ImageService } from "../services/image.service"; import { ConfigurationHelper } from "../services/configuration-helper"; -import { ServiceRefData } from "../services/service-ref-data.service"; +import { ServiceCacheApi } from "../services/service-cache-api.service"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; @@ -183,7 +183,7 @@ export function initConfig(configService: ConfigurationHelper) { RequestCache, ConfigurationHelper, DatePipe, - ServiceRefData, + ServiceCacheApi, { provide: APP_INITIALIZER, useFactory: initConfig, deps: [ConfigurationHelper], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: JwtAuthInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true } diff --git a/Front/skydivelogs-app/src/app/summary/summary.component.css b/Front/skydivelogs-app/src/app/summary/summary.component.css index 32496d2..abf635c 100644 --- a/Front/skydivelogs-app/src/app/summary/summary.component.css +++ b/Front/skydivelogs-app/src/app/summary/summary.component.css @@ -33,10 +33,6 @@ margin-bottom: 10px; } -.mat-tab-group { - margin-top: 20px; -} - .containerFlex { display: flex; flex-wrap: wrap; diff --git a/Front/skydivelogs-app/src/app/summary/summary.component.html b/Front/skydivelogs-app/src/app/summary/summary.component.html index 39eca28..972c77a 100644 --- a/Front/skydivelogs-app/src/app/summary/summary.component.html +++ b/Front/skydivelogs-app/src/app/summary/summary.component.html @@ -11,126 +11,146 @@
- : {{ lastJump }} + : {{ lastJump | date: 'yyyy-MM-dd' }}
- +
+ cached +
+ + -
-
- By DZ - - - - - - - - -
{{element.label}}{{element.nb}}
-
-
- By jump type - - - - - - - - -
{{element.label}}{{element.nb}}
-
-
+ +
+
+ By DZ + + + + + + + + +
{{element.label}}{{element.nb}}
+
+
+ By jump type + + + + + + + + +
{{element.label}}{{element.nb}}
+
+
+
-
-
- By DZ - - - - - - - - -
{{element.label}}{{element.nb}}
-
-
- By jump type - - - - - - - - -
{{element.label}}{{element.nb}}
-
-
+ +
+
+ By DZ + + + + + + + + +
{{element.label}}{{element.nb}}
+
+
+ By jump type + + + + + + + + +
{{element.label}}{{element.nb}}
+
+
+
- - - - - - - - -
{{element.label}}{{element.nb}}
+ + + + + + + + + +
{{element.label}}{{element.nb}}
+
- - - - - - - - -
{{element.label}}{{element.nb}}
+ + + + + + + + + +
{{element.label}}{{element.nb}}
+
- - - - - - - - -
{{element.label}}{{element.nb}}
+ + + + + + + + + +
{{element.label}}{{element.nb}}
+
- - - - - - - - -
{{element.label}}{{element.nb}}
+ + + + + + + + + +
{{element.label}}{{element.nb}}
+
- - - - - - - - -
{{element.label}}{{element.nb}}
+ + + + + + + + + +
{{element.label}}{{element.nb}}
+
diff --git a/Front/skydivelogs-app/src/app/summary/summary.component.ts b/Front/skydivelogs-app/src/app/summary/summary.component.ts index 3c58e8a..d38c2ee 100644 --- a/Front/skydivelogs-app/src/app/summary/summary.component.ts +++ b/Front/skydivelogs-app/src/app/summary/summary.component.ts @@ -1,15 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewChild } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; +import { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs'; import { ServiceComm } from '../../services/service-comm.service'; import { StatsService } from '../../services/stats.service'; -import { - StatsByDzResp, - StatsByAircraftResp, - StatsByGearResp, - StatsByJumpTypeResp, - StatsByYearResp, - StatType -} from '../../models/stats'; +import { StatsByDzResp, StatsByAircraftResp, StatsByGearResp, + StatsByJumpTypeResp, StatsByYearResp } from '../../models/stats'; @Component({ selector: 'app-summary', @@ -29,86 +24,91 @@ export class SummaryComponent implements OnInit { public dsJumpForLastMonthByJumpType: MatTableDataSource; public displayedColumns: Array = ['label', 'nb']; - private _shownStats: Map; - public StatType = StatType; public totalJumps: number; public totalCutaways: number; public lastJump: string; - - constructor( - private _serviceApi: StatsService, - private _serviceComm: ServiceComm - ) { } + @ViewChild(MatTabGroup) tabGroup: MatTabGroup; + + constructor(private serviceApi: StatsService, + private serviceComm: ServiceComm) { } ngOnInit() { - this.initShownStats(); + this.serviceComm.UpdatedComponentTitle('Summary'); - this._serviceComm.UpdatedComponentTitle('Summary'); + this.serviceApi.getSimpleSummary() + .subscribe(data => { + this.totalJumps = data.totalJumps; + this.totalCutaways = data.totalCutaways; + this.lastJump = data.lastJump.jumpDate + ' (' + data.lastJump.dropZone.name + ')'; + }); - const statsResult = this._serviceApi.getStatsOfJumps(); - - statsResult.simpleSummary.subscribe(data => { - this.totalJumps = data.totalJumps; - this.totalCutaways = data.totalCutaways; - this.lastJump = data.lastJump.jumpDate + ' (' + data.lastJump.dropZone.name + ')'; - }); - - statsResult.statsByDz.subscribe(data => { - this.dsNbJumpByDz = new MatTableDataSource(data); - }); - statsResult.statsByAircraft.subscribe(data => { - this.dsNbJumpByAircraft = new MatTableDataSource(data); - }); - statsResult.statsByGear.subscribe(data => { - this.dsNbJumpByGear = new MatTableDataSource(data); - }); - statsResult.statsByJumpType.subscribe(data => { - this.dsNbJumpByType = new MatTableDataSource(data); - }); - statsResult.statsByYear.subscribe(data => { - this.dsNbJumpByYear = new MatTableDataSource(data); - }); - - statsResult.statsForLastYear.subscribe(data => { - this.dsJumpForLastYearByDz = new MatTableDataSource(data.byDz); - this.dsJumpForLastYearByJumpType = new MatTableDataSource( - data.byJumpType - ); - }); - statsResult.statsForLastMonth.subscribe(data => { - this.dsJumpForLastMonthByDz = new MatTableDataSource(data.byDz); - this.dsJumpForLastMonthByJumpType = new MatTableDataSource( - data.byJumpType - ); - }); + this.serviceApi.getStatsOfLastMonth() + .subscribe(data => { + this.dsJumpForLastMonthByDz = new MatTableDataSource(data.byDz); + this.dsJumpForLastMonthByJumpType = new MatTableDataSource( + data.byJumpType + ); + }); + + this.tabGroup.selectedIndex = 0; } - public showStats(statsToShow: StatType) { - this._shownStats.set(StatType.ForLastMonth, false); - this._shownStats.set(StatType.ForLastYear, false); - this._shownStats.set(StatType.ByDz, false); - this._shownStats.set(StatType.ByAircraft, false); - this._shownStats.set(StatType.ByGear, false); - this._shownStats.set(StatType.ByJumpType, false); - this._shownStats.set(StatType.ByYear, false); - - this._shownStats.set(statsToShow, true); + public refreshStats() { + this.serviceApi.deleteAllCache(); + this.tabGroup.selectedIndex = 0; } - private initShownStats() { - this._shownStats = new Map(); - - this._shownStats.set(StatType.ForLastMonth, false); - this._shownStats.set(StatType.ForLastYear, false); - this._shownStats.set(StatType.ByDz, false); - this._shownStats.set(StatType.ByAircraft, false); - this._shownStats.set(StatType.ByGear, false); - this._shownStats.set(StatType.ByJumpType, false); - this._shownStats.set(StatType.ByYear, true); - } - - public statsToShow(statsToShow: StatType): boolean { - return this._shownStats.get(statsToShow); + public onTabChanged(event: MatTabChangeEvent) { + switch (event.index) { + case 0: + this.serviceApi.getStatsOfLastMonth() + .subscribe(data => { + this.dsJumpForLastMonthByDz = new MatTableDataSource(data.byDz); + this.dsJumpForLastMonthByJumpType = new MatTableDataSource( + data.byJumpType + ); + }); + break; + case 1: + this.serviceApi.getStatsOfLastYear() + .subscribe(data => { + this.dsJumpForLastYearByDz = new MatTableDataSource(data.byDz); + this.dsJumpForLastYearByJumpType = new MatTableDataSource( + data.byJumpType + ); + }); + break; + case 2: + this.serviceApi.getStatsByDz() + .subscribe(data => { + this.dsNbJumpByDz = new MatTableDataSource(data); + }); + break; + case 3: + this.serviceApi.getStatsByAircraft() + .subscribe(data => { + this.dsNbJumpByAircraft = new MatTableDataSource(data); + }); + break; + case 4: + this.serviceApi.getStatsByGear() + .subscribe(data => { + this.dsNbJumpByGear = new MatTableDataSource(data); + }); + break; + case 5: + this.serviceApi.getStatsByJumpType() + .subscribe(data => { + this.dsNbJumpByType = new MatTableDataSource(data); + }); + break; + case 6: + this.serviceApi.getStatsByYear() + .subscribe(data => { + this.dsNbJumpByYear = new MatTableDataSource(data); + }); + break; + } } } diff --git a/Front/skydivelogs-app/src/models/cache-api-key.enum.ts b/Front/skydivelogs-app/src/models/cache-api-key.enum.ts new file mode 100644 index 0000000..cd78c4b --- /dev/null +++ b/Front/skydivelogs-app/src/models/cache-api-key.enum.ts @@ -0,0 +1,13 @@ +export enum CacheApiKey { + JumpType, + Aircraft, + Gear, + Dropzone, + SimpleSummary, + StatsByDz, + StatsByAircraft, + StatsByJumpType, + StatsByGear, + StatsOfLastYear, + StatsOfLastMonth +} diff --git a/Front/skydivelogs-app/src/models/ref-data.enum.ts b/Front/skydivelogs-app/src/models/ref-data.enum.ts deleted file mode 100644 index 100de58..0000000 --- a/Front/skydivelogs-app/src/models/ref-data.enum.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum RefData { - JumpType, - Aircraft, - Gear, - Dropzone -} diff --git a/Front/skydivelogs-app/src/models/stats.ts b/Front/skydivelogs-app/src/models/stats.ts index 6879c8e..95d9f6d 100644 --- a/Front/skydivelogs-app/src/models/stats.ts +++ b/Front/skydivelogs-app/src/models/stats.ts @@ -1,16 +1,6 @@ import { Observable } from 'rxjs'; import { JumpResp } from './jump'; -export enum StatType { - ForLastMonth = 1, - ForLastYear = 2, - ByDz = 3, - ByAircraft = 4, - ByGear = 5, - ByJumpType = 6, - ByYear = 7, -} - export class StatsResp { public simpleSummary: Observable; diff --git a/Front/skydivelogs-app/src/services/aircraft.service.ts b/Front/skydivelogs-app/src/services/aircraft.service.ts index 268b946..509c7f5 100644 --- a/Front/skydivelogs-app/src/services/aircraft.service.ts +++ b/Front/skydivelogs-app/src/services/aircraft.service.ts @@ -5,7 +5,7 @@ import { Observable } from 'rxjs'; import { AircraftResp, AircraftReq } from '../models/aircraft'; import { BaseService } from './base.service'; -import { RefData } from '../models/ref-data.enum'; +import { CacheApiKey } from '../models/cache-api-key.enum'; @Injectable() export class AircraftService extends BaseService { @@ -22,7 +22,7 @@ export class AircraftService extends BaseService { } let callToApi = this.http.get>(url, { headers: this.headers }); - return this.serviceRefData.get>(RefData.Aircraft, callToApi); + return this.serviceCacheApi.get>(CacheApiKey.Aircraft, callToApi); } public AddAircraft(aircraftName: string, dataImg: string) { diff --git a/Front/skydivelogs-app/src/services/base.service.ts b/Front/skydivelogs-app/src/services/base.service.ts index b609ea9..14e2860 100644 --- a/Front/skydivelogs-app/src/services/base.service.ts +++ b/Front/skydivelogs-app/src/services/base.service.ts @@ -1,12 +1,12 @@ import { HttpHeaders } from '@angular/common/http'; import { ConfigurationHelper } from './configuration-helper'; -import { ServiceRefData } from './service-ref-data.service'; +import { ServiceCacheApi } from './service-cache-api.service'; export class BaseService { protected headers: HttpHeaders; protected apiUrl: string; - protected serviceRefData : ServiceRefData; + protected serviceCacheApi : ServiceCacheApi; constructor() { ConfigurationHelper.settings.subscribe(settings => @@ -21,6 +21,6 @@ export class BaseService { } }); - this.serviceRefData = new ServiceRefData(); + this.serviceCacheApi = new ServiceCacheApi(); } } diff --git a/Front/skydivelogs-app/src/services/dropzone.service.ts b/Front/skydivelogs-app/src/services/dropzone.service.ts index 795d2b6..87fd63a 100644 --- a/Front/skydivelogs-app/src/services/dropzone.service.ts +++ b/Front/skydivelogs-app/src/services/dropzone.service.ts @@ -6,7 +6,7 @@ import { map } from "rxjs/operators"; import { DropZoneResp, DropZoneReq } from "../models/dropzone"; import { BaseService } from "./base.service"; -import { RefData } from "../models/ref-data.enum"; +import { CacheApiKey } from "../models/cache-api-key.enum"; @Injectable() export class DropzoneService extends BaseService { @@ -27,7 +27,7 @@ export class DropzoneService extends BaseService { const details = response.map(data => new DropZoneResp(data)); return details; })); - return this.serviceRefData.get>(RefData.Dropzone, callToApi); + return this.serviceCacheApi.get>(CacheApiKey.Dropzone, callToApi); } public SetFavoriteDropZone(selectedDz: DropZoneResp) { @@ -37,7 +37,7 @@ export class DropzoneService extends BaseService { selectedDz, { headers: this.headers }) .subscribe(() => { - this.serviceRefData.delete(RefData.Dropzone); + this.serviceCacheApi.delete(CacheApiKey.Dropzone); }); } @@ -48,7 +48,7 @@ export class DropzoneService extends BaseService { selectedDz, { headers: this.headers }) .subscribe(() => { - this.serviceRefData.delete(RefData.Dropzone); + this.serviceCacheApi.delete(CacheApiKey.Dropzone); }); } @@ -72,7 +72,7 @@ export class DropzoneService extends BaseService { isFavorite: isFavorite }; - this.serviceRefData.delete(RefData.Dropzone); + this.serviceCacheApi.delete(CacheApiKey.Dropzone); return this.http.post(`${this.apiUrl}/DropZone`, bodyNewDropZone, { headers: this.headers }); diff --git a/Front/skydivelogs-app/src/services/gear.service.ts b/Front/skydivelogs-app/src/services/gear.service.ts index 8e3e8b0..1f5b454 100644 --- a/Front/skydivelogs-app/src/services/gear.service.ts +++ b/Front/skydivelogs-app/src/services/gear.service.ts @@ -5,7 +5,7 @@ import { Observable } from "rxjs"; import { GearResp, GearReq } from "../models/gear"; import { BaseService } from "./base.service"; -import { RefData } from "../models/ref-data.enum"; +import { CacheApiKey } from "../models/cache-api-key.enum"; @Injectable() export class GearService extends BaseService { @@ -15,7 +15,7 @@ export class GearService extends BaseService { public getListOfGears(): Observable> { let callToApi = this.http.get>(`${this.apiUrl}/Gear`, { headers: this.headers }); - return this.serviceRefData.get>(RefData.Gear, callToApi); + return this.serviceCacheApi.get>(CacheApiKey.Gear, callToApi); } public AddGear(name: string, @@ -37,7 +37,7 @@ export class GearService extends BaseService { reserveCanopy: reserveCanopy }; - this.serviceRefData.delete(RefData.Gear); + this.serviceCacheApi.delete(CacheApiKey.Gear); return this.http.post(`${this.apiUrl}/Gear`, bodyNewGear, { headers: this.headers}); } } diff --git a/Front/skydivelogs-app/src/services/jump-type.service.ts b/Front/skydivelogs-app/src/services/jump-type.service.ts index 978aa09..3407ad3 100644 --- a/Front/skydivelogs-app/src/services/jump-type.service.ts +++ b/Front/skydivelogs-app/src/services/jump-type.service.ts @@ -5,7 +5,7 @@ import { Observable } from "rxjs"; import { JumpTypeResp, JumpTypeReq } from "../models/jumpType"; import { BaseService } from "./base.service"; -import { RefData } from "../models/ref-data.enum"; +import { CacheApiKey } from "../models/cache-api-key.enum"; @Injectable() export class JumpTypeService extends BaseService { @@ -15,7 +15,7 @@ export class JumpTypeService extends BaseService { public getListOfJumpTypes(): Observable> { let callToApi = this.http.get>(`${this.apiUrl}/JumpType`, { headers: this.headers }); - return this.serviceRefData.get>(RefData.JumpType, callToApi); + return this.serviceCacheApi.get>(CacheApiKey.JumpType, callToApi); } public AddJumpType(jumptypetName: string) { diff --git a/Front/skydivelogs-app/src/services/service-ref-data.service.ts b/Front/skydivelogs-app/src/services/service-cache-api.service.ts similarity index 62% rename from Front/skydivelogs-app/src/services/service-ref-data.service.ts rename to Front/skydivelogs-app/src/services/service-cache-api.service.ts index b8445ed..62171a0 100644 --- a/Front/skydivelogs-app/src/services/service-ref-data.service.ts +++ b/Front/skydivelogs-app/src/services/service-cache-api.service.ts @@ -1,21 +1,20 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { tap } from 'rxjs/operators'; -import { RefData } from '../models/ref-data.enum'; +import { CacheApiKey } from '../models/cache-api-key.enum'; import { of } from 'rxjs'; -//import 'rxjs/add/observable/of'; @Injectable({ providedIn: 'root', }) -export class ServiceRefData { - private cache: Map>; +export class ServiceCacheApi { + private cache: Map>; constructor() { - this.cache = new Map>(); + this.cache = new Map>(); } - public get(key: RefData, callToApi: Observable, withResetCache: boolean = false) : Observable { + public get(key: CacheApiKey, callToApi: Observable, withResetCache: boolean = false) : Observable { if (withResetCache === true) { this.cache.delete(key); } @@ -32,7 +31,7 @@ export class ServiceRefData { } } - public delete(key: RefData) { + public delete(key: CacheApiKey) { this.cache.delete(key); } } diff --git a/Front/skydivelogs-app/src/services/stats.service.ts b/Front/skydivelogs-app/src/services/stats.service.ts index 4661d78..674fc2d 100644 --- a/Front/skydivelogs-app/src/services/stats.service.ts +++ b/Front/skydivelogs-app/src/services/stats.service.ts @@ -1,21 +1,14 @@ -import { Injectable, Injector } from '@angular/core'; +import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { - StatsResp, - StatsByDzResp, - StatsByAircraftResp, - StatsByJumpTypeResp, - StatsByGearResp, - StatsByYearResp, - StatsForLastMonthResp, - StatsForLastYearResp, - SimpleSummary -} from '../models/stats'; +import { StatsByDzResp, StatsByAircraftResp, StatsByJumpTypeResp, + StatsByGearResp, StatsByYearResp, StatsForLastMonthResp, + StatsForLastYearResp, SimpleSummary } from '../models/stats'; import { BaseService } from './base.service'; +import { CacheApiKey } from '../models/cache-api-key.enum'; @Injectable() @@ -24,136 +17,117 @@ export class StatsService extends BaseService { super(); } - public getStatsOfJumps(): StatsResp { - const resultats = new StatsResp(); - - resultats.simpleSummary = this.getSimpleSummary(); - - resultats.statsByDz = this.getStatsByDz(); - resultats.statsByAircraft = this.getStatsByAircraft(); - resultats.statsByJumpType = this.getStatsByJumpType(); - resultats.statsByGear = this.getStatsByGear(); - resultats.statsByYear = this.getStatsByYear(); - - resultats.statsForLastYear = this.getStatsOfLastYear(); - resultats.statsForLastMonth = this.getStatsOfLastMonth(); - - return resultats; + public deleteAllCache() { + this.serviceCacheApi.delete(CacheApiKey.SimpleSummary); + this.serviceCacheApi.delete(CacheApiKey.StatsByDz); + this.serviceCacheApi.delete(CacheApiKey.StatsByAircraft); + this.serviceCacheApi.delete(CacheApiKey.StatsByJumpType); + this.serviceCacheApi.delete(CacheApiKey.StatsByGear); + this.serviceCacheApi.delete(CacheApiKey.StatsOfLastYear); + this.serviceCacheApi.delete(CacheApiKey.StatsOfLastMonth); } - private getSimpleSummary(): Observable { - return this.http - .get>(`${this.apiUrl}/Stats/Simple`, { - headers: this.headers - }) - .pipe( - map(response => { - const stats = new SimpleSummary(response); - return stats; - }) - ); + public getSimpleSummary(): Observable { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/Simple`, { headers: this.headers }) + .pipe( + map(response => { + const stats = new SimpleSummary(response); + return stats; + }) + ); + + return this.serviceCacheApi.get(CacheApiKey.SimpleSummary, callToApi); } - private getStatsByDz(): Observable> { - return this.http - .get>(`${this.apiUrl}/Stats/ByDz`, { - headers: this.headers - }) - .pipe( - map(response => { - const stats = response.map(data => new StatsByDzResp(data)); - return stats; - }) - ); + public getStatsByDz(): Observable> { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/ByDz`, { headers: this.headers }) + .pipe( + map(response => { + const stats = response.map(data => new StatsByDzResp(data)); + return stats; + }) + ); + + return this.serviceCacheApi.get>(CacheApiKey.StatsByDz, callToApi); } - private getStatsByAircraft(): Observable> { - return this.http - .get>( - `${this.apiUrl}/Stats/ByAircraft`, - { headers: this.headers } - ) - .pipe( - map(response => { - const stats = response.map(data => new StatsByAircraftResp(data)); - return stats; - }) - ); + public getStatsByAircraft(): Observable> { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/ByAircraft`, { headers: this.headers }) + .pipe( + map(response => { + const stats = response.map(data => new StatsByAircraftResp(data)); + return stats; + }) + ); + + return this.serviceCacheApi.get>(CacheApiKey.StatsByAircraft, callToApi); } - private getStatsByJumpType(): Observable> { - return this.http - .get>( - `${this.apiUrl}/Stats/ByJumpType`, - { headers: this.headers } - ) - .pipe( - map(response => { - const stats = response.map(data => new StatsByJumpTypeResp(data)); - return stats; - }) - ); + public getStatsByJumpType(): Observable> { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/ByJumpType`,{ headers: this.headers }) + .pipe( + map(response => { + const stats = response.map(data => new StatsByJumpTypeResp(data)); + return stats; + }) + ); + + return this.serviceCacheApi.get>(CacheApiKey.StatsByJumpType, callToApi); } - private getStatsByGear(): Observable> { - return this.http - .get>(`${this.apiUrl}/Stats/ByGear`, { - headers: this.headers - }) - .pipe( - map(response => { - const stats = response.map(data => new StatsByGearResp(data)); - return stats; - }) - ); + public getStatsByGear(): Observable> { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/ByGear`, { headers: this.headers }) + .pipe( + map(response => { + const stats = response.map(data => new StatsByGearResp(data)); + return stats; + }) + ); + + return this.serviceCacheApi.get>(CacheApiKey.StatsByGear, callToApi); } - private getStatsByYear(): Observable> { - return this.http - .get>(`${this.apiUrl}/Stats/ByYear`, { - headers: this.headers - }) - .pipe( - map(response => { - const stats = response.map(data => new StatsByYearResp(data)); - return stats; - }) - ); + public getStatsByYear(): Observable> { + let callToApi = this.http.get>(`${this.apiUrl}/Stats/ByYear`, { headers: this.headers }) + .pipe( + map(response => { + const stats = response.map(data => new StatsByYearResp(data)); + return stats; + }) + ); + + return this.serviceCacheApi.get>(CacheApiKey.StatsByGear, callToApi); } - private getStatsOfLastYear(): Observable { - return this.http - .get( - `${this.apiUrl}/Stats/ForLastYear`, - { headers: this.headers } - ) - .pipe( - map(response => { - const statsByDz = response.byDz.map(data => new StatsByDzResp(data)); - const statsByJumpType = response.byJumpType.map( - data => new StatsByDzResp(data) - ); + public getStatsOfLastYear(): Observable { + let callToApi = this.http.get(`${this.apiUrl}/Stats/ForLastYear`, { headers: this.headers }) + .pipe( + map(response => { + const statsByDz = response.byDz.map(data => new StatsByDzResp(data)); + const statsByJumpType = response.byJumpType.map( + data => new StatsByDzResp(data) + ); - return new StatsForLastYearResp(statsByDz, statsByJumpType); - }) - ); + return new StatsForLastYearResp(statsByDz, statsByJumpType); + }) + ); + + return this.serviceCacheApi.get(CacheApiKey.StatsOfLastYear, callToApi); } - private getStatsOfLastMonth(): Observable { - return this.http - .get( - `${this.apiUrl}/Stats/ForLastMonth`, - { headers: this.headers } - ) - .pipe( - map(response => { - const statsByDz = response.byDz.map(data => new StatsByDzResp(data)); - const statsByJumpType = response.byJumpType.map( - data => new StatsByDzResp(data) - ); + public getStatsOfLastMonth(): Observable { + let callToApi = this.http.get(`${this.apiUrl}/Stats/ForLastMonth`, { headers: this.headers }) + .pipe( + map(response => { + const statsByDz = response.byDz.map(data => new StatsByDzResp(data)); + const statsByJumpType = response.byJumpType.map( + data => new StatsByDzResp(data) + ); - return new StatsForLastMonthResp(statsByDz, statsByJumpType); - }) - ); + return new StatsForLastMonthResp(statsByDz, statsByJumpType); + }) + ); + + return this.serviceCacheApi.get(CacheApiKey.StatsOfLastMonth, callToApi); } }