Module:PlayerResults2v2

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

local p = {}

function p.playerResults2v2( 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 = mw.loadData('Module:Placementnames') 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('Prize '):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') place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name" } 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 :tag("td") :css({ ["background-color"] = "#" .. place["bgcolor"], color = place["fontcolor"], ["text-align"] = "center" }) :wikitext(' ' .. place.hiddensort .. " " .. place.display .. "") :done :tag("td"):wikitext(row["PrizeMarkup"]):done tdEvent = tr:tag("td"):wikitext(League{row["League"],"onlyimage"} .. " " .. 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 '') .. " '''" .. teammatenames[index] .. "'''"			else teammates[#teammates+1] = (roles[index] or '') .. " " .. 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 = mw.loadData('Module:Placementnames') 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 (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"):css("width","250"):wikitext("Team"):done --:tag("th"):wikitext("Roster"):done :done local earnings = {}

for _,row in ipairs(result) do		mw.log('result') place = placement[string.lower(row["Place"])] or { bgcolor = "", hiddensort = "", fontcolor = "red", display = "Invalid Placement Name" } 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 :tag("td") :css({ ["background-color"] = "#" .. place["bgcolor"], color = place["fontcolor"], ["text-align"] = "center" }) :wikitext(' ' .. place.hiddensort .. " " .. place.display .. "") :done :tag("td"):wikitext(row["PrizeMarkup"]):done tdEvent = tr:tag("td"):wikitext(League{row["League"],"onlyimage"} .. " " .. 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 = { "TournamentResults2v2.TeamLink=TeamLink", "TournamentResults2v2.Prize_Markup=PrizeMarkup", "TournamentResults2v2.PrizeOther=PrizeOther", "TournamentResults2v2.Prize=Prize", "TournamentResults2v2.PrizeUnit=PrizeUnit", "TournamentResults2v2.Date=Date", "TournamentResults2v2.Place=Place", "TournamentResults2v2.Event=Event", "TournamentResults2v2.Phase=Phase", "CONCAT(TournamentResults2v2._pageName)=EventLink", "TournamentRosters2v2.RosterLinks__full=RosterLinks", "TournamentRosters2v2.Roster=RosterNames", 'TournamentRosters2v2.Roster_Linked=Roster', "TournamentRosters2v2.Roles=Role", "TournamentRosters2v2.Roles_Markup=Roles", --"TournamentResults2v2.LastResult=LastResult", --"TournamentResults2v2.LastOpponent_Markup=LastOpponent", "Tournaments.League=League", 'Tournaments.Game=Game', "CONCAT(PlayerRedirects.AllName)=ThisName", }	local cargotables = "TournamentRosters2v2, TournamentResults2v2, Tournaments, PlayerRedirects" local cargojoin = 'TournamentRosters2v2._pageName = TournamentResults2v2.RosterPage, TournamentResults2v2._pageName=Tournaments._pageName, TournamentRosters2v2.RosterLinks HOLDS PlayerRedirects.AllName' local cargofields = table.concat(fieldstable,",") local cargowhere = 'PlayerRedirects._pageName="' .. player .. '" AND TournamentRosters2v2.TeamLink = TournamentResults2v2.TeamLink' local cargogroupBy = "TournamentResults2v2.UniqueLine" local cargoorderBy = "TournamentResults2v2.Date desc"

if tournamentType and tournamentType ~= '' then cargowhere = cargowhere .. ' AND Tournaments.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