meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
certif:procedure:develop:angular:validator [2026/03/13 16:43] – [Les différents dx-validator] nicolascertif:procedure:develop:angular:validator [2026/05/21 11:50] (Version actuelle) – [Tests "manuels"] nicolas
Ligne 17: Ligne 17:
   * [[certif:procedure:develop:angular:validator-detail]]   * [[certif:procedure:develop:angular:validator-detail]]
   * les validateurs "custum" **doivent** être déclaré dans la bibliothèque dans **custom-validation-rule.ts** et donc appelé via le service **customValidatorService**     * les validateurs "custum" **doivent** être déclaré dans la bibliothèque dans **custom-validation-rule.ts** et donc appelé via le service **customValidatorService**  
 +  * [[certif:procedure:develop:angular:validator-date]]
  
-==== Cas particulier des dates ==== +===== L'organisation des tests ===== 
-=== HTML ===+Comme on l'a vu plus haut les validators sont regroupés en **validationGroup**\\ 
 +Dans le composant on va déclaré une série de procédures (pour une meilleur lecture on essaye de garder la nomenclature)
 <code> <code>
-<dx-date-box stylingMode="outlined" labelMode="static" label="Date de naissance" [(value)]="personne.dateNaissance"  +  private Notificationinject(NotificationService
-  [max]="today" displayFormat="dd/MM/yyyy" [useMaskBehavior]="true" [showClearButton]="true" [readOnly]="!this.DG.isDroitsFichierEdition()" +
-  [style.background-color]="BC.mRGPD('personne','dateNaissance').couleur" (onValueChanged)="handlePersonneChanged()"> +
-    <dx-validator validationGroup="infoPersonne" name="Date de naissance"> +
-      <dxi-validation-rule type="range" [max]="today" [min]="minDateNaissance" message="'La date doit être après ' + (minDateNaissance | date:'yyyy')"/> +
-  </dx-validator> +
-</dx-date-box> +
-</code> +
-=== TS === +
-<code> +
-  // Bornes de validation de la date de naissance +
-  public today: Date = new Date(); +
-  public minDateNaissance: Date = new Date();+
      
-  // Message dynamique pour le validateur +  ngAfterViewInit() { 
-  public rangeMessage: string = "";+    //votre code ici si besoin 
 +    this.triggerValidation(); 
 +  }
  
-  ngOnInit(): void +  private triggerValidation() { 
-    this.initValidationDates();+    this.Notification.analyseStockValidation("infoBanque","Information bancaires");
   }   }
 +  
 +  handleInfoBanqueChanged() {
 +    // votre code si beoin
 +    this.triggerValidation();
 +    this.infoBancairesChange.emit(JSON.stringify(this.infoBanque))
 +  }
 +  </code>
 +  
 +==== Tests "manuels" ====
 +<code>
 +    test_warning(){
 +        this.Notification.videWarning();
 +        if (this.personne.dateFinConservation) {
 +            const aujourdhui = new Date(); aujourdhui.setHours(0, 0, 0, 0);
 +            if (this.personne.dateFinConservation && new Date(this.personne.dateFinConservation) < aujourdhui) {
 +                this.Notification.ajouteWarning('RGPD','La date de fin de consentement de cette personne est dépassée')} 
 +            else {
 +                const bientot = new Date(); aujourdhui.setHours(0, 0, 0, 0); bientot.setMonth(bientot.getMonth()+6); 
 +                if (this.personne.dateFinConservation && new Date(this.personne.dateFinConservation) < bientot) {
 +                    this.Notification.ajouteWarning('RGPD','La date de fin de consentement de cette personne va bientôt être dépassée')
 +                }
 +            } 
 +        } else {this.Notification.ajouteWarning('RGPD',"La date de fin de consentement de cette personne n'est pas initialisée")}
 +    }
 +</code>
 +\\
 +<code>
 +  private triggerValidation() {
 +    this.Notification.analyseStockValidation("infoIdentification","Information d'identicateur");
 +    if ((this.SIREN=="")&&(this.RNA=="")) {
 +      this.Notification.ajouteErreur("infoIdentification","Veuillez saisir au moins un des champs SIREN ou RNA")
 +    }
 +  }
 +</code>
  
  
-  /** 
-   * Initialise les bornes de temps pour le dx-date-box 
-   */ 
-  private initValidationDates() { 
-    // 1. On fixe AUJOURD'HUI à la fin de la journée (23:59:59) 
-    // Cela évite que la date du jour soit considérée comme "dans le futur" 
-    this.today = new Date(); 
-    this.today.setHours(23, 59, 59, 999); 
  
-    // 2. On calcule MINIMUM (Aujourd'hui - 120 ans) +==== Le service "Notification" ==== 
-    this.minDateNaissance new Date(); +Il publie plusieurs fonctions : 
-    this.minDateNaissance.setFullYear(this.today.getFullYear() - 120); +|analyseStockValidation(validateGroup:stringnomBloc:string)|**validateGroup** est le nom du groupe de test (on peut en avoir plusieurs dans un même composant)\\ **nomBloc** sert à l'affichage à indiquer à l'utilisateur ou se trouve les champs à corriger|
-    this.minDateNaissance.setHours(00, 0, 0)+
- +
-    // 3. On prépare le message d'erreur +
-    this.rangeMessage = `La date doit être comprise entre ${this.minDateNaissance.getFullYear()} et aujourd'hui.`; +
-  } +
- +
-</code>+