FlipClock icon indicating copy to clipboard operation
FlipClock copied to clipboard

stopAt attribute does not work for countdowns

Open simeneilevstjonn opened this issue 3 years ago • 2 comments

If the stopAt attribute is present in a countdown instance, it will immediately stop. This is likely because the shouldStop method looks at the value of the clock face, which itself is counting down from the originalValue, which is the wanted stop time for a countdown. This means that the stopAt time always will be greater than the face value, thus causing shouldStop to return true.

simeneilevstjonn avatar Apr 05 '21 15:04 simeneilevstjonn

Can you provide any reproduced cases?

I'm using the snippets for countdown, it's working fine for 2 seconds countdown to 0

` function date(offset = 0) { return new Date(new Date().setSeconds(new Date().getSeconds() + offset)); }

let clock = new FlipClock(el, () => date(2), { face: 'MinuteCounter', autoStart: true, countdown: true, stopAt: () => date(0), }); `

ericchan3721 avatar Apr 13 '21 03:04 ericchan3721

I have tried

const clock = new FlipClock(elem, new Date(new Date().getTime()+5000), {
        face: "DayCounter",
        countdown: true,
        stopAt: new Date(new Date().getTime()+5000)
});

and

const clock = new FlipClock(elem, new Date(new Date().getTime()+5000), {
      face: "DayCounter",
      countdown: true,
      stopAt: 0
 });

Both of them stopped immediately. After having seen your code, I tried:

const clock = new FlipClock(elem, new Date(new Date().getTime()+5000), {
    face: "DayCounter",
    countdown: true,
    stopAt: new Date()
});

This did work, but it is rather counter-intuitive. When it is named "stopAt", it makes the most sense that it is the date or face value when it stops, just like it is for non-countdowns.

simeneilevstjonn avatar Apr 13 '21 05:04 simeneilevstjonn