Module:Episode table: Difference between revisions
NeonWabbit (talk | contribs) 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,..." |
NeonWabbit (talk | contribs) 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 " " .. EpisodeTable.reference(args.r, args.c) or '')) | :wikitext((args.nobold and displaytext or "'''" .. displaytext .. "'''") .. (args.r and " " .. 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', | :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 | {'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 | ||