Moduł:Dźwięki: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
| [wersja przejrzana] | [wersja przejrzana] |
Nie podano opisu zmian |
dNie podano opisu zmian |
||
| Linia 17: | Linia 17: | ||
root:tag('tr'):tag('th') | root:tag('tr'):tag('th') | ||
:attr('colspan', editionName == 'Java Edition' and '9' or '8') | :attr('colspan', editionName == 'Java Edition' and '9' or '8') | ||
:wikitext("Dźwięki" .. iconWiki .. displayTitle ) | :wikitext("Dźwięki " .. iconWiki .. displayTitle ) | ||
-- Nagłówki kolumn | -- Nagłówki kolumn | ||
Wersja z 21:22, 3 sty 2026
W tym module nie ma dokumentacji. Jeśli wiesz jak używać tego modułu, proszę, podaj odpowiednie informacje.
local p = {}
-- 1. ŁADOWANIE DANYCH
local dataPath = 'Moduł:SandBox/Igorczewski6524/Dźwięki/Dane'
local success, data = pcall(mw.loadData, dataPath)
local function renderTable(frame, editionName, editionData, displayTitle, icon, upcoming)
if type(editionData) ~= "table" then return "" end
local root = mw.html.create('table')
:addClass('wikitable sound-table mw-collapsible mw-collapsed')
:css('width', '100%')
:css('font-size', '0.9em')
-- Nagłówek główny
local iconWiki = (icon and icon ~= "") and ('[[File:' .. icon .. '|20px|link=]] ') or ""
root:tag('tr'):tag('th')
:attr('colspan', editionName == 'Java Edition' and '9' or '8')
:wikitext("Dźwięki " .. iconWiki .. displayTitle )
-- Nagłówki kolumn
local subHeader = root:tag('tr')
local headers = {"Dźwięki", "", "Napisy", "Opis", "Identyfikator", "Klucz tłumaczenia", "Głośność", "Wysokość"}
if editionName == 'Java Edition' then table.insert(headers, "Odległość rozgłosu") end
for _, hName in ipairs(headers) do
local th = subHeader:tag('th'):wikitext(hName)
if (hName == "Napisy" or hName == "Klucz tłumaczenia") and upcoming and upcoming ~= "" then
th:tag('br'):done()
:tag('small'):css('color', '#0645ad'):css('font-weight', 'normal'):wikitext('[upcoming: ' .. upcoming .. ']')
end
end
-- Generowanie wierszy
local rowFound = false
for _, group in pairs(editionData) do
if type(group) == "table" and group.zdarzenia then
-- Liczenie wierszy dla rowspan
local eventCount = 0
for _ in pairs(group.zdarzenia) do eventCount = eventCount + 1 end
for i, row in ipairs(group.zdarzenia) do
rowFound = true
local tr = root:tag('tr')
-- KOLUMNA SOUND (Odtwarzacz domyślny)
if i == 1 then
local soundCell = tr:tag('td')
:attr('rowspan', eventCount)
:css('text-align', 'center')
:css('vertical-align', 'middle')
:css('min-width', '120px') -- miejsce na odtwarzacz
if group.pliki then
for _, file in ipairs(group.pliki) do
-- Osadzenie pliku audio (MediaWiki zamieni to na odtwarzacz)
soundCell:wikitext('[[File:' .. file .. ']]<br>')
end
else
soundCell:wikitext('—')
end
end
-- DANE KOMÓREK
tr:tag('td'):wikitext(row.captions or "—"):done()
tr:tag('td'):wikitext(row.source or "—"):done()
tr:tag('td'):wikitext(row.desc or ""):done()
tr:tag('td'):tag('code'):wikitext(row.id or "—"):done():done()
tr:tag('td'):tag('code'):wikitext(row.key or "—"):done():done()
tr:tag('td'):wikitext(row.vol or "1.0"):done()
tr:tag('td'):wikitext(row.pitch or "1.0"):done()
if editionName == 'Java Edition' then
tr:tag('td'):wikitext(row.dist or "16"):done()
end
end
end
end
if not rowFound then return "" end
return '<p>\'\'\'[[' .. editionName .. ']]:\'\'\'</p>' .. tostring(root)
end
function p.main(frame)
if not success then return '<span class="error">Błąd: Brak bazy danych ' .. dataPath .. '</span>' end
local pArgs = frame:getParent().args
local fArgs = frame.args
-- Zabezpieczenie przed błędem "nil"
local id = pArgs[1] or fArgs[1]
if not id or id == "" then return "Podaj ID (np. copper) w wywołaniu modułu." end
id = mw.text.trim(id)
local nazwa = pArgs[2] or fArgs[2] or id
local blockData = data[id]
if not blockData then return '<span class="error">Błąd: Klucz "' .. id .. '" nie istnieje w bazie danych.</span>' end
-- Renderowanie z przekazaniem obiektu frame
local java = renderTable(frame, 'Java Edition', blockData.java, nazwa, blockData.ikona, blockData.java_upcoming)
local bedrock = renderTable(frame, 'Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona, blockData.bedrock_upcoming)
return java .. bedrock
end
return p