# Contrôleur global
Le contrôleur global est accessible depuis la librairie @anakeen/user-interfaces/components/lib/AnkController
.
Par exemple :
import ankSmartController from "@anakeen/user-interfaces/components/lib/AnkController";
ankSmartController;
# Méthodes du contrôleur global
# addSmartElement
Ajoute un Smart Element sur l'élément DOM spécifié
# Arguments
DOMReference (JQuery|String|HTMLElement)
: obligatoire. Référence DOM sur laquelle va être rendu le Smart ElementviewData (Object)
: obligatoire. Objet définissant le Smart Element à ajouter. Il contient les propriétés suivantes :initid (Number|String)
: obligatoire. Identifiant du Smart ElementviewId (String, default: "!defaultConsultation")
: optionnel. Identifiant de la vue à appliquer au Smart Elementrevision (Number, default: -1)
: optionnel. Numéro de révisioncustomClientData (Object, default: {})
: optionnel. Données personnalisées à attacher au Smart Element.
options (Object)
: optionnel. Options contenant les champs suivants :loading (Boolean, default: true)
: Utilise la barre de chargement par défautnotification (Boolean, default: true)
: Utilise le système de notification par défautcontrollerName (String)
: Spécifie l'identifiant à utiliser pour le contrôleur. Il doit être unique parmi tous les identifiants de contrôleur.controllerPrefix (String, default: "smart-element-controller-")
: Spécifie le préfixe à utiliser pour le calcul de l'identifiant du contrôleur. L'option est ignorée si l'optioncontrollerName
est spécifiée.
# Retour
Si l'option controllerName
est utilisé, la fonction renvoie une Promise qui se résout sur la valeur de l'option
controllerName
. Sinon une Promise se résolvant sur un identifiant calculé est retourné.
Cet identifiant est l'identifiant du contrôleur restreint du Smart Element ajouté. Il est utilisable par la méthode
getScopedController
.
# Exceptions
Exception si le Smart Element n'a pas pu être ajouté.
# Exemple
# Ajout d'un Smart Element en édition
<div id="my-form"></div>
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.addSmartElement("#my-form", {
initid: "DEMANDE_FORM",
viewId: "!defaultEdition"
});
// Retourne une Promise qui se résout sur smart-element-controller-23 (par exemple)
# Ajout d'un Smart Element avec un identifiant de contrôleur spécifique
<div id="my-form"></div>
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.addSmartElement(
"#my-form",
{
initid: "DEMANDE_FORM"
},
{
controllerName: "my-controller-id"
}
);
// Retourne une Promise qui se résout sur my-controller-id
# Ajout d'une fonction de callback après un addSmartElement
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
const myControllerId = globalController.addSmartElement($widgetContainer, options, { loading: true });
myControllerId.then(id => {
const currentController = controller.getScopedController(id);
currentController.addEventListener("ready", () => {
currentController.injectCSS("monFichier.css");
currentController._element.find(".dcpDocument").addClass("no--header");
});
});
# getScopedController
Permet de récupérer un contrôleur de Smart Element spécifique.
# Arguments
controllerUid (String| HTMLElement | JQueryElement)
: obligatoire. Identifiant unique du contrôleur à récupérer. Il est également possible de donner un élément DOM ou JQuery, dans ce cas le contrôleur du Smart Element contenant ou correspondant à cet élément est retourné.
# Retour
Retourne le contrôleur correspondant à l'identifiant donné en argument.
# Exceptions
Lève une exception aucun contrôleur ne correspond à l'identifiant donné.
# Exemple
# Récupère un contrôleur
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.getScopedController("my-controller-id");
# Récupère un contrôleur à partir d'un élément JQuery
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
const scopedController = globalController.getScopedController($("#my-form"));
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
const scopedController = globalController.getScopedController($(".dcpAttribute[data-attrid=my_field_title]"));
// Retourne le contrôleur du Smart Element contenant le smart field "my_field_title"
# getControllers
Liste l'ensemble des contrôleurs de Smart Element
# Arguments
Pas d'argument.
# Retour
Retourne la liste de tous les contrôleurs de Smart Element.
# Exceptions
Pas d'exception.
# Exemple
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
const allControllers = globalController.getControllers();
# addEventListener
Permet d'écouter globalement un événement de Smart Element sur l'ensemble des Smart Element de la page.
# Arguments
type (String)
: Le type d'événement. Vous pouvez vous référer aux événements émis par le Smart Element, les Smart Fields, les changements d'état ainsi que les événements spécialisés.option (Object)
: Optionnel. Il contient les propriétés suivantes :check (function, default: () => true)
: Cette fonction permet d'indiquer pour quel type de Smart Element s'applique l'écouteur. Elle reçoit en entrée un objet Smart Element décrivant le Smart Element courant. Elle doit retourner true pour indiquer que l'écouteur est applicable pour ce type de Smart Element.name (String)
: Optionnel. Nom de l'écouteur. Ce nom est utilisé pour identifier l'écouteur et le supprimer. Le nom peut posséder un namespace. Par défaut un nom est calculé automatiquement.once (Boolean, default: false)
: si once est àtrue
, l'écouteur n'est appliqué qu'une seule fois et ensuite supprimé.persistent (Boolean, default: true)
: si persistent est àfalse
, l'écouteur est supprimé lors du prochainfetchSmartElement
.
callback (function)
: cette fonction est appelée lorsque l'événement type est émis. Elle reçoit les paramètres suivants dans cet ordre:event
: Objet événement standard de jQuery.smartElement
: l'objet Smart Element écouté.parameters
: les paramètres de l'événement.
Persistence
Les événements du contrôleur global sont par défaut persistent au contraire de ceux du contrôleur restreint qui sont volatiles par défaut.
# Retour
Pas de retour
# Exceptions
Pas d'exception.
# Exemple
# Écouter l'événement 'actionClick' sur tous les Smart Element de type DEVBILL
dans la page
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.addEventListener(
"actionClick",
{
name: "myActionClickListener",
check: function(smartElement) {
return smartElement.family.name === "DEVBILL";
}
},
function(event, smartElement, parameters) {
console.log(`On a enclenché l'action ${parameters.eventId} du smart element ${smartElement.initid}`);
}
);
# Lire une valeur d'un Smart Field
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.addEventListener(
"actionClick",
{
name: "myActionClickListener",
check: function(smartElement) {
return smartElement.family.name === "DEVBILL";
}
},
function(event, smartElement, parameters) {
// en utilisant le contexte interne this
const smartFieldValue = this.getValue("bill_title");
// en utilisant les arguments
const otherFieldValue = smartElement.controller.getValue("bill_author");
}
);
# registerFunction
Enregistre une fonction recevant en argument un contrôleur restreint. Cette fonction doit être tilisée pour le mode
library
d'injection de JS.
# Arguments
key (String)
: Clé d'enregistrement de la fonctionfunction (Function)
: Fonction recevant en paramètre :controller (SmartElementController)
: Contrôleur restreint au rendu d'un Smart Element en particulier
# Retour
Pas de retour
# Exceptions
Pas d'exception.
# Exemple
Dans
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.registerFunction("myContactFunction", contactController => {
// **contactController** est un controleur restreint au rendu en cours
});
WARNING
La fonction enregistrée est appelée lors de chaque chargement de la vue du Smart Element. Ceci est à prendre en compte
lors de l'écriture du corps de la fonction afin d'éviter de possibles effet de bord.
Les évènements écoutés à l'aide de la fonction addEventListener
au sein de la fonction enregistrée, sont déchargés
automatiquement lors de la fermeture du Smart Element.
# setVerbose
Active ou désactive le mode verbose du contrôleur global. Dans ce mode, les actions effectués par le contrôleur global sont logguées.
# Arguments
enable (Boolean, default: false)
: Active (si enable est àtrue
) ou désactive (si enable est àfalse
) le mode verbose du contrôleur global.
# Retour
Pas de retour
# Exceptions
Pas d'exception.
# Exemple
# Activation du mode verbose du contrôleur global
import globalController from "@anakeen/user-interfaces/components/lib/AnkController";
globalController.setVerbose(true);