Mudanças entre as edições de "Módulo:Teste"
Ir para navegação
Ir para pesquisar
m (Limpou toda a página) Etiquetas: Reversão manual anulando |
m Etiqueta: Revertido |
||
| Linha 1: | Linha 1: | ||
local p = {} | |||
function p.ficha(frame) | |||
local args = frame:getParent().args | |||
local html = mw.html.create('div') | |||
local function getVideoURL(filename) | |||
if filename and filename ~= "" then | |||
return tostring(mw.uri.fullUrl('Special:FilePath/' .. filename)) | |||
end | |||
return "" | |||
end | |||
-- Header básico | |||
local box = html:tag('div'):addClass('character-box') | |||
box:tag('h2'):wikitext(args.nome or 'Personagem') | |||
box:tag('div'):addClass('character-tier'):wikitext(args.tier or '') | |||
box:tag('div'):addClass('character-class'):wikitext(args.classe or '') | |||
box:tag('div'):addClass('character-desc'):wikitext(args.desc or '') | |||
box:tag('div'):wikitext(string.format('[[Arquivo:%s|200px]]', args.image or '')) | |||
-- Barra de habilidades | |||
local skills = {} | |||
for i = 1, 20 do | |||
local nome = args['hab'..i..'-nome'] | |||
if not nome or nome == '' then break end | |||
table.insert(skills, { | |||
nome = nome, | |||
desc = args['hab'..i..'-desc'] or '', | |||
icon = args['hab'..i..'-icon'] or '', | |||
video = getVideoURL(args['hab'..i..'-video'] or ''), | |||
atr = args['hab'..i..'-atr'] or '' | |||
}) | |||
end | |||
-- Exibe barra de skills | |||
local skillBar = box:tag('div'):addClass('skills-bar') | |||
for idx, s in ipairs(skills) do | |||
skillBar:tag('div') | |||
:addClass('skill-icon') | |||
:attr('data-index', idx) | |||
:attr('data-nome', s.nome) | |||
:attr('data-desc', s.desc) | |||
:attr('data-video', s.video) | |||
:attr('data-atr', s.atr) | |||
:wikitext(string.format('[[Arquivo:%s|50px|link=]]', s.icon)) | |||
end | |||
-- Área da descrição dinâmica (preenchida pelo JS) | |||
box:tag('div'):addClass('skill-detail'):wikitext('Selecione uma habilidade acima') | |||
-- Skins (carousel ou lista simples) | |||
local skins = {} | |||
for j = 1, 10 do | |||
local img = args['skin'..j..'-image'] | |||
if not img or img == '' then break end | |||
table.insert(skins, { | |||
image = img, | |||
banner = args['skin'..j..'-banner'] or '', | |||
tooltip = args['skin'..j..'-tooltip'] or '' | |||
}) | |||
end | |||
if #skins > 0 then | |||
local skinBar = box:tag('div'):addClass('skin-bar') | |||
for _, s in ipairs(skins) do | |||
local card = skinBar:tag('div'):addClass('skin-card') | |||
card:wikitext(string.format('[[Arquivo:%s|60px|link=]]', s.image)) | |||
if s.tooltip and s.tooltip ~= "" then | |||
card:attr('title', s.tooltip) | |||
end | |||
end | |||
end | |||
return tostring(html) | |||
end | |||
return p | |||
Edição das 16h35min de 8 de agosto de 2025
A documentação para este módulo pode ser criada em Módulo:Teste/doc
local p = {}
function p.ficha(frame)
local args = frame:getParent().args
local html = mw.html.create('div')
local function getVideoURL(filename)
if filename and filename ~= "" then
return tostring(mw.uri.fullUrl('Special:FilePath/' .. filename))
end
return ""
end
-- Header básico
local box = html:tag('div'):addClass('character-box')
box:tag('h2'):wikitext(args.nome or 'Personagem')
box:tag('div'):addClass('character-tier'):wikitext(args.tier or '')
box:tag('div'):addClass('character-class'):wikitext(args.classe or '')
box:tag('div'):addClass('character-desc'):wikitext(args.desc or '')
box:tag('div'):wikitext(string.format('[[Arquivo:%s|200px]]', args.image or ''))
-- Barra de habilidades
local skills = {}
for i = 1, 20 do
local nome = args['hab'..i..'-nome']
if not nome or nome == '' then break end
table.insert(skills, {
nome = nome,
desc = args['hab'..i..'-desc'] or '',
icon = args['hab'..i..'-icon'] or '',
video = getVideoURL(args['hab'..i..'-video'] or ''),
atr = args['hab'..i..'-atr'] or ''
})
end
-- Exibe barra de skills
local skillBar = box:tag('div'):addClass('skills-bar')
for idx, s in ipairs(skills) do
skillBar:tag('div')
:addClass('skill-icon')
:attr('data-index', idx)
:attr('data-nome', s.nome)
:attr('data-desc', s.desc)
:attr('data-video', s.video)
:attr('data-atr', s.atr)
:wikitext(string.format('[[Arquivo:%s|50px|link=]]', s.icon))
end
-- Área da descrição dinâmica (preenchida pelo JS)
box:tag('div'):addClass('skill-detail'):wikitext('Selecione uma habilidade acima')
-- Skins (carousel ou lista simples)
local skins = {}
for j = 1, 10 do
local img = args['skin'..j..'-image']
if not img or img == '' then break end
table.insert(skins, {
image = img,
banner = args['skin'..j..'-banner'] or '',
tooltip = args['skin'..j..'-tooltip'] or ''
})
end
if #skins > 0 then
local skinBar = box:tag('div'):addClass('skin-bar')
for _, s in ipairs(skins) do
local card = skinBar:tag('div'):addClass('skin-card')
card:wikitext(string.format('[[Arquivo:%s|60px|link=]]', s.image))
if s.tooltip and s.tooltip ~= "" then
card:attr('title', s.tooltip)
end
end
end
return tostring(html)
end
return p