Przejdź do zawartości
Menu główne
Menu główne
przypnij
ukryj
Nawigacja
Strona główna
Ostatnie zmiany
Losowa strona
Pomoc z MediaWiki
Strony specjalne
Encyklopedia Poznanskiego Sportu
Szukaj
Szukaj
Wygląd
Utwórz konto
Zaloguj się
Narzędzia osobiste
Utwórz konto
Zaloguj się
Strony dla anonimowych edytorów
dowiedz się więcej
Edycje
Dyskusja
Edytujesz
Moduł:H2H
Moduł
Dyskusja
English
Czytaj
Edytuj
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Wyświetl historię
Ogólne
Linkujące
Zmiany w linkowanych
Informacje o tej stronie
Cargo data
Wygląd
przypnij
ukryj
Uwaga:
Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli
zalogujesz się
lub
utworzysz konto
, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Filtr antyspamowy.
Nie
wpisuj tu nic!
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) -- ===================================================== -- 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 team2 == "" then return "'''Błąd:''' nie podano team2." end -- ===================================================== -- BEZPIECZEŃSTWO SQL -- ===================================================== local function sql(value) return mw.ustring.gsub( tostring(value or ""), "'", "''" ) end local team1SQL = sql(team1) local team2SQL = sql(team2) -- ===================================================== -- FUNKCJE POMOCNICZE -- ===================================================== local function liczba(value) if value == nil or value == "" then return 0 end local tekst = mw.ustring.gsub( tostring(value), "%s+", "" ) return tonumber(tekst) or 0 end local function procent(wygrane, mecze) if mecze == 0 then return "0,0%" end local wartosc = (wygrane / mecze) * 100 return string.format( "%.1f%%", wartosc ):gsub("%.", ",") end -- ===================================================== -- IDENTYFIKACJA STRONY TEAM1 -- ===================================================== local function miejsce(row) if row.ns1 == team1 then return "dom" end if row.ns2 == team1 then return "wyjazd" end 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 -- ===================================================== -- NAZWA MECZU -- ===================================================== local function nazwaMeczu(row) local d1 = row.druzyna1 or "" local d2 = row.druzyna2 or "" local strona = row.strona_meczu or "" local tekst = d1 .. " – " .. d2 if strona ~= "" then return "[[" .. strona .. "|" .. tekst .. "]]" end 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 -- ===================================================== -- 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 KWART1. -- ===================================================== 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" }, ",") local mecze = mw.ext.cargo.query( "Mecze", fieldsMecze, { where = whereH2H, orderBy = "Mecze.data ASC", limit = 5000 } ) if not mecze or #mecze == 0 then return "'''Brak meczów pomiędzy ''" .. team1 .. "'' a ''" .. team2 .. "''.'''" end -- ===================================================== -- 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 } } local aktualnaSeria = { wszystkie = { W = 0, P = 0 }, dom = { W = 0, P = 0 }, wyjazd = { W = 0, P = 0 } } -- ===================================================== -- REKORDY MECZOWE -- ===================================================== local rekordyMeczowe = { zwyciestwo = { dom = {}, wyjazd = {} }, porazka = { dom = {}, wyjazd = {} } } local function dodajRekordMeczowy( lista, wartosc, item ) if #lista == 0 then item.wartosc = wartosc table.insert( lista, item ) return end local obecna = lista[1].wartosc if wartosc > obecna then lista = { item } item.wartosc = wartosc return lista elseif wartosc == obecna then item.wartosc = wartosc table.insert( lista, item ) end return lista end -- ===================================================== -- PRZETWARZANIE MECZÓW -- ===================================================== for _, row in ipairs(mecze) do local zdobyte, stracone = wynikDruzyny(row) local miejsceMeczu = miejsce(row) if zdobyte and stracone and miejsceMeczu then local wynikMeczu if zdobyte > stracone then wynikMeczu = "W" elseif zdobyte < stracone then wynikMeczu = "P" else wynikMeczu = "R" end -- ============================================= -- OGÓŁEM -- ============================================= local b = bilans.wszystkie b.mecze = b.mecze + 1 b.punktyZdobyte = b.punktyZdobyte + zdobyte b.punktyStracone = b.punktyStracone + stracone if wynikMeczu == "W" then b.wygrane = b.wygrane + 1 elseif wynikMeczu == "P" then b.przegrane = b.przegrane + 1 end -- ============================================= -- DOM / WYJAZD -- ============================================= local bd = bilans[miejsceMeczu] bd.mecze = bd.mecze + 1 bd.punktyZdobyte = bd.punktyZdobyte + zdobyte bd.punktyStracone = bd.punktyStracone + stracone if wynikMeczu == "W" then bd.wygrane = bd.wygrane + 1 elseif wynikMeczu == "P" then bd.przegrane = bd.przegrane + 1 end -- ============================================= -- REKORD MECZOWY -- ============================================= local itemMeczu = { tekst = nazwaMeczu(row), wynik = tostring( liczba(row.gole1) ) .. ":" .. tostring( liczba(row.gole2) ), data = row.data or "", miejsce = miejsceMeczu } local roznica = zdobyte - stracone if roznica > 0 then local lista = rekordyMeczowe .zwyciestwo [miejsceMeczu] if #lista == 0 then itemMeczu.wartosc = roznica table.insert( lista, itemMeczu ) elseif roznica > lista[1].wartosc then itemMeczu.wartosc = roznica rekordyMeczowe .zwyciestwo [miejsceMeczu] = { itemMeczu } elseif roznica == lista[1].wartosc then itemMeczu.wartosc = roznica table.insert( lista, itemMeczu ) end elseif roznica < 0 then local wartosc = math.abs(roznica) local lista = rekordyMeczowe .porazka [miejsceMeczu] if #lista == 0 then itemMeczu.wartosc = wartosc table.insert( lista, itemMeczu ) elseif wartosc > lista[1].wartosc then itemMeczu.wartosc = wartosc rekordyMeczowe .porazka [miejsceMeczu] = { itemMeczu } elseif wartosc == lista[1].wartosc then itemMeczu.wartosc = wartosc table.insert( lista, itemMeczu ) end end -- ============================================= -- SERIA OGÓŁEM -- ============================================= local so = aktualnaSeria.wszystkie if wynikMeczu == "W" then so.W = so.W + 1 so.P = 0 if so.W > serie.wszystkie.W then serie.wszystkie.W = so.W end elseif wynikMeczu == "P" then so.P = so.P + 1 so.W = 0 if so.P > serie.wszystkie.P then serie.wszystkie.P = so.P end end -- ============================================= -- SERIA DOM / WYJAZD -- ============================================= local ss = aktualnaSeria[miejsceMeczu] local sr = serie[miejsceMeczu] if wynikMeczu == "W" then ss.W = ss.W + 1 ss.P = 0 if ss.W > sr.W then sr.W = ss.W end elseif wynikMeczu == "P" then ss.P = ss.P + 1 ss.W = 0 if ss.P > sr.P then sr.P = ss.P end end end end -- ===================================================== -- REKORDY INDYWIDUALNE TEAM1 -- ===================================================== local rekordy = { punkty = { dom = {}, wyjazd = {} }, minuty = { dom = {}, wyjazd = {} }, asysty = { dom = {}, wyjazd = {} }, zbiorki = { dom = {}, wyjazd = {} }, eval = { dom = {}, wyjazd = {} }, plusminus = { dom = {}, wyjazd = {} } } -- ===================================================== -- ZAWODNICY TEAM1 -- -- WAŻNE: -- zawodnik musi być po stronie właściwej drużyny -- historycznej: -- -- M.ns1 = team1 -> U.druzyna = M.druzyna1 -- M.ns2 = team1 -> U.druzyna = M.druzyna2 -- -- Dzięki temu zmiana sponsora nie psuje historii. -- ===================================================== local fieldsZawodnicy = table.concat({ "U.zawodnik=zawodnik", "U.druzyna=druzyna_zawodnika", "U.gol=gol", "U.minuty=minuty", "U.minuty_format=minuty_format", "U.asysta=asysta", "U.zbiorka=zbiorka", "U.eval=eval", "U.plusminus=plusminus", "M.id=mecz", "M.data=data", "M.druzyna1=druzyna1", "M.druzyna2=druzyna2", "M.nazwa_statystyki1=ns1", "M.nazwa_statystyki2=ns2", "M.gole1=gole1", "M.gole2=gole2", "M.wynik=wynik", "M.strona_meczu=strona_meczu" }, ",") local whereTeam1Players = "(" .. "(" .. "M.nazwa_statystyki1='" .. team1SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team2SQL .. "' AND " .. "U.druzyna=M.druzyna1" .. ")" .. " OR " .. "(" .. "M.nazwa_statystyki1='" .. team2SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team1SQL .. "' AND " .. "U.druzyna=M.druzyna2" .. ")" .. ")" local zawodnicy = mw.ext.cargo.query( "UdzialZawodnika=U,Mecze=M", fieldsZawodnicy, { join = "U.mecz=M.id", where = whereTeam1Players .. " AND U.minuty > 0", orderBy = "M.data ASC", limit = 10000 } ) -- ===================================================== -- FUNKCJA DODAWANIA REKORDU -- -- WAŻNE: -- tworzona jest kopia item. -- -- Dzięki temu rekord asyst nie może zostać później -- nadpisany przez rekord zbiórek/EVAL/+/-. -- ===================================================== local function kopiaItem(item, wartosc) return { zawodnik = item.zawodnik, mecz = item.mecz, data = item.data, tekst = item.tekst, wynik = item.wynik, punkty = item.punkty, minuty = item.minuty, minuty_format = item.minuty_format, asysty = item.asysty, zbiorki = item.zbiorki, eval = item.eval, plusminus = item.plusminus, wartosc = wartosc } end local function dodajRekordZawodnika( tabela, miejsceMeczu, wartosc, item ) local lista = tabela[miejsceMeczu] if #lista == 0 then table.insert( lista, kopiaItem( item, wartosc ) ) return end local obecna = lista[1].wartosc if wartosc > obecna then tabela[miejsceMeczu] = { kopiaItem( item, wartosc ) } elseif wartosc == obecna then table.insert( lista, kopiaItem( item, wartosc ) ) end end -- ===================================================== -- PRZETWARZANIE ZAWODNIKÓW -- ===================================================== if zawodnicy then for _, row in ipairs(zawodnicy) do local miejsceMeczu = miejsce(row) if miejsceMeczu then local item = { zawodnik = row.zawodnik or "", mecz = row.mecz or "", data = row.data or "", tekst = nazwaMeczu(row), wynik = row.wynik or "", punkty = liczba(row.gol), minuty = liczba(row.minuty), minuty_format = row.minuty_format or "", asysty = liczba(row.asysta), zbiorki = liczba(row.zbiorka), eval = liczba(row.eval), plusminus = liczba(row.plusminus) } dodajRekordZawodnika( rekordy.punkty, miejsceMeczu, item.punkty, item ) dodajRekordZawodnika( rekordy.minuty, miejsceMeczu, item.minuty, item ) dodajRekordZawodnika( rekordy.asysty, miejsceMeczu, item.asysty, item ) dodajRekordZawodnika( rekordy.zbiorki, miejsceMeczu, item.zbiorki, item ) dodajRekordZawodnika( rekordy.eval, miejsceMeczu, item.eval, item ) dodajRekordZawodnika( rekordy.plusminus, miejsceMeczu, item.plusminus, item ) end end end -- ===================================================== -- ===================================================== -- NAJLEPSI STRZELCY -- OBU DRUŻYN -- -- Drużyna jest ustalana na podstawie strony meczu: -- -- ns1 = team1: -- druzyna1 = team1 -- druzyna2 = team2 -- -- ns2 = team1: -- druzyna2 = team1 -- druzyna1 = team2 -- -- Dzięki temu działa również przy zmianach nazw sponsorskich. -- ===================================================== local strzelcy = { [team1] = {}, [team2] = {} } local function dodajStrzelca( tabela, zawodnik, punkty ) if not zawodnik or zawodnik == "" then return end tabela[zawodnik] = (tabela[zawodnik] or 0) + punkty end -- ===================================================== -- JEDNO ZAPYTANIE DLA OBU DRUŻYN -- ===================================================== local zawodnicyStrzelcy = mw.ext.cargo.query( "UdzialZawodnika=U,Mecze=M", table.concat({ "U.zawodnik=zawodnik", "U.druzyna=druzyna", "U.gol=gol", "U.minuty=minuty", "M.id=mecz", "M.druzyna1=druzyna1", "M.druzyna2=druzyna2", "M.nazwa_statystyki1=ns1", "M.nazwa_statystyki2=ns2" }, ","), { join = "U.mecz=M.id", where = "(" .. "(" .. "M.nazwa_statystyki1='" .. team1SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team2SQL .. "' AND " .. "(" .. "U.druzyna=M.druzyna1" .. " OR " .. "U.druzyna=M.druzyna2" .. ")" .. ")" .. " OR " .. "(" .. "M.nazwa_statystyki1='" .. team2SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team1SQL .. "' AND " .. "(" .. "U.druzyna=M.druzyna1" .. " OR " .. "U.druzyna=M.druzyna2" .. ")" .. ")" .. ")" .. " AND U.minuty > 0", limit = 20000 } ) -- ===================================================== -- PRZYPISANIE ZAWODNIKA DO TEAM1 / TEAM2 -- NA PODSTAWIE STRONY MECZU -- ===================================================== if zawodnicyStrzelcy then for _, row in ipairs(zawodnicyStrzelcy) do local druzynaH2H = nil -- ------------------------------------------------- -- Wariant 1: -- team1 jest drużyną 1 -- ------------------------------------------------- if row.ns1 == team1 and row.ns2 == team2 then if row.druzyna == row.druzyna1 then druzynaH2H = team1 elseif row.druzyna == row.druzyna2 then druzynaH2H = team2 end -- ------------------------------------------------- -- Wariant 2: -- team2 jest drużyną 1 -- ------------------------------------------------- elseif row.ns1 == team2 and row.ns2 == team1 then if row.druzyna == row.druzyna1 then druzynaH2H = team2 elseif row.druzyna == row.druzyna2 then druzynaH2H = team1 end end -- ------------------------------------------------- -- Dodanie punktów -- ------------------------------------------------- if druzynaH2H == team1 then dodajStrzelca( strzelcy[team1], row.zawodnik, liczba(row.gol) ) elseif druzynaH2H == team2 then dodajStrzelca( strzelcy[team2], row.zawodnik, liczba(row.gol) ) end end end -- ===================================================== -- SORTOWANIE STRZELCÓW -- ===================================================== local function uporzadkujStrzelcow( tablica ) local wynik = {} for zawodnik, punkty in pairs(tablica) do table.insert( wynik, { zawodnik = zawodnik, punkty = punkty } ) end table.sort( wynik, function(a, b) if a.punkty == b.punkty then return a.zawodnik < b.zawodnik end return a.punkty > b.punkty end ) return wynik end local strzelcy1 = uporzadkujStrzelcow( strzelcy[team1] ) local strzelcy2 = uporzadkujStrzelcow( strzelcy[team2] ) -- ===================================================== -- TRENERZY TEAM1 -- ===================================================== local trenerzy = {} -- ===================================================== -- POBIERAMY SZTAB WSZYSTKICH MECZÓW -- ===================================================== local sztab = mw.ext.cargo.query( "SztabMeczu=S,Mecze=M", table.concat({ "S.osoba=osoba", "S.druzyna=druzyna", "S.rola=rola", "M.id=mecz", "M.druzyna1=druzyna1", "M.druzyna2=druzyna2", "M.nazwa_statystyki1=ns1", "M.nazwa_statystyki2=ns2" }, ","), { join = "S.mecz=M.id", where = "S.rola='Trener'" .. " AND " .. "(" .. "(" .. "M.nazwa_statystyki1='" .. team1SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team2SQL .. "' AND " .. "S.druzyna=M.druzyna1" .. ")" .. " OR " .. "(" .. "M.nazwa_statystyki1='" .. team2SQL .. "' AND " .. "M.nazwa_statystyki2='" .. team1SQL .. "' AND " .. "S.druzyna=M.druzyna2" .. ")" .. ")", limit = 10000 } ) -- ===================================================== -- TWORZENIE LISTY TRENERÓW -- ===================================================== if sztab then for _, row in ipairs(sztab) do local trener = row.osoba or "" if trener ~= "" then trenerzy[trener] = trenerzy[trener] or { mecze = 0, wygrane = 0, przegrane = 0, punktyZdobyte = 0, punktyStracone = 0 } end end end -- ===================================================== -- STATYSTYKI TRENERÓW -- ===================================================== for _, row in ipairs(mecze) do local sztabMeczu = mw.ext.cargo.query( "SztabMeczu", "osoba,rola,druzyna", { where = "SztabMeczu.mecz='" .. sql(row.mecz or "") .. "'" .. " AND SztabMeczu.rola='Trener'" .. " AND SztabMeczu.druzyna='" .. sql( row.ns1 == team1 and row.druzyna1 or row.druzyna2 ) .. "'", limit = 10 } ) if sztabMeczu and #sztabMeczu > 0 then for _, sztabRow in ipairs(sztabMeczu) do local trener = sztabRow.osoba or "" if trener ~= "" then trenerzy[trener] = trenerzy[trener] or { mecze = 0, wygrane = 0, przegrane = 0, punktyZdobyte = 0, punktyStracone = 0 } local zdobyte, stracone = wynikDruzyny(row) if zdobyte and stracone then local t = trenerzy[trener] t.mecze = t.mecze + 1 t.punktyZdobyte = t.punktyZdobyte + zdobyte t.punktyStracone = t.punktyStracone + stracone if zdobyte > stracone then t.wygrane = t.wygrane + 1 elseif zdobyte < stracone then t.przegrane = t.przegrane + 1 end end end end end end local listaTrenerow = {} for trener, dane in pairs(trenerzy) do table.insert( listaTrenerow, { trener = trener, dane = dane } ) end table.sort( listaTrenerow, function(a, b) if a.dane.mecze == b.dane.mecze then return a.trener < b.trener end return a.dane.mecze > b.dane.mecze end ) -- ===================================================== -- ANALIZA KWART -- -- UWAGA: -- pola Cargo: -- kwarta1 -- kwarta2 -- kwarta3 -- kwarta4 -- -- a nie kwart1 itd. -- ===================================================== local kwarty = { { nazwa = "1. kwarta", pole = "kwarta1" }, { nazwa = "2. kwarta", pole = "kwarta2" }, { nazwa = "3. kwarta", pole = "kwarta3" }, { nazwa = "4. kwarta", pole = "kwarta4" } } local analizaKwart = {} for i = 1, 4 do analizaKwart[i] = { wygranaKwartaWygranyMecz = 0, wygranaKwartaPrzegranyMecz = 0, przegranaKwartaWygranyMecz = 0, przegranaKwartaPrzegranyMecz = 0, remisKwartaWygranyMecz = 0, remisKwartaPrzegranyMecz = 0 } end for _, row in ipairs(mecze) do local zdobyte, stracone = wynikDruzyny(row) if zdobyte and stracone then local wynikMeczu if zdobyte > stracone then wynikMeczu = "W" elseif zdobyte < stracone then wynikMeczu = "P" else wynikMeczu = "R" end for i = 1, 4 do local pole = kwarty[i].pole local a, b = parseWynikCzesciowy( row[pole] ) if a and b then local teamScore local oppScore if miejsce(row) == "dom" then teamScore = a oppScore = b else teamScore = b oppScore = a end if teamScore > oppScore then if wynikMeczu == "W" then analizaKwart[i]. wygranaKwartaWygranyMecz = analizaKwart[i]. wygranaKwartaWygranyMecz + 1 elseif wynikMeczu == "P" then analizaKwart[i]. wygranaKwartaPrzegranyMecz = analizaKwart[i]. wygranaKwartaPrzegranyMecz + 1 end elseif teamScore < oppScore then if wynikMeczu == "W" then analizaKwart[i]. przegranaKwartaWygranyMecz = analizaKwart[i]. przegranaKwartaWygranyMecz + 1 elseif wynikMeczu == "P" then analizaKwart[i]. przegranaKwartaPrzegranyMecz = analizaKwart[i]. przegranaKwartaPrzegranyMecz + 1 end else if wynikMeczu == "W" then analizaKwart[i]. remisKwartaWygranyMecz = analizaKwart[i]. remisKwartaWygranyMecz + 1 elseif wynikMeczu == "P" then analizaKwart[i]. remisKwartaPrzegranyMecz = analizaKwart[i]. remisKwartaPrzegranyMecz + 1 end end end end end end -- ===================================================== -- GENEROWANIE WYNIKU -- ===================================================== local out = {} -- ===================================================== -- BILANS -- ===================================================== table.insert( out, "== Bilans bezpośrednich spotkań ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) table.insert( out, "! Zakres !! Mecze !! Wygrane !! Przegrane !! % wygranych !! Punkty zdobyte !! Punkty stracone" ) local zakresy = { { nazwa = "Ogółem", dane = bilans.wszystkie }, { nazwa = "🏠 Dom", dane = bilans.dom }, { nazwa = "✈️ Wyjazd", dane = bilans.wyjazd } } for _, zakres in ipairs(zakresy) do local d = zakres.dane table.insert( out, "|-" ) table.insert( out, "! " .. zakres.nazwa ) table.insert( out, "| " .. d.mecze ) table.insert( out, "| " .. d.wygrane ) table.insert( out, "| " .. d.przegrane ) table.insert( out, "| " .. procent( d.wygrane, d.mecze ) ) table.insert( out, "| " .. d.punktyZdobyte ) table.insert( out, "| " .. d.punktyStracone ) end table.insert( out, "|}" ) -- ===================================================== -- TRENERZY -- ===================================================== table.insert( out, "" ) table.insert( out, "== Trenerzy " .. team1 .. " w rywalizacji ==" ) table.insert( out, "" ) if #listaTrenerow == 0 then table.insert( out, "Brak danych o trenerach." ) else table.insert( out, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) table.insert( out, "! Trener !! Mecze !! W !! P !! % wygranych !! Punkty zdobyte !! Punkty stracone" ) for _, trener in ipairs(listaTrenerow) do local d = trener.dane table.insert( out, "|-" ) table.insert( out, "| [[" .. trener.trener .. "]]" ) table.insert( out, "| " .. d.mecze ) table.insert( out, "| " .. d.wygrane ) table.insert( out, "| " .. d.przegrane ) table.insert( out, "| " .. procent( d.wygrane, d.mecze ) ) table.insert( out, "| " .. d.punktyZdobyte ) table.insert( out, "| " .. d.punktyStracone ) end table.insert( out, "|}" ) end -- ===================================================== -- NAJLEPSI STRZELCY -- ===================================================== table.insert( out, "" ) table.insert( out, "== Najlepsi strzelcy rywalizacji ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) table.insert( out, "! " .. team1 .. " !! Punkty !! " .. team2 .. " !! Punkty" ) local max = math.max( #strzelcy1, #strzelcy2 ) for i = 1, max do table.insert( out, "|-" ) local s1 = strzelcy1[i] local s2 = strzelcy2[i] if s1 then table.insert( out, "| [[" .. s1.zawodnik .. "]]" ) table.insert( out, "| " .. s1.punkty ) else table.insert( out, "|" ) table.insert( out, "|" ) end if s2 then table.insert( out, "| [[" .. s2.zawodnik .. "]]" ) table.insert( out, "| " .. s2.punkty ) else table.insert( out, "|" ) table.insert( out, "|" ) end end table.insert( out, "|}" ) -- ===================================================== -- REKORDY INDYWIDUALNE TEAM1 -- ===================================================== table.insert( out, "" ) table.insert( out, "== Rekordy indywidualne " .. team1 .. " ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable" style="width:100%; text-align:center;"' ) table.insert( out, "! Rekord !! 🏠 Dom !! ✈️ Wyjazd" ) local rekordyLista = { { nazwa = "🏀 Najwięcej punktów", dane = rekordy.punkty, typ = "punkty" }, { nazwa = "⏱️ Najwięcej minut", dane = rekordy.minuty, typ = "minuty" }, { nazwa = "🎯 Najwięcej asyst", dane = rekordy.asysty, typ = "asysty" }, { nazwa = "🏀 Najwięcej zbiórek", dane = rekordy.zbiorki, typ = "zbiorki" }, { nazwa = "⭐ Najwyższy EVAL", dane = rekordy.eval, typ = "eval" }, { nazwa = "➕ Najwyższy +/-", dane = rekordy.plusminus, typ = "plusminus" } } local function tekstRekordu( lista, typ ) if not lista or #lista == 0 then return "—" end local wynik = {} for _, item in ipairs(lista) do local wartosc if typ == "punkty" then wartosc = item.punkty .. " pkt" elseif typ == "minuty" then wartosc = item.minuty_format if wartosc == "" then wartosc = tostring( item.minuty ) .. " min" end elseif typ == "asysty" then wartosc = item.asysty .. " as." elseif typ == "zbiorki" then wartosc = item.zbiorki .. " zb." elseif typ == "eval" then wartosc = item.eval .. " EVAL" elseif typ == "plusminus" then if item.plusminus >= 0 then wartosc = "+" .. item.plusminus else wartosc = tostring( item.plusminus ) end wartosc = wartosc .. " +/-" end table.insert( wynik, "[[" .. item.zawodnik .. "]] — " .. wartosc .. "<br>" .. item.tekst .. " (" .. item.wynik .. ")" ) end return table.concat( wynik, "<br>" ) end for _, rekord in ipairs(rekordyLista) do table.insert( out, "|-" ) table.insert( out, "! " .. rekord.nazwa ) table.insert( out, "| " .. tekstRekordu( rekord.dane.dom, rekord.typ ) ) table.insert( out, "| " .. tekstRekordu( rekord.dane.wyjazd, rekord.typ ) ) end table.insert( out, "|}" ) -- ===================================================== -- SERIE -- ===================================================== table.insert( out, "" ) table.insert( out, "== Serie zwycięstw i porażek ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable" style="width:100%; text-align:center;"' ) table.insert( out, "! Seria !! Ogółem !! 🏠 Dom !! ✈️ Wyjazd" ) table.insert( out, "|-" ) table.insert( out, "! 🔥 Najdłuższa seria zwycięstw" ) table.insert( out, "| " .. serie.wszystkie.W ) table.insert( out, "| " .. serie.dom.W ) table.insert( out, "| " .. serie.wyjazd.W ) table.insert( out, "|-" ) table.insert( out, "! 📉 Najdłuższa seria porażek" ) table.insert( out, "| " .. serie.wszystkie.P ) table.insert( out, "| " .. serie.dom.P ) table.insert( out, "| " .. serie.wyjazd.P ) table.insert( out, "|}" ) -- ===================================================== -- ANALIZA KWART -- ===================================================== table.insert( out, "" ) table.insert( out, "== Zależność wyniku kwarty od wyniku meczu ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable" style="width:100%; text-align:center;"' ) table.insert( out, "! Kwarta !! Wygrała kwartę<br>i wygrała mecz !! Wygrała kwartę<br>i przegrała mecz !! Przegrała kwartę<br>i wygrała mecz !! Przegrała kwartę<br>i przegrała mecz !! Remis kwarty<br>i wygrała mecz !! Remis kwarty<br>i przegrała mecz" ) for i = 1, 4 do local a = analizaKwart[i] table.insert( out, "|-" ) table.insert( out, "! " .. kwarty[i].nazwa ) table.insert( out, "| " .. a.wygranaKwartaWygranyMecz ) table.insert( out, "| " .. a.wygranaKwartaPrzegranyMecz ) table.insert( out, "| " .. a.przegranaKwartaWygranyMecz ) table.insert( out, "| " .. a.przegranaKwartaPrzegranyMecz ) table.insert( out, "| " .. a.remisKwartaWygranyMecz ) table.insert( out, "| " .. a.remisKwartaPrzegranyMecz ) end table.insert( out, "|}" ) -- ===================================================== -- WSZYSTKIE MECZE -- ===================================================== table.insert( out, "" ) table.insert( out, "== Historia spotkań ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) table.insert( out, "! Data !! Sezon !! Mecz !! Wynik !! Miejsce !! Wynik do przerwy !! K1 !! K2 !! K3 !! K4 !! Dogrywka 1 !! Dogrywka 2 !! Dogrywka 3" ) for _, row in ipairs(mecze) do local m = miejsce(row) local miejsceTekst if m == "dom" then miejsceTekst = "🏠 Dom" else miejsceTekst = "✈️ Wyjazd" end table.insert( out, "|-" ) table.insert( out, "| " .. (row.data or "") ) table.insert( out, "| " .. (row.sezon or "") ) table.insert( out, "| " .. nazwaMeczu(row) ) table.insert( out, "| '''" .. liczba(row.gole1) .. ":" .. liczba(row.gole2) .. "'''" ) table.insert( out, "| " .. miejsceTekst ) table.insert( out, "| " .. (row.wynik_do_przerwy or "—") ) -- ============================================= -- KWARTA 1 -- ============================================= table.insert( out, "| " .. (row.kwarta1 or "—") ) -- ============================================= -- KWARTA 2 -- ============================================= table.insert( out, "| " .. (row.kwarta2 or "—") ) -- ============================================= -- KWARTA 3 -- ============================================= table.insert( out, "| " .. (row.kwarta3 or "—") ) -- ============================================= -- KWARTA 4 -- ============================================= table.insert( out, "| " .. (row.kwarta4 or "—") ) -- ============================================= -- DOGRYWKA 1 -- ============================================= table.insert( out, "| " .. (row.dogrywka1 or "—") ) -- ============================================= -- DOGRYWKA 2 -- ============================================= table.insert( out, "| " .. (row.dogrywka2 or "—") ) -- ============================================= -- DOGRYWKA 3 -- ============================================= table.insert( out, "| " .. (row.dogrywka3 or "—") ) end table.insert( out, "|}" ) -- ===================================================== -- KONIEC -- ===================================================== return table.concat( out, "\n" ) end return p
Opis zmian:
Wszelki wkład na Encyklopedia Poznanskiego Sportu może być edytowany, zmieniany lub usunięty przez innych użytkowników. Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach
domeny publicznej
lub kompatybilnych (zobacz także
Encyklopedia Poznanskiego Sportu:Prawa autorskie
).
PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!
Anuluj
Pomoc w edycji
(otwiera się w nowym oknie)
Strona dołączona w tym artykule:
Moduł:H2H/opis
(
edytuj
)
Szukaj
Szukaj
Edytujesz
Moduł:H2H
Dodaj temat