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 6 pośrednich wersji utworzonych przez tego samego użytkownika)
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
 
 
-- =========================================================
-- ROZPOZNANIE MIEJSCA MECZU
-- =========================================================
 
local function miejsceMeczu(row, druzyna)
 
    local d1 =
        tostring(row.druzyna1 or "")
 
    local d2 =
        tostring(row.druzyna2 or "")
 
    if d1 == druzyna then
        return "dom"
    end
 
    if d2 == druzyna then
        return "wyjazd"
    end
 
    return nil


end
end
Linia 60: Linia 92:
local function wynikMeczu(row)
local function wynikMeczu(row)


     local g1 = liczba(row.gole1)
     local g1 =
    local g2 = liczba(row.gole2)
        tonumber(row.gole1 or "")


     if row.gole1 ~= nil and row.gole2 ~= nil
     local g2 =
      and row.gole1 ~= "" and row.gole2 ~= "" then
        tonumber(row.gole2 or "")


    if g1 ~= nil and g2 ~= nil then
         return g1, g2
         return g1, g2
     end
     end




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


     local a, b =
     local a, b =
Linia 80: Linia 113:


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


     return nil, nil
     return nil, nil
Linia 89: Linia 127:


-- =========================================================
-- =========================================================
-- MIEJSCE MECZU
-- WYNIK Z PERSPEKTYWY DRUŻYNY
-- =========================================================
-- =========================================================


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


     local d1 = tostring(row.druzyna1 or "")
     local g1, g2 =
    local d2 = tostring(row.druzyna2 or "")
        wynikMeczu(row)


     if d1 == druzyna then
     if g1 == nil or g2 == nil then
         return "dom"
         return nil, nil
     end
     end


     if d2 == druzyna then
    local miejsce =
         return "wyjazd"
        miejsceMeczu(
            row,
            druzyna
        )
 
     if miejsce == "dom" then
 
         return g1, g2
 
    elseif miejsce == "wyjazd" then
 
        return g2, g1
 
     end
     end


     return nil
     return nil, nil


end
end
Linia 116: Linia 166:
local function nazwaMeczu(row)
local function nazwaMeczu(row)


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


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


     if strona ~= "" then
     if strona ~= "" then


         return "[[" ..
         return
            "[[" ..
             strona ..
             strona ..
             "|" ..
             "|" ..
Linia 139: Linia 198:


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


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


     if not tabela[miejsce] then
     if wartosc == nil then
         tabela[miejsce] = {}
         return
     end
     end


     local lista = tabela[miejsce]
     local lista =
 
        tabela[miejsce]


     if #lista == 0 then
     if #lista == 0 then


         table.insert(lista, item)
         table.insert(
            lista,
            item
        )


         return
         return
Linia 161: Linia 229:


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




Linia 183: Linia 251:


-- =========================================================
-- =========================================================
-- KOSZYKÓWKA
-- FORMAT REKORDÓW MECZOWYCH
-- =========================================================
-- =========================================================


local function rekordyKoszykowka(
local function tekstMeczow(lista)
     sezon,
 
     druzyna
    if not lista or #lista == 0 then
)
        return "—"
     end
 
     local wynik = {}
 
    for _, item in ipairs(lista) do


    -- =====================================================
        local roznica =
    -- MECZE
            item.roznica or 0
    -- =====================================================


    local pola = table.concat({
        local roznicaTekst


         "Mecze.id=mecz",
         if roznica >= 0 then
        "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"


    }, ",")
            roznicaTekst =
                "+" ..
                tostring(roznica)


        else


    local mecze =
            roznicaTekst =
        mw.ext.cargo.query(
                 tostring(roznica)
            "Mecze",
            pola,
            {
                 where =
                    "(Mecze.druzyna1='" ..
                    esc(druzyna) ..
                    "' OR Mecze.druzyna2='" ..
                    esc(druzyna) ..
                    "')" ..
                    " AND Mecze.sezon='" ..
                    esc(sezon) ..
                    "'",


                orderBy =
        end
                    "Mecze.data ASC",


                limit = 5000
            }
        )


        table.insert(
            wynik,


    if not mecze or #mecze == 0 then
            item.tekst ..
            " (" ..
            item.wynik ..
            ", " ..
            roznicaTekst ..
            ")"


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


     end
     end




     local zwyciestwa = {
     return table.concat(
         dom = {},
         wynik,
         wyjazd = {}
         "<br>"
     }
     )


    local porazki = {
end
        dom = {},
        wyjazd = {}
    }




    -- =====================================================
-- =========================================================
    -- PRZETWARZANIE MECZÓW
-- FORMAT REKORDÓW ZAWODNIKÓW
    -- =====================================================
-- =========================================================


     for _, row in ipairs(mecze) do
local function tekstZawodnikow(
     lista,
    typ
)


         local g1, g2 =
    if not lista or #lista == 0 then
            wynikMeczu(row)
         return "—"
    end


        local miejsce =
    local wynik = {}
            miejsceMeczu(row, druzyna)


        if g1 and g2 and miejsce then


            local zdobyte
    for _, item in ipairs(lista) do
            local stracone


             if miejsce == "dom" then
        local zawodnikLink =
            "[[" ..
            tostring(item.zawodnik or "") ..
             "]]"


                zdobyte = g1
                stracone = g2


            else
        local wartosc = ""


                zdobyte = g2
                stracone = g1


            end
        if typ == "punkty" then


            wartosc =
                tostring(item.punkty) ..
                " pkt"


            local roznica =
                zdobyte - stracone


        elseif typ == "minuty" then


             local item = {
             wartosc =
                tostring(
                    item.minuty_format or ""
                )


                tekst =
            if wartosc == "" then
                    nazwaMeczu(row),


                 wynik =
                 wartosc =
                     tostring(g1) ..
                     tostring(
                    ":" ..
                        item.minuty or 0
                     tostring(g2),
                     )


                roznica =
            end
                    roznica,


                wartosc =
            wartosc =
                    math.abs(roznica)
                wartosc ..
                " min"


            }


        elseif typ == "asysty" then


             if roznica > 0 then
             wartosc =
                tostring(item.asysty) ..
                " as."


                dodajRekord(
                    zwyciestwa,
                    miejsce,
                    roznica,
                    item
                )


            elseif roznica < 0 then
        elseif typ == "zbiorki" then


                 dodajRekord(
            wartosc =
                    porazki,
                 tostring(item.zbiorki) ..
                    miejsce,
                 " zb."
                    math.abs(roznica),
                    item
                 )


            end


         end
         elseif typ == "eval" then


    end
            wartosc =
                tostring(item.eval) ..
                " EVAL"




    -- =====================================================
        elseif typ == "plusminus" then
    -- STATYSTYKI ZAWODNIKÓW
    -- =====================================================


    local polaZawodnicy = table.concat({
            local pm =
                item.plusminus or 0


        "UdzialZawodnika.zawodnik=zawodnik",
            if pm >= 0 then
        "UdzialZawodnika.druzyna=druzyna_zawodnika",
        "UdzialZawodnika.gol=gol",
        "UdzialZawodnika.minuty=minuty",
        "UdzialZawodnika.minuty_format=minuty_format",