Przejdź do zawartości

Moduł:StatystykiHistoryczne: Różnice pomiędzy wersjami

Z Encyklopedia Poznanskiego Sportu
Nie podano opisu zmian
Nie podano opisu zmian
 
(Nie pokazano 6 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 2: Linia 2:


-- =========================================================
-- =========================================================
-- MODUŁ:STATYSTYKIHISTORYCZNE
-- MODUŁ: STATYSTYKIHISTORYCZNE
--
--
-- Łączne statystyki zawodników ze wszystkich
-- Łączne statystyki zawodników ze wszystkich
Linia 24: Linia 24:
-- }}
-- }}
--
--
-- Zawodnicy występujący w sezonie_biezacy są
-- Zawodnicy występujący w wybranym sezonie
-- wyróżniani pogrubieniem.
-- wyróżniani pogrubieniem.
-- =========================================================
-- =========================================================


Linia 85: Linia 85:


     -- =====================================================
     -- =====================================================
     -- POBRANIE DANYCH Z CARGO
    -- FUNKCJA LICZBOWA
    -- =====================================================
 
    local function liczba(value)
 
        return
            tonumber(value or 0)
            or 0
 
    end
 
 
    -- =====================================================
    -- USTALENIE SEZONU WYRÓŻNIENIA
    -- =====================================================
 
    local sezonWyroznienia = ""
    local znalezionoBiezacy = false
 
 
    -- -----------------------------------------------------
    -- Najpierw sprawdzamy sezon podany przez użytkownika
    -- -----------------------------------------------------
 
    if sezonSQL ~= "" then
 
        local sprawdzenieSezonu =
            mw.ext.cargo.query(
                "UdzialZawodnika,Mecze",
 
                "UdzialZawodnika.zawodnik=zawodnik",
 
                {
                    join =
                        "UdzialZawodnika.mecz=Mecze.id",
 
                    where =
                        "UdzialZawodnika.druzyna='"
                        .. druzynaSQL
                        .. "'"
                        .. " AND Mecze.sezon='"
                        .. sezonSQL
                        .. "'"
                        .. " AND UdzialZawodnika.minuty > 0",
 
                    groupBy =
                        "UdzialZawodnika.zawodnik",
 
                    limit = 5000
                }
            )
 
 
        if sprawdzenieSezonu
            and #sprawdzenieSezonu > 0 then
 
            sezonWyroznienia = sezonBiezacy
            znalezionoBiezacy = true
 
        end
 
    end
 
 
    -- =====================================================
    -- JEŻELI NIE MA DANYCH DLA PODANEGO SEZONU
    -- SZUKAMY OSTATNIEGO SEZONU
    -- =====================================================
 
    if not znalezionoBiezacy then
 
        local sezony =
            mw.ext.cargo.query(
                "UdzialZawodnika,Mecze",
 
                "Mecze.sezon=sezon",
 
                {
                    join =
                        "UdzialZawodnika.mecz=Mecze.id",
 
                    where =
                        "UdzialZawodnika.druzyna='"
                        .. druzynaSQL
                        .. "'"
                        .. " AND UdzialZawodnika.minuty > 0",
 
                    groupBy =
                        "Mecze.sezon",
 
                    orderBy =
                        "Mecze.sezon DESC",
 
                    limit = 100
                }
            )
 
 
        if sezony and #sezony > 0 then
 
            sezonWyroznienia =
                mw.text.trim(
                    sezony[1].sezon or ""
                )
 
        end
 
    end
 
 
    -- =====================================================
     -- POBRANIE ŁĄCZNYCH DANYCH STATYSTYCZNYCH
     -- =====================================================
     -- =====================================================


Linia 111: Linia 222:
     -- =====================================================
     -- =====================================================


    local where =
local where =
        "UdzialZawodnika.druzyna='"
    "UdzialZawodnika.druzyna='"
        .. druzynaSQL
    .. druzynaSQL
        .. "'"
    .. "'"
    .. " AND UdzialZawodnika.minuty > 0"




Linia 132: Linia 244:


                 limit = 5000
                 limit = 5000
             }
             }
         )
         )
