Module:Navbox timeline: Difference between revisions
AZMindroma (talk | contribs) No edit summary Tag: Reverted |
AZMindroma (talk | contribs) No edit summary Tag: Manual revert |
||
| Line 5: | Line 5: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local p = {} | local p = {} | ||
-- Add blank table cells | -- Add blank table cells | ||
| Line 40: | Line 10: | ||
if row and prev < current then | if row and prev < current then | ||
if yesno(args.decades) == false then | if yesno(args.decades) == false then | ||
row:tag('td') | |||
:addClass('timeline-blank') | |||
:cssText(args.blankstyle) | |||
:attr('colspan', current - prev) | |||
else | else | ||
-- Divide the cell up every decade if showing decades at the top | -- Divide the cell up every decade if showing decades at the top | ||
local year = | local year = prev | ||
while year < | while year < current do | ||
local dur = math.min(10 - year % 10, | local dur = math.min(10 - year % 10, current - year) | ||
row:tag('td') | row:tag('td') | ||
| Line 117: | Line 68: | ||
then | then | ||
local dates = mw.text.split(fullVal, '-', true) | local dates = mw.text.split(fullVal, '-', true) | ||
local startYear = | local startYear = tonumber(dates[1]) | ||
local endYear = | local endYear = tonumber(dates[2]) or tonumber(os.date('%Y')) + 1 | ||
if startYear == nil then | if startYear == nil then | ||
| Line 144: | Line 95: | ||
end | end | ||
-- Add overrides from arguments | -- Add overrides from arguments | ||
if args.startoffset then | if args.startoffset then | ||
rows.minYear = rows.minYear - tonumber(args.startoffset) | rows.minYear = rows.minYear - tonumber(args.startoffset) | ||
end | end | ||
if args.startyear | if args.startyear and tonumber(args.startyear) < rows.minYear then | ||
rows.minYear = tonumber(args.startyear) | |||
end | end | ||
| Line 160: | Line 108: | ||
end | end | ||
if args.endyear | if args.endyear and tonumber(args.endyear) > rows.maxYear then | ||
rows.maxYear = tonumber(args.endyear) | |||
end | end | ||
return rows | return rows | ||
end | end | ||
| Line 180: | Line 118: | ||
local function renderDates(args, tbl, rows, invert) | local function renderDates(args, tbl, rows, invert) | ||
local showDecades = yesno(args.decades) | local showDecades = yesno(args.decades) | ||
local yearRow = tbl:tag('tr') | local yearRow = tbl:tag('tr') | ||
:addClass('timeline-row') | :addClass('timeline-row') | ||
| Line 186: | Line 123: | ||
-- Create label | -- Create label | ||
if args.label or rows.hasLabels then | if args.label or rows.hasLabels then | ||
local labelCell = mw.html.create('th') | local labelCell = mw.html.create('th') | ||
:attr('scope', 'col') | :attr('scope', 'col') | ||
:addClass('navbox-group timeline-label') | :addClass('navbox-group timeline-label') | ||
:cssText(args.labelstyle) | :cssText(args.labelstyle) | ||
:attr('rowspan', | :attr('rowspan', showDecades ~= false and '2' or '1') | ||
:wikitext(args.label or '') | :wikitext(args.label or '') | ||
| Line 207: | Line 137: | ||
local decadeRow = tbl:tag('tr') | local decadeRow = tbl:tag('tr') | ||
:addClass('timeline-row') | :addClass('timeline-row') | ||
local year = | local year = rows.minYear | ||
-- Move decade row | -- Move decade row | ||
| Line 215: | Line 144: | ||
end | end | ||
while year < maxYear do | while year < rows.maxYear do | ||
local dur = math.min(10 - year % 10, maxYear - year) | local dur = math.min(10 - year % 10, rows.maxYear - year) | ||
decadeRow:tag('th') | decadeRow:tag('th') | ||
| Line 227: | Line 156: | ||
year = year + dur | year = year + dur | ||
end | end | ||
end | end | ||
-- Populate year row element | -- Populate year row element | ||
local width = 100 / (rows.maxYear - rows.minYear) | |||
for i = rows.minYear, rows.maxYear - 1 do | |||
yearRow:tag('th') | |||
:attr('scope', 'col') | |||
:addClass('timeline-year') | |||
:cssText(args.datestyle) | |||
:cssText(args.yearstyle) | |||
:cssText('width:' .. width .. '%') | |||
:wikitext(showDecades == false and i or i % 10) | |||
end | end | ||
end | end | ||
| Line 327: | Line 206: | ||
-- Shrink previous item so new item can start at the start year | -- Shrink previous item so new item can start at the start year | ||
if prevItem and prev > prevEndYear then | if prevItem and prev > prevEndYear then | ||
prevItem:attr('colspan', prevItem:getAttr('colspan') - prev + prevEndYear); | |||
end | end | ||
| Line 346: | Line 215: | ||
-- Add blanks before the cell | -- Add blanks before the cell | ||
addBlank(args, rowElement, prevEndYear, cell.startYear) | addBlank(args, rowElement, prevEndYear, cell.startYear) | ||
prevItem = rowElement:tag('td') | prevItem = rowElement:tag('td') | ||
| Line 359: | Line 220: | ||
:cssText(args.itemstyle) | :cssText(args.itemstyle) | ||
:cssText(cell.style or '') | :cssText(cell.style or '') | ||
:attr('colspan', | :attr('colspan', cell.endYear - cell.startYear) | ||
:wikitext(cell.item) | :wikitext(cell.item) | ||
| Line 371: | Line 232: | ||
-- Remove any extra rowspan from the label | -- Remove any extra rowspan from the label | ||
if prevLabel and labelSpan > 0 then | if prevLabel and labelSpan > 0 then | ||
prevLabel:attr('rowspan', | prevLabel:attr('rowspan', prevLabel:getAttr('rowspan') - labelSpan); | ||
end | end | ||
end | end | ||