We're currently performing an overhaul of our entire tournament results system so results will be missing from team and player pages for a while, and there may be some errors on tournament pages. Please bear with us as we complete this update.

Module:League

From Call of Duty Esports Wiki
Jump to: navigation, search
To edit the documentation or categories for this module, click here.

This module returns values from {{Leaguenames}}m, which defines variables for leagues. Unlike {{Teamnames}}m, none of the outputs is guaranteed to be globally unique. That is to say, while in {{Teamnames}}m, you are guaranteed that |link= is a unique identifier of a team, in this case there is no single output like that. Leagues can change logos across years, so league name and link are not unique; and two different leagues could use the same logo, so logo is not unique.

While one may consider <League>_<Year> as a candidate for unique identifier, the reality is that a league could change logo mid-season. If we were to use this syntax it would be at the cost of potentially a huge amount of technical debt.

Therefore, when storing league data it is advised to store a specific property just for calling this module.

FAQ:

Why is this a module and not a Cargo table?

This way we don't have to use Cargo every single time when pulling a league image (for example in News). Also, if it were a Cargo table, on some level it would have to be "in between" [CCMLeagues] and [Tournaments] anyway: The former doesn't allow for changes in status across years, and the latter would be cumbersome to keep updated and also will not include as many entries as are needed for this table. Additionally, this table will need to be interacted with by users significantly more than the other two, since any image uploaded for a tournament to be listed in news will need to be added to this list.

So how does this work with [Tournaments]?

The value of |League= given in that module is the league's unique key for this module. That table will store all of its metadata as well as the raw key input by the user, to preserve uniqueness.

local util_vars = require("Module:VarsUtil")

local p = require('Module:EntityAbstract'):extends()
local h = {}

p.objectType = 'League'
p.imageDisplayLength = 'long'
p.imagelength = 'unique'
p.defaultlength = 'long' -- this is what we store in cargo !!
-- p.cssClass = 'league-object'
p.imagesizes = {}
p.nosize = true

function p:init(str)
	self:super('init', str, 'Item')
	if self.unknown then
		self.vars = {
			link = str,
			long = str,
			short = str,
			image = 'Unknown Infobox Image - Tournament.png'
		}
	end
end

return p