Moduł:Rekordy sezon: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 4: | Linia 4: | ||
-- Module:Rekordy_sezon | -- Module:Rekordy_sezon | ||
-- | -- | ||
-- | -- Jeden moduł dla wielu dyscyplin. | ||
-- | -- | ||
-- | -- Wywołanie: | ||
-- | -- | ||
-- | -- {{#invoke:Rekordy_sezon|main | ||
-- |sezon=2026/2027 | |||
-- |druzyna=Lech Poznań | |||
-- |dyscyplina=piłka nożna | |||
-- }} | |||
-- | |||
-- lub: | |||
-- | |||
-- {{#invoke:Rekordy_sezon|main | |||
-- |sezon=2026/2027 | |||
-- |druzyna=Enea Basket Poznań | |||
-- |dyscyplina=koszykówka | |||
-- }} | |||
-- | |||
-- Opcjonalnie: | |||
-- | |||
-- |rozgrywki=Ekstraklasa | |||
-- | -- | ||
-- ========================================================= | -- ========================================================= | ||
function p.main(frame) | |||
-- ===================================================== | -- ===================================================== | ||
| Linia 23: | Linia 35: | ||
-- ===================================================== | -- ===================================================== | ||
local sezon = frame.args.sezon or "" | local sezon = | ||
local druzyna = frame.args.druzyna or "" | mw.text.trim(frame.args.sezon or "") | ||
local druzyna = | |||
mw.text.trim(frame.args.druzyna or "") | |||
local dyscyplina = | |||
mw.text.trim(frame.args.dyscyplina or "koszykówka") | |||
local rozgrywki = | |||
mw.text.trim(frame.args.rozgrywki or "") | |||
if sezon == "" then | if sezon == "" then | ||
| Linia 33: | Linia 55: | ||
return "'''Błąd:''' nie podano drużyny." | return "'''Błąd:''' nie podano drużyny." | ||
end | end | ||
-- ===================================================== | |||
-- ESCAPOWANIE SQL | |||
-- ===================================================== | |||
local sezonSQL = | local sezonSQL = | ||
| Linia 39: | Linia 66: | ||
local druzynaSQL = | local druzynaSQL = | ||
mw.ustring.gsub(druzyna, "'", "''") | mw.ustring.gsub(druzyna, "'", "''") | ||
local rozgrywkiSQL = | |||
mw.ustring.gsub(rozgrywki, "'", "''") | |||
| Linia 52: | Linia 82: | ||
value = tostring(value) | value = tostring(value) | ||
value = mw.ustring.gsub(value, "%s+", "") | |||
value = | |||
mw.ustring.gsub( | |||
value, | |||
"%s+", | |||
"" | |||
) | |||
return tonumber(value) or 0 | return tonumber(value) or 0 | ||
| Linia 59: | Linia 95: | ||
local function | local function miejsceMeczu(row) | ||
local | local d1 = | ||
row.druzyna1 or "" | |||
local d2 = | |||
row.druzyna2 or "" | |||
if d1 == druzyna then | |||
if d1 == druzyna then | |||
return "dom" | return "dom" | ||
end | end | ||
| Linia 100: | Linia 116: | ||
local function wynikMeczu(row) | |||
local g1 = | |||
tonumber(row.gole1 or "") | |||
local | local g2 = | ||
tonumber(row.gole2 or "") | |||
if g1 and g2 then | |||
return g1, g2 | |||
end | |||
if strona ~= "" then | local wynik = | ||
row.wynik or "" | |||
local a, b = | |||
wynik:match( | |||
"(%d+)%s*:%s*(%d+)" | |||
) | |||
if a and b then | |||
return tonumber(a), tonumber(b) | |||
end | |||
return nil, nil | |||
end | |||
local function nazwaMeczu(row) | |||
local d1 = | |||
row.druzyna1 or "" | |||
local d2 = | |||
row.druzyna2 or "" | |||
local strona = | |||
row.strona_meczu or "" | |||
local tekst = | |||
d1 .. " – " .. d2 | |||
if strona ~= "" then | |||
return "[[" .. | return "[[" .. | ||
| Linia 128: | Linia 174: | ||
local function kopiuj(item) | |||
local function | |||
local nowy = {} | local nowy = {} | ||
for | for k, v in pairs(item) do | ||
nowy[ | nowy[k] = v | ||
end | end | ||
| Linia 145: | Linia 187: | ||
local function dodajRekord( | |||
tabela, | |||
miejsce, | |||
wartosc, | |||
item | |||
) | |||
local lista = | |||
tabela[miejsce] | |||
local nowy = | |||
kopiuj(item) | |||
nowy.wartosc = | |||
wartosc | |||
if #lista == 0 then | |||
table.insert( | |||
lista, | |||
nowy | |||
) | |||
return | |||
end | |||
local obecna = | |||
lista[1].wartosc | |||
if wartosc > obecna then | |||
tabela[miejsce] = { | |||
nowy | |||
} | |||
elseif wartosc == obecna then | |||
table.insert( | |||
lista, | |||
nowy | |||
) | |||
end | |||
end | end | ||
| Linia 200: | Linia 236: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- WYBÓR DYSCYPLINY | ||
-- ===================================================== | -- ===================================================== | ||
if mw.ustring.lower(dyscyplina) | |||
== "piłka nożna" | |||
or | |||
mw.ustring.lower(dyscyplina) | |||
== "pilka nozna" | |||
then | |||
return p.pilka( | |||
sezon, | |||
druzyna, | |||
sezonSQL, | |||
druzynaSQL, | |||
rozgrywki, | |||
rozgrywkiSQL | |||
) | |||
end | |||
-- Domyślnie koszykówka | |||
return p.koszykowka( | |||
sezon, | |||
druzyna, | |||
sezonSQL, | |||
druzynaSQL, | |||
rozgrywki, | |||
rozgrywkiSQL | |||
) | |||
end | |||
-- ========================================================= | |||
-- ========================================================= | |||
-- KOSZYKÓWKA | |||
-- ========================================================= | |||
-- ========================================================= | |||
function p.koszykowka( | |||
sezon, | |||
druzyna, | |||
sezonSQL, | |||
druzynaSQL, | |||
rozgrywki, | |||
rozgrywkiSQL | |||
) | |||
-- ===================================================== | |||
-- POBRANIE MECZÓW | |||
-- ===================================================== | |||
local fieldsMecze = | |||
table.concat({ | |||
"Mecze.id=mecz", | |||
"Mecze.data=data", | |||
"Mecze.sezon=sezon", | |||
"Mecze.rozgrywki=rozgrywki", | |||
"Mecze.druzyna1=druzyna1", | |||
"Mecze.druzyna2=druzyna2", | |||
"Mecze.gole1=gole1", | |||
"Mecze.gole2=gole2", | |||
"Mecze.wynik=wynik", | |||
"Mecze.strona_meczu=strona_meczu" | |||
}, ",") | |||
local whereMecze = | |||
"(Mecze.druzyna1='" .. | |||
druzynaSQL .. | |||
"' OR Mecze.druzyna2='" .. | |||
druzynaSQL .. | |||
"')" .. | |||
" AND Mecze.sezon='" .. | |||
sezonSQL .. | |||
"'" | |||
if rozgrywki ~= "" then | |||
whereMecze = | |||
whereMecze .. | |||
" AND Mecze.rozgrywki='" .. | |||
rozgrywkiSQL .. | |||
"'" | |||
end | |||
local mecze = | |||
mw.ext.cargo.query( | |||
"Mecze", | |||
fieldsMecze, | |||
{ | |||
where = whereMecze, | |||
orderBy = "Mecze.data ASC", | |||
limit = 5000 | |||
} | } | ||
) | |||
if not mecze or #mecze == 0 then | |||
return | |||
"''Brak wprowadzonych meczów dla tej drużyny w podanym sezonie.''" | |||
end | |||
-- ===================================================== | |||
-- REKORDY MECZOWE | |||
-- ===================================================== | |||