Przejdź do zawartości

Moduł:HistoriaWystepow: Różnice pomiędzy wersjami

Z Encyklopedia Poznanskiego Sportu
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",…"
 
Nie podano opisu zmian
 
(Nie pokazano 7 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
local p = {}
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)
function p.main(frame)


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


     if zawodnik == "" then
     if zawodnik == "" then
         return ""
 
         zawodnik =
            mw.title
                .getCurrentTitle()
                .text
 
     end
     end


     -- Pobieramy tylko rzeczywiste występy:
 
     -- minuty > 0
     -- =====================================================
     local rows = mw.ext.cargo.query{
    -- BEZPIECZNE PRZYGOTOWANIE NAZWY ZAWODNIKA
        tables = "UdzialZawodnika,Mecze",
     -- =====================================================
         join_on = "UdzialZawodnika.mecz=Mecze.id",
 
        fields = table.concat({
     local zawodnikSQL =
            "UdzialZawodnika.mecz",
        mw.ustring.gsub(
            "UdzialZawodnika.druzyna",
            zawodnik,
            "UdzialZawodnika.minuty",
            "'",
            "UdzialZawodnika.minuty_format",
            "''"
            "UdzialZawodnika.gol",
         )
            "UdzialZawodnika.eval",
 
            "UdzialZawodnika.plusminus",
 
            "Mecze.data",
    -- =====================================================
            "Mecze.druzyna1",
    -- POLA POBIERANE Z CARGO
            "Mecze.druzyna2",
    -- =====================================================
            "Mecze.wynik",
 
            "Mecze.strona_meczu"
    local fields = table.concat({
        }, ","),
 
         where = "UdzialZawodnika.zawodnik=" .. mw.text.nowiki(
        "UdzialZawodnika.mecz=mecz",
             mw.text.encode(zawodnik)
        "UdzialZawodnika.druzyna=druzyna",
        ) .. " AND UdzialZawodnika.minuty > 0",
 
         orderBy = "Mecze.data ASC",
        "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
         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
     if not rows or #rows == 0 then
         return "''Brak wprowadzonych występów w bazie.''"
 
         return
            "''Brak wprowadzonych występów zawodnika "
            .. "dla drużyn poznańskich w bazie.''"
 
     end
     end


    local wynik = {}


     -- ==========================================
     -- =====================================================
     -- PODSUMOWANIE
     -- 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
        )