Przejdź do zawartości

Moduł:HistoriaWystepow

Z Encyklopedia Poznanskiego Sportu
Wersja z dnia 04:35, 17 sie 2026 autorstwa Admin karol bury (dyskusja | edycje) (Utworzono nową stronę "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",…")
(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 = {}

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