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 2: Linia 2:


-- =========================================================
-- =========================================================
-- Module:Rekordy_sezon
-- Moduł:Rekordy_sezon
--
--
-- Jeden moduł dla wielu dyscyplin.
-- Jeden moduł dla różnych dyscyplin.
--
--
-- Wywołanie:
-- Wywołanie:
Linia 21: Linia 21:
--  |dyscyplina=koszykówka
--  |dyscyplina=koszykówka
-- }}
-- }}
--
-- Opcjonalnie:
--
-- |rozgrywki=Ekstraklasa
--
-- =========================================================
-- =========================================================




function p.main(frame)
-- =========================================================
-- FUNKCJE WSPÓLNE
-- =========================================================


    -- =====================================================
local function liczba(value)
    -- PARAMETRY
    -- =====================================================


     local sezon =
     if value == nil or value == "" then
        mw.text.trim(frame.args.sezon or "")
        return 0
    end


     local druzyna =
     value = tostring(value)
        mw.text.trim(frame.args.druzyna or "")


     local dyscyplina =
     value = mw.ustring.gsub(
        mw.text.trim(frame.args.dyscyplina or "koszykówka")
        value,
        "%s+",
        ""
    )


     local rozgrywki =
     return tonumber(value) or 0
        mw.text.trim(frame.args.rozgrywki or "")


end


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


    if druzyna == "" then
-- =========================================================
        return "'''Błąd:''' nie podano drużyny."
-- MINUTY
    end
--
-- Obsługuje:
-- 32
-- 32.0
-- 32:15
-- 32:15.5
--
-- Do porównywania rekordów używamy sekund.
-- =========================================================


local function minutyNaSekundy(value)


     -- =====================================================
     if value == nil or value == "" then
    -- ESCAPOWANIE SQL
        return 0
     -- =====================================================
     end


     local sezonSQL =
     value = tostring(value)
        mw.ustring.gsub(sezon, "'", "''")


     local druzynaSQL =
     value = mw.ustring.gsub(
        mw.ustring.gsub(druzyna, "'", "''")
        value,
        "%s+",
        ""
    )


     local rozgrywkiSQL =
     local minuty, sekundy =
         mw.ustring.gsub(rozgrywki, "'", "''")
         mw.ustring.match(
            value,
            "^(%d+):(%d+)$"
        )


    if minuty and sekundy then


    -- =====================================================
        return
    -- FUNKCJE POMOCNICZE
            tonumber(minuty) * 60 +
     -- =====================================================
            tonumber(sekundy)
 
     end


     local function liczba(value)
     local liczbaMinut =
        tonumber(value)


        if value == nil or value == "" then
    if liczbaMinut then
            return 0
        return liczbaMinut * 60
        end
    end


        value = tostring(value)
    return 0


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


        return tonumber(value) or 0


    end
-- =========================================================
-- FORMAT MINUT
-- =========================================================


local function formatMinut(sekundy)


     local function miejsceMeczu(row)
     sekundy = tonumber(sekundy) or 0


        local d1 =
    local minuty =
             row.druzyna1 or ""
        math.floor(
             sekundy / 60
        )


        local d2 =
    local sek =
            row.druzyna2 or ""
        sekundy % 60


        if d1 == druzyna then
    if sek == 0 then
            return "dom"
        return tostring(minuty) .. " min"
        end
    end


         if d2 == druzyna then
    return
             return "wyjazd"
        tostring(minuty) ..
         end
        ":" ..
         string.format(
             "%02d",
            sek
         ) ..
        " min"


        return nil
end


    end


local function escapeSQL(value)


     local function wynikMeczu(row)
     value = tostring(value or "")


         local g1 =
    return mw.ustring.gsub(
            tonumber(row.gole1 or "")
        value,
         "'",
        "''"
    )


        local g2 =
end
            tonumber(row.gole2 or "")


        if g1 and g2 then
            return g1, g2
        end


        local wynik =
-- =========================================================
            row.wynik or ""
-- ROZPOZNANIE MIEJSCA MECZU
-- =========================================================


        local a, b =
