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 4 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 nie rozbija H2H.
-- Zawiera:
--
-- 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 / 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
-- =========================================================
-- =========================================================


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


     local team1 =
     -- =====================================================
        mw.text.trim(
    -- PARAMETRY
            frame.args.team1 or ""
     -- =====================================================
        )
 
     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 "")


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


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


Linia 69: Linia 62:


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


Linia 78: Linia 71:
         end
         end


         value =
         local tekst =
             mw.ustring.gsub(
             mw.ustring.gsub(
                 tostring(value),
                 tostring(value),
Linia 85: Linia 78:
             )
             )


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


     end
     end




    -- =====================================================
     local function procent(wygrane, mecze)
    -- PROCENT
    -- =====================================================
 
     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 118: Linia 101:


     -- =====================================================
     -- =====================================================
     -- WARUNEK H2H DLA TABELI MECZE
     -- IDENTYFIKACJA STRONY TEAM1
    --
    -- Tutaj NIE MA ALIASU.
     -- =====================================================
     -- =====================================================


     local whereMecze =
     local function miejsce(row)
        "(" ..
 
        if row.ns1 == team1 then
            return "dom"
        end


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


         "Mecze.nazwa_statystyki2='" ..
         return nil
        team2SQL ..
        "')" ..


        " OR " ..
    end
 
        "(Mecze.nazwa_statystyki1='" ..
        team2SQL ..
        "' AND " ..
 
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..
 
        ")"




     -- =====================================================
     -- =====================================================
     -- WARUNEK H2H DLA ZAPYTAŃ Z ALIASEM M
     -- WYNIK TEAM1
     -- =====================================================
     -- =====================================================


     local whereM =
     local function wynikDruzyny(row)
        "(" ..


         "(M.nazwa_statystyki1='" ..
         local g1 =
        team1SQL ..
            liczba(row.gole1)
        "' AND " ..


         "M.nazwa_statystyki2='" ..
         local g2 =
        team2SQL ..
            liczba(row.gole2)
        "')" ..


        " OR " ..


         "(M.nazwa_statystyki1='" ..
         if row.ns1 == team1 then
        team2SQL ..
        "' AND " ..


        "M.nazwa_statystyki2='" ..
            return g1, g2
        team1SQL ..
        "')" ..


         ")"
         elseif row.ns2 == team1 then
 
            return g2, g1
 
        end
 
        return nil, nil
 
    end




     -- =====================================================
     -- =====================================================
     -- WYNIK DRUŻYNY
     -- NAZWA MECZU
     -- =====================================================
     -- =====================================================


     local function wynikDruzyny(row)
     local function nazwaMeczu(row)
 
        local d1 =
            row.druzyna1 or ""


         local g1 =
         local d2 =
             liczba(row.gole1)
             row.druzyna2 or ""


         local g2 =
         local strona =
             liczba(row.gole2)
             row.strona_meczu or ""




         if row.ns1 == team1 then
         local tekst =
            d1 .. " – " .. d2


            return g1, g2


         elseif row.ns2 == team1 then
         if strona ~= "" then


             return g2, g1
             return "[[" ..
                strona ..
                "|" ..
                tekst ..
                "]]"


         end
         end




         return nil, nil
         return tekst


     end
     end
Linia 205: Linia 184:


     -- =====================================================
     -- =====================================================
     -- MIEJSCE TEAM1
     -- PARSOWANIE CZĘŚCI WYNIKU
     -- =====================================================
     -- =====================================================


     local function miejsce(row)
     local function parseWynikCzesciowy(value)


         if row.ns1 == team1 then
         if value == nil or value == "" then
             return "dom"
             return nil, nil
         end
         end


         if row.ns2 == team1 then
         local tekst =
             return "wyjazd"
            tostring(value)
 
        local a, b =
            tekst:match(
                "(%d+)%s*:%s*(%d+)"
            )
 
        if not a or not b then
             return nil, nil
         end
         end


         return nil
         return
            tonumber(a),
            tonumber(b)


     end
     end
