Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Standings: Difference between revisions

From eSportsAmaze
Created page with "local p = {} function p.main(frame) local args = frame:getParent().args local tournament = args.tournament or "" local stage = args.stage or "" local group = args.group or "" local qlimit = tonumber(args.qlimit) or tonumber(frame:callParserFunction('#var', 'qlimit')) or 8 local estart = tonumber(args.estart) or tonumber(frame:callParserFunction('#var', 'estart')) or 13 -- Query Cargo Data local tables = "StageStandings" local fields = "team, teamshort, matchesplayed, w..."
 
No edit summary
Line 1: Line 1:
local p = {}
local p = {}
local cargo = mw.ext.cargo


function p.main(frame)
function p.main(frame)
local args = frame:getParent().args
    local args = frame:getParent().args
local tournament = args.tournament or ""
    local tournament = args.tournament or ""
local stage = args.stage or ""
    local stage = args.stage or ""
local group = args.group or ""
    local qlimit = tonumber(args.qlimit) or 8
local qlimit = tonumber(args.qlimit) or tonumber(frame:callParserFunction('#var', 'qlimit')) or 8
    local estart = tonumber(args.estart) or 13
local estart = tonumber(args.estart) or tonumber(frame:callParserFunction('#var', 'estart')) or 13


-- Query Cargo Data
    -- Query
local tables = "StageStandings"
    local tables = "StageStandings"
local fields = "team, teamshort, matchesplayed, wwcd, placepts, elimpts, totalpts, lastmatchrank"
    local fields = "team, teamshort, matchesplayed, wwcd, placepts, elimpts, totalpts, groupname"
local queryArgs = {
    local queryArgs = {
where = "tournament = '" .. tournament .. "' AND stage = '" .. stage .. "'",
        where = "tournament = '" .. tournament .. "' AND stage = '" .. stage .. "'",
orderBy = "totalpts DESC, wwcd DESC, placepts DESC, elimpts DESC, lastmatchrank ASC"
        orderBy = "totalpts DESC, wwcd DESC, placepts DESC, elimpts DESC"
}
    }
   
    local results = cargo.query(tables, fields, queryArgs)


if group ~= "" then
    -- Build Table
queryArgs.where = queryArgs.where .. " AND groupname = '" .. group .. "'"
    local root = mw.html.create('table')
end
    root:addClass('match-card-table standings-table')
        :css('width', '100%')
        :css('border-collapse', 'collapse')


local results = mw.ext.cargo.query(tables, fields, queryArgs)
    -- Headers
    local header = root:tag('tr')
    header:tag('th'):wikitext('#')
    header:tag('th'):wikitext('Team')
    header:tag('th'):wikitext('MP')
    header:tag('th'):wikitext('WWCD')
    header:tag('th'):addClass('nomobile'):wikitext('Place')
    header:tag('th'):wikitext('Elims')
    header:tag('th'):wikitext('Total')


-- Build the Table
    -- Rows
local root = mw.html.create('table')
    for i, row in ipairs(results) do
root:addClass('match-card-table standings-table')
        local rowClass = "qual-mid"
:css('width', '100%')
        if i <= qlimit then rowClass = "qual-yes"
:css('border-collapse', 'collapse')
        elseif i >= estart then rowClass = "qual-no" end
       
        local tr = root:tag('tr')
        tr:addClass('match-card-row ' .. rowClass)
        tr:attr('data-value', row.groupname) -- Crucial for your JS Filter!
       
        -- Rank
        tr:tag('td'):addClass('rank-cell')
       
        -- Team
        local teamTD = tr:tag('td'):addClass('team-cell')
        teamTD:wikitext('[[' .. row.team .. ']]')
       
        -- Stats
        tr:tag('td'):css('text-align', 'center'):wikitext(row.matchesplayed)
        tr:tag('td'):css('text-align', 'center'):wikitext(row.wwcd)
        tr:tag('td'):addClass('nomobile'):css('text-align', 'center'):wikitext(row.placepts)
        tr:tag('td'):css('text-align', 'center'):wikitext(row.elimpts)
        tr:tag('td'):addClass('total-cell'):wikitext(row.totalpts)
    end


-- Header Row
    return tostring(root)
