diff --git a/Front/skydivelogs-app/src/app/app.module.ts b/Front/skydivelogs-app/src/app/app.module.ts
index 9b8bbee..587489f 100644
--- a/Front/skydivelogs-app/src/app/app.module.ts
+++ b/Front/skydivelogs-app/src/app/app.module.ts
@@ -51,6 +51,7 @@ import { MatIconModule } from "@angular/material/icon";
import { MatInputModule } from "@angular/material/input";
import { MatPaginatorModule } from "@angular/material/paginator";
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
+import { MatProgressBarModule } from "@angular/material/progress-bar";
import { MatSelectModule } from "@angular/material/select";
import { MatTableModule } from "@angular/material/table";
import { MatTabsModule } from "@angular/material/tabs";
@@ -173,6 +174,7 @@ export function initConfig(configService: ConfigurationHelper) {
MatIconModule,
MatAutocompleteModule,
MatProgressSpinnerModule,
+ MatProgressBarModule,
MatTabsModule,
MatDialogModule,
MatCardModule,
diff --git a/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.html b/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.html
index 6859742..f73c45a 100644
--- a/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.html
+++ b/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.html
@@ -2,7 +2,10 @@
-
+
+
+
+
|
@@ -17,7 +20,7 @@
{{ 'List_Jump_Header_Num' | translate }} |
- {{ resultsLength - ( (dataSourceTable.paginator.pageIndex * dataSourceTable.paginator.pageSize ) + i ) }}
+ {{ paginator.length - ( (paginator.pageIndex * paginator.pageSize ) + i ) }}
|
@@ -68,9 +71,6 @@
-
-
-
-
+
diff --git a/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.ts b/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.ts
index 3700599..4c0faa5 100644
--- a/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.ts
+++ b/Front/skydivelogs-app/src/app/list-of-jumps/list-of-jumps.component.ts
@@ -1,98 +1,102 @@
-import { Component, OnInit, ViewChild } from '@angular/core';
-import { MatPaginator } from '@angular/material/paginator';
-import { MatTableDataSource } from '@angular/material/table';
+import { Component, OnInit, ViewChild } from "@angular/core";
+import { MatPaginator, PageEvent } from "@angular/material/paginator";
+import { MatTableDataSource } from "@angular/material/table";
import { MatDialog } from "@angular/material/dialog";
-import { TranslateService } from '@ngx-translate/core';
+import { TranslateService } from "@ngx-translate/core";
-import { AddAction } from '../../models/add-action.enum';
-import { Jump } from '../../models/jump';
-import { JumpService } from '../../services/jump.service';
-import { ServiceComm } from '../../services/service-comm.service';
+import { AddAction } from "../../models/add-action.enum";
+import { Jump } from "../../models/jump";
+import { JumpService } from "../../services/jump.service";
+import { ServiceComm } from "../../services/service-comm.service";
import { JumpInfosComponent } from "../jump-infos/jump-infos.component";
-import { StatsService } from '../../services/stats.service';
+import { StatsService } from "../../services/stats.service";
@Component({
- selector: 'app-list-of-jumps',
- templateUrl: './list-of-jumps.component.html',
- styleUrls: ['./list-of-jumps.component.css']
+ selector: "app-list-of-jumps",
+ templateUrl: "./list-of-jumps.component.html",
+ styleUrls: ["./list-of-jumps.component.css"],
})
export class ListOfJumpsComponent implements OnInit {
public displayedColumns: Array = [
- 'infos',
- 'id',
- 'jumpDate',
- 'jumpType',
- 'aircraft',
- 'dropZone',
- 'actions'
+ "infos",
+ "id",
+ "jumpDate",
+ "jumpType",
+ "aircraft",
+ "dropZone",
+ "actions",
];
- public dataSourceTable;
- public resultsLength = 0;
+ public dataSourceTable: MatTableDataSource = new MatTableDataSource();
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+ public isLoading: boolean = false;
constructor(private serviceApi: JumpService,
private serviceComm: ServiceComm,
public dialog: MatDialog,
private translateService: TranslateService,
- private statsService : StatsService) { }
+ private statsService: StatsService
+ ) {}
+
+ ngAferViewInit(): void {
+ this.dataSourceTable.paginator = this.paginator;
+ }
ngOnInit() {
- this.serviceComm.refreshRequest.subscribe(action => {
+ this.serviceComm.refreshRequest.subscribe((action) => {
if (action === AddAction.Jump) {
this.dialog.closeAll();
this.getListOfJumps();
}
});
- this.serviceComm.forceTranslateTitle.subscribe((data)=> {
- if (data === true){
+ this.serviceComm.forceTranslateTitle.subscribe((data) => {
+ if (data === true) {
this.updateTitle();
}
});
-
+
this.updateTitle();
this.getListOfJumps();
}
- getListOfJumps() {
- this.serviceApi.GetListOfJumps().subscribe(data => {
- setTimeout(() => {
- data.sort((a, b) => {
- if (a.jumpDate.getTime() === b.jumpDate.getTime()) {
- return b.id > a.id ? 1 : -1;
- }
- return b.jumpDate > a.jumpDate ? 1 : -1;
- });
+ getListOfJumps(pageSize: number = 20, pageIndex: number = 0) {
+ this.isLoading = true;
- this.dataSourceTable = new MatTableDataSource(data);
- this.dataSourceTable.paginator = this.paginator;
- this.paginator.pageSize
- this.resultsLength = data.length;
- }, 500);
- });
+ this.serviceApi.GetJumps(pageIndex * pageSize, pageIndex * pageSize + pageSize)
+ .subscribe((data) => {
+ this.dataSourceTable.data = data.rows;
+ setTimeout(() => {
+ this.paginator.length = data.count;
+ this.paginator.pageIndex = pageIndex;
+ this.isLoading = false;
+ }, 500);
+ });
}
openDialog(item: Jump, editMode: boolean) {
- this.dialog.open(JumpInfosComponent,
- { data: { "jump": item, "editMode": editMode},
- maxHeight: "400px",
- minWidth: "350px"
- });
+ this.dialog.open(JumpInfosComponent, {
+ data: { jump: item, editMode: editMode },
+ maxHeight: "400px",
+ minWidth: "350px",
+ });
}
delete(item: Jump) {
- let data : Array = this.dataSourceTable.data;
- data = data.filter(d => d.id !== item.id);
-
+ let data: Array = this.dataSourceTable.data;
+ data = data.filter((d) => d.id !== item.id);
+
this.dataSourceTable.data = data;
- this.resultsLength = data.length;
this.serviceApi.DeleteJump(item);
this.statsService.resetStats();
}
+ pageChanged(event: PageEvent) {
+ this.getListOfJumps(event.pageSize, event.pageIndex);
+ }
+
private updateTitle() {
- this.translateService.get("ListJumps_Title").subscribe(
- data => { this.serviceComm.UpdatedComponentTitle(data); }
- );
+ this.translateService.get("ListJumps_Title").subscribe((data) => {
+ this.serviceComm.UpdatedComponentTitle(data);
+ });
}
}
diff --git a/Front/skydivelogs-app/src/models/jumpList.ts b/Front/skydivelogs-app/src/models/jumpList.ts
new file mode 100644
index 0000000..6effd60
--- /dev/null
+++ b/Front/skydivelogs-app/src/models/jumpList.ts
@@ -0,0 +1,19 @@
+import { JumpResp, Jump } from "./jump";
+
+export class JumpListResp {
+ constructor(data: any) {
+ Object.assign(this, data);
+ }
+
+ public count: number;
+ public rows: Array;
+}
+
+export class JumpList {
+ constructor(data: any) {
+ Object.assign(this, data);
+ }
+
+ public count: number;
+ public rows: Array;
+}
diff --git a/Front/skydivelogs-app/src/services/jump.service.ts b/Front/skydivelogs-app/src/services/jump.service.ts
index 32f2fa9..a9a1193 100644
--- a/Front/skydivelogs-app/src/services/jump.service.ts
+++ b/Front/skydivelogs-app/src/services/jump.service.ts
@@ -5,6 +5,7 @@ import { forkJoin, Observable, of } from "rxjs";
import { map } from "rxjs/operators";
import { JumpResp, JumpReq, Jump } from "../models/jump";
+import { JumpListResp, JumpList } from "../models/jumpList";
import { GearResp } from "../models/gear";
import { DropZoneResp } from "../models/dropzone";
import { AircraftResp } from "../models/aircraft";
@@ -39,6 +40,19 @@ 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) => {
+ let result: JumpList = {
+ rows : this.MapWithDataInCache(response.rows),
+ count : response.count
+ };
+
+ return new JumpList(result);
+ }));
+ }
+
public AddListOfJump(selectedJumpType: number,
selectedAircraft: number,
selectedDz: number,