Introduction
Le plugin WordPress offre un objet Javascript permettant d'effectuer des actions "client/serveur" (AJAX). Le but est de fournir l'ensemble des fonctions permettant de gérer la recherche ainsi que le système de favoris.
Détails de l'objet Javascript
L'objet Javascript global est "realVuuPlugin". Il offre les sous objets suivants :
Contient toutes les méthodes permettant d'obtenir les résultats de recherche, les affecter à la zone de résultats (liste) et à la carte interactive.
do()
Effectue la recherche avec les critères sélectionnés ainsi que le tri défini. Cette méthode doit être lancée à l'ouverture de la page de recherche ainsi qu'au clic du bouton "Rechercher".
Cette méthode remplie à la fois la première page de résultats (la liste) ainsi que la carte interactive.
La carte et la liste sont affectées par 2 recherches indépendantes effectuées simultanément par cette fonction. L'admin du plugin WP détermine le type de recherche à effectuer dans les 2 cas. Par exemple, on défini le type de recherche pour la carte à "Project" et on défini le type de recherche pour la liste à "Building" ou "Unit".
show(page)
Effectue une recherche partielle, c'est à dire aller récupérer les résultats pour une page donnée, pour affichage dans la liste des résultats. N'affecte pas la carte interactive.
showMore()
Effectue une recherche partielle, c'est à dire aller récupérer les prochains résultats, pour affichage dans la liste des résultats. N'affecte pas la carte interactive.
sort(field, direction)
Relance une nouvelle recherche en changeant l'ordre de tri des résultats, donc repositionne la pagination sur la page 1 et affecte la liste de résultats. N'affecte pas la carte interactive.
Contient des variables stockant certaines valeurs pouvant être utilisées dans des appels JavaScript par la suite, par exemple pour créer un contrôle de slider pour déterminer un "range" de prix.
Ces variables sont affectées par le plugin au chargement de la page et sont donc disponibles partout dans le thème et à n'importe quel moment.
defaultBuyPriceMin, defaultBuyPriceMax, defaultRentalPriceMin, defaultRentalPriceMax
Ces variables sont affectées par le plugin lors d'une recherche et sont donc disponibles partout dans le thème et à n'importe quel moment.
buyPriceMin, buyPriceMax, rentalPriceMin, rentalPriceMax
Contient toutes les méthodes permettant d'obtenir le détail d'une visite et ses favoris, les enregistrer et terminer une visite (provoquant l'envoi d'une brochure personnalisée au visiteur).
complete()
Permet d'envoyer les informations du formulaire (nom, prénom, courriel et téléphone) ainsi que la visite à l'API RealVuu afin de produire une brochure personnalisée contenant les favoris et de l'envoyer au visiteur.
Cette méthode détruit par la suite l'objet contenant la visite dans le LocalStorage et appelle la méthode ensure() pour en créer une nouvelle.
refresh(visit?)
Appelle l'API RealVuu afin de récupérer le contenu de la visite afin de la restocker dans le LocalStorage et provoquer la mise à jour des éléments statiques comme le span contenant le nombre de favoris ainsi que le div contenant la liste des favoris.
Si un objet visit est passé en paramètre (c'est le cas quand cette méthode est appelée par les fonctions de gestion des favoris), aucun appel n'est fait au backend, on ne fait que lancer le rafraichissement du span et du div avec l'objet visit reçu.
La méthode refresh() doit être appelée au chargement de la page si le visitId dans le LocalStorage est différent du visitId dans le cookie.
ensure()
S'assure qu'une visite a bien été créée. Cette méthode doit être lancée au chargement de chaque page.
Si une visite est présente dans le LocalStorage, la méthode n'effectue rien tout simplement.
Si aucune visite n'est présente, elle appelle l'API RealVuu afin de créer une nouvelle visite et stocke l'objet de retour, dans le LocalStorage.
getId()
Permet de récupérer à partir du LocalStorage, le ID de la visite courante afin de pouvoir le passer aux fonctions nécessitant le visitId.
Contient toutes les méthodes et propriétés permettant de gérer les favoris.
Ces méthodes sont responsables d'éviter qu'un utilisateur clique frénétiquement sur les coeurs afin de "briser" le système de favoris. Les méthodes n'effectuent simplement rien si elles n'ont pas complétés. Par exemple, tant qu'une méthode addUnit, removeUnit ou toggleUnit est en train de s'exécuter, un appel à l'une de ces fonctions ne produira aucun résultat.
Toutes les méthodes suivantes se terminent toujours par l'appel de la fonction realVuuPlugin.visit.refresh(visit). L'objet visit à passer à cette méthode est l'objet de retour de l'API RealVuu après un ajout ou un retrait de favoris.
Unités
addUnit(unitId, htmlElementId)
Permet d'ajouter une unité en favoris. Si l'ajout se passe avec succès, la classe realvuu-visit-favorites-active sera ajoutée à l'élément HTML représenté par le ID en 2e paramètre. Si l'ajout échoue, une information sera loguée dans la console et rien ne se passera à l'écran.
removeUnit(unitId, htmlElementId)
Permet de retirer une unité des favoris. Si l'ajout se passe avec succès, la classe realvuu-visit-favorites-active sera retirée de l'élément HTML représenté par le ID en 2e paramètre. Si l'ajout échoue, une information sera loguée dans la console et rien ne se passera à l'écran.
toggleUnit(unitId, htmlElementId)
Permet d'ajouter ou retirer une unité des favoris, sans avoir à ce soucier de si elle est déjà présente ou non. La fonction s'occupe de déterminer cela en consultant ses favoris locaux.
Cette fonction vérifie ne fait qu'appeler addUnit ou removeUnit après avoir vérifié la présence de l'unité dans les favoris.
Bâtiments
addBuilding(buildingId, htmlElementId)
Permet d'ajouter un bâtiment en favoris. Si l'ajout se passe avec succès, la classe realvuu-visit-favorites-active sera ajoutée à l'élément HTML représenté par le ID en 2e paramètre. Si l'ajout échoue, une information sera loguée dans la console et rien ne se passera à l'écran.
removeBuilding(buildingId, htmlElementId)
Permet de retirer un bâtiment des favoris. Si l'ajout se passe avec succès, la classe realvuu-visit-favorites-active sera retirée de l'élément HTML représenté par le ID en 2e paramètre. Si l'ajout échoue, une information sera loguée dans la console et rien ne se passera à l'écran.
toggleBuilding(buildingId, htmlElementId)
Permet d'ajouter ou retirer un bâtiment des favoris, sans avoir à ce soucier de si elle est déjà présente ou non. La fonction s'occupe de déterminer cela en consultant ses favoris locaux.
Cette fonction vérifie ne fait qu'appeler addBuilding ou removeBuilding après avoir vérifié la présence de l'unité dans les favoris.
Structure du Local Storage
Le Local Storage du navigateur est utilisé pour stocker les objets nécessaires au bon fonctionnement du plugin.
Objet "visit" provenant du backend. L'API JavaScript n'a pas à altérer la structure de l'objet reçu, elle doit simplement le stocker tel quel.
