Lorsque l'on passe à la vidéo suivante, sa durée de lecture est réinitialisée.

This commit is contained in:
Fabrice PENHOËT 2022-01-18 17:36:40 +01:00
parent 56c852aca5
commit 3969bff238
3 changed files with 27 additions and 2 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "vCarousel", "name": "vCarousel",
"version": "1.0.0", "version": "1.0.1",
"description": "Video carousel, a new video appears when the previous one finishes playing.", "description": "Video carousel, a new video appears when the previous one finishes playing.",
"main": "./src/vCarousel.ts", "main": "./src/vCarousel.ts",
"scripts": { "scripts": {

View File

@ -117,6 +117,8 @@ export class vCarousel
nextHash=vCarousel._vContainers[nextOne].id; nextHash=vCarousel._vContainers[nextOne].id;
nextVContainer.style.display="block"; nextVContainer.style.display="block";
vCarousel._currentVideo=nextVideo; vCarousel._currentVideo=nextVideo;
// Remise à zéro de la vidéo suivante pour permettre sa lecture :
nextVideo.currentTime=0;
// On adapte l'ancre de l'url de manière à ce qu'elle soit cohérente avec la vidéo affichée. // On adapte l'ancre de l'url de manière à ce qu'elle soit cohérente avec la vidéo affichée.
// Attention car cela peut provoquer un déplacement dans la page pour atteindre l'ancre. // Attention car cela peut provoquer un déplacement dans la page pour atteindre l'ancre.
window.location.assign("#"+nextHash); window.location.assign("#"+nextHash);

View File

@ -149,7 +149,7 @@ describe("vCarousel", () =>
expect(vCarouselTest.currentVideo).toEqual(currentVideo); expect(vCarouselTest.currentVideo).toEqual(currentVideo);
expect(window.location.hash).toEqual("#video3"); expect(window.location.hash).toEqual("#video3");
}); });
it("Si cela est demandé, le carrousel doit reprendre au début après avoir parcouru toutes les vidéos.", () => it("Si cela est demandé, le carrousel doit reprendre au début après avoir parcouru toutes les vidéos.", () =>
{ {
vCarouselTest.vContainers=["video1","video2","video3"]; vCarouselTest.vContainers=["video1","video2","video3"];
@ -170,6 +170,29 @@ describe("vCarousel", () =>
expect(vCarouselTest.currentVideo).toEqual(currentVideo); expect(vCarouselTest.currentVideo).toEqual(currentVideo);
expect(window.location.hash).toEqual("#video1"); expect(window.location.hash).toEqual("#video1");
}); });
it("Lorsque l'on passe d'une vidéo à l'autre, la durée de lecture de la suivante doit être remise à zéro pour permettre sa lecture.", () =>
{
vCarouselTest.vContainers=["video1","video2","video3"];
vCarouselTest.noStop=true;
vCarouselTest.run();
let currentVideo=<HTMLMediaElement>document.querySelector("#video1 video");
let nextVideo=<HTMLMediaElement>document.querySelector("#video2 video");
nextVideo.currentTime=5;
currentVideo.dispatchEvent(new Event("ended"));
expect(nextVideo.currentTime).toEqual(0);
// Et ainsi de suite :
currentVideo=<HTMLMediaElement>document.querySelector("#video2 video");
nextVideo=<HTMLMediaElement>document.querySelector("#video3 video");
nextVideo.currentTime=3;
currentVideo.dispatchEvent(new Event("ended"));
expect(nextVideo.currentTime).toEqual(0);
// Retour sur la première :
currentVideo=<HTMLMediaElement>document.querySelector("#video3 video");
nextVideo=<HTMLMediaElement>document.querySelector("#video1 video");
currentVideo.dispatchEvent(new Event("ended"));
expect(nextVideo.currentTime).toEqual(0);
});
it("Doit demander le lancement des nouvelles vidéos affichées, si cela est demandé en option.", () => it("Doit demander le lancement des nouvelles vidéos affichées, si cela est demandé en option.", () =>
{ {