Anonymous

Module:On This Day: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
no edit summary
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}
local h = {}
local h = {}
local cargo = mw.ext.cargo
 
local utilsCargo = require("Module:UtilsCargo")
local utilsLayout = require("Module:UtilsLayout")
local utilsString = require("Module:UtilsString")
local utilsString = require("Module:UtilsString")
local utilsTable = require("Module:UtilsTable")
local utilsVar = require("Module:UtilsVar")


function p._Main(frame)
function p._Main(frame)
local entry = h.GetEntryForToday()
local entry = h.GetEntryForToday()
return h.DisplaySection(entry)
return h.DisplaySection(entry)
end
function p.AddToPreview(frame)
local args = frame:getParent().args
utilsVar.add("entries", args)
end
function p.Preview(frame)
local entries = utilsVar.get("entries")
local eventsByDate = utilsTable.keyBy(entries, function(entry)
return string.sub(entry.date, 6)
end)
local calendar = {
{"January", 31},
{"February", 29},
{"March", 31},
{"April", 30},
{"May", 31},
{"June", 30},
{"July", 31},
{"August", 31},
{"September", 30},
{"October", 31},
{"November", 30},
{"December", 31},
}
local rows = {}
for i, month in ipairs(calendar) do
for day = 1, month[2] do
local d = h.toString(day)
local m = h.toString(i)
local date = d.."-"..m
local event = eventsByDate[date]
table.insert(rows, {
id = date,
cells = {
{
sortValue = date,
content = month[1].." "..day,
},
event and event.date or "",
event and h.DisplaySection(event) or ""
},
})
end
end
local wikitable = utilsLayout.table({
headers = {"Day", "Date", "On This Day"},
rows = rows,
sortable = true,
})
local styles = frame:extensionTag({
name = "templatestyles",
args = { src = "Template:Main Page Infoblocks/Styles.css" }
})
return styles..wikitable
end
function h.toString(num)
if num < 10 then
return "0"..num
else
return tostring(num)
end
end
end


function h.GetEntryForToday()
function h.GetEntryForToday()
local formattedDate = os.date("%m-%d")
local formattedDate = os.date("%m-%d")
local entries = cargo.query("OnThisDay", "date, title, filename, text, link", {})
local entries = utilsCargo.query("OnThisDay", "date, title, filename, text, link", {})
local todayEntries = {}
local todayEntries = {}
Line 25: Line 93:
local result = ""
local result = ""
local header = "On this day"
local header = "On this day"
if not utilsString.isEmpty(entry) then
if entry then
header = header .. ", " ..  (os.date("%Y") - tonumber(string.sub(entry["date"], 1, 4))) .. " years ago..."
header = header .. ", " ..  (os.date("%Y") - tonumber(string.sub(entry["date"], 1, 4))) .. " years ago..."
else
else
Line 75: Line 143:
return tostring(html)
return tostring(html)
end
end
p.Templates = {
["On This Day"] = {},
["On This Day/Store"] = {},
}


return p
return p