User:ToxiBoi/LiveCountdown.js: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
[v1.2] Fix live
m [v1.3] Error if NaN
Line 6: Line 6:
now = new Date().getTime();
now = new Date().getTime();
distance = endDate - now;
distance = endDate - now;
// Time calculations for days, hours, minutes and seconds (copied from W3Schools)
if (isNaN(distance)) {
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
// Something went terribly wrong with parsing the dates.
var hours = Math.floor(
// Display error
(distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
index.innerHTML = '<strong class="error">[LiveCountdown] Parsing date from "'+ index.getAttribute("data-end") +'" returned NaN, check parameters "month/day/year/customdate"</strong>';
);
} else {
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
// Time calculations for days, hours, minutes and seconds (copied from W3Schools)
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
var days = Math.floor(distance / (1000 * 60 * 60 * 24));

// Display the result
var hours = Math.floor(
(distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
index.innerHTML =
);
"There are <b>" +
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
days +
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
"</b> days, <b>" +
// Display the result
hours +
index.innerHTML =
"</b> hours, <b>" +
minutes +
"There are <b>" +
"</b> minutes, and <b>" +
days +
seconds +
"</b> days, <b>" +
"</b> seconds until " +
hours +
index.getAttribute("data-event") +
"</b> hours, <b>" +
".";
minutes +
"</b> minutes, and <b>" +
seconds +
"</b> seconds until " +
index.getAttribute("data-event") +
".";
}


// If the count down is finished, refresh
// If the count down is finished, refresh

Revision as of 04:30, 17 April 2020

var MainLoop = function (index) {
  var RefreshingAlready = false;
  setInterval(function () {
    // Setup again
    endDate = new Date(index.getAttribute("data-end")).getTime();
    now = new Date().getTime();
    distance = endDate - now;
	
	if (isNaN(distance)) {
		// Something went terribly wrong with parsing the dates.
		// Display error
		index.innerHTML = '<strong class="error">[LiveCountdown] Parsing date from "'+ index.getAttribute("data-end") +'" returned NaN, check parameters "month/day/year/customdate"</strong>';
	} else {
		// Time calculations for days, hours, minutes and seconds (copied from W3Schools)
	    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
	    var hours = Math.floor(
	      (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
	    );
	    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
	    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
		// Display the result
	    index.innerHTML =
	      "There are <b>" +
	      days +
	      "</b> days, <b>" +
	      hours +
	      "</b> hours, <b>" +
	      minutes +
	      "</b> minutes, and <b>" +
	      seconds +
	      "</b> seconds until " +
	      index.getAttribute("data-event") +
	      ".";
	}

    // If the count down is finished, refresh
    if (distance < 0) {
      index.innerHTML = "Countdown expired, refreshing...";
      if (!RefreshingAlready) {
        document.location.reload();
        RefreshingAlready = true;
      }
    }
  }, 1000);
};
var counts = document.getElementsByClassName("toxicountdown");
if (counts.length > 0) {
  for (var i = 0; i < counts.length; i++) {
    counts[i].innerHTML = "Loading countdown...";
    var endDate = new Date(counts[i].getAttribute("data-end")).getTime();
    var now = new Date().getTime();
    var distance = endDate - now;

    if (distance < 0) {
      counts[i].innerHTML = "The countdown finished.";
    } else {
      MainLoop(counts[i]);
    }
  }
} else {
  console.log("[LiveCountdown] No countdown widgets detected.");
}