Module:Episode table: Difference between revisions

Created page with "-- This module implements {{Episode table}} and {{Episode table/part}}. local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) -------------------------------------------------------------------------------- -- EpisodeTable class -- The main class. -------------------------------------------------------------------------------- local contrast_ratio = require('Module:Color contrast')._ratio local EpisodeTable = {} function EpisodeTable.cell(background, width,..."
 
No edit summary
 
Line 11: Line 11:
local EpisodeTable = {}
local EpisodeTable = {}


function EpisodeTable.cell(background, width, text, reference)
function EpisodeTable.cell(background, width, text, reference, textColor)
local cell = mw.html.create('th')
local cell = mw.html.create('th')
Line 28: Line 28:
:css('background',background or '#CCCCFF')
:css('background',background or '#CCCCFF')
:css('width',cell_width)
:css('width',cell_width)
:css('color',textColor)
:wikitext(text)
:wikitext(text)
Line 47: Line 48:
if link1_cr < 7 or link2_cr < 7 then
if link1_cr < 7 or link2_cr < 7 then
refspan
refspan
:css('color','black')
:css('background-color','white')
:css('background-color','white')
:css('padding','1px')
:css('padding','1px')
Line 65: Line 67:
function EpisodeTable.part(frame,args)
function EpisodeTable.part(frame,args)
local row = mw.html.create('tr')
local row = mw.html.create('tr')
if (args.c == nil or args.c == '') then args.c = '#CCCCFF' end
local black_cr = contrast_ratio{args.c or '#CCCCFF', 'black', ['error'] = 0}
local black_cr = contrast_ratio{args.c or '#CCCCFF', 'black', ['error'] = 0}
Line 99: Line 103:
:css('background-color', args.c or '#CCCCFF')
:css('background-color', args.c or '#CCCCFF')
:css('color', black_cr > white_cr and 'black' or 'white')
:css('color', black_cr > white_cr and 'black' or 'white')
:wikitext("'''" .. displaytext .. "'''" .. (args.r and "&#8202;" .. EpisodeTable.reference(args.r, args.c) or ''))
:wikitext((args.nobold and displaytext or "'''" .. displaytext .. "'''") .. (args.r and "&#8202;" .. EpisodeTable.reference(args.r, args.c) or ''))
return tostring(row)
return tostring(row)
Line 162: Line 166:
-- Main row
-- Main row
local textColor = background and (black_cr > white_cr and 'black' or 'white') or 'black'
local mainRow = root:tag('tr')
local mainRow = root:tag('tr')
mainRow
mainRow
:css('color', background and (black_cr > white_cr and 'black' or 'white') or 'black')
:css('color', textColor)
:css('text-align', 'center')
:css('text-align', 'center')
Line 186: Line 191:
{'aux2','Aux2',''},
{'aux2','Aux2',''},
{'aux3','Aux3',''},
{'aux3','Aux3',''},
{'airdate','OriginalAirDate','Original ' .. (args.released and 'release' or 'air') .. ' date'},
{'airdate','OriginalAirDate','Original release date'},
{'altdate','AltDate',''},
{'altdate','AltDate',''},
{'guests','Guests','Guest(s)'},
{'guests','Guests','Guest(s)'},
Line 204: Line 209:
local thisCellT = args[v[1] .. 'T'] or args[v[2] .. 'T']
local thisCellT = args[v[1] .. 'T'] or args[v[2] .. 'T']
local thisCellR = args[v[1] .. 'R'] or args[v[2] .. 'R']
local thisCellR = args[v[1] .. 'R'] or args[v[2] .. 'R']
mainRow:node(EpisodeTable.cell(background, thisCell, thisCellT or v[3], thisCellR))
mainRow:node(EpisodeTable.cell(background, thisCell, thisCellT or v[3], thisCellR, textColor))
end
end
end
end
Line 218: Line 223:
end
end
return (args.dontclose and mw.ustring.gsub(tostring(root), "</table>", "") or tostring(root)) .. categories
 
 
    local templateStyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Episode table/styles.css' }
}
return (((args.dontclose or '') ~= '') and mw.ustring.gsub(tostring(root), "</table>", "") or tostring(root)) .. categories .. templateStyles
end
end


Line 232: Line 242:
wrappers = 'Template:Episode table'
wrappers = 'Template:Episode table'
})
})
return EpisodeTable.new(frame,args)
local check = require('Module:Check for unknown parameters')._check
local tracking = ''
local title = mw.title.getCurrentTitle()
if title.namespace == 0 then
tracking = check({
['unknown']='[[Category:Pages using episode table with unknown parameters|_VALUE_'..title.text..']]',
['preview']='Page using [[Template:Episode table]] with unknown parameter "_VALUE_"',
['showblankpositional']='y',
'airdate', 'airdateR', 'airdateT', 'altdate', 'AltDate', 'altdateR', 'AltDateR',
'altdateT', 'AltDateT', 'anchor', 'aux1', 'Aux1', 'aux1R', 'Aux1R', 'aux1T',
'Aux1T', 'aux2', 'Aux2', 'aux2R', 'Aux2R', 'aux2T', 'Aux2T', 'aux3', 'Aux3',
'aux3R', 'Aux3R', 'aux3T', 'Aux3T', 'aux4', 'Aux4', 'aux4R', 'Aux4R', 'aux4T',
'Aux4T', 'b', 'background', 'c', 'caption', 'country', 'DirectedBy', 'DirectedByR',
'DirectedByT', 'director', 'directorR', 'directorT', 'dontclose', 'EpisodeNumber',
'EpisodeNumber2', 'EpisodeNumber2R', 'EpisodeNumber2Series', 'EpisodeNumber2SeriesR',
'EpisodeNumber2SeriesT', 'EpisodeNumber2T', 'EpisodeNumberR', 'EpisodeNumberT',
'episodes', 'forceoverall', 'guests', 'Guests', 'guestsR', 'GuestsR', 'guestsT',
'GuestsT', 'id', 'musicalguests', 'MusicalGuests', 'musicalguestsR', 'MusicalGuestsR',
'musicalguestsT', 'MusicalGuestsT', 'OriginalAirDate', 'OriginalAirDateR',
'OriginalAirDateT', 'overall', 'overall_type', 'overall2', 'overall2R',
'overall2T', 'overallR', 'overallT', 'prodcode', 'ProdCode', 'prodcodeR',
'ProdCodeR', 'prodcodeT', 'ProdCodeT', 'r', 'season', 'season_type', 'seasonR',
'seasonT', 'series', 'series_type', 'seriesR', 'seriesT', 'show_caption',
'subtitle', 'title', 'Title', 'titleR', 'TitleR', 'titleT', 'TitleT', 'total_width',
'viewers', 'Viewers', 'viewers_type', 'viewersR', 'ViewersR', 'viewersT',
'ViewersT', 'writer', 'writerR', 'writerT', 'WrittenBy', 'WrittenByR', 'WrittenByT'
}, args)
end
return EpisodeTable.new(frame,args) .. tracking
end
end