Przejdź do zawartości
Menu główne
Menu główne
przypnij
ukryj
Nawigacja
Strona główna
Ostatnie zmiany
Losowa strona
Pomoc z MediaWiki
Strony specjalne
Encyklopedia Poznanskiego Sportu
Szukaj
Szukaj
Wygląd
Utwórz konto
Zaloguj się
Narzędzia osobiste
Utwórz konto
Zaloguj się
Strony dla anonimowych edytorów
dowiedz się więcej
Edycje
Dyskusja
Edytujesz
Moduł:Trenerzy sezon
Moduł
Dyskusja
English
Czytaj
Edytuj
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Wyświetl historię
Ogólne
Linkujące
Zmiany w linkowanych
Informacje o tej stronie
Cargo data
Wygląd
przypnij
ukryj
Uwaga:
Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli
zalogujesz się
lub
utworzysz konto
, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Filtr antyspamowy.
Nie
wpisuj tu nic!
local p = {} function p.main(frame) -- ===================================================== -- PARAMETRY -- ===================================================== local sezon = frame.args.sezon or "" local druzyna = frame.args.druzyna or "" if sezon == "" then return "'''Błąd:''' nie podano sezonu." end if druzyna == "" then return "'''Błąd:''' nie podano drużyny." end -- Bezpieczne przygotowanie wartości do SQL local sezonSQL = mw.ustring.gsub(sezon, "'", "''") local druzynaSQL = mw.ustring.gsub(druzyna, "'", "''") -- ===================================================== -- POBRANIE TRENERÓW I MECZÓW -- ===================================================== local fields = table.concat({ "SztabMeczu.osoba=trener", "SztabMeczu.druzyna=druzyna", "Mecze.id=mecz", "Mecze.data=data", "Mecze.sezon=sezon", "Mecze.druzyna1=druzyna1", "Mecze.druzyna2=druzyna2", "Mecze.gole1=gole1", "Mecze.gole2=gole2", "Mecze.wynik=wynik" }, ",") local args = { join = "SztabMeczu.mecz=Mecze.id", where = "SztabMeczu.rola='Trener'" .. " AND SztabMeczu.druzyna='" .. druzynaSQL .. "'" .. " AND Mecze.sezon='" .. sezonSQL .. "'", orderBy = "Mecze.data ASC", limit = 5000 } local rows = mw.ext.cargo.query( "SztabMeczu,Mecze", fields, args ) if not rows or #rows == 0 then return "''Brak danych o trenerach dla tej drużyny w podanym sezonie.''" end -- ===================================================== -- PODSUMOWANIA TRENERÓW -- ===================================================== local trenerzy = {} local function nowePodsumowanie() return { mecze = 0, zwyciestwa = 0, porazki = 0, remisy = 0, rzucone = 0, stracone = 0 } end -- ===================================================== -- PRZETWARZANIE MECZÓW -- ===================================================== for _, row in ipairs(rows) do local trener = row.trener or "" if trener ~= "" then if not trenerzy[trener] then trenerzy[trener] = nowePodsumowanie() end local stat = trenerzy[trener] local d1 = row.druzyna1 or "" local d2 = row.druzyna2 or "" local g1 = tonumber(row.gole1 or "") local g2 = tonumber(row.gole2 or "") -- Jeżeli pola gole1/gole2 nie są dostępne, -- próbujemy odczytać wynik z pola wynik. if not g1 or not g2 then local wynik = row.wynik or "" local a, b = wynik:match("(%d+)%s*:%s*(%d+)") if a and b then g1 = tonumber(a) g2 = tonumber(b) end end -- Bez poprawnego wyniku nie liczymy meczu -- do klasyfikacji. if g1 and g2 then stat.mecze = stat.mecze + 1 -- ----------------------------------------- -- DRUŻYNA TRENERA JAKO GOSPODARZ -- ----------------------------------------- if druzyna == d1 then stat.rzucone = stat.rzucone + g1 stat.stracone = stat.stracone + g2 if g1 > g2 then stat.zwyciestwa = stat.zwyciestwa + 1 elseif g1 < g2 then stat.porazki = stat.porazki + 1 else stat.remisy = stat.remisy + 1 end -- ----------------------------------------- -- DRUŻYNA TRENERA JAKO GOŚĆ -- ----------------------------------------- elseif druzyna == d2 then stat.rzucone = stat.rzucone + g2 stat.stracone = stat.stracone + g1 if g2 > g1 then stat.zwyciestwa = stat.zwyciestwa + 1 elseif g2 < g1 then stat.porazki = stat.porazki + 1 else stat.remisy = stat.remisy + 1 end end end end end -- ===================================================== -- USUNIĘCIE TRENERÓW BEZ POLICZONYCH MECZÓW -- ===================================================== for trener, stat in pairs(trenerzy) do if stat.mecze == 0 then trenerzy[trener] = nil end end -- ===================================================== -- SPRAWDZENIE DANYCH -- ===================================================== local lista = {} for trener, stat in pairs(trenerzy) do table.insert( lista, { trener = trener, stat = stat } ) end if #lista == 0 then return "''Brak kompletnych danych o meczach trenerów w tym sezonie.''" end -- ===================================================== -- SORTOWANIE -- ===================================================== table.sort( lista, function(a, b) -- najpierw liczba zwycięstw if a.stat.zwyciestwa ~= b.stat.zwyciestwa then return a.stat.zwyciestwa > b.stat.zwyciestwa end -- następnie liczba meczów if a.stat.mecze ~= b.stat.mecze then return a.stat.mecze > b.stat.mecze end -- następnie bilans local bilansA = a.stat.rzucone - a.stat.stracone local bilansB = b.stat.rzucone - b.stat.stracone if bilansA ~= bilansB then return bilansA > bilansB end return a.trener < b.trener end ) -- ===================================================== -- WYNIK -- ===================================================== local wynik = {} table.insert( wynik, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) -- Nagłówki table.insert( wynik, "! Trener" ) table.insert( wynik, "! Mecze" ) table.insert( wynik, "! W" ) table.insert( wynik, "! P" ) table.insert( wynik, "! R" ) table.insert( wynik, "! % zwycięstw" ) table.insert( wynik, "! Kosze rzucone" ) table.insert( wynik, "! Kosze stracone" ) table.insert( wynik, "! Bilans" ) -- ===================================================== -- WIERSZE -- ===================================================== for _, item in ipairs(lista) do local trener = item.trener local stat = item.stat local bilans = stat.rzucone - stat.stracone local procent = 0 if stat.mecze > 0 then procent = (stat.zwyciestwa / stat.mecze) * 100 end -- Zaokrąglenie do jednego miejsca procent = string.format( "%.1f", procent ) -- Link do strony trenera local trenerLink = "[[" .. trener .. "]]" table.insert( wynik, "|-" ) table.insert( wynik, "| " .. trenerLink ) table.insert( wynik, "| " .. stat.mecze ) table.insert( wynik, "| " .. stat.zwyciestwa ) table.insert( wynik, "| " .. stat.porazki ) table.insert( wynik, "| " .. stat.remisy ) table.insert( wynik, "| " .. procent .. "%" ) table.insert( wynik, "| " .. stat.rzucone ) table.insert( wynik, "| " .. stat.stracone ) local bilansTekst if bilans > 0 then bilansTekst = "+" .. bilans else bilansTekst = tostring(bilans) end table.insert( wynik, "| " .. bilansTekst ) end table.insert( wynik, "|}" ) return table.concat( wynik, "\n" ) end return p
Opis zmian:
Wszelki wkład na Encyklopedia Poznanskiego Sportu może być edytowany, zmieniany lub usunięty przez innych użytkowników. Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach
domeny publicznej
lub kompatybilnych (zobacz także
Encyklopedia Poznanskiego Sportu:Prawa autorskie
).
PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!
Anuluj
Pomoc w edycji
(otwiera się w nowym oknie)
Strona dołączona w tym artykule:
Moduł:Trenerzy sezon/opis
(
edytuj
)
Szukaj
Szukaj
Edytujesz
Moduł:Trenerzy sezon
Dodaj temat