Linia 152: Linia 263:


     -- =====================================================
     -- =====================================================
     -- FUNKCJA LICZBOWA
     -- AKTUALNI ZAWODNICY
     -- =====================================================
     -- =====================================================


     local function liczba(value)
     local aktualni = {}


        return
            tonumber(value or 0)
            or 0


     end
     if sezonWyroznienia ~= "" then


        local sezonAktualnySQL =
            mw.ustring.gsub(
                sezonWyroznienia,
                "'",
                "''"
            )


    -- =====================================================
    -- SPRAWDZENIE AKTUALNYCH ZAWODNIKÓW
    --
    -- Zawodnik jest uznawany za obecnego, jeżeli ma
    -- przynajmniej jeden występ w podanym sezonie.
    -- =====================================================
    local aktualni = {}
    if sezonSQL ~= "" then


         local currentRows =
         local currentRows =
Linia 191: Linia 294:
                         .. "'"
                         .. "'"
                         .. " AND Mecze.sezon='"
                         .. " AND Mecze.sezon='"
                         .. sezonSQL
                         .. sezonAktualnySQL
                         .. "'"
                         .. "'"
                         .. " AND UdzialZawodnika.minuty > 0",
                         .. " AND UdzialZawodnika.minuty > 0",
Linia 199: Linia 302:


                     limit = 5000
                     limit = 5000
                 }
                 }
             )
             )
Linia 256: Linia 358:
                         liczba(row.punkty),
                         liczba(row.punkty),


                    -- Cargo przechowuje minuty jako SEKUNDY
                     minuty =
                     minuty =
                         liczba(row.minuty),
                         liczba(row.minuty),
Linia 281: Linia 384:
     -- =====================================================
     -- =====================================================
     -- FORMATOWANIE MINUT
     -- FORMATOWANIE MINUT
    --
    -- WAŻNE:
    -- Pole UdzialZawodnika.minuty jest zapisane w SEKUNDACH.
    --
    -- Przykład:
    -- 103775 sekund = 1729 minut 35 sekund
    --
    -- Wynik:
    -- 1729:35
     -- =====================================================
     -- =====================================================


     local function formatujMinuty(minuty)
     local function formatujMinuty(sekundy)
 
        local wartosc =
            tonumber(sekundy or 0)
            or 0
 


         minuty =
         wartosc =
             math.floor(
             math.floor(
                 tonumber(minuty or 0)
                 wartosc + 0.5
                or 0
             )
             )


         local godziny =
 
         local caleMinuty =
             math.floor(
             math.floor(
                 minuty / 60
                 wartosc / 60
             )
             )




         local min =
         local pozostaleSekundy =
             minuty % 60
             wartosc % 60




         return string.format(
         return string.format(
             "%d:%02d",
             "%d:%02d",
             godziny,
             caleMinuty,
             min
             pozostaleSekundy
         )
         )


Linia 328: Linia 445:




         -- -----------------------------------------------
         -- -------------------------------------------------
         -- WYRÓŻNIENIE AKTUALNEGO ZAWODNIKA
         -- AKTUALNY ZAWODNIK = POGRUBIENIE
         -- -----------------------------------------------
         -- -------------------------------------------------


         if row.aktualny then
         if row.aktualny then
Linia 442: Linia 559:
             nazwa = "MECZE",
             nazwa = "MECZE",
             pole = "mecze",
             pole = "mecze",
             format = function(v)
             format = function(v)


Linia 453: Linia 571:
             nazwa = "PUNKTY",
             nazwa = "PUNKTY",
             pole = "punkty",
             pole = "punkty",
             format = function(v)
             format = function(v)


Linia 464: Linia 583:
             nazwa = "MINUTY",
             nazwa = "MINUTY",
             pole = "minuty",
             pole = "minuty",
             format = function(v)
             format = function(v)


Linia 475: Linia 595:
             nazwa = "ASYSTY",
             nazwa = "ASYSTY",
             pole = "asysty",
             pole = "asysty",
             format = function(v)
             format = function(v)


