Przejdź do zawartości

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

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
 
(Nie pokazano 9 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 9: Linia 9:
-- team2 = przeciwnik
-- team2 = przeciwnik
--
--
-- Wykorzystuje nazwa_statystyki1 / nazwa_statystyki2.
-- nazwa_statystyki1 / nazwa_statystyki2 służą do identyfikacji
-- drużyn niezależnie od historycznych nazw sponsorskich.
--
--
-- Zawiera:
-- Zawiera:
Linia 19: Linia 20:
-- 6. Analizę kwart
-- 6. Analizę kwart
-- 7. Wszystkie mecze
-- 7. Wszystkie mecze
-- 8. Dogrywkę 1, 2 i 3
-- 8. Dogrywki 1, 2 i 3
-- =========================================================
-- =========================================================




function p.main(frame)
function p.main(frame)
    -- =====================================================
    -- PARAMETRY
    -- =====================================================


     local team1 = mw.text.trim(frame.args.team1 or "")
     local team1 = mw.text.trim(frame.args.team1 or "")
Linia 42: Linia 47:


     local function sql(value)
     local function sql(value)
        value = tostring(value or "")
 
         return mw.ustring.gsub(value, "'", "''")
         return mw.ustring.gsub(
            tostring(value or ""),
            "'",
            "''"
        )
 
     end
     end


     local team1SQL = sql(team1)
     local team1SQL = sql(team1)
Linia 54: Linia 65:
     -- =====================================================
     -- =====================================================


    -- WAŻNE:
    -- Nie wolno robić:
    --
    -- tonumber(mw.ustring.gsub(...))
    --
    -- ponieważ gsub zwraca dwie wartości.
    -- Druga wartość może zostać potraktowana
    -- przez tonumber jako podstawa systemu liczbowego.
    --
     local function liczba(value)
     local function liczba(value)


Linia 69: Linia 71:
         end
         end


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


         return tonumber(tekst) or 0
         return tonumber(tekst) or 0
Linia 91: Linia 92:
             (wygrane / mecze) * 100
             (wygrane / mecze) * 100


         local tekst =
         return string.format(
            string.format(
            "%.1f%%",
                "%.1f",
            wartosc
                wartosc
        ):gsub("%.", ",")
            )
 
        tekst =
            mw.ustring.gsub(
                tekst,
                "%.",
                ","
            )
 
        return tekst .. "%"


     end
     end
Linia 110: Linia 101:


     -- =====================================================
     -- =====================================================
     -- WYNIK TEAM1
     -- IDENTYFIKACJA STRONY TEAM1
     -- =====================================================
     -- =====================================================


     local function wynikDruzyny(row)
     local function miejsce(row)


         local g1 =
         if row.ns1 == team1 then
             liczba(row.gole1)
             return "dom"
        end


         local g2 =
        if row.ns2 == team1 then
            return "wyjazd"
        end
 
        return nil
 
    end
 
 
    -- =====================================================
    -- WYNIK TEAM1
    -- =====================================================
 
    local function wynikDruzyny(row)
 
        local g1 =
            liczba(row.gole1)
 
         local g2 =
             liczba(row.gole2)
             liczba(row.gole2)


         if row.ns1 == team1 then
         if row.ns1 == team1 then
Linia 137: Linia 148:


     -- =====================================================
     -- =====================================================
     -- DOM / WYJAZD TEAM1
     -- NAZWA MECZU
     -- =====================================================
     -- =====================================================


     local function miejsce(row)
     local function nazwaMeczu(row)


         if row.ns1 == team1 then
         local d1 =
             return "dom"
             row.druzyna1 or ""
        end


        if row.ns2 == team1 then
         local d2 =
            return "wyjazd"
             row.druzyna2 or ""
        end
 
        return nil
 
    end
 
 
    -- =====================================================
    -- NAZWA MECZU
    -- =====================================================
 
    local function nazwaMeczu(row)
 
        local d1 =
            row.druzyna1 or ""
 
         local d2 =
             row.druzyna2 or ""


         local strona =
         local strona =
             row.strona_meczu or ""
             row.strona_meczu or ""


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


         if strona ~= "" then
         if strona ~= "" then
Linia 182: Linia 176:


         end
         end


         return tekst
         return tekst
Linia 189: Linia 184:


     -- =====================================================
     -- =====================================================
     -- PARSOWANIE WYNIKU KWARTY
     -- PARSOWANIE CZĘŚCI WYNIKU
     -- =====================================================
     -- =====================================================


Linia 215: Linia 210:


     end
     end
    -- =====================================================
    -- WARUNEK H2H
    -- =====================================================
    local whereH2H =
        "(" ..
        "(Mecze.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..
        " OR " ..
        "(Mecze.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
        ")"




     -- =====================================================
     -- =====================================================
     -- POBRANIE MECZÓW
     -- POBRANIE MECZÓW
    --
    -- UWAGA:
    -- pola nazywają się KWARTA1, KWARTA2 itd.
    -- a nie KWART1.
     -- =====================================================
     -- =====================================================


Linia 224: Linia 248:


         "Mecze.id=mecz",
         "Mecze.id=mecz",
         "Mecze.data=data",
         "Mecze.data=data",
         "Mecze.sezon=sezon",
         "Mecze.sezon=sezon",
Linia 261: Linia 286:
             fieldsMecze,
             fieldsMecze,
             {
             {
                 where =
                 where = whereH2H,
                    "(" ..
 
                    "(" ..
                    "Mecze.nazwa_statystyki1='" ..
                    team1SQL ..
                    "' AND " ..
                    "Mecze.nazwa_statystyki2='" ..
                    team2SQL ..
                    ")" ..
 
                    " OR " ..
 
                    "(" ..
                    "Mecze.nazwa_statystyki1='" ..
                    team2SQL ..
                    "' AND " ..
                    "Mecze.nazwa_statystyki2='" ..
                    team1SQL ..
                    ")" ..
 
                    ")",


                 orderBy =
                 orderBy =
Linia 402: Linia 406:
     local function dodajRekordMeczowy(
     local function dodajRekordMeczowy(
         lista,
         lista,
         roznica,
         wartosc,
         item
         item
     )
     )
Linia 409: Linia 413:


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc


             table.insert(
             table.insert(
Linia 425: Linia 429:




         if roznica > obecna then
         if wartosc > obecna then
 
            lista = {
                item
            }


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc
 
            return lista


            lista[1] =
                item


         elseif roznica == obecna then
         elseif wartosc == obecna then


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc


             table.insert(
             table.insert(
Linia 444: Linia 452:


         end
         end
        return lista


     end
     end
Linia 454: Linia 465:
     for _, row in ipairs(mecze) do
     for _, row in ipairs(mecze) do


         local zdobyte, stracone =
         local zdobyte,
            stracone =
             wynikDruzyny(row)
             wynikDruzyny(row)


         local miejsceMeczu =
         local miejsceMeczu =
             miejsce(row)
             miejsce(row)


         if zdobyte and
         if zdobyte and
Linia 466: Linia 479:


             local wynikMeczu
             local wynikMeczu


             if zdobyte > stracone then
             if zdobyte > stracone then
Linia 488: Linia 502:
             local b =
             local b =
                 bilans.wszystkie
                 bilans.wszystkie


             b.mecze =
             b.mecze =
Linia 520: Linia 535:
             local bd =
             local bd =
                 bilans[miejsceMeczu]
                 bilans[miejsceMeczu]


             bd.mecze =
             bd.mecze =
Linia 547: Linia 563:


             -- =============================================
             -- =============================================
             -- REKORDY MECZOWE
             -- REKORD MECZOWY
             -- =============================================
             -- =============================================


             local item = {
             local itemMeczu = {


                 tekst =
                 tekst =
Linia 579: Linia 595:
             if roznica > 0 then
             if roznica > 0 then


                 dodajRekordMeczowy(
                 local lista =
                     rekordyMeczowe.zwyciestwo[miejsceMeczu],
                     rekordyMeczowe
                    roznica,
                        .zwyciestwo
                    item
                        [miejsceMeczu]
                )


            elseif roznica < 0 then
                if #lista == 0 then


                dodajRekordMeczowy(
                     itemMeczu.wartosc =
                     rekordyMeczowe.porazka[miejsceMeczu],
                        roznica
                    math.abs(roznica),
                    item
                )


            end
                    table.insert(
                        lista,
                        itemMeczu
                    )


                elseif roznica >
                    lista[1].wartosc then


            -- =============================================
                    itemMeczu.wartosc =
            -- SERIA OGÓŁEM
                        roznica
            -- =============================================


            if wynikMeczu == "W" then
                    rekordyMeczowe
                        .zwyciestwo
                        [miejsceMeczu] = {
                            itemMeczu
                        }


                 aktualnaSeria.wszystkie.W =
                 elseif roznica ==
                     aktualnaSeria.wszystkie.W + 1
                     lista[1].wartosc then


                aktualnaSeria.wszystkie.P = 0
                    itemMeczu.wartosc =
                        roznica


                if aktualnaSeria.wszystkie.W >
                    table.insert(
                    serie.wszystkie.W then
                        lista,
 
                        itemMeczu
                     serie.wszystkie.W =
                     )
                        aktualnaSeria.wszystkie.W


                 end
                 end


            elseif wynikMeczu == "P" then


                aktualnaSeria.wszystkie.P =
            elseif roznica < 0 then
                    aktualnaSeria.wszystkie.P + 1


                 aktualnaSeria.wszystkie.W = 0
                 local wartosc =
                    math.abs(roznica)


                 if aktualnaSeria.wszystkie.P >
                 local lista =
                     serie.wszystkie.P then
                     rekordyMeczowe
                        .porazka
                        [miejsceMeczu]


                    serie.wszystkie.P =
                        aktualnaSeria.wszystkie.P


                 end
                 if #lista == 0 then


            else
                    itemMeczu.wartosc =
                        wartosc


                aktualnaSeria.wszystkie.W = 0
                    table.insert(
                aktualnaSeria.wszystkie.P = 0
                        lista,
                        itemMeczu
                    )


            end
                elseif wartosc >
                    lista[1].wartosc then


                    itemMeczu.wartosc =
                        wartosc


            -- =============================================
                    rekordyMeczowe
            -- SERIA DOM / WYJAZD
                        .porazka
            -- =============================================
                        [miejsceMeczu] = {