Mudanças entre as edições de "Módulo:Droflax"
Ir para navegação
Ir para pesquisar
(Limpou toda a página) Etiqueta: anulando |
|||
| Linha 1: | Linha 1: | ||
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 | |||
Edição das 23h37min de 19 de julho de 2025
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