Linia 486: Linia 607:
             nazwa = "ZBIÓRKI",
             nazwa = "ZBIÓRKI",
             pole = "zbiorki",
             pole = "zbiorki",
             format = function(v)
             format = function(v)


Linia 497: Linia 619:
             nazwa = "BLOKI",
             nazwa = "BLOKI",
             pole = "bloki",
             pole = "bloki",
             format = function(v)
             format = function(v)


Linia 537: Linia 660:




         -- -----------------------------------------------
         -- -------------------------------------------------
         -- TABELA
         -- TABELA
         -- -----------------------------------------------
         -- -------------------------------------------------


         table.insert(
         table.insert(
Linia 547: Linia 670:




         -- -----------------------------------------------
         -- -------------------------------------------------
         -- NAGŁÓWEK
         -- NAGŁÓWEK
         -- -----------------------------------------------
         -- -------------------------------------------------


         table.insert(
         table.insert(
Linia 574: Linia 697:
             wynik,
             wynik,
             "! "
             "! "
             .. mw.ustring.upper(
             .. definicja.nazwa
                mw.text.lower(
                    definicja.nazwa
                )
            )
         )
         )




         -- -----------------------------------------------
         -- -------------------------------------------------
         -- WIERSZE
         -- WIERSZE
         -- -----------------------------------------------
         -- -------------------------------------------------


         for i, zawodnik in ipairs(lista) do
         for i, zawodnik in ipairs(lista) do
Linia 666: Linia 785:


     -- =====================================================
     -- =====================================================
     -- INFORMACJA O WYRÓŻNIENIU
     -- INFORMACJA O AKTUALNYCH ZAWODNIKACH
     -- =====================================================
     -- =====================================================


     if sezonBiezacy ~= "" then
     if sezonWyroznienia ~= "" then


         table.insert(
         table.insert(
             wynik,
             wynik,
             "'''''"
             "'''''Pogrubieniem wyróżniono zawodników "
            .. "Pogrubieniem wyróżniono zawodników "
             .. "występujących w sezonie "
             .. "występujących w sezonie "
             .. sezonBiezacy
             .. sezonWyroznienia
             .. "."
             .. ".'''''"
            .. "'''''"
         )
         )


Linia 685: Linia 802:
             wynik,
             wynik,
             ""
             ""
         )
         )


Linia 692: Linia 810:
     -- =====================================================
     -- =====================================================
     -- UKŁAD 3 KOLUMNY
     -- UKŁAD 3 KOLUMNY
    --
    -- WAŻNE:
    -- Każda tabela zaczyna się od początku linii.
    -- Dzięki temu MediaWiki poprawnie rozpoznaje
    -- składnię {| ... |}.
     -- =====================================================
     -- =====================================================


     table.insert(
     table.insert(
         wynik,
         wynik,
         '<div style="display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; align-items:start;">'
         '<div style="display:flex; flex-wrap:wrap; gap:12px; align-items:flex-start;">'
     )
     )


Linia 706: Linia 829:
     table.insert(
     table.insert(
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">'
         .. zbudujTabele(
    )
 
    table.insert(
        wynik,
         zbudujTabele(
             tabele[1]
             tabele[1]
         )
         )
         .. "</div>"
    )
 
    table.insert(
        wynik,
         "</div>"
     )
     )


Linia 720: Linia 851:
     table.insert(
     table.insert(
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">'
         .. zbudujTabele(
    )
 
    table.insert(
        wynik,
         zbudujTabele(
             tabele[2]
             tabele[2]
         )
         )
         .. "</div>"
    )
 
    table.insert(
        wynik,
         "</div>"
     )
     )


Linia 734: Linia 873:
     table.insert(
     table.insert(
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">'
         .. zbudujTabele(
    )
 
    table.insert(
        wynik,
         zbudujTabele(
             tabele[3]
             tabele[3]
         )
         )
         .. "</div>"
    )
 
    table.insert(
        wynik,
         "</div>"
     )
     )


Linia 748: Linia 895:
     table.insert(
     table.insert(
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="flex:1 1 calc(33.333% - 12px); min-width:280px;">'
         .. zbudujTabele(
    )