2021-04-29 17:40:20 +02:00
|
|
|
// Exemple d'utilisation de vCarousel avec 3 vidéos, proposées via un carrousel d'images Flickity
|
2022-01-18 17:58:25 +01:00
|
|
|
const Flickity=require("flickity");
|
2021-04-08 12:41:47 +02:00
|
|
|
import { vCarousel } from "./vCarousel";
|
|
|
|
|
|
|
|
// Cette fonction sert à synchroniser si besoin l'image sélectionnée dans le carrousel Flickity avec le hash de l'url.
|
|
|
|
const selectFlickityForHash = (flickityCarousel:any, urlHash:string) : void =>
|
|
|
|
{
|
|
|
|
let nb=0, find=false;
|
2022-01-18 17:58:25 +01:00
|
|
|
// On parcourt les items du carrousel pour trouver celui contenant le lien vers ce hash :
|
|
|
|
for(const cel of flickityCarousel.cells)
|
2021-04-08 12:41:47 +02:00
|
|
|
{
|
2022-01-18 17:58:25 +01:00
|
|
|
const childrens=cel.element.childNodes;
|
|
|
|
for (let i=0, c=childrens.length; i < c; i++)
|
2021-04-08 12:41:47 +02:00
|
|
|
{
|
|
|
|
if (childrens[i].nodeType === Node.ELEMENT_NODE)
|
|
|
|
{
|
2022-01-18 17:58:25 +01:00
|
|
|
if(childrens[i].hash !== undefined && childrens[i].hash === urlHash)
|
2021-04-08 12:41:47 +02:00
|
|
|
{
|
|
|
|
flickityCarousel.select(nb);// API Flickity : https://flickity.metafizzy.co/api.html
|
|
|
|
find=true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
nb++;
|
|
|
|
}
|
2022-01-18 17:58:25 +01:00
|
|
|
if(find === false)
|
2021-04-08 12:41:47 +02:00
|
|
|
console.error("L'ancre fournie par l'url n'a pas été trouvée dans le carrousel Flickity.");
|
|
|
|
}
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
2021-04-29 17:40:20 +02:00
|
|
|
// Initialisation Flickity :
|
2022-01-18 17:58:25 +01:00
|
|
|
const imgCarousel=document.querySelector(".img-carousel");
|
|
|
|
const flktyCarousel=new Flickity(imgCarousel,
|
2021-04-08 12:41:47 +02:00
|
|
|
{
|
|
|
|
// options : https://flickity.metafizzy.co/options.html
|
|
|
|
accessibility: true,
|
|
|
|
cellAlign: "center",
|
|
|
|
contain: true,
|
|
|
|
rightToLeft: true,
|
|
|
|
wrapAround: true,
|
|
|
|
});
|
|
|
|
|
2021-04-29 17:40:20 +02:00
|
|
|
// Initialisation vCarousel :
|
2021-04-08 12:41:47 +02:00
|
|
|
const videosContainers=["vFunanbule", "vForgeron", "vCircuit"];
|
2021-04-29 17:40:20 +02:00
|
|
|
const testvCarousel=new vCarousel();
|
|
|
|
testvCarousel.vContainers=videosContainers;
|
|
|
|
|
2021-04-08 12:41:47 +02:00
|
|
|
// Si un id est fourni par l'url, on affiche cette vidéo en premier :
|
2022-01-18 17:58:25 +01:00
|
|
|
if(window.location.hash !== undefined && window.location.hash !=="")
|
2021-04-08 12:41:47 +02:00
|
|
|
{
|
2021-04-29 17:40:20 +02:00
|
|
|
testvCarousel.firstVideoId=window.location.hash.replace("#","");
|
2021-04-08 12:41:47 +02:00
|
|
|
selectFlickityForHash(flktyCarousel, location.hash);
|
|
|
|
}
|
|
|
|
else
|
2021-04-29 17:40:20 +02:00
|
|
|
testvCarousel.firstVideoId="";// dans cet exemple, on cache toutes les vidéos avant que l'utilisateur ne fasse son choix dans le carrousel d'images.
|
|
|
|
testvCarousel.run();
|
2021-04-08 12:41:47 +02:00
|
|
|
|
|
|
|
// Lorsque l'utilisateur clique sur une des images pour sélectionner une vidéo à afficher, on actualise l'affichage :
|
|
|
|
let selectLinks=document.querySelectorAll(".selectVideo");
|
|
|
|
for (let i = 0; i < selectLinks.length; i++)
|
|
|
|
{
|
|
|
|
let link=<HTMLAnchorElement>selectLinks[i];
|
|
|
|
link.addEventListener("click", function(e)
|
|
|
|
{
|
2021-04-29 17:40:20 +02:00
|
|
|
testvCarousel.firstVideoId=link.hash.replace("#","");
|
|
|
|
// ici on demande la lecture automatique de toutes les vidéos :
|
|
|
|
testvCarousel.playFirstVideo=true;
|
2021-05-06 12:42:53 +02:00
|
|
|
testvCarousel.playNextVideos=true;
|
2022-01-18 17:58:25 +01:00
|
|
|
testvCarousel.noStop=true;
|
2021-04-29 17:40:20 +02:00
|
|
|
testvCarousel.run();
|
2021-04-08 12:41:47 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
// De même quand le hash change, on adapte l'item sélectionné de flickity
|
|
|
|
// Ceci permet de suivre le parcours des vidéos par vCarousel
|
|
|
|
window.addEventListener('hashchange', function()
|
|
|
|
{
|
|
|
|
selectFlickityForHash(flktyCarousel, location.hash);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
catch(e)
|
|
|
|
{
|
|
|
|
console.error(e);
|
|
|
|
}
|