Moduł:Advancement

Wersja z dnia 21:42, 26 gru 2025 autorstwa Igorczewski6524 (dyskusja | edycje) (Igorczewski6524 przeniósł(-osła) stronę Moduł:Sandbox/Igorczewski6524/Advancement do Moduł:Advancement, bez pozostawienia przekierowania pod starym tytułem)
[ utwórz | historia | odśwież ]Dokumentacja
W tym module nie ma dokumentacji. Jeśli wiesz jak używać tego modułu, proszę, podaj odpowiednie informacje.
local p = {}

local advancementData = mw.loadData('Moduł:Sandbox/Igorczewski6524/Advancement/Dane')

function p.render(frame)
    local args = frame.args[1] or ""
    if args == "" then return "" end

    local achievementsToShow = {}
    local seen = {}
    
    local expSprite = ""

    local function addAchievement(name)
        if advancementData[name] and not seen[name] then
            table.insert(achievementsToShow, name)
            seen[name] = true
        end
    end


    for part in string.gmatch(args, "([^;]+)") do
        part = mw.text.trim(part)
        
        if part:sub(1, 9) == "Category:" then
            local targetCat = part:sub(10)
            for name, data in pairs(advancementData) do
                if data.category == targetCat then addAchievement(name) end
            end
        elseif part == "ALL" then
            for name, _ in pairs(advancementData) do addAchievement(name) end
        else
            addAchievement(part)
        end
    end


    local groups = {}
    local categoryOrder = {}
    for _, name in ipairs(achievementsToShow) do
        local cat = advancementData[name].category
        if not groups[cat] then
            groups[cat] = {}
            table.insert(categoryOrder, cat)
        end
        table.insert(groups[cat], name)
    end

    if #categoryOrder == 0 then return "" end


    local root = mw.html.create("table")
        :addClass("wikitable advancement-table") -- Dodatkowa klasa CSS do ewentualnej stylizacji
        :css("width", "100%")

    for _, catName in ipairs(categoryOrder) do
        root:tag("tr")
            :tag("th"):attr("colspan", "7")
                :css("background", "#202122"):css("color", "white"):css("padding", "8px")
                :wikitext(catName)
        
        local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
        h:tag("th"):wikitext("Ikona")
        h:tag("th"):wikitext("Nazwa")
        h:tag("th"):wikitext("Opis w grze")
        h:tag("th"):wikitext("Rodzic")
        h:tag("th"):wikitext("Wymagania")
        h:tag("th"):wikitext("Lokalizacja")
        h:tag("th"):wikitext("Nagrody")

        for _, name in ipairs(groups[catName]) do
            local item = advancementData[name]
            local row = root:tag("tr")
            
            local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|plain|raw}}')
            row:tag("td"):wikitext(iconHtml .. " '''" .. name .. "'''")
            
            row:tag("td"):wikitext(item.title)
            row:tag("td"):wikitext(item.game_desc)
            row:tag("td"):wikitext(item.parent)
            row:tag("td"):wikitext(item.wiki_desc)
            
            row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)
            
            local rewardCell = row:tag("td")
            if item.reward == "-" or item.reward == "—" then
                rewardCell:css("text-align", "center"):wikitext("—")
            else
                if expSprite == "" then
                    expSprite = frame:preprocess('{{EntitySprite|kula-doświadczenia}}')
                end
                rewardCell:wikitext(expSprite .. " " .. item.reward)
            end
        end
    end

    return tostring(root)
end

return p