Przejdź do zawartości

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

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
Linia 9: Linia 9:
-- team2 = przeciwnik
-- team2 = przeciwnik
--
--
-- Wykorzystuje nazwa_statystyki1 / nazwa_statystyki2.
-- Identyfikacja drużyn odbywa się przez:
-- nazwa_statystyki1 / nazwa_statystyki2
--
--
-- Zawiera:
-- Dzięki temu zmiana nazwy sponsorskiej nie rozbija H2H.
--
-- ZAWARTOŚĆ:
-- 1. Bilans ogółem / dom / wyjazd
-- 1. Bilans ogółem / dom / wyjazd
-- 2. Trenerów team1 w rywalizacji
-- 2. Trenerzy team1 w rywalizacji
-- 3. Najlepszych strzelców obu drużyn
-- 3. Najlepsi strzelcy obu drużyn
-- 4. Rekordy indywidualne team1
-- 4. Rekordy indywidualne team1
-- 5. Serie zwycięstw / porażek
-- 5. Serie zwycięstw / porażek
-- 6. Analizę kwart
-- 6. Analiza kwart
-- 7. Wszystkie mecze
-- 7. Wszystkie mecze
-- 8. Dogrywkę 1, 2 i 3
-- 8. Dogrywka 1 / 2 / 3
-- =========================================================
-- =========================================================


Linia 25: Linia 28:
function p.main(frame)
function p.main(frame)


     local team1 = mw.text.trim(frame.args.team1 or "")
    -- =====================================================
     local team2 = mw.text.trim(frame.args.team2 or "")
    -- PARAMETRY
    -- =====================================================
 
     local team1 =
        mw.text.trim(
            frame.args.team1 or ""
        )
 
     local team2 =
        mw.text.trim(
            frame.args.team2 or ""
        )
 


     if team1 == "" then
     if team1 == "" then
Linia 42: Linia 57:


     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 team2SQL = sql(team2)
     local team1SQL =
        sql(team1)
 
     local team2SQL =
        sql(team2)




Linia 54: Linia 78:
     -- =====================================================
     -- =====================================================


    -- 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 84:
         end
         end


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


         return tonumber(tekst) or 0
         return tonumber(value) or 0


     end
     end




     local function procent(wygrane, mecze)
     local function procent(
        wygrane,
        mecze
    )


         if mecze == 0 then
         if mecze == 0 then
Linia 88: Linia 105:
         end
         end


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


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


     end
     end
Linia 120: Linia 131:
         local g2 =
         local g2 =
             liczba(row.gole2)
             liczba(row.gole2)


         if row.ns1 == team1 then
         if row.ns1 == team1 then
Linia 130: Linia 142:


         end
         end


         return nil, nil
         return nil, nil
Linia 137: Linia 150:


     -- =====================================================
     -- =====================================================
     -- DOM / WYJAZD TEAM1
     -- DOM / WYJAZD
     -- =====================================================
     -- =====================================================


Linia 169: Linia 182:
         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


             return "[[" ..
             return
                "[[" ..
                 strona ..
                 strona ..
                 "|" ..
                 "|" ..
Linia 182: Linia 200:


         end
         end


         return tekst
         return tekst
Linia 189: Linia 208:


     -- =====================================================
     -- =====================================================
     -- PARSOWANIE WYNIKU KWARTY
     -- PARSOWANIE KWARTY / DOGRYWKI
     -- =====================================================
     -- =====================================================


Linia 197: Linia 216:
             return nil, nil
             return nil, nil
         end
         end


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


         local a, b =
         local a, b =
Linia 205: Linia 226:
                 "(%d+)%s*:%s*(%d+)"
                 "(%d+)%s*:%s*(%d+)"
             )
             )


         if not a or not b then
         if not a or not b then
             return nil, nil
             return nil, nil
         end
         end


         return
         return
Linia 221: Linia 244:
     -- =====================================================
     -- =====================================================


     local fieldsMecze = table.concat({
     local fieldsMecze =
        table.concat({
 
            "Mecze.id=mecz",
            "Mecze.data=data",
            "Mecze.sezon=sezon",


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


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


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


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


        "Mecze.wynik=wynik",
            "Mecze.kwart1=kwart1",
        "Mecze.wynik_do_przerwy=wynik_do_przerwy",
            "Mecze.kwart2=kwart2",
            "Mecze.kwart3=kwart3",
            "Mecze.kwart4=kwart4",


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


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


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


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




Linia 261: Linia 286:
             fieldsMecze,
             fieldsMecze,
             {
             {
                 where =
                 where =
                     "(" ..
                     "(" ..
Linia 270: Linia 296:
                     "Mecze.nazwa_statystyki2='" ..
                     "Mecze.nazwa_statystyki2='" ..
                     team2SQL ..
                     team2SQL ..
                     ")" ..
                     "')" ..


                     " OR " ..
                     " OR " ..
Linia 280: Linia 306:
                     "Mecze.nazwa_statystyki2='" ..
                     "Mecze.nazwa_statystyki2='" ..
                     team1SQL ..
                     team1SQL ..
                     ")" ..
                     "')" ..


                     ")",
                     ")",
Linia 288: Linia 314:


                 limit = 5000
                 limit = 5000
             }
             }
         )
         )
Linia 402: Linia 429:
     local function dodajRekordMeczowy(
     local function dodajRekordMeczowy(
         lista,
         lista,
         roznica,
         wartosc,
         item
         item
     )
     )
Linia 409: Linia 436:


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc


             table.insert(
             table.insert(
Linia 425: Linia 452:




         if roznica > obecna then
         if wartosc > obecna then


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc


             lista[1] =
             lista[1] =
                 item
                 item


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


             item.wartosc =
             item.wartosc =
                 roznica
                 wartosc


             table.insert(
             table.insert(
Linia 452: Linia 479:
     -- =====================================================
     -- =====================================================


     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
 
             stracone and
         if zdobyte
             miejsceMeczu then
             and stracone
             and miejsceMeczu then




             local wynikMeczu
             local wynikMeczu


             if zdobyte > stracone then
             if zdobyte > stracone then
Linia 483: Linia 516:


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


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


            b.mecze =
                b.mecze + 1


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


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


Linia 503: Linia 535:
             if wynikMeczu == "W" then
             if wynikMeczu == "W" then


                 b.wygrane =
                 bilans.wszystkie.wygrane =
                     b.wygrane + 1
                     bilans.wszystkie.wygrane + 1
 
 
             elseif wynikMeczu == "P" then
             elseif wynikMeczu == "P" then


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


             end
             end
Linia 518: Linia 550:
             -- =============================================
             -- =============================================


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


            bd.mecze =
                bd.mecze + 1


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


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


Linia 535: Linia 570:
             if wynikMeczu == "W" then
             if wynikMeczu == "W" then


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


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


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


             end
             end
Linia 547: Linia 582:


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


Linia 580: Linia 615:


                 dodajRekordMeczowy(
                 dodajRekordMeczowy(
                     rekordyMeczowe.zwyciestwo[miejsceMeczu],
                     rekordyMeczowe.zwyciestwo[
                        miejsceMeczu
                    ],
                     roznica,
                     roznica,
                     item
                     item
Linia 588: Linia 625: