This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing.
local pp = {}
local rdrobin, multirb
local tblkey = {
['WL'] = 'W/L',
['WLF'] = 'W/FW/L/FL',
['BSK'] = 'W/OTW/L/OTL',
['BSKF'] = 'W/OTW/FW/L/OTL/FL',
['FBR'] = 'W/D/L',
['FBRF'] = 'W/FW/D/L/FL',
}
function pp.defaults(args,yesno,color_map)
rdrobin = tonumber(args['rdrobin'] or 1)
multirb = rdrobin >= 2
local legendtype = args['legend_style'] or 'WL'
local opt_colors = {
W = { 'Win', color_map.blue1 },
D = { 'Draw', color_map.yellow2 },
L = { 'Loss', color_map.red1 },
OTW = { 'OT win', color_map.blue3 },
OTL = { 'OT loss', color_map.red3 },
FW = { 'Win by forfeit', '#5CDEFD' },
FL = { 'Loss by forfeit', '#D98080' }
}
local colors = mw.text.split(mw.ustring.gsub(tblkey[legendtype], '</', '<FORWARDSLASH'), '%s*/%s*')
for k=1,#colors do
local legend = colors[k]
args['color_' .. legend] = opt_colors[legend][2]
args['text_' .. legend] = opt_colors[legend][1]
end
args['header'] = 'Team ╲ Game'
args['legendpos'] = 'b'
args['legendorder'] = args['legendorder'] or 'W/OTW/FW/D/L/OTL/FL'
return args
end
function pp.addtl_args(k)
return k == 'style' or k == 'legend_style' or k == 'rdrobin' or k == 'ticon'
end
function pp.get_argvalues_for_maxround(args,x,del)
del = del or ''
return args['pos' .. del .. x] or args['res' .. del .. x] or ''
end
function pp.get_rounds_or_maxrounds(rounds,maxrounds,args,team_list)
if multirb then return (#team_list - 1) * rdrobin else return #team_list - 1 end
end
function pp.header(root,args,labels,maxrounds,navbar,team_list,firstround)
local row = root:tag('tr')
row:tag('th')
:css('white-space', 'nowrap'):cssText('style')
:wikitext((not multirb and (args['header'] or labels['teamround']) or ' ') .. navbar)
-- if not a single round-robin
if (multirb) then
for r=1,rdrobin do
row:tag('th')
:addClass('sportsrbrtable-rnd')
:attr('scope', 'col')
:attr('colspan', #team_list - 1)
:wikitext('Round ' .. r)
end
row = root:tag('tr')
row:tag('th')
:css('white-space', 'nowrap'):cssText('style')
:wikitext(args['header'] or labels['teamround'])
end
for r=1,maxrounds do
row:tag('th')
:addClass('sportsrbrtable-rnd')
:attr('scope', 'col')
:css('width', (args['ticon'] == nil) and (args['rdwidth'] or '35px') or nil)
:wikitext(args['rnd' .. (r + (firstround - 1))] or (r + (firstround - 1)))
end
return row
end
function pp.rowtext(frame,args,legend_symbols,posrt,opprt)
if args['ticon'] then return frame:expandTemplate{ title = args['ticon'], args = { opprt } } else return opprt end
return legend_symbols[posrt] or posrt
end
function pp.rowbg(posrc,opprt)
return (opprt ~= '') and posrc or ''
end
function pp.legendtext(legend_symbols,v)
return ' '
end
return pp