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ł:HistoriaSpotkanDruzyny
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 = {} local function trim(v) if v == nil then return "" end return mw.text.trim(tostring(v)) end local function esc(v) return mw.ustring.gsub( trim(v), "'", "''" ) end local function num(v) if v == nil or trim(v) == "" then return 0 end local text = mw.ustring.gsub( trim(v), ",", "." ) return tonumber(text) or 0 end local function location(row, team) if trim(row.druzyna1) == team then return "dom" end if trim(row.druzyna2) == team then return "wyjazd" end return nil end -- ========================================================= -- PRZECIWNIK -- ========================================================= -- Jeżeli nasza drużyna jest drużyną 1, -- przeciwnik znajduje się w nazwa_statystyki2. -- -- Jeżeli nasza drużyna jest drużyną 2, -- przeciwnik znajduje się w nazwa_statystyki1. -- ========================================================= local function opponent(row, team) local loc = location( row, team ) if loc == "dom" then return trim(row.nazwa_statystyki2) end if loc == "wyjazd" then return trim(row.nazwa_statystyki1) end return "" end -- ========================================================= -- PAUZA -- ========================================================= -- Pauza nie jest meczem i nie może być liczona -- do żadnych statystyk. -- ========================================================= local function isPause(row) local values = { row.wynik, row.druzyna1, row.druzyna2, row.nazwa_statystyki1, row.nazwa_statystyki2 } for _, value in ipairs(values) do local text = mw.ustring.lower( trim(value) ) if text == "pauza" then return true end if mw.ustring.find( text, "pauza", 1, true ) ~= nil then return true end end return false end -- ========================================================= -- DOGRYWKI -- ========================================================= -- Liczymy bezpośrednio pola dogrywka1/2/3. -- -- Dzięki temu: -- -- dogrywka1 = 1 -- dogrywka2 = 1 -- dogrywka3 = 1 -- -- daje 3 dogrywki. -- -- Nie próbujemy już zgadywać liczby dogrywek -- na podstawie kwart i wyniku końcowego. -- ========================================================= local function overtime(row) local count = 0 if trim(row.dogrywka1) ~= "" then count = count + 1 end if trim(row.dogrywka2) ~= "" then count = count + 1 end if trim(row.dogrywka3) ~= "" then count = count + 1 end return count end local function pct( wins, games ) if games == 0 then return "0,0%" end local value = wins / games * 100 local text = string.format( "%.1f", value ) text = mw.ustring.gsub( text, "%.", "," ) return text .. "%" end local function matchLink(row) local title = trim(row.strona_meczu) local date = trim(row.data) if title == "" then return date end if date == "" then return "[[" .. title .. "]]" end return ( "[[" .. title .. "|" .. date .. "]]" ) end local function recordText(record) if record == nil then return "—" end local place if record.location == "dom" then place = "dom" else place = "wyjazd" end return ( matchLink(record.row) .. " – " .. record.opponent .. " " .. tostring(record.forScore) .. ":" .. tostring(record.againstScore) .. " (" .. place .. ", +" .. tostring(record.diff) .. ")" ) end local function betterRecord( oldRecord, newRecord ) if oldRecord == nil then return true end if newRecord.diff > oldRecord.diff then return true end if newRecord.diff < oldRecord.diff then return false end return trim(newRecord.row.data) < trim(oldRecord.row.data) end function p.main(frame) local team = trim(frame.args.druzyna) if team == "" then local title = mw.title.getCurrentTitle() if title ~= nil then team = trim( title.prefixedText ) end end if team == "" then return "''Nie podano drużyny.''" end -- ===================================================== -- POLA CARGO -- ===================================================== local fields = table.concat( { "Mecze.id=mecz", "Mecze.data=data", "Mecze.sezon=sezon", "Mecze.druzyna1=druzyna1", "Mecze.druzyna2=druzyna2", "Mecze.nazwa_statystyki1=nazwa_statystyki1", "Mecze.nazwa_statystyki2=nazwa_statystyki2", "Mecze.gole1=gole1", "Mecze.gole2=gole2", "Mecze.wynik=wynik", "Mecze.strona_meczu=strona_meczu", "Mecze.kwarta1=kwarta1", "Mecze.kwarta2=kwarta2", "Mecze.kwarta3=kwarta3", "Mecze.kwarta4=kwarta4", "Mecze.dogrywka1=dogrywka1", "Mecze.dogrywka2=dogrywka2", "Mecze.dogrywka3=dogrywka3" }, "," ) local teamSQL = esc(team) -- ===================================================== -- POBRANIE MECZÓW -- ===================================================== local rows = mw.ext.cargo.query( "Mecze", fields, { where = "(Mecze.druzyna1='" .. teamSQL .. "' OR Mecze.druzyna2='" .. teamSQL .. "')", orderBy = "Mecze.data ASC", limit = 10000 } ) if not rows or #rows == 0 then return ( "''Brak wprowadzonych spotkań dla drużyny: " .. team .. ".''" ) end local groups = {} local records = { win = { dom = nil, wyjazd = nil }, loss = { dom = nil, wyjazd = nil } } -- ===================================================== -- PRZETWARZANIE MECZÓW -- ===================================================== for _, row in ipairs(rows) do -- ================================================= -- POMIJAMY PAUZĘ -- ================================================= if not isPause(row) then local g1 = num(row.gole1) local g2 = num(row.gole2) local loc = location( row, team ) local opp = opponent( row, team ) if loc and opp ~= "" then -- ========================================= -- GRUPA PRZECIWNIKA -- ========================================= local item = groups[opp] if not item then item = { nazwa = opp, mecze = 0, wygrane = 0, porazki = 0, dogrywki = 0, forScore = 0, againstScore = 0 } groups[opp] = item end -- ========================================= -- NASZE PUNKTY / PUNKTY PRZECIWNIKA -- ========================================= local gf local ga if loc == "dom" then gf = g1 ga = g2 else gf = g2 ga = g1 end -- ========================================= -- MECZ -- ========================================= item.mecze = item.mecze + 1 -- ========================================= -- KOSZE -- ========================================= item.forScore = item.forScore + gf item.againstScore = item.againstScore + ga -- ========================================= -- DOGRYWKI -- ========================================= item.dogrywki = item.dogrywki + overtime(row) -- ========================================= -- WYGRANA / PORAŻKA -- ========================================= local kind = nil if gf > ga then item.wygrane = item.wygrane + 1 kind = "win" elseif gf < ga then item.porazki = item.porazki + 1 kind = "loss" end -- ========================================= -- NAJWIĘKSZA WYGRANA / PORAŻKA -- ========================================= if kind ~= nil then local old = records[kind][loc] local current = { row = row, opponent = opp, location = loc, forScore = gf, againstScore = ga, diff = math.abs( gf - ga ) } if betterRecord( old, current ) then records[kind][loc] = current end end end end end -- ===================================================== -- LISTA PRZECIWNIKÓW -- ===================================================== local list = {} for _, item in pairs(groups) do table.insert( list, item ) end table.sort( list, function(a, b) if a.mecze ~= b.mecze then return a.mecze > b.mecze end return mw.ustring.lower( a.nazwa ) < mw.ustring.lower( b.nazwa ) end ) -- ===================================================== -- WYNIK -- ===================================================== local out = {} table.insert( out, "== Historia spotkań ==" ) table.insert( out, "" ) table.insert( out, "Historia spotkań drużyny " .. team .. " ze wszystkimi przeciwnikami wprowadzonymi do bazy." ) table.insert( out, "" ) -- ===================================================== -- TABELA HISTORII -- ===================================================== table.insert( out, '{| class="wikitable sortable" style="width:100%; text-align:center;"' ) table.insert( out, "! Przeciwnik !! Mecze ogółem !! Wygrane !! Porażki !! Dogrywki !! % wygranych !! Kosze rzucone !! Kosze stracone" ) for _, item in ipairs(list) do table.insert( out, "|-" ) table.insert( out, '| style="text-align:left;" | ' .. item.nazwa ) table.insert( out, "| " .. tostring(item.mecze) .. " || " .. tostring(item.wygrane) .. " || " .. tostring(item.porazki) .. " || " .. tostring(item.dogrywki) .. " || " .. pct( item.wygrane, item.mecze ) .. " || " .. tostring(item.forScore) .. " || " .. tostring(item.againstScore) ) end table.insert( out, "|}" ) table.insert( out, "" ) -- ===================================================== -- REKORDY -- ===================================================== table.insert( out, "== Największa wygrana i największa porażka ==" ) table.insert( out, "" ) table.insert( out, '{| class="wikitable" style="width:100%; text-align:center;"' ) table.insert( out, "! Rekord !! 🏠 Dom !! ✈️ Wyjazd" ) table.insert( out, "|-" ) table.insert( out, "! 🏆 Największa wygrana" ) table.insert( out, "| " .. recordText( records.win.dom ) .. " || " .. recordText( records.win.wyjazd ) ) table.insert( out, "|-" ) table.insert( out, "! 📉 Największa porażka" ) table.insert( out, "| " .. recordText( records.loss.dom ) .. " || " .. recordText( records.loss.wyjazd ) ) table.insert( out, "|}" ) table.insert( out, "" ) table.insert( out, "''Dogrywki są liczone na podstawie pól dogrywka1, dogrywka2 i dogrywka3 zapisanych przy meczu.''" ) return table.concat( out, "\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ł:HistoriaSpotkanDruzyny/opis
(
edytuj
)
Szukaj
Szukaj
Edytujesz
Moduł:HistoriaSpotkanDruzyny
Dodaj temat