Mudanças entre as edições de "Módulo:TesteBossYawnv2"

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 25: Linha 25:
         if diffData and diffData.recompensasPossiveis then
         if diffData and diffData.recompensasPossiveis then
             local itensStr = table.concat(diffData.recompensasPossiveis, ";")
             local itensStr = table.concat(diffData.recompensasPossiveis, ";")
             local wikiText = "{{Reward|t|itens=" .. itensStr .. ";1}}"
             local wikiText = "{{Reward|itens=" .. itensStr .. "}}"
              
              
             -- Processa o HTML das imagens e tooltips
             -- Processa o HTML das imagens e tooltips

Edição das 00h03min de 10 de abril de 2026

A documentação para este módulo pode ser criada em Módulo:TesteBossYawnv2/doc

local p = {}

function p.loadBossData(bossName)
    local normalizedName = bossName:gsub("^%l", string.upper)
    local success, bossData = pcall(function()
        return require("Módulo:" .. normalizedName .. "/data")
    end)
    return success and bossData or nil
end

function p.render(frame)
    local bossName = frame.args.boss
    if not bossName or bossName == "" then return "Erro: Boss não especificado." end
    
    local bossData = p.loadBossData(bossName)
    if not bossData then return "Erro: Dados não encontrados." end
    
    local diffs = {"normal", "elite", "hard"}
    
    -- Aqui vamos guardar os HTMLs gerados fora do JSON
    local elementosOcultos = ""
    
    for _, diffKey in ipairs(diffs) do
        local diffData = bossData[diffKey]
        if diffData and diffData.recompensasPossiveis then
            local itensStr = table.concat(diffData.recompensasPossiveis, ";")
            local wikiText = "{{Reward|itens=" .. itensStr .. "}}"
            
            -- Processa o HTML das imagens e tooltips
            local htmlRenderizado = frame:preprocess(wikiText)
            
            -- O SEGREDO: Em vez de por no JSON, criamos uma div oculta com o HTML pronto!
            elementosOcultos = elementosOcultos .. '<div class="boss-html-recompensas" data-diff="' .. diffKey .. '" style="display:none;">' .. htmlRenderizado .. '</div>'
        end
    end
    
    -- Gera o JSON (agora ele está minúsculo e inofensivo, contendo apenas os textos básicos)
    local jsonData = mw.text.jsonEncode(bossData)
    
    -- Escapa aspas para o HTML de forma segura
    local safeJson = mw.text.encode(jsonData)
    
    -- Carrega o Widget
    local widgetHTML = frame:preprocess("{{#widget:TesteBossYawnv2}}")
    
    -- Monta a estrutura final: A div principal contém o JSON leve, as divs ocultas e o Widget
    return '<div class="boss-component" data-json="' .. safeJson .. '">' .. elementosOcultos .. widgetHTML .. '</div>'
end

return p