Halo Esports Wiki

We are currently performing extensive maintenance to this wiki and as a result there will likely be errors. Please be patient while we work to fix all problems.

READ MORE

Halo Esports Wiki
Advertisement

To edit the documentation or categories for this module, click here.


local util_cargo = require('Module:CargoUtil')
local util_esports = require('Module:EsportsUtil')

local p = {}

function p.getGroups(page)
	local query = {
		tables = 'TournamentGroups',
		fields = { 'Team', 'GroupName', 'GroupDisplay', 'GroupN [number]' },
		where = ('OverviewPage="%s"'):format(page),
		orderBy = 'GroupN ASC, Team ASC',
	}
	return util_cargo.queryAndCast(query)
end

function p.getGroupTeamList(page, group)
	local result = p.getGroups(page)
	local grouplist = {}
	for _, row in ipairs(result) do
		if row.GroupName == group then
			grouplist[#grouplist+1] = row.Team
		end
	end
	return grouplist
end


---------------- SORTING STANDINGS BY CRITERIA ----------------------
function p.getSortMethod(sortmethod)
	if sortmethod == 'points' then
		return p.sortByPoints
	elseif sortmethod == 'bo2points' then
		return p.sortByPointsBO2
	elseif sortmethod == 'record' then
		return p.sortByRecord
	elseif sortmethod == 'recordwithpoints' then
		return p.sortByRecordWithPoints
	elseif sortmethod == 'recordgames' or sortmethod == 'bo2nopoints' then
		return p.sortByRecordGames
	elseif sortmethod == 'recordwithgames' then
		return p.sortByRecordThenGames
	elseif sortmethod == 'recordwithgamesnotb' then
		return p.sortByRecordThenGamesDontBreakTies
	else
		error('Invalid or missing sort method')
	end
end

function p.sortByPoints(row)
	row.sort = row.p
end

function p.sortByPointsBO2(row)
	row.sort = row.p - row.l / 10000
end

function p.sortByRecord(row)
	row.sort = util_esports.winrateRanked(row.w, row.l)
end

function p.sortByRecordThenGames(row)
	row.sort = util_esports.winrateRanked(row.w, row.l) + util_esports.winrateRanked(row.wg, row.lg) / 10000
end

function p.sortByRecordWithPoints(row)
	row.sort = util_esports.winrateRanked(row.w, row.l) + row.tb / 10000
end

function p.sortByRecordGames(row)
	row.sort = util_esports.winrateRanked(row.wg, row.lg)
end

function p.sortByRecordThenGamesDontBreakTies(row)
	row.sortdisplay = util_esports.winrateRanked(row.w, row.l)
	row.sort = row.sortdisplay + util_esports.winrateRanked(row.wg, row.lg) / 10000
end

return p
Advertisement