Skip to content

Instantly share code, notes, and snippets.

@alfahami
Created March 11, 2020 18:05
Show Gist options
  • Save alfahami/c5383552482ec77653e263c89ebcf155 to your computer and use it in GitHub Desktop.
Save alfahami/c5383552482ec77653e263c89ebcf155 to your computer and use it in GitHub Desktop.
countdown timer
(function($) {
$.fn.countdown = function(options, callback) {
//custom 'this' selector
thisEl = $(this);
// array of custom settings
var settings = {
date: null,
format: null
};
// append the settings array to options
if (options) {
$.extend(settings, options);
}
//create the countdown processing function
function countdown_proc() {
var eventDate = Date.parse(settings.date) / 1000;
var currentDate = Math.floor($.now() / 1000);
if (eventDate <= currentDate) {
callback.call(this);
clearInterval(interval);
}
var seconds = eventDate - currentDate;
var days = Math.floor(seconds / (60 * 60 * 24));
//calculate the number of days
seconds -= days * 60 * 60 * 24;
//update the seconds variable with number of days removed
var hours = Math.floor(seconds / (60 * 60));
seconds -= hours * 60 * 60;
//update the seconds variable with number of hours removed
var minutes = Math.floor(seconds / 60);
seconds -= minutes * 60;
//update the seconds variable with number of minutes removed
//conditional statements
if (days == 1) {
thisEl.find(".timeRefDays").text("day");
} else {
thisEl.find(".timeRefDays").text("jours");
}
if (hours == 1) {
thisEl.find(".timeRefHours").text("hour");
} else {
thisEl.find(".timeRefHours").text("heures");
}
if (minutes == 1) {
thisEl.find(".timeRefMinutes").text("minute");
} else {
thisEl.find(".timeRefMinutes").text("minutes");
}
if (seconds == 1) {
thisEl.find(".timeRefSeconds").text("second");
} else {
thisEl.find(".timeRefSeconds").text("secondes");
}
//logic for the two_digits ON setting
if (settings.format == "on") {
days = String(days).length >= 2 ? days : "0" + days;
hours = String(hours).length >= 2 ? hours : "0" + hours;
minutes = String(minutes).length >= 2 ? minutes : "0" + minutes;
seconds = String(seconds).length >= 2 ? seconds : "0" + seconds;
}
//update the countdown's html values.
thisEl.find(".days").text(days);
thisEl.find(".hours").text(hours);
thisEl.find(".minutes").text(minutes);
thisEl.find(".seconds").text(seconds);
}
//run the function
countdown_proc();
//loop the function
interval = setInterval(countdown_proc, 1000);
};
})(jQuery);
//Provide the plugin settings
$("#countdown").countdown(
{
//The countdown end date
date: "13 April 2020 00:00:00",
// on (03:07:52) | off (3:7:52) - two_digits set to ON maintains layout consistency
format: "on"
},
function() {
// This will run when the countdown ends
alert("We're Out Now");
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment