diff --git a/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.html b/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.html index ebdb896..ff8a19f 100644 --- a/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.html +++ b/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.html @@ -1,18 +1,63 @@
+
+ +
+ -
- - {{ 'ListTunnelFlight_CurrentYear' | translate }} - {{ 'ListTunnelFlight_12Months' | translate }} - + + {{ 'ListTunnelFlight_CurrentYear' | translate }} + {{ 'ListTunnelFlight_12Months' | translate }} + - - -
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID + + Tunnel + + Minutes + + Notes + + Date + +
+
\ No newline at end of file diff --git a/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.ts b/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.ts index 3b5cead..805bd5e 100644 --- a/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.ts +++ b/Front/skydivelogs-app/src/app/list-of-tunnel-flights/list-of-tunnel-flights.component.ts @@ -1,9 +1,12 @@ import { Component, OnInit } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; +import { MatTableDataSource } from '@angular/material/table'; import { ChartConfiguration, ChartData } from 'chart.js'; import { ServiceComm } from '../../services/service-comm.service'; import { TunnelFlightService } from "../../services/tunnel-flight.service"; +import { DateService } from '../../services/date.service'; +import { TunnelFlight } from '../../models/tunnel-flight'; @Component({ selector: 'app-list-of-tunnel-flights', @@ -18,10 +21,19 @@ export class ListOfTunnelFlightsComponent implements OnInit { public barChartType: string; public isLoading: boolean = false; public selectedPeriod: string; + public dataSourceTable: MatTableDataSource = new MatTableDataSource(); + public displayedColumns: Array = [ + "id", + "tunnel", + "nbMinutes", + "notes", + "flightDate" + ]; constructor(private serviceComm: ServiceComm, private serviceTunnelFlight: TunnelFlightService, - private translateService: TranslateService) { } + private translateService: TranslateService, + private dateService: DateService) { } ngOnInit() { this.serviceComm.forceTranslateTitle.subscribe((data) => { @@ -31,26 +43,13 @@ export class ListOfTunnelFlightsComponent implements OnInit { }); this.updateTitle(); - this.isLoading = true; + this.chartConfig(); this.selectedPeriod = "currentYear" this.getData(); } - private updateTitle() { - this.translateService.get("ListTunnelFlight_Title").subscribe( - data => { this.serviceComm.updatedComponentTitle(data); } - ); - } - - private getData(): void { + private chartConfig() { this.barChartType = "bar"; - this.barChartData = { - labels: ['2006', '2007', '2008', '2009', '2010', '2011', '2012'], - datasets: [ - { data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A' }, - { data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B' } - ] - }; this.barChartOptions = { responsive: false, @@ -78,6 +77,43 @@ export class ListOfTunnelFlightsComponent implements OnInit { } } }; + } + + private updateTitle() { + this.translateService.get("ListTunnelFlight_Title").subscribe( + data => { this.serviceComm.updatedComponentTitle(data); } + ); + } + + private getData(): void { + this.isLoading = true; + + let endDate = new Date(); + let beginDate = new Date(); + endDate.setHours(0, 0, 0, 0); + switch (this.selectedPeriod) { + case "currentYear": + beginDate = new Date(endDate.getFullYear(), 0, 1); + break; + case "12Months": + beginDate = this.dateService.addMonths(endDate, -12); + beginDate.setDate(1); + break; + } + + this.serviceTunnelFlight.getTunnelFlights(beginDate, endDate) + .subscribe((data) => { + console.log(data); + this.dataSourceTable.data = data; + }); + + this.barChartData = { + labels: ['2006', '2007', '2008', '2009', '2010', '2011', '2012'], + datasets: [ + { data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A' }, + { data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B' } + ] + }; this.isLoading = false; } @@ -88,10 +124,12 @@ export class ListOfTunnelFlightsComponent implements OnInit { tooltipItems.forEach(function (tooltipItem) { sum += tooltipItem.parsed.y; }); + return 'Sum: ' + sum; }; public onPeriodChange() { console.log(this.selectedPeriod); + this.getData(); } } diff --git a/Front/skydivelogs-app/src/app/new-jump/new-jump.component.html b/Front/skydivelogs-app/src/app/new-jump/new-jump.component.html index 3d4c940..680d2bf 100644 --- a/Front/skydivelogs-app/src/app/new-jump/new-jump.component.html +++ b/Front/skydivelogs-app/src/app/new-jump/new-jump.component.html @@ -3,6 +3,7 @@

{{ 'NewJump_ResetForm' | translate }}

+
{{ 'NewJump_ChooseJumpType' | translate }} diff --git a/Front/skydivelogs-app/src/app/new-tunnel-flight/new-tunnel-flight.component.html b/Front/skydivelogs-app/src/app/new-tunnel-flight/new-tunnel-flight.component.html index 5550272..164f95e 100644 --- a/Front/skydivelogs-app/src/app/new-tunnel-flight/new-tunnel-flight.component.html +++ b/Front/skydivelogs-app/src/app/new-tunnel-flight/new-tunnel-flight.component.html @@ -1,4 +1,7 @@
+
+ +
diff --git a/Front/skydivelogs-app/src/assets/i18n/en.json b/Front/skydivelogs-app/src/assets/i18n/en.json index 56b8f2c..c1a0dba 100644 --- a/Front/skydivelogs-app/src/assets/i18n/en.json +++ b/Front/skydivelogs-app/src/assets/i18n/en.json @@ -122,7 +122,9 @@ "NewTunnelFlight_Comments_Lbl": "Comments", "NewTunnelFlight_Minutes_Lbl": "Time of flight (minutes)", "NewTunnelFlight_Date_Lbl": "Date of flight", + "NewTunnelFlight_GoToJump": "View the tunnel flights", "ListTunnelFlight_CurrentYear": "On the current year", - "ListTunnelFlight_12Months": "On 12 last months" + "ListTunnelFlight_12Months": "On 12 last months", + "ListTunnelFlight_Add" : "Add tunnel flights" } \ No newline at end of file diff --git a/Front/skydivelogs-app/src/assets/i18n/fr.json b/Front/skydivelogs-app/src/assets/i18n/fr.json index 3bc82ce..c8f31c1 100644 --- a/Front/skydivelogs-app/src/assets/i18n/fr.json +++ b/Front/skydivelogs-app/src/assets/i18n/fr.json @@ -122,7 +122,9 @@ "NewTunnelFlight_Comments_Lbl": "Commentaires", "NewTunnelFlight_Minutes_Lbl": "Temps de vol(minutes)", "NewTunnelFlight_Date_Lbl": "Date des vols", + "NewTunnelFlight_GoToJump": "Voir les temps de vol en soufflerie", "ListTunnelFlight_CurrentYear": "Dans l'année en cours", - "ListTunnelFlight_12Months": "Sur 12 derniers mois" + "ListTunnelFlight_12Months": "Sur 12 derniers mois", + "ListTunnelFlight_Add" : "Ajouter du temps en soufflerie" } \ No newline at end of file diff --git a/Front/skydivelogs-app/src/models/tunnel-flight.ts b/Front/skydivelogs-app/src/models/tunnel-flight.ts index 43c9b91..ccf663a 100644 --- a/Front/skydivelogs-app/src/models/tunnel-flight.ts +++ b/Front/skydivelogs-app/src/models/tunnel-flight.ts @@ -1,3 +1,5 @@ +import { DropZoneResp } from './dropzone'; + export class TunnelFlightReq { constructor(data: any) { Object.assign(this, data); @@ -30,7 +32,7 @@ export class TunnelFlight { } public id: number; - public tunnelId: number; + public tunnel: DropZoneResp; public nbMinutes: number; public notes: string; public flightDate: Date; diff --git a/Front/skydivelogs-app/src/services/date.service.ts b/Front/skydivelogs-app/src/services/date.service.ts index 551fce2..9423c1a 100644 --- a/Front/skydivelogs-app/src/services/date.service.ts +++ b/Front/skydivelogs-app/src/services/date.service.ts @@ -9,11 +9,21 @@ export class DateService { } public addDays(currentDate: Date, nbDays: number): Date { - const totalMilliSeconds = nbDays * this.milliSeconInDay; - const currentTime = currentDate.getTime(); const tmpDate = new Date(currentDate.getTime()); + tmpDate.setDate(tmpDate.getDate() + nbDays); - tmpDate.setTime(currentTime + totalMilliSeconds); + // const totalMilliSeconds = nbDays * this.milliSeconInDay; + // const currentTime = currentDate.getTime(); + // const tmpDate = new Date(currentDate.getTime()); + + // tmpDate.setTime(currentTime + totalMilliSeconds); + + return tmpDate; + } + + public addMonths(currentDate: Date, nbMonths: number): Date { + const tmpDate = new Date(currentDate.getTime()); + tmpDate.setMonth(tmpDate.getMonth() + nbMonths); return tmpDate; } diff --git a/Front/skydivelogs-app/src/services/jump.service.ts b/Front/skydivelogs-app/src/services/jump.service.ts index 0a1b9c0..4fb3b76 100644 --- a/Front/skydivelogs-app/src/services/jump.service.ts +++ b/Front/skydivelogs-app/src/services/jump.service.ts @@ -23,12 +23,12 @@ export class JumpService extends BaseService { private callsToAdd: Array>; constructor(private http: HttpClient, - private dateService: DateService, - private datePipe: DatePipe, - private dropzoneService: DropzoneService, - private aircraftService: AircraftService, - private jumpTypeService: JumpTypeService, - private gearService: GearService) { + private dateService: DateService, + private datePipe: DatePipe, + private dropzoneService: DropzoneService, + private aircraftService: AircraftService, + private jumpTypeService: JumpTypeService, + private gearService: GearService) { super(); } @@ -41,7 +41,7 @@ export class JumpService extends BaseService { public getJumps(beginIndex: number, endIndex: number): Observable { return this.http.get(`${this.apiUrl}/Jump/${beginIndex}/${endIndex}`, { headers: this.headers }) - .pipe(map((response) => { + .pipe(map(response => { let result: JumpList = { rows: this.mapWithDataInCache(response.rows), count: response.count diff --git a/Front/skydivelogs-app/src/services/tunnel-flight.service.ts b/Front/skydivelogs-app/src/services/tunnel-flight.service.ts index 95e1dd2..293889a 100644 --- a/Front/skydivelogs-app/src/services/tunnel-flight.service.ts +++ b/Front/skydivelogs-app/src/services/tunnel-flight.service.ts @@ -5,12 +5,16 @@ import { Observable } from "rxjs"; import { map } from "rxjs/operators"; import { TunnelFlightReq, TunnelFlightResp, TunnelFlight } from "../models/tunnel-flight"; +import { DropZoneResp } from '../models/dropzone'; import { BaseService } from "./base.service"; +import { DropzoneService } from "./dropzone.service"; @Injectable() export class TunnelFlightService extends BaseService { - constructor(private http: HttpClient, private datePipe: DatePipe) { + constructor(private http: HttpClient, + private datePipe: DatePipe, + private dropzoneService: DropzoneService) { super(); } @@ -31,15 +35,25 @@ export class TunnelFlightService extends BaseService { } public getTunnelFlights(begin: Date, end: Date): Observable> { - let beginDate = this.datePipe.transform(begin, "yyyyMMdd"); - let endDate = this.datePipe.transform(end, "yyyyMMdd"); + let beginDate = this.datePipe.transform(begin, "yyyy-MM-dd"); + let endDate = this.datePipe.transform(end, "yyyy-MM-dd"); return this.http.get>(`${this.apiUrl}/TunnelFlight/${beginDate}/${endDate}`, { headers: this.headers }) - .pipe( - map(response => { - const stats = response.map(data => new TunnelFlightResp(data)); - return stats; + .pipe(map(response => { + return this.mapWithDataInCache(response); }) ); } + + private mapWithDataInCache(apiResp: Array): Array { + let allDropzones: Array; + this.dropzoneService.getFromCache().subscribe(data => { allDropzones = data; }); + + return apiResp.map((data) => { + let tmp = new TunnelFlight(data); + tmp.tunnel = allDropzones.find(d => d.id == data.tunnelId); + + return tmp; + }); + } }