Ajout des commentaires manquants

develop
Yanaël GRETTE 4 years ago
parent f6e2c6ab79
commit ffbac86dfc
  1. 13
      src/app/app-routing.module.ts
  2. 1
      src/app/app.module.ts
  3. 2
      src/app/collaborateurs/collaborateurs.component.html
  4. 45
      src/app/collaborateurs/collaborateurs.component.ts
  5. 4
      src/app/collaborateurs/collaborateurs.module.ts
  6. 4
      src/app/collaborateurs/collaborateurs.routing.module.ts
  7. 2
      src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html
  8. 61
      src/app/collaborateurs/details-collaborateur/details-collaborateur.component.ts
  9. 1
      src/app/collaborateurs/formations-collaborateur/details-evaluation/evaluation.component.ts
  10. 1
      src/app/collaborateurs/formations-collaborateur/edit-evaluation/edit-evaluation.component.ts
  11. 1
      src/app/collaborateurs/formations-collaborateur/formations-collaborateur.component.ts
  12. 3
      src/app/demandes-delegation/demandes-delegation.routing.module.ts
  13. 2
      src/app/demandes-formation/demandes-formation.component.ts
  14. 3
      src/app/demandes-formation/demandes-formation.module.ts
  15. 3
      src/app/demandes-formation/demandes-formation.routing.module.ts
  16. 2
      src/app/demandes-formation/details-demande-formation/demande-formation.component.ts
  17. 1
      src/app/demandes-formation/new-demande-formation/new-demande-formation.component.ts
  18. 1
      src/app/ep-saisie/ep-saisie.component.ts
  19. 3
      src/app/ep-saisie/ep-saisie.module.ts
  20. 9
      src/app/ep-saisie/ep-saisie.routing.module.ts
  21. 1
      src/app/ep-saisie/epa-saisie/epa-saisie.component.ts
  22. 1
      src/app/ep-saisie/epa-six-ans-saisie/epa-six-ans-saisie.component.ts
  23. 1
      src/app/ep-saisie/eps-saisie/eps-saisie.component.ts
  24. 1
      src/app/ep/ep-augmentation-salaire/ep-augmentation-salaire.component.ts
  25. 1
      src/app/ep/ep-choix-date/ep-choix-date.component.ts
  26. 1
      src/app/ep/ep-commentaire-assistant/ep-commentaire-assistant.component.ts
  27. 1
      src/app/ep/ep-commentaire-referent/ep-commentaire-referent.component.ts
  28. 1
      src/app/ep/ep-consultation/ep-consultation.component.ts
  29. 1
      src/app/ep/ep-demande-delegation/ep-demande-delegation.component.ts
  30. 1
      src/app/ep/ep-demandes-formation/ep-demandes-formation.component.ts
  31. 1
      src/app/ep/ep-participants/ep-participants.component.ts
  32. 2
      src/app/ep/ep-participants/new-participant/new-participant.component.ts
  33. 1
      src/app/ep/ep-propositions-dates/ep-propositions-dates.component.ts
  34. 1
      src/app/ep/ep-signature/ep-signature.component.ts
  35. 1
      src/app/ep/ep.component.ts
  36. 4
      src/app/ep/ep.module.ts
  37. 4
      src/app/ep/ep.routing.module.ts
  38. 1
      src/app/ep/epa-six-ans/epa-six-ans.component.ts
  39. 1
      src/app/ep/epa/epa.component.ts
  40. 1
      src/app/ep/eps/eps.component.ts
  41. 9
      src/app/formations/details-formation/formation.component.html
  42. 26
      src/app/formations/details-formation/formation.component.ts
  43. 12
      src/app/formations/edit-formation/edit-formation.component.html
  44. 95
      src/app/formations/edit-formation/edit-formation.component.ts
  45. 2
      src/app/formations/formations.component.html
  46. 15
      src/app/formations/formations.component.ts
  47. 3
      src/app/formations/formations.module.ts
  48. 4
      src/app/formations/formations.routing.module.ts
  49. 15
      src/app/formations/new-formation/new-formation.component.html
  50. 48
      src/app/formations/new-formation/new-formation.component.ts
  51. 6
      src/app/home/home-assistante/home-assistante.component.html
  52. 39
      src/app/home/home-assistante/home-assistante.component.ts
  53. 2
      src/app/home/home-rh/home-rh.component.html
  54. 33
      src/app/home/home-rh/home-rh.component.ts
  55. 1
      src/app/home/home.component.ts
  56. 4
      src/app/home/home.module.ts
  57. 2
      src/app/referents/referents.component.html
  58. 38
      src/app/referents/referents.component.ts
  59. 9
      src/app/referents/referents.routing.module.ts
  60. 2
      src/app/shared/angular-material/angular-material.module.ts
  61. 4
      src/app/shared/api-swagger/api.module.ts
  62. 1
      src/app/shared/nav-menu/nav-menu-assistante/nav-menu-assistante.component.ts
  63. 2
      src/app/shared/nav-menu/nav-menu-collaborateur/nav-menu-collaborateur.component.ts
  64. 1
      src/app/shared/nav-menu/nav-menu-commercial/nav-menu-commercial.component.ts
  65. 1
      src/app/shared/nav-menu/nav-menu-rh/nav-menu-rh.component.ts
  66. 3
      src/app/shared/nav-menu/nav-menu.module.ts
  67. 26
      src/app/shared/utils/paths.ts
  68. 4
      src/app/shared/utils/typeenums.ts

