Module:Sports rbr table/matchup

From MicrasWiki
Jump to navigationJump to search

Usage

Basic usage

This module is an extension of Module:Sports rbr table, showing matchups and head-to-head results table.

In it's simplest form, only several parameters need to be used to build a table.

What you type
{{#invoke:Sports rbr table|table|style=matchup

|team1=AAA |team2=BBB |team3=CCC |team4=DDD |team5=EEE

|opp_AAA = TM2/TM3/TM4/TM5
|res_AAA =  W / L /OTL/ W

|opp_BBB = TM5/TM1/TM3/TM4
|res_BBB =  L / L /OTW/ W

|opp_CCC = TM4/TM5/TM1/TM2
|res_CCC =  W / L / W /OTL

|opp_DDD = TM3/TM2/TM1/TM5
|res_DDD = OTW/ L / L / L

|opp_EEE = TM3/TM4/TM1/TM2
|res_EEE =  W / W / L / W

|name_AAA=[[Dream Team]]
|name_BBB=Team 2
|name_CCC=Team 3
|name_DDD=Team 4
|name_EEE=Team 5
}}
What it looks like
Team ╲ Game1234
Dream TeamTM2TM3TM4TM5
Team 2TM5TM1TM3TM4
Team 3TM4TM5TM1TM2
Team 4TM3TM2TM1TM5
Team 5TM3TM4TM1TM2
Source: [citation needed]
  = Win;   = Loss

Parameters

General parameters

Style–specific parameters

Style–specific parameters
Parameter Description
opp1 or
opp_ABC
The forward slash (/) delimited list of round-by-round opponents of the team. For example, |opp1=DEF/GHI/JKL/MNO/PQR/STU/VWX for seven games.
legend_style Legend colors and text to display based on usage. The default is WL. See the legend section below for more information on legend syntax.
rdrobin Number of times each team plays all other teams. The default is 1 (i.e. single round-robin).
ticon The name of the template to trigger to show teams' identity (e.g. three-letter codes, team colors, team icons)

Legend

Key

The keys below correspond to res1 or res_ABC usage: the forward slash (/) delimited list of matchup results of the team.

For example, |res1=W/OTL/FW/W/L for five games with the round-by-round results of win, OT loss, win by forfeit, win, loss.

Key Legend color
W   Win
D   Draw
L   Loss
OTW   OT win
OTL   OT loss
FW   Win by forfeit
FL   Loss by forfeit

Style

Legend colors and text will be displayed based on usage.

Legend style WL WLF BSK BSKF FBR FBRF
Colors
  •   Win
  •   Loss
  •   Win
  •   Win by forfeit
  •   Loss
  •   Loss by forfeit
  •   Win
  •   OT win
  •   Loss
  •   OT loss
  •   Win
  •   OT win
  •   Win by forfeit
  •   Loss
  •   OT loss
  •   Loss by forfeit
  •   Win
  •   Draw
  •   Loss
  •   Win
  •   Win by forfeit
  •   Draw
  •   Loss
  •   Loss by forfeit

Examples

(These examples use Philippine university teams.)

Example 1: Cells contain literal texts

What you type
{{#invoke:Sports rbr table|table|style=matchup|legend_style=FBR

|team1 = ADM |name_ADM = Ateneo
|team2 = DLZ |name_DLZ = DLSZ
|team3 = FEU |name_FEU = FEU
|team4 = NUI |name_NUI = NU
|team5 = UST |name_UST = UST

|opp_ADM = UST/NUI/DLS/FEU
|res_ADM =  W / W / L / D

|opp_DLZ = NUI/ADM/FEU/UST
|res_DLZ =  L / W / L / L

|opp_FEU = UST/NUI/DLS/ADM
|res_FEU =  W / W / W / D

|opp_NUI = DLS/ADM/FEU/UST
|res_NUI =  W / L / L / D

|opp_UST = ADM/FEU/NUI/DLS
|res_UST =  L / L / D / W
}}
What it looks like
Team ╲ Game1234
AteneoUSTNUIDLSFEU
DLSZNUIADMFEUUST
FEUUSTNUIDLSADM
NUDLSADMFEUUST
USTADMFEUNUIDLS
Source: [citation needed]
  = Win;   = Draw;   = Loss

