Moduł:H2H: Różnice pomiędzy wersjami
Wygląd
Utworzono nową stronę "local p = {} function p.main(frame) local team1 = frame.args.team1 or "" local team2 = frame.args.team2 or "" if team1 == "" or team2 == "" then return "'''Błąd:''' należy podać team1 i team2." end -- ========================================================= -- FUNKCJE POMOCNICZE -- ========================================================= local function esc(value) value = tostring(value or "") return…" |
Nie podano opisu zmian |
||
| (Nie pokazano 15 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 1: | Linia 1: | ||
local p = {} | local p = {} | ||
-- ========================================================= | |||
-- MODUŁ:H2H | |||
-- | |||
-- Historia bezpośrednich spotkań dwóch drużyn. | |||
-- | |||
-- team1 = drużyna analizowana | |||
-- team2 = przeciwnik | |||
-- | |||
-- nazwa_statystyki1 / nazwa_statystyki2 służą do identyfikacji | |||
-- drużyn niezależnie od historycznych nazw sponsorskich. | |||
-- | |||
-- Zawiera: | |||
-- 1. Bilans ogółem / dom / wyjazd | |||
-- 2. Trenerów team1 w rywalizacji | |||
-- 3. Najlepszych strzelców obu drużyn | |||
-- 4. Rekordy indywidualne team1 | |||
-- 5. Serie zwycięstw / porażek | |||
-- 6. Analizę kwart | |||
-- 7. Wszystkie mecze | |||
-- 8. Dogrywki 1, 2 i 3 | |||
-- ========================================================= | |||
function p.main(frame) | function p.main(frame) | ||
local team1 = frame.args.team1 or "" | -- ===================================================== | ||
local team2 = frame.args.team2 or "" | -- PARAMETRY | ||
-- ===================================================== | |||
local team1 = mw.text.trim(frame.args.team1 or "") | |||
local team2 = mw.text.trim(frame.args.team2 or "") | |||
if team1 == "" then | |||
return "'''Błąd:''' nie podano team1." | |||
end | |||
if | if team2 == "" then | ||
return "'''Błąd:''' | return "'''Błąd:''' nie podano team2." | ||
end | end | ||
local function | -- ===================================================== | ||
-- BEZPIECZEŃSTWO SQL | |||
return mw.ustring.gsub(value, "'", "''") | -- ===================================================== | ||
local function sql(value) | |||
return mw.ustring.gsub( | |||
tostring(value or ""), | |||
"'", | |||
"''" | |||
) | |||
end | end | ||
local function | local team1SQL = sql(team1) | ||
local team2SQL = sql(team2) | |||
-- ===================================================== | |||
-- FUNKCJE POMOCNICZE | |||
-- ===================================================== | |||
local function liczba(value) | |||
if value == nil or value == "" then | if value == nil or value == "" then | ||
return 0 | return 0 | ||
end | end | ||
local tekst = | |||
mw.ustring.gsub( | |||
tostring(value), | |||
"%s+", | |||
"" | |||
) | |||
return tonumber(tekst) or 0 | |||
end | end | ||
local function procent(wygrane, mecze) | |||
if | if mecze == 0 then | ||
return | return "0,0%" | ||
end | end | ||
local | local wartosc = | ||
(wygrane / mecze) * 100 | |||
return string.format( | |||
"%.1f%%", | |||
wartosc | |||
):gsub("%.", ",") | |||
end | |||
-- ===================================================== | |||
-- IDENTYFIKACJA STRONY TEAM1 | |||
-- ===================================================== | |||
local function | local function miejsce(row) | ||
if row. | if row.ns1 == team1 then | ||
return "dom" | return "dom" | ||
end | end | ||
if row. | if row.ns2 == team1 then | ||
return "wyjazd" | return "wyjazd" | ||
end | end | ||
return nil | return nil | ||
end | |||
-- ===================================================== | |||
-- WYNIK TEAM1 | |||
-- ===================================================== | |||
local function wynikDruzyny(row) | |||
local g1 = | |||
liczba(row.gole1) | |||
local g2 = | |||
liczba(row.gole2) | |||
if row.ns1 == team1 then | |||
return g1, g2 | |||
elseif row.ns2 == team1 then | |||
return g2, g1 | |||
end | |||
return nil, nil | |||
end | end | ||
-- ===================================================== | |||
-- NAZWA MECZU | |||
-- ===================================================== | |||
local function nazwaMeczu(row) | local function nazwaMeczu(row) | ||
local d1 = row.druzyna1 or "" | local d1 = | ||
local d2 = row.druzyna2 or "" | row.druzyna1 or "" | ||
local d2 = | |||
row.druzyna2 or "" | |||
local strona = | |||
row.strona_meczu or "" | |||
local | |||
local tekst = | |||
d1 .. " – " .. d2 | d1 .. " – " .. d2 | ||
if | |||
if strona ~= "" then | |||
return "[[" .. | return "[[" .. | ||
strona .. | |||
"|" .. | "|" .. | ||
tekst .. | |||
"]]" | |||
end | end | ||
return | |||
return tekst | |||
end | end | ||
if | -- ===================================================== | ||
return " | -- 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 | end | ||
return | return | ||
tonumber(a), | |||
tonumber(b) | |||
end | end | ||
-- ========================================================= | -- ===================================================== | ||
-- | -- WARUNEK H2H | ||
-- ===================================================== | |||
local whereH2H = | |||
"(" .. | |||
"(Mecze.nazwa_statystyki1='" .. | |||
team1SQL .. | |||
"' AND " .. | |||
"Mecze.nazwa_statystyki2='" .. | |||
team2SQL .. | |||
"')" .. | |||
" OR " .. | |||
"(Mecze.nazwa_statystyki1='" .. | |||
team2SQL .. | |||
"' AND " .. | |||
"Mecze.nazwa_statystyki2='" .. | |||
team1SQL .. | |||
"')" .. | |||
")" | |||
-- ===================================================== | |||
-- POBRANIE MECZÓW | |||
-- | -- | ||
-- | -- UWAGA: | ||
-- | -- pola nazywają się KWARTA1, KWARTA2 itd. | ||
-- a nie | -- a nie KWART1. | ||
-- | -- ===================================================== | ||
local fieldsMecze = table.concat({ | local fieldsMecze = table.concat({ | ||
"Mecze.id=mecz", | "Mecze.id=mecz", | ||
"Mecze.data=data", | "Mecze.data=data", | ||
"Mecze.sezon=sezon", | "Mecze.sezon=sezon", | ||
"Mecze.druzyna1=druzyna1", | "Mecze.druzyna1=druzyna1", | ||
"Mecze.druzyna2=druzyna2", | "Mecze.druzyna2=druzyna2", | ||
"Mecze.nazwa_statystyki1=ns1", | "Mecze.nazwa_statystyki1=ns1", | ||
"Mecze.nazwa_statystyki2=ns2", | "Mecze.nazwa_statystyki2=ns2", | ||
"Mecze.gole1=gole1", | "Mecze.gole1=gole1", | ||
"Mecze.gole2=gole2", | "Mecze.gole2=gole2", | ||
"Mecze.wynik=wynik", | "Mecze.wynik=wynik", | ||
"Mecze. | "Mecze.wynik_do_przerwy=wynik_do_przerwy", | ||
"Mecze.kwarta1=kwarta1", | "Mecze.kwarta1=kwarta1", | ||
"Mecze.kwarta2=kwarta2", | "Mecze.kwarta2=kwarta2", | ||
"Mecze.kwarta3=kwarta3", | "Mecze.kwarta3=kwarta3", | ||
"Mecze.kwarta4=kwarta4", | "Mecze.kwarta4=kwarta4", | ||
"Mecze.dogrywka1=dogrywka1", | "Mecze.dogrywka1=dogrywka1", | ||
"Mecze.dogrywka2=dogrywka2", | "Mecze.dogrywka2=dogrywka2", | ||
"Mecze.dogrywka3=dogrywka3" | "Mecze.dogrywka3=dogrywka3", | ||
"Mecze.hala=hala", | |||
"Mecze.widzowie=widzowie", | |||
"Mecze.sedziowie=sedziowie", | |||
"Mecze.strona_meczu=strona_meczu" | |||
}, ",") | }, ",") | ||
local mecze = mw.ext.cargo.query( | local mecze = | ||
mw.ext.cargo.query( | |||
"Mecze", | |||
fieldsMecze, | |||
{ | |||
where = whereH2H, | |||
orderBy = | |||
"Mecze.data ASC", | |||
limit = 5000 | |||
} | |||
) | |||
if not mecze or #mecze == 0 then | if not mecze or #mecze == 0 then | ||
return "'''Brak | |||
return | |||
"'''Brak meczów pomiędzy ''" .. | |||
team1 .. | |||
"'' a ''" .. | |||
team2 .. | |||
"''.'''" | |||
end | end | ||
-- | -- ===================================================== | ||
-- BILANS | -- BILANS | ||
-- | -- ===================================================== | ||
local bilans = { | 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 | |||
} | |||
} | |||