Module:On This Day: Difference between revisions
From Zelda Wiki, the Zelda encyclopedia
no edit summary
PhantomCaleb (talk | contribs) No edit summary |
PhantomCaleb (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local h = {} | local h = {} | ||
local | |||
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 = | 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 | 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 |