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 6 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 9: Linia 9:
-- team2 = przeciwnik
-- team2 = przeciwnik
--
--
-- IDENTYFIKACJA RYWALIZACJI:
-- nazwa_statystyki1 / nazwa_statystyki2 służą do identyfikacji
-- nazwa_statystyki1 / nazwa_statystyki2
-- drużyn niezależnie od historycznych nazw sponsorskich.
--
--
-- Dzięki temu zmiana nazwy sponsorskiej drużyny
-- Zawiera:
-- nie rozbija historii H2H.
--
-- ZAWIERA:
-- 1. Bilans ogółem / dom / wyjazd
-- 1. Bilans ogółem / dom / wyjazd
-- 2. Trenerów team1
-- 2. Trenerów team1 w rywalizacji
-- 3. Najlepszych strzelców obu drużyn
-- 3. Najlepszych strzelców obu drużyn
-- 4. Rekordy indywidualne team1
-- 4. Rekordy indywidualne team1
-- 5. Serie zwycięstw i porażek
-- 5. Serie zwycięstw / porażek
-- 6. Analizę kwart
-- 6. Analizę kwart
-- 7. Rekordy meczowe
-- 7. Wszystkie mecze
-- 8. Wszystkie mecze
-- 8. Dogrywki 1, 2 i 3
-- 9. Dogrywkę 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 "")
     local team2 = mw.text.trim(frame.args.team2 or "")
     local team2 = mw.text.trim(frame.args.team2 or "")


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


     if team2 == "" then
     if team2 == "" then
