Browse Source

dev terminé

rajah 6 months ago
parent
commit
fec39df70b

+ 1 - 1
src/app/composants/account-details/account-details.component.html

@@ -5,7 +5,7 @@
 	<div class="card-header shadow-sm">
 		<button (click)="goToHome()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 	</div>
-	<div class="card-body scrollable">
+	<div class="card-body form-scrollable">
 
 		<div class="form-group row">
 			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Créé le</span></label>

+ 1 - 1
src/app/composants/account-update/account-update.component.html

@@ -6,7 +6,7 @@
 	<div class="card-header shadow-sm">
 		<button (click)="goToHome()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 	</div>
-	<div class="card-body scrollable">
+	<div class="card-body form-scrollable">
 
 		<div class="form-group row">
 			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Créé le</span></label>

+ 2 - 2
src/app/composants/categorie-list/categorie-list.component.html

@@ -1,6 +1,6 @@
 <app-menu></app-menu>
 <div id="main">
-<div class="card shadow">
+<div class="card shadow" style="max-height:97vh;">
 	<div class="card-header"><span i18n>Table des catégories</span></div>
 	<div class="card-header shadow-sm">
 		<div class="row">
@@ -10,7 +10,7 @@
 			</div>
 		</div>
 	</div>
-	<div class="card-body">
+	<div class="card-body table-scrollable">
 		<table class="table table-sm">
 			<thead class="thead-dark">
 				<tr>

+ 1 - 1
src/app/composants/participant-create/participant-create.component.html

@@ -6,7 +6,7 @@
 		<div class="card-header shadow-sm">
 			<button (click)="goToListParticipant()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 		</div>
-		<div class="card-body scrollable">
+		<div class="card-body form-scrollable">
 
 @if (this.profil === "ADMIN") {
 			<div class="form-group row">

+ 1 - 1
src/app/composants/participant-details/participant-details.component.html

@@ -5,7 +5,7 @@
 	<div class="card-header shadow-sm">
 		<button (click)="goToListParticipant()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 	</div>
-	<div class="card-body scrollable">
+	<div class="card-body form-scrollable">
 
 		<div class="form-group row">
 			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Créé le</span></label>

+ 14 - 3
src/app/composants/participant-list/participant-list.component.html

@@ -1,7 +1,7 @@
 <app-menu></app-menu>
 <div id="main">
-<div class="card shadow">
-	<div class="card-header"><span i18n>Liste des participants</span></div>
+<div class="card shadow" style="max-height:97vh;">
+	<div class="card-header"><span i18n>Liste des participants : {{pagination.nombreElements}}</span></div>
 	<div class="card-header shadow-sm">
 		<div class="row justify-content-between">
 			<div class="form-group col-sm-2 label-nobr">
@@ -48,7 +48,7 @@
 			</div>
    	</div>
 	</div>
-	<div class="card-body">
+	<div class="card-body table-scrollable" #listeParticipants>
 		<table class="table table-sm">
 			<thead class="thead-dark">
 				<tr>
@@ -87,5 +87,16 @@
 			</tbody>
 		</table>
 	</div>
+	@if (pagination.nombrePages > 1) {
+	<div class="card-footer" style="max-height:54px;">
+		<nav>
+		  <ul class="pagination">
+				<li class="page-item" [class.disabled]="pagination.pageCourante == 0"><a class="page-link" (click)="goToPrevPage()"><i class="fa-solid fa-arrow-left"></i></a></li>
+				@for (p of pages; track p) { <li class="page-item" [class.active]="pagination.pageCourante == (p - 1)"><a class="page-link" (click)="goToPage(p - 1)">{{p}}</a></li> }
+				<li class="page-item" [class.disabled]="pagination.pageCourante == (pagination.nombrePages - 1)"><a class="page-link" (click)="goToNextPage()"><i class="fa-solid fa-arrow-right"></i></a></li>
+		  </ul>
+		</nav>
+	</div>
+	}
 </div>
 </div>

+ 31 - 10
src/app/composants/participant-list/participant-list.component.ts

@@ -6,7 +6,7 @@ import { TooltipModule } from 'ngx-bootstrap/tooltip';
 import { MenuComponent } from '../menu/menu.component';
 import { ParticipantList, ParticipantEnum, ParticipantStatutList } from '../../interfaces/participant';
 import { ParticipantService } from '../../services/participant.service';
-import { Journees } from '../../interfaces/divers';
+import { Journees, Pagination } from '../../interfaces/divers';
 import { DiversService } from '../../services/divers.service'
 
 @Component({ selector: 'app-participant-list', imports: [TooltipModule, FormsModule, MenuComponent], templateUrl: './participant-list.component.html', styleUrl: './participant-list.component.css' })
@@ -23,9 +23,12 @@ export class ParticipantListComponent implements OnInit
 
   PS: ParticipantEnum[] = ParticipantStatutList;
 
+  pagination: Pagination = new Pagination();
+  pages: number[] = [1];
   participants: ParticipantList[] = [];
 
   @ViewChild('boutonSetArrives', {static: false}) boutonSetArrives!: ElementRef;
+  @ViewChild('listeParticipants', {static: false}) listeParticipants!: ElementRef;
 
   selection: Array<number> = new Array<number>();
 
@@ -45,7 +48,22 @@ export class ParticipantListComponent implements OnInit
     this.goToRefreshListParticipant();
   }
 
