AXOPEN

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

01_TABLEAU_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"

02_FORMULAIRE

Puis définir la couleur de mise en exergue :

04_COULEUR_MISE_EN_EXERGUE

Le résultat obtenu sera alors :

03_TABLEAU_AVEC_MISE_EN_FORME

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

04_POLICE_MISE_EN_EXERGUE

Le résultat obtenu sera alors :

06_TABLEAU_AVEC_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 :

01_TABLEAU_SANS_MISE_EN_FORME

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 :

10_DEFINITION_DU_CHAMP_SYMBOLIQUE

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

11_TABLEAU_AVEC_CHAMP_SYMBOLIQUE

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

10_DEFINITION_DU_CHAMP_SYMBOLIQUE_TYPE_CHAINE

Le résultat obtenu sera alors le suivant :

11_TABLEAU_AVEC_CHAMP_SYMBOLIQUE_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ées :

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

23_PARAM_TABLEAU

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

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

20_ACTIVITY_LIST_AVANT_HANDLER

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

21_ACTIVITY_LIST_APRES_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 :

20_ACTIVITY_LIST_AVANT_HANDLER

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

25_ACTIVITY_LIST_APRES_HANDLER

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)