Moduł:H2H: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 9: | Linia 9: | ||
-- team2 = przeciwnik | -- team2 = przeciwnik | ||
-- | -- | ||
-- | -- Identyfikacja rywalizacji: | ||
-- nazwa_statystyki1 / nazwa_statystyki2 | -- nazwa_statystyki1 / nazwa_statystyki2 | ||
-- | -- | ||
-- | -- Zawiera: | ||
-- 1. Bilans ogółem / dom / wyjazd | -- 1. Bilans ogółem / dom / wyjazd | ||
-- 2. Trenerów team1 | -- 2. Trenerów team1 | ||
| Linia 21: | Linia 19: | ||
-- 5. Serie zwycięstw / porażek | -- 5. Serie zwycięstw / porażek | ||
-- 6. Analizę kwart | -- 6. Analizę kwart | ||
-- 7 | -- 7. Wszystkie mecze | ||
-- 8. Dogrywkę 1 / 2 / 3 | |||
-- | |||
-- ========================================================= | -- ========================================================= | ||
| Linia 29: | Linia 26: | ||
function p.main(frame) | function p.main(frame) | ||
local team1 = | local team1 = mw.text.trim(frame.args.team1 or "") | ||
local team2 = mw.text.trim(frame.args.team2 or "") | |||
local team2 = | |||
if team1 == "" then | if team1 == "" then | ||
| Linia 50: | Linia 39: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- FUNKCJE POMOCNICZE | ||
-- ===================================================== | -- ===================================================== | ||
local function sql(value) | local function sql(value) | ||
value = tostring(value or "") | |||
return mw.ustring.gsub | return mw.ustring.gsub(value, "'", "''") | ||
end | end | ||
| Linia 67: | Linia 51: | ||
local team2SQL = sql(team2) | local team2SQL = sql(team2) | ||
local function liczba(value) | local function liczba(value) | ||
| Linia 78: | Linia 58: | ||
end | end | ||
value = | value = tostring(value) | ||
value = mw.ustring.gsub(value, "%s+", "") | |||
return tonumber(value) or 0 | return tonumber(value) or 0 | ||
| Linia 90: | Linia 67: | ||
local function procent(wygrane, mecze) | |||
local function procent( | |||
if not mecze or mecze == 0 then | if not mecze or mecze == 0 then | ||
| Linia 104: | Linia 74: | ||
local wynik = | local wynik = | ||
(wygrane / mecze) * 100 | string.format( | ||
"%.1f", | |||
(wygrane / mecze) * 100 | |||
) | |||
wynik = | |||
mw.ustring.gsub( | |||
wynik, | |||
"%.", | |||
"," | |||
) | |||
return wynik .. "%" | |||
end | end | ||
local function parseWynik(value) | |||
if not value or value == "" then | |||
return nil, nil | |||
end | |||
local a, b = | |||
tostring(value):match( | |||
"(%d+)%s*:%s*(%d+)" | |||
) | |||
if not a or not b then | |||
return nil, nil | |||
end | |||
return tonumber(a), tonumber(b) | |||
end | |||
local function wynikDruzyny(row) | |||
local g1 = liczba(row.gole1) | |||
local g2 = liczba(row.gole2) | |||
if row.ns1 == team1 then | |||
return g1, g2 | |||
end | |||
if row.ns2 == team1 then | |||
return g2, g1 | |||
end | |||
return nil, nil | |||
end | |||
local function miejsce(row) | |||
if row.ns1 == team1 then | |||
return "dom" | |||
end | |||
" | if row.ns2 == team1 then | ||
return "wyjazd" | |||
end | |||
return nil | |||
end | |||
local function nazwaMeczu(row) | |||
local | local d1 = row.druzyna1 or "" | ||
local d2 = row.druzyna2 or "" | |||
local strona = row.strona_meczu or "" | |||
local tekst = | |||
d1 .. " – " .. d2 | |||
if | if strona ~= "" then | ||
return | return "[[" .. | ||
strona .. | |||
"|" .. | |||
tekst .. | |||
"]]" | |||
end | |||
return tekst | |||
end | |||
-- ===================================================== | |||
-- WARUNEK H2H | |||
-- | |||
-- UWAGA: | |||
-- Używamy nazw pól z aliasem M. | |||
-- ===================================================== | |||
local whereH2H = | |||
"(" .. | |||
"(M.nazwa_statystyki1='" .. | |||
team1SQL .. | |||
"' AND M.nazwa_statystyki2='" .. | |||
team2SQL .. | |||
"')" .. | |||
" OR " .. | |||
"(M.nazwa_statystyki1='" .. | |||
team2SQL .. | |||
"' AND M.nazwa_statystyki2='" .. | |||
team1SQL .. | |||
"')" .. | |||
")" | |||
-- ===================================================== | -- ===================================================== | ||
-- | -- POBRANIE MECZÓW | ||
-- ===================================================== | -- ===================================================== | ||
local | local fieldsMecze = table.concat({ | ||
"M.id=mecz", | |||
"M.data=data", | |||
"M.sezon=sezon", | |||
"M.druzyna1=druzyna1", | |||
"M.druzyna2=druzyna2", | |||
"M.nazwa_statystyki1=ns1", | |||
"M.nazwa_statystyki2=ns2", | |||
"M.gole1=gole1", | |||
"M.gole2=gole2", | |||
"M.wynik=wynik", | |||
"M.wynik_do_przerwy=wynik_do_przerwy", | |||
"M.kwart1=kwart1", | |||
"M.kwart2=kwart2", | |||
"M.kwart3=kwart3", | |||
"M.kwart4=kwart4", | |||
"M.dogrywka1=dogrywka1", | |||
"M.dogrywka2=dogrywka2", | |||
"M.dogrywka3=dogrywka3", | |||
"M.hala=hala", | |||
"M.widzowie=widzowie", | |||
"M.sedziowie=sedziowie", | |||
"M.strona_meczu=strona_meczu" | |||
}, ",") | |||
local mecze = | |||
mw.ext.cargo.query( | |||
" | "Mecze=M", | ||
fieldsMecze, | |||
{ | |||
where = whereH2H, | |||
orderBy = | |||
"M.data ASC", | |||
limit = 5000 | |||
} | |||
) | |||
if not mecze or #mecze == 0 then | |||
return | |||
return | "'''Brak meczów pomiędzy ''" .. | ||
team1 .. | |||
"'' a ''" .. | |||
team2 .. | |||
"''.'''" | |||
end | end | ||
| Linia 262: | Linia 258: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- BILANS | ||
-- TYLKO TEAM1 | |||
-- ===================================================== | -- ===================================================== | ||
local | local bilans = { | ||
wszystkie = { | |||
mecze = 0, | |||
wygrane = 0, | |||
przegrane = 0, | |||
punktyZdobyte = 0, | |||
punktyStracone = 0 | |||
}, | |||
dom = { | |||
mecze = 0, | |||
wygrane = 0, | |||
przegrane = 0, | |||
punktyZdobyte = 0, | |||
punktyStracone = 0 | |||
}, | |||
wyjazd = { | |||
mecze = 0, | |||
wygrane = 0, | |||
przegrane = 0, | |||
punktyZdobyte = 0, | |||
punktyStracone = 0 | |||
} | |||
} | |||
-- ===================================================== | |||
-- SERIE | |||
-- ===================================================== | |||
local serie = { | |||
wszystkie = { | |||
W = 0, | |||
P = 0 | |||
}, | |||
dom = { | |||
W = 0, | |||
P = 0 | |||
}, | |||
wyjazd = { | |||
W = 0, | |||
P = 0 | |||
} | |||
} | |||
local aktualnaSeria = { | |||
wszystkie = { | |||
W = 0, | |||
P = 0 | |||
}, | |||