Module:PlayerTimelineSection

From Call of Duty Esports Wiki
Jump to: navigation, search

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

local util_args = require('Module:ArgsUtil')
local util_html = require("Module:HtmlUtil")
local util_toggle = require("Module:ToggleUtil")
local util_vars = require("Module:VarsUtil")
local i18n = require('Module:i18nUtil')
local PlayerTeamHistoryCompact = require('Module:PlayerTeamHistoryCompact')._main
local PlayerTeamHistory = require('Module:PlayerTeamHistory')._main
local NewsQueryPlayer = require('Module:NewsQueryPlayer')._main

local TOGGLES_TABLE = {
	order = { 'full', 'compact' },
}

local TOGGLES_DATE = {
	order = { 'approx', 'exact' },
	key = 'date'
}

local h = {}

local p = {}
function p.main(frame)
	local args = util_args.merge()
	i18n.init('PlayerTimelineSection')
	local output = mw.html.create()
	local div = output:tag('div')
		:addClass('player-history')
	h.printContent(div, args)
	if util_args.castAsBool(args.suppressoutput) then return '' end
	return output, '[[Category:PlayersWithAutomatedNews]]'
end

function h.printContent(output, args)
	output:tag('h2')
		:wikitext(i18n.print('TeamHistory'))
	h.printLowContentIntroIfNeeded(output)
	h.printPTH(output, args)
	output:tag('h2')
		:wikitext(i18n.print('News'))
	output:tag('div')
		:addClass('player-history-timeline')
		:wikitext(tostring(NewsQueryPlayer(args)))
end

function h.printPTH(output, args)
	h.printToggler(output)
	local div = output:tag('div')
		:addClass('player-history-teamlist')
	local div2 = div:tag('div'):wikitext(tostring(PlayerTeamHistoryCompact(args)))
	local div1 = div:tag('div'):wikitext(tostring(PlayerTeamHistory(args)))
	h.printToggleClasses(div1, 'full')
	h.printToggleClasses(div2, 'compact')
end

function h.printToggler(tbl)
	local div = tbl:tag('div')
		:addClass('toggle-button')
	div:wikitext(i18n.print('toggleIntro'))
	util_toggle.printOptionFromListTogglers(div, TOGGLES_TABLE)
	local div2 = tbl:tag('div')
		:addClass('toggle-button')
	div2:wikitext(i18n.print('toggleDatesIntro'))
	util_toggle.printOptionFromListTogglers(div2, TOGGLES_DATE)
	util_html.clear(tbl)
	return
end

function h.printToggleClasses(div, label)
	util_toggle.oflCellClasses(div, TOGGLES_TABLE, label)
end

function h.printLowContentIntroIfNeeded(output)
	if not util_vars.getBool('isLowContent') then return end
	output:tag('div')
		:addClass('low-content-notice-wrapper')
		:tag('div')
			:addClass('low-content-notice')
			:wikitext(i18n.print('lowContentIntro'))
		
end

return p