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 5 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 9: Linia 9:
-- team2 = przeciwnik
-- team2 = przeciwnik
--
--
-- Wykorzystuje:
-- nazwa_statystyki1 / nazwa_statystyki2 służą do identyfikacji
--  nazwa_statystyki1
-- drużyn niezależnie od historycznych nazw sponsorskich.
--   nazwa_statystyki2
--
--
-- 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 w rywalizacji
-- 2. Trenerów team1 w rywalizacji
Linia 24: 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 47: 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 73: Linia 71:
         end
         end


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


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


     end
     end
Linia 88: Linia 85:
     local function procent(wygrane, mecze)
     local function procent(wygrane, mecze)


         if not mecze or mecze == 0 then
         if mecze == 0 then
             return "0,0%"
             return "0,0%"
         end
         end


         local wynik =
         local wartosc =
             (wygrane / mecze) * 100
             (wygrane / mecze) * 100


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


     end
     end
Linia 107: Linia 101:


     -- =====================================================
     -- =====================================================
     -- WARUNEK H2H DLA TABELI MECZE
     -- IDENTYFIKACJA STRONY TEAM1
    --
    -- TU NIE MA ALIASU M
     -- =====================================================
     -- =====================================================


     local whereMecze =
     local function miejsce(row)
        "(" ..
        "(Mecze.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..


         " OR " ..
         if row.ns1 == team1 then
            return "dom"
        end


         "(Mecze.nazwa_statystyki1='" ..
         if row.ns2 == team1 then
        team2SQL ..
            return "wyjazd"
        "' AND " ..
         end
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
         "')" ..


         ")"
         return nil
 
    end




     -- =====================================================
     -- =====================================================
     -- WARUNEK H2H DLA TABELI MECZE Z ALIASEM M
     -- WYNIK TEAM1
    --
    -- UWAGA:
    -- tutaj używamy WYŁĄCZNIE M.nazwa_statystyki1
    -- i M.nazwa_statystyki2
     -- =====================================================
     -- =====================================================


     local whereM =
     local function wynikDruzyny(row)
        "(" ..
        "(M.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "M.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..
 
        " OR " ..
 
        "(M.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND " ..
        "M.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
 
        ")"
 


    -- =====================================================
        local g1 =
    -- WYNIK DRUŻYNY
            liczba(row.gole1)
    -- =====================================================


    local function wynikDruzyny(row)
        local g2 =
            liczba(row.gole2)


        local g1 = liczba(row.gole1)
        local g2 = liczba(row.gole2)


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


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


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


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


Linia 219: Linia 161:
         local strona =
         local strona =
             row.strona_meczu or ""
             row.strona_meczu or ""


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


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


         end
         end


         return tekst
         return tekst
Linia 241: Linia 184:


     -- =====================================================
     -- =====================================================
     -- PARSOWANIE KWARTY / DOGRYWKI
     -- 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
Linia 270: Linia 213:


     -- =====================================================
     -- =====================================================
     -- POBRANIE MECZÓW
     -- WARUNEK H2H
     -- =====================================================
     -- =====================================================


     local fieldsMecze =
     local whereH2H =
         table.concat({
         "(" ..
        "(Mecze.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..


            "Mecze.id=mecz",
        " OR " ..
            "Mecze.data=data",
 
            "Mecze.sezon=sezon",
        "(Mecze.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
 
        ")"
 
 
    -- =====================================================
    -- 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.druzyna1=druzyna1",
            "Mecze.druzyna2=druzyna2",
        "Mecze.druzyna2=druzyna2",


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


            "Mecze.gole1=gole1",
        "Mecze.gole1=gole1",
            "Mecze.gole2=gole2",
        "Mecze.gole2=gole2",


            "Mecze.wynik=wynik",
        "Mecze.wynik=wynik",
            "Mecze.wynik_do_przerwy=wynik_do_przerwy",
        "Mecze.wynik_do_przerwy=wynik_do_przerwy",


            "Mecze.kwarta1=kwarta1",
        "Mecze.kwarta1=kwarta1",
            "Mecze.kwarta2=kwarta2",
        "Mecze.kwarta2=kwarta2",
            "Mecze.kwarta3=kwarta3",
        "Mecze.kwarta3=kwarta3",
            "Mecze.kwarta4=kwarta4",
        "Mecze.kwarta4=kwarta4",


            "Mecze.dogrywka1=dogrywka1",
        "Mecze.dogrywka1=dogrywka1",
            "Mecze.dogrywka2=dogrywka2",
        "Mecze.dogrywka2=dogrywka2",
            "Mecze.dogrywka3=dogrywka3",
        "Mecze.dogrywka3=dogrywka3",


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


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




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


                 orderBy =
                 orderBy =
Linia 346: Linia 318:
             wygrane = 0,
             wygrane = 0,
             przegrane = 0,
             przegrane = 0,
            remisy = 0,
             punktyZdobyte = 0,
             punktyZdobyte = 0,
             punktyStracone = 0
             punktyStracone = 0
Linia 355: Linia 326:
             wygrane = 0,
             wygrane = 0,
             przegrane = 0,
             przegrane = 0,
            remisy = 0,
             punktyZdobyte = 0,
             punktyZdobyte = 0,
             punktyStracone = 0
             punktyStracone = 0
Linia 364: Linia 334:
             wygrane = 0,
             wygrane = 0,
             przegrane = 0,
             przegrane = 0,
            remisy = 0,
             punktyZdobyte = 0,
             punktyZdobyte = 0,
             punktyStracone = 0
             punktyStracone = 0
Linia 461: 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 479: Linia 452:


         end
         end
        return lista


     end
     end
Linia 489: 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 525: Linia 502:
             local b =
             local b =
                 bilans.wszystkie
                 bilans.wszystkie


             b.mecze =
             b.mecze =
Linia 547: Linia 525:
                 b.przegrane =
                 b.przegrane =
                     b.przegrane + 1
                     b.przegrane + 1
            else
                b.remisy =
                    b.remisy + 1


             end
             end
Linia 560: Linia 533:
             -- =============================================
             -- =============================================


             local bm =
             local bd =
                 bilans[miejsceMeczu]
                 bilans[miejsceMeczu]


            bm.mecze =
                bm.mecze + 1


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


             bm.punktyStracone =
             bd.punktyStracone =
                 bm.punktyStracone +
                 bd.punktyStracone +
                 stracone
                 stracone


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


                 bm.wygrane =
                 bd.wygrane =
                     bm.wygrane + 1
                     bd.wygrane + 1


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


                 bm.przegrane =
                 bd.przegrane =
                     bm.przegrane + 1
                     bd.przegrane + 1
 
            else
 
                bm.remisy =
                    bm.remisy + 1


             end
             end
Linia 597: Linia 566:
             -- =============================================
             -- =============================================


             local item = {
             local itemMeczu = {


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