Przejdź do zawartości

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

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
Linia 4: Linia 4:
-- Moduł:Rekordy_sezon
-- Moduł:Rekordy_sezon
--
--
-- Obsługiwane dyscypliny:
-- Jeden moduł dla różnych dyscyplin.
--  koszykowka
--  pilka nozna
--
--
-- Wywołanie:
-- Wywołanie:
Linia 13: Linia 11:
--  |sezon=2026/2027
--  |sezon=2026/2027
--  |druzyna=Lech Poznań
--  |druzyna=Lech Poznań
--  |dyscyplina=pilka nozna
--  |dyscyplina=piłka nożna
-- }}
-- }}
--
--
-- DANE:
-- lub:
-- Mecze
--
-- UdzialZawodnika
-- {{#invoke:Rekordy_sezon|main
-- Strzelcy
--  |sezon=2026/2027
--  |druzyna=Enea Basket Poznań
--  |dyscyplina=koszykówka
-- }}
--
--
-- WAŻNE:
-- Moduł korzysta wyłącznie z mw.ext.cargo.query().
-- Nie używa SELECT.
-- =========================================================
-- =========================================================


Linia 38: Linia 36:


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


     return tonumber(value) or 0
     return tonumber(value) or 0
Linia 45: Linia 48:




local function esc(value)
local function escapeSQL(value)


     value = tostring(value or "")
     value = tostring(value or "")


     return mw.ustring.gsub(value, "'", "''")
     return mw.ustring.gsub(
        value,
        "'",
        "''"
    )


end
end
Linia 55: Linia 62:


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


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


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


     if row.gole1 ~= nil and row.gole2 ~= nil
     local d2 =
      and row.gole1 ~= "" and row.gole2 ~= "" then
        tostring(row.druzyna2 or "")
 
        return g1, g2


    if d1 == druzyna then
        return "dom"
     end
     end


 
     if d2 == druzyna then
     local wynik = tostring(row.wynik or "")
         return "wyjazd"
 
    local a, b =
         mw.ustring.match(
            wynik,
            "(%d+)%s*:%s*(%d+)"
        )
 
    if a and b then
        return tonumber(a), tonumber(b)
     end
     end


     return nil, nil
     return nil


end
end
Linia 89: Linia 87:


-- =========================================================
-- =========================================================
-- MIEJSCE MECZU
-- WYNIK MECZU
--
-- Zwraca wynik faktyczny:
-- g1 = gole/punkty gospodarza
-- g2 = gole/punkty gościa
-- =========================================================
-- =========================================================


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


     local d1 = tostring(row.druzyna1 or "")
     local g1 =
    local d2 = tostring(row.druzyna2 or "")
        tonumber(row.gole1 or "")


     if d1 == druzyna then
     local g2 =
         return "dom"
         tonumber(row.gole2 or "")
    end


     if d2 == druzyna then
     if g1 ~= nil and g2 ~= nil then
         return "wyjazd"
         return g1, g2
     end
     end


    return nil


end
    local wynik =
        tostring(row.wynik or "")


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


-- =========================================================
    if a and b then
-- NAZWA MECZU
-- =========================================================


local function nazwaMeczu(row)
        return
            tonumber(a),
            tonumber(b)


     local d1 = tostring(row.druzyna1 or "")
     end
    local d2 = tostring(row.druzyna2 or "")
    local strona = tostring(row.strona_meczu or "")


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


     if strona ~= "" then
     return nil, nil


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




-- =========================================================
-- =========================================================
-- DODAWANIE REKORDU
-- WYNIK Z PERSPEKTYWY DRUŻYNY
--
-- TO JEST KLUCZOWA FUNKCJA DLA NAJCZĘSTSZYCH WYNIKÓW.
--
-- Lech - Cracovia 4:1
--      => Lech: 4:1
--
-- Cracovia - Lech 1:4
--      => Lech: 4:1
--
-- Dzięki temu nie mieszamy kolejności gospodarze/goście.
-- =========================================================
-- =========================================================


local function dodajRekord(tabela, miejsce, wartosc, item)
local function wynikZPerspektywy(row, druzyna)
 
    local g1, g2 =
        wynikMeczu(row)


     if not tabela[miejsce] then
     if g1 == nil or g2 == nil then
         tabela[miejsce] = {}
         return nil, nil
     end
     end


     local lista = tabela[miejsce]
     local miejsce =
        miejsceMeczu(
            row,
            druzyna
        )


    if miejsce == "dom" then


    if #lista == 0 then
        return g1, g2


        table.insert(lista, item)
    elseif miejsce == "wyjazd" then


         return
         return g2, g1


     end
     end


    return nil, nil


    local obecna =
