Fortnite Esports Wiki
((via Mediawiker ST3))
([ST] m_team)
(46 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
local util_args = require('Module:ArgsUtil')
 
local util_args = require('Module:ArgsUtil')
 
local util_cargo = require('Module:CargoUtil')
 
local util_cargo = require('Module:CargoUtil')
local util_game = require('Module:GameUtil')
+
local util_esports = require('Module:EsportsUtil')
local util_html = require('Module:HTMLUtil')
+
local util_html = require('Module:HtmlUtil')
 
local util_map = require('Module:MapUtil')
 
local util_table = require('Module:TableUtil')
 
local util_table = require('Module:TableUtil')
 
local util_text = require('Module:TextUtil')
 
local util_text = require('Module:TextUtil')
 
local util_toggle = require('Module:ToggleUtil')
 
local util_tournament = require('Module:TournamentUtil')
 
local util_tournament = require('Module:TournamentUtil')
  +
local util_vars = require('Module:VarsUtil')
 
i18n = require('Module:I18nUtil')
+
local i18n = require('Module:i18nUtil')
 
local lang = mw.getLanguage('en')
 
local sep = '%s*;;%s*'
 
   
 
local m_team = require('Module:Team')
 
local m_team = require('Module:Team')
local League = require('Module:League').league
 
local placement = require('Module:Placement')
 
   
  +
local Results = require('Module:TournamentResultsQueryAbstract'):extends()
local COLUMNS = { 'Date', 'TeamSize', 'Place', 'PRPoints', 'Event', 'Team', 'Roster' }
 
   
 
function Results:init()
local h = {}
 
  +
self:super('init', 'Player')
 
  +
self.limitOverviewpage = 10
function h.doQuery(player, show, use_redirect_table, args)
 
  +
self.limitEverything = 500
-- use_redirect_table will be false in self namespace
 
 
self.COLUMNS = { 'Date', 'TeamSize', 'PlaceDisplay', 'PRPoints', 'Region', 'Platform', 'Tournament', 'TeamDisplay', 'Roster' }
local tbl = {
 
tables = h.getTables(use_redirect_table),
 
join = h.getJoin(use_redirect_table),
 
where = h.getWhere(player, use_redirect_table, args),
 
fields = h.getFields(player, use_redirect_table),
 
groupBy = 'TournamentResults.UniqueLine',
 
orderBy = 'TournamentResults.Date DESC',
 
limit = h.getLimit(show),
 
}
 
return util_cargo.queryAndCast(tbl)
 
 
end
 
end
   
 
local p = {}
function h.getTables(redirects)
 
local tbl = { 'TournamentRosters', 'TournamentResults', 'InfoboxTournament=Tournaments' }
 
if redirects then
 
tbl[#tbl+1] = 'PlayerRedirects'
 
end
 
return tbl
 
end
 
   
function h.getJoin(redirects)
+
function p.main(frame)
local tbl = {
+
local args = util_args.merge()
  +
return Results():run(args)
'TournamentRosters.UniqueLine = TournamentResults.UniqueLine',
 
'TournamentResults.OverviewPage=Tournaments._pageName'
 
}
 
if redirects then
 
tbl[#tbl+1] = 'TournamentRosters.RosterLinks HOLDS PlayerRedirects.AllName'
 
end
 
return util_table.concat(tbl, ', ')
 
 
end
 
end
   
function h.getWhere(player, use_redirect_table, args)
+
function Results:getSubject(args)
 
return args[1] or mw.title.getCurrentTitle().baseText
local tbl = {
 
'TournamentResults.PageAndTeam IS NOT NULL',
 
'TournamentRosters.PageAndTeam IS NOT NULL',
 
args.minplacement and ('Place_Number <= "%s"'):format(args.minplacement),
 
}
 
h.addRedirectWhereConditionToWhere(tbl, player, use_redirect_table)
 
return util_cargo.concatWhere(tbl)
 
 
end
 
end
   
  +
-- cargo
function h.addRedirectWhereConditionToWhere(tbl, player, use_redirect_table)
 
 
function Results:getTables(args)
if use_redirect_table then
 
  +
local tables = self:super('getTables', args)
tbl[#tbl+1] = ('PlayerRedirects._pageName="%s"'):format(player)
 
 
if util_args.castAsBool(args.noredirects) then return tables end
tbl[#tbl+1] = h.getRosterHoldsCondition('PlayerRedirects.AllName', util_cargo.fakeHoldsVariable)
 
  +
table.insert(tables, 1, 'PlayerRedirects=PR')
else
 
  +
return tables
tbl[#tbl+1] = h.getRosterHoldsCondition(player, util_cargo.fakeHolds)
 
end
 
 
end
 
end
   
function h.getRosterHoldsCondition(str, f)
+
function Results:getJoin(args)
local tbl = {
+
local join = self:super('getJoin', args)
  +
if util_args.castAsBool(args.noredirects) then return join end
f('TournamentRosters.RosterLinks', str, ' *;; '),
 
  +
table.insert(join, 1, 'TRP.Player=PR.AllName')
f('TournamentResults.RosterLinks_Res', str, ' *;; *'),
 
 
return join
}
 
return util_cargo.concatWhereOr(tbl)
 
 
end
 
end
   
function h.getFields(player, redirects)
+
function Results:getFields(args)
local tbl = {
+
local fields = self:super('getFields', args)
  +
fields[#fields+1] = 'TRP.Player=ThisName'
"TournamentResults.Team=Team",
 
  +
fields[#fields+1] = 'TRP.Team=ThisTeam'
"TournamentResults.Prize_Markup=PrizeMarkup",
 
  +
fields[#fields+1] = 'T.Region'
"Tournaments.Date=Date",
 
 
return fields
"TournamentResults.Place=Place",
 
"Tournaments.Name=Event",
 
"Tournaments.TeamSize=TeamSize",
 
"TournamentResults.Phase=Phase",
 
"Tournaments._pageName=EventLink",
 
"TournamentRosters.RosterLinks__full=RosterLinks",
 
"TournamentRosters.Roster=RosterNames",
 
"Tournaments.League=League",
 
"TournamentResults.PRPoints=PRPoints",
 
}
 
if redirects then
 
tbl[#tbl+1] = "CONCAT(PlayerRedirects.AllName)=ThisName"
 
else
 
tbl[#tbl+1] = ('CONCAT("%s")=ThisName'):format(player)
 
end
 
return tbl
 
 
end
 
end
   
  +
function Results:getSubjectWhereCondition(args, subject)
function h.getLimit(show)
 
  +
return ('PR.OverviewPage="%s"'):format(subject)
if show == 'overviewpage' then
 
return 10
 
elseif show == 'everything' then
 
return 500
 
end
 
return nil
 
 
end
 
end
   
  +
-- format rows
function h.getTeammates(namesstr, linksstr, this)
 
  +
local teammates = {}
 
  +
function Results:getOneMember(link, row)
local names = mw.text.split(namesstr or '',sep)
 
  +
return util_esports.playerLinkedOrBold(link, row.ThisName)
local links = mw.text.split(linksstr or '',sep)
 
for i,link in ipairs(links) do
 
if mw.ustring.lower(link) == mw.ustring.lower(this) then
 
teammates[#teammates+1] = ("'''%s'''"):format(names[i])
 
else
 
teammates[#teammates+1] = ("[[%s|%s]]"):format(link, names[i])
 
end
 
end
 
return table.concat(teammates, ", ")
 
 
end
 
end
   
function h.intro(args)
+
function Results:getTeamDisplay(row)
 
return m_team.rightshortlinked(row.ThisTeam)
if args.show == 'overviewpage' then
 
return "''" .. i18n.print('seeall', mw.title.getCurrentTitle().rootText) .. "''"
 
end
 
return ''
 
 
end
 
end
   
  +
-- output
local p = {}
 
  +
function Results:makeHeaderText(subject)
 
 
return i18n.print('TournamentResults', subject)
function p.playerResults( frame )
 
i18n.initGlobalFromFile('PlayerResults')
 
local args = util_args.merge(true)
 
local player = args[1] or mw.title.getCurrentTitle().baseText
 
local use_redirect_table = not util_args.castAsBool(args.noredirects)
 
local result = h.doQuery(player, args.show, use_redirect_table, args)
 
 
local output = mw.html.create('div')
 
if args.show == 'everything' then
 
output = output:tag('div')
 
output:attr('id','trf-content')
 
end
 
local tbl = output:tag('table')
 
tbl:addClass("wikitable sortable hoverable-rows"):css("font-size","90%")
 
 
util_html.makeColspanHeader(tbl, i18n.print('TournamentResults', player), #COLUMNS)
 
util_html.headerFromI18n(tbl, COLUMNS)
 
 
for _,row in ipairs(result) do
 
tr = tbl:tag("tr")
 
tr:tag("td"):addClass('achievements-date'):wikitext(row.Date):done()
 
tr:tag('td'):wikitext(util_game.teamsize_names[row.TeamSize])
 
tr:node(placement.makeNode(row.Place))
 
tr:tag('td'):wikitext(row.PRPoints)
 
tr:tag("td")
 
:wikitext(League{row.League, 'onlyimage'})
 
:wikitext(util_text.intLink(row.EventLink, h.eventDisplay(row)))
 
 
 
tr:tag("td"):wikitext(m_team.rightshortlinked(row.Team))
 
tr:tag("td"):wikitext(h.getTeammates(row.RosterNames, row.RosterLinks, row.ThisName))
 
end
 
 
frame:callParserFunction{name="#vardefine:hasnewresults",args={"yes"}}
 
 
return h.intro(args), output
 
 
end
 
end
   
function h.eventDisplay(row)
+
function Results:finalizeTable(tbl, result, subject)
  +
-- pass
if row.Phase then
 
return ('%s - %s'):format(row.Event, row.Phase)
 
end
 
return row.Event
 
 
end
 
end
   

Revision as of 20:14, 16 January 2022

Edit the documentation or categories for this module. This module has an i18n file.


local util_args = require('Module:ArgsUtil')
local util_cargo = require('Module:CargoUtil')
local util_esports = require('Module:EsportsUtil')
local util_html = require('Module:HtmlUtil')
local util_map = require('Module:MapUtil')
local util_table = require('Module:TableUtil')
local util_text = require('Module:TextUtil')
local util_toggle = require('Module:ToggleUtil')
local util_tournament = require('Module:TournamentUtil')
local util_vars = require('Module:VarsUtil')
local i18n = require('Module:i18nUtil')
local lang = mw.getLanguage('en')

local m_team = require('Module:Team')

local Results = require('Module:TournamentResultsQueryAbstract'):extends()

function Results:init()
	self:super('init', 'Player')
	self.limitOverviewpage = 10
	self.limitEverything = 500
	self.COLUMNS = { 'Date', 'TeamSize', 'PlaceDisplay', 'PRPoints', 'Region', 'Platform', 'Tournament', 'TeamDisplay', 'Roster' }
end

local p = {}

function p.main(frame)
	local args = util_args.merge()
	return Results():run(args)
end

function Results:getSubject(args)
	return args[1] or mw.title.getCurrentTitle().baseText
end

-- cargo
function Results:getTables(args)
	local tables = self:super('getTables', args)
	if util_args.castAsBool(args.noredirects) then return tables end
	table.insert(tables, 1, 'PlayerRedirects=PR')
	return tables
end

function Results:getJoin(args)
	local join = self:super('getJoin', args)
	if util_args.castAsBool(args.noredirects) then return join end
	table.insert(join, 1, 'TRP.Player=PR.AllName')
	return join
end

function Results:getFields(args)
	local fields = self:super('getFields', args)
	fields[#fields+1] = 'TRP.Player=ThisName'
	fields[#fields+1] = 'TRP.Team=ThisTeam'
	fields[#fields+1] = 'T.Region'
	return fields
end

function Results:getSubjectWhereCondition(args, subject)
	return ('PR.OverviewPage="%s"'):format(subject)
end

-- format rows

function Results:getOneMember(link, row)
	return util_esports.playerLinkedOrBold(link, row.ThisName)
end

function Results:getTeamDisplay(row)
	return m_team.rightshortlinked(row.ThisTeam)
end

-- output
function Results:makeHeaderText(subject)
	return i18n.print('TournamentResults', subject)
end

function Results:finalizeTable(tbl, result, subject)
	-- pass
end

return p