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
--
--
-- Identyfikacja drużyn odbywa się przez:
-- IDENTYFIKACJA RYWALIZACJI:
-- nazwa_statystyki1 / nazwa_statystyki2
-- nazwa_statystyki1 / nazwa_statystyki2
--
--
-- Dzięki temu zmiana nazwy sponsorskiej nie rozbija H2H.
-- Dzięki temu zmiana nazwy sponsorskiej drużyny
-- nie rozbija historii H2H.
--
--
-- ZAWARTOŚĆ:
-- ZAWIERA:
-- 1. Bilans ogółem / dom / wyjazd
-- 1. Bilans ogółem / dom / wyjazd
-- 2. Trenerzy team1 w rywalizacji
-- 2. Trenerów team1
-- 3. Najlepsi strzelcy 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 i porażek
-- 6. Analiza kwart
-- 6. Analizę kwart
-- 7. Wszystkie mecze
-- 7. Rekordy meczowe
-- 8. Dogrywka 1 / 2 / 3
-- 8. Wszystkie mecze
-- 9. Dogrywkę 1, 2 i 3
-- =========================================================
-- =========================================================


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


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




Linia 46: Linia 37:
         return "'''Błąd:''' nie podano team1."
         return "'''Błąd:''' nie podano team1."
     end
     end


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


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


         return mw.ustring.gsub(
         return mw.ustring.gsub(
Linia 67: Linia 61:




     local team1SQL =
     local team1SQL = sql(team1)
        sql(team1)
     local team2SQL = sql(team2)
 
     local team2SQL =
        sql(team2)




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


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


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


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


         return tonumber(value) or 0
 
         local liczbaValue =
            tonumber(tekst)
 
 
        if liczbaValue == nil then
            return 0
        end
 
 
        return liczbaValue


     end
     end




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


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


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


         return mw.ustring.gsub(
         return mw.ustring.gsub(
             wynik,
             tekst,
             "%.",
             "%.",
             ","
             ","
Linia 121: Linia 138:


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


Linia 150: Linia 167:


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


Linia 158: Linia 175:
             return "dom"
             return "dom"
         end
         end


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


         return nil
         return nil
Linia 179: Linia 198:
         local d2 =
         local d2 =
             row.druzyna2 or ""
             row.druzyna2 or ""
        local strona =
            row.strona_meczu or ""


         local tekst =
         local tekst =
Linia 188: Linia 203:
             " – " ..
             " – " ..
             d2
             d2
        local strona =
            row.strona_meczu or ""




Linia 213: Linia 232:
     local function parseWynikCzesciowy(value)
     local function parseWynikCzesciowy(value)


         if value == nil or value == "" then
         if value == nil then
             return nil, nil
             return nil, nil
         end
         end
Linia 220: Linia 239:
         local tekst =
         local tekst =
             tostring(value)
             tostring(value)
        if tekst == "" then
            return nil, nil
        end




Linia 242: Linia 266:
     -- =====================================================
     -- =====================================================
     -- POBRANIE MECZÓW
     -- POBRANIE MECZÓW
    --
    -- UWAGA:
    -- używamy KWARTA1 itd.,
    -- a nie kwart1.
     -- =====================================================
     -- =====================================================


Linia 279: Linia 307:


         }, ",")
         }, ",")
    local whereMecze =
        "(" ..
        "(Mecze.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..
        " OR " ..
        "(Mecze.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
        ")"




Linia 286: Linia 336:
             fieldsMecze,
             fieldsMecze,
             {
             {
 
                 where = whereMecze,
                 where =
                    "(" ..
 
                    "(" ..
                    "Mecze.nazwa_statystyki1='" ..
                    team1SQL ..
                    "' AND " ..
                    "Mecze.nazwa_statystyki2='" ..
                    team2SQL ..
                    "')" ..
 
                    " OR " ..
 
                    "(" ..
                    "Mecze.nazwa_statystyki1='" ..
                    team2SQL ..
                    "' AND " ..
                    "Mecze.nazwa_statystyki2='" ..
                    team1SQL ..
                    "')" ..
 
                    ")",


                 orderBy =
                 orderBy =
Linia 314: Linia 342:


                 limit = 5000
                 limit = 5000
             }
             }
         )
         )




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


         return
         return
