Przejdź do zawartości

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

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
Linia 10: Linia 10:
--
--
-- Identyfikacja rywalizacji:
-- Identyfikacja rywalizacji:
-- nazwa_statystyki1 / nazwa_statystyki2
--   Mecze.nazwa_statystyki1
--  Mecze.nazwa_statystyki2
--
-- Dzięki temu zmiana nazwy sponsorskiej nie rozbija H2H.
--
--
-- Zawiera:
-- Zawiera:
Linia 20: Linia 23:
-- 6. Analizę kwart
-- 6. Analizę kwart
-- 7. Wszystkie mecze
-- 7. Wszystkie mecze
-- 8. Dogrywkę 1 / 2 / 3
-- 8. Dogrywka 1, 2 i 3
-- =========================================================
-- =========================================================


Linia 39: Linia 42:


     -- =====================================================
     -- =====================================================
     -- FUNKCJE POMOCNICZE
     -- SQL
     -- =====================================================
     -- =====================================================


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


     local team1SQL = sql(team1)
     local team1SQL = sql(team1)
     local team2SQL = sql(team2)
     local team2SQL = sql(team2)


    -- =====================================================
    -- FUNKCJE POMOCNICZE
    -- =====================================================


     local function liczba(value)
     local function liczba(value)
Linia 58: Linia 63:
         end
         end


         value = tostring(value)
         local tekst = tostring(value)


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


         return tonumber(value) or 0
        -- WAŻNE:
        -- nie przekazujemy bezpośrednio gsub() do tonumber(),
        -- ponieważ gsub zwraca dwa wyniki.
         return tonumber(tekst) or 0


     end
     end
Linia 73: Linia 85:
         end
         end


         local wynik =
         local wartosc =
            (wygrane / mecze) * 100
 
        local tekst =
             string.format(
             string.format(
                 "%.1f",
                 "%.1f",
                 (wygrane / mecze) * 100
                 wartosc
             )
             )


         wynik =
         tekst =
             mw.ustring.gsub(
             mw.ustring.gsub(
                 wynik,
                 tekst,
                 "%.",
                 "%.",
                 ","
                 ","
             )
             )


         return wynik .. "%"
         return tekst .. "%"
 
     end
     end




     local function parseWynik(value)
     -- =====================================================
    -- USTALENIE STRONY TEAM1
    -- =====================================================


         if not value or value == "" then
    local function miejsce(row)
             return nil, nil
 
         if row.ns1 == team1 then
             return "dom"
         end
         end


         local a, b =
         if row.ns2 == team1 then
             tostring(value):match(
             return "wyjazd"
                "(%d+)%s*:%s*(%d+)"
            )
 
        if not a or not b then
            return nil, nil
         end
         end


         return tonumber(a), tonumber(b)
         return nil


     end
     end


    -- =====================================================
    -- WYNIK TEAM1
    -- =====================================================


     local function wynikDruzyny(row)
     local function wynikDruzyny(row)
Linia 128: Linia 147:




     local function miejsce(row)
     -- =====================================================
 
    -- NAZWA MECZU
        if row.ns1 == team1 then
     -- =====================================================
            return "dom"
        end
 
        if row.ns2 == team1 then
            return "wyjazd"
        end
 
        return nil
 
     end
 


     local function nazwaMeczu(row)
     local function nazwaMeczu(row)
Linia 147: Linia 155:
         local d1 = row.druzyna1 or ""
         local d1 = row.druzyna1 or ""
         local d2 = row.druzyna2 or ""
         local d2 = row.druzyna2 or ""
        local strona = row.strona_meczu or ""


         local tekst =
         local tekst =
             d1 .. " – " .. d2
             d1 .. " – " .. d2
        local strona =
            row.strona_meczu or ""


         if strona ~= "" then
         if strona ~= "" then
Linia 168: Linia 178:


     -- =====================================================
     -- =====================================================
     -- WARUNEK H2H
     -- PARSOWANIE KWARTY
    --
    -- UWAGA:
    -- Używamy nazw pól z aliasem M.
     -- =====================================================
     -- =====================================================


     local whereH2H =
     local function parseCzesciowy(value)
        "(" ..
        "(M.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND M.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..
        " OR " ..
        "(M.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND M.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
        ")"


        if value == nil or value == "" then
            return nil, nil
        end


    -- =====================================================
        local tekst =
    -- POBRANIE MECZÓW
            tostring(value)
    -- =====================================================


    local fieldsMecze = table.concat({
        local a, b =
            tekst:match(
                "(%d+)%s*:%s*(%d+)"
            )


         "M.id=mecz",
         if not a or not b then
         "M.data=data",
            return nil, nil
         "M.sezon=sezon",
        end
 
         return tonumber(a), tonumber(b)
 
    end
 
 
    -- =====================================================
    -- POBRANIE MECZÓW
    -- =====================================================
 
    local fieldsMecze =
         table.concat({


        "M.druzyna1=druzyna1",
            "M.id=mecz",
        "M.druzyna2=druzyna2",
            "M.data=data",
            "M.sezon=sezon",


        "M.nazwa_statystyki1=ns1",
            "M.druzyna1=druzyna1",
        "M.nazwa_statystyki2=ns2",
            "M.druzyna2=druzyna2",


        "M.gole1=gole1",
            "M.nazwa_statystyki1=ns1",
        "M.gole2=gole2",
            "M.nazwa_statystyki2=ns2",


        "M.wynik=wynik",
            "M.gole1=gole1",
        "M.wynik_do_przerwy=wynik_do_przerwy",
            "M.gole2=gole2",


        "M.kwarta1=kwarta1",
            "M.wynik=wynik",
        "M.kwarta2=kwarta2",
            "M.wynik_do_przerwy=wynik_do_przerwy",
        "M.kwarta3=kwarta3",
        "M.kwarta4=kwarta4",


        "M.dogrywka1=dogrywka1",
            "M.kwarta1=kwarta1",
        "M.dogrywka2=dogrywka2",
            "M.kwarta2=kwarta2",
        "M.dogrywka3=dogrywka3",
            "M.kwarta3=kwarta3",
            "M.kwarta4=kwarta4",


        "M.hala=hala",
            "M.dogrywka1=dogrywka1",
        "M.widzowie=widzowie",
            "M.dogrywka2=dogrywka2",
        "M.sedziowie=sedziowie",
            "M.dogrywka3=dogrywka3",


        "M.strona_meczu=strona_meczu"
            "M.hala=hala",
            "M.widzowie=widzowie",
            "M.sedziowie=sedziowie",
            "M.strona_meczu=strona_meczu"


    }, ",")
        }, ",")




