Przejdź do zawartości

Moduł:Rekordy sezon: Różnice pomiędzy wersjami

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
 
(Nie pokazano 11 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 2: Linia 2:


-- =========================================================
-- =========================================================
-- Module:Rekordy_sezon
-- Moduł:Rekordy_sezon
--
--
-- Rekordy drużyny w danym sezonie:
-- Jeden moduł dla różnych dyscyplin.
--   - najwyższe zwycięstwo dom / wyjazd
--
--   - najwyższa porażka dom / wyjazd
-- Wywołanie:
--   - najwięcej punktów zawodnika dom / wyjazd
--
--   - najwięcej minut dom / wyjazd
-- {{#invoke:Rekordy_sezon|main
--   - najwięcej asyst dom / wyjazd
-- |sezon=2026/2027
--   - najwięcej zbiórek dom / wyjazd
-- |druzyna=Lech Poznań
--   - najwyższy EVAL dom / wyjazd
-- |dyscyplina=piłka nożna
--   - najwyższy +/- dom / wyjazd
-- }}
--   - najdłuższa seria zwycięstw ogółem / dom / wyjazd
--
--   - najdłuższa seria porażek ogółem / dom / wyjazd
-- lub:
--
-- {{#invoke:Rekordy_sezon|main
-- |sezon=2026/2027
-- |druzyna=Enea Basket Poznań
-- |dyscyplina=koszykówka
-- }}
--
--
-- Dane pobierane są wyłącznie z istniejących wpisów Cargo.
-- =========================================================
-- =========================================================


function p.main(frame)


    -- =====================================================
-- =========================================================
    -- PARAMETRY
-- FUNKCJE WSPÓLNE
    -- =====================================================
-- =========================================================


    local sezon = frame.args.sezon or ""
local function liczba(value)
    local druzyna = frame.args.druzyna or ""


     if sezon == "" then
     if value == nil or value == "" then
         return "'''Błąd:''' nie podano sezonu."
         return 0
     end
     end


     if druzyna == "" then
     value = tostring(value)
        return "'''Błąd:''' nie podano drużyny."
    end


     local sezonSQL =
     value = mw.ustring.gsub(
        mw.ustring.gsub(sezon, "'", "''")
        value,
        "%s+",
        ""
    )


     local druzynaSQL =
     return tonumber(value) or 0
        mw.ustring.gsub(druzyna, "'", "''")


end


    -- =====================================================
    -- FUNKCJE POMOCNICZE
    -- =====================================================


    local function liczba(value)
local function escapeSQL(value)


        if value == nil or value == "" then
    value = tostring(value or "")
            return 0
        end


        value = tostring(value)
    return mw.ustring.gsub(
        value = mw.ustring.gsub(value, "%s+", "")
        value,
        "'",
        "''"
    )


        return tonumber(value) or 0
end


    end


-- =========================================================
-- ROZPOZNANIE MIEJSCA MECZU
-- =========================================================


    local function wynikMeczu(row)
local function miejsceMeczu(row, druzyna)


        local g1 = tonumber(row.gole1 or "")
    local d1 =
         local g2 = tonumber(row.gole2 or "")
         tostring(row.druzyna1 or "")


        if g1 and g2 then
    local d2 =
            return g1, g2
         tostring(row.druzyna2 or "")
         end


         local wynik = row.wynik or ""
    if d1 == druzyna then
         return "dom"
    end


        local a, b =
    if d2 == druzyna then
            wynik:match("(%d+)%s*:%s*(%d+)")
        return "wyjazd"
    end


        if a and b then
    return nil
            return tonumber(a), tonumber(b)
        end


        return nil, nil
end


    end


-- =========================================================
-- WYNIK MECZU
-- =========================================================
local function wynikMeczu(row)


     local function miejsceMeczu(row)
     local g1 =
        tonumber(row.gole1 or "")


        local d1 = row.druzyna1 or ""
    local g2 =
         local d2 = row.druzyna2 or ""
        tonumber(row.gole2 or "")
 
    if g1 ~= nil and g2 ~= nil then
         return g1, g2
    end


        if d1 == druzyna then
            return "dom"
        end


        if d2 == druzyna then
    local wynik =
            return "wyjazd"
        tostring(row.wynik or "")
        end


         return nil
    local a, b =
         mw.ustring.match(
            wynik,
            "(%d+)%s*:%s*(%d+)"
        )


     end
     if a and b then


        return
            tonumber(a),
            tonumber(b)


     -- =====================================================
     end
    -- NAZWA MECZU
    --
    -- WAŻNE:
    -- zawsze zachowujemy faktyczną kolejność gospodarze –
    -- goście.
    -- =====================================================


    local function nazwaMeczu(row)


        local d1 = row.druzyna1 or ""
    return nil, nil
        local d2 = row.druzyna2 or ""
        local strona = row.strona_meczu or ""


        local tekst =
end
            d1 .. " – " .. d2


        if strona ~= "" then


            return "[[" ..
-- =========================================================
                strona ..
-- WYNIK Z PERSPEKTYWY DRUŻYNY
                "|" ..
-- =========================================================
                tekst ..
                "]]"


        end
local function wynikZPerspektywy(row, druzyna)


         return tekst
    local g1, g2 =
         wynikMeczu(row)


    if g1 == nil or g2 == nil then
        return nil, nil
     end
     end


    local miejsce =
        miejsceMeczu(
            row,
            druzyna
        )


     -- =====================================================
     if miejsce == "dom" then
    -- KOPIOWANIE TABELI
    --
    -- Dzięki temu każdy rekord indywidualny otrzymuje
    -- własną tabelę i własne pole "wartosc".
    -- =====================================================
 
    local function kopiujItem(item)


         local nowy = {}
         return g1, g2


        for klucz, wartosc in pairs(item) do
    elseif miejsce == "wyjazd" then
            nowy[klucz] = wartosc
        end


         return nowy
         return g2, g1


     end
     end


    return nil, nil


    -- =====================================================
end
    -- POBRANIE MECZÓW
    -- =====================================================


    local fieldsMecze = table.concat({


        "Mecze.id=mecz",
-- =========================================================
        "Mecze.data=data",
-- NAZWA MECZU
        "Mecze.sezon=sezon",
-- =========================================================
        "Mecze.druzyna1=druzyna1",
        "Mecze.druzyna2=druzyna2",
        "Mecze.gole1=gole1",
        "Mecze.gole2=gole2",
        "Mecze.wynik=wynik",
        "Mecze.strona_meczu=strona_meczu"


    }, ",")
local function nazwaMeczu(row)


    local d1 =
        tostring(row.druzyna1 or "")


     local argsMecze = {
     local d2 =
        tostring(row.druzyna2 or "")


        where =
    local strona =
            "(Mecze.druzyna1='" ..
        tostring(row.strona_meczu or "")
            druzynaSQL ..
            "' OR Mecze.druzyna2='" ..
            druzynaSQL ..
            "')" ..
            " AND Mecze.sezon='" ..
            sezonSQL ..
            "'",


         orderBy = "Mecze.data ASC",
    local tekst =
         d1 ..
        " – " ..
        d2


        limit = 5000


     }
     if strona ~= "" then


        return
            "[[" ..
            strona ..
            "|" ..
            tekst ..
            "]]"


     local mecze =
     end
        mw.ext.cargo.query(
            "Mecze",
            fieldsMecze,
            argsMecze
        )


    return tekst


    if not mecze or #mecze == 0 then
end


        return
            "''Brak wprowadzonych meczów dla tej drużyny w podanym sezonie.''"


    end
-- =========================================================
-- FUNKCJA DODAWANIA REKORDU
-- UŻYWANA PRZEZ PIŁKĘ NOŻNĄ
-- =========================================================


local function dodajRekord(
    tabela,
    miejsce,
    wartosc,
    item
)


     -- =====================================================
     if wartosc == nil then
    -- REKORDY MECZOWE
        return
     -- =====================================================
     end


     local najwyzszeZwyciestwo = {
     local lista =
         dom = {},
         tabela[miejsce]
        wyjazd = {}
    }


     local najwyzszaPorazka = {
     if #lista == 0 then
        dom = {},
        wyjazd = {}
    }


        table.insert(
            lista,
            item
        )


    -- =====================================================
        return
    -- PRZETWARZANIE MECZÓW
    -- =====================================================


     for _, row in ipairs(mecze) do
     end


        local g1, g2 =
            wynikMeczu(row)


        local miejsce =
    local obecna =
            miejsceMeczu(row)
        lista[1].wartosc


        if g1 and g2 and miejsce then


            local zdobyte
    if wartosc > obecna then
            local stracone


            if miejsce == "dom" then
        tabela[miejsce] = {
            item
        }


                zdobyte = g1
    elseif wartosc == obecna then
                stracone = g2


             else
        table.insert(
             lista,
            item
        )


                zdobyte = g2
    end
                stracone = g1


            end
end


            local roznica =
                zdobyte - stracone


-- =========================================================
-- FORMAT REKORDÓW MECZOWYCH
-- =========================================================


            local item = {
local function tekstMeczow(lista)


                mecz = row.mecz or "",
    if not lista or #lista == 0 then
                data = row.data or "",
        return ""
                miejsce = miejsce,
    end


                zdobyte = zdobyte,
    local wynik = {}
                stracone = stracone,
                roznica = roznica,


                tekst =
    for _, item in ipairs(lista) do
                    nazwaMeczu(row),


                wynik =
        local roznica =
                    tostring(g1) ..
            item.roznica or 0
                    ":" ..
                    tostring(g2)


            }
        local roznicaTekst


        if roznica >= 0 then


             -- =============================================
             roznicaTekst =
            -- ZWYCIĘSTWO
                "+" ..
            -- =============================================
                tostring(roznica)


            if roznica > 0 then
        else


                local lista =
            roznicaTekst =
                    najwyzszeZwyciestwo[miejsce]
                tostring(roznica)