Browse Source

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

master
Fabrice PENHOËT 4 months ago
parent
commit
3969bff238
  1. 2
      package.json
  2. 2
      src/vCarousel.ts
  3. 25
      tests/vCarouselSpec.ts

2
package.json

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

2
src/vCarousel.ts

@ -117,6 +117,8 @@ export class vCarousel
nextHash=vCarousel._vContainers[nextOne].id;
nextVContainer.style.display="block";
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.
// Attention car cela peut provoquer un déplacement dans la page pour atteindre l'ancre.
window.location.assign("#"+nextHash);

25
tests/vCarouselSpec.ts

@ -149,7 +149,7 @@ describe("vCarousel", () =>
expect(vCarouselTest.currentVideo).toEqual(currentVideo);
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.", () =>
{
vCarouselTest.vContainers=["video1","video2","video3"];
@ -170,6 +170,29 @@ describe("vCarousel", () =>
expect(vCarouselTest.currentVideo).toEqual(currentVideo);
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.", () =>
{

Loading…
Cancel
Save