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.
 
(5 intermediate revisions by 2 users 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)
Line 32: Line 35:
local MAX_CARDS = 15
local MAX_CARDS = 15
for i=1, MAX_CARDS do
for i=1, MAX_CARDS do
local name = args['name'..index]
if not args['name'..i] or args['name'..i] == '' then break end
if not name or name == '' then break end


local mastery = {
local mastery = {
image = args['image'..i],
image = args['image'..i],
name = name,
name = args['name'..i],
desc = args['desc'..i],
desc = args['desc'..i],
bronzeReward = args['bronzeReward'..i],
bronzeReward = args['bronzeReward'..i],

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