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 nazwa_statystyki1 / nazwa_statystyki2,
-- Wykorzystuje nazwa_statystyki1 / nazwa_statystyki2.
-- dzięki czemu zmiana nazwy sponsorskiej nie rozbija H2H.
--
--
-- Zawiera:
-- Zawiera:
Linia 43: Linia 42:


     local function sql(value)
     local function sql(value)
        value = tostring(value or "")
         return mw.ustring.gsub(value, "'", "''")
         return mw.ustring.gsub(value, "'", "''")
     end
     end
Linia 54: Linia 54:
     -- =====================================================
     -- =====================================================


    -- WAŻNE:
    -- Nie wolno robić:
    --
    -- tonumber(mw.ustring.gsub(...))
    --
    -- ponieważ gsub zwraca dwie wartości.
    -- Druga wartość może zostać potraktowana
    -- przez tonumber jako podstawa systemu liczbowego.
    --
     local function liczba(value)
     local function liczba(value)


Linia 60: Linia 69:
         end
         end


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


     end
     end
Linia 77: Linia 88:
         end
         end


         return string.format(
         local wartosc =
            "%.1f%%",
             (wygrane / mecze) * 100
             (wygrane / mecze) * 100
         ):gsub("%.", ",")
 
         local tekst =
            string.format(
                "%.1f",
                wartosc
            )
 
        tekst =
            mw.ustring.gsub(
                tekst,
                "%.",
                ","
            )
 
        return tekst .. "%"


     end
     end


    -- =====================================================
    -- WYNIK TEAM1
    -- =====================================================


     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 104: Linia 135:
     end
     end


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


     local function miejsce(row)
     local function miejsce(row)
Linia 119: Linia 154:
     end
     end


    -- =====================================================
    -- NAZWA MECZU
    -- =====================================================


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


         local d1 = row.druzyna1 or ""
         local d1 =
         local d2 = row.druzyna2 or ""
            row.druzyna1 or ""
 
         local d2 =
            row.druzyna2 or ""


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


         local tekst =
         local tekst =
Linia 144: Linia 187:
     end
     end


    -- =====================================================
    -- PARSOWANIE WYNIKU KWARTY
    -- =====================================================


     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
        local tekst =
            tostring(value)


         local a, b =
         local a, b =
             tostring(value):match(
             tekst:match(
                 "(%d+)%s*:%s*(%d+)"
                 "(%d+)%s*:%s*(%d+)"
             )
             )
Linia 160: Linia 210:
         end
         end


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


     end
     end