@ -10,42 +10,55 @@ import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation, import { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation,
paths_ep, paths_saisie_ep, paths_formation, paths_home, paths_referents } from '@shared/utils/paths'; paths_ep, paths_saisie_ep, paths_formation, paths_home, paths_referents } from '@shared/utils/paths';
/**
* L'ensemble des routes du client Angular
*/
const routes: Routes = [ const routes: Routes = [
//Redirection vers le home pour "/"
{ {
path: '', path: '',
redirectTo: paths_home.path, redirectTo: paths_home.path,
pathMatch: 'full' pathMatch: 'full'
}, },
//Chemin du home
{ {
path: paths_home.path, path: paths_home.path,
component: HomeComponent, component: HomeComponent,
canActivate: [KeycloakGuard], canActivate: [KeycloakGuard],
pathMatch: 'full' pathMatch: 'full'
}, },
//chargement des chemins du module collaborateur à partir du routing de ce module
{ {
path: paths_collaborateurs.path, path: paths_collaborateurs.path,
loadChildren: () => import('./collaborateurs/collaborateurs.module').then(m=> m.CollaborateursModule) loadChildren: () => import('./collaborateurs/collaborateurs.module').then(m=> m.CollaborateursModule)
}, },
//chargement des chemins du module demandes délégation à partir du routing de ce module
{ {
path: paths_demandes_delegation.path, path: paths_demandes_delegation.path,
loadChildren: () => import('./demandes-delegation/demandes-delegation.module').then(m=> m.DemandesDelegationModule) loadChildren: () => import('./demandes-delegation/demandes-delegation.module').then(m=> m.DemandesDelegationModule)
}, },
//chargement des chemins du module demandes de formation à partir du routing de ce module
{ {
path: paths_demandes_formation.path, path: paths_demandes_formation.path,
loadChildren: () => import('./demandes-formation/demandes-formation.module').then(m=> m.DemandesFormationModule) loadChildren: () => import('./demandes-formation/demandes-formation.module').then(m=> m.DemandesFormationModule)
}, },
//chargement des chemins du module ep à partir du routing de ce module
{ {
path: paths_ep.path, path: paths_ep.path,
loadChildren: () => import('./ep/ep.module').then(m=> m.EpModule) loadChildren: () => import('./ep/ep.module').then(m=> m.EpModule)
}, },
//chargement des chemins du module saisie ep à partir du routing de ce module
{ {
path: paths_saisie_ep.path, path: paths_saisie_ep.path,
loadChildren: () => import('./ep-saisie/ep-saisie.module').then(m=> m.EpSaisieModule) loadChildren: () => import('./ep-saisie/ep-saisie.module').then(m=> m.EpSaisieModule)
}, },
//chargement des chemins du module formation à partir du routing de ce module
{ {
path: paths_formation.path, path: paths_formation.path,
loadChildren: () => import('./formations/formations.module').then(m=> m.FormationsModule) loadChildren: () => import('./formations/formations.module').then(m=> m.FormationsModule)
}, },
//chargement des chemins du module référent à partir du routing de ce module
{ {
path: paths_referents.path, path: paths_referents.path,
loadChildren: () => import('./referents/referents.module').then(m=> m.ReferentsModule) loadChildren: () => import('./referents/referents.module').then(m=> m.ReferentsModule)

@ -57,6 +57,7 @@ let keycloakService: KeycloakService = new KeycloakService();
}) })
export class AppModule implements DoBootstrap { export class AppModule implements DoBootstrap {
//Configuration de la connexion avec Keycloak
async ngDoBootstrap(app) { async ngDoBootstrap(app) {
const { keycloakConfig } = environment; const { keycloakConfig } = environment;

@ -1,6 +1,7 @@
<app-nav-menu></app-nav-menu> <app-nav-menu></app-nav-menu>
<h1> Liste des collaborateurs </h1> <h1> Liste des collaborateurs </h1>
<!-- Affichage de la liste des collaborateurs -->
<mat-table matSort [dataSource]="dataSource"> <mat-table matSort [dataSource]="dataSource">
<ng-container matColumnDef="agence"> <ng-container matColumnDef="agence">
<mat-header-cell *matHeaderCellDef mat-sort-header>Agence</mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header>Agence</mat-header-cell>
@ -9,6 +10,7 @@
<ng-container matColumnDef="collaborateur"> <ng-container matColumnDef="collaborateur">
<mat-header-cell *matHeaderCellDef mat-sort-header>Collabotareur</mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header>Collabotareur</mat-header-cell>
<!--Créer un lien vers les détails du collaborateur-->
<mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.id]">{{row.prenom}} {{row.nom}}</mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.id]">{{row.prenom}} {{row.nom}}</mat-cell>
</ng-container> </ng-container>

@ -13,7 +13,7 @@ import { CollaborateursService } from "@shared/api-swagger/api/api";
/** /**
* Composant qui sert à l'affichage de la liste des collaborateurs en fonction de l'agence de son utilitateur. * Composant qui sert à l'affichage de la liste des collaborateurs en fonction de l'agence de son utilitateur.
* Seuls les commerciaux, RH et assistantes pourront accéder à la liste des collaborateurs. * Seuls les commerciaux, RH et assistantes pourront accéder à la liste des collaborateurs.
* Les données affichées : Agence-Nom Prénom-Date Embauche-Responsable Commercial-Date Prochain EP * Les données affichées : Agence-Nom Prénom-Date Embauche-Responsable Commercial-Date Prochain EP.
*/ */
@Component({ @Component({
selector: 'app-collaborateurs', selector: 'app-collaborateurs',
@ -21,22 +21,45 @@ import { CollaborateursService } from "@shared/api-swagger/api/api";
}) })
export class CollaborateursComponent implements OnInit { export class CollaborateursComponent implements OnInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
/**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5; parPage = 5;
/**
* Rôle des collaborateurs à récupérer via le service collaborateur, ici nous ne voulons que les collaborateurs (pour le moment...).
*/
roles : string[] = ["collaborateur"]; roles : string[] = ["collaborateur"];
/**
* Observable pour faire des requêtes sur le service collaborateur.
*/
private collaborateursDisponiblesSubscription : Subscription; private collaborateursDisponiblesSubscription : Subscription;
/**
* Liste des colonnes du tableau à afficher.
*/
displayedColumns : string[] = ["agence", "collaborateur", "dateembauche", "referent"]; displayedColumns : string[] = ["agence", "collaborateur", "dateembauche", "referent"];
/**
* C'est dans cet objet que seront stockés les collaborateurs à afficher dans le Mat Table côté template.
*/
dataSource : MatTableDataSource<CollaborateurDTO>; dataSource : MatTableDataSource<CollaborateurDTO>;
/** /**
* contenu de la recherche. * contenu de la recherche pour trouver un collaborateur.
*/ */
search = ""; search = "";
/**
* Permet de savoir sur quelle attribut d'un CollaborateurDTO doit être trié le tableau.
*/
tri = ""; tri = "";
/** /**
* Pagination du tableau. * Pagination du tableau.
*/ */
@ -48,7 +71,7 @@ export class CollaborateursComponent implements OnInit {
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort) sort: MatSort;
/** /**
* Spécifie si la liste des EP est en cours de chargement et d'écriture dans le tableau. * Spécifie si la liste des collaborateurs est en cours de chargement dans le tableau.
*/ */
chargement = true; chargement = true;
constructor(private service: CollaborateursService) {} constructor(private service: CollaborateursService) {}
@ -58,7 +81,12 @@ export class CollaborateursComponent implements OnInit {
} }
/**
* Mettre à jour les informations à afficher dans la tableau.
* Devra se faire à l'ouverture de la page, au changement de page ou du nombre d'éléments à afficher, au moment d'un tri ou encore lors de l'utilisation de la barre de recherche.
*/
updateDataSource() { updateDataSource() {
//récupérer la liste des collaborateur et mettre à jour le tableau
this.collaborateursDisponiblesSubscription = this.service.getCollaborateurs(this.asc, this.numPage, this.parPage, this.roles, 1, undefined, this.search, this.tri).subscribe( this.collaborateursDisponiblesSubscription = this.service.getCollaborateurs(this.asc, this.numPage, this.parPage, this.roles, 1, undefined, this.search, this.tri).subscribe(
collaborateurs => this.dataSource = new MatTableDataSource(collaborateurs), collaborateurs => this.dataSource = new MatTableDataSource(collaborateurs),
err => console.log(err) err => console.log(err)
@ -67,11 +95,16 @@ export class CollaborateursComponent implements OnInit {
//this.dataSource.sort = this.sort; //this.dataSource.sort = this.sort;
} }
/**
* Fonction qui calculait le nombre d'année qu'un collaborateur a passé chez Apside (calculer entre la date d'aujourd'hui et la date d'arrivée du collaborateur).
*/
setAnciennete(firstDate, secondDate) { setAnciennete(firstDate, secondDate) {
return Math.abs(firstDate-secondDate); return Math.abs(firstDate-secondDate);
} }
/**
* Une fois la page fermée, il est nécessaire de se désabonner des Oberservable afin d'éviter les fuites mémoires.
*/
ngOnDestroy() { ngOnDestroy() {
if(this.collaborateursDisponiblesSubscription != undefined) { if(this.collaborateursDisponiblesSubscription != undefined) {
this.collaborateursDisponiblesSubscription.unsubscribe(); this.collaborateursDisponiblesSubscription.unsubscribe();

@ -16,7 +16,9 @@ import { FormationsCollaboateurComponent } from "./formations-collaborateur/form
import { CollaborateursRoutingModule } from "./collaborateurs.routing.module"; import { CollaborateursRoutingModule } from "./collaborateurs.routing.module";
/**
* Module collaborateur.
*/
@NgModule({ @NgModule({
declarations: [ declarations: [
CollaborateursComponent, DetailsCollaborateurComponent, CollaborateursComponent, DetailsCollaborateurComponent,

@ -11,7 +11,9 @@ import { paths_collaborateurs } from '@shared/utils/paths';
import { KeycloakGuard } from '@shared/guards/keycloakguard'; import { KeycloakGuard } from '@shared/guards/keycloakguard';
/**
* Routes du module collaborateur
*/
const routes: Routes = [ const routes: Routes = [
{ path:'', component: CollaborateursComponent, pathMatch: 'full', canActivate: [KeycloakGuard] }, { path:'', component: CollaborateursComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
{ path:paths_collaborateurs.formations, component: FormationsCollaboateurComponent, canActivate: [KeycloakGuard] }, { path:paths_collaborateurs.formations, component: FormationsCollaboateurComponent, canActivate: [KeycloakGuard] },

@ -14,6 +14,7 @@
</ng-container> </ng-container>
<ng-container *ngIf= "eploaded && nbEP>0"> <ng-container *ngIf= "eploaded && nbEP>0">
<!-- Affichage de la liste des EP effectués -->
<h3>Liste des précédents EP</h3> <h3>Liste des précédents EP</h3>
<mat-table [dataSource]="this.dataSource" matSort> <mat-table [dataSource]="this.dataSource" matSort>
<ng-container matColumnDef="dateentretien"> <ng-container matColumnDef="dateentretien">
@ -33,6 +34,7 @@
<ng-container matColumnDef="details"> <ng-container matColumnDef="details">
<mat-header-cell *matHeaderCellDef mat-sort-header></mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header></mat-header-cell>
<!-- Lien pour consulter l'EP -->
<mat-cell *matCellDef="let row" [routerLink]="['/ep',row.id]"> Voir détails EP </mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/ep',row.id]"> Voir détails EP </mat-cell>
</ng-container> </ng-container>

@ -12,6 +12,7 @@ import { CollaborateursService, EpService } from "@shared/api-swagger/api/api";
import { EpInformationDTO, CollaborateurDTO } from "@shared/api-swagger/model/models"; 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
*/ */
@Component({ @Component({
selector: 'app-details-collaborateur', selector: 'app-details-collaborateur',
@ -19,19 +20,60 @@ import { EpInformationDTO, CollaborateurDTO } from "@shared/api-swagger/model/mo
}) })
export class DetailsCollaborateurComponent implements OnInit { export class DetailsCollaborateurComponent implements OnInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
/**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5; parPage = 5;
/**
* contenu de la recherche pour trouver un référent.
*/
search = ""; search = "";
/**
* Permet de savoir sur quelle attribut d'un CollaborateurDTO doit être trié le tableau.
*/
tri = ""; tri = "";
/**
* Nombre d'EP effectué permettant de savoir si il faut faire afficher le tableau ou non
*/
nbEP = 0; nbEP = 0;
/**
* Collaborateur dont on affiche les détails
*/
collaborateur: CollaborateurDTO; collaborateur: CollaborateurDTO;
/**
* Observable pour récupérer le collaborateur
*/
private collaborateurSubscription : Subscription; private collaborateurSubscription : Subscription;
/**
* Observable pour récupérer la liste des EP du collaborateur
*/
private epSubscription : Subscription; private epSubscription : Subscription;
/**
* Les colonnes à afficher dans le tableau.
*/
displayedColumns: string[] = ["dateentretien", "referent", "type", "details"]; displayedColumns: string[] = ["dateentretien", "referent", "type", "details"];
/**
* dataSource dans lequel sera stockée les informations à faire afficher dans le Mat Table
*/
dataSource : MatTableDataSource<EpInformationDTO>; dataSource : MatTableDataSource<EpInformationDTO>;
/**
* Variable qui permet de vérifier que le chargement des EP a bien é fait
*/
eploaded = false; eploaded = false;
/**
* id du collaborateur à récupérer dans l'URL
*/
idCollaborateur: any; idCollaborateur: any;
/** /**
@ -47,20 +89,22 @@ export class DetailsCollaborateurComponent implements OnInit {
constructor(private collaborateusrService:CollaborateursService, private epService:EpService, private route: ActivatedRoute) {} constructor(private collaborateusrService:CollaborateursService, private epService:EpService, private route: ActivatedRoute) {}
ngOnInit() { ngOnInit() {
//récupérer l'id du collaborateur dans les paramètres de l'URL
this.idCollaborateur = this.route.snapshot.paramMap.get('id'); this.idCollaborateur = this.route.snapshot.paramMap.get('id');
this.collaborateurSubscription = this.collaborateusrService.getCollaborateurById(this.idCollaborateur).subscribe( this.collaborateurSubscription = this.collaborateusrService.getCollaborateurById(this.idCollaborateur).subscribe(
collaborateur => this.initCollaborateur(collaborateur[0]), collaborateur => {
this.collaborateur = collaborateur[0];
this.updateEP();
},
err => console.log(err) err => console.log(err)
); );
} }
initCollaborateur(collaborateur:CollaborateurDTO) { /**
this.collaborateur = collaborateur; * Mise à jour du tableau des EP lors d'un changement de page du tableau, du nombre d'élément à afficher ou d'un tri.
this.updateEP() * La fonction est aussi appelé au début du chargement et à l'utilisation de la barre de recherche.
} */
updateEP() { updateEP() {
console.log(this.idCollaborateur);
this.epSubscription = this.epService.getEPByCollaborateur(this.asc, this.idCollaborateur, this.numPage, this.parPage, undefined, this.search, this.tri).subscribe( this.epSubscription = this.epService.getEPByCollaborateur(this.asc, this.idCollaborateur, this.numPage, this.parPage, undefined, this.search, this.tri).subscribe(
ep => ep =>
{ {
@ -74,6 +118,9 @@ export class DetailsCollaborateurComponent implements OnInit {
//this.dataSource.sort = this.sort; //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() { ngOnDestroy() {
if(this.epSubscription!= undefined) { if(this.epSubscription!= undefined) {
this.epSubscription.unsubscribe(); this.epSubscription.unsubscribe();

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire affhcier l'évaluation d'une formation d'un collaborateur.
*/ */
@Component({ @Component({
selector: 'app-evaluation ', selector: 'app-evaluation ',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour permettre à un collaborateur de faire l'évaluation d'une formation
*/ */
@Component({ @Component({
selector: 'app-edit-evaluation', selector: 'app-edit-evaluation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour afficher la liste des formations auxquelles à participer le collaborateur.
*/ */
@Component({ @Component({
selector: 'app-formations-collaborateur', selector: 'app-formations-collaborateur',

@ -9,6 +9,9 @@ import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_demandes_delegation } from "@shared/utils/paths"; import { paths_demandes_delegation } from "@shared/utils/paths";
/**
* Routes du module demandes delegation
*/
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',

@ -1,6 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire afficher la liste des demandes de formations
* Les RH pourront valider ou refuser les demandes
*/ */
@Component({ @Component({
selector: 'app-demandes-formation', selector: 'app-demandes-formation',

@ -15,6 +15,9 @@ import { DemandeFormationComponent } from './details-demande-formation/demande-f
import { NewDemandeFormationComponent } from './new-demande-formation/new-demande-formation.component' import { NewDemandeFormationComponent } from './new-demande-formation/new-demande-formation.component'
import { DemandesFormationsRoutingModule } from './demandes-formation.routing.module'; import { DemandesFormationsRoutingModule } from './demandes-formation.routing.module';
/**
* Module demandes formation
*/
@NgModule({ @NgModule({
declarations: [ DemandesFormationComponent, DemandeFormationComponent, declarations: [ DemandesFormationComponent, DemandeFormationComponent,
NewDemandeFormationComponent NewDemandeFormationComponent

@ -10,6 +10,9 @@ import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_demandes_formation } from "@shared/utils/paths"; import { paths_demandes_formation } from "@shared/utils/paths";
/**
* Routes du module demandes formation
*/
const routes: Routes = [ const routes: Routes = [
{ path:'', component: DemandesFormationComponent, pathMatch: 'full', canActivate: [KeycloakGuard] }, { path:'', component: DemandesFormationComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
{ path:paths_demandes_formation.new, component: NewDemandeFormationComponent, canActivate: [KeycloakGuard] }, { path:paths_demandes_formation.new, component: NewDemandeFormationComponent, canActivate: [KeycloakGuard] },

@ -1,6 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour afficher les détails d'une demandes de formation
* (peut ne pas être utile)
*/ */
@Component({ @Component({
selector: 'app-demande-formation', selector: 'app-demande-formation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant qui sert à créer une demande de formation pour un collaborateur.
*/ */
@Component({ @Component({
selector: 'app-new-demande-formation', selector: 'app-new-demande-formation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant permettant la saisie d'un EP
*/ */
@Component({ @Component({
selector: 'app-ep-saisie', selector: 'app-ep-saisie',

@ -14,6 +14,9 @@ import { EpaSixAnsSaisieComponent } from './epa-six-ans-saisie/epa-six-ans-saisi
import { EpSaisieRoutingModule } from './ep-saisie.routing.module'; import { EpSaisieRoutingModule } from './ep-saisie.routing.module';
/**
* Module de la saisie de l'EP
*/
@NgModule({ @NgModule({
declarations: [EpSaisieComponent, EpsSaisieComponent, EpaSaisieComponent, declarations: [EpSaisieComponent, EpsSaisieComponent, EpaSaisieComponent,
EpaSixAnsSaisieComponent EpaSixAnsSaisieComponent

@ -11,6 +11,9 @@ import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_saisie_ep } from "@shared/utils/paths"; import { paths_saisie_ep } from "@shared/utils/paths";
/**
* Routes du module saisie ep
*/
const routes: Routes = [ const routes: Routes = [
{ path:'', { path:'',
component: EpSaisieComponent, component: EpSaisieComponent,
@ -23,12 +26,6 @@ const routes: Routes = [
} }
]; ];
/*
/saisie-ep
/saisie-ep/eps
/saisie-ep/epa
/saisie-ep/epasixans
*/
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour saisir le document EPA
*/ */
@Component({ @Component({
selector: 'app-epa-saisie', selector: 'app-epa-saisie',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour saisir le document EPA des six ans
*/ */
@Component({ @Component({
selector: 'app-epa-six-ans-saisie', selector: 'app-epa-six-ans-saisie',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant permettant la saisie du document EPS
*/ */
@Component({ @Component({
selector: 'app-eps-saisie', selector: 'app-eps-saisie',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant permettant de faire la demande d'augmentation de salaire
*/ */
@Component({ @Component({
selector: 'app-ep-augmentation-salaire', selector: 'app-ep-augmentation-salaire',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant qui permet au collaborateur de faire un choix parmi les date proposées
*/ */
@Component({ @Component({
selector: 'app-ep-choix-date', selector: 'app-ep-choix-date',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour permettre au référent d'ajouter son commentaire et à tous les participants de le consulter
*/ */
@Component({ @Component({
selector: 'app-ep-commentaire-assistant', selector: 'app-ep-commentaire-assistant',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour permettre au référent d'ajouter son commentaire et à tous les participants de le consulter
*/ */
@Component({ @Component({
selector: 'app-ep-commentaire-referent', selector: 'app-ep-commentaire-referent',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Ce composant sert peut-ête à rien...
*/ */
@Component({ @Component({
selector: 'app-ep-consultation', selector: 'app-ep-consultation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire une demande de délégation et voir la dernière en cours
*/ */
@Component({ @Component({
selector: 'app-ep-demande-delegation', selector: 'app-ep-demande-delegation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour ajouter et voir les demandes de formation
*/ */
@Component({ @Component({
selector: 'app-ep-demandes-formation', selector: 'app-ep-demandes-formation',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour afficher la liste des participants de l'EP
*/ */
@Component({ @Component({
selector: 'app-ep-participants', selector: 'app-ep-participants',

@ -1,6 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant permettant l'ajout d'un participant à un EP
* Ce composant pourrait être remplacé par un dialog de material angular
*/ */
@Component({ @Component({
selector: 'app-new-participant', selector: 'app-new-participant',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant permettant au référent de proposer ses dates d'EP à partir des préférences de lieu d'entretien du collaborateur
*/ */
@Component({ @Component({
selector: 'app-ep-propositions-dates', selector: 'app-ep-propositions-dates',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour vérifier que la signature des deux parties
*/ */
@Component({ @Component({
selector: 'app-ep-signature', selector: 'app-ep-signature',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant qui permet la consultation d'un EP
*/ */
@Component({ @Component({
selector: 'app-ep', selector: 'app-ep',

@ -25,7 +25,9 @@ import { EpCommentaireReferentComponent } from "./ep-commentaire-referent/ep-com
import { EpRoutingModule } from './ep.routing.module'; import { EpRoutingModule } from './ep.routing.module';
/**/ /**
* Module de l'ep
*/
@NgModule({ @NgModule({
declarations: [EpComponent, EpAugmentationSalaireComponent, EpChoixDateComponent, declarations: [EpComponent, EpAugmentationSalaireComponent, EpChoixDateComponent,
EpDemandeDelegationComponent, EpDemandesFormationComponent, EpParticipantsComponent, EpDemandeDelegationComponent, EpDemandesFormationComponent, EpParticipantsComponent,

@ -21,7 +21,9 @@ import { NewParticipantComponent } from "./ep-participants/new-participant/new-p
import { KeycloakGuard } from '@shared/guards/keycloakguard'; import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_ep } from "@shared/utils/paths"; import { paths_ep } from "@shared/utils/paths";
/**
* Routes du module ep
*/
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire afficher le document EPA des six ans
*/ */
@Component({ @Component({
selector: 'app-epa-six-ans', selector: 'app-epa-six-ans',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire afficher le document EPA
*/ */
@Component({ @Component({
selector: 'app-epa', selector: 'app-epa',

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
/** /**
* Composant pour faire afficher le document EPS
*/ */
@Component({ @Component({
selector: 'app-eps', selector: 'app-eps',

@ -4,7 +4,6 @@
<h2> {{formation.intitule}} </h2> <h2> {{formation.intitule}} </h2>
<ng-container> <ng-container>
<h3>Informations générales</h3> <h3>Informations générales</h3>
<!--<button mat-raised-button *ngIf="formation.statut!=statutEnum.Realise" [routerLink]="['edit']">Modifier</button>-->
<button mat-raised-button [routerLink]="['edit']">Modifier</button> <button mat-raised-button [routerLink]="['edit']">Modifier</button>
<p>Etat : {{formation.statut.libelle}}</p> <p>Etat : {{formation.statut.libelle}}</p>
<p>Date formation : {{formation.dateDebut | date:'dd/MM/yyyy à hh:mm'}}</p> <p>Date formation : {{formation.dateDebut | date:'dd/MM/yyyy à hh:mm'}}</p>
@ -18,17 +17,15 @@
<h3>Aucun participant</h3> <h3>Aucun participant</h3>
</ng-container> </ng-container>
<!-- Afficher la liste des participants -->
<ng-container *ngIf="formation.participantsFormation != undefined && formation.participantsFormation.length > 0"> <ng-container *ngIf="formation.participantsFormation != undefined && formation.participantsFormation.length > 0">
<h3>Liste des participants</h3> <h3>Liste des participants</h3>
<mat-table [dataSource]="dataSource"> <mat-table [dataSource]="dataSource">
<!--<ng-container matColumnDef="agence">
<mat-header-cell *matHeaderCellDef>Agence</mat-header-cell>
<mat-cell *matCellDef="let row">{{row.agence}}</mat-cell>
</ng-container>-->
<ng-container matColumnDef="collaborateur"> <ng-container matColumnDef="collaborateur">
<mat-header-cell *matHeaderCellDef>Collaborateur</mat-header-cell> <mat-header-cell *matHeaderCellDef>Collaborateur</mat-header-cell>
<!-- Lien vers les détails du collaborateur -->
<mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.idCollaborateur]">{{row.collaborateur}}</mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.idCollaborateur]">{{row.collaborateur}}</mat-cell>
</ng-container> </ng-container>

@ -11,30 +11,49 @@ import { FormationsService } from '@shared/api-swagger/api/api';
import { FormationDTO, ParticipationFormationDTO } from "@shared/api-swagger/model/models"; import { FormationDTO, ParticipationFormationDTO } from "@shared/api-swagger/model/models";
/** /**
* Composant qui permet l'affichage des détails d'une formation ainsi que de sa liste de participants.
*/ */
@Component({ @Component({
selector: 'app-formation', selector: 'app-formation',
templateUrl: './formation.component.html' templateUrl: './formation.component.html'
}) })
export class FormationComponent implements OnInit { export class FormationComponent implements OnInit {
//statutEnum = FormationModel.StatutEnum; /**
* Formation à rechercher
*/
formation:FormationDTO; formation:FormationDTO;
/**
* Observable pour récuperer la formation à rechercher
*/
formationSubscription: Subscription; formationSubscription: Subscription;
/**
* dataSource qui stocke la liste des participations à afficher dans le Mat Table
*/
dataSource : MatTableDataSource<ParticipationFormationDTO>; dataSource : MatTableDataSource<ParticipationFormationDTO>;
/**
* Les conlonnes à afficher dans le Mat Table
*/
displayedColumns: string[]= ["agence", "collaborateur", "dateinscription", "ep"]; displayedColumns: string[]= ["agence", "collaborateur", "dateinscription", "ep"];
/**
* id de la formation à récupérer dans l'URL.
*/
id:any id:any
constructor(private service:FormationsService,private route:ActivatedRoute) {} constructor(private service:FormationsService,private route:ActivatedRoute) {}
ngOnInit() { ngOnInit() {
// récupérer l'id de la formation dans l'URL
this.id = this.route.snapshot.paramMap.get('id'); this.id = this.route.snapshot.paramMap.get('id');
this.formationSubscription = this.service.getFormationById(this.id).subscribe( this.formationSubscription = this.service.getFormationById(this.id).subscribe(
formation => this.initFormation(formation) formation => this.initFormation(formation)
); );
} }
/**
* Initialisé la formation et ses participations si il y en a
*/
initFormation(formation:FormationDTO) { initFormation(formation:FormationDTO) {
this.formation = formation; this.formation = formation;
if(formation.participantsFormation != undefined && formation.participantsFormation.length != 0 ) { if(formation.participantsFormation != undefined && formation.participantsFormation.length != 0 ) {
@ -42,6 +61,9 @@ export class FormationComponent implements OnInit {
} }
} }
/**
* Une fois la page fermée, il est nécessaire de se désabonner des Oberservable afin d'éviter les fuites mémoires.
*/
ngOnDestroy() { ngOnDestroy() {
if(this.formationSubscription != undefined) { if(this.formationSubscription != undefined) {
this.formationSubscription.unsubscribe(); this.formationSubscription.unsubscribe();

@ -4,14 +4,17 @@
<button mat-raised-button on-click="supprimerFormation()" color="red">Supprimer la formation</button> <button mat-raised-button on-click="supprimerFormation()" color="red">Supprimer la formation</button>
</div> </div>
<!-- Le formulaire -->
<form *ngIf="formationForm != undefined" [formGroup]="formationForm" (ngSubmit)="updateFormation()"> <form *ngIf="formationForm != undefined" [formGroup]="formationForm" (ngSubmit)="updateFormation()">
<div> <div>
<!-- Attribut : intitule -->
<mat-form-field class="input"> <mat-form-field class="input">
<input matInput placeholder="Intitulé" formControlName="intitule"> <input matInput placeholder="Intitulé" formControlName="intitule">
</mat-form-field> </mat-form-field>
</div> </div>
<div> <div>
<!-- Attribut : statut -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Statut formation</mat-label> <mat-label>Statut formation</mat-label>
<mat-select formControlName="statut"> <mat-select formControlName="statut">
@ -19,6 +22,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<!-- Attribut : origine -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Origine formation</mat-label> <mat-label>Origine formation</mat-label>
<mat-select formControlName="origine"> <mat-select formControlName="origine">
@ -28,18 +32,21 @@
</div> </div>
<div> <div>
<!-- Attribut : organisme -->
<mat-form-field class="input"> <mat-form-field class="input">
<input matInput placeholder="Organisme" formControlName="organisme"> <input matInput placeholder="Organisme" formControlName="organisme">
</mat-form-field> </mat-form-field>
</div> </div>
<div> <div>
<!-- Attribut : datedebut -->
<mat-form-field > <mat-form-field >
<input matInput [ngxMatDatetimePicker]="datedebut" placeholder="Date prévue" formControlName="dateDebut"> <input matInput [ngxMatDatetimePicker]="datedebut" placeholder="Date prévue" formControlName="dateDebut">
<mat-datepicker-toggle matSuffix [for]="datedebut"> </mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="datedebut"> </mat-datepicker-toggle>
<ngx-mat-datetime-picker #datedebut></ngx-mat-datetime-picker> <ngx-mat-datetime-picker #datedebut></ngx-mat-datetime-picker>
</mat-form-field> </mat-form-field>
<!-- Attribut : dateFin -->
<mat-form-field class="moveright"> <mat-form-field class="moveright">
<input matInput [matDatepicker]="datefin" placeholder="Date fin" formControlName="dateFin"> <input matInput [matDatepicker]="datefin" placeholder="Date fin" formControlName="dateFin">
<mat-datepicker-toggle matSuffix [for]="datefin"> </mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="datefin"> </mat-datepicker-toggle>
@ -48,11 +55,13 @@
</div> </div>
<div> <div>
<!-- Attribut : jour -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Nombre de jours</mat-label> <mat-label>Nombre de jours</mat-label>
<input matInput type="number" formControlName="jour" min=1 value="1"> <input matInput type="number" formControlName="jour" min=1 value="1">
</mat-form-field> </mat-form-field>
<!-- Attribut : heure -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Nombre d'heures</mat-label> <mat-label>Nombre d'heures</mat-label>
<input matInput type="number" formControlName="heure" min="1" value="1"> <input matInput type="number" formControlName="heure" min="1" value="1">
@ -60,6 +69,7 @@
</div> </div>
<div> <div>
<!-- Attribut : type -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Type formation</mat-label> <mat-label>Type formation</mat-label>
<mat-select formControlName="type"> <mat-select formControlName="type">
@ -67,6 +77,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<!-- Attribut : mode -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Mode formation</mat-label> <mat-label>Mode formation</mat-label>
<mat-select formControlName="mode"> <mat-select formControlName="mode">
@ -76,6 +87,7 @@
</div> </div>
<div> <div>
<!-- Attribut : estCertifie -->
<mat-checkbox matInput formControlName="estCertifie">Certifiée</mat-checkbox> <mat-checkbox matInput formControlName="estCertifie">Certifiée</mat-checkbox>
</div> </div>
<div> <div>

@ -21,25 +21,58 @@ import { FormationsService } from '@shared/api-swagger/api/api';
styleUrls: ["edit-formation.component.css"] styleUrls: ["edit-formation.component.css"]
}) })
export class EditFormationComponent implements OnInit { export class EditFormationComponent implements OnInit {
/**
* Observable pour récupérer la formation et enregistrer les modifications
*/
formationSubscription: Subscription; formationSubscription: Subscription;
/**
* Observable pour récupérer la liste des origines formation
*/
origineSubscription: Subscription; origineSubscription: Subscription;
/**
* Observable pour récupérer la liste des types formation
*/
typeSubscription: Subscription; typeSubscription: Subscription;
/**
* Observable pour récupérer la liste des modes formation
*/
modeSubscription: Subscription; modeSubscription: Subscription;
/**
* Observable pour récupérer la liste des statuts formation
*/
statutSubscription: Subscription; statutSubscription: Subscription;
/**
* Liste des modes formations à faire afficher dans une liste déroulante.
*/
modes: ModeFormationDTO[]; modes: ModeFormationDTO[];
/**
* Liste des types formations à faire afficher dans une liste déroulante.
*/
types: TypeFormationDTO[]; types: TypeFormationDTO[];
/**
* Liste des origines formations à faire afficher dans une liste déroulante.
*/
origines: OrigineFormationDTO[]; origines: OrigineFormationDTO[];
/**
* Liste des statuts formations à faire afficher dans une liste déroulante.
*/
statuts: StatutFormationDTO[]; statuts: StatutFormationDTO[];
//formation: FormationDTO; /**
* FormBuilder qui sera lié au formulaire du template avec les attributs d'une formation
* C'est dans cet objet qu'est stockée la formation à modifier
*/
formationForm: FormGroup; formationForm: FormGroup;
/**
* Id de la formation à récupérer dans l'URL
*/
id :any; id :any;
constructor(private service: FormationsService, private fb: FormBuilder, constructor(private service: FormationsService, private fb: FormBuilder,
private activatedRoute:ActivatedRoute, private router: Router) { private activatedRoute:ActivatedRoute, private router: Router) {
this.formationForm= this.fb.group( /*this.formationForm= this.fb.group(
{ {
id: [""], id: [""],
intitule: [""], intitule: [""],
@ -54,11 +87,11 @@ export class EditFormationComponent implements OnInit {
type: [""], type: [""],
estCertifie: [""] estCertifie: [""]
} }
); );*/
} }
ngOnInit() { ngOnInit() {
// récupérer les tableaux pour les afficher dans les liste déroulantes
this.modeSubscription = this.service.getModesFormation().subscribe( this.modeSubscription = this.service.getModesFormation().subscribe(
modes => this.modes = modes, modes => this.modes = modes,
err => console.log(err) err => console.log(err)
@ -78,15 +111,17 @@ export class EditFormationComponent implements OnInit {
types => this.types = types, types => this.types = types,
err => console.log(err) err => console.log(err)
); );
// récupérer l'id de la formation en paramètre de l'URL
this.id = this.activatedRoute.snapshot.paramMap.get('id'); this.id = this.activatedRoute.snapshot.paramMap.get('id');
this.formationSubscription = this.service.getFormationById(this.id).subscribe( this.formationSubscription = this.service.getFormationById(this.id).subscribe(
formation => this.initFormation(formation) formation => this.initFormation(formation)
); );
} }
/**
* Initialisé les champs du formulation à partir de la formation déjà existante
*/
initFormation(formation:FormationDTO) { initFormation(formation:FormationDTO) {
//this.formation = formation;
this.formationForm= this.fb.group( this.formationForm= this.fb.group(
{ {
id: [formation.id], id: [formation.id],
@ -103,9 +138,9 @@ export class EditFormationComponent implements OnInit {
estCertifie: [formation.estCertifie] estCertifie: [formation.estCertifie]
} }
); );
} }
updateFormation() { updateFormation() {
//this.formation = this.formationForm.value; //this.formation = this.formationForm.value;
this.formationSubscription = this.service.updateFormation(this.formationForm.value, this.formationForm.value.id).subscribe( this.formationSubscription = this.service.updateFormation(this.formationForm.value, this.formationForm.value.id).subscribe(
@ -125,41 +160,17 @@ export class EditFormationComponent implements OnInit {
if(this.formationSubscription != undefined) { if(this.formationSubscription != undefined) {
this.formationSubscription.unsubscribe(); this.formationSubscription.unsubscribe();
} }
if(this.modeSubscription != undefined) {
this.formationSubscription.unsubscribe();
} }
if(this.typeSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
if(this.statutSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
if(this.origineSubscription != undefined) {
this.formationSubscription.unsubscribe();
} }
/*
this.formationForm= this.fb.group(
{
id: [formation.id],
intitule: [formation.intitule],
origine: [formation.origine],
statut : [formation.statut],
dateDebut: [new Date(formation.dateDebut)],
dateFin: [new Date(formation.dateFin)],
heure: [formation.heure],
jour: [formation.jour],
organisme: [formation.organisme],
mode: [formation.mode],
type: [formation.type],
estCertifie: [formation.estCertifie]
} }
);
*/
/*
this.formationForm.setValue(
{
id: formation.id,
intitule: formation.intitule,
origine: formation.origine,
statut : formation.statut,
dateDebut: new Date(formation.dateDebut),
dateFin: new Date(formation.dateFin),
heure: formation.heure,
jour: formation.jour,
organisme: formation.organisme,
mode: formation.mode,
type: formation.type,
estCertifie: formation.estCertifie
} }
);
*/

@ -1,6 +1,7 @@
<app-nav-menu></app-nav-menu> <app-nav-menu></app-nav-menu>
<h1>Liste des formations </h1> <h1>Liste des formations </h1>
<!-- Affichage de la liste des formations-->
<mat-table [dataSource]="this.dataSource"> <mat-table [dataSource]="this.dataSource">
<ng-container matColumnDef="intitule"> <ng-container matColumnDef="intitule">
<mat-header-cell *matHeaderCellDef>Intitulé</mat-header-cell> <mat-header-cell *matHeaderCellDef>Intitulé</mat-header-cell>
@ -28,5 +29,6 @@
</ng-container> </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<!-- Lien vers les détails d'une formation-->
<mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/formations',row.id]"></mat-row> <mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/formations',row.id]"></mat-row>
</mat-table> </mat-table>

@ -18,13 +18,28 @@ import { FormationsService } from "@shared/api-swagger/api/api";
export class FormationsComponent implements OnInit { export class FormationsComponent implements OnInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
/**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5; parPage = 5;
/**
* Observable permettant de faire des requêtes sur le service formation.
*/
private formationsDisponiblesSubscription : Subscription; private formationsDisponiblesSubscription : Subscription;
//displayedColumns: string[] = ["intitule", "participants", "date", "origine", "statut"] //displayedColumns: string[] = ["intitule", "participants", "date", "origine", "statut"]
/**
* Les colonnes à afficher dans le Mat Table
*/
displayedColumns: string[] = ["intitule", "origine", "participants", "date", "statut"] displayedColumns: string[] = ["intitule", "origine", "participants", "date", "statut"]
/** /**

@ -13,6 +13,9 @@ import { NewFormationComponent } from './new-formation/new-formation.component';
import { FormationComponent } from './details-formation/formation.component'; import { FormationComponent } from './details-formation/formation.component';
import { EditFormationComponent } from './edit-formation/edit-formation.component'; import { EditFormationComponent } from './edit-formation/edit-formation.component';
/**
* Module des formations
*/
import { FormationsRoutingModule } from './formations.routing.module'; import { FormationsRoutingModule } from './formations.routing.module';
@NgModule({ @NgModule({

@ -10,7 +10,9 @@ import { EditFormationComponent } from "./edit-formation/edit-formation.componen
import { KeycloakGuard } from '@shared/guards/keycloakguard'; import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_formation } from "@shared/utils/paths"; import { paths_formation } from "@shared/utils/paths";
/**
* Routes du module formation
*/
const routes: Routes = [ const routes: Routes = [
{ path:'', component: FormationsComponent, pathMatch: 'full', canActivate: [KeycloakGuard] }, { path:'', component: FormationsComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
{ path:paths_formation.edit, component: EditFormationComponent, canActivate: [KeycloakGuard] }, { path:paths_formation.edit, component: EditFormationComponent, canActivate: [KeycloakGuard] },

@ -1,14 +1,18 @@
<app-nav-menu></app-nav-menu> <app-nav-menu></app-nav-menu>
<h1> Nouvelle formation </h1> <h1> Nouvelle formation </h1>
<!-- Le formulaire -->
<form [formGroup]="formationForm" (ngSubmit)="ajouterFormation()"> <form [formGroup]="formationForm" (ngSubmit)="ajouterFormation()">
<div> <div>
<!-- Attribut : intitule -->
<mat-form-field class="input"> <mat-form-field class="input">
<input matInput placeholder="Intitulé" formControlName="intitule"> <input matInput placeholder="Intitulé" formControlName="intitule">
</mat-form-field> </mat-form-field>
</div> </div>
<div> <div>
<!-- Attribut : statut -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Statut formationn</mat-label> <mat-label>Statut formationn</mat-label>
<mat-select formControlName="statut"> <mat-select formControlName="statut">
@ -16,6 +20,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<!-- Attribut : origine -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Origine formation</mat-label> <mat-label>Origine formation</mat-label>
<mat-select formControlName="origine"> <mat-select formControlName="origine">
@ -25,18 +30,21 @@
</div> </div>
<div> <div>
<!-- Attribut : organisme -->
<mat-form-field class="input"> <mat-form-field class="input">
<input matInput placeholder="Organisme" formControlName="organisme"> <input matInput placeholder="Organisme" formControlName="organisme">
</mat-form-field> </mat-form-field>
</div> </div>
<div> <div>
<!-- Attribut : datedebut -->
<mat-form-field > <mat-form-field >
<input matInput [ngxMatDatetimePicker]="datedebut" placeholder="Date prévue" formControlName="dateDebut"> <input matInput [ngxMatDatetimePicker]="datedebut" placeholder="Date prévue" formControlName="dateDebut">
<mat-datepicker-toggle matSuffix [for]="datedebut"> </mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="datedebut"> </mat-datepicker-toggle>
<ngx-mat-datetime-picker #datedebut></ngx-mat-datetime-picker> <ngx-mat-datetime-picker #datedebut></ngx-mat-datetime-picker>
</mat-form-field> </mat-form-field>
<!-- Attribut : dateFin -->
<mat-form-field class="moveright"> <mat-form-field class="moveright">
<input matInput [matDatepicker]="datefin" placeholder="Date fin" formControlName="dateFin"> <input matInput [matDatepicker]="datefin" placeholder="Date fin" formControlName="dateFin">
<mat-datepicker-toggle matSuffix [for]="datefin"> </mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="datefin"> </mat-datepicker-toggle>
@ -45,11 +53,13 @@
</div> </div>
<div> <div>
<!-- Attribut : jour -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Nombre de jours</mat-label> <mat-label>Nombre de jours</mat-label>
<input matInput type="number" formControlName="jour" min=1 value="1"> <input matInput type="number" formControlName="jour" min=1 value="1">
</mat-form-field> </mat-form-field>
<!-- Attribut : heure -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Nombre d'heures</mat-label> <mat-label>Nombre d'heures</mat-label>
<input matInput type="number" formControlName="heure" min="1" value="1"> <input matInput type="number" formControlName="heure" min="1" value="1">
@ -57,6 +67,7 @@
</div> </div>
<div> <div>
<!-- Attribut : type -->
<mat-form-field class="input2"> <mat-form-field class="input2">
<mat-label>Type formation</mat-label> <mat-label>Type formation</mat-label>
<mat-select formControlName="type"> <mat-select formControlName="type">
@ -64,6 +75,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<!-- Attribut : mode -->
<mat-form-field class="moveright input2"> <mat-form-field class="moveright input2">
<mat-label>Mode formation</mat-label> <mat-label>Mode formation</mat-label>
<mat-select formControlName="mode"> <mat-select formControlName="mode">
@ -73,6 +85,7 @@
</div> </div>
<div> <div>
<!-- Attribut : estCertifie -->
<mat-checkbox matInput formControlName="estCertifie">Certifiée</mat-checkbox> <mat-checkbox matInput formControlName="estCertifie">Certifiée</mat-checkbox>
</div> </div>
<div> <div>

@ -8,6 +8,7 @@ import { FormationDTO, ModeFormationDTO, TypeFormationDTO, StatutFormationDTO, O
import { FormationsService } from "@shared/api-swagger/api/api"; import { FormationsService } from "@shared/api-swagger/api/api";
/** /**
* Composant pour l'ajout d'une nouvelle formation
*/ */
@Component({ @Component({
selector: 'app-new-formation', selector: 'app-new-formation',
@ -15,17 +16,48 @@ import { FormationsService } from "@shared/api-swagger/api/api";
styleUrls: ['./new-formation.component.css'] styleUrls: ['./new-formation.component.css']
}) })
export class NewFormationComponent implements OnInit { export class NewFormationComponent implements OnInit {
/**
* Observable pour enregistrer la nouvelle formation
*/
formationSubscription: Subscription; formationSubscription: Subscription;
/**
* Observable pour récupérer la liste des origines formation
*/
origineSubscription: Subscription; origineSubscription: Subscription;
/**
* Observable pour récupérer la liste des types formation
*/
typeSubscription: Subscription; typeSubscription: Subscription;
/**
* Observable pour récupérer la liste des modes formation
*/
modeSubscription: Subscription; modeSubscription: Subscription;
/**
* Observable pour récupérer la liste des statuts formation
*/
statutSubscription: Subscription; statutSubscription: Subscription;
/**
* Liste des modes formations à faire afficher dans une liste déroulante.
*/
modes: ModeFormationDTO[]; modes: ModeFormationDTO[];
/**
* Liste des types formations à faire afficher dans une liste déroulante.
*/
types: TypeFormationDTO[]; types: TypeFormationDTO[];
/**
* Liste des origines formations à faire afficher dans une liste déroulante.
*/
origines: OrigineFormationDTO[]; origines: OrigineFormationDTO[];
/**
* Liste des statuts formations à faire afficher dans une liste déroulante.
*/
statuts: StatutFormationDTO[]; statuts: StatutFormationDTO[];
//nouvelleformation: FormationDTO;
/**
* FormBuilder qui sera lié au formulaire du template avec les attributs d'une formation
* C'est dans cet objet qu'est stockée la nouvelle formation
*/
formationForm = this.fb.group( formationForm = this.fb.group(
{ {
intitule: [""], intitule: [""],
@ -45,6 +77,7 @@ export class NewFormationComponent implements OnInit {
constructor(private fb: FormBuilder, private service:FormationsService, private router: Router) { } constructor(private fb: FormBuilder, private service:FormationsService, private router: Router) { }
ngOnInit() { ngOnInit() {
// On rempli les tableaux pour les faire afficher dans une lsite déroulante
this.modeSubscription = this.service.getModesFormation().subscribe( this.modeSubscription = this.service.getModesFormation().subscribe(
modes => this.modes = modes, modes => this.modes = modes,
err => console.log(err) err => console.log(err)
@ -68,7 +101,6 @@ export class NewFormationComponent implements OnInit {
} }
ajouterFormation() { ajouterFormation() {
//this.nouvelleformation = this.formationForm.value;
this.formationSubscription = this.service.ajouterFormation(this.formationForm.value).subscribe( this.formationSubscription = this.service.ajouterFormation(this.formationForm.value).subscribe(
response => { response => {
this.router.navigate(['/formations',response["id"]]); this.router.navigate(['/formations',response["id"]]);
@ -80,5 +112,17 @@ export class NewFormationComponent implements OnInit {
if(this.formationSubscription != undefined) { if(this.formationSubscription != undefined) {
this.formationSubscription.unsubscribe(); this.formationSubscription.unsubscribe();
} }
if(this.modeSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
if(this.typeSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
if(this.statutSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
if(this.origineSubscription != undefined) {
this.formationSubscription.unsubscribe();
}
} }
} }

@ -2,7 +2,7 @@
<h1>AU DESSUS</h1> <h1>AU DESSUS</h1>
<!-- Barre de recher -->
<mat-form-field> <mat-form-field>
<mat-label>Recherche un collaborateur</mat-label> <mat-label>Recherche un collaborateur</mat-label>
<input matInput type="text" [(ngModel)]="search" (keyup)="updateDataSource()"> <input matInput type="text" [(ngModel)]="search" (keyup)="updateDataSource()">
@ -11,7 +11,7 @@
</mat-button> </mat-button>
</mat-form-field> </mat-form-field>
<!-- Affichage de la liste des EP disponibles-->
<mat-table [dataSource]="this.dataSource" matSort> <mat-table [dataSource]="this.dataSource" matSort>
<ng-container matColumnDef="agence"> <ng-container matColumnDef="agence">
@ -21,6 +21,7 @@
<ng-container matColumnDef="collaborateur"> <ng-container matColumnDef="collaborateur">
<mat-header-cell *matHeaderCellDef mat-sort-header> Collaborateur </mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header> Collaborateur </mat-header-cell>
<!-- Lien vers les détails du collaborateur -->
<mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.collaborateur.id]">{{row.collaborateur.prenom}} {{row.collaborateur.nom}}</mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/collaborateurs', row.collaborateur.id]">{{row.collaborateur.prenom}} {{row.collaborateur.nom}}</mat-cell>
</ng-container> </ng-container>
@ -32,6 +33,7 @@
<ng-container matColumnDef="referent"> <ng-container matColumnDef="referent">
<mat-header-cell *matHeaderCellDef mat-sort-header> Referent </mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header> Referent </mat-header-cell>
<!-- Lien vers les détails du référent -->
<mat-cell *matCellDef="let row" [routerLink]="['/referents', row.referent.id]"> {{row.referent.nom}} {{row.referent.prenom}} </mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/referents', row.referent.id]"> {{row.referent.nom}} {{row.referent.prenom}} </mat-cell>
</ng-container> </ng-container>

@ -26,11 +26,31 @@ import { EpService } from "@shared/api-swagger/api/api";
export class HomeAssistanteComponent implements OnInit, AfterViewInit { export class HomeAssistanteComponent implements OnInit, AfterViewInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
parPage = 15; /**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5;
/**
* Variable qui concerne le choix d'une des BU de l'agence à laquelle appartient l'assistante.
*/
choixBU = undefined; choixBU = undefined;
/**
* Liste des checkboxes à afficher
* Nous ajouterons les
*/
checkboxes : string[] = ["Tous"]; checkboxes : string[] = ["Tous"];
/**
*
* En fonction de son utilisation, pourrait remplacer "choixBU".
*/
idsBU : number[] = []; idsBU : number[] = [];
/** /**
* Subscription pour récupérer les EP. * Subscription pour récupérer les EP.
@ -40,8 +60,8 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit {
/** /**
* liste des titres des colonnes du tableau. * liste des titres des colonnes du tableau.
*/ */
//displayedColumns: string[] = ["agence", "info", "datemail", "dateentretien", "etat", "type"];
displayedColumns: string[] = ["agence", "collaborateur", "anciennete", "referent", "type", "etat", "datemail", "dateentretien" ]; displayedColumns: string[] = ["agence", "collaborateur", "anciennete", "referent", "type", "etat", "datemail", "dateentretien" ];
//displayedColumns: string[] = ["agence", "info", "datemail", "dateentretien", "etat", "type"];
/** /**
* source pour l'affichage des EP dans le tableau qui est affichée. * source pour l'affichage des EP dans le tableau qui est affichée.
@ -75,8 +95,6 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit {
* Récupérer la liste des EP Disponibles dès l'initialisation. * Récupérer la liste des EP Disponibles dès l'initialisation.
*/ */
ngOnInit() { ngOnInit() {
//this.epDisponiblesSubscription = this.serviceEP.listeEPDisponibles().
//this.epDisponiblesSubscription = this.service.collaborateursBuIdBuGet("ORL").
this.updateDataSource(); this.updateDataSource();
} }
@ -91,16 +109,29 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit {
}); });
} }
/**
* Récupérer le nombre de temps qu'avait passé le collaborateur au sein d'Apside
* Cette méthode était utilisé avec l'ancienne version des modèle et des Classe d'Affichage
* ELle pourra être modifié pour utiliser le module "moment.js" (à chercher)
*/
getAnciennete(anciennete) { getAnciennete(anciennete) {
let annee = Math.floor(anciennete / 31536000000); let annee = Math.floor(anciennete / 31536000000);
let mois = Math.floor(anciennete/ 2629800000 % 12); let mois = Math.floor(anciennete/ 2629800000 % 12);
return annee + " an(s) et "+ mois+" mois"; return annee + " an(s) et "+ mois+" mois";
} }
/**
* Permettait de mettre à jour l'ancienneté d'un collaborateur dans une classe qui n'existe plus
* Elle pourra être modifié pour utiliser le module "moment.js".
*/
setAnciennete(firstDate, secondDate) { setAnciennete(firstDate, secondDate) {
return Math.abs(firstDate-secondDate); return Math.abs(firstDate-secondDate);
} }
/**
* Retourne l'état d'un EP
* A mettre à jour
*/
getEtat(etat) { getEtat(etat) {
let res = ""; let res = "";
switch(etat) { switch(etat) {

@ -1,5 +1,6 @@
<h1> Page RH </h1> <h1> Page RH </h1>
<!-- Affichage de la liste des prochaines formation-->
<mat-table [dataSource]="this.dataSource"> <mat-table [dataSource]="this.dataSource">
<ng-container matColumnDef="intitule"> <ng-container matColumnDef="intitule">
<mat-header-cell *matHeaderCellDef>Intitulé</mat-header-cell> <mat-header-cell *matHeaderCellDef>Intitulé</mat-header-cell>
@ -32,5 +33,6 @@
</ng-container> </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<!-- Lien vers les détails d'une formation-->
<mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/formations',row.id]"></mat-row> <mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/formations',row.id]"></mat-row>
</mat-table> </mat-table>

@ -22,20 +22,36 @@ import { FormationsService } from "@shared/api-swagger/api/api";
}) })
export class HomeRHComponent implements OnInit { export class HomeRHComponent implements OnInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
parPage = 15; /**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5;
/**
* Permet d'indiquer au serveur sur quel attribut de l'objet ReferentDTO on souhaite faire le tri
*/
tri = ""; tri = "";
/**
* Observable pour faire des requêtes sur le service formation.
*/
private formationsDisponiblesSubscription : Subscription; private formationsDisponiblesSubscription : Subscription;
/**
//displayedColumns: string[] = ["intitule", "participants", "date", "origine", "statut"] * Colonnes du tableau à afficher
*/
displayedColumns: string[] = ["intitule", "origine", "participants", "date", "statut","certification"]; displayedColumns: string[] = ["intitule", "origine", "participants", "date", "statut","certification"];
//displayedColumns: string[] = ["intitule", "participants", "date", "origine", "statut"]
//displayedColumns: string[] = ["intitule", "participants", "date", "statut","certification"]; //displayedColumns: string[] = ["intitule", "participants", "date", "statut","certification"];
/** /**
* source pour l'affichage des formations dans le tableau qui est affichée. * source pour l'affichage des formations dans le tableau Mat Table.
*/ */
dataSource : MatTableDataSource<FormationDetailsDTO>; dataSource : MatTableDataSource<FormationDetailsDTO>;
@ -65,6 +81,10 @@ export class HomeRHComponent implements OnInit {
this.updateFormations(); this.updateFormations();
} }
/**
* Mettre à jour les informations à afficher dans la tableau.
* Devra se faire à l'ouverture de la page, au changement de page ou du nombre d'éléments à afficher, au moment d'un tri ou encore lors de l'utilisation de la barre de recherche.
*/
updateFormations() { updateFormations() {
this.formationsDisponiblesSubscription = this.service.getProchainesFormation(this.asc, this.numPage, this.parPage, 1, this.search, this.tri).subscribe( this.formationsDisponiblesSubscription = this.service.getProchainesFormation(this.asc, this.numPage, this.parPage, 1, this.search, this.tri).subscribe(
formations => this.dataSource = new MatTableDataSource(formations), formations => this.dataSource = new MatTableDataSource(formations),
@ -78,6 +98,9 @@ export class HomeRHComponent implements OnInit {
return "Non"; return "Non";
} }
/**
* Une fois la page fermée, il est nécessaire de se désabonner des Oberservable afin d'éviter les fuites mémoires.
*/
ngOnDestroy() { ngOnDestroy() {
if(this.formationsDisponiblesSubscription != undefined) { if(this.formationsDisponiblesSubscription != undefined) {
this.formationsDisponiblesSubscription.unsubscribe(); this.formationsDisponiblesSubscription.unsubscribe();

@ -24,6 +24,7 @@ export class HomeComponent implements OnInit {
userRole : string; userRole : string;
constructor(private keycloakService : KeycloakService) { constructor(private keycloakService : KeycloakService) {
let clientId = environment.keycloakConfig.clientId; let clientId = environment.keycloakConfig.clientId;
//récupérer les informations Keycloak de l'utilisateur
this.userRole = this.keycloakService.getKeycloakInstance().resourceAccess[clientId]["roles"][0]; this.userRole = this.keycloakService.getKeycloakInstance().resourceAccess[clientId]["roles"][0];
} }

@ -13,6 +13,10 @@ import {HomeCommercialComponent} from './home-commercial/home-commercial.compone
import {HomeComponent} from './home.component'; import {HomeComponent} from './home.component';
import {NavMenuModule} from '@shared/nav-menu/nav-menu.module'; import {NavMenuModule} from '@shared/nav-menu/nav-menu.module';
/**
* Module des différents homes
*/
@NgModule({ @NgModule({
declarations: [ declarations: [
HomeComponent, HomeAssistanteComponent, HomeRHComponent, HomeComponent, HomeAssistanteComponent, HomeRHComponent,

@ -1,6 +1,7 @@
<app-nav-menu></app-nav-menu> <app-nav-menu></app-nav-menu>
<h1>Liste des référents</h1> <h1>Liste des référents</h1>
<!-- AFfichage de la liste des référents -->
<mat-table matSort [dataSource]="dataSource"> <mat-table matSort [dataSource]="dataSource">
<ng-container matColumnDef="agence"> <ng-container matColumnDef="agence">
<mat-header-cell *matHeaderCellDef mat-sort-header>Agence</mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header>Agence</mat-header-cell>
@ -9,6 +10,7 @@
<ng-container matColumnDef="referent"> <ng-container matColumnDef="referent">
<mat-header-cell *matHeaderCellDef mat-sort-header>Référent</mat-header-cell> <mat-header-cell *matHeaderCellDef mat-sort-header>Référent</mat-header-cell>
<!-- Lien vers les détails du référent-->
<mat-cell *matCellDef="let row" [routerLink]="['/referents', row.id]">{{row.prenom}} {{row.nom}}</mat-cell> <mat-cell *matCellDef="let row" [routerLink]="['/referents', row.id]">{{row.prenom}} {{row.nom}}</mat-cell>
</ng-container> </ng-container>

@ -19,21 +19,47 @@ import { ReferentDTO } from "@shared/api-swagger/model/models";
}) })
export class ReferentsComponent implements OnInit { export class ReferentsComponent implements OnInit {
/**
* Ordre de tri à envoyer au serveur (true : croissant, false : décroissantà).
*/
asc = true; asc = true;
/**
* Numéro de la page à afficher dans le tableau.
*/
numPage = 1; numPage = 1;
/**
* Nombre d'élément du tableau à affiche en une page.
*/
parPage = 5; parPage = 5;
/**
* Rôle des collaborateurs à récupérer via le service collaborateur, ici nous ne voulons que les collaborateurs (pour le moment...).
*/
/**
* Observable pour faire des requêtes sur le service référent.
*/
private referentsDisponiblesSubscription : Subscription; private referentsDisponiblesSubscription : Subscription;
/**
* Liste des colonnes du tableau à afficher.
*/
displayedColumns : string[] = ["agence", "referent"]; displayedColumns : string[] = ["agence", "referent"];
/**
* Objet pour stocker la liste des référents qui seront récupérés par le service référént
*/
dataSource : MatTableDataSource<ReferentDTO>; dataSource : MatTableDataSource<ReferentDTO>;
/**
* Liste des rôles pour préciser que l'on souhaite récupérer les commerciaux
*/
roles : string[] = ["Commercial"]; roles : string[] = ["Commercial"];
/** /**
* contenu de la recherche. * contenu de la recherche.
*/ */
search = ""; search = "";
/**
* Permet d'indiquer au serveur sur quel attribut de l'objet ReferentDTO on souhaite faire le tri
*/
tri = ""; tri = "";
/** /**
* Pagination du tableau. * Pagination du tableau.
@ -46,15 +72,20 @@ export class ReferentsComponent implements OnInit {
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort) sort: MatSort;
/** /**
* Spécifie si la liste des EP est en cours de chargement et d'écriture dans le tableau. * Spécifie si la liste des référents est en cours de chargement et d'écriture dans le tableau.
*/ */
chargement = true; chargement = true;
constructor(private service: ReferentsService) {} constructor(private service: ReferentsService) {}
ngOnInit() { ngOnInit() {
this.updateDataSource(); this.updateDataSource();
} }
/**
* Mettre à jour les informations à afficher dans la tableau.
* Devra se faire à l'ouverture de la page, au changement de page ou du nombre d'éléments à afficher, au moment d'un tri ou encore lors de l'utilisation de la barre de recherche.
*/
updateDataSource() { updateDataSource() {
this.referentsDisponiblesSubscription = this.service.getReferents(this.asc, this.numPage, this.parPage, this.roles, 1, undefined, this.search, this.tri).subscribe( this.referentsDisponiblesSubscription = this.service.getReferents(this.asc, this.numPage, this.parPage, this.roles, 1, undefined, this.search, this.tri).subscribe(
referents => this.dataSource = new MatTableDataSource(referents), referents => this.dataSource = new MatTableDataSource(referents),
@ -64,6 +95,9 @@ export class ReferentsComponent implements OnInit {
//this.dataSource.sort = this.sort; //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() { ngOnDestroy() {
if(this.referentsDisponiblesSubscription != undefined) { if(this.referentsDisponiblesSubscription != undefined) {
this.referentsDisponiblesSubscription.unsubscribe(); this.referentsDisponiblesSubscription.unsubscribe();

@ -9,6 +9,9 @@ import { paths_referents } from "@shared/utils/paths";
import { KeycloakGuard } from '@shared/guards/keycloakguard'; import { KeycloakGuard } from '@shared/guards/keycloakguard';
/**
* Routes du module référents
*/
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',
@ -23,12 +26,6 @@ const routes: Routes = [
} }
]; ];
/*
/referents
/referents/:id (id référent)
*/
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule] exports: [RouterModule]

@ -22,7 +22,7 @@ import { NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateMod
/** /**
* Module qui va faire l'import et l'export de tous les componsants material design qui seront utilisés dans l'application. * Module qui va faire l'import et l'export de tous les componsants material design qui seront utilisés dans les différents modules.
*/ */
@NgModule({ @NgModule({
imports : [MatCardModule, imports : [MatCardModule,

@ -14,6 +14,10 @@ import { NotesService } from './api/notes.service';
import { ParticipationsFormationsService } from './api/participationsFormations.service'; import { ParticipationsFormationsService } from './api/participationsFormations.service';
import { ReferentsService } from './api/referents.service'; import { ReferentsService } from './api/referents.service';
/**
* Module généré par SwaggerHub à partir de la spécification OpenAPI.
* Lien spécification : https://app.swaggerhub.com/apis/ygrette/api-du_serveur_de_lapplication_de_digitalisation_des_ep/1.3.5
*/
@NgModule({ @NgModule({
imports: [], imports: [],
declarations: [], declarations: [],

@ -2,7 +2,6 @@ import { Component } from "@angular/core";
import { CommonModule } from "@angular/common"; import { CommonModule } from "@angular/common";
/** /**
* Le nav-menu qui sera affiché pour l'assistante. * Le nav-menu qui sera affiché pour l'assistante.
* La navigation des assistantes : accès à la liste des référents, accès à la liste des collaborateurs, accès à la liste de tous les EP.
*/ */
@Component({ @Component({
selector : "app-nav-menu-assistante", selector : "app-nav-menu-assistante",

@ -2,8 +2,6 @@ import { Component } from "@angular/core";
/** /**
* Le nav-menu qui sera affiché pour les collaborateurs. * Le nav-menu qui sera affiché pour les collaborateurs.
* La navigation des collaborateurs : accès à leur liste d'EP, accès à leur liste de formation.
* Cas des référents : accès aux demandesd de délégation.
*/ */
@Component({ @Component({
selector : "app-nav-menu-collaborateur", selector : "app-nav-menu-collaborateur",

@ -2,7 +2,6 @@ import { Component } from "@angular/core";
/** /**
* Le nav-menu qui sera affiché pour les commerciaux. * Le nav-menu qui sera affiché pour les commerciaux.
* La navigation des commerciaux : accès liste des collaborateurs, accès liste EP, accès liste des formations.
*/ */
@Component({ @Component({
selector : "app-nav-menu-commercial", selector : "app-nav-menu-commercial",

@ -2,7 +2,6 @@ import { Component } from "@angular/core";
/** /**
* Le nav-menu qui sera affiché pour les RH. * Le nav-menu qui sera affiché pour les RH.
* La navigation des RH : accès liste collaborateurs, accès liste demandes de formation, accès liste formations, accès création formation, accès création demande de formation.
*/ */
@Component({ @Component({
selector : "app-nav-menu-rh", selector : "app-nav-menu-rh",

@ -11,6 +11,9 @@ import { NavMenuCollaborateurComponent } from "./nav-menu-collaborateur/nav-menu
import { NavMenuCommercialComponent } from "./nav-menu-commercial/nav-menu-commercial.component"; import { NavMenuCommercialComponent } from "./nav-menu-commercial/nav-menu-commercial.component";
import { NavMenuRHComponent } from "./nav-menu-rh/nav-menu-rh.component"; import { NavMenuRHComponent } from "./nav-menu-rh/nav-menu-rh.component";
/**
* Module des nav utilisés pour chaque role
*/
@NgModule({ @NgModule({
declarations: [ NavMenuComponent, NavMenuAssistanteComponent, NavMenuCollaborateurComponent, declarations: [ NavMenuComponent, NavMenuAssistanteComponent, NavMenuCollaborateurComponent,
NavMenuCommercialComponent, NavMenuRHComponent NavMenuCommercialComponent, NavMenuRHComponent

@ -1,3 +1,6 @@
/**
* Chemin de la navigation du module collaborateur
*/
const paths_collaborateurs = { const paths_collaborateurs = {
base: "/collaborateurs", base: "/collaborateurs",
path: "collaborateurs", path: "collaborateurs",
@ -7,12 +10,18 @@ const paths_collaborateurs = {
edit: ":id/formations/evaluation/:id/edit" edit: ":id/formations/evaluation/:id/edit"
}; };
/**
* Chemin de la navigation du module demande délégation
*/
const paths_demandes_delegation = { const paths_demandes_delegation = {
base: "/demandesdelegation", base: "/demandesdelegation",
path: "demandesdelegation", path: "demandesdelegation",
get: ":id" get: ":id"
}; };
/**
* Chemin de la navigation du module demandes formation
*/
const paths_demandes_formation = { const paths_demandes_formation = {
base: "/demandesformation", base: "/demandesformation",
path: "demandesformation", path: "demandesformation",
@ -20,6 +29,9 @@ const paths_demandes_formation = {
new: "nouvelledemandeformation" new: "nouvelledemandeformation"
}; };
/**
* Chemin de la navigation du module ep
*/
const paths_ep = { const paths_ep = {
base: "/ep", base: "/ep",
path: "ep", path: "ep",
@ -41,6 +53,9 @@ const paths_ep = {
newparticipant: "ajoutparticipant" newparticipant: "ajoutparticipant"
}; };
/**
* Chemin de la navigation du module saisie ep
*/
const paths_saisie_ep = { const paths_saisie_ep = {
base: "/saisieep", base: "/saisieep",
path: "saisieep", path: "saisieep",
@ -49,21 +64,28 @@ const paths_saisie_ep = {
epa6ans: "epasixans" epa6ans: "epasixans"
}; };
/**
* Chemin de la navigation du module formation
*/
const paths_formation = { const paths_formation = {
base: "/formations", base: "/formations",
path: "formations", path: "formations",
get: ":id", get: ":id",
edit: ":id/edit", edit: ":id/edit",
//evaluation: ":id/evaluation/ideval",
new: "nouvelleformation" new: "nouvelleformation"
}; };
/**
* Chemin de la navigation du module home
*/
const paths_home = { const paths_home = {
base: "/home", base: "/home",
path: "home" path: "home"
}; };
/**
* Chemin de la navigation du module référent
*/
const paths_referents = { const paths_referents = {
base: "/referents", base: "/referents",
path: "referents", path: "referents",

@ -1,2 +1,2 @@
//avoir des tableau en fait qui vont nous retourner les types des trucs en fait LOOL WOLA //Ce fichier permettra, peut-être, de gérer les différents enum
//ORORORORRORORORORO //A voir où on en aura besoin...

Loading…
Cancel
Save