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 11 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
-- dzięki czemu zmiana nazwy sponsorskiej nie rozbija H2H.
-- drużyn niezależnie od historycznych nazw sponsorskich.
--
--
-- Zawiera:
-- Zawiera:
Linia 20: 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 43: Linia 47:


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


     local team1SQL = sql(team1)
     local team1SQL = sql(team1)
Linia 60: Linia 71:
         end
         end


         return tonumber(
         local tekst =
             mw.ustring.gsub(
             mw.ustring.gsub(
                 tostring(value),
                 tostring(value),
Linia 66: Linia 77:
                 ""
                 ""
             )
             )
         ) or 0
 
         return tonumber(tekst) or 0


     end
     end
Linia 76: Linia 88:
             return "0,0%"
             return "0,0%"
         end
         end
        local wartosc =
            (wygrane / mecze) * 100


         return string.format(
         return string.format(
             "%.1f%%",
             "%.1f%%",
             (wygrane / mecze) * 100
             wartosc
         ):gsub("%.", ",")
         ):gsub("%.", ",")


Linia 85: Linia 100:




     local function wynikDruzyny(row)
     -- =====================================================
 
    -- IDENTYFIKACJA STRONY TEAM1
        local g1 = liczba(row.gole1)
     -- =====================================================
        local g2 = liczba(row.gole2)
 
        if row.ns1 == team1 then
 
            return g1, g2
 
        elseif row.ns2 == team1 then
 
            return g2, g1
 
        end
 
        return nil, nil
 
     end
 


     local function miejsce(row)
     local function miejsce(row)
Linia 119: Linia 118:
     end
     end


    -- =====================================================
    -- WYNIK TEAM1
    -- =====================================================
    local function wynikDruzyny(row)
        local g1 =
            liczba(row.gole1)
        local g2 =
            liczba(row.gole2)
        if row.ns1 == team1 then
            return g1, g2
        elseif row.ns2 == team1 then
            return g2, g1
        end
        return nil, nil
    end
    -- =====================================================
    -- NAZWA MECZU
    -- =====================================================


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


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


        local strona = row.strona_meczu or ""


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


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


         end
         end


         return tekst
         return tekst
Linia 144: Linia 182:
     end
     end


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


     local function parseWynikCzesciowy(value)
     local function parseWynikCzesciowy(value)


         if not value or value == "" then
         if value == nil or value == "" then
             return nil, nil
             return nil, nil
         end
         end
        local tekst =
            tostring(value)


         local a, b =
         local a, b =
             tostring(value):match(
             tekst:match(
                 "(%d+)%s*:%s*(%d+)"
                 "(%d+)%s*:%s*(%d+)"
             )
             )
Linia 160: Linia 205:
         end
         end


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


     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 172: Linia 248:


         "Mecze.id=mecz",
         "Mecze.id=mecz",
         "Mecze.data=data",
         "Mecze.data=data",
         "Mecze.sezon=sezon",
         "Mecze.sezon=sezon",
Linia 187: Linia 264:
         "Mecze.wynik_do_przerwy=wynik_do_przerwy",
         "Mecze.wynik_do_przerwy=wynik_do_przerwy",


         "Mecze.kwart1=kwart1",
         "Mecze.kwarta1=kwarta1",
         "Mecze.kwart2=kwart2",
         "Mecze.kwarta2=kwarta2",
         "Mecze.kwart3=kwart3",
         "Mecze.kwarta3=kwarta3",
         "Mecze.kwart4=kwart4",
         "Mecze.kwarta4=kwarta4",


         "Mecze.dogrywka1=dogrywka1",
         "Mecze.dogrywka1=dogrywka1",
Linia 209: 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 343: Linia 406:
     local function dodajRekordMeczowy(
     local function dodajRekordMeczowy(
         lista,
         lista,
         roznica,
         wartosc,
         item,
         item
        typ
     )
     )


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


             item.wartosc = roznica
             item.wartosc =
                wartosc


             table.insert(
             table.insert(
Linia 366: Linia 429:




         if roznica > obecna then
         if wartosc > obecna then


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


            lista[1] = item


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


             item.wartosc = roznica
             item.wartosc =
                wartosc


             table.insert(
             table.insert(
Linia 382: Linia 452:


         end
         end
        return lista


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


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


Linia 398: Linia 472:
             miejsce(row)
             miejsce(row)


         if zdobyte and stracone and miejsceMeczu then
 
         if zdobyte and
            stracone and
            miejsceMeczu then
 


             local wynikMeczu
             local wynikMeczu


             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"
             end
             end




             -- =============================================
             -- =============================================
             -- BILANS OGÓŁEM
             -- OGÓŁEM
             -- =============================================
             -- =============================================


             bilans.wszystkie.mecze =
             local b =
                 bilans.wszystkie.mecze + 1
                bilans.wszystkie
 
 
            b.mecze =
                 b.mecze + 1


             bilans.wszystkie.punktyZdobyte =
             b.punktyZdobyte =
                 bilans.wszystkie.punktyZdobyte +
                 b.punktyZdobyte +
                 zdobyte
                 zdobyte


             bilans.wszystkie.punktyStracone =
             b.punktyStracone =
                 bilans.wszystkie.punktyStracone +
                 b.punktyStracone +
                 stracone
                 stracone


Linia 429: Linia 518:
             if wynikMeczu == "W" then
             if wynikMeczu == "W" then


                 bilans.wszystkie.wygrane =
                 b.wygrane =
                     bilans.wszystkie.wygrane + 1
                     b.wygrane + 1


             elseif wynikMeczu == "P" then
             elseif wynikMeczu == "P" then


                 bilans.wszystkie.przegrane =
                 b.przegrane =
                     bilans.wszystkie.przegrane + 1
                     b.przegrane + 1


             end
             end
Linia 441: Linia 530:


             -- =============================================
             -- =============================================
             -- BILANS DOM / WYJAZD
             -- DOM / WYJAZD
             -- =============================================
             -- =============================================


             local b =
             local bd =
                 bilans[miejsceMeczu]
                 bilans[miejsceMeczu]


            b.mecze =
                b.mecze + 1


             b.punktyZdobyte =
             bd.mecze =
                 b.punktyZdobyte +
                bd.mecze + 1
 
            bd.punktyZdobyte =
                 bd.punktyZdobyte +
                 zdobyte
                 zdobyte


             b.punktyStracone =
             bd.punktyStracone =
                 b.punktyStracone +
                 bd.punktyStracone +
                 stracone
                 stracone


Linia 461: Linia 551:
             if wynikMeczu == "W" then
             if wynikMeczu == "W" then


                 b.wygrane =
                 bd.wygrane =
                     b.wygrane + 1
                     bd.wygrane + 1


             elseif wynikMeczu == "P" then
             elseif wynikMeczu == "P" then


                 b.przegrane =
                 bd.przegrane =
                     b.przegrane + 1
                     bd.przegrane + 1


             end
             end
Linia 473: Linia 563:


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


             local item = {
             local itemMeczu = {


                 tekst =
                 tekst =
Linia 505: 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


                local porazka =
                    itemMeczu.wartosc =
                    math.abs(roznica)
                        roznica


                dodajRekordMeczowy(
                    table.insert(
                    rekordyMeczowe.porazka[miejsceMeczu],
                        lista,
                    porazka,
                        itemMeczu
                     item
                     )
                )


<