Les événements

Nuggets dispose de ses propres écouteurs et peut recevoir des événements.

La propagation des notifications est ainsi isolée et ne se mélange pas avec les évènements émis par le lecteur Storyline ou par le document HTML.

Évènements lecteur Storyline


Pour certaines fonctionnalités, Nuggets implémente une interface d'évènements pour reporter le comportement de certains éléments HTML du lecteur Storyline.

À la demande, Nuggets peut déclencher un évènement pour propager une notification lorsqu'un élément change. Une notification peut être émise :

  • lorsqu'une transition entre deux diapositives est effectuée ;
  • lorsque les sous-titres s'affichent, se rafraichissent ou s'effacent ;
  • lorsque la Lightbox est ouverte ou fermée.

Initialisation


Pour pouvoir recevoir des notifications concernant l'un de ces éléments, il est nécessaire d'initialiser pour chacun un observateur. Sans cela, même si vous attachez une fonction de rappel à un des écouteurs, il ne se passera rien.

JavaScript
// Initialisation pour écouter l'élément 'Diapositive'
storyline.watchSlide();

// Initialisation pour écouter l'élément 'Sous-titre'
storyline.watchCaption();

// Initialisation pour écouter l'élément 'Lightbox'
storyline.watchLightbox();

Dès lors, nous pouvons lier une fonction de rappel pour qu'elle soit invoquée lorsque la notification est émise :

JavaScript
const onSlideChanged = (event) => { /* instructions */ }
nuggets.addEventListener(STORYLINE_EVENTS.SLIDE_CHANGE,onSlideChanged);

const parseCaption = (event) => { /* instructions */ }
nuggets.addEventListener(STORYLINE_EVENTS.DISPLAY_CAPTION,parseCaption);


Passons maintenant en revue les événements pour chacun des observateurs. Tous les types d'événements sont contenus dans un seul objet STORYLINE_EVENTS.

Évènements Diapositive


Types Arguments Propagation
SLIDE_CHANGE 'onSlideChange' slideId Émis lorsque deux diapositives s'enchaînent.
SCENE_CHANGE 'onSceneChange' sceneId Lorsque deux diapositives s'enchaînent, émis lorsque elles ne sont pas sur la même scène.

Évènements Sous-titres


Types Arguments Propagation
DISPLAY_CAPTION 'displayCaption' - Émis lorsque un sous-titre apparait.
CHANGE_CAPTION 'changeCaption' - Émis lorsque deux sous-titres se suivent.
Si un temps blanc est présent entre deux sous-titres, ce sont les évéments REMOVE_CAPTION et DISPLAY_CAPTION, dans cet ordre, qui sont notifiés à la place.
REMOVE_CAPTION 'removeCaption' - Émis lorsque le sous-titre affiché disparaît.

Évènements Lightbox


Types Arguments Propagation
OPEN_LIGHTBOX
'openLightBox'
- Émis lorsque la Lightbox est ouverte.
CLOSE_LIGHTBOX
'closeLightBox'
- Émis lorsque la Lightbox est fermée.


Transfert de données


En permettant la création d'événements sur mesure avec des données spécifiques, la librairie offre une manière flexible et élégante de connecter les différentes partie d'une ou plusieurs fonctionnalités, tout en favorisant la modularité et la réutilisabilité du code. Cela contribue à réduire le couplage entre les différentes fonctionnalités qui constituent Nuggets, ainsi qu'avec le lecteur Storyline.

Les fonctionnalités peuvent communiquer de manière asynchrone sans avoir à connaître les détails internes des autres. Cela favorise une architecture modulaire et facilite la maintenance du code.

Lorsque Nuggets doit transmettre des données, la librairie passe automatiquement par un événement personnalisé CustomEvent. Les données sont alors encapsulées dans l'objet detail de l'événement.

JavaScript
// Pour envoyer des données
const data = { maVar: 'valeur' };
nuggets.dispatchEvent( 'typeEvent', data );

// Pour recevoir les données
const fonctionRappel = (event) => console.log(event.detail.maVar );
nuggets.addEventListener( 'typeEvent', fonctionRappel );