mNo edit summary |
mNo edit summary |
||
Line 11: | Line 11: | ||
local stringifyDate = require('Module:Functions').stringifyDate | local stringifyDate = require('Module:Functions').stringifyDate | ||
local convertRole = require('Module:GameRoles').convertRole | local convertRole = require('Module:GameRoles').convertRole | ||
local | local Tournaments = require('Module:Infobox/Widget/Tournaments').get | ||
local cargo = mw.ext.cargo | local cargo = mw.ext.cargo | ||
Line 146: | Line 146: | ||
container:node(RowWidget.make('Sponsors', SponsorsWidget.make(args.sponsors, frame) )) | container:node(RowWidget.make('Sponsors', SponsorsWidget.make(args.sponsors, frame) )) | ||
end | end | ||
-- Check if there is a "links" argument and then do magic to add them all to arguments | -- Check if there is a "links" argument and then do magic to add them all to arguments | ||
Line 167: | Line 165: | ||
local transformedLinks = Links.transform(args) | local transformedLinks = Links.transform(args) | ||
local fullLinks = LinksWidget.make(transformedLinks, 'player') | local fullLinks = LinksWidget.make(transformedLinks, 'player') | ||
if fullLinks then | |||
container:node(Subheader.make('Links')) | |||
if | container:node(fullLinks) | ||
container:node(Subheader.make(' | end | ||
end | |||
-- Upcoming and live tournaments | |||
container:node(Tournaments(Subheader)) | |||
return container | return container | ||
end | end | ||
return Infobox | return Infobox |
Revision as of 15:42, 12 October 2023
Documentation for this module may be created at Module:Infobox person/doc
local getArgs = require('Module:Arguments').getArgs local Links = require('Module:Links') local Header = require('Module:Infobox/Widget/Header') local Subheader = require('Module:Infobox/Widget/Subheader') local LinksWidget = require('Module:Infobox/Widget/Links') local ListWidget = require('Module:Infobox/Widget/List') local LocationWidget = require('Module:Infobox/Widget/Location') local SponsorsWidget = require('Module:Infobox/Widget/Sponsors') local RowWidget = require('Module:Infobox/Widget/Row') local RoleWidget = require('Module:Infobox/Widget/Role') local stringifyDate = require('Module:Functions').stringifyDate local convertRole = require('Module:GameRoles').convertRole local Tournaments = require('Module:Infobox/Widget/Tournaments').get local cargo = mw.ext.cargo local Infobox = {} function Infobox.main(frame) local args = getArgs(frame) local headerNode = Header.make(args.title or mw.title.getCurrentTitle(), args.image) local container = mw.html.create('div') :addClass('ib') container:node(headerNode):node(Subheader.make('Player Information')) if args.name then container:node(RowWidget.make('Name', args.name)) end if args.romanized then container:node(RowWidget.make('Romanized name', args.romanized)) end if args.nationality then local category if args.team then category = mw.text.split(args.team, '/')[1] .. '/Players' else category = 'Players' end container:node(RowWidget.make('Nationality', LocationWidget.make(args.nationality, nil, category))) end if args.birthdate then container:node(RowWidget.make('Birthdate', stringifyDate(args.birthdate))) end -- add one for "signature" as in signature characters played -- Check if player is active in a team local transferResults = {} if not args.team or not args.game_role then local tables = 'Transfers' local fields = '_pageName, position' local cargoArgs = { where = 'id= "' .. mw.title.getCurrentTitle().text .. '" AND leavedate IS NULL AND inactivedate IS NULL' } transferResults = cargo.query(tables, fields, cargoArgs) end -- Check if player is part of an org if not args.team and #transferResults == 0 then local tables = 'Org_transfers' local fields = '_pageName, position' local cargoArgs = { where = 'id= "' .. mw.title.getCurrentTitle().text .. '" AND leavedate IS NULL AND inactivedate IS NULL' } orgTransferResults = cargo.query(tables, fields, cargoArgs) if #orgTransferResults > 0 then container:node(RowWidget.make('Org', orgTransferResults[1]._pageName, frame)) container:node(RowWidget.make('Org role', orgTransferResults[1].position)) end end -- Check for team region if args.team or active in a team local teamResults = {} if args.team or #transferResults > 0 then local tables = 'Teams' local fields = '_pageName, region' local team = args.team or transferResults[1]._pageName local cargoArgs = { where = '_pageName = "' .. team .. '" AND region IS NOT NULL' } teamResults = cargo.query(tables, fields, cargoArgs) end if args.team then if #teamResults> 0 then container:node(RowWidget.make('Region', LocationWidget.make(teamResults[1].region, nil, mw.text.split(args.team, '/')[1] .. '/Teams'))) end container:node(RowWidget.make('Team', args.team, frame)) else if #teamResults > 0 then container:node(RowWidget.make('Region', LocationWidget.make(teamResults[1].region, nil, mw.text.split(teamResults[1]._pageName, '/')[1] .. '/Teams'))) end if #transferResults > 0 then container:node(RowWidget.make('Team', transferResults[1]._pageName, frame)) end end if args.game_role then container:node(RowWidget.make('Role', args.game_role)) else if #transferResults > 0 then container:node(RowWidget.make('Role in team', convertRole(mw.text.split(transferResults[1]._pageName, '/')[1], transferResults[1].position))) elseif args.active_roles then local roleSplit = mw.text.split(args.active_roles, ',') local plural = #roleSplit > 1 and 's' or '' container:node(RowWidget.make('Active role' .. plural, ListWidget.make(args.active_roles))) end end if args.past_roles then local roleSplit = mw.text.split(args.past_roles, ',') local plural = #roleSplit > 1 and 's' or '' container:node(RowWidget.make('Past role' .. plural, ListWidget.make(args.past_roles))) end if args.active_player then container:node(RowWidget.make('Active as a Player', args.active_player)) end if args.active_coach then container:node(RowWidget.make('Active as a Coach', args.active_coach)) end if args.active_analyst then container:node(RowWidget.make('Active as an Analyst', args.active_analyst )) end if args.active_manager then container:node(RowWidget.make('Active as a Manager', args.active_manager)) end if args.active_talent then container:node(RowWidget.make('Active as a Talent', args.active_talent)) end if args.active_production then container:node(RowWidget.make('Active in Production', args.active_production )) end if args.alternativeid then container:node(RowWidget.make('Alternative IDs', args.alternativeid)) end if args.sponsors then container:node(RowWidget.make('Sponsors', SponsorsWidget.make(args.sponsors, frame) )) end -- Check if there is a "links" argument and then do magic to add them all to arguments if args.links then local splitLinks = mw.text.split(args.links, ',') for i = 1, #splitLinks do local split = mw.text.split(splitLinks[i], '=') args[split[1]] = split[2] end end -- Add dota2 api links if api id added if args.api_id then args.datdota = args.api_id args.dotabuff = args.api_id args.stratz = args.api_id end local transformedLinks = Links.transform(args) local fullLinks = LinksWidget.make(transformedLinks, 'player') if fullLinks then container:node(Subheader.make('Links')) container:node(fullLinks) end -- Upcoming and live tournaments container:node(Tournaments(Subheader)) return container end return Infobox