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

Module:MasteryCards: Difference between revisions

From Test wiki
No edit summary
added new classes for displaying the header and tiers for consistent positioning.
 
(4 intermediate revisions by the same user not shown)
Line 6: Line 6:
html:tag('div'):addClass('mastery-card__image')
html:tag('div'):addClass('mastery-card__image')
:wikitext(string.format('[[File:%s|250px]]', mastery.image or ''))
:wikitext(string.format('[[File:%s|250px]]', mastery.image or ''))
 
local header = html:tag('div'):addClass('mastery-card__header')
local content = html:tag('div'):addClass('mastery-card__content')
local header = content:tag('div'):addClass('mastery-card__header')
header:tag('div'):addClass('mastery-card__name'):wikitext(mastery.name or '')
header:tag('div'):addClass('mastery-card__name'):wikitext(mastery.name or '')
header:tag('div'):addClass('mastery-card__description'):wikitext(mastery.desc or '')
header:tag('div'):addClass('mastery-card__description'):wikitext(mastery.desc or '')
 
local tiers = content:tag('div'):addClass('mastery-card__tiers')
local function addTier(tier, reward, req)
local function addTier(tier, reward, req)
local group = html:tag('div'):addClass('mastery-card__tier-group')
local group = tiers:tag('div'):addClass('mastery-card__tier-group')
local block = group:tag('div'):addClass('mastery-card__tier-details')
local block = group:tag('div'):addClass('mastery-card__tier-details')
block:tag('div'):addClass('mastery-card__tier'):wikitext(tier)
block:tag('div'):addClass('mastery-card__tier'):wikitext(tier)

Latest revision as of 11:41, 11 June 2025

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

local p = {}

local function renderMasteryCard(mastery)
	local html = mw.html.create('div'):addClass('mastery-card')

	html:tag('div'):addClass('mastery-card__image')
		:wikitext(string.format('[[File:%s|250px]]', mastery.image or ''))
	
	local content = html:tag('div'):addClass('mastery-card__content')
	
	local header = content:tag('div'):addClass('mastery-card__header')
	header:tag('div'):addClass('mastery-card__name'):wikitext(mastery.name or '')
	header:tag('div'):addClass('mastery-card__description'):wikitext(mastery.desc or '')
	
	local tiers = content:tag('div'):addClass('mastery-card__tiers')
	local function addTier(tier, reward, req)
		local group = tiers:tag('div'):addClass('mastery-card__tier-group')
		local block = group:tag('div'):addClass('mastery-card__tier-details')
		block:tag('div'):addClass('mastery-card__tier'):wikitext(tier)
		block:tag('div'):addClass('mastery-card__reward'):wikitext(reward or '')
		group:tag('div'):addClass('mastery-card__requirement'):wikitext(req or '')
	end

	addTier('Bronze', mastery.bronzeReward, mastery.bronzeReq)
	addTier('Silver', mastery.silverReward, mastery.silverReq)
	addTier('Gold', mastery.goldReward, mastery.goldReq)

	return tostring(html)
end

function p.main(frame)
	local args = frame:getParent().args
	local html = mw.html.create('div'):addClass('mastery-container')

	local MAX_CARDS = 15
	for i=1, MAX_CARDS do
		if not args['name'..i] or args['name'..i] == '' then break end

		local mastery = {
			image = args['image'..i],
			name = args['name'..i],
			desc = args['desc'..i],
			bronzeReward = args['bronzeReward'..i],
			bronzeReq = args['bronzeReq'..i],
			silverReward = args['silverReward'..i],
			silverReq = args['silverReq'..i],
			goldReward = args['goldReward'..i],
			goldReq = args['goldReq'..i],
		}
		html:wikitext(renderMasteryCard(mastery))
	end

	return tostring(html)
end

return p