Module:Transfers: Difference between revisions
From TwogPedia
(Created page with "local getArgs = require('Module:Arguments').getArgs local cargo = mw.ext.cargo local Transfers = {} function Transfers.main(frame) local args = getArgs(frame) local parent = mw.html.create('div') if args.game ~= nil then local tables = 'Transfers' local fields = '_pageName, id, joindate, leavedate, inactivedate, newteam, flag' local cargoArgs = { where = '_pageName LIKE "' .. args.game .. '%"', orderBy = 'joindate DESC, leavedate DESC' } local result...") |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local Flags = require('Module:Flags') | |||
local cargo = mw.ext.cargo | local cargo = mw.ext.cargo | ||
Line 6: | Line 7: | ||
function Transfers.main(frame) | function Transfers.main(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local parent = mw.html.create('div') | local parent = mw.html.create('div'):addClass('transferList') | ||
if args.game ~= nil then | if args.game ~= nil then | ||
local tables = 'Transfers' | local tables = 'Transfers' | ||
local fields = '_pageName, id, joindate, leavedate, inactivedate, newteam, flag' | local fields = '_pageName, id, joindate, leavedate, inactivedate, newteam, flag, joinref, leaveref, joinrefname, leaverefname' | ||
local cargoArgs = { | local cargoArgs = { | ||
where = '_pageName LIKE "' .. args.game .. '%"', | where = '_pageName LIKE "' .. args.game .. '%"', | ||
Line 15: | Line 16: | ||
} | } | ||
local results = cargo.query(tables, fields, cargoArgs) | local results = cargo.query(tables, fields, cargoArgs) | ||
if #results > 0 then | 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 | for r = 1, #results do | ||
local result = results[r] | local result = results[r] | ||
local transfer = mw.html.create('div') | -- local transfer = mw.html.create('div') | ||
:wikitext('[[' .. result.id .. ']]') | -- :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 companyName = mw.text.split(result._pageName, '/')[2] or '' | |||
local cargoArgs = { | |||
where = '(_pageName= "' .. result._pageName .. '" OR _pageName= "' .. companyName .. '") 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(logoResult[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) | |||
local newTeamLogo = mw.html.create('div') | |||
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 | end | ||
parent:node(tableContainer) | |||
end | end | ||
else | else | ||
-- local game = mw.html.create('div') | |||
-- :wikitext('[[File:' .. args.game .. '_logo.png|25px]]') | |||
-- transfer:node(game) | |||
end | end | ||
return parent | 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 | end | ||
return Transfers | return Transfers |
Latest revision as of 13:10, 23 December 2022
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)
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 companyName = mw.text.split(result._pageName, '/')[2] or ''
local cargoArgs = {
where = '(_pageName= "' .. result._pageName .. '" OR _pageName= "' .. companyName .. '") 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(logoResult[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)
local newTeamLogo = mw.html.create('div')
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