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