Halo Esports Wiki

We are currently performing extensive maintenance to this wiki and as a result there will likely be errors. Please be patient while we work to fix all problems.

READ MORE

Halo Esports Wiki
Advertisement

To edit the documentation or categories for this module, click here.


--local Role = require('Module:Role').role

local p = {}

function p.playerResults( frame )
	if frame == mw.getCurrentFrame() then
		args = require( 'Module:ProcessArgs').norm()
	else
		frame = mw.getCurrentFrame()
	end
	
	local player = args[1] or tostring(mw.title.getCurrentTitle())
	local tournamentType = args.type or ''
	local limit = args[3] or ((args.show == 'everything') and 5000 or 10)
	
	local result = p.load(player, tournamentType, limit)
	
	mw.log(result)
	
	local m_team = require('Module:Team')
	local League = require('Module:League').league
	local placement = require('Module:Placement')
	local Game = require('Module:Game').game

	local tbl = mw.html.create('table')
	tbl:addClass("wikitable sortable"):css("font-size","90%")
		:tag("tr")
			:tag("th"):css({ background = "#E6E6E6", border = "1px solid black" }):attr("colspan","30")
			:wikitext(player .. ' Tournament Results'):done()
		:done()
		:tag("tr")
			:tag("th"):css("width","60"):wikitext("Game"):done()
			:tag("th"):css("width","60"):wikitext("Date"):done()
			:tag("th"):css("width","60"):wikitext("Place"):done()
			:tag("th"):css("width","80"):wikitext('<abbr title="This prize was won by the team and does not necessarily reflect money earned by the player">Prize</abbr>'):done()
			:tag("th"):css("width","250"):wikitext("Event"):done()
			--:tag("th"):css("width","150"):wikitext("Last Result"):done()
			:tag("th"):css("width","250"):wikitext("Team"):done()
			:tag("th"):wikitext("Roster"):done()
		:done()
	
	local earnings = {}
	
	for _,row in ipairs(result) do
		mw.log('result')
		tr = tbl:tag("tr")
		tr:tag('td'):wikitext(Game{row['Game']}):done()
		tr:tag("td"):css({ ['white-space'] = 'nowrap' }):wikitext(row["Date"]):done() -- Need to format this right still
			:node(placement.makeNode(row.Place))
			:tag("td"):wikitext(row["PrizeMarkup"]):done()
		tdEvent = tr:tag("td"):wikitext(League{row["League"],"onlyimage"} .. " [[" .. row["EventLink"] .. "|" .. row["Event"])
		if row["Phase"] ~= "" then
			tdEvent:wikitext(" - " .. row["Phase"])
		end 
		tdEvent:wikitext("]]"):done()
		
		tr:tag("td"):wikitext(m_team.rightmediumlinked(row.TeamLink))
		
		teammates = {}
		teammatenames = mw.text.split(row["RosterNames"],",",true)
		teammatelinks = mw.text.split(row["RosterLinks"],",",true)
		roles = mw.text.split(row["Roles"],",",true)
		
		for index,teammatelink in ipairs(teammatelinks) do
			if mw.ustring.lower(teammatelink) == mw.ustring.lower(player--[[row["ThisName"]]) then -- TODO
				teammates[#teammates+1] = (roles[index] or '') .. "&nbsp;'''" .. teammatenames[index] .. "'''"
			else
				teammates[#teammates+1] = (roles[index] or '') .. "&nbsp;[[" .. teammatelink .. "|" .. teammatenames[index] .. "]]"
			end
		end
		tr:tag("td"):wikitext(table.concat(teammates, " &#8226; "))
		
		if row["Prize"] ~= "" then
			earnings[row["PrizeUnit"]] = (earnings[row["PrizeUnit"]] or 0) + tonumber(row["Prize"],10)
		end
		
	end
	
	local td = tbl:tag("tr")
		:tag("th"):attr("colspan","30"):wikitext("Total Prize: ")
	
	local earningstable = {}
	
	for currency, amount in pairs(earnings) do
		earningstable[#earningstable+1] = currency .. " " .. mw.getLanguage('en'):formatNum(amount)
	end
	
	td:wikitext(table.concat(earningstable," &#8226; ")):done()
	
	text = tostring(tbl)
	
	frame:callParserFunction{name="#vardefine:hasnewresults",args={"yes"}}
	
	return text
	
end

function p.shortList(frame) 
	if frame == mw.getCurrentFrame() then
		args = require( 'Module:ProcessArgs').norm()
	else
		frame = mw.getCurrentFrame()
	end
	
	local player = args[1] or tostring(mw.title.getCurrentTitle())
	
	local m_team = require('Module:Team')
	local League = require('Module:League').league
	local placement = require('Module:Placement')
	local Game = require('Module:Game').game
	
	local result = p.load(player, 'offline', 5)
	
	local tbl = mw.html.create('table')
	tbl:addClass("wikitable sortable"):css("font-size","90%")
		:tag("tr")
			:tag("th"):css({ background = "#E6E6E6", border = "1px solid black" }):attr("colspan","30")
			:wikitext('Recent Tournament Results [[' .. player .. '/Tournament Results|(View All)]]'):done()
		:done()
		:tag("tr")
			:tag("th"):css("width","60"):wikitext("Game"):done()
			:tag("th"):css("width","60"):wikitext("Date"):done()
			:tag("th"):css("width","60"):wikitext("Place"):done()
			:tag("th"):css("width","80"):wikitext('<abbr title="This prize was won by the team and does not necessarily reflect money earned by the player">Prize</abbr>'):done()
			:tag("th"):css("width","250"):wikitext("Event"):done()
			--:tag("th"):css("width","150"):wikitext("Last Result"):done()
			:tag("th"):css("width","250"):wikitext("Team"):done()
			--:tag("th"):wikitext("Roster"):done()
		:done()
	
	local earnings = {}

	for _,row in ipairs(result) do
		mw.log('result')
		tr = tbl:tag("tr")
		tr:tag('td'):wikitext(Game{row['Game']}):done()
		tr:tag("td"):css({ ['white-space'] = 'nowrap' }):wikitext(row["Date"]):done() -- Need to format this right still
			:node(placement.makeNode(row.Place))
			:tag("td"):wikitext(row["PrizeMarkup"]):done()
		tdEvent = tr:tag("td"):wikitext(League{row["League"],"onlyimage"} .. " [[" .. row["EventLink"] .. "|" .. row["Event"])
		if row["Phase"] ~= "" then
			tdEvent:wikitext(" - " .. row["Phase"])
		end 
		tdEvent:wikitext("]]"):done()
			
		tr:tag("td"):wikitext(m_team.rightshortlinked(row.TeamLink))
		
		if row["Prize"] ~= "" then
			earnings[row["PrizeUnit"]] = (earnings[row["PrizeUnit"]] or 0) + tonumber(row["Prize"],10)
		end
		
	end
	
	local td = tbl:tag("tr")
		--:tag("th"):attr("colspan","30"):wikitext("Total Prize: ")
	
	local earningstable = {}
	
	td:wikitext(table.concat(earningstable," &#8226; ")):done()
	
	text = tostring(tbl)
	
	frame:callParserFunction{name="#vardefine:hasnewresults",args={"yes"}}
	
	return text
		
end

function p.load(player, tournamentType, limit) 
	local fieldstable = {
		"TournamentResults.TeamLink=TeamLink",
		"TournamentResults.Prize_Markup=PrizeMarkup",
		"TournamentResults.PrizeOther=PrizeOther",
		"TournamentResults.Prize=Prize",
		"TournamentResults.PrizeUnit=PrizeUnit",
		"TournamentResults.Date=Date",
		"TournamentResults.Place=Place",
		"TournamentResults.Event=Event",
		"TournamentResults.Phase=Phase",
		"CONCAT(TournamentResults._pageName)=EventLink",
		"TournamentRosters.RosterLinks__full=RosterLinks",
		"TournamentRosters.Roster=RosterNames",
		'TournamentRosters.Roster_Linked=Roster',
		"TournamentRosters.Roles=Role",
		"TournamentRosters.Roles_Markup=Roles",
		--"TournamentResults.LastResult=LastResult",
		--"TournamentResults.LastOpponent_Markup=LastOpponent",
		"InfoboxTournament.League=League",
		'InfoboxTournament.Game=Game',
		"CONCAT(PlayerRedirects.AllName)=ThisName",
	}
	
	local cargotables = "TournamentRosters, TournamentResults, InfoboxTournament, PlayerRedirects"
	local cargojoin = 'TournamentRosters._pageName = TournamentResults.RosterPage, TournamentResults._pageName=InfoboxTournament._pageName, TournamentRosters.RosterLinks HOLDS PlayerRedirects.AllName'
	local cargofields = table.concat(fieldstable,",")
	local cargowhere = 'PlayerRedirects._pageName="' .. player .. '" AND TournamentRosters.UniqueLine = TournamentResults.UniqueLine'
	local cargogroupBy = "TournamentResults.UniqueLine"
	local cargoorderBy = "TournamentResults.Date desc"

	if tournamentType and tournamentType ~= '' then 
		cargowhere = cargowhere .. ' AND InfoboxTournament.Type = "' .. tournamentType .. '" '
	end 
	if not limit then
		limit = 5000
	end 
	
	local cargoquery = { where = cargowhere, join = cargojoin, orderBy = cargoorderBy, groupBy=cargogroupBy, limit=limit }
	local result = mw.ext.cargo.query(cargotables, cargofields, cargoquery)
	mw.log('return result')
	mw.log(result)
	
	return result
end

return p
Advertisement