Linia 224: Linia 213:


     -- =====================================================
     -- =====================================================
     -- NAZWA MECZU
     -- WARUNEK H2H
     -- =====================================================
     -- =====================================================


     local function nazwaMeczu(row)
     local whereH2H =
        "(" ..
        "(Mecze.nazwa_statystyki1='" ..
        team1SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team2SQL ..
        "')" ..


         local d1 =
         " OR " ..
            row.druzyna1 or ""


         local d2 =
         "(Mecze.nazwa_statystyki1='" ..
            row.druzyna2 or ""
        team2SQL ..
        "' AND " ..
        "Mecze.nazwa_statystyki2='" ..
        team1SQL ..
        "')" ..


         local strona =
         ")"
            row.strona_meczu or ""




        local tekst =
    -- =====================================================
            d1 ..
    -- POBRANIE MECZÓW
            " – " ..
    --
            d2
    -- UWAGA:
    -- pola nazywają się KWARTA1, KWARTA2 itd.
    -- a nie KWART1.
    -- =====================================================


    local fieldsMecze = table.concat({


         if strona ~= "" then
         "Mecze.id=mecz",


            return "[[" ..
        "Mecze.data=data",
                strona ..
        "Mecze.sezon=sezon",
                "|" ..
                tekst ..
                "]]"


         end
         "Mecze.druzyna1=druzyna1",
        "Mecze.druzyna2=druzyna2",


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


         return tekst
         "Mecze.gole1=gole1",
        "Mecze.gole2=gole2",


    end
        "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",
    -- PARSOWANIE KWART / DOGRYWEK
        "Mecze.dogrywka2=dogrywka2",
    -- =====================================================
        "Mecze.dogrywka3=dogrywka3",


    local function parseWynikCzesciowy(value)
        "Mecze.hala=hala",
        "Mecze.widzowie=widzowie",
        "Mecze.sedziowie=sedziowie",
        "Mecze.strona_meczu=strona_meczu"


        if not value or value == "" then
    }, ",")
            return nil, nil
        end




        local a, b =
    local mecze =
            tostring(value):match(
        mw.ext.cargo.query(
                "(%d+)%s*:%s*(%d+)"
            "Mecze",
             )
             fieldsMecze,
            {
                where = whereH2H,
 
                orderBy =
                    "Mecze.data ASC",


                limit = 5000
            }
        )


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


    if not mecze or #mecze == 0 then


         return
         return
             tonumber(a),
             "'''Brak meczów pomiędzy ''" ..
             tonumber(b)
            team1 ..
            "'' a ''" ..
            team2 ..
             "''.'''"


     end
     end
Linia 291: Linia 309:


     -- =====================================================
     -- =====================================================
     -- MECZE
     -- BILANS
     -- =====================================================
     -- =====================================================


     local fieldsMecze =
     local bilans = {
        table.concat({


            "Mecze.id=mecz",
        wszystkie = {
            "Mecze.data=data",
             mecze = 0,
            "Mecze.sezon=sezon",
             wygrane = 0,
 
             przegrane = 0,
             "Mecze.druzyna1=druzyna1",
             punktyZdobyte = 0,
             "Mecze.druzyna2=druzyna2",
             punktyStracone = 0
 
        },
             "Mecze.nazwa_statystyki1=ns1",
             "Mecze.nazwa_statystyki2=ns2",
 
             "Mecze.gole1=gole1",
            "Mecze.gole2=gole2",


             "Mecze.wynik=wynik",
        dom = {
             "Mecze.wynik_do_przerwy=wynik_do_przerwy",
            mecze = 0,
             wygrane = 0,
             przegrane = 0,
            punktyZdobyte = 0,
            punktyStracone = 0
        },


             "Mecze.kwarta1=kwarta1",
        wyjazd = {
             "Mecze.kwarta2=kwarta2",
             mecze = 0,
             "Mecze.kwarta3=kwarta3",
             wygrane = 0,
             "Mecze.kwarta4=kwarta4",
             przegrane = 0,
             punktyZdobyte = 0,
            punktyStracone = 0
        }


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