Moduł:StatystykiHistoryczne: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| (Nie pokazano 4 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| 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 151: | Linia 263: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- AKTUALNI ZAWODNICY | ||
-- ===================================================== | -- ===================================================== | ||
local | local aktualni = {} | ||
if sezonWyroznienia ~= "" then | |||
local sezonAktualnySQL = | |||
mw.ustring.gsub( | |||
sezonWyroznienia, | |||
"'", | |||
"''" | |||
) | |||
local currentRows = | local currentRows = | ||
| Linia 190: | Linia 294: | ||
.. "'" | .. "'" | ||
.. " AND Mecze.sezon='" | .. " AND Mecze.sezon='" | ||
.. | .. sezonAktualnySQL | ||
.. "'" | .. "'" | ||
.. " AND UdzialZawodnika.minuty > 0", | .. " AND UdzialZawodnika.minuty > 0", | ||
| Linia 254: | Linia 358: | ||
liczba(row.punkty), | liczba(row.punkty), | ||
-- Cargo przechowuje minuty jako SEKUNDY | |||
minuty = | minuty = | ||
liczba(row.minuty), | liczba(row.minuty), | ||
| Linia 280: | Linia 385: | ||
-- FORMATOWANIE MINUT | -- FORMATOWANIE MINUT | ||
-- | -- | ||
-- | -- WAŻNE: | ||
-- Wynik: | -- Pole UdzialZawodnika.minuty jest zapisane w SEKUNDACH. | ||
-- | |||
-- Przykład: | |||
-- 103775 sekund = 1729 minut 35 sekund | |||
-- | |||
-- Wynik: | |||
-- 1729:35 | |||
-- ===================================================== | -- ===================================================== | ||
local function formatujMinuty(sekundy) | 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 | "%d:%02d", | ||
caleMinuty, | |||
pozostaleSekundy | |||
) | ) | ||
| Linia 327: | Linia 435: | ||
local nazwa = | local nazwa = | ||
row.zawodnik | row.zawodnik | ||
| Linia 345: | Linia 445: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- | -- AKTUALNY ZAWODNIK = POGRUBIENIE | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
if row.aktualny then | if row.aktualny then | ||
| Linia 538: | Linia 638: | ||
local lista = {} | local lista = {} | ||
for _, zawodnik in ipairs(zawodnicy) do | for _, zawodnik in ipairs(zawodnicy) do | ||
| Linia 552: | Linia 648: | ||
end | end | ||
table.sort( | table.sort( | ||
| Linia 568: | Linia 660: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- TABELA | |||
-- ------------------------------------------------- | |||
-- | |||
-- | |||
table.insert( | table.insert( | ||
| Linia 581: | Linia 670: | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- | -- NAGŁÓWEK | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
table.insert( | table.insert( | ||
| Linia 593: | Linia 682: | ||
table.insert( | |||
wynik, | |||
"! Miejsce" | |||
) | |||
table.insert( | |||
wynik, | |||
"! Zawodnik" | |||
) | |||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
" | "! " | ||
.. | .. definicja.nazwa | ||
) | ) | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
-- WIERSZE | -- WIERSZE | ||
-- ----------------------------------------------- | -- ------------------------------------------------- | ||
for i, zawodnik in ipairs(lista) do | for i, zawodnik in ipairs(lista) do | ||
| Linia 618: | Linia 713: | ||
-- | -- miejsce | ||
table.insert( | table.insert( | ||
| Linia 627: | Linia 722: | ||
-- | -- zawodnik | ||
table.insert( | table.insert( | ||
| Linia 638: | Linia 733: | ||
-- | -- wartość | ||
table.insert( | table.insert( | ||
| Linia 653: | Linia 748: | ||
end | end | ||
table.insert( | table.insert( | ||
| Linia 694: | 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 713: | Linia 802: | ||
wynik, | wynik, | ||
"" | "" | ||
) | ) | ||
| Linia 721: | Linia 811: | ||
-- 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 742: | Linia 829: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | ) | ||
| Linia 764: | Linia 851: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | ) | ||
| Linia 786: | Linia 873: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | ) | ||
| Linia 808: | Linia 895: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | ) | ||
| Linia 830: | Linia 917: | ||
table.insert( | table.insert( | ||
wynik, | wynik, | ||
'<div style="min-width: | '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">' | ||
) | ) | ||
| Linia 852: | Linia 939: | ||
table.insert( | |||