local header = root:tag('tr')
header:tag('th'):css('width', '40px'):css('text-align', 'center'):wikitext('#')
header:tag('th'):css('text-align', 'left'):wikitext('Team')
header:tag('th'):css('width', '50px'):css('text-align', 'center'):wikitext('MP')
header:tag('th'):css('width', '50px'):css('text-align', 'center'):wikitext('WWCD')
header:tag('th'):addClass('nomobile'):css('width', '60px'):css('text-align', 'center'):wikitext('Place')
header:tag('th'):css('width', '60px'):css('text-align', 'center'):wikitext('Elims')
header:tag('th'):css('width', '70px'):css('text-align', 'center'):wikitext('Total')
 
-- Data Rows
for i, row in ipairs(results) do
local rowclass = "qual-mid"
if i <= qlimit then
rowclass = "qual-yes"
elseif i >= estart then
rowclass = "qual-no"
end
 
local tr = root:tag('tr')
tr:addClass('match-card-row ' .. rowclass)
 
-- Rank Cell
tr:tag('td'):addClass('rank-cell'):wikitext('')
 
-- Team Cell
local teamCell = tr:tag('td'):addClass('team-cell')
teamCell:tag('span'):addClass('nomobile'):wikitext('[[' .. row.team .. ']]')
teamCell:tag('span'):addClass('mobile-only'):wikitext('[[' .. row.team .. '|' .. row.teamshort .. ']]')
 
-- Data Cells
tr:tag('td'):css('text-align', 'center'):wikitext(row.matchesplayed)
tr:tag('td'):css('text-align', 'center'):wikitext(row.wwcd)
tr:tag('td'):addClass('nomobile'):css('text-align', 'center'):wikitext(row.placepts)
tr:tag('td'):css('text-align', 'center'):wikitext(row.elimpts)
tr:tag('td'):addClass('total-cell'):wikitext(row.totalpts)
end
 
return tostring(root)
end
end


return p
return p

Revision as of 00:18, 25 January 2026

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

local p = {}
local cargo = mw.ext.cargo

function p.main(frame)
    local args = frame:getParent().args
    local tournament = args.tournament or ""
    local stage = args.stage or ""
    local qlimit = tonumber(args.qlimit) or 8
    local estart = tonumber(args.estart) or 13

    -- Query
    local tables = "StageStandings"
    local fields = "team, teamshort, matchesplayed, wwcd, placepts, elimpts, totalpts, groupname"
    local queryArgs = {
        where = "tournament = '" .. tournament .. "' AND stage = '" .. stage .. "'",
        orderBy = "totalpts DESC, wwcd DESC, placepts DESC, elimpts DESC"
    }
    
    local results = cargo.query(tables, fields, queryArgs)

    -- Build Table
    local root = mw.html.create('table')
    root:addClass('match-card-table standings-table')
        :css('width', '100%')
        :css('border-collapse', 'collapse')

    -- Headers
    local header = root:tag('tr')
    header:tag('th'):wikitext('#')
    header:tag('th'):wikitext('Team')
    header:tag('th'):wikitext('MP')
    header:tag('th'):wikitext('WWCD')
    header:tag('th'):addClass('nomobile'):wikitext('Place')
    header:tag('th'):wikitext('Elims')
    header:tag('th'):wikitext('Total')

    -- Rows
    for i, row in ipairs(results) do
        local rowClass = "qual-mid"
        if i <= qlimit then rowClass = "qual-yes" 
        elseif i >= estart then rowClass = "qual-no" end
        
        local tr = root:tag('tr')
        tr:addClass('match-card-row ' .. rowClass)
        tr:attr('data-value', row.groupname) -- Crucial for your JS Filter!
        
        -- Rank
        tr:tag('td'):addClass('rank-cell')
        
        -- Team
        local teamTD = tr:tag('td'):addClass('team-cell')
        teamTD:wikitext('[[' .. row.team .. ']]')
        
        -- Stats
        tr:tag('td'):css('text-align', 'center'):wikitext(row.matchesplayed)
        tr:tag('td'):css('text-align', 'center'):wikitext(row.wwcd)
        tr:tag('td'):addClass('nomobile'):css('text-align', 'center'):wikitext(row.placepts)
        tr:tag('td'):css('text-align', 'center'):wikitext(row.elimpts)
        tr:tag('td'):addClass('total-cell'):wikitext(row.totalpts)
    end

    return tostring(root)
end

return p