Moduł:StatystykiHistoryczne: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| (Nie pokazano 5 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 2: | Linia 2: | ||
-- ========================================================= | -- ========================================================= | ||
-- MODUŁ:STATYSTYKIHISTORYCZNE | -- MODUŁ: STATYSTYKIHISTORYCZNE | ||
-- | -- | ||
-- Łączne statystyki zawodników ze wszystkich | -- Łączne statystyki zawodników ze wszystkich | ||
| Linia 24: | Linia 24: | ||
-- }} | -- }} | ||
-- | -- | ||
-- Zawodnicy występujący w | -- Zawodnicy występujący w wybranym sezonie | ||
-- wyróżniani pogrubieniem. | -- są wyróżniani pogrubieniem. | ||
-- ========================================================= | -- ========================================================= | ||
| Linia 85: | Linia 85: | ||
-- ===================================================== | -- ===================================================== | ||
-- POBRANIE DANYCH | -- FUNKCJA LICZBOWA | ||
-- ===================================================== | |||
local function liczba(value) | |||
return | |||
tonumber(value or 0) | |||
or 0 | |||
end | |||
-- ===================================================== | |||
-- USTALENIE SEZONU WYRÓŻNIENIA | |||
-- ===================================================== | |||
local sezonWyroznienia = "" | |||
local znalezionoBiezacy = false | |||
-- ----------------------------------------------------- | |||
-- Najpierw sprawdzamy sezon podany przez użytkownika | |||
-- ----------------------------------------------------- | |||
if sezonSQL ~= "" then | |||
local sprawdzenieSezonu = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
"UdzialZawodnika.zawodnik=zawodnik", | |||
{ | |||
join = | |||
"UdzialZawodnika.mecz=Mecze.id", | |||
where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND Mecze.sezon='" | |||
.. sezonSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0", | |||
groupBy = | |||
"UdzialZawodnika.zawodnik", | |||
limit = 5000 | |||
} | |||
) | |||
if sprawdzenieSezonu | |||
and #sprawdzenieSezonu > 0 then | |||
sezonWyroznienia = sezonBiezacy | |||
znalezionoBiezacy = true | |||
end | |||
end | |||
-- ===================================================== | |||
-- JEŻELI NIE MA DANYCH DLA PODANEGO SEZONU | |||
-- SZUKAMY OSTATNIEGO SEZONU | |||
-- ===================================================== | |||
if not znalezionoBiezacy then | |||
local sezony = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
"Mecze.sezon=sezon", | |||
{ | |||
join = | |||
"UdzialZawodnika.mecz=Mecze.id", | |||
where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0", | |||
groupBy = | |||
"Mecze.sezon", | |||
orderBy = | |||
"Mecze.sezon DESC", | |||
limit = 100 | |||
} | |||
) | |||
if sezony and #sezony > 0 then | |||
sezonWyroznienia = | |||
mw.text.trim( | |||
sezony[1].sezon or "" | |||
) | |||
end | |||
end | |||
-- ===================================================== | |||
-- POBRANIE ŁĄCZNYCH DANYCH STATYSTYCZNYCH | |||
-- ===================================================== | -- ===================================================== | ||
| Linia 111: | Linia 222: | ||
-- ===================================================== | -- ===================================================== | ||
local where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0" | |||
| Linia 132: | Linia 244: | ||
limit = 5000 | limit = 5000 | ||
} | } | ||
) | ) | ||
| Linia 152: | Linia 263: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- AKTUALNI ZAWODNICY | ||
-- ===================================================== | -- ===================================================== | ||
local | local aktualni = {} | ||
if sezonWyroznienia ~= "" then | |||
local sezonAktualnySQL = | |||
mw.ustring.gsub( | |||
sezonWyroznienia, | |||
"'", | |||
"''" | |||
) | |||
local currentRows = | local currentRows = | ||
| Linia 191: | Linia 294: | ||
.. "'" | .. "'" | ||
.. " AND Mecze.sezon='" | .. " AND Mecze.sezon='" | ||
.. | .. sezonAktualnySQL | ||
.. "'" | .. "'" | ||
.. " AND UdzialZawodnika.minuty > 0", | .. " AND UdzialZawodnika.minuty > 0", | ||
| Linia 199: | Linia 302: | ||
limit = 5000 | limit = 5000 | ||
} | } | ||
) | ) | ||
| Linia 256: | Linia 358: | ||
liczba(row.punkty), | liczba(row.punkty), | ||
-- Cargo przechowuje minuty jako SEKUNDY | |||
minuty = | minuty = | ||
liczba(row.minuty), | liczba(row.minuty), | ||
| Linia 281: | Linia 384: | ||
-- ===================================================== | -- ===================================================== | ||
-- FORMATOWANIE MINUT | -- FORMATOWANIE MINUT | ||
-- | |||
-- WAŻNE: | |||
-- Pole UdzialZawodnika.minuty jest zapisane w SEKUNDACH. | |||
-- | |||
-- Przykład: | |||
-- 103775 sekund = 1729 minut 35 sekund | |||
-- | |||
-- Wynik: | |||
-- 1729:35 | |||
-- ===================================================== | -- ===================================================== | ||
local function formatujMinuty( | local function formatujMinuty(sekundy) | ||
local wartosc = | |||
tonumber(sekundy or 0) | |||
or 0 | |||
wartosc = | |||
math.floor( | math.floor( | ||
wartosc + 0.5 | |||
) | ) | ||
local | |||
local caleMinuty = | |||
math.floor( | math.floor( | ||
wartosc / 60 | |||
) | ) | ||
local | local pozostaleSekundy = | ||
wartosc % 60 | |||
return string.format( | return string.format( | ||
"%d:%02d", | "%d:%02d", | ||
caleMinuty, | |||
pozostaleSekundy | |||
) | ) | ||
| Linia 328: | Linia 445: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- | -- AKTUALNY ZAWODNIK = POGRUBIENIE | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
if row.aktualny then | if row.aktualny then | ||
| Linia 543: | Linia 660: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- TABELA | -- TABELA | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
table.insert( | table.insert( | ||
| Linia 553: | Linia 670: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- NAGŁÓWEK | -- NAGŁÓWEK | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
table.insert( | table.insert( | ||
| Linia 576: | Linia 693: | ||
) | ) | ||
table.insert( | table.insert( | ||
| Linia 591: | Linia 701: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- WIERSZE | -- WIERSZE | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
for i, zawodnik in ipairs(lista) do | for i, zawodnik in ipairs(lista) do | ||
| Linia 603: | Linia 713: | ||
-- | -- miejsce | ||
table.insert( | table.insert( | ||
| Linia 614: | Linia 722: | ||
-- | -- zawodnik | ||
table.insert( | table.insert( | ||
| Linia 627: | Linia 733: | ||
-- | -- wartość | ||
table.insert( | table.insert( | ||
| Linia 644: | Linia 748: | ||
end | end | ||
table.insert( | table.insert( | ||
| Linia 685: | Linia 785: | ||
-- ===================================================== | -- ===================================================== | ||
-- INFORMACJA O | -- INFORMACJA O AKTUALNYCH ZAWODNIKACH | ||
-- ===================================================== | -- ===================================================== | ||
if | if sezonWyroznienia ~= "" then | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
"''''' | "'''''Pogrubieniem wyróżniono zawodników " | ||
.. "występujących w sezonie " | .. "występujących w sezonie " | ||
.. | .. sezonWyroznienia | ||
.. ". | .. ".'''''" | ||
) | ) | ||
| Linia 712: | Linia 810: | ||
-- ===================================================== | -- ===================================================== | ||
-- UKŁAD 3 KOLUMNY | -- UKŁAD 3 KOLUMNY | ||
-- | |||
-- WAŻNE: | |||
-- Każda tabela zaczyna się od początku linii. | |||
-- Dzięki temu MediaWiki poprawnie rozpoznaje | |||
-- składnię {| ... |}. | |||
-- ===================================================== | -- ===================================================== | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="display: | '<div style="display:flex; flex-wrap:wrap; gap:12px; align-items:flex-start;">' | ||
) | ) | ||
| Linia 726: | Linia 829: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | |||
table.insert( | |||
wynik, | |||
zbudujTabele( | |||
tabele[1] | tabele[1] | ||
) | ) | ||
) | |||
table.insert( | |||
wynik, | |||
"</div>" | |||
) | ) | ||
| Linia 740: | Linia 851: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | |||
table.insert( | |||
wynik, | |||
zbudujTabele( | |||
tabele[2] | tabele[2] | ||
) | ) | ||
) | |||
table.insert( | |||
wynik, | |||
"</div>" | |||
) | ) | ||
| Linia 754: | Linia 873: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | |||
table.insert( | |||
wynik, | |||
zbudujTabele( | |||
tabele[3] | tabele[3] | ||
) | ) | ||
) | |||
table.insert( | |||
wynik, | |||
"</div>" | |||
) | ) | ||
| Linia 768: | Linia 895: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | |||
table.insert( | |||
wynik, | |||
zbudujTabele( | |||
tabele[4] | tabele[4] | ||
) | |||