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:
-- IDENTYFIKACJA RYWALIZACJI:
--   nazwa_statystyki1
-- nazwa_statystyki1 / nazwa_statystyki2
--  nazwa_statystyki2
--
--
-- Dzięki temu zmiana nazwy sponsorskiej drużyny
-- Dzięki temu zmiana nazwy sponsorskiej nie rozbija H2H.
-- nie rozbija historii H2H.
--
--
-- ZAWIERA:
-- ZAWIERA:
-- 1. Bilans ogółem / dom / wyjazd
-- 1. Bilans ogółem / dom / wyjazd
-- 2. Trenerów team1 w rywalizacji
-- 2. Trenerów team1
-- 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 / porażek
-- 5. Serie zwycięstw / porażek
-- 6. Analizę kwart
-- 6. Analizę kwart
-- 7. Wszystkie mecze
-- 7. Rekordy meczowe
-- 8. Dogrywkę 1, 2 i 3
-- 8. Wszystkie mecze
-- 9. Dogrywkę 1, 2 i 3
-- =========================================================
-- =========================================================


Linia 30: Linia 29:
function p.main(frame)
function p.main(frame)


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


     if team1 == "" then
     if team1 == "" then
Linia 43: Linia 50:


     -- =====================================================
     -- =====================================================
     -- BEZPIECZEŃSTWO SQL
     -- SQL
     -- =====================================================
     -- =====================================================


     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 64: Linia 69:


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


Linia 73: Linia 78:
         end
         end


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


         return tonumber(value) or 0
         return tonumber(value) or 0
Linia 86: Linia 90:




     local function procent(wygrane, mecze)
    -- =====================================================
    -- PROCENT
    -- =====================================================
 
     local function procent(
        wygrane,
        mecze
    )


         if not mecze or mecze == 0 then
         if not mecze or mecze == 0 then
Linia 109: Linia 120:
     -- WARUNEK H2H DLA TABELI MECZE
     -- WARUNEK H2H DLA TABELI MECZE
     --
     --
     -- TU NIE MA ALIASU M
     -- Tutaj NIE MA ALIASU.
     -- =====================================================
     -- =====================================================


     local whereMecze =
     local whereMecze =
         "(" ..
         "(" ..
         "(Mecze.nazwa_statystyki1='" ..
         "(Mecze.nazwa_statystyki1='" ..
         team1SQL ..
         team1SQL ..
         "' AND " ..
         "' AND " ..
         "Mecze.nazwa_statystyki2='" ..
         "Mecze.nazwa_statystyki2='" ..
         team2SQL ..
         team2SQL ..
Linia 126: Linia 139:
         team2SQL ..
         team2SQL ..
         "' AND " ..
         "' AND " ..
         "Mecze.nazwa_statystyki2='" ..
         "Mecze.nazwa_statystyki2='" ..
         team1SQL ..
         team1SQL ..
Linia 134: Linia 148:


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


     local whereM =
     local whereM =
         "(" ..
         "(" ..
         "(M.nazwa_statystyki1='" ..
         "(M.nazwa_statystyki1='" ..
         team1SQL ..
         team1SQL ..
         "' AND " ..
         "' AND " ..
         "M.nazwa_statystyki2='" ..
         "M.nazwa_statystyki2='" ..
         team2SQL ..
         team2SQL ..
Linia 155: Linia 167:
         team2SQL ..
         team2SQL ..
         "' AND " ..
         "' AND " ..
         "M.nazwa_statystyki2='" ..
         "M.nazwa_statystyki2='" ..
         team1SQL ..
         team1SQL ..
Linia 168: Linia 181:
     local function wynikDruzyny(row)
     local function wynikDruzyny(row)


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


         if row.ns1 == team1 then
         if row.ns1 == team1 then
Linia 180: Linia 197:


         end
         end


         return nil, nil
         return nil, nil
Linia 187: Linia 205:


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


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


         local tekst =
         local tekst =
Linia 224: Linia 243:
             " – " ..
             " – " ..
             d2
             d2


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


         end
         end


         return tekst
         return tekst
Linia 241: Linia 262:


     -- =====================================================
     -- =====================================================
     -- PARSOWANIE KWARTY / DOGRYWKI
     -- PARSOWANIE KWART / DOGRYWEK
     -- =====================================================
     -- =====================================================


