Module:Event countdown
Jump to navigation
Jump to search
Usage
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Examples
- Future event:
{{#invoke:Event countdown|countdown|2025|1|1}}
→ 187 days to go - Current event:
{{#invoke:Event countdown|countdown|2024|06|28}}
→ Live Event - Past event:
{{#invoke:Event countdown|countdown|2018|11|25}}
→ End of Event - "Month of May" event:
{{#invoke:Event countdown|countdown|2024|5|1|2024|5|31}}
→ End of Event - Unconfirmed event:
{{#invoke:Event countdown|countdown|text=Unconfirmed}}
→ Unconfirmed
local p = {}
function p.countdown(frame)
local year1 = tonumber(frame.args.year1 or frame.args[1])
local month1 = tonumber(frame.args.month1 or frame.args[2])
local day1 = tonumber(frame.args.day1 or frame.args[3])
local year2 = tonumber(frame.args.year2 or frame.args[4])
local month2 = tonumber(frame.args.month2 or frame.args[5])
local day2 = tonumber(frame.args.day2 or frame.args[6])
local endtext = frame.args.endtext or "End of Event"
local livetext = frame.args.livetext or "Live Event"
local text = frame.args.text
local time1 = nil
local time2 = nil
local bgcolor = "#666666"
local textcolor = "#DDDDDD"
local span = mw.html.create("span")
span:css{
["display"] = "inline-block",
["font-weight"] = "bold",
["font-style"] = "italic",
["padding-left"] = "0.5em",
["padding-right"] = "0.5em",
["margin-bottom"] = "0.4em"
}
if text ~= nil or day1 == nil or month1 == nil or year1 == nil then
span
:css{background = bgcolor, color = textcolor}
:wikitext(text or "Invalid input")
return tostring(span)
end
time1 = frame:expandTemplate{title = "Age in days", args = {
year2 = year1,
month2 = month1,
day2 = day1
}}
time1 = tonumber(time1:gsub("−", "-") .. "")
if day2 == nil or month2 == nil or year2 == nil then
time2 = time1
else
time2 = frame:expandTemplate{title = "Age in days", args = {
year2 = year2,
month2 = month2,
day2 = day2
}}
time2 = tonumber(time2:gsub("−", "-") .. "")
end
if time1 > 0 then
bgcolor = "#C66320"
text = time1 .. " day"
if time1 > 1 then text = text .. "s" end
text = text .. " to go"
elseif time2 < 0 then
bgcolor = "#AA1111"
text = endtext
else
bgcolor = "#00B000"
text = livetext
end
textcolor = "#FFFFFF"
span
:css{background = bgcolor, color = textcolor}
:wikitext(text)
return tostring(span)
end
return p