Documentation for this module may be created at Module:Functions/doc
local cargo = mw.ext.cargo
local p = {}
function p.getTeamPage(team, game)
local currentTitle = mw.title.getCurrentTitle().text
local gameCategory = game or mw.text.split(currentTitle, '/')[1]
-- Check if shorthand of a team was used
local tables = 'Teams'
local fields = '_pageName, shorthand'
local cargoArgs = {
where = '_pageName LIKE "' .. gameCategory .. '/%" AND shorthand = "' .. team .. '"'
}
local results = cargo.query(tables, fields, cargoArgs)
if #results > 0 then return results[1]._pageName else return gameCategory .. '/' .. team end
end
function p.prizeToString(nr)
if nr == nil then return 'TBD' end
local prize = ''
local reversed = string.reverse(tostring(nr))
for k = 1, #reversed do
prize = reversed:sub(k, k) .. prize
if k % 3 == 0 and k < #reversed then prize = ',' .. prize end
k = k + 1
end
return prize
end
function p.getTeamLogo(team, game, size)
local tables = 'Logos'
local fields = '_pageName, logoLight, logoDark, logoAll, iconAll, iconLight, iconDark, start, end'
local currentDate = os.date('%Y-%m-%d')
local cargoArgs = {
where = '_pageName = "' .. team .. '" AND (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
}
local results = cargo.query(tables, fields, cargoArgs)
if #results > 0 then
if results[1].iconAll then
return p.createLogo(results[1].iconAll, team, nil, game, size)
elseif results[1].iconLight and results[1].iconDark then
return mw.html.create('div'):node(p.createLogo(results[1].iconLight, team, 'light', game, size)):node(p.createLogo(results[1].iconDark, team, 'dark', game, size))
elseif results[1].logoAll then
return p.createLogo(results[1].logoAll, team, nil, game, size)
elseif results[1].logoLight and results[1].logoDark then
return mw.html.create('div'):node(p.createLogo(results[1].logoLight, team, 'light', game, size)):node(p.createLogo(results[1].logoDark, team, 'dark', game, size))
else
local logo = results[1].iconLight or results[1].iconDark or results[1].logoLight or results[1].logoDark
return p.createLogo(logo, team, nil, game, size)
end
else
return mw.html.create('div'):node(p.createLogo(nil, team, 'light', game, size)):node(p.createLogo(nil, team, 'dark', game, size))
end
end
function p.createLogo(url, teamPage, class, game, size)
size = size or '20px'
local className = class and class .. ' h-100' or 'h-100'
local logoURL = url and url or 'Team_placeholder_' .. class .. '.png'
local logoContainer = mw.html.create('div'):addClass(className)
local logo = mw.html.create('div')
:addClass('team-list-logo')
:node('[[File:' .. logoURL .. '|' .. size .. '|link=' .. teamPage .. '|' .. string.gsub(teamPage, game .. '/', '') .. ']]')
logoContainer:node(logo)
return logoContainer
end
function p.stringifyDate(inputDate)
if not inputDate then return nil end
local monthNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
local dateSplit = mw.text.split(inputDate, '-')
local year = dateSplit[1] or ''
local month = dateSplit[2] and monthNames[tonumber(dateSplit[2])] .. ' ' or ''
local day = dateSplit[3] and dateSplit[3] .. ', ' or ''
return month .. day .. year
end
return p