Linia 210: Linia 262:
             {
             {
                 where =
                 where =
                    "(" ..
                     "(" ..
                     "(" ..
                     "Mecze.nazwa_statystyki1='" ..
                     "Mecze.nazwa_statystyki1='" ..
Linia 216: Linia 270:
                     "Mecze.nazwa_statystyki2='" ..
                     "Mecze.nazwa_statystyki2='" ..
                     team2SQL ..
                     team2SQL ..
                     "')" ..
                     ")" ..
                     " OR (" ..
 
                     " OR " ..
 
                    "(" ..
                     "Mecze.nazwa_statystyki1='" ..
                     "Mecze.nazwa_statystyki1='" ..
                     team2SQL ..
                     team2SQL ..
Linia 223: Linia 280:
                     "Mecze.nazwa_statystyki2='" ..
                     "Mecze.nazwa_statystyki2='" ..
                     team1SQL ..
                     team1SQL ..
                     "')",
                     ")" ..
 
                    ")",


                 orderBy =
                 orderBy =
Linia 344: Linia 403:
         lista,
         lista,
         roznica,
         roznica,
         item,
         item
        typ
     )
     )


         if #lista == 0 then
         if #lista == 0 then


             item.wartosc = roznica
             item.wartosc =
                roznica


             table.insert(
             table.insert(
Linia 368: Linia 427:
         if roznica > obecna then
         if roznica > obecna then


             item.wartosc = roznica
             item.wartosc =
                roznica


             lista[1] = item
             lista[1] =
                item


         elseif roznica == obecna then
         elseif roznica == obecna then


             item.wartosc = roznica
             item.wartosc =
                roznica


             table.insert(
             table.insert(
Linia 398: Linia 460:
             miejsce(row)
             miejsce(row)


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


             local wynikMeczu
             local wynikMeczu


             if zdobyte > stracone then
             if zdobyte > stracone then
                 wynikMeczu = "W"
                 wynikMeczu = "W"
             elseif zdobyte < stracone then
             elseif zdobyte < stracone then
                 wynikMeczu = "P"
                 wynikMeczu = "P"
             else
             else
                 wynikMeczu = "R"
                 wynikMeczu = "R"
             end
             end




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


             bilans.wszystkie.mecze =
             local b =
                 bilans.wszystkie.mecze + 1
                 bilans.wszystkie


             bilans.wszystkie.punktyZdobyte =
             b.mecze =
                 bilans.wszystkie.punktyZdobyte +
                 b.mecze + 1
                zdobyte


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


Linia 429: Linia 503:
             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 441: Linia 515:


             -- =============================================
             -- =============================================
             -- BILANS DOM / WYJAZD
             -- DOM / WYJAZD
             -- =============================================
             -- =============================================


             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


             b.punktyStracone =
             bd.punktyStracone =
                 b.punktyStracone +
                 bd.punktyStracone +
                 stracone
                 stracone


Linia 461: Linia 535:
             if wynikMeczu == "W" then
             if wynikMeczu == "W" then


                 b.wygrane =
                 bd.wygrane =
                     b.wygrane + 1
                     bd.wygrane + 1


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


                 b.przegrane =
                 bd.przegrane =
                     b.przegrane + 1
                     bd.przegrane + 1


             end
             end
Linia 512: Linia 586:


             elseif roznica < 0 then
             elseif roznica < 0 then
                local porazka =
                    math.abs(roznica)


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


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


             end
             end
Linia 594: Linia 670:
                     sr.P = s.P
                     sr.P = s.P
                 end
                 end
            else
                s.W = 0
                s.P = 0


             end
             end
Linia 603: Linia 684:


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


Linia 641: Linia 721:
     }
     }


    -- =====================================================
    -- ZAWODNICY TEAM1
    -- =====================================================


     local fieldsZawodnicy = table.concat({
     local fieldsZawodnicy = table.concat({
Linia 683: Linia 767:
                 where =
                 where =
                     "(" ..
                     "(" ..
                     "(M.nazwa_statystyki1='" ..
 
                     "(" ..
                    "M.nazwa_statystyki1='" ..
                     team1SQL ..
                     team1SQL ..
                     "' AND " ..
                     "' AND " ..
                     "M.nazwa_statystyki2='" ..
                     "M.nazwa_statystyki2='" ..
                     team2SQL ..
                     team2SQL ..
                     "')" ..
                     ")" ..


                     " OR " ..
                     " OR " ..


                     "(M.nazwa_statystyki1='" ..
                     "(" ..
                    "M.nazwa_statystyki1='" ..
                     team2SQL ..
                     team2SQL ..
                     "' AND " ..
                     "' AND " ..
                     "M.nazwa_statystyki2='" ..
                     "M.nazwa_statystyki2='" ..
                     team1SQL ..
                     team1SQL ..
                     "')" ..
                     ")" ..


                     ")" ..
                     ")" ..
Linia 728: Linia 815:
         local lista =
         local lista =
             tabela[miejsceMeczu]
             tabela[miejsceMeczu]


         if #lista == 0 then
         if #lista == 0 then
Linia 778: Linia 866:
             local miejsceMeczu =
             local miejsceMeczu =
                 miejsce(row)
                 miejsce(row)


             if miejsceMeczu then
             if miejsceMeczu then
Linia 873: Linia 962:
     -- =====================================================
     -- =====================================================
     -- NAJLEPSI STRZELCY RYWALIZACJI
     -- NAJLEPSI STRZELCY RYWALIZACJI
    -- OBU DRUŻYN
     -- =====================================================
     -- =====================================================


     local strzelcy = {
     local strzelcy = {
         [team1] = {},
         [team1] = {},
         [team2] = {}
         [team2] = {}
     }
     }


    -- TEAM1


     if zawodnicy then
     if zawodnicy then
Linia 889: Linia 981:
                 row.druzyna_zawodnika or ""
                 row.druzyna_zawodnika or ""


            -- zawodnicy team1 już są pobrani powyżej
             if druzyna == team1 then
             if druzyna == team1 then


                 strzelcy[team1][
                 strzelcy[team1][row.zawodnik] =
                    row.zawodnik
                ] =
                     (
                     (
                         strzelcy[team1][
                         strzelcy[team1][row.zawodnik]
                            row.zawodnik
                         or 0
                         ] or 0
                     )
                     )
                     +
                     +
Linia 910: Linia 998:




     -- Drugi zespół osobnym zapytaniem
     -- TEAM2


     local zawodnicy2 =
     local zawodnicy2 =
         mw.ext.cargo.query(
         mw.ext.cargo.query(
             "UdzialZawodnika=U,Mecze=M",
             "UdzialZawodnika=U,Mecze=M",
             "U.zawodnik=zawodnik,U.druzyna=druzyna,U.gol=gol",
 
             "U.zawodnik=zawodnik," ..
            "U.druzyna=druzyna," ..
            "U.gol=gol",
 
             {
             {
                 join =
                 join =
Linia 922: Linia 1014:
                 where =
                 where =
                     "(" ..
                     "(" ..
                     "(M.nazwa_statystyki1='" ..
 
                     "(" ..