Example 2: Cells contain icons

TBD

Example 3: Double round-robin schedule

What you type
{{#invoke:Sports rbr table|table|style=matchup|rdrobin=2|legend_style=BSK

|team1 = ADU |name_ADU = Adamson
|team2 = ADM |name_ADM = Ateneo
|team3 = DLS |name_DLS = La Salle
|team4 = FEU |name_FEU = FEU
|team5 = NUI |name_NUI = NU
|team6 = UEA |name_UEA = UE
|team7 = UPD |name_UPD = UP
|team8 = UST |name_UST = UST

|opp_ADU = ADM/NUI/UEA/UPD/UST/DLS/FEU/UEA/ADM/NUI/UPD/FEU/UST/DLS
|res_ADU =  L /OTW/ W /OTL/ W / L / L / L / L / W / L / L / L / L

|opp_ADM = ADU/DLS/UST/FEU/NUI/UEA/UPD/UST/ADU/DLS/FEU/UEA/NUI/UPD
|res_ADM =  W / W / W / W / W / W / W / W / W / W / W / W / W / W

|opp_DLS = ADM/NUI/UEA/FEU/ADU/UPD/UST/NUI/ADM/UEA/FEU/UST/UPD/ADU
|res_DLS =  L / W / L / L / W / L / W / W / L / W / L / W / L / W

|opp_FEU = UPD/UEA/ADM/DLS/UST/NUI/ADU/UPD/NUI/UST/ADM/DLS/ADU/UEA
|res_FEU =  L / W / L / W / L / L / W /OTW/OTL/ W / L / W / W / W

|opp_NUI = ADU/DLS/UST/UPD/ADM/FEU/UEA/DLS/FEU/ADU/UST/UPD/ADM/UEA
|res_NUI = OTL/ L /OTL/ L / L / W / L / L /OTW/ L / L / L / L / L

|opp_UEA = UST/FEU/ADU/DLS/UPD/ADM/NUI/ADU/UST/UPD/DLS/ADM/FEU/NUI
|res_UEA =  L / L / L / W / L / L / W / W / L / L / L / L / L / W

|opp_UPD = FEU/UST/ADU/NUI/UEA/DLS/ADM/FEU/UEA/UST/ADU/NUI/DLS/ADM
|res_UPD =  W / L /OTW/ W / W / W / L /OTL/ W / L / W / W / W / L

|opp_UST = UEA/UPD/ADM/NUI/ADU/FEU/DLS/ADM/UEA/FEU/UPD/NUI/DLS/ADU
|res_UST =  W / W / L /OTW/ L / W / L / L / W / L / W / W / L / W
}}
What it looks like
 Round 1Round 2
Team ╲ Game1234567891011121314
AdamsonADMNUIUEAUPDUSTDLSFEUUEAADMNUIUPDFEUUSTDLS
AteneoADUDLSUSTFEUNUIUEAUPDUSTADUDLSFEUUEANUIUPD
La SalleADMNUIUEAFEUADUUPDUSTNUIADMUEAFEUUSTUPDADU
FEUUPDUEAADMDLSUSTNUIADUUPDNUIUSTADMDLSADUUEA
NUADUDLSUSTUPDADMFEUUEADLSFEUADUUSTUPDADMUEA
UEUSTFEUADUDLSUPDADMNUIADUUSTUPDDLSADMFEUNUI
UPFEUUSTADUNUIUEADLSADMFEUUEAUSTADUNUIDLSADM
USTUEAUPDADMNUIADUFEUDLSADMUEAFEUUPDNUIDLSADU
Source: [citation needed]
  = Win;   = OT win;   = Loss;   = OT loss

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