Aller au contenu

    Comment créer un libellé dynamique dans Planisware?

    Problématique

    Il est possible, dans Planisware, de créer des libellés dynamiques. Il est par exemple tout à fait possible de rendre le libellé d’un champ coût dynamique de manière.

    Les relations inverses permettent de « récupérer » facilement et de manière optimisée tous les objets qui possèdent une relation avec un objet donné. Par exemple une relation inverse permettra de parcourir la liste des affectations portant sur une activité donnée.

    Cet article apporte un éclairage sur la manière d’utiliser une relation inverse et complète un précédent billet sur ce sujet. Comme vous pourrez le voir le nommage est loin d’être unique… et pour une même relation inverse on pourra avoir plusieurs possibilités.

    1. Faire une boucle sur une relation inverse

    Prenons un exemple :

    Pour itérer sur les affectations d’une activité « ID_ACTIVITY » on peut utiliser la syntaxe suivante utilisant des relations inverses :

    {{< highlight java >}} var o_activity = "OpxActivity".get("ID_ACTIVITY"); for(var o_allocation in o_activity.Allocations) { … }{{< /highlight >}}

    Ici à partir de l’activité dont l’ID est « ID_ACTIVITY » on va itérer sur toutes les Affectations dont le champ relation Activité (ou WORK_STRUCTURE) a pour valeur l’activité concernée.

    La boucle va parcourir l’ensemble des objets o_activity.Allocations qui permet, à partir de l’objet activité de remonter les objets affectations qui lui sont rattachés. Ceci grâce au mot clé « Allocations » qui est le nom de la relation inverse.

    Ce fameux mot clé peut avoir plusieurs noms différents pour une même relation. Ceci peut être déroutant lorsque l’on découvre le code OJS.

    2. Nommage des relations inverses natives

    Dans cette partie nous proposons une liste non exhaustive par relation des mots clés permettant de lister les objets en relation inverse.

    On verra qu’il existe souvent au moins 1 version par langue (exemple Anglais / Français) mais d’autres déclinaisons dans une même langue peuvent être constatées.

    Relation Affectations – Activité

    {{< highlight java >}} for(var o_allocation in o_activity.Allocations){} for(var o_allocation in o_activity.PlannedHours){}{{< /highlight >}}

    Relation Dépenses prévues – Activité

    {{< highlight java >}} for(var o_allocation in o_activity.Expenditures){} for(var o_allocation in o_activity.PlannedExpenditures){}{{< /highlight >}}