Module:Sandbox/Gonnym/episodewikidata
Appearance
local getArgs = require('Module:Arguments').getArgs
local getWikiDataValue = require('Module:WikidataIB/sandbox')._getValue
p = {}
local function getPreviousEpisodeFromWikiData()
return getWikiDataValue({"P155", fetchwikidata = "ALL", onlysourced = "no"})
end
local function getNextEpisodeFromWikiData()
return getWikiDataValue({"P156", fetchwikidata = "ALL", onlysourced = "no"})
end
function p.getPreviousEpisodeFromWikiData()
return getWikiDataValue({"P155", fetchwikidata = "ALL", onlysourced = "no", qid = "Q20785929"})
end
function p.getNextEpisodeFromWikiData()
return getWikiDataValue({"P156", fetchwikidata = "ALL", onlysourced = "no", qid = "Q20785929"})
end
local function getFormattedPreviousEpisodeLink(args)
local previousEpisodeRaw = args.rprev or args.RPrev
local previousEpisode = args.prev or getPreviousEpisodeFromWikiData()
local previousEpisodeLink
local hasLink = true
if (previousEpisodeRaw) then
previousEpisodeLink = previousEpisodeRaw
elseif (previousEpisode) then
previousEpisodeLink = '"' .. previousEpisode .. '"'
else
previousEpisodeLink = "—"
hasLink = false
end
return previousEpisodeLink, hasLink
end
local function getFormattedNextEpisodeLink(args)
local nextEpisodeRaw = args.rnext or args.RNext
local nextEpisode = args.next or getNextEpisodeFromWikiData()
local nextEpisodeLink
local hasLink = true
if (nextEpisodeRaw) then
nextEpisodeLink = nextEpisodeRaw
elseif (nextEpisode) then
nextEpisodeLink = '"' .. nextEpisode .. '"'
else
nextEpisodeLink = "—"
hasLink = false
end
return nextEpisodeLink, hasLink
end
function p.getEpisodeChronology(frame)
local args = getArgs(frame)
local previousEpisodeLink, hasPreviousLink = getFormattedPreviousEpisodeLink(args)
local nextEpisodeLink, hasNextLink = getFormattedNextEpisodeLink(args)
if (hasPreviousLink or hasNextLink) then
-- return frame:expandTemplate{title = 'succession links', args = {left = previousEpisodeLink, right=nextEpisodeLink}}
return '<div style="width:100%;"><div style= style="width: 50%; padding: 0.2em 0.1em 0.2em 0; text-align: center;" | ← \'\'\'Previous\'\'\'<br />' .. previousEpisodeLink .. '</div><div style= style="width: 50%; padding: 0.2em 0 0.2em 0.1em; text-align: center;" | \'\'\'Next\'\'\' →<br />' .. nextEpisodeLink ..'</div></div>'
else
return nil
end
end
function p.getHeaderTitle(frame)
local args = getArgs(frame)
local previousEpisode = args.prev or args.rprev or args.RPrev or getPreviousEpisodeFromWikiData()
local nextEpisode = args.next or args.rnext or args.RNext or getNextEpisodeFromWikiData()
if (previousEpisode or nextEpisode) then
return "Episode chronology"
end
end
return p