Linia 479: Linia 507:
     -- =====================================================
     -- =====================================================


     for _, row
     for _, row in ipairs(mecze) do
        in ipairs(mecze) do
 


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


Linia 516: Linia 541:


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


Linia 582: Linia 607:


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


Linia 600: Linia 625:


                 data =
                 data =
                     row.data or "",
                     row.data or ""
 
                miejsce =
                    miejsceMeczu


             }
             }
Linia 609: Linia 631:


             local roznica =
             local roznica =
                 zdobyte - stracone
                 zdobyte -
                stracone




Linia 615: Linia 638:


                 dodajRekordMeczowy(
                 dodajRekordMeczowy(
                     rekordyMeczowe.zwyciestwo[
                     rekordyMeczowe.zwyciestwo[miejsceMeczu],
                        miejsceMeczu
                    ],
                     roznica,
                     roznica,
                     item
                     item
                 )
                 )


             elseif roznica < 0 then
             elseif roznica < 0 then


                 dodajRekordMeczowy(
                 dodajRekordMeczowy(
                     rekordyMeczowe.porazka[
                     rekordyMeczowe.porazka[miejsceMeczu],
                        miejsceMeczu
                    ],
                     math.abs(roznica),
                     math.abs(roznica),
                     item
                     item
Linia 648: Linia 668:




                 if aktualnaSeria.wszystkie.W >
                 if
                     serie.wszystkie.W then
                    aktualnaSeria.wszystkie.W >
                     serie.wszystkie.W
                then


                     serie.wszystkie.W =
                     serie.wszystkie.W =
Linia 666: Linia 688:




                 if aktualnaSeria.wszystkie.P >
                 if
                     serie.wszystkie.P then
                    aktualnaSeria.wszystkie.P >
                     serie.wszystkie.P
                then


                     serie.wszystkie.P =
                     serie.wszystkie.P =
Linia 673: Linia 697:


                 end
                 end
            else
                aktualnaSeria.wszystkie.W =
                    0
                aktualnaSeria.wszystkie.P =
                    0


             end
             end
Linia 692: Linia 707:
             local s =
             local s =
                 aktualnaSeria[miejsceMeczu]
                 aktualnaSeria[miejsceMeczu]


             local sr =
             local sr =
Linia 723: Linia 739:
                     sr.P = s.P
                     sr.P = s.P
                 end
                 end
            else
                s.W =
                    0
                s.P =
                    0


             end
             end
Linia 741: Linia 748:


     -- =====================================================
     -- =====================================================
     -- REKORDY INDYWIDUALNE
     -- REKORDY INDYWIDUALNE TEAM1
    --
    -- TYLKO TEAM1
     -- =====================================================
     -- =====================================================


Linia 782: Linia 787:


     -- =====================================================
     -- =====================================================
     -- ZAWODNICY TEAM1
     -- ZAWODNICY
    --
    -- Pobieramy zawodników obu drużyn.
    -- Nie zakładamy, że U.druzyna = team1/team2,
    -- bo nazwa sponsora mogła się zmienić.
     -- =====================================================
     -- =====================================================


Linia 794: Linia 803:
             "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",
Linia 819: Linia 829:
     local zawodnicy =
     local zawodnicy =
         mw.ext.cargo.query(
         mw.ext.cargo.query(
             "UdzialZawodnika=U,Mecze=M",
             "UdzialZawodnika=U,Mecze=M",
             fieldsZawodnicy,
             fieldsZawodnicy,
             {
             {


Linia 827: Linia 840:


                 where =
                 where =
                     "(" ..
                     whereMecze ..
 
                    "(" ..
                    "M.nazwa_statystyki1='" ..
                    team1SQL ..
                    "' AND " ..
                    "M.nazwa_statystyki2='" ..
                    team2SQL ..
                    "')" ..
 
                    " OR " ..
 
                    "(" ..
                    "M.nazwa_statystyki1='" ..
                    team2SQL ..
                    "' AND " ..
                    "M.nazwa_statystyki2='" ..
                    team1SQL ..
                    "')" ..
 
                    ")" ..
 
                    " AND U.druzyna='" ..