Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus

Vorlage für die Erstellung des NFL-Playoff-Baumes. Die Vorlage ist geeignet für die Saisons ab 1990.

Verwendung

Bearbeiten

Entscheidend für das Aussehen des Playoff-Baumes ist der Parameter saison. Ausschlaggebend ist die zugrundeliegende Saison, also das Jahr der regulären Saison und nicht das Jahr der Play-offs. Bei Angabe einer Jahreszahl bis 2019 wird ein Plan für zweimal 6 Teams, ab 2020 für zweimal 7 Teams erstellt. Bei einer ungeraden Jahreszahl wird die obere Hälfte mit der AFC, bei einer geraden Jahreszahl mit der NFC gefüllt, also jeweils mit der Conference dessen Teilnehmer im Super Bowl formal Heimrecht genießt. Bei Angabe der Saison wird außerdem die Zahl des Super Bowls angegeben.

Beispiele

Bearbeiten
{{#invoke:Turnierplan NFL Playoffs|bracket}}
Wild Card Round Divisional Round Conference Championships Super Bowl
1
4
5
2
7 NFC Championship
3
6
Super Bowl
1
4
5
2
7 AFC Championship
3
6
„Reseeding“: In jeder Runde spielt das höchstgesetzte Team zu Hause gegen das niedrigste, das zweithöchste zu Hause gegen das zweitniedrigste und so weiter. Die hellblauen Linien entsprechen dem Fall, in dem jeweils das Heimteam gewinnt.
{{#invoke:Turnierplan NFL Playoffs|bracket|saison=2019
|A1=BAL |A2=KC |A3=NE |A4=HOU |A5=BUF |A6=TEN
|N1=SF  |N2=GB |N3=NO |N4=PHI |N5=SEA |N6=MIN
|BAL=Baltimore
|BUF=Buffalo
|GB =Green Bay
|HOU=Houston
|KC =Kansas City
|MIN=Minnesota
|NE =New England
|NO =New Orleans
|PHI=Philadelphia
|SEA=Seattle
|SF =San Francisco
|TEN=Tennessee
|HOU-BUFh=4. Jan. – [[NRG Stadium]] |HOU-BUF=22*:19
|NE-TENh=4. Jan. – [[Gillette Stadium]] |NE-TEN=13:20
|PHI-SEAh=5. Jan. – [[Lincoln Financial Field]] |PHI-SEA=9:17
|NO-MINh=5. Jan. – [[Mercedes-Benz Superdome]] |NO-MIN=20:26*
|SF-MINh=11. Jan. – [[Levi’s Stadium]] |SF-MIN=27:10
|BAL-TENh=11. Jan. – [[M&T Bank Stadium]] |BAL-TEN=12:28
|KC-HOUh=12. Jan. – [[Arrowhead Stadium]] |KC-HOU=51:31
|GB-SEAh=12. Jan. – [[Lambeau Field]] |GB-SEA=28:23
|KC-TENh=19. Jan. – Arrowhead Stadium |KC-TEN=35:24
|SF-GBh=19. Jan. – Levi’s Stadium |SF-GB=37:20
|KC-SFh=2. Feb. – [[Hard Rock Stadium]] |KC-SF=31:20}}
Wild Card Round Divisional Round Conference Championships Super Bowl
12. Jan. – Arrowhead Stadium
4. Jan. – NRG Stadium
2 Kansas City 51
4 Houston 1221
4 Houston 31 19. Jan. – Arrowhead Stadium
5 Buffalo 19
2 Kansas City 35
6 Tennessee 24
11. Jan. – M&T Bank Stadium
4. Jan. – Gillette Stadium AFC Championship
1 Baltimore 12
3 New England 13
6 Tennessee 28 2. Feb. – Hard Rock Stadium
6 Tennessee 20
A2 Kansas City 31
N1 San Francisco 20
11. Jan. – Levi’s Stadium
5. Jan. – Mercedes-Benz Superdome Super Bowl LIV
1 San Francisco 27
3 New Orleans 20
6 Minnesota 10 19. Jan. – Levi’s Stadium
6 Minnesota 1261
1 San Francisco 37
2 Green Bay 20
12. Jan. – Lambeau Field
5. Jan. – Lincoln Financial Field NFC Championship
2 Green Bay 28
4 Philadelphia 9
5 Seattle 23
5 Seattle 17
1 nach Verlängerung

local function sbNr(season)
	local nr = tonumber(season - 1965)
	local sb = ''
	local roman = require('Modul:FormatNum').roman
	if nr == 50 then
		sb = '50'
	elseif nr > 0 and nr < 100 then
		local fr = {}
		fr.args = {nr, ''}
		sb = roman(fr)
	end
	return sb
end

local tp = require('Modul:Turnierplan')
local yn = require('Modul:Yesno')

local function confBranch(cKey, color, teams, args)
	for i = 1, teams do
		local key = cKey .. i
		if args[key] == nil then 
			args[key] = ''
		else
			key = args[key]
		end
		args['n' .. i] = key
		args['seed_' .. key] = i
	end
	args.runden = 3
	local branch = tp.buildBracket(args)
	branch.footer = {}
	branch.footer.text = cKey .. 'FC Championship'
	branch.footer.style = 'color:#' .. color .. '; font-weight:bold; text-align:center;'
	if branch.seed ~= nil then branch.seed = cKey .. branch.seed end
	return branch
end

local function seedCols(c, n, color, args)
	local key = c .. n
	local ret = '|style="background:#' .. color .. '| '
	if args[key] ~= nil and args[key] ~= '' then
		local team = args[key]
		key = team
		if args[team .. '_l'] ~= nil then
			team = '[[' .. args[team .. '_l'] .. ']]'
		elseif args[team] ~= nil then
			team = args[team]
		end
		ret = ret .. team
	end
	ret = ret .. '\n|style="background:#' .. color .. '| '
	if args[key .. '_div'] ~= nil then
		if n <= 4 then
			ret = ret .. 'Sieger [[' .. c .. 'FC ' .. args[key .. '_div'] .. '|' .. args[key .. '_div'] .. ']]'
		else
			ret = ret .. args[key .. '_div']
		end
	end
	return ret .. '\n'
end

local function seedRow(n, args)
	ret = '|-\n!style="background:#F8F9FA"| ' .. n .. '\n'
	ret = ret .. seedCols('A', n, 'FFCCCC', args) .. seedCols('N', n, 'D0E7FF', args)
	return ret
end

local function nflSeeding(args, count)
	local ret = '<div style="padding-bottom:2.5ex">\n{| class="wikitable"\n|-\n!colspan="5" style="background:#F8F9FA"| Setzliste der Playoffs\n'
	ret = ret .. '|-\n!class="explain" title="Position"| Pos.\n'
	ret = ret .. '!colspan="2" style="background:#800000"| [[American Football Conference|<span style="color:white">AFC</span>]]\n'
	ret = ret .. '!colspan="2" style="background:#000080"| [[National Football Conference|<span style="color:white">NFC</span>]]\n'
	for i = 1, count do
		ret = ret .. seedRow(i, args)
	end
	ret = ret .. '\n|}</div>\n'
	return ret
end

local function nflBracket(args, season, count)
	args['header-style'] = 'font-size:90%; vertical-align:bottom; padding:.2ex .5em .2ex .5em'
	args.reseed = true

	local switch = 0
	if season ~= nil then
		switch = math.fmod(season, 2)
	end

	local b0 = confBranch('N', '000080', count, args)
	local b1 = confBranch('A', '800000', count, args)
	if switch == 1 then b0, b1 = b1, b0 end
	local bracket = tp.branchesToBracket(b0, b1, args)
	
	bracket.footer = {}
	bracket.footer.style = 'font-weight:bold; text-align:center;'
	bracket.footer.text = 'Super Bowl'
	if season ~= nil then
		bracket.footer.text = 'Super Bowl ' .. sbNr(season)
	end
	if args.SBh ~= nil then
		bracket.header = {}
		bracket.header.style = args['header-style']
		bracket.header.text = args.SBh
	end
	args.runden = args.runden +1
	args.rd1 = 'Wild Card Round'
	args.rd2 = 'Divisional Round'
	args.rd3 = 'Conference Championships'
	args.rd4 = 'Super Bowl'
	tp.processArgs(args)
	
	local ret = tp.bracketToTable(bracket)
	ret = ret .. tp.footnoteTable()
	return ret
end

local p = {}

function p.bracket(frame)
	local ret = ''
	local count = 7
	if frame.args.saison ~= nil then
		if tonumber(frame.args.saison) < 1978 then count = 4
		elseif tonumber(frame.args.saison) < 1990 then count = 5
		elseif tonumber(frame.args.saison) < 2020 then count = 6
		end
	end
	
	if yn(frame.args.seeds) then
		ret = nflSeeding(frame.args, count) .. '\n'
	end
	return  ret .. nflBracket(frame.args, frame.args.saison, count)
end

return p