Moduł:Advancement: Różnice pomiędzy wersjami

Z Minecraft Wiki Polska
Przejdź do nawigacji Przejdź do wyszukiwania
[wersja przejrzana][wersja przejrzana]
Nie podano opisu zmian
Nie podano opisu zmian
Linia 1: Linia 1:
local p = {}
local p = {}


-- Optymalizacja: mw.loadData ładuje bazę danych tylko raz na stronę
local advancementData = mw.loadData('Moduł:Advancement/Dane')
local advancementData = mw.loadData('Moduł:Advancement/Dane')


Linia 12: Linia 11:
     local expSprite = ""
     local expSprite = ""


    -- Funkcja pomocnicza do dodawania osiągnięć
     local function addAchievement(name)
     local function addAchievement(name)
         if advancementData[name] and not seen[name] then
         if advancementData[name] and not seen[name] then
Linia 20: Linia 18:
     end
     end


    -- 1. ANALIZA WEJŚCIA (Obsługa nazw, Kategorii i ALL)
     for part in string.gmatch(args, "([^;]+)") do
     for part in string.gmatch(args, "([^;]+)") do
         part = mw.text.trim(part)
         part = mw.text.trim(part)
Linia 35: Linia 32:
     end
     end


    -- 2. GRUPOWANIE W KATEGORIE
     local groups = {}
     local groups = {}
     local categoryOrder = {}
     local categoryOrder = {}
Linia 49: Linia 45:
     if #categoryOrder == 0 then return "" end
     if #categoryOrder == 0 then return "" end


    -- 3. BUDOWA TABELI HTML
     local root = mw.html.create("table")
     local root = mw.html.create("table")
         :addClass("wikitable advancement-table")
         :addClass("wikitable advancement-table")
Linia 61: Linia 56:
                 :wikitext(catName)
                 :wikitext(catName)


        -- Nagłówki kolumn
         local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
         local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
         h:tag("th"):wikitext("Ikona")
         h:tag("th"):wikitext("Ikona")
         h:tag("th"):wikitext("Nazwa")
         h:tag("th"):wikitext("Nazwa")
         h:tag("th"):wikitext("Opis w grze")
         h:tag("th"):wikitext("Opis w grze")
         h:tag("th"):wikitext("Rodzic")
         h:tag("th"):wikitext("Nadrzędne")
         h:tag("th"):wikitext("Wymagania")
         h:tag("th"):wikitext("Wymagania")
         h:tag("th"):wikitext("Lokalizacja")
         h:tag("th"):wikitext("Lokalizacja")
         h:tag("th"):wikitext("Nagrody")
         h:tag("th"):wikitext("Nagroda")


        -- Renderowanie wierszy
         for _, name in ipairs(groups[catName]) do
         for _, name in ipairs(groups[catName]) do
             local item = advancementData[name]
             local item = advancementData[name]
             local row = root:tag("tr")
             local row = root:tag("tr")


            -- KOLUMNA 1: {{Postęp|icon|icon_type|raw}} + ID/Nazwa
            -- Używamy item.icon_type lub domyślnie 'plain'
             local iType = item.icon_type or "plain"
             local iType = item.icon_type or "plain"
             local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
             local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
             row:tag("td"):wikitext(iconHtml .. " '''" .. name .. "'''")
             row:tag("td"):wikitext(iconHtml)


            -- KOLUMNA 2: Tytuł
             row:tag("td"):wikitext(item.title or "—")
             row:tag("td"):wikitext(item.title or "—")


            -- KOLUMNA 3: Opis w grze
             row:tag("td"):wikitext(item.game_desc)
             row:tag("td"):wikitext(item.game_desc)


            -- KOLUMNA 4: Rodzic
             row:tag("td"):wikitext(item.parent)
             row:tag("td"):wikitext(item.parent)


            -- KOLUMNA 5: Wymagania (wiki_desc)
             row:tag("td"):wikitext(item.wiki_desc)
             row:tag("td"):wikitext(item.wiki_desc)


            -- KOLUMNA 6: Lokalizacja (Resource)
             row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)
             row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)


            -- KOLUMNA 7: Nagrody
             local rewardCell = row:tag("td")
             local rewardCell = row:tag("td")
             if item.reward == "-" or item.reward == "—" then
             if item.reward == "-" or item.reward == "—" then

Wersja z 01:55, 27 gru 2025

[ 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ł: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")
        :css("width", "100%")

    for _, catName in ipairs(categoryOrder) do
        -- Nagłówek kategorii
        root:tag("tr")
            :tag("th"):attr("colspan", "7") -- Zmieniono na 7 kolumn
                :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("Nadrzędne")
        h:tag("th"):wikitext("Wymagania")
        h:tag("th"):wikitext("Lokalizacja")
        h:tag("th"):wikitext("Nagroda")

        for _, name in ipairs(groups[catName]) do
            local item = advancementData[name]
            local row = root:tag("tr")

            local iType = item.icon_type or "plain"
            local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
            row:tag("td"):wikitext(iconHtml)

            row:tag("td"):wikitext(item.title or "—")

            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