local function miejsceMeczu(row, druzyna)
            wynik:match(
                "(%d+)%s*:%s*(%d+)"
            )


         if a and b then
    local d1 =
            return tonumber(a), tonumber(b)
         tostring(row.druzyna1 or "")
        end


         return nil, nil
    local d2 =
         tostring(row.druzyna2 or "")


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


    if d2 == druzyna then
        return "wyjazd"
    end


     local function nazwaMeczu(row)
     return nil


        local d1 =
end
            row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        local strona =
-- =========================================================
            row.strona_meczu or ""
-- WYNIK MECZU
-- =========================================================


        local tekst =
local function wynikMeczu(row)
            d1 .. " – " .. d2


         if strona ~= "" then
    local g1 =
         tonumber(row.gole1 or "")


            return "[[" ..
    local g2 =
                strona ..
        tonumber(row.gole2 or "")
                "|" ..
                tekst ..
                "]]"


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


        return tekst


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


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


     local function kopiuj(item)
     if a and b then


         local nowy = {}
         return
            tonumber(a),
            tonumber(b)


        for k, v in pairs(item) do
    end
            nowy[k] = v
        end


        return nowy


     end
     return nil, nil


end


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


        local lista =
-- =========================================================
            tabela[miejsce]
-- WYNIK Z PERSPEKTYWY DRUŻYNY
-- =========================================================


        local nowy =
local function wynikZPerspektywy(row, druzyna)
            kopiuj(item)


        nowy.wartosc =
    local g1, g2 =
            wartosc
        wynikMeczu(row)


        if #lista == 0 then
    if g1 == nil or g2 == nil then
        return nil, nil
    end


            table.insert(
    local miejsce =
                lista,
        miejsceMeczu(
                nowy
            row,
            )
            druzyna
        )


            return
    if miejsce == "dom" then


         end
         return g1, g2


        local obecna =
    elseif miejsce == "wyjazd" then
            lista[1].wartosc


         if wartosc > obecna then
         return g2, g1


            tabela[miejsce] = {
    end
                nowy
            }


        elseif wartosc == obecna then
    return nil, nil


            table.insert(
end
                lista,
                nowy
            )


        end


    end
-- =========================================================
-- NAZWA MECZU
-- =========================================================


local function nazwaMeczu(row)


     -- =====================================================
     local d1 =
    -- WYBÓR DYSCYPLINY
        tostring(row.druzyna1 or "")
    -- =====================================================


     if mw.ustring.lower(dyscyplina)
     local d2 =
        == "piłka nożna"
         tostring(row.druzyna2 or "")
         or
        mw.ustring.lower(dyscyplina)
        == "pilka nozna"
    then


         return p.pilka(
    local strona =
            sezon,
        tostring(row.strona_meczu or "")
             druzyna,
 
             sezonSQL,
    local tekst =
             druzynaSQL,
        d1 ..
             rozgrywki,
         " – " ..
             rozgrywkiSQL
        d2
        )
 
 
    if strona ~= "" then
 
        return
             "[[" ..
             strona ..
             "|" ..
             tekst ..
             "]]"


     end
     end


 
     return tekst
    -- Domyślnie koszykówka
     return p.koszykowka(
        sezon,
        druzyna,
        sezonSQL,
        druzynaSQL,
        rozgrywki,
        rozgrywkiSQL
    )


end
end




-- =========================================================
-- =========================================================
-- DODAWANIE REKORDU
--
-- KLUCZOWA POPRAWKA:
--
-- zapisujemy wartość rekordu bezpośrednio w item.wartosc.
--
-- Dzięki temu nie ma już:
-- attempt to compare nil with number
-- =========================================================
-- =========================================================
-- KOSZYKÓWKA
-- =========================================================
-- =========================================================


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


function p.koszykowka(
     if wartosc == nil then
     sezon,
        return
    druzyna,
     end
     sezonSQL,
    druzynaSQL,
    rozgrywki,
    rozgrywkiSQL
)


    item.wartosc =