.. Authors :
.. mviewer team
.. _customlayertemplate:
Custom layer et manipulation des templates Mustache
###################################################
.. warning::
Niveau nécessaire : Avancé
Cette section vous permettra de :
* comprendre le fonctionnement technique des templates dans mviewer
* être en mesure d'adapter un custom layer pour manipuler et personnaliser le template
* être autonome sur la correction des erreurs entre le custom layer et le template Mustache
Prérequis
----------
- Connaissances en JavaScript
- Maîtriser le fonctionnement des ``custom layer`` et des templates
- Connaître le fonctionnement de ``Mustache.js``
Des sections de la documentation sont dédiées à ces thématiques si vous avez besoin d'en savoir plus.
Voici un `rappel sur Mustache.js `_.
Rappels sur le fonctionnement des templates
--------------------------------------------
Les templates `Mustache `_ (format .mst) permettent d'afficher de façon standard ou personnalisée les informations d'une entité géographique visible sur la carte.
L'utilisateur cliquera alors sur la carte pour avoir des informations sur l'entité ciblée.
Au clic, `le code mviewer `_ réalise une requête (`getFeatureInfo `_) vers le serveur cartographique utilisé (ex. geoserver) afin d'interroger la couche et obtenir les informations sur les entités localisées sous le clic.
.. note::
Les templates utilisés sont localisés dans le `fichier mviewer/js/templates.js `_.
Si le résultat de la requête contient bien des informations à afficher, alors les informations seront intégrées par `ce code mviewer `_ dans le template à droite (right-panel) ou en bas (bottom-panel) au format HTML. C'est via la librairie Mustache.js que nous obtenons du HTML à partir d'un template (.mst) et d'information JSON.
.. image:: ../_images/develop/applytemplate.png
:alt: schema apply template
:align: center
:width: 500
Limite avec un custom layer
----------------------------
Il est possible que le template à afficher se base sur des informations (``JSON``) qui ne sont pas fournies par les informations fournies par le serveur cartographique.
C'est le cas par exemple si vous récupérez des données statistiques et que vous souhaitez afficher des données agrégées ou calculées.
Vous rencontrerez ce problème si vous utilisez une représentation type cluster comme `ici `_.
Vous devrez donc organiser avec le JavaScript les informations ``JSON`` à fournir au template .mst afin de l'afficher correctement.
Pour réaliser cette manipulation de données et préparer le ``JSON`` à fournir au template, vous pouvez ajouter du JavaScript dans le template via la balise HTML