((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 |
+ | local util_esports = require('Module:EsportsUtil') |
− | local util_html = require('Module: |
+ | local util_html = require('Module:HtmlUtil') |
⚫ | |||
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_tournament = require('Module:TournamentUtil') |
local util_tournament = require('Module:TournamentUtil') |
||
+ | local util_vars = require('Module:VarsUtil') |
||
− | |||
− | i18n = require('Module: |
+ | local i18n = require('Module:i18nUtil') |
⚫ | |||
− | |||
⚫ | |||
local m_team = require('Module:Team') |
local m_team = require('Module:Team') |
||
⚫ | |||
⚫ | |||
+ | local Results = require('Module:TournamentResultsQueryAbstract'):extends() |
||
⚫ | |||
⚫ | |||
− | 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 |
||
⚫ | |||
− | 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 tbl = { 'TournamentRosters', 'TournamentResults', 'InfoboxTournament=Tournaments' } |
||
− | if redirects then |
||
− | tbl[#tbl+1] = 'PlayerRedirects' |
||
− | end |
||
⚫ | |||
− | end |
||
− | function |
+ | function p.main(frame) |
− | local |
+ | 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 |
+ | function Results:getSubject(args) |
⚫ | |||
− | 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) |
||
⚫ | |||
− | if use_redirect_table then |
||
+ | local tables = self:super('getTables', args) |
||
− | tbl[#tbl+1] = ('PlayerRedirects._pageName="%s"'):format(player) |
||
⚫ | |||
− | 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 |
+ | function Results:getJoin(args) |
− | local |
+ | 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 util_cargo.concatWhereOr(tbl) |
||
end |
end |
||
− | function |
+ | function Results:getFields(args) |
− | local |
+ | 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", |
||
⚫ | |||
− | "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 |
||
⚫ | |||
end |
end |
||
+ | function Results:getSubjectWhereCondition(args, subject) |
||
⚫ | |||
+ | return ('PR.OverviewPage="%s"'):format(subject) |
||
− | if show == 'overviewpage' then |
||
⚫ | |||
− | 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 |
+ | function Results:getTeamDisplay(row) |
⚫ | |||
− | if args.show == 'overviewpage' then |
||
− | return "''" .. i18n.print('seeall', mw.title.getCurrentTitle().rootText) .. "''" |
||
− | end |
||
− | return '' |
||
end |
end |
||
+ | -- output |
||
− | local p = {} |
||
+ | function Results:makeHeaderText(subject) |
||
− | |||
⚫ | |||
− | function p.playerResults( frame ) |
||
− | i18n.initGlobalFromFile('PlayerResults') |
||
− | local args = util_args.merge(true) |
||
⚫ | |||
⚫ | |||
− | local result = h.doQuery(player, args.show, use_redirect_table, args) |
||
− | |||
⚫ | |||
− | 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.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(h.getTeammates(row.RosterNames, row.RosterLinks, row.ThisName)) |
||
− | end |
||
− | |||
− | frame:callParserFunction{name="#vardefine:hasnewresults",args={"yes"}} |
||
− | |||
− | return h.intro(args), output |
||
end |
end |
||
− | function |
+ | 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