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); } }) } } ); });