Files
ludikevent_crm/assets/tools/UtmEvent.js
Serreau Jovann afa6133907 ```
 feat(Product.php): Ajoute ProductDoc pour gérer les documents.
 feat(Contrats.php): Gère les fichiers du contrat via VichUploader.
 feat(templates): Crée template mail signature contrat.
 feat(SignatureController): Ajoute la signature du contrat.
 feat(ContratsController): Crée contrat depuis devis et liste contrats.
 feat(Client): Crée soumission contrat Docuseal.
 feat(DevisPdfService): Corrige l'assurance RC Pro.
 feat(.env): Ajoute CONTRAT_BASEURL.
 feat(ProductDocType): Crée formulaire pour les documents produit.
 feat(contrats/list.twig): Liste et actions pour les contrats.
 feat(UtmEvent.js): Track click document produit.
 feat(ContratEvent.php): Crée event pour envoi contrat.
 feat(admin.js): Initialise la recherche dynamique des contrats.
 feat(ContratPdfService): Génère le PDF du contrat DocuSeal.
 feat(products/add.twig): Ajoute gestion des documents produits.
 feat(ContratController): Crée controlleur contrat.
 feat(ContratSubscriber.php): Envoi du contrat par email.
 feat(reservation/produit.twig): Affiche les documents produit.
 feat(ProductController.php): Refactorisation et ajout des documents.
```
2026-01-22 15:58:57 +01:00

69 lines
2.4 KiB
JavaScript

export class UtmAccount extends HTMLElement {
connectedCallback() {
if (typeof umami === 'undefined') {
console.warn('Umami script non détecté.');
return;
}
const umamiScript = document.querySelector('script[data-website-id]');
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
umami.identify('user_'+this.getAttribute('id'), { name: this.getAttribute('name'), email: this.getAttribute('email') });
}
}
export class UtmEvent extends HTMLElement {
connectedCallback() {
// On attend un court instant pour s'assurer qu'umami est chargé
// ou on vérifie s'il existe déjà
if (typeof umami === 'undefined') {
console.warn('Umami script non détecté.');
return;
}
const event = this.getAttribute('event');
const dataRaw = this.getAttribute('data');
// Extraction dynamique du website-id depuis le script existant
const umamiScript = document.querySelector('script[data-website-id]');
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
if (!websiteId) {
console.error('Impossible de trouver le data-website-id umami.');
return;
}
try {
if (event == "click_pdf_product") {
const data = JSON.parse(dataRaw);
umami.track({
website: websiteId,
name:'Téléchargement document produit',
data: data
});
}
if (event === "view_catalogue") {
umami.track('Affichage du catalogue');
}
if (event === "view_home") {
umami.track('Affichage de la page accueil');
}
if (event === "view_contact") {
umami.track('Affichage du page contact');
}
if (event === "view_product" && dataRaw) {
const data = JSON.parse(dataRaw);
// Umami track accepte soit un nom seul,
// soit un objet complet pour des propriétés personnalisées
umami.track({
website: websiteId,
name:'Affichage produit',
data: data
});
}
} catch (e) {
console.error('Erreur lors du tracking Umami:', e);
}
}
}