Moduł:Advancement: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
| [wersja przejrzana] | [wersja przejrzana] |
d Igorczewski6524 przeniósł(-osła) stronę Moduł:Sandbox/Igorczewski6524/Advancement do Moduł:Advancement, bez pozostawienia przekierowania pod starym tytułem |
Dodałem ikony przy nazwach kategorii |
||
| (Nie pokazano 4 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 1: | Linia 1: | ||
local p = {} | local p = {} | ||
local advancementData = mw.loadData('Moduł: | local advancementData = mw.loadData('Moduł:Advancement/Dane') | ||
-- Tabela mapowania kategorii na ikony InvSprite | |||
-- Dodaj tutaj odpowiednie nazwy ikon dla swoich kategorii | |||
local categoryIcons = { | |||
["Minecraft"] = "Blok trawy", | |||
["End"] = "Kamień Endu", | |||
["Przygoda"] = "Pusta mapa", | |||
["Nether"] = "Czerwone netherowe cegły", | |||
["Rolnictwo"] = "Snop siana" | |||
} | |||
function p.render(frame) | function p.render(frame) | ||
| Linia 9: | Linia 19: | ||
local achievementsToShow = {} | local achievementsToShow = {} | ||
local seen = {} | local seen = {} | ||
local expSprite = "" | local expSprite = "" | ||
| Linia 18: | Linia 27: | ||
end | end | ||
end | end | ||
for part in string.gmatch(args, "([^;]+)") do | for part in string.gmatch(args, "([^;]+)") do | ||
part = mw.text.trim(part) | part = mw.text.trim(part) | ||
if part:sub(1, 9) == "Category:" then | if part:sub(1, 9) == "Category:" then | ||
local targetCat = part:sub(10) | local targetCat = part:sub(10) | ||
| Linia 34: | Linia 41: | ||
end | end | ||
end | end | ||
local groups = {} | local groups = {} | ||
| Linia 48: | Linia 54: | ||
if #categoryOrder == 0 then return "" end | if #categoryOrder == 0 then return "" end | ||
local root = mw.html.create("table") | local root = mw.html.create("table") | ||
:addClass("wikitable advancement-table") | :addClass("wikitable advancement-table") | ||
:css("width", "100%") | :css("width", "100%") | ||
for _, catName in ipairs(categoryOrder) do | for _, catName in ipairs(categoryOrder) do | ||
-- Pobieranie ikony dla kategorii | |||
local catIconName = categoryIcons[catName] | |||
local catHeaderText = catName | |||
if catIconName then | |||
local iconSprite = frame:preprocess('{{InvSprite|' .. catIconName .. '}}') | |||
-- Używamy flexboxa wewnątrz wikitextu, co najlepiej radzi sobie z centrowaniem pionowym | |||
catHeaderText = '<div style="display: flex; align-items: center; justify-content: center; gap: 8px;">' | |||
.. '<span>' .. iconSprite .. '</span>' | |||
.. '<span>' .. catName .. '</span>' | |||
.. '</div>' | |||
end | |||
-- Nagłówek kategorii | |||
root:tag("tr") | root:tag("tr") | ||
:tag("th"):attr("colspan", "7") | :tag("th"):attr("colspan", "7") | ||
:css("background", "#202122"):css("color", "white"):css("padding", "8px") | :css("background", "#202122") | ||
:wikitext( | :css("color", "white") | ||
:css("padding", "8px") | |||
:css("text-align", "center") | |||
:css("vertical-align", "middle") -- Wyrównanie zawartości komórki w pionie | |||
:wikitext(catHeaderText) | |||
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(" | 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(" | h:tag("th"):wikitext("Nagroda") | ||
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") | ||
local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '| | local iType = item.icon_type or "plain" | ||
row:tag("td"):wikitext(iconHtml | local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}') | ||
row:tag("td"):wikitext(iconHtml) | |||
row:tag("td"):wikitext(item.title) | |||
-- Druga kolumna z pogrubieniem | |||
row:tag("td"):css("font-weight", "bold"):wikitext(item.title or "—") | |||
row:tag("td"):wikitext(item.game_desc) | row:tag("td"):wikitext(item.game_desc) | ||
row:tag("td"):wikitext(item.parent) | row:tag("td"):wikitext(item.parent) | ||
row:tag("td"):wikitext(item.wiki_desc) | row:tag("td"):wikitext(item.wiki_desc) | ||
row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource) | row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource) | ||
local rewardCell = row:tag("td") | local rewardCell = row:tag("td") | ||
if item.reward == "-" or item.reward == "—" then | if item.reward == "-" or item.reward == "—" then | ||
Aktualna wersja na dzień 00:01, 29 gru 2025
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')
-- Tabela mapowania kategorii na ikony InvSprite
-- Dodaj tutaj odpowiednie nazwy ikon dla swoich kategorii
local categoryIcons = {
["Minecraft"] = "Blok trawy",
["End"] = "Kamień Endu",
["Przygoda"] = "Pusta mapa",
["Nether"] = "Czerwone netherowe cegły",
["Rolnictwo"] = "Snop siana"
}
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
-- Pobieranie ikony dla kategorii
local catIconName = categoryIcons[catName]
local catHeaderText = catName
if catIconName then
local iconSprite = frame:preprocess('{{InvSprite|' .. catIconName .. '}}')
-- Używamy flexboxa wewnątrz wikitextu, co najlepiej radzi sobie z centrowaniem pionowym
catHeaderText = '<div style="display: flex; align-items: center; justify-content: center; gap: 8px;">'
.. '<span>' .. iconSprite .. '</span>'
.. '<span>' .. catName .. '</span>'
.. '</div>'
end
-- Nagłówek kategorii
root:tag("tr")
:tag("th"):attr("colspan", "7")
:css("background", "#202122")
:css("color", "white")
:css("padding", "8px")
:css("text-align", "center")
:css("vertical-align", "middle") -- Wyrównanie zawartości komórki w pionie
:wikitext(catHeaderText)
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)
-- Druga kolumna z pogrubieniem
row:tag("td"):css("font-weight", "bold"):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