Módulo:Character
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:Character/doc
local p = {}
local html = mw.html.create
local uri = mw.uri
function p.generate(frame)
local args = frame:getParent().args
-- Wrapper principal
local container = html('div'):addClass('character-container')
-- Header
local header = container:tag('div'):addClass('character-header')
header:tag('div'):addClass('character-name')
:wikitext(args.nome or '')
if args.image and args.image ~= '' then
local imgUrl = tostring(uri.fullUrl('Special:FilePath/' .. args.image))
header:tag('img')
:addClass('character-image')
:attr('src', imgUrl)
:attr('alt', args.nome or '')
end
header:tag('div'):addClass('character-tier')
:wikitext('Tier: ' .. (args.tier or ''))
header:tag('div'):addClass('character-classes')
:wikitext('Classes: ' .. (args.classe or ''))
header:tag('div'):addClass('character-desc')
:wikitext(args.desc or '')
-- Tabs
local tabs = container:tag('div'):addClass('character-tabs')
tabs:tag('div'):addClass('tab-btn active')
:attr('data-tab','skills')
:wikitext('Skills')
tabs:tag('div'):addClass('tab-btn')
:attr('data-tab','skins')
:wikitext('Skins')
-- Skills tab
local skillsTab = container:tag('div')
:addClass('tab-content active')
:attr('id','skills')
local wrapper = skillsTab:tag('div')
:addClass('skills-bar-wrapper has-right')
local bar = wrapper:tag('div')
:addClass('skills-bar')
-- Gera até 21 skills
for i = 1, 21 do
local name = args['hab' .. i .. '-nome']
if name and name ~= '' then
local iconRaw = args['hab' .. i .. '-icon'] or ''
local desc = args['hab' .. i .. '-desc'] or ''
local atr = args['hab' .. i .. '-atr'] or ''
local video = args['hab' .. i .. '-video'] or ''
local iconUrl = nil
if iconRaw ~= '' then
iconUrl = tostring(uri.fullUrl('Special:FilePath/' .. iconRaw))
end
local item = bar:tag('div'):addClass('skill-item')
item:attr('data-name', name)
:attr('data-desc', desc)
:attr('data-atr', atr)
:attr('data-video', video)
if iconUrl then
item:tag('img')
:attr('src', iconUrl)
:attr('alt', name)
:css('width','50px')
:css('height','50px')
else
item:wikitext(name)
end
end
end
-- Details (description + video)
local details = skillsTab:tag('div'):addClass('skill-details')
details:tag('div'):addClass('desc-box')
details:tag('div'):addClass('video-box')
-- Skins tab (empty)
container:tag('div')
:addClass('tab-content')
:attr('id','skins')
return tostring(container)
end
return p