Linia 235: Linia 249:
             fieldsMecze,
             fieldsMecze,
             {
             {
                 where = whereH2H,
                 where =
                    "(" ..
 
                    "(M.nazwa_statystyki1='" ..
                    team1SQL ..
                    "' AND " ..
                    "M.nazwa_statystyki2='" ..
                    team2SQL ..
                    "')" ..
 
                    " OR " ..
 
                    "(M.nazwa_statystyki1='" ..
                    team2SQL ..
                    "' AND " ..
                    "M.nazwa_statystyki2='" ..
                    team1SQL ..
                    "')" ..
 
                    ")",


                 orderBy =
                 orderBy =
Linia 259: Linia 292:
     -- =====================================================
     -- =====================================================
     -- BILANS
     -- BILANS
    -- TYLKO TEAM1
     -- =====================================================
     -- =====================================================


Linia 379: Linia 411:


         if wartosc > obecna then
         if wartosc > obecna then
            item.wartosc = wartosc


             lista = {
             lista = {
                 item
                 item
             }
             }
            item.wartosc = wartosc
            return lista


         elseif wartosc == obecna then
         elseif wartosc == obecna then
Linia 413: Linia 447:
         local miejsceMeczu =
         local miejsceMeczu =
             miejsce(row)
             miejsce(row)


         if zdobyte and stracone and miejsceMeczu then
         if zdobyte and stracone and miejsceMeczu then
Linia 421: Linia 454:
             if zdobyte > stracone then
             if zdobyte > stracone then
                 wynikMeczu = "W"
                 wynikMeczu = "W"
             elseif zdobyte < stracone then
             elseif zdobyte < stracone then
                 wynikMeczu = "P"
                 wynikMeczu = "P"
             else
             else
                 wynikMeczu = "R"
                 wynikMeczu = "R"
Linia 448: Linia 483:


             if wynikMeczu == "W" then
             if wynikMeczu == "W" then
                 b.wygrane =
                 b.wygrane =
                     b.wygrane + 1
                     b.wygrane + 1


             elseif wynikMeczu == "P" then
             elseif wynikMeczu == "P" then
                 b.przegrane =
                 b.przegrane =
                     b.przegrane + 1
                     b.przegrane + 1
             end
             end


Linia 464: Linia 496:
             -- =============================================
             -- =============================================


             local bm =
             b =
                 bilans[miejsceMeczu]
                 bilans[miejsceMeczu]


             bm.mecze =
             b.mecze =
                 bm.mecze + 1
                 b.mecze + 1


             bm.punktyZdobyte =
             b.punktyZdobyte =
                 bm.punktyZdobyte +
                 b.punktyZdobyte +
                 zdobyte
                 zdobyte


             bm.punktyStracone =
             b.punktyStracone =
                 bm.punktyStracone +
                 b.punktyStracone +
                 stracone
                 stracone




             if wynikMeczu == "W" then
             if wynikMeczu == "W" then
 
                 b.wygrane =
                 bm.wygrane =
                     b.wygrane + 1
                     bm.wygrane + 1


             elseif wynikMeczu == "P" then
             elseif wynikMeczu == "P" then
 
                 b.przegrane =
                 bm.przegrane =
                     b.przegrane + 1
                     bm.przegrane + 1
 
             end
             end


Linia 526: Linia 555:


                 local lista =
                 local lista =
                     rekordyMeczowe.zwyciestwo[
                     rekordyMeczowe.
                        miejsceMeczu
                    zwyciestwo[miejsceMeczu]
                    ]


                 if #lista == 0 or
                 if #lista == 0 then
                    roznica > lista[1].wartosc then


                    rekordyMeczowe.zwyciestwo[
                     item.wartosc = roznica
                        miejsceMeczu
                    ] = {
                        item
                    }
 
                    item.wartosc =
                        roznica
 
                elseif roznica ==
                    lista[1].wartosc then
 
                     item.wartosc =
                        roznica


                     table.insert(
                     table.insert(
Linia 553: Linia 567:
                     )
                     )


                 end
                 else
 
                    local obecna =
                        lista[1].wartosc


            elseif roznica < 0 then
                    if roznica > obecna then


                local przegrana =
                        item.wartosc =
                    math.abs(roznica)
                            roznica


                local lista =
                        rekordyMeczowe.
                    rekordyMeczowe.porazka[
                            zwyciestwo[miejsceMeczu] = {
                        miejsceMeczu
                                item
                    ]
                            }


                if #lista == 0 or
                    elseif roznica == obecna then
                    przegrana > lista[1].wartosc then


                    item.wartosc =
                        item.wartosc =
</