Przejdź do zawartości

Moduł:HistoriaWystepow

Z Encyklopedia Poznanskiego Sportu
Wersja z dnia 07:05, 19 sie 2026 autorstwa Admin karol bury (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:HistoriaWystepow/opis

local p = {}

-- =========================================================
-- MODUŁ:HISTORIAWYSTĘPÓW
--
-- Historia występów zawodnika
--
-- UWAGA:
-- Moduł pokazuje wyłącznie występy zawodnika
-- w drużynach poznańskich.
--
-- Liczy się UdzialZawodnika.druzyna,
-- a NIE przeciwnik.
--
-- Dzięki temu:
-- Enea Basket Poznań vs Resovia -> TAK
-- Resovia vs Enea Basket Poznań -> NIE
-- =========================================================


-- =========================================================
-- DRUŻYNY POZNAŃSKIE
-- =========================================================
--
-- Tutaj dopisujemy kolejne drużyny poznańskie.
--
-- Nazwa musi być identyczna z wartością pola "druzyna"
-- w UdzialZawodnika.
--

local druzynyPoznanskie = {

    ["Enea Basket Poznań"] = true,

    ["Enea AZS Politechnika Poznań"] = true,

    ["Lech Poznań"] = true,

    ["Warta Poznań"] = true,

    ["AZS Politechnika Poznań"] = true,

    ["MUKS Poznań"] = true

}


function p.main(frame)

    local zawodnik =
        mw.text.trim(
            frame.args.zawodnik or ""
        )


    if zawodnik == "" then

        zawodnik =
            mw.title
                .getCurrentTitle()
                .text

    end


    -- =====================================================
    -- BEZPIECZNE PRZYGOTOWANIE NAZWY ZAWODNIKA
    -- =====================================================

    local zawodnikSQL =
        mw.ustring.gsub(
            zawodnik,
            "'",
            "''"
        )


    -- =====================================================
    -- POLA POBIERANE Z CARGO
    -- =====================================================

    local fields = table.concat({

        "UdzialZawodnika.mecz=mecz",
        "UdzialZawodnika.druzyna=druzyna",

        "UdzialZawodnika.minuty=minuty",
        "UdzialZawodnika.minuty_format=minuty_format",

        "UdzialZawodnika.gol=gol",
        "UdzialZawodnika.asysta=asysta",
        "UdzialZawodnika.zbiorka=zbiorka",

        "UdzialZawodnika.eval=eval",
        "UdzialZawodnika.plusminus=plusminus",

        "Mecze.data=data",
        "Mecze.sezon=sezon",

        "Mecze.druzyna1=druzyna1",
        "Mecze.druzyna2=druzyna2",

        "Mecze.wynik=wynik",
        "Mecze.strona_meczu=strona_meczu"

    }, ",")


    -- =====================================================
    -- ZAPYTANIE CARGO
    --
    -- Pobieramy wszystkie występy zawodnika,
    -- a następnie filtrujemy je według drużyny.
    --
    -- NIE filtrujemy Mecze.druzyna1/druzyna2,
    -- ponieważ przeciwnik może być drużyną poznańską.
    -- =====================================================

    local args = {

        join =
            "UdzialZawodnika.mecz=Mecze.id",

        where =
            "UdzialZawodnika.zawodnik='"
            .. zawodnikSQL
            .. "' AND UdzialZawodnika.minuty > 0",

        orderBy =
            "Mecze.data ASC",

        limit = 5000

    }


    local rows =
        mw.ext.cargo.query(
            "UdzialZawodnika,Mecze",
            fields,
            args
        )


    -- =====================================================
    -- FILTR DRUŻYN POZNAŃSKICH
    --
    -- Sprawdzamy U.druzyna.
    --
    -- Dzięki temu zawodnik występujący przeciwko
    -- drużynie poznańskiej, ale reprezentujący
    -- drużynę przyjezdną, NIE zostanie uwzględniony.
    -- =====================================================

    local tylkoPoznanskie = {}


    if rows then

        for _, row in ipairs(rows) do

            local druzyna =
                mw.text.trim(
                    row.druzyna or ""
                )


            if druzynyPoznanskie[druzyna] then

                table.insert(
                    tylkoPoznanskie,
                    row
                )

            end

        end

    end


    rows =
        tylkoPoznanskie


    -- =====================================================
    -- BRAK DANYCH
    -- =====================================================

    if not rows or #rows == 0 then

        return
            "''Brak wprowadzonych występów zawodnika "
            .. "dla drużyn poznańskich w bazie.''"

    end


    -- =====================================================
    -- PODSUMOWANIE
    -- =====================================================

    local function nowePodsumowanie()

        return {

            wystepy = 0,

            zwyciestwa = 0,
            porazki = 0,
            remisy = 0,

            punkty = 0,
            minuty = 0,

            asysty = 0,
            zbiorki = 0,

            eval = 0,
            plusminus = 0

        }

    end


    -- =====================================================
    -- PODSUMOWANIA
    -- =====================================================

    local suma =
        nowePodsumowanie()


    local dom =
        nowePodsumowanie()


    local wyjazd =
        nowePodsumowanie()


    -- sezony

    local sezony = {}


    -- kluby

    local kluby = {}


    -- =====================================================
    -- OKREŚLENIE WYNIKU MECZU
    -- =====================================================

    local function okreslWynik(row)

        local d1 =
            row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        local druzyna =
            row.druzyna or ""


        local wynikMeczu =
            row.wynik or ""


        local g1, g2 =
            wynikMeczu:match(
                "(%d+)%s*:%s*(%d+)"
            )


        if not g1 or not g2 then

            return nil

        end


        g1 =
            tonumber(g1)


        g2 =
            tonumber(g2)


        if druzyna == d1 then

            if g1 > g2 then

                return "W"

            elseif g1 < g2 then

                return "P"

            else

                return "R"

            end


        elseif druzyna == d2 then

            if g2 > g1 then

                return "W"

            elseif g2 < g1 then

                return "P"

            else

                return "R"

            end

        end


        return nil

    end


    -- =====================================================
    -- DODANIE MECZU DO PODSUMOWANIA
    -- =====================================================

    local function dodajDoPodsumowania(
        stat,
        row
    )

        stat.wystepy =
            stat.wystepy + 1


        stat.punkty =
            stat.punkty
            + (
                tonumber(row.gol or 0)
                or 0
            )


        stat.minuty =
            stat.minuty
            + (
                tonumber(row.minuty or 0)
                or 0
            )


        stat.asysty =
            stat.asysty
            + (
                tonumber(row.asysta or 0)
                or 0
            )


        stat.zbiorki =
            stat.zbiorki
            + (
                tonumber(row.zbiorka or 0)
                or 0
            )


        stat.eval =
            stat.eval
            + (
                tonumber(row.eval or 0)
                or 0
            )


        stat.plusminus =
            stat.plusminus
            + (
                tonumber(row.plusminus or 0)
                or 0
            )


        local wynik =
            okreslWynik(row)


        if wynik == "W" then

            stat.zwyciestwa =
                stat.zwyciestwa + 1


        elseif wynik == "P" then

            stat.porazki =
                stat.porazki + 1


        elseif wynik == "R" then

            stat.remisy =
                stat.remisy + 1

        end

    end


    -- =====================================================
    -- PRZEJŚCIE PRZEZ WSZYSTKIE MECZE
    -- =====================================================

    for _, row in ipairs(rows) do


        -- -----------------------------------------------
        -- WSZYSTKIE
        -- -----------------------------------------------

        dodajDoPodsumowania(
            suma,
            row
        )


        -- -----------------------------------------------
        -- DOM / WYJAZD
        -- -----------------------------------------------

        local d1 =
            row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        local druzyna =
            row.druzyna or ""


        if druzyna == d1 then

            dodajDoPodsumowania(
                dom,
                row
            )


        elseif druzyna == d2 then

            dodajDoPodsumowania(
                wyjazd,
                row
            )

        end


        -- -----------------------------------------------
        -- SEZON
        -- -----------------------------------------------

        local sezon =
            row.sezon or ""


        if sezon == "" then

            sezon =
                "Brak sezonu"

        end


        if not sezony[sezon] then

            sezony[sezon] =
                nowePodsumowanie()

        end


        dodajDoPodsumowania(
            sezony[sezon],
            row
        )


        -- -----------------------------------------------
        -- KLUB
        -- -----------------------------------------------

        if druzyna == "" then

            druzyna =
                "Brak klubu"

        end


        if not kluby[druzyna] then

            kluby[druzyna] =
                nowePodsumowanie()

        end


        dodajDoPodsumowania(
            kluby[druzyna],
            row
        )

    end


    -- =====================================================
    -- FORMATOWANIE MINUT
    -- =====================================================

    local function formatujMinuty(minuty)

        local godziny =
            math.floor(
                minuty / 60
            )


        local min =
            minuty % 60


        return string.format(
            "%d:%02d",
            godziny,
            min
        )

    end


    -- =====================================================
    -- SORTOWANIE SEZONÓW
    -- =====================================================

    local listaSezonow = {}


    for sezon, _ in pairs(sezony) do

        table.insert(
            listaSezonow,
            sezon
        )

    end


    table.sort(
        listaSezonow,
        function(a, b)

            return a > b

        end
    )


    -- =====================================================
    -- SORTOWANIE KLUBÓW
    -- =====================================================

    local listaKlubow = {}


    for klub, _ in pairs(kluby) do

        table.insert(
            listaKlubow,
            klub
        )

    end


    table.sort(
        listaKlubow
    )


    -- =====================================================
    -- OPIS MECZU
    -- =====================================================

    local function rekordMecz(row)

        local d1 =
            row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        local data =
            row.data or ""


        local wynikMeczu =
            row.wynik or ""


        local strona =
            row.strona_meczu or ""


        -- -----------------------------------------------
        -- FAKTYCZNY ZAPIS MECZU
        -- -----------------------------------------------

        local meczTekst =
            d1
            .. " – "
            .. d2


        -- -----------------------------------------------
        -- LINK DO STRONY MECZU
        -- -----------------------------------------------

        if strona ~= "" then

            meczTekst =
                "[["
                .. strona
                .. "|"
                .. d1
                .. " – "
                .. d2
                .. "]]"

        end


        -- -----------------------------------------------
        -- DATA
        -- -----------------------------------------------

        if data ~= "" then

            meczTekst =
                meczTekst
                .. " ("
                .. data
                .. ")"

        end


        -- -----------------------------------------------
        -- WYNIK
        -- -----------------------------------------------

        if wynikMeczu ~= "" then

            meczTekst =
                meczTekst
                .. " "
                .. wynikMeczu

        end


        return meczTekst

    end


    -- =====================================================
    -- REKORDY
    -- =====================================================

    local rekordPunkty = -1
    local rekordMinuty = -1
    local rekordAsysty = -1
    local rekordZbiorki = -1


    local meczePunkty = {}
    local meczeMinuty = {}
    local meczeAsysty = {}
    local meczeZbiorki = {}


    -- =====================================================
    -- WYSZUKIWANIE REKORDÓW
    -- =====================================================

    for _, row in ipairs(rows) do

        local punkty =
            tonumber(row.gol or 0)
            or 0


        local minuty =
            tonumber(row.minuty or 0)
            or 0


        local asysty =
            tonumber(row.asysta or 0)
            or 0


        local zbiorki =
            tonumber(row.zbiorka or 0)
            or 0


        -- -----------------------------------------------
        -- PUNKTY
        -- -----------------------------------------------

        if punkty > rekordPunkty then

            rekordPunkty =
                punkty

            meczePunkty =
                { row }


        elseif punkty == rekordPunkty then

            table.insert(
                meczePunkty,
                row
            )

        end


        -- -----------------------------------------------
        -- MINUTY
        -- -----------------------------------------------

        if minuty > rekordMinuty then

            rekordMinuty =
                minuty

            meczeMinuty =
                { row }


        elseif minuty == rekordMinuty then

            table.insert(
                meczeMinuty,
                row
            )

        end


        -- -----------------------------------------------
        -- ASYSTY
        -- -----------------------------------------------

        if asysty > rekordAsysty then

            rekordAsysty =
                asysty

            meczeAsysty =
                { row }


        elseif asysty == rekordAsysty then

            table.insert(
                meczeAsysty,
                row
            )

        end


        -- -----------------------------------------------
        -- ZBIÓRKI
        -- -----------------------------------------------

        if zbiorki > rekordZbiorki then

            rekordZbiorki =
                zbiorki

            meczeZbiorki =
                { row }


        elseif zbiorki == rekordZbiorki then

            table.insert(
                meczeZbiorki,
                row
            )

        end

    end


    -- =====================================================
    -- LISTA MECZÓW W REKORDZIE
    -- =====================================================

    local function listaRekordow(lista)

        local wynikRekordu = {}


        for _, row in ipairs(lista) do

            table.insert(
                wynikRekordu,
                rekordMecz(row)
            )

        end


        return table.concat(
            wynikRekordu,
            "<br>"
        )

    end


    -- =====================================================
    -- WYNIK
    -- =====================================================

    local wynik = {}


    -- =====================================================
    -- HISTORIA
    -- =====================================================

    table.insert(
        wynik,
        "== Historia występów =="
    )


    table.insert(
        wynik,
        ""
    )


    -- =====================================================
    -- PODSUMOWANIE
    -- =====================================================

    table.insert(
        wynik,
        "=== Podsumowanie wszystkich spotkań ==="
    )


    table.insert(
        wynik,
        ""
    )


    table.insert(
        wynik,
        '{| class="wikitable" style="width:100%; text-align:center;"'
    )


    table.insert(
        wynik,
        "! "
    )


    table.insert(
        wynik,
        "! Wszystkie spotkania"
    )


    table.insert(
        wynik,
        "! 🏠 Mecze domowe"
    )


    table.insert(
        wynik,
        "! ✈️ Mecze wyjazdowe"
    )


    -- WYSTĘPY

    table.insert(wynik, "|-")
    table.insert(wynik, "! Występy")
    table.insert(wynik, "| '''" .. suma.wystepy .. "'''")
    table.insert(wynik, "| '''" .. dom.wystepy .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.wystepy .. "'''")


    -- ZWYCIĘSTWA

    table.insert(wynik, "|-")
    table.insert(wynik, "! Zwycięstwa")
    table.insert(wynik, "| '''" .. suma.zwyciestwa .. "'''")
    table.insert(wynik, "| '''" .. dom.zwyciestwa .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.zwyciestwa .. "'''")


    -- PORAŻKI

    table.insert(wynik, "|-")
    table.insert(wynik, "! Porażki")
    table.insert(wynik, "| '''" .. suma.porazki .. "'''")
    table.insert(wynik, "| '''" .. dom.porazki .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.porazki .. "'''")


    -- REMISY

    table.insert(wynik, "|-")
    table.insert(wynik, "! Remisy")
    table.insert(wynik, "| '''" .. suma.remisy .. "'''")
    table.insert(wynik, "| '''" .. dom.remisy .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.remisy .. "'''")


    -- PUNKTY

    table.insert(wynik, "|-")
    table.insert(wynik, "! Punkty")
    table.insert(wynik, "| '''" .. suma.punkty .. "'''")
    table.insert(wynik, "| '''" .. dom.punkty .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.punkty .. "'''")


    -- MINUTY

    table.insert(wynik, "|-")
    table.insert(wynik, "! Minuty")
    table.insert(
        wynik,
        "| '''"
        .. formatujMinuty(suma.minuty)
        .. "'''"
    )
    table.insert(
        wynik,
        "| '''"
        .. formatujMinuty(dom.minuty)
        .. "'''"
    )
    table.insert(
        wynik,
        "| '''"
        .. formatujMinuty(wyjazd.minuty)
        .. "'''"
    )


    -- ASYSTY

    table.insert(wynik, "|-")
    table.insert(wynik, "! Asysty")
    table.insert(wynik, "| '''" .. suma.asysty .. "'''")
    table.insert(wynik, "| '''" .. dom.asysty .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.asysty .. "'''")


    -- ZBIÓRKI

    table.insert(wynik, "|-")
    table.insert(wynik, "! Zbiórki")
    table.insert(wynik, "| '''" .. suma.zbiorki .. "'''")
    table.insert(wynik, "| '''" .. dom.zbiorki .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.zbiorki .. "'''")


    -- EVAL

    table.insert(wynik, "|-")
    table.insert(wynik, "! EVAL")
    table.insert(wynik, "| '''" .. suma.eval .. "'''")
    table.insert(wynik, "| '''" .. dom.eval .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.eval .. "'''")


    -- PLUS/MINUS

    table.insert(wynik, "|-")
    table.insert(wynik, "! +/-")
    table.insert(wynik, "| '''" .. suma.plusminus .. "'''")
    table.insert(wynik, "| '''" .. dom.plusminus .. "'''")
    table.insert(wynik, "| '''" .. wyjazd.plusminus .. "'''")


    table.insert(
        wynik,
        "|}"
    )


    table.insert(
        wynik,
        ""
    )


    -- =====================================================
    -- REKORDY
    -- =====================================================

    table.insert(
        wynik,
        "=== Najlepsze występy ==="
    )


    table.insert(
        wynik,
        ""
    )


    table.insert(
        wynik,
        '{| class="wikitable" style="width:100%;"'
    )


    table.insert(
        wynik,
        "! Rekord"
    )


    table.insert(
        wynik,
        "! Wynik"
    )


    table.insert(
        wynik,
        "! Mecz / mecze"
    )


    -- PUNKTY

    table.insert(wynik, "|-")
    table.insert(
        wynik,
        "! 🏀 Najwięcej punktów"
    )
    table.insert(
        wynik,
        "| '''" .. rekordPunkty .. "'''"
    )
    table.insert(
        wynik,
        "| " .. listaRekordow(meczePunkty)
    )


    -- MINUTY

    table.insert(wynik, "|-")
    table.insert(
        wynik,
        "! ⏱ Najwięcej minut"
    )
    table.insert(
        wynik,
        "| '''"
        .. formatujMinuty(rekordMinuty)
        .. "'''"
    )
    table.insert(
        wynik,
        "| " .. listaRekordow(meczeMinuty)
    )


    -- ASYSTY

    table.insert(wynik, "|-")
    table.insert(
        wynik,
        "! 🎯 Najwięcej asyst"
    )
    table.insert(
        wynik,
        "| '''" .. rekordAsysty .. "'''"
    )
    table.insert(
        wynik,
        "| " .. listaRekordow(meczeAsysty)
    )


    -- ZBIÓRKI

    table.insert(wynik, "|-")
    table.insert(
        wynik,
        "! 🏀 Najwięcej zbiórek"
    )
    table.insert(
        wynik,
        "| '''" .. rekordZbiorki .. "'''"
    )
    table.insert(
        wynik,
        "| " .. listaRekordow(meczeZbiorki)
    )


    table.insert(
        wynik,
        "|}"
    )


    table.insert(
        wynik,
        ""
    )


    -- =====================================================
    -- PODSUMOWANIE SEZONÓW
    -- =====================================================

    table.insert(
        wynik,
        "=== Podsumowanie sezonów ==="
    )


    table.insert(
        wynik,
        ""
    )


    table.insert(
        wynik,
        '{| class="wikitable sortable" style="width:100%; text-align:center;"'
    )


    table.insert(wynik, "! Sezon")
    table.insert(wynik, "! Występy")
    table.insert(wynik, "! Zwycięstwa")
    table.insert(wynik, "! Porażki")
    table.insert(wynik, "! Remisy")
    table.insert(wynik, "! Punkty")
    table.insert(wynik, "! Minuty")
    table.insert(wynik, "! Asysty")
    table.insert(wynik, "! Zbiórki")
    table.insert(wynik, "! EVAL")
    table.insert(wynik, "! +/-")


    for _, sezon in ipairs(listaSezonow) do

        local stat =
            sezony[sezon]


        table.insert(
            wynik,
            "|-"
        )


        table.insert(
            wynik,
            "| '''"
            .. sezon
            .. "'''"
        )


        table.insert(
            wynik,
            "| " .. stat.wystepy
        )


        table.insert(
            wynik,
            "| " .. stat.zwyciestwa
        )


        table.insert(
            wynik,
            "| " .. stat.porazki
        )


        table.insert(
            wynik,
            "| " .. stat.remisy
        )


        table.insert(
            wynik,
            "| " .. stat.punkty
        )


        table.insert(
            wynik,
            "| "
            .. formatujMinuty(
                stat.minuty
            )
        )


        table.insert(
            wynik,
            "| " .. stat.asysty
        )


        table.insert(
            wynik,
            "| " .. stat.zbiorki
        )


        table.insert(
            wynik,
            "| " .. stat.eval
        )


        table.insert(
            wynik,
            "| " .. stat.plusminus
        )

    end


    table.insert(
        wynik,
        "|}"
    )


    table.insert(
        wynik,
        ""
    )


    -- =====================================================
    -- PODSUMOWANIE WEDŁUG KLUBU
    -- =====================================================

    table.insert(
        wynik,
        "=== Podsumowanie według klubu ==="
    )


    table.insert(
        wynik,
        ""
    )


    table.insert(
        wynik,
        '{| class="wikitable sortable" style="width:100%; text-align:center;"'
    )


    table.insert(wynik, "! Klub")
    table.insert(wynik, "! Występy")
    table.insert(wynik, "! Zwycięstwa")
    table.insert(wynik, "! Porażki")
    table.insert(wynik, "! Remisy")
    table.insert(wynik, "! Punkty")
    table.insert(wynik, "! Minuty")
    table.insert(wynik, "! Asysty")
    table.insert(wynik, "! Zbiórki")
    table.insert(wynik, "! EVAL")
    table.insert(wynik, "! +/-")


    for _, klub in ipairs(listaKlubow) do

        local stat =
            kluby[klub]


        table.insert(
            wynik,
            "|-"
        )


        table.insert(
            wynik,
            "| '''"
            .. klub
            .. "'''"
        )


        table.insert(
            wynik,
            "| " .. stat.wystepy
        )


        table.insert(
            wynik,
            "| " .. stat.zwyciestwa
        )


        table.insert(
            wynik,
            "| " .. stat.porazki
        )


        table.insert(
            wynik,
            "| " .. stat.remisy
        )


        table.insert(
            wynik,
            "| " .. stat.punkty
        )


        table.insert(
            wynik,
            "| "
            .. formatujMinuty(
                stat.minuty
            )
        )


        table.insert(
            wynik,
            "| " .. stat.asysty
        )


        table.insert(
            wynik,
            "| " .. stat.zbiorki
        )


        table.insert(
            wynik,
            "| " .. stat.eval
        )


        table.insert(
            wynik,
            "| " .. stat.plusminus
        )

    end


    table.insert(
        wynik,
        "|}"
    )


    table.insert(
        wynik,
        ""
    )


    -- =====================================================
    -- TABELA WSZYSTKICH WYSTĘPÓW
    -- =====================================================

    table.insert(
        wynik,
        "=== Mecze ==="
    )


    table.insert(
        wynik,
        ""
    )


    table.insert(
        wynik,
        '{| class="wikitable sortable" style="width:100%;"'
    )


    table.insert(wynik, "! Nr")
    table.insert(wynik, "! Sezon")
    table.insert(wynik, "! Data")
    table.insert(wynik, "! Miejsce")
    table.insert(wynik, "! Przeciwnik")
    table.insert(wynik, "! Wynik")
    table.insert(wynik, "! Min.")
    table.insert(wynik, "! Pkt")
    table.insert(wynik, "! As.")
    table.insert(wynik, "! Zb.")
    table.insert(wynik, "! EVAL")
    table.insert(wynik, "! +/-")
    table.insert(wynik, "! Jubileusz")


    -- =====================================================
    -- POSZCZEGÓLNE MECZE
    -- =====================================================

    for i, row in ipairs(rows) do

        local data =
            row.data or ""


        local sezon =
            row.sezon or ""


        local d1 =
            row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        local druzyna =
            row.druzyna or ""


        local wynikMeczu =
            row.wynik or ""


        local strona =
            row.strona_meczu or ""


        local minutyFormat =
            row.minuty_format or ""


        local pkt =
            row.gol or "0"


        local asysty =
            row.asysta or "0"


        local zbiorki =
            row.zbiorka or "0"


        local eval =
            row.eval or "0"


        local plusminus =
            row.plusminus or "0"


        -- -----------------------------------------------
        -- DOM / WYJAZD
        -- -----------------------------------------------

        local miejsce = ""


        if druzyna == d1 then

            miejsce =
                "🏠 Dom"


        elseif druzyna == d2 then

            miejsce =
                "✈️ Wyjazd"

        end


        -- -----------------------------------------------
        -- PRZECIWNIK
        -- -----------------------------------------------

        local przeciwnik = ""


        if druzyna == d1 then

            przeciwnik =
                d2


        elseif druzyna == d2 then

            przeciwnik =
                d1


        else

            przeciwnik =
                d1

        end


        -- -----------------------------------------------
        -- LINK DO MECZU
        -- -----------------------------------------------

        local meczTekst =
            przeciwnik


        if strona ~= "" then

            meczTekst =
                "[["
                .. strona
                .. "|"
                .. przeciwnik
                .. "]]"

        end


        -- -----------------------------------------------
        -- JUBILEUSZ
        -- -----------------------------------------------

        local jubileusz = ""


        if i % 50 == 0 then

            jubileusz =
                "'''🏆 "
                .. i
                .. ". występ'''"

        end


        -- -----------------------------------------------
        -- WIERSZ
        -- -----------------------------------------------

        table.insert(
            wynik,
            "|-"
        )


        table.insert(
            wynik,
            "| " .. i
        )


        table.insert(
            wynik,
            "| " .. sezon
        )


        table.insert(
            wynik,
            "| " .. data
        )


        table.insert(
            wynik,
            "| " .. miejsce
        )


        table.insert(
            wynik,
            "| " .. meczTekst
        )


        table.insert(
            wynik,
            "| " .. wynikMeczu
        )


        table.insert(
            wynik,
            "| " .. minutyFormat
        )


        table.insert(
            wynik,
            "| " .. pkt
        )


        table.insert(
            wynik,
            "| " .. asysty
        )


        table.insert(
            wynik,
            "| " .. zbiorki
        )


        table.insert(
            wynik,
            "| " .. eval
        )


        table.insert(
            wynik,
            "| " .. plusminus
        )


        table.insert(
            wynik,
            "| " .. jubileusz
        )

    end


    -- =====================================================
    -- KONIEC TABELI
    -- =====================================================

    table.insert(
        wynik,
        "|}"
    )


    -- =====================================================
    -- ZWRÓCENIE WYNIKU
    -- =====================================================

    return table.concat(
        wynik,
        "\n"
    )

end


return p