Browse Source

dev en cours

rajah 6 months ago
parent
commit
e3cc644d8f

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

@@ -6,7 +6,8 @@
 		<div class="row justify-content-between">
 			<div class="form-group col-sm-2 label-nobr">
 				<button type="button" (click)="goToRefreshListParticipant()" class="btn bg-gradient btn-primary btn-sm field-separate" style="margin-right: 5px;"><i class="fa-solid fa-rotate"></i>&nbsp;<span i18n>Actualiser</span></button>
-				<button type="button" (click)="goToNewParticipant()" class="btn bg-gradient btn-primary btn-sm field-separate" style="margin-right: 5px;"><i class="fa-solid fa-plus"></i>&nbsp;<span i18n>Créer</span></button>
+				<button type="button" (click)="goToNewParticipant()" class="btn bg-gradient btn-primary btn-sm field-separate" style="margin-right: 5px;" style="margin-right: 5px;"><i class="fa-solid fa-plus"></i>&nbsp;<span i18n>Créer</span></button>
+				<button type="button" (click)="topperArrives()" class="btn bg-gradient btn-primary btn-sm field-separate disabled" style="margin-right: 5px;" #boutonSetArrives i18n-tooltip tooltip="Déclarer les participants sélectionnés comme arrivés" placement="bottom" containor="body"><i class="fa-solid fa-flag-checkered"></i>&nbsp;<span i18n>Sont arrivés</span></button>
 			</div>
 			<div class="form-group col-sm-2 label-nobr">
 				<div class="input-group input-group-sn">
@@ -20,7 +21,7 @@
 			<div class="form-group col-sm-2 label-nobr">
 				<div class="input-group input-group-sn">
 					<button type="button" (click)="filtrageParNom()" class="btn bg-gradient btn-primary btn-sm field-separate"><i class="fa-solid fa-filter"></i>&nbsp;<span i18n>Filtrer</span></button>
-					<input type="text" (keydown.enter)="filtrageParNom()" class="form-control form-control-sm field-separate" id="input_nom" [(ngModel)]="nomFiltre" i18n-tooltip tooltip="Filtrer par nom, prenom, pseudonyme ou adresse email" placement="bottom">
+					<input type="text" (keydown.enter)="filtrageParNom()" class="form-control form-control-sm field-separate" id="input_nom" [(ngModel)]="nomFiltre" i18n-tooltip tooltip="Filtrer par nom, prenom, pseudonyme ou adresse email" placement="bottom" containor="body">
 			  </div>
 			</div>
 			<div class="form-group col-sm-2 label-nobr">
@@ -43,7 +44,7 @@
 			  </div>
 			</div>
 			<div class="form-group col-sm-2 label-nobr">
-				<button type="button" (click)="filtrageReset()" class="btn bg-gradient btn-secondary btn-sm field-separate"><i class="fa-solid fa-filter-circle-xmark"></i>&nbsp;<span i18n>Retirer les filtres</span></button>
+				<button type="button" (click)="filtrageReset()" class="btn bg-gradient btn-secondary btn-sm field-separate" style="margin-right: 5px;"><i class="fa-solid fa-filter-circle-xmark"></i>&nbsp;<span i18n>Retirer les filtres</span></button>
 			</div>
    	</div>
 	</div>
@@ -51,6 +52,7 @@
 		<table class="table table-sm">
 			<thead class="thead-dark">
 				<tr>
+					<th class="fs-6 label-nobr"><small>&nbsp;</small></th>
 					<th class="fs-6 label-nobr"><small><span i18n>Nom</span></small></th>
 					<th class="fs-6 label-nobr"><small><span i18n>Pseudonyme</span></small></th>
 					<th class="fs-6 label-nobr"><small><span i18n>Status</span></small></th>
@@ -62,6 +64,7 @@
 			<tbody>
 				@for (participant of participants; track participant.numeroParticipant) {
 				<tr>
+					<td class="label-nobr">@if (!participant.arrived) { <div class="form-check"><input class="form-check-input" type="checkbox" value="off" id="check_{{participant.numeroParticipant}}" (change)="modifierSelection($event)"></div> } </td>
 					<td class="label-nobr text-truncate" style="max-width:200px;"><a (click)="formParticipant(participant.numeroParticipant)" class="link-primary pointeur-souris text-decoration-none">{{ participant.nom }}&nbsp;{{ participant.prenom }}</a>&nbsp;&nbsp;</td>
 					<td class="label-nobr text-truncate" style="max-width:200px;"><a (click)="formParticipant(participant.numeroParticipant)" class="link-primary pointeur-souris text-decoration-none">{{ participant.pseudonyme }}</a>@if (participant.groupe) { / {{ participant.groupe }} }&nbsp;&nbsp;</td>
 					<td>

+ 26 - 2
src/app/composants/participant-list/participant-list.component.ts

@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit, ViewChild, ElementRef, Renderer2 } from '@angular/core';
 import { Router, ActivatedRoute } from '@angular/router';
 import { FormsModule, NgForm } from '@angular/forms';
 import { TooltipModule } from 'ngx-bootstrap/tooltip';
