Homepage
Games
News
News βΎ
All
Transfers
Drama
Business
Sponsors
Mergers
Investors
Hires
Companies
More
People
Tournaments
Brands
Brands βΎ
Companies
Organizations
Sponsors
Other
Locations
Search
Editing
Module:AllResults
From TwogPedia
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local getArgs = require('Module:Arguments').getArgs local cargo = mw.ext.cargo local Func = require('Module:Functions') local getTeamLogo = Func.getTeamLogo local stringifyDate = Func.stringifyDate local prizeToString = Func.prizeToString local getTeamDisplaytitle = Func.getTeamDisplaytitle local Flags = require('Module:Flags') local p = {} local currentDate = os.date('%Y-%m-%d') function p.main(frame) local args = getArgs(frame) local currentTitle = mw.title.getCurrentTitle().text local split = mw.text.split(currentTitle, '/') local currentPage = split[1] .. '/' .. split[2] local parentDT = mw.ext.displaytitle.get(currentPage) local newDT = parentDT .. ' - Results' local seoArgs = { title_mode = 'replace', title = newDT .. ' {{!}} TwogPedia', description = 'Detailed results of tournaments and matches for ' .. parentDT, keywords = parentDT .. ',results,matches, placements' } mw.ext.displaytitle.set(newDT) local team = split[1] ~= 'People' and currentPage or nil -- If a player page, then check if local soloResults = nil local types = 0 if not team then -- Check if participated in solo tournaments local tables = 'Participants, Tournaments' local fields = 'Participants.team=team, Tournaments._pageName=_pageName, Tournaments.type=type, Tournaments.start=start, Tournaments.end=end, Tournaments.prize=prize, Tournaments.country=country, Tournaments.participants=participants, Tournaments.formatFilter=formatFilter, Tournaments.logoAll=logoAll, Tournaments.logoLight=logoLight, Tournaments.logoDark=logoDark, Tournaments.iconAll=iconAll, Tournaments.iconLight=iconLight, Tournaments.iconDark=iconDark' local cargoArgs = { join = 'Participants._pageName=Tournaments._pageName', where = 'Participants.players HOLDS "' .. currentPage .. '" AND team IS NULL', orderBy = 'Tournaments.end desc' } local results = cargo.query(tables, fields, cargoArgs) if #results > 0 then types = types + 1 soloResults = mw.html.create('div') createTable(results, soloResults, currentPage) end -- Check for all tournaments where player is part of a team local teamResults = nil cargoArgs.where = 'Participants.players HOLDS "' .. currentPage .. '" AND team IS NOT NULL' results = cargo.query(tables, fields, cargoArgs) if #results > 0 then teamResults = mw.html.create('div') types = types + 1 createTable(results, teamResults, results[1]._pageName, true) end if types > 1 then local str = '<tabber>' if soloResults then str = str .. '|-|Solo tournaments=' .. tostring(soloResults) end if teamResults then str = str .. '|-|Team tournaments=' .. tostring(teamResults) end str = str .. '</tabber>' return mw.html.create('div'):node(frame:preprocess(str)) else local container = mw.html.create('div') if soloResults then container:node(soloResults) end if teamResults then container:node(teamResults) end return container end else local tables = 'Participants, Tournaments' local fields = 'Tournaments._pageName=_pageName, Tournaments.type=type, Tournaments.start=start, Tournaments.end=end, Tournaments.prize=prize, Tournaments.country=country, Tournaments.participants=participants, Tournaments.formatFilter=formatFilter, Tournaments.logoAll=logoAll, Tournaments.logoLight=logoLight, Tournaments.logoDark=logoDark, Tournaments.iconAll=iconAll, Tournaments.iconLight=iconLight, Tournaments.iconDark=iconDark' local cargoArgs = { join = 'Participants._pageName=Tournaments._pageName', where = 'Participants.team="' .. currentPage .. '"', orderBy = 'Tournaments.end desc' } local results = cargo.query(tables, fields, cargoArgs) if #results > 0 then local tournament = results[1] local icon = tournament.iconAll or tournament.iconLight or tournament.iconDark or tournament.logoAll or tournament.logoDark or tournament.logoLight local container = mw.html.create('div') createTable(results, container, currentPage, team) return container end end end function createTable(results, container, page, team) local game = mw.text.split(page, '/')[1] if #results > 0 then local monthNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} local typeTh = mw.html.create('th'):wikitext('Type') local nameTh = mw.html.create('th'):wikitext('Name') local dateTh = mw.html.create('th'):wikitext('Date') local prizeTh = mw.html.create('th'):wikitext('Prize') local locationTh = mw.html.create('th'):wikitext('Location') local participantsTh = mw.html.create('th'):wikitext('Participants') local formatTh = mw.html.create('th'):wikitext('Format') local placementTh = mw.html.create('th'):wikitext('Placement') local tableHeader = mw.html.create('tr'):addClass('tournament__header'):node(typeTh):node(nameTh):node(dateTh):node(prizeTh):node(locationTh):node(participantsTh):node(formatTh):node(placementTh) local listTable = mw.html.create('table'):addClass('tournament__table'):node(tableHeader) container:node(listTable) for i = 1, #results do local result = results[i] if team and result.team then page = result.team game = mw.text.split(page, '/')[1] end local icon = result.iconAll ~= '' and result.iconAll or result.iconLight ~= '' and result.iconLight or result.iconDark ~= '' and result.iconDark or result.logoAll ~= '' and result.logoAll or result.logoDark ~= '' and result.logoDark or result.logoLight ~= '' and result.logoLight if not icon then icon = 'Tournament_placeholder.png' end local typeTd = mw.html.create('td') local nameTd = mw.html.create('td'):node(mw.html.create('div'):addClass('tournament__name'):wikitext('[[File:' .. icon .. '|25px]]'):wikitext('[[' .. result._pageName .. ']]')) local dateTd = mw.html.create('td') local prizeTd = mw.html.create('td'):wikitext('$' .. prizeToString(result.prize)) local locationTd = mw.html.create('td') local participantsTd = mw.html.create('td'):wikitext(result.participants) local formatTd = mw.html.create('td') local placementTd = mw.html.create('td') local tournamentType = result.type and mw.text.split(result.type, ',') or {} for j = 1, #tournamentType do typeTd:node(mw.html.create('div'):wikitext(tournamentType[j])) end local formatList = result.formatFilter and mw.text.split(result.formatFilter, ',') or {} for j = 1, #formatList do formatTd:node(mw.html.create('div'):wikitext(formatList[j])) end local startDate = 'TBD' if result.start then local year, month, day = result.start:match("(%d+)-(%d+)-(%d+)") local monthName = monthNames[tonumber(month)] startDate = monthName .. " " .. day .. ", " .. year end local endDate = 'TBD' if result['end'] then year, month, day = result['end']:match("(%d+)-(%d+)-(%d+)") monthName = monthNames[tonumber(month)] endDate = monthName .. " " .. day .. ", " .. year end dateTd:node(mw.html.create('div'):wikitext(startDate)):node(mw.html.create('div'):wikitext('-')):node(mw.html.create('div'):wikitext(endDate)) local tournamentRow = mw.html.create('tr'):node(typeTd):node(nameTd):node(dateTd):node(prizeTd):node(locationTd):node(participantsTd):node(formatTd):node(placementTd) local currentTime = os.time() if result.country then locationTd:node(mw.html.create('div'):addClass('tournament__location'):node(Flags.icon(result.country)):node(mw.html.create('div'):wikitext(Flags.CountryName(result.country)))) end local startTime = nil if result.start then startTime = mw.ustring.gsub(result.start, '(%d+)-(%d+)-(%d+)', function(year, month, day) return os.time({year=tonumber(year), month=tonumber(month), day=tonumber(day)}) end) end local endTime = nil if result['end'] then endTime = mw.ustring.gsub(result['end'], '(%d+)-(%d+)-(%d+)', function(year, month, day) return os.time({year=tonumber(year), month=tonumber(month), day=tonumber(day)}) end) end local date = mw.html.create('div') -- If live if (startTime ~= nil and os.difftime(currentTime, startTime) > 0) and (endTime == nil or os.difftime(currentTime, endTime) <= 0) then date:wikitext('LIVE') else local startDate = 'TBD' if result.start then local year, month, day = result.start:match("(%d+)-(%d+)-(%d+)") local monthName = monthNames[tonumber(month)] startDate = monthName .. " " .. day .. ", " .. year end local endDate = 'TBD' if result['end'] then year, month, day = result['end']:match("(%d+)-(%d+)-(%d+)") monthName = monthNames[tonumber(month)] endDate = monthName .. " " .. day .. ", " .. year end date:wikitext(startDate .. ' - ' .. endDate) end -- Get placement of team/player tables = "Prizes" fields = "placement, players, teams" where = team and 'teams HOLDS "' .. page .. '"' or 'players HOLDS "' .. page .. '"' cargoArgs = { where = where } local prizeResults = cargo.query(tables, fields, cargoArgs) if #prizeResults > 0 then placementTd:wikitext(prizeResults[1].placement) else placementTd:wikitext('TBD') end listTable:node(tournamentRow) -- Get matches of tournament local matches = tournamentMatches(page, result._pageName, team) if matches then local matchesTd = mw.html.create('td'):attr('colspan', 10):node(matches) local matchesRow = mw.html.create('tr'):node(matchesTd) listTable:node(matchesRow) end end return container:node(tournamentContainer) end end function tournamentMatches(page, tournament, team) local game = mw.text.split(tournament, '/')[1] local tables = 'AllMatches' local fields = '_ID, _pageName, p1, p2, p1score, p2score, winner, date, bestof, stage' local cargoArgs = { where = '_pageName LIKE "' .. tournament .. '%" AND (p1 = "' .. page .. '" OR p2="' .. page .. '") AND winner IS NOT NULL AND winner != "0"', limit = 1000, orderBy = 'date desc' } local results = cargo.query(tables, fields, cargoArgs) if #results > 0 then local dateTh = mw.html.create('th'):wikitext('Date') local scoreTh = mw.html.create('th'):wikitext('Score') local vsTh = mw.html.create('th'):wikitext('Opponent') local vodTh = mw.html.create('th'):wikitext('VODs') local headerRow = mw.html.create('tr'):addClass('headerRow'):node(dateTh):node(scoreTh):node(vsTh):node(vodTh) local tbl = mw.html.create('table'):addClass('striped-table w-100'):node(headerRow) for i = 1, #results do local result = results[i] local opponent local score local opponentScore if result.p1 == page then score = result.p1score opponentScore = result.p2score opponent = result.p2 else score = result.p2score opponentScore = result.p1score opponent = result.p1 end local dateTd = mw.html.create('td'):wikitext(stringifyDate(result.date) .. ' '):node(mw.html.create('abbr'):attr('title', 'Coordinated Universal Time'):wikitext('UTC')) local scoreTd = mw.html.create('td'):addClass('tc'):wikitext(score .. ':' .. opponentScore) local vsTd = mw.html.create('td') if team then vsTd:node(mw.html.create('div'):attr('style', 'display: flex; gap: 0.2rem; align-items: center; justify-content: center;'):node(getTeamLogo(opponent, game, '20x20px')):wikitext('[[' .. opponent .. '|' .. getTeamDisplaytitle(opponent, result.date) ..']]')) else vsTd:wikitext('[[' .. opponent .. ']]') end local vodTd = mw.html.create('td') local resultRow = mw.html.create('tr'):addClass('bodyRow'):node(dateTd):node(scoreTd):node(vsTd):node(vodTd) -- Get VODs if game == 'Dota2' then tables = 'Maps_Dota' fields = 'yt, vod' cargoArgs = { where = 'matchID ="' .. result._ID .. '"', orderBy = 'map' } local vods = cargo.query(tables, fields, cargoArgs) if #vods > 0 then for j = 1, #vods do local vod = vods[j] if vod.yt then vodTd:wikitext('[[File:Youtube.png|20x20px|link=https://www.youtube.com/watch?v=' .. vod.yt .. '|Map ' .. j .. ']]') end end end end tbl:node(resultRow) end return tbl else return nil end end return p
Summary:
Please note that all contributions to TwogPedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
TwogPedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Preview page with this template
Template used on this page:
Module:AllResults/doc
(
edit
)
No categories
Edit