Moduł:HistoriaWystepow
Wygląd
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:HistoriaWystepow/opis
local p = {}
function p.main(frame)
local zawodnik = frame.args.zawodnik or mw.title.getCurrentTitle().text
if zawodnik == "" then
return ""
end
-- Pobieramy tylko rzeczywiste występy:
-- minuty > 0
local rows = mw.ext.cargo.query{
tables = "UdzialZawodnika,Mecze",
join_on = "UdzialZawodnika.mecz=Mecze.id",
fields = table.concat({
"UdzialZawodnika.mecz",
"UdzialZawodnika.druzyna",
"UdzialZawodnika.minuty",
"UdzialZawodnika.minuty_format",
"UdzialZawodnika.gol",
"UdzialZawodnika.eval",
"UdzialZawodnika.plusminus",
"Mecze.data",
"Mecze.druzyna1",
"Mecze.druzyna2",
"Mecze.wynik",
"Mecze.strona_meczu"
}, ","),
where = "UdzialZawodnika.zawodnik=" .. mw.text.nowiki(
mw.text.encode(zawodnik)
) .. " AND UdzialZawodnika.minuty > 0",
orderBy = "Mecze.data ASC",
limit = 5000
}
if not rows or #rows == 0 then
return "''Brak wprowadzonych występów w bazie.''"
end
local wynik = {}
-- ==========================================
-- PODSUMOWANIE
-- ==========================================
local wystepy = #rows
local zwyciestwa = 0
local porazki = 0
local remisy = 0
local punkty = 0
for _, row in ipairs(rows) do
punkty = punkty + tonumber(row["UdzialZawodnika.gol"] or 0)
local druzyna = row["UdzialZawodnika.druzyna"]
local d1 = row["Mecze.druzyna1"]
local d2 = row["Mecze.druzyna2"]
local wynikMeczu = row["Mecze.wynik"] or ""
local g1, g2 = wynikMeczu:match("(%d+)%s*:%s*(%d+)")
if g1 and g2 then
g1 = tonumber(g1)
g2 = tonumber(g2)
local wygral
if druzyna == d1 then
wygral = g1 > g2
if g1 == g2 then
remisy = remisy + 1
elseif wygral then
zwyciestwa = zwyciestwa + 1
else
porazki = porazki + 1
end
elseif druzyna == d2 then
wygral = g2 > g1
if g1 == g2 then
remisy = remisy + 1
elseif wygral then
zwyciestwa = zwyciestwa + 1
else
porazki = porazki + 1
end
end
end
end
-- ==========================================
-- NAGŁÓWEK
-- ==========================================
table.insert(wynik, "== Historia występów ==")
table.insert(wynik, "")
table.insert(wynik,
"'''Liczba występów:''' " .. wystepy ..
" • " ..
"'''Punkty:''' " .. punkty
)
table.insert(wynik,
"'''Zwycięstwa:''' " .. zwyciestwa ..
" • " ..
"'''Porażki:''' " .. porazki ..
" • " ..
"'''Remisy:''' " .. remisy
)
table.insert(wynik, "")
-- ==========================================
-- TABELA
-- ==========================================
table.insert(wynik, '{| class="wikitable sortable" style="width:100%;"')
table.insert(wynik, "! Lp.")
table.insert(wynik, "! Data")
table.insert(wynik, "! Mecz")
table.insert(wynik, "! Wynik")
table.insert(wynik, "! Min.")
table.insert(wynik, "! Pkt")
table.insert(wynik, "! EVAL")
table.insert(wynik, "! +/-")
table.insert(wynik, "! Jubileusz")
for i, row in ipairs(rows) do
local data = row["Mecze.data"] or ""
local d1 = row["Mecze.druzyna1"] or ""
local d2 = row["Mecze.druzyna2"] or ""
local wynikMeczu = row["Mecze.wynik"] or ""
local strona = row["Mecze.strona_meczu"] or ""
local minuty = row["UdzialZawodnika.minuty_format"] or ""
local pkt = row["UdzialZawodnika.gol"] or "0"
local eval = row["UdzialZawodnika.eval"] or "0"
local plusminus = row["UdzialZawodnika.plusminus"] or "0"
-- Przeciwnik
local druzyna = row["UdzialZawodnika.druzyna"]
local przeciwnik
if druzyna == d1 then
przeciwnik = d2
else
przeciwnik = d1
end
-- Link do strony meczu
local meczTekst
if strona ~= "" then
meczTekst = "[[" .. strona .. "|" .. przeciwnik .. "]]"
else
meczTekst = przeciwnik
end
-- Jubileusz
local jubileusz = ""
if i % 50 == 0 then
jubileusz = "'''🏆 " .. i .. ". występ'''"
end
table.insert(wynik,
"|-"
)
table.insert(wynik,
"| " .. i
)
table.insert(wynik,
"| " .. data
)
table.insert(wynik,
"| " .. meczTekst
)
table.insert(wynik,
"| " .. wynikMeczu
)
table.insert(wynik,
"| " .. minuty
)
table.insert(wynik,
"| " .. pkt
)
table.insert(wynik,
"| " .. eval
)
table.insert(wynik,
"| " .. plusminus
)
table.insert(wynik,
"| " .. jubileusz
)
end
table.insert(wynik, "|}")
return table.concat(wynik, "\n")
end
return p