@@ -25,11 +25,16 @@ export class ParticipantListComponent implements OnInit
 
   participants: ParticipantList[] = [];
 
+  @ViewChild('boutonSetArrives', {static: false}) boutonSetArrives!: ElementRef;
+
+  selection: Array<number> = new Array<number>();
+
   constructor(
     private diversService: DiversService,
     private participantService: ParticipantService,
     private router: Router,
-    private route: ActivatedRoute
+    private route: ActivatedRoute,
+    private renderer: Renderer2
   ) { }
 
   ngOnInit()
@@ -65,4 +70,23 @@ export class ParticipantListComponent implements OnInit
 
   formParticipant(id: number) { this.router.navigate(['/participant-details', id]); }
 
+  modifierSelection(event: any)
+  {
+    const id = event.target.id;
+    if (id)
+    {
+      if (id.startsWith("check_"))
+      {
+        let nu = Number('' + id.substring(6));
+        let nb = 0;
+
+        if (this.selection.includes(nu)) { this.selection = this.selection.filter(it => it !== nu); nb = this.selection.length; } else { nb = this.selection.push(nu); }
+
+        if (this.boutonSetArrives) { if (nb > 0) { this.renderer.removeClass(this.boutonSetArrives.nativeElement, 'disabled'); } else { this.renderer.addClass(this.boutonSetArrives.nativeElement, 'disabled'); } }
+      }
+    }
+  }
+
+  topperArrives() { if (this.selection.length > 0) { this.participantService.setParticipantsArrives(this.selection).subscribe(() => { this.retreiveDatas() }); } }
+
 }

+ 3 - 3
src/app/composants/show-list/show-list.component.html

@@ -16,15 +16,15 @@
 <div class="card shadow">
   <div class="card-header shadow-sm">
     {{ categorie.libelle }}
-    @if (!categorie.pollable) { &nbsp;&nbsp;&nbsp;&nbsp;
+    @if (!categorie.pollable && !categorie.computed && !categorie.displayable) { &nbsp;&nbsp;&nbsp;&nbsp;
       <button type="button" (click)="lierProductions(categorie.numeroCategorie)" class="btn bg-gradient btn-primary btn-sm" style="margin-right: 5px;" i18n-tootip tooltip="Rattacher des productions à cette catégorie et les ordonner" placement="right" container="body"><i class="fa-solid fa-link"></i>&nbsp;<span i18n>Rattacher</span></button>
       <button type="button" (click)="getDiaporama(categorie.numeroCategorie, categorie.libelle)" class="btn bg-gradient btn-primary btn-sm" style="margin-right: 5px;" i18n-tootip tooltip="Télécharger le fichier HTML de présentations de cette catégorie" placement="right" container="body"><i class="fa-solid fa-file-code"></i>&nbsp;<span i18n>Diaporama</span></button>
       <button type="button" [disabled]="productions.length == 0" class="btn bg-gradient btn-danger btn-sm" style="margin-right: 5px;" i18n-tootip tooltip="Ouvrir le scrutin, après que le présentateur a utilisé le diaporama publiquement" placement="right" container="body" data-bs-toggle="modal" [attr.data-bs-target]="'#modalOuvrirVotes' + categorie.numeroCategorie"><i class="fa-solid fa-check-to-slot"></i>&nbsp;<span i18n>Ouvrir les votes</span></button>
     }
     @if (categorie.uploadable) { }
     @if (categorie.pollable) { <span i18n> : le scrutin est ouvert. </span> }
-    @if (categorie.computed) {  <span i18n> : le scrutin est fermé, les résultats sont calculés. </span> }
-    @if (categorie.displayable) { <span i18n> : les résultats sont publiés. </span> }
+    @else if (categorie.computed) {  <span i18n> : le scrutin est fermé, les résultats sont calculés. </span> }
+    @else if (categorie.displayable) { <span i18n> : les résultats sont publiés. </span> }
   </div>
   <div class="card-body hstack align-items-baseline show_row">
 {{ resetLettre() }} @for (production of productions; track production.numeroProduction) { @if (categorie.numeroCategorie == production.numeroCategorie) {

+ 2 - 0
src/app/services/participant.service.ts

@@ -35,4 +35,6 @@ export class ParticipantService
 
   deleteParticipant(id: number): Observable<Object>{ return this.httpClient.delete(`${this.baseURL}/delete/${id}`); }
 
+  setParticipantsArrives(ids: Array<number>): Observable<Object>{ return this.httpClient.put(`${this.baseURL}/arrived`, ids); }
+
 }