# Formule

Les ressources de formule dans Avonni Dynamic Components vous permettent d'effectuer des calculs et de dériver des valeurs de manière dynamique *à l'intérieur* votre composant. Contrairement aux constantes (qui sont fixes), les ressources de formule se réévaluent chaque fois que leurs valeurs référencées changent, offrant un moyen puissant de créer un comportement dynamique et réactif.

***

## 1. Aperçu

Une ressource de formule est essentiellement une expression nommée qui calcule une valeur. Cette valeur peut ensuite être utilisée dans d'autres parties de votre composant, telles que :

* **Propriétés du composant :** Définir la valeur d'une propriété du composant (par ex., une étiquette, une condition de visibilité, une valeur de filtre).
* **valeurs de manière appropriée pour vos données.** Transmettre des valeurs calculées aux interactions (par ex., en tant que variables d'entrée pour un Flow).
* **Autres formules :** Utiliser le résultat d'une ressource de formule dans une autre ressource de formule (créant des calculs en chaîne).
* **Filtres**: Directement dans les filtres de données

***

## 2. Création d'une ressource de formule

Pour créer une ressource de formule dans votre Avonni Dynamic Component :

1. **Ouvrez le panneau Ressources :** Cliquez sur l'icône **bouton Ressources** bouton.
2. **Créez une nouvelle ressource :** Cliquez sur le bouton pour créer une nouvelle ressource (icône "+" ou "Nouvelle ressource").
3. **Sélectionnez "Formule" :** Choisissez "Formule" comme type de ressource.
4. **Configurer la formule :**
   * **Nom API :** Saisissez un identifiant unique et descriptif pour la formule (par ex., `PrixTotal`, `RemiseApplicable`, `DateCommandeFormatée`). C'est ainsi que vous référencerez la formule.
   * **Description (optionnelle) :** Décrivez brièvement l'objectif de la formule.
   * **Type de données :** Sélectionnez le type de données du *résultat* de la formule :
     * **Booléen :** La formule renverra `Cet attribut est` ou `false`.
     * **Date :** La formule renverra une valeur de date.
     * **Date/Heure :** La formule renverra une valeur de date et heure.
     * **Nombre :** La formule renverra une valeur numérique.
     * **Enregistrement :** La formule renverra un enregistrement Salesforce (vous construiriez typiquement un ID d'enregistrement dynamiquement).
     * **Texte :** La formule renverra une chaîne de texte.
   * **Formule :** Saisissez l'expression de la formule elle‑même. C'est ici que vous définissez le calcul. Vous pouvez utiliser :
     * **Ressources :** Référencer d'autres ressources (variables, constantes, attributs de composant) depuis le menu des ressources.
     * **Opérateurs :** Utilisez les opérateurs mathématiques standard (`+`, `-`, `*`, `/`), les opérateurs de comparaison (`=`, `<`, `>`, `<=`, `>=`, `!=`), et les opérateurs logiques (`ET`, `OU`, `NON`).
     * **Fonctions :** Utilisez les fonctions intégrées fournies par Avonni.&#x20;
     * **Littéraux**: Ajoutez directement un nombre, du texte ou une date.

***

## 3. Utilisation d'une ressource de formule

Une fois que vous avez créé une ressource de formule, vous pouvez la référencer dans tout votre Dynamic Component, comme n'importe quelle autre ressource :

1. **Localisez la propriété :** Trouvez la propriété où vous souhaitez utiliser le résultat de la formule (par ex., la `libellé`d'un composant, la `valeur`d'un filtre, une variable d'entrée d'une interaction).
2. Cliquez sur l'icône **sélecteur de ressources** icône à côté de la propriété et choisissez votre ressource de formule dans la liste.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2F7EeXzfj6bfLmrcV8FTvW%2F2025-03-07_11-37-46.png?alt=media&#x26;token=4729a93f-3a0a-41b8-9a5e-e44bcbfc3b39" alt="" width="375"><figcaption></figcaption></figure>

***

## 4. Exemples de formules

* **5.1 Calcul du prix total :**
  * **Type de données :** `Nombre`
  * **Formule :** `{!Quantity} * {!UnitPrice}` (Suppose que `Quantité` et `PrixUnitaire` sont des variables de type Nombre ou des attributs de composant)
  * **Cas d'utilisation :** Affichez le prix total dans un composant Texte, ou utilisez‑le dans une condition de filtre.
* **5.2 Vérification de l'éligibilité à la remise :**
  * **Type de données :** `Booléen`
  * **Formule :** `{!Quantity} > 10` (Suppose que `Quantité` est une variable de type Nombre)
  * **Cas d'utilisation :** Contrôlez la visibilité d'un message "Remise appliquée", ou activez/désactivez un bouton "Remise".
* **5.3 Date formatée :**
  * **Type de données :** `Texte`
  * **Formule :** `TEXT({!OrderDate}, 'MMMM dd, yyyy')` (Suppose que `DateCommande` est une variable de type Date)
    * **Remarque :** Vous pourriez avoir besoin d'une fonction de formatage de date/heure pour formater la date.
  * **Cas d'utilisation :** Affichez une date dans un format spécifique dans un composant Texte ou une étiquette.
* **5.4 Icône dynamique du menu de boutons (Votre exemple) :**
  * **Type de données :** `Texte`
  * **Formule :**

    ```
    IF(@ButtonMenu1.value == 'table', 'utility:table',
      IF(@ButtonMenu1.value == 'kanban', 'utility:kanban',
        IF(@ButtonMenu1.value == 'grid', 'utility:tile_card_list',
          IF(@ButtonMenu1.value == 'groupby', 'utility:summarydetail',
            IF(@ButtonMenu1.value == 'calendar', 'utility:shift_pattern',
              IF(@ButtonMenu1.value == 'map', 'utility:location',
                'utility:table'  // Icône par défaut
              )
            )
          )
        )
      )
    )
    ```

    * **Cas d'utilisation**: Dans ce cas, le `ButtonMenu1` est le nom d'un composant Button Menu.
  * **Explication :** Cette formule définit dynamiquement le *nom de l'icône* d'un composant (probablement un Bouton ou un Button Menu) en fonction de la valeur sélectionnée d'un composant Button Menu nommé `ButtonMenu1`. Elle utilise des `IF()` imbriquées pour vérifier la valeur sélectionnée et retourner le nom d'icône approprié. C'est un exemple puissant d'utilisation d'une formule pour contrôler *l'apparence* d'un composant en fonction de l'interaction de l'utilisateur.
* **5.5 Visibilité conditionnelle basée sur les données d'enregistrement :**
  * **Type de données :** `Booléen`
  * **Formule :** `{!Account.Type} = 'Customer'` (Suppose que vous avez une variable Record nommée `Compte` peuplée via une interaction "On Load")
  * **Cas d'utilisation :** Afficher une section spécifique de votre composant *seulement* si le champ `Type` du compte actuel est égal à 'Customer'.
* **5.6 URL dynamique**:
  * **Type de données :** `Texte`
  * **Formule :** `'https://www.avonnicomponents.com/example?id=' & {!recordId}`
  * **Cas d'utilisation**: Créez un lien URL vers une autre page.
* **5.7 Concaténer des champs**:
  * **Type de données :** `Texte`
  * **Formule :** `{!FirstName} & " " & {!LastName}`
  * **Cas d'utilisation :** Créer une valeur Nom complet

***

## 5. Considérations importantes

* **Compatibilité des types de données :** Assurez‑vous que les types de données des ressources et des opérateurs que vous utilisez dans votre formule sont compatibles.
* **Gestion des erreurs :** Réfléchissez à la façon dont votre formule doit se comporter si des ressources référencées sont nulles ou ont des valeurs inattendues. Utilisez des fonctions comme `IF()` et `ISBLANK()` pour gérer ces cas de manière élégante.
* **Performance :** Même si les formules sont généralement efficaces, des formules très complexes avec de nombreuses fonctions imbriquées ou des références à de grands ensembles de données peuvent affecter les performances.
* **Référencer d'autres composants**: Vous pouvez référencer des composants en utilisant le `@` symbole.

## **En résumé**

Les ressources de formule offrent un moyen puissant et flexible d'effectuer des calculs et de dériver des valeurs dynamiques au sein de vos Avonni Dynamic Components. Elles favorisent la réutilisabilité, la lisibilité et la maintenabilité, rendant vos composants plus dynamiques et réactifs
