Module:Transfers
From TwogPedia
Documentation for this module may be created at Module:Transfers/doc
local getArgs = require('Module:Arguments').getArgs
local Flags = require('Module:Flags')
local cargo = mw.ext.cargo
local Transfers = {}
function Transfers.main(frame)
local args = getArgs(frame)
local parent = mw.html.create('div'):addClass('transferList')
if args.game ~= nil then
local tables = 'Transfers'
local fields = '_pageName, id, joindate, leavedate, inactivedate, newteam, flag, joinref, leaveref, joinrefname, leaverefname'
local cargoArgs = {
where = '_pageName LIKE "' .. args.game .. '%"',
orderBy = 'joindate DESC, leavedate DESC'
}
local results = cargo.query(tables, fields, cargoArgs)
-- mw.logObject(results)
if #results > 0 then
local tableContainer = mw.html.create('table')
local titleRow = mw.html.create('tr')
titleRow:addClass('headerRow')
local dateCell = mw.html.create('th')
dateCell:wikitext('Date')
local idCell = mw.html.create('th')
idCell:wikitext('ID')
local oldTeamCell = mw.html.create('th')
oldTeamCell:wikitext('Old team')
local newTeamCell = mw.html.create('th')
newTeamCell:wikitext('New team')
titleRow:node(dateCell):node(idCell):node(oldTeamCell):node(newTeamCell)
tableContainer:node(titleRow)
for r = 1, #results do
local result = results[r]
-- local transfer = mw.html.create('div')
-- :addClass('transferItem')
local transfer = mw.html.create('tr')
if result.leavedate then
local leavedate = mw.html.create('td')
:wikitext(result.leavedate)
transfer:node(leavedate)
elseif result.joindate then
local joindate = mw.html.create('td')
:wikitext(result.joindate)
transfer:node(joindate)
end
local player = mw.html.create('td'):addClass('flag')
-- local id = mw.html.create('td')
-- :addClass('linkID')
-- :node(flagDiv)
if ( result.flag ) then
local flag = Flags.icon(result.flag, args.game)
player:wikitext(flag)
end
transfer:node(player:wikitext('[[' .. result.id .. ']]'))
-- Get logo of result _pageName team, if exists
local oldTeamLogo = mw.html.create('div')
local tables = 'TeamLogos'
local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
local currentDate = os.date('%Y-%m-%d')
local cargoArgs = {
where = '(_pageName= "' .. result._pageName .. '") AND (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
}
local logoResult = cargo.query(tables, fields, cargoArgs)
if #logoResult > 0 then
if logoResult[1].logoAll then
oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
elseif logoResult[1].logoLight and logoResult[1].logoDark then
oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(results[1].logoDark, 'dark'))
else
local logo = logoResult[1].logoLight or logoResult[1].logoDark
oldTeamLogo:node(Transfers.createLogo(logo))
end
else
oldTeamLogo:node(Transfers.createLogo())
end
-- If transfer has a leavedate show old teams logo
local oldTeam = mw.html.create('td')
local oldTeamDiv = mw.html.create('div'):addClass('d-flex')
oldTeam:node(oldTeamDiv)
if result.leavedate then
oldTeamDiv:node(oldTeamLogo)
else
oldTeamDiv:wikitext('None')
end
transfer:node(oldTeam)
-- Show new teams logo, if exists
local newTeam = mw.html.create('td')
local newTeamDiv = mw.html.create('div'):addClass('d-flex')
newTeam:node(newTeamDiv)
if result.leavedate then
if result.newteam then
-- Get logo of new team
local newTeamLogo = mw.html.create('div')
local tables = 'TeamLogos'
local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
local currentDate = os.date('%Y-%m-%d')
local cargoArgs = {
where = '(_pageName= "' .. result.newteam .. '") AND (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
}
local logoResult = cargo.query(tables, fields, cargoArgs)
if #logoResult > 0 then
if logoResult[1].logoAll then
newTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
elseif logoResult[1].logoLight and logoResult[1].logoDark then
newTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(results[1].logoDark, 'dark'))
else
local logo = logoResult[1].logoLight or logoResult[1].logoDark
newTeamLogo:node(Transfers.createLogo(logo))
end
else
newTeamLogo:node(Transfers.createLogo())
end
newTeamDiv:node(newTeamLogo)
else
newTeamDiv:wikitext('None')
end
else
newTeamDiv:node(oldTeamLogo)
end
transfer:node(newTeam)
if result.leaveref or result.leaverefname then
local refName = result.leaverefname or ''
local ref = result.leaveref or ''
oldTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
end
if result.joinref or result.joinrefname then
local refName = result.joinrefname or ''
local ref = result.joinref or ''
newTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
end
tableContainer:node(transfer)
end
parent:node(tableContainer)
end
else
-- local game = mw.html.create('div')
-- :wikitext('[[File:' .. args.game .. '_logo.png|25px]]')
-- transfer:node(game)
end
return parent
end
function Transfers.createLogo(url, class)
local className = class and class .. ' h-100' or 'h-100'
local logoURL = url and url or 'Team_placeholder_light.png'
local logoContainer = mw.html.create('div')
:addClass(className)
local logo = mw.html.create('div')
:addClass('team-list-logo')
:node('[[File:' .. logoURL .. '|25px]]')
logoContainer:node(logo)
return logoContainer
end
return Transfers
No categories