Module:RostersStart

From Leaguepedia | League of Legends Esports Wiki
Jump to: navigation, search

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

local util_args = require('Module:ArgsUtil')
local util_esports = require('Module:EsportsUtil')
local util_form = require('Module:FormUtil')
local util_table = require('Module:TableUtil')
local util_text = require('Module:TextUtil')
local util_toggle = require('Module:ToggleUtil')
local util_vars = require('Module:VarsUtil')

local i18n = require('Module:i18nUtil')

local TOGGLE_DATA = {
	show_attr = '.RosterPlayers',
	hide_attr = '.RosterLogos',
	show_class = 'RosterPlayers',
	hide_class = 'RosterLogos',
}

local FORM_INFO = { form = 'TournamentPlayerInformation', template = 'TPI' }

local h = {}
local p = {}
function p.main(frame)
	i18n.initGlobalFromFile('RostersStart')
	local args = util_args.merge(true)
	local overviewPage = util_esports.getOverviewPage(args.page)
	local output = {
		h.addShowHideButton(),
		h.addLinks(args, overviewPage),
		h.addMaxTeams(args.maxteams, args.pools),
	}
	return util_table.concat(output, '')
end

function h.addShowHideButton()
	TOGGLE_DATA.show_text = i18n.print('show_text')
	TOGGLE_DATA.hide_text = i18n.print('hide_text')
	return tostring(util_toggle.printSectionToggler(nil, TOGGLE_DATA))
end

function h.addLinks(args, page)
	local displays = h.getDisplays(args)
	local links = h.getLinks(args, page)
	return tostring(h.makeLinkButtons(displays, links))
end

function h.getDisplays(args)
	local displays = {
		args.rosterswaps and 'swaps',
		util_args.castAsBool(args.showrosterpage) and 'byGame',
		'chart'
	}
	return util_table.removeFalseEntries(displays)
end

function h.getLinks(args, page)
	local links = {
		util_args.nilToFalse(args.rosterswaps),
		util_args.castAsBool(args.showrosterpage) and h.getRosterPage(args.rosterpage, page),
		util_form.fullURL(FORM_INFO, { page = page })
	}
	return util_table.removeFalseEntries(links)
end

function h.getRosterPage(rosterpage, page)
	if rosterpage then
		return rosterpage
	end
	return page .. '/Team Rosters'
end

function h.makeLinkButtons(displays, links)
	local tbl = mw.html.create()
	for k, v in ipairs(displays) do
		tbl:tag('div')
			:addClass('external-link-button')
			:addClass('plainlinks')
			:wikitext(util_text.link(links[k], i18n.print(v)))
	end
	return tbl
end

function h.addMaxTeams(maxteams, pools)
	local poolclass = util_args.castAsBool(pools) and 'pools' or 'tournament-rosters'
	if util_args.castAsBool(maxteams) then
		return ('<div class="%s maxteams-%s">'):format(poolclass, maxteams)
	else
		-- empty div so people can always put an 'end' at the end of the section
		return ('<div class="%s">'):format(poolclass)
	end
end

return p