Linia 49: Linia 47:


     local function sql(value)
     local function sql(value)
        value = tostring(value or "")


         return mw.ustring.gsub(
         return mw.ustring.gsub(
             value,
             tostring(value or ""),
             "'",
             "'",
             "''"
             "''"
Linia 66: Linia 62:


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


     local function liczba(value)
     local function liczba(value)


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


 
         local tekst =
         local tekst = tostring(value)
 
 
        if tekst == "" then
            return 0
        end
 
 
        tekst =
             mw.ustring.gsub(
             mw.ustring.gsub(
                 tekst,
                 tostring(value),
                 "%s+",
                 "%s+",
                 ""
                 ""
             )
             )


        return tonumber(tekst) or 0
    end


        local liczbaValue =
            tonumber(tekst)


    local function procent(wygrane, mecze)


         if liczbaValue == nil then
         if mecze == 0 then
             return 0
             return "0,0%"
         end
         end


        local wartosc =
            (wygrane / mecze) * 100


         return liczbaValue
         return string.format(
            "%.1f%%",
            wartosc
        ):gsub("%.", ",")


     end
     end
Linia 107: Linia 101:


     -- =====================================================
     -- =====================================================
     -- PROCENT
     -- IDENTYFIKACJA STRONY TEAM1
     -- =====================================================
     -- =====================================================


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


         if not mecze or mecze == 0 then
         if row.ns1 == team1 then
             return "0,0%"
             return "dom"
         end
         end


        if row.ns2 == team1 then
            return "wyjazd"
        end


         local wynik =
         return nil
            (wygrane / mecze) * 100


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




     -- =====================================================
     -- =====================================================
     -- WYNIK DRUŻYNY TEAM1
     -- WYNIK TEAM1
     -- =====================================================
     -- =====================================================


Linia 159: Linia 141:


         end
         end


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


     end
     end
Linia 199: Linia 159:
             row.druzyna2 or ""
             row.druzyna2 or ""


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




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




         if strona ~= "" then
         if strona ~= "" then


             return
             return "[[" ..
                "[[" ..
                 strona ..
                 strona ..
                 "|" ..
                 "|" ..
Linia 227: Linia 184:


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


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


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


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


         local a, b =
         local a, b =
Linia 250: Linia 200:
                 "(%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 265: Linia 213:


     -- =====================================================
     -- =====================================================
     -- POBRANIE MECZÓW
     -- WARUNEK H2H
    --
    -- UWAGA:
    -- używamy KWARTA1 itd.,
    -- a nie kwart1.
     -- =====================================================
     -- =====================================================


     local fieldsMecze =
     local whereH2H =
        table.concat({
 
            "Mecze.id=mecz",
            "Mecze.data=data",
            "Mecze.sezon=sezon",
 
            "Mecze.druzyna1=druzyna1",
            "Mecze.druzyna2=druzyna2",
 
            "Mecze.nazwa_statystyki1=ns1",
            "Mecze.nazwa_statystyki2=ns2",
 
            "Mecze.gole1=gole1",
            "Mecze.gole2=gole2",
 
            "Mecze.wynik=wynik",
            "Mecze.wynik_do_przerwy=wynik_do_przerwy",
 
            "Mecze.kwarta1=kwarta1",
            "Mecze.kwarta2=kwarta2",
            "Mecze.kwarta3=kwarta3",
            "Mecze.kwarta4=kwarta4",
 
            "Mecze.dogrywka1=dogrywka1",
            "Mecze.dogrywka2=dogrywka2",
            "Mecze.dogrywka3=dogrywka3",
 
            "Mecze.hala=hala",
            "Mecze.widzowie=widzowie",
            "Mecze.sedziowie=sedziowie",
 
            "Mecze.strona_meczu=strona_meczu"
 
        }, ",")
 
 
    local whereMecze =
         "(" ..
         "(" ..
         "(Mecze.nazwa_statystyki1='" ..
         "(Mecze.nazwa_statystyki1='" ..
         team1SQL ..
         team1SQL ..
Linia 329: Linia 235:


         ")"
         ")"
    -- =====================================================
    -- POBRANIE MECZÓW
    --
    -- UWAGA:
    -- pola nazywają się KWARTA1, KWARTA2 itd.
    -- a nie KWART1.
    -- =====================================================
    local fieldsMecze = table.concat({
        "Mecze.id=mecz",
        "Mecze.data=data",
        "Mecze.sezon=sezon",
        "Mecze.druzyna1=druzyna1",
        "Mecze.druzyna2=druzyna2",
        "Mecze.nazwa_statystyki1=ns1",
        "Mecze.nazwa_statystyki2=ns2",
        "Mecze.gole1=gole1",
        "Mecze.gole2=gole2",
        "Mecze.wynik=wynik",
        "Mecze.wynik_do_przerwy=wynik_do_przerwy",
        "Mecze.kwarta1=kwarta1",
        "Mecze.kwarta2=kwarta2",
        "Mecze.kwarta3=kwarta3",
        "Mecze.kwarta4=kwarta4",
        "Mecze.dogrywka1=dogrywka1",
        "Mecze.dogrywka2=dogrywka2",
        "Mecze.dogrywka3=dogrywka3",
        "Mecze.hala=hala",
        "Mecze.widzowie=widzowie",
        "Mecze.sedziowie=sedziowie",
        "Mecze.strona_meczu=strona_meczu"
    }, ",")




Linia 336: Linia 286:
             fieldsMecze,
             fieldsMecze,
             {
             {
                 where = whereMecze,
                 where = whereH2H,


                 orderBy =
                 orderBy =
Linia 346: Linia 296:




     if not mecze
     if not mecze or #mecze == 0 then
        or #mecze == 0 then


         return
         return
Linia 481: Linia 430:


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


             item.wartosc =
             item.wartosc =
                 wartosc
                 wartosc


             lista[1] =
             return lista
                item
 


         elseif wartosc == obecna then
         elseif wartosc == obecna then
Linia 499: Linia 452:


         end
         end
        return lista


     end
     end
Linia 509: 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 =
Linia 517: Linia 473:




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




Linia 544: Linia 500:
             -- =============================================
             -- =============================================


             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


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


Linia 560: 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 575: Linia 533:
             -- =============================================
             -- =============================================


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




             b.mecze =
             bd.mecze =
                 b.mecze + 1
                 bd.mecze + 1
 


             b.punktyZdobyte =
             bd.punktyZdobyte =
                 b.punktyZdobyte +
                 bd.punktyZdobyte +
                 zdobyte
                 zdobyte


 
             bd.punktyStracone =
             b.punktyStracone =