Przejdź do zawartości

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

Z Encyklopedia Poznanskiego Sportu
<
Nie podano opisu zmian
Nie podano opisu zmian
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 OSTATNIEGO SEZONU
    --
    -- Jeżeli podany sezon istnieje i ma występy,
    -- zostaje użyty.
    --
    -- Jeżeli nie ma w nim danych, szukamy ostatniego
    -- sezonu, w którym drużyna ma zawodników z minutami > 0.
    -- =====================================================
 
    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 151: Linia 268:


     -- =====================================================
     -- =====================================================
     -- FUNKCJA LICZBOWA
     -- AKTUALNI ZAWODNICY
    --
    -- Zawodnik jest aktualny, jeżeli ma przynajmniej
    -- jeden występ z minutami > 0 w sezonie wybranym
    -- do wyróżnienia.
     -- =====================================================
     -- =====================================================


     local function liczba(value)
     local aktualni = {}


        return
            tonumber(value or 0)
            or 0


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


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


    if sezonSQL ~= "" then


         local currentRows =
         local currentRows =
Linia 190: Linia 303:
                         .. "'"
                         .. "'"
                         .. " AND Mecze.sezon='"
                         .. " AND Mecze.sezon='"
                         .. sezonSQL
                         .. sezonAktualnySQL
                         .. "'"
                         .. "'"
                         .. " AND UdzialZawodnika.minuty > 0",
                         .. " AND UdzialZawodnika.minuty > 0",
Linia 280: Linia 393:
     -- FORMATOWANIE MINUT
     -- FORMATOWANIE MINUT
     --
     --
     -- Wartość Cargo jest traktowana jako liczba sekund.
     -- Wynik:
     -- Wynik: HH:MM:SS
    -- 1729:35
     -- 88:23
    -- 4:44
    --
    -- Czyli zawsze całkowita liczba minut : sekundy.
     -- =====================================================
     -- =====================================================


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


         sekundy =
         local caleMinuty =
             math.floor(
             math.floor(wartosc)
                tonumber(sekundy or 0)
                or 0
            )




         local godziny =
         local sekundy =
             math.floor(
             math.floor(
                 sekundy / 3600
                 ((wartosc - caleMinuty) * 60) + 0.5
             )
             )




         local minuty =
         if sekundy >= 60 then
            math.floor(
                (sekundy % 3600) / 60
            )


            caleMinuty =
                caleMinuty + 1


        local sekundyPozostale =
            sekundy = 0
            sekundy % 60
 
        end




         return string.format(
         return string.format(
             "%d:%02d:%02d",
             "%d:%02d",
             godziny,
             caleMinuty,
             minuty,
             sekundy
            sekundyPozostale
         )
         )


Linia 327: Linia 445:
         local nazwa =
         local nazwa =
             row.zawodnik
             row.zawodnik
        -- Bezpieczne przygotowanie nazwy strony.
        local strona =
            mw.uri.encode(
                nazwa,
                "WIKI"
            )




Linia 345: Linia 455:




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


         if row.aktualny then
         if row.aktualny then
Linia 538: Linia 648:
         local lista = {}
         local lista = {}


        -- -----------------------------------------------
        -- KOPIA LISTY ZAWODNIKÓW
        -- -----------------------------------------------


         for _, zawodnik in ipairs(zawodnicy) do
         for _, zawodnik in ipairs(zawodnicy) do
Linia 552: Linia 658:
         end
         end


        -- -----------------------------------------------
        -- SORTOWANIE
        -- -----------------------------------------------


         table.sort(
         table.sort(
Linia 568: Linia 670:




         -- -----------------------------------------------
         -- -------------------------------------------------
        -- OTWARCIE TABELI
         -- TABELA
        --
         -- -------------------------------------------------
         -- Bardzo ważne:
         -- {| musi rozpoczynać nową linię.
        -- -----------------------------------------------


         table.insert(
         table.insert(
Linia 581: Linia 680:




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


         table.insert(
         table.insert(
Linia 593: Linia 692:




         -- -----------------------------------------------
         table.insert(
         -- NAGŁÓWKI
            wynik,
        -- -----------------------------------------------
            "! Miejsce"
         )
 


         table.insert(
         table.insert(
             wynik,
             wynik,
             "! Miejsce !! Zawodnik !! "
             "! Zawodnik"
            .. mw.ustring.upper(
        )
                definicja.nazwa
 
            )
 
        -- Nie używamy mw.text.lower.
        -- Nazwa jest już zapisana wielkimi literami.
 
        table.insert(
            wynik,
            "! "
            .. definicja.nazwa
         )
         )




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


         for i, zawodnik in ipairs(lista) do
         for i, zawodnik in ipairs(lista) do
Linia 618: Linia 726:




             -- Miejsce
             -- miejsce


             table.insert(
             table.insert(
Linia 627: Linia 735:




             -- Zawodnik
             -- zawodnik


             table.insert(
             table.insert(
Linia 638: Linia 746:




             -- Wartość
             -- wartość


             table.insert(
             table.insert(
Linia 653: Linia 761:
         end
         end


        -- -----------------------------------------------
        -- ZAMKNIĘCIE TABELI
        -- -----------------------------------------------


         table.insert(
         table.insert(
Linia 694: Linia 798:


     -- =====================================================
     -- =====================================================
     -- 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 720: Linia 822:
     -- =====================================================
     -- =====================================================
     -- UKŁAD 3 KOLUMNY
     -- UKŁAD 3 KOLUMNY
    --
    -- 1. MECZE
    -- 2. PUNKTY
    -- 3. MINUTY
    --
    -- 4. ASYSTY
    -- 5. ZBIÓRKI
    -- 6. BLOKI
     -- =====================================================
     -- =====================================================


Linia 743: Linia 837:
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="min-width:0;">'
    )
        .. zbudujTabele(
 
    table.insert(
        wynik,
        zbudujTabele(
             tabele[1]
             tabele[1]
         )
         )
    )
        .. "</div>"
 
    table.insert(
        wynik,
        "</div>"
     )
     )


Linia 765: Linia 851:
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="min-width:0;">'
    )
        .. zbudujTabele(
 
    table.insert(
        wynik,
        zbudujTabele(
             tabele[2]
             tabele[2]
         )
         )
    )
        .. "</div>"
 
    table.insert(
        wynik,
        "</div>"
     )
     )


Linia 787: Linia 865:
         wynik,
         wynik,
         '<div style="min-width:0;">'
         '<div style="min-width:0;">'
    )
        .. zbudujTabele(
 
    table.insert(
        wynik,
        zbudujTabele(