Moduł:HistoriaWystepow: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| (Nie pokazano 6 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 1: | Linia 1: | ||
local p = {} | local p = {} | ||
-- ========================================================= | |||
-- MODUŁ:HISTORIAWYSTĘPÓW | |||
-- | |||
-- Historia występów zawodnika | |||
-- | |||
-- UWAGA: | |||
-- Moduł pokazuje wyłącznie występy zawodnika | |||
-- w drużynach poznańskich. | |||
-- | |||
-- Liczy się UdzialZawodnika.druzyna, | |||
-- a NIE przeciwnik. | |||
-- | |||
-- Dzięki temu: | |||
-- Enea Basket Poznań vs Resovia -> TAK | |||
-- Resovia vs Enea Basket Poznań -> NIE | |||
-- ========================================================= | |||
-- ========================================================= | |||
-- DRUŻYNY POZNAŃSKIE | |||
-- ========================================================= | |||
-- | |||
-- Tutaj dopisujemy kolejne drużyny poznańskie. | |||
-- | |||
-- Nazwa musi być identyczna z wartością pola "druzyna" | |||
-- w UdzialZawodnika. | |||
-- | |||
local druzynyPoznanskie = { | |||
["Enea Basket Poznań"] = true, | |||
["Enea AZS Politechnika Poznań"] = true, | |||
["Lech Poznań"] = true, | |||
["Warta Poznań"] = true, | |||
["AZS Politechnika Poznań"] = true, | |||
["MUKS Poznań"] = true | |||
} | |||
function p.main(frame) | function p.main(frame) | ||
local zawodnik = frame.args.zawodnik | local zawodnik = | ||
mw.text.trim( | |||
frame.args.zawodnik or "" | |||
) | |||
if zawodnik == "" then | |||
zawodnik = | |||
mw.title | |||
.getCurrentTitle() | |||
.text | |||
end | end | ||
-- ========================================== | -- ===================================================== | ||
-- | -- BEZPIECZNE PRZYGOTOWANIE NAZWY ZAWODNIKA | ||
-- ========================================== | -- ===================================================== | ||
local zawodnikSQL = | |||
mw.ustring.gsub( | |||
zawodnik, | |||
"'", | |||
"''" | |||
) | |||
-- ===================================================== | |||
-- POLA POBIERANE Z CARGO | |||
-- ===================================================== | |||
local fields = table.concat({ | local fields = table.concat({ | ||
"UdzialZawodnika.mecz=mecz", | "UdzialZawodnika.mecz=mecz", | ||
"UdzialZawodnika.druzyna=druzyna", | "UdzialZawodnika.druzyna=druzyna", | ||
"UdzialZawodnika.minuty=minuty", | "UdzialZawodnika.minuty=minuty", | ||
"UdzialZawodnika.minuty_format=minuty_format", | "UdzialZawodnika.minuty_format=minuty_format", | ||
"UdzialZawodnika.gol=gol", | "UdzialZawodnika.gol=gol", | ||
"UdzialZawodnika.asysta=asysta", | |||
"UdzialZawodnika.zbiorka=zbiorka", | |||
"UdzialZawodnika.eval=eval", | "UdzialZawodnika.eval=eval", | ||
"UdzialZawodnika.plusminus=plusminus", | "UdzialZawodnika.plusminus=plusminus", | ||
"Mecze.data=data", | "Mecze.data=data", | ||
"Mecze.sezon=sezon", | |||
"Mecze.druzyna1=druzyna1", | "Mecze.druzyna1=druzyna1", | ||
"Mecze.druzyna2=druzyna2", | "Mecze.druzyna2=druzyna2", | ||
"Mecze.wynik=wynik", | "Mecze.wynik=wynik", | ||
"Mecze.strona_meczu=strona_meczu" | "Mecze.strona_meczu=strona_meczu" | ||
}, ",") | }, ",") | ||
-- ===================================================== | |||
-- ZAPYTANIE CARGO | |||
-- | |||
-- Pobieramy wszystkie występy zawodnika, | |||
-- a następnie filtrujemy je według drużyny. | |||
-- | |||
-- NIE filtrujemy Mecze.druzyna1/druzyna2, | |||
-- ponieważ przeciwnik może być drużyną poznańską. | |||
-- ===================================================== | |||
local args = { | local args = { | ||
join = "UdzialZawodnika.mecz=Mecze.id", | |||
where = "UdzialZawodnika.zawodnik='" .. zawodnikSQL .. "' AND UdzialZawodnika.minuty > 0", | join = | ||
orderBy = "Mecze.data ASC", | "UdzialZawodnika.mecz=Mecze.id", | ||
where = | |||
"UdzialZawodnika.zawodnik='" | |||
.. zawodnikSQL | |||
.. "' AND UdzialZawodnika.minuty > 0", | |||
orderBy = | |||
"Mecze.data ASC", | |||
limit = 5000 | limit = 5000 | ||
} | } | ||
local rows = mw.ext.cargo.query( | |||
local rows = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
) | fields, | ||
args | |||
) | |||
-- ===================================================== | |||
-- FILTR DRUŻYN POZNAŃSKICH | |||
-- | |||
-- Sprawdzamy U.druzyna. | |||
-- | |||
-- Dzięki temu zawodnik występujący przeciwko | |||
-- drużynie poznańskiej, ale reprezentujący | |||
-- drużynę przyjezdną, NIE zostanie uwzględniony. | |||
-- ===================================================== | |||
local tylkoPoznanskie = {} | |||
if rows then | |||
for _, row in ipairs(rows) do | |||
local druzyna = | |||
mw.text.trim( | |||
row.druzyna or "" | |||
) | |||
if druzynyPoznanskie[druzyna] then | |||
table.insert( | |||
tylkoPoznanskie, | |||
row | |||
) | |||
end | |||
end | |||
end | |||
rows = | |||
tylkoPoznanskie | |||
-- ===================================================== | |||
-- BRAK DANYCH | |||
-- ===================================================== | |||
if not rows or #rows == 0 then | if not rows or #rows == 0 then | ||
return "''Brak wprowadzonych występów w bazie.''" | |||
return | |||
"''Brak wprowadzonych występów zawodnika " | |||
.. "dla drużyn poznańskich w bazie.''" | |||
end | end | ||
-- ========================================== | |||
-- ===================================================== | |||
-- PODSUMOWANIE | -- PODSUMOWANIE | ||
-- ========================================== | -- ===================================================== | ||
local function nowePodsumowanie() | |||
return { | |||
wystepy = 0, | |||
zwyciestwa = 0, | |||
porazki = 0, | |||
remisy = 0, | |||
punkty = 0, | |||
minuty = 0, | |||
asysty = 0, | |||
zbiorki = 0, | |||
eval = 0, | |||
plusminus = 0 | |||
} | |||
end | |||
-- ===================================================== | |||
-- PODSUMOWANIA | |||
-- ===================================================== | |||
local suma = | |||
nowePodsumowanie() | |||
local dom = | |||
nowePodsumowanie() | |||
local wyjazd = | |||
nowePodsumowanie() | |||
-- sezony | |||
local sezony = {} | |||
-- kluby | |||
local kluby = {} | |||
-- ===================================================== | |||
-- OKREŚLENIE WYNIKU MECZU | |||
-- ===================================================== | |||
local function okreslWynik(row) | |||
local d1 = | |||
row.druzyna1 or "" | |||
local d2 = | |||
row.druzyna2 or "" | |||
local druzyna = | |||
row.druzyna or "" | |||
local wynikMeczu = | |||
row.wynik or "" | |||
local g1, g2 = | |||
wynikMeczu:match( | |||
"(%d+)%s*:%s*(%d+)" | |||
) | |||
if not g1 or not g2 then | |||
return nil | |||
end | |||
g1 = | |||
tonumber(g1) | |||
g2 = | |||
tonumber(g2) | |||
if druzyna == d1 then | |||
if g1 > g2 then | |||
return "W" | |||
elseif g1 < g2 then | |||
return "P" | |||
else | |||
return "R" | |||
end | |||
elseif druzyna == d2 then | |||
if g2 > g1 then | |||
return "W" | |||
elseif g2 < g1 then | |||
return "P" | |||
else | |||
return "R" | |||
end | |||
end | |||
return nil | |||
end | |||
-- ===================================================== | |||
-- DODANIE MECZU DO PODSUMOWANIA | |||
-- ===================================================== | |||
local function dodajDoPodsumowania( | |||
stat, | |||
row | |||
) | |||
stat.wystepy = | |||
stat.wystepy + 1 | |||
stat.punkty = | |||
stat.punkty | |||
+ ( | |||
tonumber(row.gol or 0) | |||
or 0 | |||
) | |||
stat.minuty = | |||
stat.minuty | |||
+ ( | |||
tonumber(row.minuty or 0) | |||
or 0 | |||
) | |||
stat.asysty = | |||
stat.asysty | |||
+ ( | |||
tonumber(row.asysta or 0) | |||
or 0 | |||
) | |||
stat.zbiorki = | |||
stat.zbiorki | |||
+ ( | |||
tonumber(row.zbiorka or 0) | |||
or 0 | |||
) | |||
stat.eval = | |||
stat.eval | |||
+ ( | |||
tonumber(row.eval or 0) | |||
or 0 | |||
) | |||
stat.plusminus = | |||
stat.plusminus | |||
+ ( | |||
tonumber(row.plusminus or 0) | |||
or 0 | |||
) | |||
local wynik = | |||
okreslWynik(row) | |||
if wynik == "W" then | |||
stat.zwyciestwa = | |||
stat.zwyciestwa + 1 | |||
elseif wynik == "P" then | |||
stat.porazki = | |||
stat.porazki + 1 | |||
elseif wynik == "R" then | |||
stat.remisy = | |||
stat.remisy + 1 | |||
end | |||
end | |||
-- ===================================================== | |||
-- PRZEJŚCIE PRZEZ WSZYSTKIE MECZE | |||
-- ===================================================== | |||
for _, row in ipairs(rows) do | for _, row in ipairs(rows) do | ||
local d1 = row.druzyna1 or "" | -- ----------------------------------------------- | ||
local d2 = row.druzyna2 or "" | -- WSZYSTKIE | ||
local druzyna = row.druzyna or "" | -- ----------------------------------------------- | ||
local | |||
dodajDoPodsumowania( | |||
| < | |||