-  private retreiveDatas() { this.participantService.getListParticipant(this.nomFiltre, this.statutFiltre, this.arriveFiltre, this.listeTri).subscribe(data => { this.participants = data; }); }
+  private retreiveDatas(pageVoulue: number)
+  {
+    this.participantService.getPagination(this.nomFiltre, this.statutFiltre, this.arriveFiltre, pageVoulue).subscribe(page =>
+    {
+      this.pagination = page;
+
+      this.pages = [1];
+      if (this.pagination.nombrePages > 1) { for (let i = 2; i <= this.pagination.nombrePages; i++) { this.pages.push(i); } }
+
+      this.participantService.getListParticipant(this.nomFiltre, this.statutFiltre, this.arriveFiltre, this.listeTri, this.pagination.pageCourante, this.pagination.taillePage).subscribe(data =>
+      {
+         this.participants = data;
+         if (this.listeParticipants) { this.listeParticipants.nativeElement.scrollTop = 0; }
+      });
+    });
+  }
 
   getNombreJours(j1: boolean, j2: boolean, j3: boolean)
   {
@@ -56,15 +74,18 @@ export class ParticipantListComponent implements OnInit
   	return nbjours;
   }
 
-  goToRefreshListParticipant() { this.retreiveDatas(); }
+  goToRefreshListParticipant() { this.retreiveDatas(this.pagination.pageCourante); }
+  goToNextPage() { this.retreiveDatas(this.pagination.pageCourante + 1); }
+  goToPrevPage() { this.retreiveDatas(this.pagination.pageCourante - 1); }
+  goToPage(pageVoulue: number) { this.retreiveDatas(pageVoulue); }
 
-  goToFiltrage() { this.retreiveDatas(); }
+  goToFiltrage() { this.retreiveDatas(this.pagination.pageCourante); }
 
-  trier(event: any) { this.listeTri = event.target.value; this.retreiveDatas(); }
-  filtrageParNom() { this.retreiveDatas(); }
-  filtrageParStatut(event: any) { this.statutFiltre = event.target.value; this.retreiveDatas(); }
-  filtrageParArrive(event: any) { this.arriveFiltre = event.target.value; this.retreiveDatas(); }
-  filtrageReset() { this.nomFiltre = ""; this.statutFiltre = 0; this.arriveFiltre = 0; this.retreiveDatas(); }
+  trier(event: any) { this.listeTri = event.target.value; this.retreiveDatas(this.pagination.pageCourante); }
+  filtrageParNom() { this.retreiveDatas(this.pagination.pageCourante); }
+  filtrageParStatut(event: any) { this.statutFiltre = event.target.value; this.retreiveDatas(this.pagination.pageCourante); }
+  filtrageParArrive(event: any) { this.arriveFiltre = event.target.value; this.retreiveDatas(this.pagination.pageCourante); }
+  filtrageReset() { this.nomFiltre = ""; this.statutFiltre = 0; this.arriveFiltre = 0; this.retreiveDatas(this.pagination.pageCourante); }
 
   goToNewParticipant() { this.router.navigate(['/participant-create']); }
 
@@ -87,6 +108,6 @@ export class ParticipantListComponent implements OnInit
     }
   }
 
-  topperArrives() { if (this.selection.length > 0) { this.participantService.setParticipantsArrives(this.selection).subscribe(() => { this.retreiveDatas() }); } }
+  topperArrives() { if (this.selection.length > 0) { this.participantService.setParticipantsArrives(this.selection).subscribe(() => { this.retreiveDatas(this.pagination.pageCourante) }); } }
 
 }

+ 1 - 1
src/app/composants/participant-update/participant-update.component.html

