Moduł:StatystykiHistoryczne: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 10: | Linia 10: | ||
-- 1. Mecze | -- 1. Mecze | ||
-- 2. Punkty | -- 2. Punkty | ||
-- 3. | -- 3. Minuty | ||
-- 4. | -- 4. Asysty | ||
-- 5. | -- 5. Zbiórki | ||
-- 6. | -- 6. Bloki | ||
-- | -- | ||
-- Użycie: | -- Użycie: | ||
| Linia 24: | Linia 24: | ||
-- ========================================================= | -- ========================================================= | ||
function p.main(frame) | function p.main(frame) | ||
-- | -- ===================================================== | ||
-- DRUŻYNA | -- DRUŻYNA | ||
-- | -- ===================================================== | ||
local druzyna = | local druzyna = | ||
| Linia 49: | Linia 45: | ||
-- | -- ===================================================== | ||
-- BEZPIECZNE PRZYGOTOWANIE NAZWY DRUŻYNY | -- BEZPIECZNE PRZYGOTOWANIE NAZWY DRUŻYNY | ||
-- | -- ===================================================== | ||
local druzynaSQL = | local druzynaSQL = | ||
| Linia 62: | Linia 58: | ||
-- ===================================================== | -- ===================================================== | ||
-- POLA CARGO | -- POLA POBIERANE Z CARGO | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 134: | Linia 130: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- NOWY REKORD ZAWODNIKA | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 144: | Linia 140: | ||
punkty = 0, | punkty = 0, | ||
minuty = 0, | |||
asysty = 0, | asysty = 0, | ||
| Linia 149: | Linia 147: | ||
zbiorki = 0, | zbiorki = 0, | ||
bloki | bloki = 0 | ||
} | } | ||
| Linia 159: | Linia 155: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- BEZPIECZNE POBIERANIE LICZBY | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 198: | Linia 194: | ||
-- --------------------------------------------- | -- --------------------------------------------- | ||
-- | -- MECZE | ||
-- --------------------------------------------- | -- --------------------------------------------- | ||
| Linia 212: | Linia 208: | ||
stat.punkty | stat.punkty | ||
+ liczba(row.gol) | + liczba(row.gol) | ||
-- --------------------------------------------- | |||
-- MINUTY | |||
-- --------------------------------------------- | |||
stat.minuty = | |||
stat.minuty | |||
+ liczba(row.minuty) | |||
| Linia 239: | Linia 244: | ||
stat.bloki | stat.bloki | ||
+ liczba(row.blok) | + liczba(row.blok) | ||
end | end | ||
| Linia 308: | Linia 301: | ||
-- ===================================================== | -- ===================================================== | ||
-- LINK DO ZAWODNIKA | -- LINK DO STRONY ZAWODNIKA | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 327: | Linia 317: | ||
-- ===================================================== | -- ===================================================== | ||
-- GENEROWANIE | -- GENEROWANIE TABELI | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 333: | Linia 323: | ||
tytul, | tytul, | ||
pole, | pole, | ||
formatWartosci | formatWartosci | ||
) | ) | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
-- SORTOWANIE | -- SORTOWANIE | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
table.sort( | table.sort( | ||
| Linia 357: | Linia 346: | ||
if wartoscA ~= wartoscB then | if wartoscA ~= wartoscB then | ||
return wartoscA > wartoscB | return | ||
wartoscA > wartoscB | |||
end | end | ||
| Linia 372: | Linia 362: | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
-- TABELA | -- TABELA | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
local wynik = {} | local wynik = {} | ||
| Linia 381: | Linia 371: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'{| class="wikitable sortable" style="width:100%; text-align:center; margin:0;"' | |||
'{| class="wikitable sortable" style="width:100%; text-align:center;"' | |||
) | ) | ||
| Linia 420: | Linia 394: | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
-- WIERSZE | -- WIERSZE | ||
-- --------------------------------------------- | -- ------------------------------------------------- | ||
for i, rekord in ipairs(lista) do | for i, rekord in ipairs(lista) do | ||
| Linia 489: | Linia 463: | ||
-- ===================================================== | -- ===================================================== | ||
-- WYNIK | -- WYNIK | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 510: | Linia 484: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- TABELA GŁÓWNA | ||
-- | |||
-- 3 KOLUMNY × 2 RZĘDY | |||
-- | -- | ||
-- | -- MECZE | PUNKTY | MINUTY | ||
-- | -- ASYSTY | ZBIÓRKI | BLOKI | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
' | '{| style="width:100%; border-collapse:separate; border-spacing:10px; background:transparent;"' | ||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- PIERWSZY RZĄD | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"|- valign=\"top\"" | |||
) | ) | ||
-- ===================================================== | |||
-- MECZE | |||
-- ===================================================== | |||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
generujTabele( | "| style=\"width:33.33%; vertical-align:top;\" |\n" | ||
.. "'''MECZE'''\n\n" | |||
.. generujTabele( | |||
"Mecze", | "Mecze", | ||
"mecze", | "mecze", | ||
nil | nil | ||
) | ) | ||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- PUNKTY | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"| style=\"width:33.33%; vertical-align:top;\" |\n" | |||
.. "'''PUNKTY'''\n\n" | |||
.. generujTabele( | |||
generujTabele( | |||
"Punkty", | "Punkty", | ||
"punkty", | "punkty", | ||
nil | nil | ||
) | ) | ||
) | ) | ||
-- ===================================================== | |||
-- MINUTY | |||
-- ===================================================== | |||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
" | "| style=\"width:33.33%; vertical-align:top;\" |\n" | ||
.. "'''MINUTY'''\n\n" | |||
.. generujTabele( | |||
"Minuty", | |||
"minuty", | |||
formatujMinuty | |||
) | |||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- DRUGI RZĄD | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"|- valign=\"top\"" | |||
) | ) | ||
-- ===================================================== | |||
-- ASYSTY | |||
-- ===================================================== | |||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
generujTabele( | "| style=\"width:33.33%; vertical-align:top;\" |\n" | ||
.. "'''ASYSTY'''\n\n" | |||
.. generujTabele( | |||
"Asysty", | "Asysty", | ||
"asysty", | "asysty", | ||
nil | nil | ||
) | ) | ||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- ZBIÓRKI | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"| style=\"width:33.33%; vertical-align:top;\" |\n" | |||
.. "'''ZBIÓRKI'''\n\n" | |||
.. generujTabele( | |||
generujTabele( | |||
"Zbiórki", | "Zbiórki", | ||
"zbiorki", | "zbiorki", | ||
nil | nil | ||
) | ) | ||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- BLOKI | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"| style=\"width:33.33%; vertical-align:top;\" |\n" | |||
.. "'''BLOKI'''\n\n" | |||
.. generujTabele( | |||
generujTabele( | |||
"Bloki", | "Bloki", | ||
"bloki", | "bloki", | ||
nil | nil | ||
) | ) | ||
) | ) | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- KONIEC TABELI GŁÓWNEJ | ||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"|}" | |||
) | ) | ||
Wersja z 09:41, 30 sie 2026
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:StatystykiHistoryczne/opis
local p = {}
-- =========================================================
-- MODUŁ: STATYSTYKISTORYCZNE
--
-- Łączne statystyki zawodników drużyny koszykarskiej
-- ze wszystkich wprowadzonych sezonów.
--
-- Tabele:
-- 1. Mecze
-- 2. Punkty
-- 3. Minuty
-- 4. Asysty
-- 5. Zbiórki
-- 6. Bloki
--
-- Użycie:
--
-- {{#invoke:StatystykiHistoryczne|main
-- |druzyna=Enea Basket Poznań
-- }}
--
-- Moduł jest uniwersalny dla drużyn koszykarskich.
-- =========================================================
function p.main(frame)
-- =====================================================
-- DRUŻYNA
-- =====================================================
local druzyna =
mw.text.trim(
frame.args.druzyna or ""
)
if druzyna == "" then
return
"''Nie podano drużyny.''"
end
-- =====================================================
-- BEZPIECZNE PRZYGOTOWANIE NAZWY DRUŻYNY
-- =====================================================
local druzynaSQL =
mw.ustring.gsub(
druzyna,
"'",
"''"
)
-- =====================================================
-- POLA POBIERANE Z CARGO
-- =====================================================
local fields = table.concat({
"UdzialZawodnika.zawodnik=zawodnik",
"UdzialZawodnika.druzyna=druzyna",
"UdzialZawodnika.mecz=mecz",
"UdzialZawodnika.minuty=minuty",
"UdzialZawodnika.minuty_format=minuty_format",
"UdzialZawodnika.gol=gol",
"UdzialZawodnika.asysta=asysta",
"UdzialZawodnika.zbiorka=zbiorka",
"UdzialZawodnika.blok=blok"
}, ",")
-- =====================================================
-- ZAPYTANIE CARGO
-- =====================================================
local args = {
where =
"UdzialZawodnika.druzyna='"
.. druzynaSQL
.. "'",
limit = 5000
}
local rows =
mw.ext.cargo.query(
"UdzialZawodnika",
fields,
args
)
-- =====================================================
-- BRAK DANYCH
-- =====================================================
if not rows or #rows == 0 then
return
"''Brak statystyk dla drużyny "
.. druzyna
.. " w bazie.''"
end
-- =====================================================
-- STRUKTURA ZAWODNIKA
-- =====================================================
local zawodnicy = {}
-- =====================================================
-- NOWY REKORD ZAWODNIKA
-- =====================================================
local function nowyZawodnik()
return {
mecze = 0,
punkty = 0,
minuty = 0,
asysty = 0,
zbiorki = 0,
bloki = 0
}
end
-- =====================================================
-- BEZPIECZNE POBIERANIE LICZBY
-- =====================================================
local function liczba(wartosc)
return
tonumber(wartosc or 0)
or 0
end
-- =====================================================
-- ZLICZANIE STATYSTYK
-- =====================================================
for _, row in ipairs(rows) do
local zawodnik =
mw.text.trim(
row.zawodnik or ""
)
if zawodnik ~= "" then
if not zawodnicy[zawodnik] then
zawodnicy[zawodnik] =
nowyZawodnik()
end
local stat =
zawodnicy[zawodnik]
-- ----------