Jump to content

Module:Sports rbr table/matchup

From Wikipedia, the free encyclopedia

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 '&nbsp;') .. 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&nbsp;' .. 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 '&nbsp;'
end

return pp