@@ -6,7 +6,7 @@
 	<div class="card-header shadow-sm">
 		<button (click)="goToListParticipant()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 	</div>
-	<div class="card-body scrollable">
+	<div class="card-body form-scrollable">
 
 		<div class="form-group row">
 			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Créé le</span></label>

+ 1 - 1
src/app/composants/production-details/production-details.component.html

@@ -5,7 +5,7 @@
 	<div class="card-header shadow-sm">
 		<button (click)="goToListProduction()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
 	</div>
-	<div class="card-body scrollable">
+	<div class="card-body form-scrollable">
 
 		<div class="form-group row">
 			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Créé le</span></label>

+ 1 - 1
src/app/composants/show-upload/show-upload.component.html

@@ -7,7 +7,7 @@
   	<div class="card-header shadow-sm">
   		<button (click)="goToListPresentation()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
   	</div>
-  	<div class="card-body scrollable">
+  	<div class="card-body form-scrollable">
 
   		<div class="form-group row">
   			<label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Type</span></label>

+ 2 - 2
src/app/composants/variable-list/variable-list.component.html

@@ -1,6 +1,6 @@
 <app-menu></app-menu>
 <div id="main">
-<div class="card shadow">
+<div class="card shadow" style="max-height:97vh;">
 	<div class="card-header"><span i18n>Table des variables</span></div>
 	<div class="card-header shadow-sm">
 		<div class="row justify-content-between">
@@ -21,7 +21,7 @@
 			</div>
 		</div>
 	</div>
-	<div class="card-body">
+	<div class="card-body table-scrollable">
 		<table class="table table-sm">
 			<thead class="thead-dark">
 				<tr>

+ 8 - 0
src/app/interfaces/divers.ts

@@ -18,3 +18,11 @@ export class Journees
   amigabus: boolean = false;
   dodosurplace: boolean = false;
 }
+
+export class Pagination
+{
+  nombreElements:number = 0;
+  taillePage:number = 100;
+  nombrePages:number = 1;
+  pageCourante:number = 0;
+}

+ 15 - 1
src/app/services/participant.service.ts

@@ -3,6 +3,7 @@ import { HttpClient, HttpParams } from '@angular/common/http'
 import { Observable } from 'rxjs';
 import { Environnement } from '../env';
 import { Participant, ParticipantList, ParticipantShort } from '../interfaces/participant';
+import { Pagination } from '../interfaces/divers';
 
 @Injectable({ providedIn: 'root' })
 
@@ -13,7 +14,18 @@ export class ParticipantService
 
   constructor(private httpClient: HttpClient) { }
 
-  getListParticipant(filtreNom: string, filtreStatut: number, filtreArrive: number, tri: number): Observable<ParticipantList[]>
+  getPagination(filtreNom: string, filtreStatut: number, filtreArrive: number, page: number): Observable<Pagination>
+  {
+    let params = new HttpParams();
+
+    params = params.append('nom', filtreNom);
+    params = params.append('statut', filtreStatut);
+    params = params.append('arrive', filtreArrive);
+    params = params.append('page', page);
+
+    return this.httpClient.get<Pagination>(`${this.baseURL}/pagination`, { params: params });
+  }
+  getListParticipant(filtreNom: string, filtreStatut: number, filtreArrive: number, tri: number, page: number, size: number): Observable<ParticipantList[]>
   {
     let params = new HttpParams();
 
@@ -21,6 +33,8 @@ export class ParticipantService
     params = params.append('statut', filtreStatut);
     params = params.append('arrive', filtreArrive);
     params = params.append('tri', tri);
+    params = params.append('page', page);
+    params = params.append('size', size);
 
     return this.httpClient.get<Participant[]>(`${this.baseURL}/list`, { params: params });
   }

+ 3 - 2
src/styles.css

@@ -4,7 +4,8 @@
 .card-header, .card-body, .card-footer { padding: 7px; }
 .card { margin: 7px; }
 .center { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); min-width:50rem; }
-.scrollable { overflow-y: scroll; overflow-x: hidden; max-height: 600px; }
+.form-scrollable { overflow-y: scroll; overflow-x: hidden; max-height: 600px; }
+.table-scrollable { overflow-y: scroll; overflow-x: scroll; }
 
 @media not (min-width: 900px), not (min-height: 700px) {
   .center { position: unset; left: unset; top: unset; transform: unset; min-width: unset; }
@@ -17,7 +18,7 @@
 }
 
 #main {
-  margin-left: 60px; 
+  margin-left: 60px;
   padding: 0px 10px;
 }