Linia 250: Linia 271:
         end
         end


        local tekst =
            tostring(value)


         local a, b =
         local a, b =
             tekst:match(
             tostring(value):match(
                 "(%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 270: Linia 291:


     -- =====================================================
     -- =====================================================
     -- POBRANIE MECZÓW
     -- MECZE
     -- =====================================================
     -- =====================================================


Linia 304: Linia 325:
             "Mecze.widzowie=widzowie",
             "Mecze.widzowie=widzowie",
             "Mecze.sedziowie=sedziowie",
             "Mecze.sedziowie=sedziowie",
             "Mecze.strona_meczu=strona_meczu"
             "Mecze.strona_meczu=strona_meczu"


Linia 525: Linia 547:
             local b =
             local b =
                 bilans.wszystkie
                 bilans.wszystkie


             b.mecze =
             b.mecze =
Linia 562: Linia 585:
             local bm =
             local bm =
                 bilans[miejsceMeczu]
                 bilans[miejsceMeczu]


             bm.mecze =
             bm.mecze =
Linia 653: Linia 677:


                 aktualnaSeria.wszystkie.P = 0
                 aktualnaSeria.wszystkie.P = 0


                 if aktualnaSeria.wszystkie.W >
                 if aktualnaSeria.wszystkie.W >
Linia 669: Linia 694:


                 aktualnaSeria.wszystkie.W = 0
                 aktualnaSeria.wszystkie.W = 0


                 if aktualnaSeria.wszystkie.P >
                 if aktualnaSeria.wszystkie.P >
Linia 704: Linia 730:


                 s.P = 0
                 s.P = 0


                 if s.W > sr.W then
                 if s.W > sr.W then
Linia 716: Linia 743:


                 s.W = 0
                 s.W = 0


                 if s.P > sr.P then
                 if s.P > sr.P then
Linia 735: Linia 763:


     -- =====================================================
     -- =====================================================
     -- REKORDY INDYWIDUALNE
     -- ZAWODNICY
     -- TYLKO TEAM1
     --
    -- WAŻNA ZMIANA:
    --
    -- Nie filtrujemy:
    -- U.druzyna='Enea Basket Poznań'
    --
    -- Pobieramy wszystkich zawodników z meczów H2H.
    --
    -- Następnie ustalamy stronę na podstawie:
    -- M.nazwa_statystyki1/2
    -- oraz M.druzyna1/2.
    --
    -- Dzięki temu zmiana sponsora nie powoduje utraty
    -- zawodników w historii.
     -- =====================================================
     -- =====================================================


Linia 773: Linia 814:
     }
     }


    -- =====================================================
    -- ZAWODNICY TEAM1
    --
    -- UWAGA:
    -- wszystkie pola Mecze mają alias M.
    -- =====================================================


     local fieldsZawodnicy =
     local fieldsZawodnicy =
Linia 790: Linia 824:
             "U.minuty=minuty",
             "U.minuty=minuty",
             "U.minuty_format=minuty_format",
             "U.minuty_format=minuty_format",
             "U.asysta=asysta",
             "U.asysta=asysta",
             "U.zbiorka=zbiorka",
             "U.zbiorka=zbiorka",
             "U.eval=eval",
             "U.eval=eval",
             "U.plusminus=plusminus",
             "U.plusminus=plusminus",
Linia 816: Linia 852:
         mw.ext.cargo.query(
         mw.ext.cargo.query(
             "UdzialZawodnika=U,Mecze=M",
             "UdzialZawodnika=U,Mecze=M",
             fieldsZawodnicy,
             fieldsZawodnicy,
             {
             {
                 join =
                 join =
Linia 823: Linia 861:
                 where =
                 where =
                     whereM ..
                     whereM ..
                    " AND U.druzyna='" ..
                    team1SQL ..
                    "'" ..
                     " AND U.minuty > 0",
                     " AND U.minuty > 0",


Linia 831: Linia 866:
                     "M.data ASC",
                     "M.data ASC",


                 limit = 10000
                 limit = 20000
             }
             }
         )
         )
Linia 837: Linia 872:


     -- =====================================================
     -- =====================================================
     -- DODAJ REKORD ZAWODNIKA
     -- OKREŚLENIE STRONY ZAWODNIKA
     -- =====================================================
     -- =====================================================


     local function dodajRekordZawodnika(
     local function stronaZawodnika(row)
        tabela,
 
        miejsceMeczu,
         local druzyna =
         wartosc,
            row.druzyna_zawodnika or ""
        item
    )


         local lista =
         local d1 =
             tabela[miejsceMeczu]
             row.druzyna1 or ""


        local d2 =
            row.druzyna2 or ""


        if #lista == 0 then


            item.wartosc =
        -- -----------------------------------------------
                wartosc
        -- Team1 jako pierwsza drużyna
        -- -----------------------------------------------


            table.insert(
        if row.ns1 == team1 then
                lista,
                item
            )


             return
             if druzyna == d1 then
                return "team1"
            end


         end
         end




         local obecna =
         -- -----------------------------------------------
            lista[1].wartosc
        -- Team1 jako druga drużyna
        -- -----------------------------------------------


        if row.ns2 == team1 then


        if wartosc > obecna then
            if druzyna == d2 then
                return "team1"
            end


            item.wartosc =
        end
                wartosc


            tabela[miejsceMeczu] = {
                item
            }


         elseif wartosc == obecna then
         -- -----------------------------------------------
        -- Team2 jako pierwsza drużyna
        -- -----------------------------------------------


            item.wartosc =
        if row.ns1 == team2 then
                wartosc


             table.insert(
             if druzyna == d1 then
                 lista,
                 return "team2"
                item
             end
             )


         end
         end


    end


        -- -----------------------------------------------
        -- Team2 jako druga drużyna
        -- -----------------------------------------------


    if zawodnicy then
        if row.ns2 == team2 then


        for _, row in ipairs(zawodnicy) do
            if druzyna == d2 then
                return "team2"
            end


            local miejsceMeczu =
        end
                miejsce(row)




            if miejsceMeczu then
        return nil


                local item = {
    end


                    zawodnik =
                        row.zawodnik or "",


                    mecz =
    -- =====================================================
                        row.mecz or "",
    -- DODAWANIE REKORDU ZAWODNIKA
    -- =====================================================


                    data =
    local function dodajRekordZawodnika(
                        row.data or "",
        tabela,
        miejsceMeczu,
        wartosc,
        item
    )


                    tekst =
        local lista =
                        nazwaMeczu(row),
            tabela[miejsceMeczu]


                    wynik =
                        row.wynik or "",