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:PrizePool
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 PrizePool = {} local funcs = require('Module:Functions') local getTeamLogo = require('Module:Functions').getTeamLogo local getTeamDisplaytitle = funcs.getTeamDisplaytitle local VariablesLua = mw.ext.VariablesLua local cargo = mw.ext.cargo function PrizePool.main(frame) local args = getArgs(frame) local tableContainer = mw.html.create('table'):addClass('striped-table') local titleRow = mw.html.create('tr') titleRow:addClass('headerRow') local placementCell = mw.html.create('th'):wikitext('Place') titleRow:node(placementCell) local currency = args.currency and string.upper(args.currency) or nil if args.currency then titleRow:node(mw.html.create('th'):wikitext(currency)) end local usdCell = mw.html.create('th'):wikitext('USD') local participantCell = mw.html.create('th'):wikitext('Team') tableContainer:node(titleRow:node(usdCell)) -- If prize percentage if args.percent then titleRow:node(mw.html.create('th'):wikitext('Percent')) end titleRow:node(participantCell):node(joindateCell) local columns = args.columns and mw.text.split(args.columns, ',') or nil if columns then for i = 1, #columns do titleRow:node(mw.html.create('th'):wikitext(columns[i])) i = i + 1 end end local i = 1 -- non-USD currency things local conversionRate = args.rate or 1 local startDate = VariablesLua.varexists('startDate') and VariablesLua.var('startDate', nil) or nil local endDate = VariablesLua.varexists('endDate') and VariablesLua.var('endDate', nil) or nil local currentDate = os.date("%Y-%m-%d", os.time()) local date = os.date(endDate or startDate) > os.date(currentDate) and currentDate or (endDate or startDate) local placeOffset = 0 while (args[i] ~= nil) do local row = mw.text.jsonDecode(args[i]) local prizeString = 'TBD' local prizeInt if args.prize and row.percent and not row.prize then prizeString = args.prize:gsub(",", "") prizeInt = math.floor(tonumber(prizeString) / 100 * tonumber(row.percent)) elseif row.prize then prizeString = row.prize:gsub(",", "") prizeInt = tonumber(prizeString) end local bgClass = row.bg or nil if not bgClass and (i == 1 and not row.place) or (row.place and string.sub(row.place, 1, string.len('1-')) == '1-') then bgClass = 'gold' elseif not bgClass and (i == 2 and not row.place) or (row.place and string.sub(row.place, 1, string.len('2-')) == '2-') then bgClass = 'silver' elseif not bgClass and (i == 3 and not row.place) or (row.place and string.sub(row.place, 1, string.len('3-')) == '3-') then bgClass = 'bronze' end local iconText = '' if bgClass == 'gold' then iconText = '[[File:Gold-icon.png|15px|alt=Gold Medal]]' elseif bgClass == 'silver' then iconText = '[[File:Silver-icon.png|15px|alt=Silver Medal]]' elseif bgClass == 'bronze' then iconText = '[[File:Bronze-icon.png|15px|alt=Bronze Medal]]' end local rowSpan = 1 if row.place then local placeSplit = mw.text.split(row.place, '-') if #placeSplit > 1 then rowSpan = tonumber(placeSplit[2]) - tonumber(placeSplit[1]) + 1 end placeOffset = placeOffset + rowSpan - 1 end local tableRow = mw.html.create('tr'):addClass('bodyRow'):addClass(bgClass) local placement = mw.html.create('td') if bgClass == 'gold' or bgClass == 'silver' or bgClass == 'bronze' then placement:wikitext(iconText) else placement:wikitext(row.place or i + placeOffset) end tableRow:node(placement) local rowUSD = mw.html.create('td') if args.currency then local currencyCell = mw.html.create('td'):wikitext('$' .. prizeToString(prizeInt)) rowUSD:wikitext('$' .. (conversionRate and prizeToString(math.floor(conversionRate * prizeInt)) or 'TBD')) if row.place then currencyCell:attr('rowspan', rowSpan) end tableRow:node(currencyCell) else rowUSD:wikitext('$' .. prizeToString(prizeInt)) end tableRow:node(rowUSD) -- If table has percent and row has percent if args.percent and row.percent then tableRow:node(mw.html.create('td'):attr('rowspan', rowSpan):wikitext(row.percent .. '%')) end if row.place then placement:attr('rowspan', rowSpan) rowUSD:attr('rowspan', rowSpan) end tableContainer:node(tableRow) if row.participants then local participants = mw.text.split(row.participants, ',') local currentTitle = mw.title.getCurrentTitle().text local gameCategory = mw.text.split(currentTitle, '/')[1] for j = 1, #participants do -- Check if shorthand of a team was used local tables = 'Teams' local fields = '_pageName, shorthand' local cargoArgs = { where = '_pageName LIKE "' .. gameCategory .. '/%" AND shorthand = "' .. participants[j] .. '"' } local results = cargo.query(tables, fields, cargoArgs) if #results > 0 then participants[j] = results[1]._pageName else participants[j] = gameCategory .. '/' .. mw.text.trim(participants[j]) end j = j + 1 end if #participants > 0 then local players = nil for j = 1, #participants do -- If a team tournament, then go through teams to get lists of their players to enter into the prize table if args.solo == nil then local tables = 'Participants' local fields = 'players' local cargoArgs = { where = '_pageName="' .. currentTitle .. '" AND team = "' .. participants[j] .. '"' } local results = cargo.query(tables, fields, cargoArgs) if #results > 0 then players = results[1].players end end if j == 1 then -- local participantCell = mw.html.create("td"):wikitext('[[' .. participants[1] .. '|' .. getTeamDisplaytitle(participants[1], VariablesLua.var('endDate')) .. ']]') -- tableRow:node(participantCell) local participantCell = mw.html.create("td") local teamContainer = mw.html.create("div"):attr("style", "display: flex; align-items: center; gap: 10px;") local teamLogo = getTeamLogo(participants[1], gameCategory, "25px") local teamName = mw.html.create("span"):wikitext("[[" .. participants[1] .. "|" .. getTeamDisplaytitle(participants[1], VariablesLua.var("endDate")) .. "]]") teamContainer:node(teamLogo):node(teamName) participantCell:node(teamContainer) tableRow:node(participantCell) else local extraRow = mw.html.create('tr'):addClass('bodyRow'):addClass(bgClass) extraRow:node(mw.html.create('td'):wikitext('[[' .. participants[j] .. '|' .. getTeamDisplaytitle(participants[j], VariablesLua.var('endDate')) .. ']]')) tableContainer:node(extraRow) end end -- Save prize to db frame:callParserFunction{name = '#cargo_store:', args = {_table = 'Prizes', placement = row.place or i, prize = args.currency and conversionRate * prizeInt or prizeInt, localPrize = args.currency and prizeInt or nil, currency = currency, teams = not args.solo and table.concat(participants, ','), players = args.solo and table.concat(participants, ',') or players}} end else for j = 1, rowSpan do if j == 1 then -- local participantCell = mw.html.create("td"):wikitext('TBD') -- tableRow:node(participantCell) local participantCell = mw.html.create("td") local teamContainer = mw.html.create("div"):attr("style", "display: flex; align-items: center; gap: 10px;") local teamLogo, teamName if participants and participants[1] then teamLogo = getTeamLogo(participants[1], gameCategory, "25px") teamName = mw.html.create("span"):wikitext("[[" .. participants[1] .. "|" .. getTeamDisplaytitle(participants[1], VariablesLua.var("endDate")) .. "]]") else teamLogo = '' teamName = mw.html.create("span"):wikitext("TBD") end teamContainer:node(teamLogo):node(teamName) participantCell:node(teamContainer) tableRow:node(participantCell) else local extraRow = mw.html.create('tr'):addClass('bodyRow') extraRow:node(mw.html.create('td'):wikitext('TBD')) tableContainer:node(extraRow) end j = j + 1 end end if columns then local rowColumns = row.columns and mw.text.split(row.columns, ',') or nil if rowColumns then for j = 1, #rowColumns do tableRow:node(mw.html.create('td'):attr('rowspan', rowSpan):wikitext(rowColumns[j])) j = j + 1 end else for j = 1, #columns do tableRow:node(mw.html.create('td'):attr('rowspan', rowSpan):wikitext('-')) j = j + 1 end end end i = i + 1 end return tableContainer end function prizeToString(nr) if nr == nil then return 'TBD' end local prize = '' local reversed = string.reverse(tostring(nr)) for k = 1, #reversed do prize = reversed:sub(k, k) .. prize if k % 3 == 0 and k < #reversed then prize = ',' .. prize end k = k + 1 end return prize end return PrizePool
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:PrizePool/doc
(
edit
)
No categories
Edit