Module:CountdownBanner
From 20R1
Documentation for this module may be created at Module:CountdownBanner/doc
local p = {}
function p.show(frame)
local currentTime = os.time()
local soonest = nil
local soonestDate = nil
-- Query all events with a start date in the future
local events = frame:getParent().args.events or mw.smw.ask({
"[[Category:Events]]",
"[[Event Date::>" .. os.date("!%Y-%m-%d", currentTime) .. "]]",
"?Event Date",
"?Event Name",
"?Event Location",
"?Event Flyer",
"sort=Event Date",
"order=asc",
"limit=1"
})
if events and events[1] then
soonest = events[1]
soonestDate = soonest["Event Date"]
end
if not soonest then
return "<div style='background:#b22234;color:white;padding:20px;text-align:center;font-size:18px;'>No upcoming events scheduled</div>" end
local eventName = soonest["Event Name"] or "Upcoming Lions Event"
local location = soonest["Event Location"] or ""
local flyer = soonest["Event Flyer"] or ""
local banner = "<div style='background:#003366;color:white;padding:25px;text-align:center;font-size:24px;font-weight:bold;'>"
banner = banner .. "Next District Event<br/>"
banner = banner .. "<span style='font size='+3'>" .. eventName .. "</span><br/>"
banner = banner .. location .. "<br/>"
banner = banner .. "<span id='countdown' data-date='" .. soonestDate .. "'></span>"
if flyer ~= "" then
banner = banner .. "<br/><a href='" .. flyer .. "' target='_blank'><img src='" .. flyer .. "' style='height:200px;margin-top:15px;border:3px solid white;'/></a>"
end
banner = banner .. "</div>"
banner = banner .. [[
<script>
var countDown = new Date(document.getElementById("countdown").getAttribute("data-date")).getTime();
var x = setInterval(function() {
var now = new Date().getTime();
var distance = countDown - now;
var days = Math.floor(distance / 86400000);
var hours = Math.floor((distance % 86400000) / 3600000);
var minutes = Math.floor((distance % 3600000) / 60000);
document.getElementById("countdown").innerHTML = days + " days " + hours + " hrs " + minutes + " min until start";
if (distance < 0) clearInterval(x), document.getElementById("countdown").innerHTML = "HAPPENING NOW!";
}, 60000);
</script>]]
return banner
end
return p
