Aller au contenu

    Paramétrer l'affichage des cellules dans un tableau sous Planisware 5

    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 :

    sans mise en forme

    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 :

    DU > ’10j’ ET CLASSE="TACHE"
    Formulaire

    Puis définir la couleur de mise en exergue :

    Mise en exergue

    Le résultat obtenu sera alors :

    avec mise en forme

    On peut ensuite modifier la police des cellules mises en exergue en renseignant la section suivante du formulaire du tableau :

    Police mise en exergue

    Le résultat obtenu sera alors :

    Mise en forme police

    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 :

    Champ symbolique

    On affiche ensuite dans le tableau le champ nouvellement créé :

    type chaine

    On peut modifier la définition du champ symbolique pour afficher une chaine de caractère à la place d’un symbole :

    def type chaine

    Le résultat obtenu sera alors le suivant :

    champ type chaine

    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 » :

    paramètres tableau

    Exemple d’application du textfonthandler sur un tableau d’activités

    Voici l’exemple d’un tableau avant mise en place du textfonthandler :

    liste activité

    Et le résultant après la mise en place du textfonthandler :

    Résultat handler

    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() »

    color(string or integer REDORNAME, integer GREEN, integer BLUE, integer ALPHA)

    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 :

    liste activity

    Et le résultant après la mise en place du textcolorhandler :

    Liste activité après

    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)