Paramétrer l'affichage des cellules dans un tableau sous Planisware 5
Sommaire
- Introduction
- 1. La mise en exergue standard
- 1.1. Principe et fonctionnement
- 1.2. Avantages
- 1.2. Inconvénients
- 2. Les champs symboliques
- 2.1. Principe et fonctionnement
- 2.2. Avantages
- 2.3. Inconvénients
- 3. Les text handlers
- 3.1. Principe et fonctionnement
- 3.1.1. Formatage de la police (type, taille, gras, italique) : addtextfonthandler
- 3.1.2. Formatage de la police (couleur) : addtextcolorhandler
- 3.2. Avantages
- 3.3. Inconvénients
Introduction :
Lorsque l’on implémente des écrans sous Planisware il est souvent demandé de paramétrer l’affichage des cellules d’un tableau en fonction de leur valeur, du type d’objet, etc… Il peut s’agir par exemple d’afficher en gras et de couleur rouge les tâches dont la durée est supérieure à 100h. C’est en quelque sorte les mises en forme conditionnelles que l’on trouve sous Excel.
Il existe plusieurs moyens de répondre à ce besoin sous Planisware. Voici les principales manières de gérer le format (police, couleur, etc…) des cellules sous Planisware :
→ la mise en exergue standard
→ les champs symboliques
→ les text handlers
Nous présenterons brièvement les 2 premiers points (plus classiques) et détaillerons ensuite les fonctionnements des text handlers. A noter que nous n’aborderons pas le formatage des cellules des rapports Planisware mais seulement le formatage des cellules contenues dans des objets graphiques de type tableaux de données, Gantt, etc…
1. La mise en exergue standard
1.1. Principe et fonctionnement
La mise en exergue consiste à modifier l’affichage des champs d’un objet respectant les conditions de mise en exergue.
Prenons l’exemple d’un tableau d’activité affichant les activités d’un projet :
On souhaite maintenant afficher en rouge les activités de type TACHE et dont la durée est > 10 jours. On va donc ouvrir le formulaire de paramétrage du tableau et renseigner le filtre de mise en exergue de la manière suivante :
Puis définir la couleur de mise en exergue :
Le résultat obtenu sera alors :
On peut ensuite modifier la police des cellules mises en exergue en renseignant la section suivante du formulaire du tableau :
Le résultat obtenu sera alors :
1.2. Avantages
Le principal avantage est la facilité de mise en oeuvre de cette méthode : on complète le filtre des objets à mettre en exergue puis on définit le type de mise en exergue et c’est terminé.
De plus ces options de mise en exergue peuvent être accessibles directement en client léger (lorsque l’administrateur n’a pas verrouillé cette option).
1.3. Inconvénients
La simplicité de la mise en exergue standard présente les inconvénients suivants :
→ Tous les attributs affichés des objets concernés sont mis en exergue (on ne peut pas mettre en exergue que le champ « Nom » ou le champ « Durée » par exemple).
→ On ne peut pas avoir plusieurs mises en exergue différentes (un seul filtre et une seule couleur, une seule police).
2. Les champs symboliques
2.1. Principe et fonctionnement
Les champs symboliques sont comparables à des formules nommées dont le résultat affiché sera de type graphique (icône, cellule de couleur, etc..).
Prenons l’exemple d’un tableau d’activité affichant les activités d’un projet :
On souhaite maintenant afficher une cellule affichant un indicateur rouge pour les activités dont la durée est > 10 jours et vert sinon. On va donc créer un champ symbolique du type suivant :
On affiche ensuite dans le tableau le champ nouvellement créé :
On peut modifier la définition du champ symbolique pour afficher une chaine de caractère à la place d’un symbole :
Le résultat obtenu sera alors le suivant :
Remarque : en client léger lorsque l’on sélectionne le bouton « Style » d’un tableau et qu’on va ensuite sur l’option « Organiser les colonnes » il est possible d’insérer un indicateur. Ces « indicateurs » sont des champs symboliques simplifiés (moins d’options de paramétrage).
2.2. Avantages
Contrairement aux mises en exergues standard le champ symbolique permet d’afficher dans une cellule précise le résultat graphique attendu.
De plus les champs symboliques restent relativement simples à manipuler.
2.3. Inconvénients
Les champs symboliques ne permettent pas à proprement parler d’agir directement sur l’affichage de champs existants. Cela oblige donc à créer de nouveaux champs à afficher à la place des champs standards.
3. Les text handlers
3.1. Principe et fonctionnement
Les text handlers vont permettre de paramétrer de manière très précise l’affichage d’une cellule respectant des critères donnés :
→ sur le champ affiché (colonne du tableau)
→ sur l’objet (ligne du tableau)
→ sur le contenu de la cellule
Globalement les text handler comportent 2 parties :
→ la définition d’une fonction contrôlant l’affichage
→ l’appel du handler dans l’écran où l’on souhaite que le contrôle d’affichage soit actif
3.1.1. Formatage de la police (type, taille, gras, italique) : addtextfonthandler
Le textfonthandler va permettre de définir des règles de mise en forme (type, taille, gras et italique) pour les cellules répondant à des conditions que l’on va définir.
Création du textfonthandler
Voici la syntaxe d’utilisation générique de la fonction « font() » :
font(string FAMILY_NAME, integer SIZE, boolean BOLD, boolean ITALIC)
Voici un exemple de script de création d’un « textfonthandler » sur le champ descriptif (DESC) des entrées d’un tableau :
La première fonction permet de déterminer si la cellule correspond au champ descriptif :
function XXX_Is_Desc_Column(slot)
{
var retour = false;
var nom_colonne = slot.descriptor.name.tostring();
if(nom_colonne == "COMMENT")
{
retour = true;
}
return retour;
}
La seconde fonction permet de déterminer si la l’objet est une tâche :
function XXX_Is_Task()
{
var retour = false;
if(this.CallBooleanFormula("?TACHE"))
{
retour = true;
}
return retour;
}
Enfin cette dernière fonction va définir les caractéristiques du textfonthandler :
function XXX_EXERGUE_TASK_DESC_TEXTFONTHANDLER(slot)
{
// Selectionne uniquement les cellules DESC des tâches
if(XXX_Is_DESC_COLUMN(slot) && XXX_Is_Task())
{
// Renvoie une mise en exergue de la cellule
// Police = Arial
// Taille = 8
// Gras = non
// Italique = oui
return(font("Arial",12,false,true));
}
}
Appel du textfonthandler
Pour appeler le textfonthandler on va ajouter le script suivant dans le champ « Script OPX2 appelé à l’affichage » du formulaire de l’objet graphique d’un rapport :
this.grid.addtextfonthandler("XXX_EXERGUE_TASK_DESC_TEXTFONTHANDLER")
Exemple pour une cellule de rapport de type « tableau » :
Exemple d’application du textfonthandler sur un tableau d’activités
Voici l’exemple d’un tableau avant mise en place du textfonthandler :
Et le résultant après la mise en place du textfonthandler :
3.1.2. Formatage de la police (couleur) : addtextcolorhandler
Le textcolorhandler va permettre de définir la couleur du texte pour les cellules répondant à des conditions que l’on va définir.
Création du textcolorhandler
Voici la syntaxe d’utilisation générique de la fonction « color() »
Voici un exemple de script de création d’un « textcolorhandler » sur le champ descriptif (DESC) des tâches d’un tableau d’activités :
function XXX_EXERGUE_TASK_DESC_TEXTCOLORHANDLER(slot)
{
// Selectionne uniquement les cellules DESC des tâches
if(XXX_Is_DESC_COLUMN(slot) && XXX_Is_Task())
{
// Renvoie une mise en exergue de la cellule
// Couleur = RED
var my_color = color("RED");
return(my_color);
}
}
Appel du textcolorhandler
Pour appeler le textcolorhandler on va ajouter le script suivant dans le champ « Script OPX2 appelé à l’affichage » du formulaire de l’objet graphique d’un rapport comme dans l’exemple du textfonthandler.
this.grid.addtextfonthandler("XXX_EXERGUE_TASK_DESC_TEXTCOLORHANDLER")
Exemple d’application du textcolorhandler sur un tableau d’activités
Voici l’exemple d’un tableau avant mise en place du textcolorhandler :
Et le résultant après la mise en place du textcolorhandler :
3.2. Avantages
Les text handlers ont l’avantage de permettre un formatage précis de telle ou telle cellule selon des conditions précises.
3.3. Inconvénients
Malgré les avantages des text handlers ils sont à utiliser avec modération pour les raisons suivantes :
complexité à maintenir le code (avec la gestion des handlers concurrents)
impact possible sur les performances (surtout si les options d’affichage sont multiples)