4.5.11 getOptions

La méthode getOptions permet de spécifier des options de représentations

/**
 * @param \Doc $document current document to render
 * @return RenderOptions default render configuration options
 */
public function getOptions(\Doc $document);

Les options d'attributs sont différentes en fonction du type de l'attribut. certaines options sont communes à tous les types d'attributs, alors que les autes dépendent du type d'attribut.

Les classes Dcp\Ui\DefaultView et Dcp\Ui\DefaultEdit retournent les options par défaut des attributs.

Cette méthode doit retourner un objet de la classe Dcp\Ui\RenderOptions qui contient les options choisies pour les attributs du document à visualiser.

Les options sont des objets héritant de la classe \Dcp\Ui\BaseRenderOptions. Cette classe permet d'associer chaque option à un ou plusieurs attributs au moyen de la méthode setScope.

En particulier, il existe

  • une classe pour les options du document (\Dcp\Ui\DocumentRenderOptions)
  • une classe pour les options communes à tous le stypes d'attributs (\Dcp\Ui\CommonRenderOptions)
  • une classe par type d'attribut (\Dcp\Ui\<type>RenderOptions)

Exemple :

$options=new Dcp\Ui\RenderOptions();
$enumOption = new Dcp\Ui\EnumRenderOptions();
$enumOption->setScope(\Dcp\AttributeIdentifiers\My_family::my_continent);
$enumOption->useFirstChoice(false);
$options->setOption($enumOption);

Afin de simplifier la définition des options, des alias sont définis sur la classe Dcp\Ui\RenderOptions :

Type Méthode Classe associée
document document() Dcp\Ui\DocumentRenderOptions
commune common() Dcp\Ui\CommonRenderOptions
account account() Dcp\Ui\AccountRenderOptions
array arrayAttribute() Dcp\Ui\ArrayRenderOptions
color color() Dcp\Ui\ColorRenderOptions
date date() Dcp\Ui\DateRenderOptions
docid docid() Dcp\Ui\DocidRenderOptions
double double() Dcp\Ui\DoubleRenderOptions
enum enum() Dcp\Ui\EnumRenderOptions
file file() Dcp\Ui\FileRenderOptions
frame frame() Dcp\Ui\FrameRenderOptions
htmltext htmltext() Dcp\Ui\HtmltextRenderOptions
int int() Dcp\Ui\IntRenderOptions
image color() Dcp\Ui\ImageRenderOptions
longtext longtext() Dcp\Ui\LongtextRenderOptions
password password() Dcp\Ui\PasswordRenderOptions
money money() Dcp\Ui\MoneyRenderOptions
tab tab() Dcp\Ui\TabRenderOptions
text text() Dcp\Ui\TextRenderOptions
time time() Dcp\Ui\TimeRenderOptions
timestamp timestamp() Dcp\Ui\TimestampRenderOptions

Exemple :

use Dcp\Ui\RenderAttributeNeeded;
use Dcp\AttributeIdentifiers\My_family;
 
class RenderConfigCustom extends \Dcp\Ui\DefaultView
{
    /**
     - @param \Doc $document current document to render
     - @return RenderOptions default render configuration options
     */
    public function getOptions(\Doc $document)
    {
        $options = parent::getOptions($document);
 
        $options->enum(My_family::my_continent)->display(\Dcp\Ui\EnumRenderOptions::horizontalDisplay);
        $options->money()->setCurrency('EUR');
 
        return $options;
    }
}

4.5.11.1 Remarques

Une option posée pour un attribut identifié est prioritaire sur l'option posée pour un type.

Une option posée pour un type est prioritaire à une option commune posée pour tous les attributs.

Exemple :

use Dcp\Ui\RenderAttributeNeeded;
use Dcp\AttributeIdentifiers\My_family;
 
class RenderConfigCustom extends \Dcp\Ui\DefaultView
{
    /**
     - @param \Doc $document current document to render
     - @return RenderOptions default render configuration options
     */
    public function getOptions(\Doc $document)
    {
        $options = parent::getOptions($document);
 
        $options->commonOption()->showEmptyContent("Non communiqué");
        $options->commonOption("my_phone")->showEmptyContent("Pas de téléphone");
 
        return $options;
    }
}

4.5.11.2 Options personnalisées

Des options personnalisées peuvent aussi être propagée à la vue du client. Ces options non utilisées sur le rendu standard peuvent être exploitées par un code javascript spécifique.

La méthode setOption permet d'ajouter des options supplémentaires.

Les identifiants de ces options ne doivent pas être en conflit avec les noms des options existantes. Si l'identifiant est un identifiant déjà reconnu, cela revient à modifier ce paramètre de représentation

Les valeurs de l'option peuvent être des nombres, des chaînes de caractères, des tableaux ou tout autre type qui peut être converti en JSON. C'est la donnée convertie en JSON qui sera exploitée.

$options=new Dcp\Ui\RenderOptions();
$options->commonOptions(My_contact::zct_photo)
    ->setOption("MyFirstCustomOption", "MyOptionValue");
    ->setOption("MySecondCustomOption", [
        "One"=>"MyFirstValue",
        "Two"=>"MySecondValue"
    ]);

Exemple récupération en JS :

$.ready(function() {
    //Ajouter un event au ready
    window.dcp.document.documentController(
        "addEventListener",
        "change",
        "my_attr"
        {
            "documentCheck" : function(document) { return document.family.name === "MY_FAMILY"},
            "name": "myEvent.myFamily"
        }, 
        function(document, attribute) {
            // Si l'attribut my_attr égal "GO" alors les attributs ayant l'option MyFirstCustomOption sont cachés
            if (attribute.attributeValue.value === "GO") {
                var attributes = this.documentController("getAttributes");
 
                _.each(attributes, function (attr) {
                    if (attr.getOption("MyFirstCustomOption") === "MyOptionValue") {
                        this.documentController("hideAttribute", attr.id);
                    }
                })
            }
          }
      );
});
×