Moduł:H2H: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| (Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 9: | Linia 9: | ||
-- team2 = przeciwnik | -- team2 = przeciwnik | ||
-- | -- | ||
-- | -- nazwa_statystyki1 / nazwa_statystyki2 służą do identyfikacji | ||
-- | -- drużyn niezależnie od historycznych nazw sponsorskich. | ||
-- | -- | ||
-- Zawiera: | -- Zawiera: | ||
-- 1. Bilans ogółem / dom / wyjazd | -- 1. Bilans ogółem / dom / wyjazd | ||
-- 2. Trenerów team1 | -- 2. Trenerów team1 w rywalizacji | ||
-- 3. Najlepszych strzelców obu drużyn | -- 3. Najlepszych strzelców obu drużyn | ||
-- 4. Rekordy indywidualne team1 | -- 4. Rekordy indywidualne team1 | ||
| Linia 20: | Linia 20: | ||
-- 6. Analizę kwart | -- 6. Analizę kwart | ||
-- 7. Wszystkie mecze | -- 7. Wszystkie mecze | ||
-- 8. | -- 8. Dogrywki 1, 2 i 3 | ||
-- ========================================================= | -- ========================================================= | ||
function p.main(frame) | function p.main(frame) | ||
-- ===================================================== | |||
-- PARAMETRY | |||
-- ===================================================== | |||
local team1 = mw.text.trim(frame.args.team1 or "") | local team1 = mw.text.trim(frame.args.team1 or "") | ||
| Linia 39: | Linia 43: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- BEZPIECZEŃSTWO SQL | ||
-- ===================================================== | -- ===================================================== | ||
local function sql(value) | local function sql(value) | ||
return mw.ustring.gsub(value, "'", "''") | return mw.ustring.gsub( | ||
tostring(value or ""), | |||
"'", | |||
"''" | |||
) | |||
end | end | ||
| Linia 51: | Linia 60: | ||
local team2SQL = sql(team2) | local team2SQL = sql(team2) | ||
-- ===================================================== | |||
-- FUNKCJE POMOCNICZE | |||
-- ===================================================== | |||
local function liczba(value) | local function liczba(value) | ||
| Linia 58: | Linia 71: | ||
end | end | ||
local tekst = | |||
mw.ustring.gsub( | |||
tostring(value), | |||
"%s+", | |||
"" | |||
) | |||
return tonumber( | return tonumber(tekst) or 0 | ||
end | end | ||
| Linia 69: | Linia 85: | ||
local function procent(wygrane, mecze) | local function procent(wygrane, mecze) | ||
if | if mecze == 0 then | ||
return "0,0%" | return "0,0%" | ||
end | end | ||
local | local wartosc = | ||
(wygrane / mecze) * 100 | |||
return string.format( | |||
"%.1f%%", | |||
wartosc | |||
):gsub("%.", ",") | |||
end | end | ||
local function | -- ===================================================== | ||
-- IDENTYFIKACJA STRONY TEAM1 | |||
-- ===================================================== | |||
local function miejsce(row) | |||
if | if row.ns1 == team1 then | ||
return | return "dom" | ||
end | end | ||
if row.ns2 == team1 then | |||
return "wyjazd" | |||
end | |||
return nil | |||
end | |||
-- ===================================================== | |||
-- WYNIK TEAM1 | |||
-- ===================================================== | |||
local function wynikDruzyny(row) | local function wynikDruzyny(row) | ||
local g1 = liczba(row.gole1) | local g1 = | ||
local g2 = liczba(row.gole2) | liczba(row.gole1) | ||
local g2 = | |||
liczba(row.gole2) | |||
if row.ns1 == team1 then | if row.ns1 == team1 then | ||
return g1, g2 | return g1, g2 | ||
elseif row.ns2 == team1 then | |||
return g2, g1 | return g2, g1 | ||
end | end | ||
| Linia 128: | Linia 147: | ||
-- ===================================================== | |||
-- NAZWA MECZU | |||
-- ===================================================== | |||
local function nazwaMeczu(row) | |||
local d1 = | |||
row.druzyna1 or "" | |||
local d2 = | |||
row.druzyna2 or "" | |||
local strona = | |||
row.strona_meczu or "" | |||
local tekst = | local tekst = | ||
d1 .. " – " .. d2 | d1 .. " – " .. d2 | ||
if strona ~= "" then | if strona ~= "" then | ||
| Linia 161: | Linia 176: | ||
end | end | ||
return tekst | return tekst | ||
end | |||
-- ===================================================== | |||
-- PARSOWANIE CZĘŚCI WYNIKU | |||
-- ===================================================== | |||
local function parseWynikCzesciowy(value) | |||
if value == nil or value == "" then | |||
return nil, nil | |||
end | |||
local tekst = | |||
tostring(value) | |||
local a, b = | |||
tekst:match( | |||
"(%d+)%s*:%s*(%d+)" | |||
) | |||
if not a or not b then | |||
return nil, nil | |||
end | |||
return | |||
tonumber(a), | |||
tonumber(b) | |||
end | end | ||
| Linia 169: | Linia 214: | ||
-- ===================================================== | -- ===================================================== | ||
-- WARUNEK H2H | -- WARUNEK H2H | ||
-- ===================================================== | -- ===================================================== | ||
local whereH2H = | local whereH2H = | ||
"(" .. | "(" .. | ||
"( | "(Mecze.nazwa_statystyki1='" .. | ||
team1SQL .. | team1SQL .. | ||
"' AND | "' AND " .. | ||
"Mecze.nazwa_statystyki2='" .. | |||
team2SQL .. | team2SQL .. | ||
"')" .. | "')" .. | ||
" OR " .. | " OR " .. | ||
"( | |||
"(Mecze.nazwa_statystyki1='" .. | |||
team2SQL .. | team2SQL .. | ||
"' AND | "' AND " .. | ||
"Mecze.nazwa_statystyki2='" .. | |||
team1SQL .. | team1SQL .. | ||
"')" .. | "')" .. | ||
")" | ")" | ||
| Linia 192: | Linia 239: | ||
-- ===================================================== | -- ===================================================== | ||
-- POBRANIE MECZÓW | -- POBRANIE MECZÓW | ||
-- | |||
-- UWAGA: | |||
-- pola nazywają się KWARTA1, KWARTA2 itd. | |||
-- a nie KWART1. | |||
-- ===================================================== | -- ===================================================== | ||
local fieldsMecze = table.concat({ | local fieldsMecze = table.concat({ | ||
" | "Mecze.id=mecz", | ||
" | "Mecze.data=data", | ||
" | "Mecze.sezon=sezon", | ||
" | "Mecze.druzyna1=druzyna1", | ||
" | "Mecze.druzyna2=druzyna2", | ||
" | "Mecze.nazwa_statystyki1=ns1", | ||
" | "Mecze.nazwa_statystyki2=ns2", | ||
" | "Mecze.gole1=gole1", | ||
" | "Mecze.gole2=gole2", | ||
" | "Mecze.wynik=wynik", | ||
" | "Mecze.wynik_do_przerwy=wynik_do_przerwy", | ||
" | "Mecze.kwarta1=kwarta1", | ||
" | "Mecze.kwarta2=kwarta2", | ||
" | "Mecze.kwarta3=kwarta3", | ||
"Mecze.kwarta4=kwarta4", | |||
" | "Mecze.dogrywka1=dogrywka1", | ||
" | "Mecze.dogrywka2=dogrywka2", | ||
" | "Mecze.dogrywka3=dogrywka3", | ||
" | "Mecze.hala=hala", | ||
"Mecze.widzowie=widzowie", | |||
"Mecze.sedziowie=sedziowie", | |||
"Mecze.strona_meczu=strona_meczu" | |||
}, ",") | }, ",") | ||
| Linia 232: | Linia 283: | ||
local mecze = | local mecze = | ||
mw.ext.cargo.query( | mw.ext.cargo.query( | ||
"Mecze | "Mecze", | ||
fieldsMecze, | fieldsMecze, | ||
{ | { | ||
| Linia 238: | Linia 289: | ||
orderBy = | orderBy = | ||
" | "Mecze.data ASC", | ||
limit = 5000 | limit = 5000 | ||
| Linia 259: | Linia 310: | ||
-- ===================================================== | -- ===================================================== | ||
-- BILANS | -- BILANS | ||
-- ===================================================== | -- ===================================================== | ||
| Linia 362: | Linia 412: | ||
if #lista == 0 then | if #lista == 0 then | ||
item.wartosc = wartosc | item.wartosc = | ||
wartosc | |||
table.insert( | table.insert( | ||
| Linia 379: | Linia 430: | ||
if wartosc > obecna then | if wartosc > obecna then | ||
lista = { | lista = { | ||
item | item | ||
} | } | ||
item.wartosc = | |||
wartosc | |||
return lista | |||
elseif wartosc == obecna then | elseif wartosc == obecna then | ||
item.wartosc = wartosc | item.wartosc = | ||
wartosc | |||
table.insert( | table.insert( | ||
| Linia 396: | Linia 452: | ||
end | end | ||
return lista | return lista | ||
| Linia 408: | Linia 465: | ||
for _, row in ipairs(mecze) do | for _, row in ipairs(mecze) do | ||
local zdobyte, stracone = | local zdobyte, | ||
stracone = | |||
wynikDruzyny(row) | wynikDruzyny(row) | ||
| Linia 415: | Linia 473: | ||
if zdobyte and stracone and miejsceMeczu then | if zdobyte and | ||
stracone and | |||
miejsceMeczu then | |||
local wynikMeczu | local wynikMeczu | ||
if zdobyte > stracone then | if zdobyte > stracone then | ||
wynikMeczu = "W" | wynikMeczu = "W" | ||
elseif zdobyte < stracone then | elseif zdobyte < stracone then | ||
wynikMeczu = "P" | wynikMeczu = "P" | ||
else | else | ||
wynikMeczu = "R" | wynikMeczu = "R" | ||
end | end | ||
-- ============================================= | -- ============================================= | ||
-- | -- OGÓŁEM | ||
-- ============================================= | -- ============================================= | ||
local b = | local b = | ||
bilans.wszystkie | bilans.wszystkie | ||
b.mecze = | b.mecze = | ||
| Linia 461: | Linia 530: | ||
-- ============================================= | -- ============================================= | ||
-- | -- DOM / WYJAZD | ||
-- ============================================= | -- ============================================= | ||
local | local bd = | ||
bilans[miejsceMeczu] | bilans[miejsceMeczu] | ||
bd.mecze = | |||
bd.mecze + 1 | |||
bd.punktyZdobyte = | |||
bd.punktyZdobyte + | |||
zdobyte | zdobyte | ||
bd.punktyStracone | |||