end
        tonumber(lista[1].wartosc) or 0




     if wartosc > obecna then
-- =========================================================
-- NAZWA MECZU
-- =========================================================
 
local function nazwaMeczu(row)
 
     local d1 =
        tostring(row.druzyna1 or "")
 
    local d2 =
        tostring(row.druzyna2 or "")
 
    local strona =
        tostring(row.strona_meczu or "")
 
    local tekst =
        d1 ..
        " – " ..
        d2


        tabela[miejsce] = {
            item
        }


     elseif wartosc == obecna then
     if strona ~= "" then


         table.insert(
         return
             lista,
            "[[" ..
             item
            strona ..
        )
             "|" ..
             tekst ..
            "]]"


     end
     end
    return tekst


end
end
Linia 183: Linia 212:


-- =========================================================
-- =========================================================
-- KOSZYKÓWKA
-- FORMAT DATY
-- =========================================================
-- =========================================================


local function rekordyKoszykowka(
local function dataTekst(data)
    sezon,
    druzyna
)


     -- =====================================================
     return tostring(
    -- MECZE
        data or ""
     -- =====================================================
     )


    local pola = table.concat({
end


        "Mecze.id=mecz",
        "Mecze.data=data",
        "Mecze.sezon=sezon",
        "Mecze.rozgrywki=rozgrywki",
        "Mecze.druzyna1=druzyna1",
        "Mecze.druzyna2=druzyna2",
        "Mecze.gole1=gole1",
        "Mecze.gole2=gole2",
        "Mecze.wynik=wynik",
        "Mecze.strona_meczu=strona_meczu"


    }, ",")
-- =========================================================
-- FUNKCJA DODAWANIA REKORDU
-- =========================================================


local function dodajRekord(
    tabela,
    miejsce,
    wartosc,
    item
)
    if wartosc == nil then
        return
    end


     local mecze =
     local lista =
         mw.ext.cargo.query(
         tabela[miejsce]
            "Mecze",
            pola,
            {
                where =
                    "(Mecze.druzyna1='" ..
                    esc(druzyna) ..
                    "' OR Mecze.druzyna2='" ..
                    esc(druzyna) ..
                    "')" ..
                    " AND Mecze.sezon='" ..
                    esc(sezon) ..
                    "'",


                orderBy =
    if #lista == 0 then
                    "Mecze.data ASC",


                limit = 5000
        table.insert(
             }
             lista,
            item
         )
         )
    if not mecze or #mecze == 0 then


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


     end
     end




     local zwyciestwa = {
     local obecna =
         dom = {},
         lista[1].wartosc
        wyjazd = {}
 
    }


     local porazki = {
     if wartosc > obecna then
        dom = {},
        wyjazd = {}
    }


        tabela[miejsce] = {
            item
        }


     -- =====================================================
     elseif wartosc == obecna then
    -- PRZETWARZANIE MECZÓW
    -- =====================================================


    for _, row in ipairs(mecze) do
        table.insert(
            lista,
            item
        )


        local g1, g2 =
    end
            wynikMeczu(row)


        local miejsce =
end
            miejsceMeczu(row, druzyna)


        if g1 and g2 and miejsce then


            local zdobyte
-- =========================================================
            local stracone
-- FORMAT REKORDÓW MECZOWYCH
-- =========================================================


            if miejsce == "dom" then
local function tekstMeczow(lista)


                zdobyte = g1
    if not lista or #lista == 0 then
                stracone = g2
        return "—"
    end


            else
    local wynik = {}


                zdobyte = g2
    for _, item in ipairs(lista) do
                stracone = g1


             end
        local roznica =
             item.roznica or 0


        local roznicaTekst


             local roznica =
        if roznica >= 0 then
                 zdobyte - stracone
 
             roznicaTekst =
                 "+" ..
                tostring(roznica)


        else


             local item = {
             roznicaTekst =
                tostring(roznica)


                tekst =
        end
                    nazwaMeczu(row),


                wynik =
                    tostring(g1) ..
                    ":" ..
                    tostring(g2),


                roznica =
        table.insert(
                    roznica,
            wynik,


                wartosc =
            item.tekst ..
                    math.abs(roznica)
            " (" ..
            item.wynik ..
            ", " ..
            roznicaTekst ..
            ")"


            }
        )


    end


            if roznica > 0 then


                dodajRekord(
    return table.concat(
                    zwyciestwa,