Module:TournamentUtil

From Leaguepedia | League of Legends Esports Wiki
Jump to: navigation, search

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, fields)
	if not fields then
		fields = { 'Team', 'GroupName', 'GroupDisplay', 'GroupN' }
	end
	local query = {
		tables = 'TournamentGroups',
		fields = fields,
		where = ('OverviewPage="%s"'):format(page),
		orderBy = 'GroupN ASC, Team ASC',
		types = { GroupN = 'number' }
	}
	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