Módulo:Droflax
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:Droflax/doc
local p = {}
function p.renderPersona(frame)
local args = frame.args
-- Datos básicos
local data = {
nome = args.nome or '',
tier = args.tier or '',
classe = args.classe or '',
image = args.image or '',
habilidades = {},
skins = {}
}
-- Procesar habilidades (hasta 21)
for i = 1, 21 do
if args['hab' .. i .. '-nome'] then
data.habilidades[i] = {
nome = args['hab' .. i .. '-nome'] or '',
icon = args['hab' .. i .. '-icon'] or '',
iconSize = args['hab' .. i .. '-icon-size'] or '50px',
level = args['hab' .. i .. '-level'] or '',
desc = args['hab' .. i .. '-desc'] or '',
atr = args['hab' .. i .. '-atr'] or '',
video = args['hab' .. i .. '-video'] or ''
}
end
end
-- Procesar skins (hasta 11)
for i = 1, 11 do
if args['skin' .. i .. '-image'] then
data.skins[i] = {
image = args['skin' .. i .. '-image'] or '',
tooltip = args['skin' .. i .. '-tooltip'] or ''
}
end
end
-- Generar HTML
local html = require('mw.html')
local container = html.create('div'):addClass('persona-container')
-- Imagen principal
if data.image ~= '' then
container:tag('div')
:addClass('character-img')
:wikitext(string.format('[[File:%s|200px|link=]]', data.image))
end
-- Título
container:tag('h2')
:wikitext(string.format('%s é um personagem do tier %s.', data.nome, data.tier))
-- Pestañas
local tabs = container:tag('div'):addClass('tabs')
tabs:tag('button'):addClass('tab'):attr('data-target', 'habilidades'):wikitext('Habilidades')
tabs:tag('button'):addClass('tab'):attr('data-target', 'skins'):wikitext('Skins')
-- Habilidades
local habContainer = container:tag('div'):addClass('tab-content habilidades')
for _, hab in ipairs(data.habilidades) do
local habDiv = habContainer:tag('div'):addClass('hab-item')
if hab.icon ~= '' then
habDiv:tag('img')
:addClass('hab-icon')
:attr('data-src', string.format('[[File:%s|%s|link=]]', hab.icon, hab.iconSize))
:attr('alt', hab.nome)
:attr('loading', 'lazy')
end
habDiv:tag('span'):wikitext(hab.nome)
habDiv:tag('p'):wikitext(hab.desc)
end
-- Skins
local skinContainer = container:tag('div'):addClass('tab-content skins'):css('display', 'none')
for _, skin in ipairs(data.skins) do
local skinDiv = skinContainer:tag('div'):addClass('skin-item')
if skin.image ~= '' then
skinDiv:tag('img')
:addClass('skin-img')
:attr('data-src', string.format('[[File:%s|100px|link=]]', skin.image))
:attr('alt', skin.tooltip)
:attr('loading', 'lazy')
end
skinDiv:tag('span'):wikitext(skin.tooltip)
end
-- Devolver HTML y cargar widget para interacciones
return tostring(container) .. '{{#widget:Droflax}}'
end
return p