Halo Esports Wiki
Register
[checked revision][checked revision]
Donut (talk | contribs)
No edit summary
Donut (talk | contribs)
No edit summary
Line 9: Line 9:
 
 
 
local team = args[1] or tostring(mw.title.getCurrentTitle())
 
local team = args[1] or tostring(mw.title.getCurrentTitle())
local tournamentType = args[2] or ''
+
local tournamentType = args.type or ''
 
local limit = args[3] or 5000
 
local limit = args[3] or 5000
   
Line 15: Line 15:
 
local Team = require('Module:Team').team
 
local Team = require('Module:Team').team
 
local League = require('Module:League').league
 
local League = require('Module:League').league
  +
local Game = require('Module:Game').game
 
  +
 
local tbl = mw.html.create('table')
 
local tbl = mw.html.create('table')
 
local teamlink = Team{team,"teamlinkname"}
 
local teamlink = Team{team,"teamlinkname"}
Line 26: Line 27:
 
:done()
 
:done()
 
:tag("tr")
 
:tag("tr")
  +
:tag("th"):css("width","60"):wikitext("Game"):done()
 
:tag("th"):css("width","60"):wikitext("Date"):done()
 
:tag("th"):css("width","60"):wikitext("Date"):done()
 
:tag("th"):css("width","60"):wikitext("Place"):done()
 
:tag("th"):css("width","60"):wikitext("Place"):done()
Line 39: Line 41:
 
place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
 
place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
 
tr = tbl:tag("tr")
 
tr = tbl:tag("tr")
  +
tr:tag('td'):wikitext(Game{row['Game']}):done()
 
tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
 
tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
 
:tag("td")
 
:tag("td")
Line 109: Line 112:
 
:done()
 
:done()
 
:tag("tr")
 
:tag("tr")
  +
:tag("th"):css("width","60"):wikitext("Game"):done()
 
:tag("th"):css("width","60"):wikitext("Date"):done()
 
:tag("th"):css("width","60"):wikitext("Date"):done()
 
:tag("th"):css("width","60"):wikitext("Place"):done()
 
:tag("th"):css("width","60"):wikitext("Place"):done()
Line 122: Line 126:
 
place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
 
place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
 
tr = tbl:tag("tr")
 
tr = tbl:tag("tr")
  +
tr:tag('td'):wikitext(Game{row['Game']}):done()
 
tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
 
tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
 
:tag("td")
 
:tag("td")
Line 162: Line 167:
 
--"TournamentResults.LastResult=LastResult",
 
--"TournamentResults.LastResult=LastResult",
 
--"TournamentResults.LastOpponent_Markup=LastOpponent",
 
--"TournamentResults.LastOpponent_Markup=LastOpponent",
  +
'InfoboxTournament.Game=Game',
 
"InfoboxTournament.League=League",
 
"InfoboxTournament.League=League",
 
}
 
}

Revision as of 17:37, 31 December 2018

Documentation for this module may be created at Module:TeamResults/doc

local p = {}

function p.teamResults( frame )
	if frame == mw.getCurrentFrame() then
		args = require( 'Module:ProcessArgs').norm()
	else
		frame = mw.getCurrentFrame()
	end
	
	local team = args[1] or tostring(mw.title.getCurrentTitle())
	local tournamentType = args.type or ''
	local limit = args[3] or 5000

	local placement = mw.loadData('Module:Placementnames')
	local Team = require('Module:Team').team
	local League = require('Module:League').league
	local Game = require('Module:Game').game
	
	local tbl = mw.html.create('table')
	local teamlink = Team{team,"teamlinkname"}
	local earnings = {}
	
	tbl:addClass("wikitable sortable"):css("font-size","90%")
		:tag("tr")
			:tag("th"):css({ background = "#E6E6E6", border = "1px solid black" }):attr("colspan","30")
			:wikitext(Team{team,"teamname"} .. ' 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("Prize"):done()
			:tag("th"):css("width","250"):wikitext("Event"):done()
			--:tag("th"):css("width","150"):wikitext("Last Result"):done()
			:tag("th"):wikitext("Roster"):done()
		:done()
		
		local result = p.load(teamlink, tournamentType, limit)
	
	for _,row in ipairs(result) do
		place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
		tr = tbl:tag("tr")
		tr:tag('td'):wikitext(Game{row['Game']}):done()
		tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
			:tag("td")
				:css({ ["background-color"] = "#" .. place["bgcolor"], color = place["fontcolor"], ["text-align"] = "center" })
				:wikitext('<span style="display:none;">' .. place.hiddensort .. "</span>'''" .. place.display .. "'''")
			:done()
			: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()
		
		teammates = {}
		teammatenames = mw.text.split(row["RosterNames"],",",true)
		teammatelinks = mw.text.split(row["RosterLinks"],",",true)
		roles = mw.text.split(row["Roles"],",",true)
		
		if teammatelinks[1] ~= "" then
			for index,teammatelink in ipairs(teammatelinks) do
				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
		tr:done()
	end
	
	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)
	
	return text
end

function p.shortList(frame) 
	if frame == mw.getCurrentFrame() then
		args = require( 'Module:ProcessArgs').norm()
	else
		frame = mw.getCurrentFrame()
	end
	
	local team = args[1] or tostring(mw.title.getCurrentTitle())
	local tournamentType = args[2] or 'Offline'
	local limit = args[3] or 5

	local placement = mw.loadData('Module:Placementnames')
	local Team = require('Module:Team').team
	local League = require('Module:League').league

	local tbl = mw.html.create('table')
	local teamlink = Team{team,"teamlinkname"}

	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 [[' .. teamlink .. '/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("Prize"):done()
			:tag("th"):css("width","250"):wikitext("Event"):done()
			--:tag("th"):css("width","150"):wikitext("Last Result"):done()
			:tag("th"):wikitext("Roster"):done()
		:done()
		
	local result = p.load(teamlink, tournamentType, limit)
	
	for _,row in ipairs(result) do
		place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name[[Category:Pages With Invalid Placement Names]]" }
		tr = tbl:tag("tr")
		tr:tag('td'):wikitext(Game{row['Game']}):done()
		tr:tag("td"):wikitext(row["Date"]):done() -- Need to format this right still
			:tag("td")
				:css({ ["background-color"] = "#" .. place["bgcolor"], color = place["fontcolor"], ["text-align"] = "center" })
				:wikitext('<span style="display:none;">' .. place.hiddensort .. "</span>'''" .. place.display .. "'''")
			:done()
			: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(row.Roster)
		tr:done()
	end
	
	text = tostring(tbl)
	
	return text
end

function p.load(teamlink, 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.Game=Game',
		"InfoboxTournament.League=League",
	}
	
	local cargotables = "TournamentRosters, TournamentResults, InfoboxTournament"
	local cargojoin = "TournamentResults.RosterPage = TournamentRosters._pageName, TournamentResults._pageName=InfoboxTournament._pageName"
	local cargofields = table.concat(fieldstable,",")
	local cargowhere = 'TournamentResults.TeamLink="' .. teamlink .. '" AND (TournamentRosters.TeamLink = TournamentResults.TeamLink)'
	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, groupBy = cargogroupBy, orderBy = cargoorderBy, limit=limit }
	local result = mw.ext.cargo.query(cargotables, cargofields, cargoquery)
	
	return result
end

return p