Moduł:Rekordy sezon: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 4: | Linia 4: | ||
-- Moduł:Rekordy_sezon | -- Moduł:Rekordy_sezon | ||
-- | -- | ||
-- | -- Obsługiwane dyscypliny: | ||
-- koszykowka | |||
-- pilka nozna | |||
-- | -- | ||
-- Wywołanie: | -- Wywołanie: | ||
| Linia 11: | Linia 13: | ||
-- |sezon=2026/2027 | -- |sezon=2026/2027 | ||
-- |druzyna=Lech Poznań | -- |druzyna=Lech Poznań | ||
-- |dyscyplina= | -- |dyscyplina=pilka nozna | ||
-- }} | -- }} | ||
-- | -- | ||
-- | -- DANE: | ||
-- | -- Mecze | ||
-- | -- UdzialZawodnika | ||
-- Strzelcy | |||
-- | -- | ||
-- WAŻNE: | |||
-- Moduł korzysta wyłącznie z mw.ext.cargo.query(). | |||
-- Nie używa SELECT. | |||
-- ========================================================= | -- ========================================================= | ||
| Linia 24: | Linia 30: | ||
-- FUNKCJE WSPÓLNE | -- FUNKCJE WSPÓLNE | ||
-- ========================================================= | -- ========================================================= | ||
local function liczba(value) | local function liczba(value) | ||
| Linia 45: | Linia 38: | ||
value = tostring(value) | value = tostring(value) | ||
value = mw.ustring.gsub(value, "%s+", "") | |||
return tonumber(value) or 0 | |||
value = | end | ||
local function esc(value) | |||
value = tostring(value or "") | |||
return | return mw.ustring.gsub(value, "'", "''") | ||
end | end | ||
| Linia 59: | Linia 56: | ||
-- ========================================================= | -- ========================================================= | ||
-- WYNIK MECZU | -- WYNIK MECZU | ||
-- ========================================================= | -- ========================================================= | ||
local function wynikMeczu(row) | local function wynikMeczu(row) | ||
local g1 = | local g1 = liczba(row.gole1) | ||
local g2 = liczba(row.gole2) | |||
) | |||
if row.gole1 ~= nil and row.gole2 ~= nil | |||
and row.gole1 ~= "" and row.gole2 ~= "" then | |||
return g1, g2 | return g1, g2 | ||
end | end | ||
local wynik = | local wynik = tostring(row.wynik or "") | ||
local a, b = | local a, b = | ||
mw.ustring.match( | |||
wynik, | |||
"(%d+)%s*:%s*(%d+)" | "(%d+)%s*:%s*(%d+)" | ||
) | ) | ||
if a and b then | if a and b then | ||
return tonumber(a), tonumber(b) | |||
end | |||
return nil, nil | |||
return nil, nil | |||
end | end | ||
| Linia 107: | Linia 92: | ||
-- ========================================================= | -- ========================================================= | ||
local function miejsceMeczu( | local function miejsceMeczu(row, druzyna) | ||
) | |||
local d1 = tostring(row.druzyna1 or "") | |||
local d2 = tostring(row.druzyna2 or "") | |||
if d1 == druzyna then | if d1 == druzyna then | ||
return "dom" | return "dom" | ||
end | end | ||
if d2 == druzyna then | if d2 == druzyna then | ||
return "wyjazd" | return "wyjazd" | ||
end | end | ||
return nil | return nil | ||
| Linia 140: | Linia 116: | ||
local function nazwaMeczu(row) | local function nazwaMeczu(row) | ||
local d1 = | local d1 = tostring(row.druzyna1 or "") | ||
local d2 = tostring(row.druzyna2 or "") | |||
local strona = tostring(row.strona_meczu or "") | |||
local d2 = | |||
local tekst = | local tekst = | ||
d1 .. " – " .. d2 | d1 .. " – " .. d2 | ||
if strona ~= "" then | if strona ~= "" then | ||
| Linia 163: | Linia 132: | ||
end | end | ||
return tekst | return tekst | ||
| Linia 171: | Linia 139: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- DODAWANIE REKORDU | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function dodajRekord(tabela, miejsce, wartosc, item) | ||
if | if not tabela[miejsce] then | ||
tabela[miejsce] = {} | |||
end | end | ||
local lista = tabela[miejsce] | |||
if #lista == 0 then | |||
table.insert(lista, item) | |||
return | |||
end | |||
local obecna = | |||
tonumber(lista[1].wartosc) or 0 | |||
if wartosc > obecna then | |||
tabela[miejsce] = { | |||
item | |||
} | |||
elseif wartosc == obecna then | |||
table.insert( | |||
lista, | |||
item | |||
) | ) | ||
end | end | ||
end | end | ||
| Linia 243: | Linia 183: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- KOSZYKÓWKA | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function rekordyKoszykowka( | ||
sezon, | |||
druzyna | |||
) | |||
-- ===================================================== | |||
-- MECZE | |||
-- ===================================================== | |||
local pola = 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 mecze = | |||
mw.ext.cargo.query( | |||
"Mecze", | |||
pola, | |||
{ | |||
where = | |||
"(Mecze.druzyna1='" .. | |||
esc(druzyna) .. | |||
"' OR Mecze.druzyna2='" .. | |||
esc(druzyna) .. | |||
"')" .. | |||
" AND Mecze.sezon='" .. | |||
esc(sezon) .. | |||
"'", | |||
orderBy = | |||
"Mecze.data ASC", | |||
limit = 5000 | |||
} | |||
) | |||
if | if not mecze or #mecze == 0 then | ||
return | |||
"''Brak meczów dla tej drużyny w podanym sezonie.''" | |||
end | end | ||
local zwyciestwa = { | |||
dom = {}, | |||
wyjazd = {} | |||
} | |||
local porazki = { | |||
dom = {}, | |||
wyjazd = {} | |||
} | |||
-- ===================================================== | |||
-- PRZETWARZANIE MECZÓW | |||
-- ===================================================== | |||
for _, row in ipairs(mecze) do | |||
local g1, g2 = | |||
wynikMeczu(row) | |||
local miejsce = | |||
miejsceMeczu(row, druzyna) | |||
if g1 and g2 and miejsce then | |||
local zdobyte | |||
local stracone | |||
if miejsce == "dom" then | |||
zdobyte = g1 | |||
stracone = g2 | |||
else | |||
zdobyte = g2 | |||
stracone = g1 | |||
end | |||
local roznica = | |||
zdobyte - stracone | |||
local item = { | |||
tekst = | |||
nazwaMeczu(row), | |||
wynik = | |||
tostring(g1) .. | |||
":" .. | |||
tostring(g2), | |||
roznica = | |||
roznica, | |||
wartosc = | |||
math.abs(roznica) | |||
} | |||
if roznica > 0 then | |||
dodajRekord( | |||
zwyciestwa, | |||
miejsce, | |||
roznica, | |||
item | |||
) | |||
elseif roznica < 0 then | |||
dodajRekord( | |||
porazki, | |||