Mudanças entre as edições de "Módulo:Droflax"
Ir para navegação
Ir para pesquisar
| Linha 159: | Linha 159: | ||
dataContainer:wikitext(mw.text.jsonEncode(data)) | dataContainer:wikitext(mw.text.jsonEncode(data)) | ||
-- Agregar clase de tier | -- Agregar clase de tier | ||
Edição das 15h51min de 20 de julho de 2025
A documentação para este módulo pode ser criada em Módulo:Droflax/doc
local p = {}
function p.render(frame)
local args = frame:getParent().args
-- Datos básicos
local nome = args.nome or ''
local tier = args.tier or ''
local classe = args.classe or ''
local image = args.image or ''
-- Procesar habilidades
local habilidades = {}
for i = 1, 21 do
local hab = {
nome = args['hab' .. i .. '-nome'],
icon = args['hab' .. i .. '-icon'],
level = args['hab' .. i .. '-level'],
desc = args['hab' .. i .. '-desc'],
atr = args['hab' .. i .. '-atr'],
video = args['hab' .. i .. '-video']
}
if hab.nome and hab.nome ~= '' then
table.insert(habilidades, hab)
end
end
-- Procesar skins
local skins = {}
for i = 1, 11 do
local skin = {
image = args['skin' .. i .. '-image'],
banner = args['skin' .. i .. '-banner'],
tooltip = args['skin' .. i .. '-tooltip']
}
if skin.image and skin.image ~= '' then
table.insert(skins, skin)
end
end
-- Generar HTML
local html = mw.html.create('div')
:addClass('personaje-box')
:attr('id', 'personaje-' .. mw.uri.encode(nome))
-- Header
local header = html:tag('div'):addClass('personaje-header')
local topbar = header:tag('div'):addClass('personaje-topbar')
local nomeBox = topbar:tag('div'):addClass('personaje-nome-box')
nomeBox:tag('img')
:attr('src', '/images/6/63/Franky_ts_medal.png')
:addClass('topbar-icon')
local nomeCategory = nomeBox:tag('div'):addClass('personaje-nome-category')
nomeCategory:tag('div'):addClass('nome'):wikitext(nome)
nomeCategory:tag('div'):addClass('classes'):wikitext(classe)
header:tag('div')
:addClass('topbar-description')
:wikitext(nome .. ' (' .. tier .. ') é um personagem do tier ' .. tier:lower() .. '.')
-- Tabs
local tabs = header:tag('div'):addClass('personaje-tabs')
tabs:tag('button')
:addClass('tab-btn')
:attr('data-tab', 'arma')
:wikitext('Arma')
tabs:tag('button')
:addClass('tab-btn active')
:attr('data-tab', 'habilidades')
:wikitext('Habilidades')
tabs:tag('button')
:addClass('tab-btn')
:attr('data-tab', 'skins')
:wikitext('Skins')
-- Imagen del personaje
html:tag('img')
:addClass('art-personaje')
:attr('src', image)
:attr('alt', 'Arte del personaje')
-- Tab content: Habilidades
local habContent = html:tag('div')
:addClass('tab-content active')
:attr('id', 'habilidades')
-- Contenedor de cuadros (iconos de habilidades)
local cuadrosContainer = habContent:tag('div'):addClass('cuadros-container')
for i, hab in ipairs(habilidades) do
cuadrosContainer:tag('div')
:addClass('cuadro')
:attr('data-hab-index', i)
:attr('title', hab.nome)
:tag('img')
:attr('src', hab.icon)
:attr('alt', hab.nome)
:css('width', '100%')
:css('height', '100%')
:css('object-fit', 'cover')
end
local habContainer = habContent:tag('div'):addClass('habilidades-container')
-- Detalles de habilidad
local habDetails = habContainer:tag('div'):addClass('habilidades-details')
habDetails:tag('div'):addClass('descripcion-container')
-- Video container
habContainer:tag('div'):addClass('video-container')
-- Tab content: Skins
local skinsContent = html:tag('div')
:addClass('tab-content')
:attr('id', 'skins')
local cardSkins = skinsContent:tag('div'):addClass('card-skins')
cardSkins:tag('span')
:addClass('card-skins-title')
:wikitext('SKINS & SPOTLIGHTS')
local carouselWrapper = cardSkins:tag('div'):addClass('skins-carousel-wrapper')
carouselWrapper:tag('button')
:addClass('skins-arrow left')
:wikitext('«')
local carousel = carouselWrapper:tag('div'):addClass('skins-carousel')
for i, skin in ipairs(skins) do
local skinCard = carousel:tag('div'):addClass('skin-card')
skinCard:tag('img')
:addClass('skins--imageBanner')
:attr('src', skin.banner)
:attr('alt', 'banner')
skinCard:tag('img')
:addClass('skins--imageSkin')
:attr('src', skin.image)
:attr('alt', 'skin')
end
carouselWrapper:tag('button')
:addClass('skins-arrow right')
:wikitext('»')
-- Datos para el widget (JSON en data attributes)
local dataContainer = html:tag('script')
:attr('type', 'application/json')
:attr('id', 'personaje-data-' .. mw.uri.encode(nome))
local data = {
nome = nome,
tier = tier,
classe = classe,
image = image,
habilidades = habilidades,
skins = skins
}
dataContainer:wikitext(mw.text.jsonEncode(data))
-- Agregar clase de tier
local tierClass = {
['bronze'] = 'tier-bronze', ['bronce'] = 'tier-bronze',
['silver'] = 'tier-silver', ['prata'] = 'tier-silver',
['gold'] = 'tier-gold', ['ouro'] = 'tier-gold',
['diamond'] = 'tier-diamond', ['diamante'] = 'tier-diamond'
}
if tierClass[tier:lower()] then
html:addClass(tierClass[tier:lower()])
end
return tostring(html)
end
return p