|
|
|
@ -1,15 +1,7 @@ |
|
|
|
|
import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core'; |
|
|
|
|
import { Component } from '@angular/core'; |
|
|
|
|
|
|
|
|
|
import { Observable, Subscription } from 'rxjs'; |
|
|
|
|
import {ActivatedRoute} from '@angular/router'; |
|
|
|
|
|
|
|
|
|
import {MatTableDataSource} from '@angular/material/table'; |
|
|
|
|
import {MatPaginator} from '@angular/material/paginator'; |
|
|
|
|
import {MatSort} from '@angular/material/sort'; |
|
|
|
|
|
|
|
|
|
import { CollaborateursService, EpService } from "@shared/api-swagger/api/api"; |
|
|
|
|
|
|
|
|
|
import { EpInformationDTO, CollaborateurDTO } from "@shared/api-swagger/model/models"; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Composant pour gérer l'affichage des détails d'un collaborateur et de ses EP |
|
|
|
@ -18,124 +10,10 @@ import { EpInformationDTO, CollaborateurDTO } from "@shared/api-swagger/model/mo |
|
|
|
|
selector: 'app-details-collaborateur', |
|
|
|
|
templateUrl: './details-collaborateur.component.html' |
|
|
|
|
}) |
|
|
|
|
export class DetailsCollaborateurComponent implements OnInit { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà). |
|
|
|
|
*/ |
|
|
|
|
asc = true; |
|
|
|
|
/** |
|
|
|
|
* Numéro de la page à afficher dans le tableau. |
|
|
|
|
*/ |
|
|
|
|
numPage = 1; |
|
|
|
|
/** |
|
|
|
|
* Nombre d'élément du tableau à affiche en une page. |
|
|
|
|
*/ |
|
|
|
|
parPage = 5; |
|
|
|
|
/** |
|
|
|
|
* contenu de la recherche pour trouver un référent. |
|
|
|
|
*/ |
|
|
|
|
search = ""; |
|
|
|
|
/** |
|
|
|
|
* Permet de savoir sur quelle attribut d'un CollaborateurDTO doit être trié le tableau. |
|
|
|
|
*/ |
|
|
|
|
tri = ""; |
|
|
|
|
export class DetailsCollaborateurComponent { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Nombre d'EP effectué permettant de savoir si il faut faire afficher le tableau ou non |
|
|
|
|
*/ |
|
|
|
|
nbEP = 0; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Collaborateur dont on affiche les détails |
|
|
|
|
*/ |
|
|
|
|
collaborateur: CollaborateurDTO; |
|
|
|
|
/** |
|
|
|
|
* Observable pour récupérer le collaborateur |
|
|
|
|
*/ |
|
|
|
|
private collaborateurSubscription : Subscription; |
|
|
|
|
/** |
|
|
|
|
* Observable pour récupérer la liste des EP du collaborateur |
|
|
|
|
*/ |
|
|
|
|
private epSubscription : Subscription; |
|
|
|
|
/** |
|
|
|
|
* Les colonnes à afficher dans le tableau. |
|
|
|
|
*/ |
|
|
|
|
displayedColumns: string[] = ["dateentretien", "referent", "type", "details"]; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* dataSource dans lequel sera stockée les informations à faire afficher dans le Mat Table |
|
|
|
|
*/ |
|
|
|
|
dataSource : MatTableDataSource<EpInformationDTO>; |
|
|
|
|
/** |
|
|
|
|
* Variable qui permet de vérifier que le chargement des EP a bien été fait |
|
|
|
|
*/ |
|
|
|
|
eploaded = false; |
|
|
|
|
/** |
|
|
|
|
* id du collaborateur à récupérer dans l'URL |
|
|
|
|
*/ |
|
|
|
|
idCollaborateur: any; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Pagination du tableau. |
|
|
|
|
*/ |
|
|
|
|
@ViewChild(MatPaginator) paginator: MatPaginator; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Tri par les éléments du tableau selon la colonne choisie. |
|
|
|
|
*/ |
|
|
|
|
@ViewChild(MatSort) sort: MatSort; |
|
|
|
|
|
|
|
|
|
constructor(private collaborateusrService:CollaborateursService, private epService:EpService, private route: ActivatedRoute) {} |
|
|
|
|
|
|
|
|
|
ngOnInit() { |
|
|
|
|
//récupérer l'id du collaborateur dans les paramètres de l'URL
|
|
|
|
|
idCollaborateur: string; |
|
|
|
|
constructor(private route: ActivatedRoute) { |
|
|
|
|
this.idCollaborateur = this.route.snapshot.paramMap.get('id'); |
|
|
|
|
this.collaborateurSubscription = this.collaborateusrService.getCollaborateurById(this.idCollaborateur).subscribe( |
|
|
|
|
collaborateur => { |
|
|
|
|
this.collaborateur = collaborateur; |
|
|
|
|
this.updateEP(); |
|
|
|
|
}, |
|
|
|
|
err => console.log(err) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getReferent(referent : CollaborateurDTO) { |
|
|
|
|
if(referent == undefined || referent == null) { return "Referent indisponible"} |
|
|
|
|
return referent.prenom + " "+ referent.nom; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Mise à jour du tableau des EP lors d'un changement de page du tableau, du nombre d'élément à afficher ou d'un tri. |
|
|
|
|
* La fonction est aussi appelé au début du chargement et à l'utilisation de la barre de recherche. |
|
|
|
|
*/ |
|
|
|
|
updateEP() { |
|
|
|
|
this.epSubscription = this.epService.getEPSignesCollaborateur(this.idCollaborateur).subscribe( |
|
|
|
|
ep => |
|
|
|
|
{ |
|
|
|
|
console.log(ep); |
|
|
|
|
if(ep != null) { |
|
|
|
|
|
|
|
|
|
this.nbEP = ep.length; |
|
|
|
|
this.dataSource = new MatTableDataSource(ep); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
err => console.log(err) |
|
|
|
|
); |
|
|
|
|
this.eploaded = true; |
|
|
|
|
//this.dataSource.paginator = this.paginator;
|
|
|
|
|
//this.dataSource.sort = this.sort;
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Une fois la page fermée, il est nécessaire de se désabonner des Oberservable afin d'éviter les fuites mémoires. |
|
|
|
|
*/ |
|
|
|
|
ngOnDestroy() { |
|
|
|
|
if(this.epSubscription!= undefined) { |
|
|
|
|
this.epSubscription.unsubscribe(); |
|
|
|
|
} |
|
|
|
|
if(this.collaborateurSubscription!= undefined) { |
|
|
|
|
this.collaborateurSubscription.unsubscribe(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|