Moduł:Rekordy sezon: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| (Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 21: | Linia 21: | ||
-- |dyscyplina=koszykówka | -- |dyscyplina=koszykówka | ||
-- }} | -- }} | ||
-- ========================================================= | -- ========================================================= | ||
| Linia 48: | Linia 47: | ||
local function | -- ========================================================= | ||
-- MINUTY | |||
-- | |||
-- Obsługuje: | |||
-- 32 | |||
-- 32.0 | |||
-- 32:15 | |||
-- 32:15.5 | |||
-- | |||
-- Do porównywania rekordów używamy sekund. | |||
-- ========================================================= | |||
local function minutyNaSekundy(value) | |||
if value == nil or value == "" then | |||
return 0 | |||
end | |||
value = tostring(value | value = tostring(value) | ||
value = mw.ustring.gsub( | |||
value, | value, | ||
" | "%s+", | ||
" | "" | ||
) | ) | ||
local minuty, sekundy = | |||
mw.ustring.match( | |||
value, | |||
"^(%d+):(%d+)$" | |||
) | |||
if minuty and sekundy then | |||
return | |||
tonumber(minuty) * 60 + | |||
tonumber(sekundy) | |||
end | |||
local | local liczbaMinut = | ||
tonumber(value) | |||
if liczbaMinut then | |||
return liczbaMinut * 60 | |||
end | |||
if | |||
return | |||
end | |||
return | return 0 | ||
end | end | ||
| Linia 87: | Linia 100: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- FORMAT MINUT | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function formatMinut(sekundy) | ||
sekundy = tonumber(sekundy) or 0 | |||
local | local minuty = | ||
math.floor( | |||
sekundy / 60 | |||
) | |||
local | local sek = | ||
sekundy % 60 | |||
if | if sek == 0 then | ||
return | return tostring(minuty) .. " min" | ||
end | end | ||
return | |||
tostring(minuty) .. | |||
":" .. | |||
string.format( | |||
"%02d", | |||
sek | |||
) .. | |||
" min" | |||
end | |||
local function escapeSQL(value) | |||
value = tostring(value or "") | |||
return mw.ustring.gsub( | |||
value, | |||
"'", | |||
"''" | |||
) | |||
end | end | ||
| Linia 131: | Linia 145: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- ROZPOZNANIE MIEJSCA MECZU | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function miejsceMeczu(row, druzyna) | ||
local | local d1 = | ||
tostring(row.druzyna1 or "") | |||
local d2 = | |||
tostring(row.druzyna2 or "") | |||
if d1 == druzyna then | |||
return "dom" | |||
end | |||
if | |||
return | |||
if d2 == druzyna then | |||
return "wyjazd" | |||
end | end | ||
return | return nil | ||
end | end | ||
| Linia 175: | Linia 170: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- WYNIK MECZU | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function wynikMeczu(row) | ||
local | local g1 = | ||
tonumber(row.gole1 or "") | |||
local | local g2 = | ||
tonumber(row.gole2 or "") | |||
if g1 ~= nil and g2 ~= nil then | |||
return g1, g2 | |||
end | |||
local wynik = | |||
tostring(row.wynik or "") | |||
local a, b = | |||
mw.ustring.match( | |||
wynik, | |||
"(%d+)%s*:%s*(%d+)" | |||
) | |||
if a and b then | |||
return | return | ||
tonumber(a), | |||
tonumber(b) | |||
end | end | ||
return | |||
return nil, nil | |||
end | end | ||
| Linia 212: | Linia 210: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- WYNIK Z PERSPEKTYWY DRUŻYNY | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function wynikZPerspektywy(row, druzyna) | ||
local g1, g2 = | |||
wynikMeczu(row) | |||
if g1 == nil or g2 == nil then | |||
return nil, nil | |||
end | |||
local miejsce = | |||
miejsceMeczu( | |||
row, | |||
druzyna | |||
) | |||
if miejsce == "dom" then | |||
return g1, g2 | |||
elseif miejsce == "wyjazd" then | |||
return g2, g1 | |||
end | |||
return nil, nil | |||
end | end | ||
| Linia 225: | Linia 244: | ||
-- ========================================================= | -- ========================================================= | ||
-- | -- NAZWA MECZU | ||
-- ========================================================= | -- ========================================================= | ||
local function | local function nazwaMeczu(row) | ||
local d1 = | |||
tostring(row.druzyna1 or "") | |||
) | local d2 = | ||
tostring(row.druzyna2 or "") | |||
local strona = | |||
tostring(row.strona_meczu or "") | |||
local | local tekst = | ||
d1 .. | |||
" – " .. | |||
d2 | |||
if strona ~= "" then | |||
return | return | ||
"[[" .. | |||
strona .. | |||
"|" .. | |||
tekst .. | |||
"]]" | |||
end | end | ||
return tekst | |||
end | |||
-- ========================================================= | |||
-- DODAWANIE REKORDU | |||
-- | |||
-- KLUCZOWA POPRAWKA: | |||
-- | |||
-- zapisujemy wartość rekordu bezpośrednio w item.wartosc. | |||
-- | |||
-- Dzięki temu nie ma już: | |||
-- attempt to compare nil with number | |||
-- ========================================================= | |||
local function dodajRekord( | |||
tabela, | |||
miejsce, | |||
wartosc, | |||
item | |||
) | |||
if wartosc == nil then | |||
return | |||
end | |||
wartosc = | |||
tonumber(wartosc) | |||
if wartosc == nil then | |||
return | |||
end | end | ||
item.wartosc = | |||
wartosc | |||
local lista = | |||
tabela[miejsce] | |||
if #lista == 0 then | |||
table.insert( | |||
lista, | |||
item | |||
) | |||
return | |||
end | end | ||
local obecna = | |||
tonumber( | |||
lista[1].wartosc | |||
) or 0 | |||
if wartosc > obecna then | |||
tabela[miejsce] = { | |||
item | |||
} | |||
elseif wartosc == obecna then | |||
table.insert( | |||
lista, | |||
item | |||
) | ) | ||
end | end | ||
end | end | ||
| Linia 333: | Linia 352: | ||
-- ========================================================= | -- ========================================================= | ||
-- FORMAT REKORDÓW | |||