<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FAB-me%2FTeam_bracket</id>
	<title>Module:Sandbox/AB-me/Team bracket - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FAB-me%2FTeam_bracket"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/AB-me/Team_bracket&amp;action=history"/>
	<updated>2026-04-17T18:46:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/AB-me/Team_bracket&amp;diff=145017&amp;oldid=prev</id>
		<title>imported&gt;AB-me at 22:33, 5 October 2022</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/AB-me/Team_bracket&amp;diff=145017&amp;oldid=prev"/>
		<updated>2022-10-05T22:33:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local function drawMatchTable(roundNo, matchNo, args)&lt;br /&gt;
	&lt;br /&gt;
	function getMatchArg(text, team, num)&lt;br /&gt;
		num = num or 0&lt;br /&gt;
		&lt;br /&gt;
		if num &amp;lt;= 1 then&lt;br /&gt;
			return args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. matchNo * 2 - 2 + team] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. &amp;#039;0&amp;#039; .. matchNo * 2 - 2 + team] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text  .. &amp;#039;00&amp;#039; .. matchNo * 2 - 2 + team]&lt;br /&gt;
			or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. &amp;#039;0&amp;#039; .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text  .. &amp;#039;00&amp;#039; .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num]&lt;br /&gt;
			or &amp;#039;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text  .. &amp;#039;0&amp;#039; .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-&amp;#039; .. text .. &amp;#039;00&amp;#039; .. matchNo * 2 - 2 + team .. &amp;#039;-&amp;#039; .. num] or &amp;#039;&amp;amp;nbsp;&amp;#039;	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	&lt;br /&gt;
	local rowStart = 2 ^ (roundNo - 1) * (matchNo - 1) + 1&lt;br /&gt;
	local rowEnd = rowStart + 2 ^ (roundNo - 1) - 1&lt;br /&gt;
	local scoreCells = args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-scoreCells&amp;#039;] or args[&amp;#039;RD&amp;#039; .. roundNo .. &amp;#039;-sets&amp;#039;] or args[&amp;#039;scoreCells&amp;#039;] or args[&amp;#039;sets&amp;#039;] or 1&lt;br /&gt;
	local scoreWidth = args[&amp;#039;score-width&amp;#039;] or &amp;#039;1.5em&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;#039;{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;grid-column:start-col &amp;#039; .. roundNo .. &amp;#039;; grid-row:start-row &amp;#039; .. rowStart .. &amp;#039; / end-row &amp;#039; .. rowEnd .. &amp;#039;; margin:0;&amp;quot;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	table.insert(output, &amp;#039;|-&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	table.insert(output, &amp;#039;|style=&amp;quot;text-align:left;&amp;quot;|&amp;#039; .. getMatchArg(&amp;#039;team&amp;#039;, 1))&lt;br /&gt;
	if (getMatchArg(&amp;#039;seed&amp;#039;, 1) ~= &amp;#039;&amp;amp;nbsp;&amp;#039;) then&lt;br /&gt;
		table.insert(output, &amp;#039; &amp;lt;small&amp;gt;(&amp;#039; .. getMatchArg(&amp;#039;seed&amp;#039;, 1) .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, &amp;#039;\n&amp;#039;)&lt;br /&gt;
	for i=1, scoreCells do&lt;br /&gt;
		table.insert(output, &amp;#039;|style=&amp;quot;width:&amp;#039; .. scoreWidth .. &amp;#039;;padding:0;&amp;quot;|&amp;#039; .. getMatchArg(&amp;#039;score&amp;#039;, 1, i) .. &amp;#039;\n&amp;#039;)	&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, &amp;#039;|-&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	table.insert(output, &amp;#039;|style=&amp;quot;text-align:left;&amp;quot;|&amp;#039; .. getMatchArg(&amp;#039;team&amp;#039;, 2))&lt;br /&gt;
	if (getMatchArg(&amp;#039;seed&amp;#039;, 2) ~= &amp;#039;&amp;amp;nbsp;&amp;#039;) then&lt;br /&gt;
		table.insert(output, &amp;#039; &amp;lt;small&amp;gt;(&amp;#039; .. getMatchArg(&amp;#039;seed&amp;#039;, 2) .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, &amp;#039;\n&amp;#039;)&lt;br /&gt;
	for i=1, scoreCells do&lt;br /&gt;
		table.insert(output, &amp;#039;|style=&amp;quot;width:&amp;#039; .. scoreWidth .. &amp;#039;;padding:0;&amp;quot;|&amp;#039; .. getMatchArg(&amp;#039;score&amp;#039;, 2, i) .. &amp;#039;\n&amp;#039;)	&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, &amp;#039;|}&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function drawLines(roundNo, matchNo, args)&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	&lt;br /&gt;
	if roundNo &amp;gt;= 2 then&lt;br /&gt;
		&lt;br /&gt;
		local leftRowStart = 2 ^ (roundNo - 2) + (matchNo - 1) * 2 * 2 ^ (roundNo - 1)&lt;br /&gt;
		local leftRowEnd = leftRowStart + 2 ^ (roundNo - 1)&lt;br /&gt;
		&lt;br /&gt;
		local rightRowStart = 2 ^ (roundNo - 1) * (matchNo - 1) + 1&lt;br /&gt;
		local rightRowEnd = rightRowStart + 2 ^ (roundNo - 1) - 1&lt;br /&gt;
		&lt;br /&gt;
		table.insert(output, &amp;#039;&amp;lt;div style=&amp;quot;grid-column:start-gap &amp;#039; .. roundNo - 1 .. &amp;#039;; grid-row:gap &amp;#039; .. leftRowStart .. &amp;#039; / gap &amp;#039; .. leftRowEnd .. &amp;#039;; border:3px solid #202122; border-left: 0; justify-self:stretch; height:calc(100% - 3px);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
		table.insert(output, &amp;#039;&amp;lt;div style=&amp;quot;grid-column:mid-gap &amp;#039; .. roundNo - 1 .. &amp;#039;; grid-row:start-row &amp;#039; .. rightRowStart .. &amp;#039; / end-row &amp;#039; .. rightRowEnd .. &amp;#039;; background-color:#202122; height:3px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
			&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getRoundName(round, totalRounds, args)&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;#039;RD&amp;#039; .. round] then&lt;br /&gt;
		return args[&amp;#039;RD&amp;#039; .. round]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local finalRounds = totalRounds - round&lt;br /&gt;
	&lt;br /&gt;
	if finalRounds == 0 then&lt;br /&gt;
		return &amp;quot;Final&amp;quot;&lt;br /&gt;
	elseif finalRounds == 1 then&lt;br /&gt;
		return &amp;quot;Semi-finals&amp;quot;&lt;br /&gt;
	elseif finalRounds == 2 then&lt;br /&gt;
		return &amp;quot;Quarter-finals&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		--return &amp;#039;Round of &amp;#039; ..(2 ^ (totalRounds - round)) * 2&lt;br /&gt;
		return &amp;#039;Round of &amp;#039; ..(2 ^ (totalRounds - round + 1))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local rounds = args.rounds&lt;br /&gt;
	local teams = 2 ^ rounds&lt;br /&gt;
	local matchWidth = args[&amp;#039;match-width&amp;#039;] or &amp;#039;18em&amp;#039;;&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;#039;&amp;lt;div style=&amp;quot;display:grid; grid-template-columns: [start-col]&amp;#039; .. &amp;#039; &amp;#039; .. matchWidth .. &amp;#039; &amp;#039; .. &amp;#039;[end-col] repeat(&amp;#039; .. (rounds - 1) .. &amp;#039;, [start-gap] 1.5em [mid-gap] 1.5em [end-gap start-col]&amp;#039; .. &amp;#039; &amp;#039; .. matchWidth .. &amp;#039; &amp;#039; .. &amp;#039;[end-col]); grid-template-rows:auto repeat(&amp;#039; .. (2 ^ rounds) / 2 - 1 .. &amp;#039;, [start-row] 0.5fr [gap] 0.5fr [end-row] 0.5em [gap] 0.5em) [start-row] 0.5fr [gap] 0.5fr [end-row]; justify-items:auto; align-items:center; text-align:center&amp;quot;&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	--table.insert(output, &amp;#039;&amp;lt;div style=&amp;quot;display:grid; grid-template-columns: [start-col] 18em [end-col] repeat(&amp;#039; .. (rounds - 1) .. &amp;#039;, [start-gap] 1.5em [mid-gap] 1.5em [end-gap start-col] 18em [end-col]); grid-template-rows:auto repeat(&amp;#039; .. (2 ^ rounds) / 2 - 1 .. &amp;#039;, [start-row] auto [gap] auto [end-row] auto [gap] auto) [start-row] auto [gap] auto [end-row]; justify-items:auto; align-items:center; text-align:center&amp;quot;&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i=1, rounds do&lt;br /&gt;
	&lt;br /&gt;
		table.insert(output, &amp;#039;&amp;lt;div class=&amp;quot;wikitable&amp;quot; style=&amp;quot;grid-column: start-col &amp;#039; .. i .. &amp;#039;; grid-row:1; justify-self:stretch; padding: 0.2em 0.4em;&amp;quot;&amp;gt;&amp;#039; .. getRoundName(i, rounds, args) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		for j=1, teams / (2^i) do&lt;br /&gt;
		&lt;br /&gt;
			table.insert(output, drawMatchTable(i, j, args))&lt;br /&gt;
&lt;br /&gt;
            table.insert(output, drawLines(i, j, args))&lt;br /&gt;
		&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;AB-me</name></author>
	</entry>
</feed>