mNo edit summary |
mNo edit summary |
||
(13 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
local makeFlag = require('Module:Person/Flag').makeFlag | local makeFlag = require('Module:Person/Flag').makeFlag | ||
local Links = require('Module:Links') | local Links = require('Module:Links') | ||
local funcs = require('Module:Functions') | |||
local getTeamDisplaytitle = funcs.getTeamDisplaytitle | |||
local VariablesLua = mw.ext.VariablesLua | |||
local Participants = {} | local Participants = {} | ||
function Participants.main(frame) | function Participants.main(frame) | ||
Line 48: | Line 50: | ||
local team = nil | local team = nil | ||
local company = nil | |||
if pValues.team then | if pValues.team then | ||
-- Check if shorthand of a team was used | -- Check if shorthand of a team was used if team does not include game name | ||
if not string.find(pValues.team, currentTitleSplit[1] .. '/') then | |||
local tables = 'Teams' | |||
local fields = '_pageName, shorthand, org' | |||
local cargoArgs = { | |||
where = '_pageName LIKE "' .. gameCategory .. '/%" AND shorthand = "' .. pValues.team .. '"' | |||
} | |||
local results = cargo.query(tables, fields, cargoArgs) | |||
if #results > 0 then | |||
team = results[1]._pageName | |||
company = results[1].org | |||
else team = gameCategory .. '/' .. pValues.team end | |||
end | |||
local teamName = mw.html.create('div') | local teamName = mw.html.create('div') | ||
:addClass('tc fw-600') | :addClass('tc fw-600 team-name') | ||
:wikitext('[['.. team ..']]') | :wikitext('[['.. team ..'|' .. string.gsub(getTeamDisplaytitle(team, VariablesLua.var('endDate')), gameCategory .. '/', '') .. ']]') | ||
if pValues.notes then | if pValues.notes then | ||
local notesList = mw.text.split(pValues.notes, ',') | local notesList = mw.text.split(pValues.notes, ',') | ||
local notes = mw.html.create('div'):addClass('notes') | |||
for i, v in ipairs (notesList) do | for i, v in ipairs (notesList) do | ||
v = mw.text.trim(v) | v = mw.text.trim(v) | ||
notes:node(mw.html.create('sup'):attr('title', v):wikitext(i .. '.')) | |||
end | end | ||
teamName:node(notes) | |||
end | end | ||
participant:node(teamName) | participant:node(teamName) | ||
Line 79: | Line 90: | ||
for i = 1, teamsize, 1 do | for i = 1, teamsize, 1 do | ||
if pValues['p'.. i] then | if pValues['p'.. i] then | ||
local playerId = ' | local playerId = '' | ||
if pValues['p'.. i .. 'link'] then | if pValues['p'.. i .. 'link'] then | ||
playerId = pValues['p'.. i .. 'link'] .. '|' .. pValues['p'.. i] | playerId = pValues['p'.. i .. 'link'] .. '|' .. pValues['p'.. i] | ||
else | |||
playerId = 'People/' .. pValues['p'.. i] | |||
-- If page does not exist, then add the entered id as link name | |||
local pageTitle = mw.title.new('People/' .. pValues['p'.. i]) | |||
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['p'.. i] end | |||
end | end | ||
playersDb = playersDb .. (pValues['p'.. i .. 'link'] or 'People/' .. pValues['p'.. i]) .. ',' | playersDb = playersDb .. (pValues['p'.. i .. 'link'] or 'People/' .. pValues['p'.. i]) .. ',' | ||
Line 101: | Line 118: | ||
end | end | ||
if pValues.s then | if pValues.s then | ||
Line 118: | Line 133: | ||
end | end | ||
-- COACHES | |||
local coaches = 1 | local coaches = 1 | ||
local coachesDb = '' | |||
while pValues['c' .. coaches] do | while pValues['c' .. coaches] do | ||
local playerId = ' | local playerId = '' | ||
if pValues['c'.. coaches .. 'link'] then | |||
playerId = pValues['c'.. coaches .. 'link'] .. '|' .. pValues['c'.. coaches] | |||
else | |||
playerId = 'People/' .. pValues['c'.. coaches] | |||
-- If page does not exist, then add the entered id as link name | |||
local pageTitle = mw.title.new('People/' .. pValues['c'.. coaches]) | |||
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['c'.. coaches] end | |||
end | end | ||
coachesDb = coachesDb .. (pValues['c'.. coaches .. 'link'] or 'People/' .. pValues['c'.. coaches]) .. ',' | |||
local flag = makeFlag(pValues['cflag'], pValues[' | local flag = makeFlag(pValues['cflag'], pValues['c'.. coaches .. 'link'] or 'People/' .. pValues['c' .. coaches], gameCategory) | ||
local coach = mw.html.create('tr') | local coach = mw.html.create('tr') | ||
Line 134: | Line 155: | ||
coaches = coaches + 1 | coaches = coaches + 1 | ||
end | end | ||
-- ANALYSTS | |||
local analysts = 1 | |||
local analystsDb = '' | |||
while pValues['a' .. analysts] do | |||
local playerId = '' | |||
if pValues['a'.. analysts .. 'link'] then | |||
playerId = pValues['a'.. analysts .. 'link'] .. '|' .. pValues['a'.. analysts] | |||
else | |||
playerId = 'People/' .. pValues['a'.. analysts] | |||
-- If page does not exist, then add the entered id as link name | |||
local pageTitle = mw.title.new('People/' .. pValues['a'.. analysts]) | |||
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['a'.. analysts] end | |||
end | |||
analystsDb = analystsDb .. (pValues['a'.. analysts .. 'link'] or 'People/' .. pValues['a'.. analysts]) .. ',' | |||
local flag = makeFlag(pValues['cflag'], pValues['a'.. analysts .. 'link'] or 'People/' .. pValues['a' .. analysts], gameCategory) | |||
local analyst = mw.html.create('tr') | |||
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Analyst'):wikitext('A'))) | |||
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]')) | |||
playerList:node(analyst) | |||
analysts = analysts + 1 | |||
end | |||
-- MANAGERS | |||
local managers = 1 | |||
local managersDb = '' | |||
while pValues['m' .. managers] do | |||
local playerId = '' | |||
if pValues['m'.. managers .. 'link'] then | |||
playerId = pValues['m'.. managers .. 'link'] .. '|' .. pValues['m'.. managers] | |||
else | |||
playerId = 'People/' .. pValues['m'.. managers] | |||
-- If page does not exist, then add the entered id as link name | |||
local pageTitle = mw.title.new('People/' .. pValues['m'.. managers]) | |||
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['m'.. managers] end | |||
end | |||
managersDb = managersDb .. (pValues['m'.. managers .. 'link'] or 'People/' .. pValues['m'.. managers]) .. ',' | |||
local flag = makeFlag(pValues['cflag'], pValues['m'.. managers .. 'link'] or 'People/' .. pValues['m' .. managers], gameCategory) | |||
local manager = mw.html.create('tr') | |||
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Manager'):wikitext('M'))) | |||
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]')) | |||
playerList:node(manager) | |||
managers = managers + 1 | |||
end | |||
if team ~= nil and string.len(playersDb) > 0 then | |||
frame:callParserFunction{name = '#cargo_store:', args = {_table = 'Participants', team = team, players = playersDb, coaches = coachesDb, analysts = analystsDb, managers = managersDb}} | |||
else | |||
frame:callParserFunction{name = '#cargo_store:', args = {_table = 'Participants', team = nil, players = 'People/Yatoro'}} | |||
end | |||
Line 149: | Line 222: | ||
relativeParent:node(Participants.createLogo(logo)) | relativeParent:node(Participants.createLogo(logo)) | ||
elseif pValues.team then | elseif pValues.team then | ||
-- Check if team has org if company is not already set from checking shorthand | |||
if not company then | |||
local tables = 'Teams' | |||
local fields = 'org' | |||
local cargoArgs = { | |||
where = '_pageName="' .. team .. '"' | |||
} | |||
local results = cargo.query(tables, fields, cargoArgs) | |||
if #results > 0 then company = results[1].org end | |||
end | |||
if not company then company = '' end | |||
-- Look up Cargo table for team images | -- Look up Cargo table for team images | ||
local tables = 'Logos' | local tables = 'Logos' | ||
local fields = '_pageName, logoLight, logoDark, logoAll, iconAll, iconLight, iconDark, start, end' | local fields = '_pageName, logoLight, logoDark, logoAll, iconAll, iconLight, iconDark, start, end' | ||
currentDate = os.date('%Y-%m-%d') | |||
local cargoArgs = { | local cargoArgs = { | ||
where = '(_pageName = "' .. team .. '" OR _pageName=" | where = '(_pageName = "' .. team .. '" OR _pageName="' .. company .. '") AND (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")' | ||
} | } | ||
local results = cargo.query(tables, fields, cargoArgs) | local results = cargo.query(tables, fields, cargoArgs) | ||
Line 200: | Line 285: | ||
local logo = mw.html.create('div') | local logo = mw.html.create('div') | ||
:addClass('team-list-logo') | :addClass('team-list-logo') | ||
:node('[[File:' .. logoURL .. '|190px]]') | :node('[[File:' .. logoURL .. '|190px|link=]]') | ||
logoContainer:node(logo) | logoContainer:node(logo) | ||
return logoContainer | return logoContainer |
Latest revision as of 16:42, 26 April 2024
Documentation for this module may be created at Module:Participants list team/doc
local cargo = mw.ext.cargo
local getArgs = require('Module:Arguments').getArgs
local makeFlag = require('Module:Person/Flag').makeFlag
local Links = require('Module:Links')
local funcs = require('Module:Functions')
local getTeamDisplaytitle = funcs.getTeamDisplaytitle
local VariablesLua = mw.ext.VariablesLua
local Participants = {}
function Participants.main(frame)
local args = getArgs(frame)
local currentTitleSplit = mw.text.split(mw.title.getCurrentTitle().text, '/')
local container = mw.html.create('div'):addClass('p-team-container')
local wrapper = mw.html.create('div')
if args.showToggle then
local toggle = mw.html.create('div')
:attr('id', 'team-toggle')
:wikitext('Show Players')
wrapper:node(toggle)
end
local teamsize = args.teamsize
local currentTitle = mw.title.getCurrentTitle().text
local gameCategory = mw.text.split(currentTitle, '/')[1]
for key, value in ipairs (args) do
local pValues = mw.text.jsonDecode(value)
-- If pValues is title, then create a header and new container
if pValues.title then
local title = mw.html.create('h3'):wikitext(pValues.title)
local clone = mw.clone(container)
if key == 1 then
wrapper:node(title)
else
wrapper:node(clone):node(title)
container = mw.html.create('div'):addClass('p-team-container')
end
else
local participant = mw.html.create('div')
local team = nil
local company = nil
if pValues.team then
-- Check if shorthand of a team was used if team does not include game name
if not string.find(pValues.team, currentTitleSplit[1] .. '/') then
local tables = 'Teams'
local fields = '_pageName, shorthand, org'
local cargoArgs = {
where = '_pageName LIKE "' .. gameCategory .. '/%" AND shorthand = "' .. pValues.team .. '"'
}
local results = cargo.query(tables, fields, cargoArgs)
if #results > 0 then
team = results[1]._pageName
company = results[1].org
else team = gameCategory .. '/' .. pValues.team end
end
local teamName = mw.html.create('div')
:addClass('tc fw-600 team-name')
:wikitext('[['.. team ..'|' .. string.gsub(getTeamDisplaytitle(team, VariablesLua.var('endDate')), gameCategory .. '/', '') .. ']]')
if pValues.notes then
local notesList = mw.text.split(pValues.notes, ',')
local notes = mw.html.create('div'):addClass('notes')
for i, v in ipairs (notesList) do
v = mw.text.trim(v)
notes:node(mw.html.create('sup'):attr('title', v):wikitext(i .. '.'))
end
teamName:node(notes)
end
participant:node(teamName)
end
-- Create list of players
local playerList = mw.html.create('table')
:addClass('table-bordered players')
local players = {}
local playersDb = ''
for i = 1, teamsize, 1 do
if pValues['p'.. i] then
local playerId = ''
if pValues['p'.. i .. 'link'] then
playerId = pValues['p'.. i .. 'link'] .. '|' .. pValues['p'.. i]
else
playerId = 'People/' .. pValues['p'.. i]
-- If page does not exist, then add the entered id as link name
local pageTitle = mw.title.new('People/' .. pValues['p'.. i])
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['p'.. i] end
end
playersDb = playersDb .. (pValues['p'.. i .. 'link'] or 'People/' .. pValues['p'.. i]) .. ','
local flag = makeFlag(pValues['p'.. i .. 'flag'], pValues['p'.. i .. 'link'] or 'People/' .. pValues['p'.. i], gameCategory)
players['p'.. i] = mw.html.create('tr')
:node(mw.html.create('th'):wikitext(i))
local td = mw.html.create('td')
if flag then
td:wikitext(flag)
end
td:wikitext('[['.. playerId ..']]')
players['p'.. i]:node(td)
playerList:node(players['p'.. i])
end
end
if pValues.s then
local playerId = 'People/' .. pValues.s .. '|' .. pValues.s
if pValues['slink'] then
playerId = pValues['slink'] .. '|' .. pValues.s
end
local flag = makeFlag(pValues['sflag'], pValues['slink'] or 'People/' .. pValues.s, gameCategory)
local sub = mw.html.create('tr')
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Substitute'):wikitext('S')))
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]'))
playerList:node(sub)
end
-- COACHES
local coaches = 1
local coachesDb = ''
while pValues['c' .. coaches] do
local playerId = ''
if pValues['c'.. coaches .. 'link'] then
playerId = pValues['c'.. coaches .. 'link'] .. '|' .. pValues['c'.. coaches]
else
playerId = 'People/' .. pValues['c'.. coaches]
-- If page does not exist, then add the entered id as link name
local pageTitle = mw.title.new('People/' .. pValues['c'.. coaches])
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['c'.. coaches] end
end
coachesDb = coachesDb .. (pValues['c'.. coaches .. 'link'] or 'People/' .. pValues['c'.. coaches]) .. ','
local flag = makeFlag(pValues['cflag'], pValues['c'.. coaches .. 'link'] or 'People/' .. pValues['c' .. coaches], gameCategory)
local coach = mw.html.create('tr')
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Coach'):wikitext('C')))
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]'))
playerList:node(coach)
coaches = coaches + 1
end
-- ANALYSTS
local analysts = 1
local analystsDb = ''
while pValues['a' .. analysts] do
local playerId = ''
if pValues['a'.. analysts .. 'link'] then
playerId = pValues['a'.. analysts .. 'link'] .. '|' .. pValues['a'.. analysts]
else
playerId = 'People/' .. pValues['a'.. analysts]
-- If page does not exist, then add the entered id as link name
local pageTitle = mw.title.new('People/' .. pValues['a'.. analysts])
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['a'.. analysts] end
end
analystsDb = analystsDb .. (pValues['a'.. analysts .. 'link'] or 'People/' .. pValues['a'.. analysts]) .. ','
local flag = makeFlag(pValues['cflag'], pValues['a'.. analysts .. 'link'] or 'People/' .. pValues['a' .. analysts], gameCategory)
local analyst = mw.html.create('tr')
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Analyst'):wikitext('A')))
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]'))
playerList:node(analyst)
analysts = analysts + 1
end
-- MANAGERS
local managers = 1
local managersDb = ''
while pValues['m' .. managers] do
local playerId = ''
if pValues['m'.. managers .. 'link'] then
playerId = pValues['m'.. managers .. 'link'] .. '|' .. pValues['m'.. managers]
else
playerId = 'People/' .. pValues['m'.. managers]
-- If page does not exist, then add the entered id as link name
local pageTitle = mw.title.new('People/' .. pValues['m'.. managers])
if not (pageTitle and pageTitle.exists) then playerId = playerId .. '|' .. pValues['m'.. managers] end
end
managersDb = managersDb .. (pValues['m'.. managers .. 'link'] or 'People/' .. pValues['m'.. managers]) .. ','
local flag = makeFlag(pValues['cflag'], pValues['m'.. managers .. 'link'] or 'People/' .. pValues['m' .. managers], gameCategory)
local manager = mw.html.create('tr')
:node(mw.html.create('th'):node(mw.html.create('abbr'):attr('title', 'Manager'):wikitext('M')))
:node(mw.html.create('td'):wikitext(flag):wikitext('[['.. playerId ..']]'))
playerList:node(manager)
managers = managers + 1
end
if team ~= nil and string.len(playersDb) > 0 then
frame:callParserFunction{name = '#cargo_store:', args = {_table = 'Participants', team = team, players = playersDb, coaches = coachesDb, analysts = analystsDb, managers = managersDb}}
else
frame:callParserFunction{name = '#cargo_store:', args = {_table = 'Participants', team = nil, players = 'People/Yatoro'}}
end
local relativeParent = mw.html.create('div')
:addClass('team-list')
:node(playerList)
if pValues.logoAll then
relativeParent:node(Participants.createLogo(pValues.logoAll))
elseif pValues.logoLight and pValues.logoDark then
relativeParent:node(Participants.createLogo(pValues.logoLight, 'light')):node(Participants.createLogo(pValues.logoDark, 'dark'))
elseif pValues.logoLight or pValues.logoDark then
local logo = pValues.logoLight or pValues.logoDark
relativeParent:node(Participants.createLogo(logo))
elseif pValues.team then
-- Check if team has org if company is not already set from checking shorthand
if not company then
local tables = 'Teams'
local fields = 'org'
local cargoArgs = {
where = '_pageName="' .. team .. '"'
}
local results = cargo.query(tables, fields, cargoArgs)
if #results > 0 then company = results[1].org end
end
if not company then company = '' end
-- Look up Cargo table for team images
local tables = 'Logos'
local fields = '_pageName, logoLight, logoDark, logoAll, iconAll, iconLight, iconDark, start, end'
currentDate = os.date('%Y-%m-%d')
local cargoArgs = {
where = '(_pageName = "' .. team .. '" OR _pageName="' .. company .. '") 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
relativeParent:node(Participants.createLogo(results[1].iconAll))
elseif results[1].iconLight and results[1].iconDark then
relativeParent:node(Participants.createLogo(results[1].iconLight, 'light')):node(Participants.createLogo(results[1].iconDark, 'dark'))
elseif results[1].logoAll then
relativeParent:node(Participants.createLogo(results[1].logoAll))
elseif results[1].logoLight and results[1].logoDark then
relativeParent:node(Participants.createLogo(results[1].logoLight, 'light')):node(Participants.createLogo(results[1].logoDark, 'dark'))
else
local logo = results[1].iconLight or results[1].iconDark or results[1].logoLight or results[1].logoDark
relativeParent:node(Participants.createLogo(logo))
end
else
relativeParent:node(Participants.createLogo())
end
end
participant:node(relativeParent)
if pValues.qualifier then
local qualifier = mw.html.create('div')
:addClass('team-list-qualifier')
:wikitext(pValues.qualifier)
participant:node(qualifier)
end
container:node(participant)
end
end
wrapper:node(container)
return wrapper
end
function Participants.createLogo(url, class)
local className = class and class .. ' h-100' or 'h-100'
local logoURL = url and url or 'Team_placeholder_dark.png'
local logoContainer = mw.html.create('div')
:addClass(className)
local logo = mw.html.create('div')
:addClass('team-list-logo')
:node('[[File:' .. logoURL .. '|190px|link=]]')
logoContainer:node(logo)
return logoContainer
end
return Participants