Moduł:Advancement
Przejdź do nawigacji
Przejdź do wyszukiwania
W tym module nie ma dokumentacji. Jeśli wiesz jak używać tego modułu, proszę, podaj odpowiednie informacje.
local p = {}
-- Optymalizacja: mw.loadData ładuje bazę danych tylko raz na stronę
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 = ""
-- Funkcja pomocnicza do dodawania osiągnięć
local function addAchievement(name)
if advancementData[name] and not seen[name] then
table.insert(achievementsToShow, name)
seen[name] = true
end
end
-- 1. ANALIZA WEJŚCIA (Obsługa nazw, Kategorii i ALL)
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
-- 2. GRUPOWANIE W KATEGORIE
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
-- 3. BUDOWA TABELI HTML
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)
-- Nagłówki kolumn
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")
-- Renderowanie wierszy
for _, name in ipairs(groups[catName]) do
local item = advancementData[name]
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 iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
row:tag("td"):wikitext(iconHtml .. " '''" .. name .. "'''")
-- KOLUMNA 2: Tytuł
row:tag("td"):wikitext(item.title or "—")
-- KOLUMNA 3: Opis w grze
row:tag("td"):wikitext(item.game_desc)
-- KOLUMNA 4: Rodzic
row:tag("td"):wikitext(item.parent)
-- KOLUMNA 5: Wymagania (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)
-- KOLUMNA 7: Nagrody
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