AXOPEN

Paramétrer le comportement du clic dans un tableau sous Planisware – clic handler

Problématique

Lorsque l’on implémente des écrans sous Planisware il est souvent demandé de paramétrer le comportement d’un clic sur un élément affiché. Dans un tableau par exemple, quel sera le comportement de l’application lorsque je clique sur telle ou telle cellule ?

En général le clic déclenche l’affichage du formulaire de l’objet considéré. Par exemple lorsque l’on clique sur le nom d’une tâche on veut afficher le formulaire de la tâche en mode popup.

Il existe plusieurs moyens de répondre à ce besoin sous Planisware en fonction de l’écran concerné et du type d’action que l’on souhaite réaliser :

  • via les rapports définissant les liens
  • via les clic handlers

Cet article présente 2 méthodes permettant de définir le comportement de Planisware lors d’un clic sur un élément graphique (tableau, tableau de charge, élément d’un GANTT…).

Les rapports définissant les liens

L’utilisation des rapports paramétrant les liens est la méthode par défaut à utiliser pour afficher le formulaire d’un objet lorsque l’on clique sur l’un de ses attributs dans un tableau. Le paramétrage se fait directement dans le formulaire de l’objet graphique à paramétrer (tableau par exemple). Le principe est de préciser le nom d’un rapport dans lequel on aura défini quels liens hypertextes sont disponibles sur quels attributs.

Les clic handlers

Dans des cas plus complexes les rapports définissant les liens ne permettent pas de réaliser l’action souhaité. On pourra alors utiliser un clic handler.

Dans l’exemple suivant nous voulons afficher sous forme de popup le formulaire de l’activité de rattachement d’une affectation en cliquant sur le champ « ACTIVITE » d’un tableau d’affectation. Ce formulaire aura pour identifiant « XXX_RE_FORM_ACT ».

Nous définissons dans un premier temps la fonction permettant de vérifier que l’attribut (c’est à dire la colonne) de l’objet sur lequel on clique est bien la colonne activité.

function IsActivityColumn(slot)
{
  var result = false;
  var column_name = slot.descriptor.name.tostring();
  if(column_name == "WBS-ELEMENT")
  {
    result = true;
  }
  return result;
}

Nous définissons dans un second temps la fonction du handler qui va réaliser l’action suite au clic :

function DisplayAllocationActivityForm(slot)
{
  if(IsActivityColumn(slot))
  {
    var my_act = this.Activity;
 
    //Define link
    var link = new hyperlink ("fformula","formula",my_act.printattribute(),"editortype","XXX_RE_FORM_ACT","popup",true);
 
    //Open link
    If(link != undefined)
    {
      link.go("useless");
    }
  }
}

Note : dans un cas réel il faudra bien sûr rajouter des vérifications préliminaires pour vérifier l’existence de l’affectation et de l’activité de rattachement.

Ensuite il suffira de rajouter l’appel de ce handler depuis le formulaire de paramétrage du tableau d’affectation via une commande du type :

this.grid.AddClickHandler("DisplayAllocationActivityForm");

Ainsi lorsque l’on cliquera sur le champ « ACTIVITE » de l’une des affectations du tableau Planisware va afficher le formulaire « XXX_RE_FORM_ACT » sur l’activité de rattachement de l’affectation.