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ł:KontrolaWystepow
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 = {} -- ========================================================= -- MODUŁ: KontrolaWystepow -- -- Automatyczna kontrola danych: -- -- 1. UdzialZawodnika -> Mecze -- 2. zgodność zawodnik / drużyna / mecz -- 3. duplikaty udziałów -- 4. brakujące powiązania z meczami -- 5. kontrola statystyk -- 6. SztabMeczu -> Mecze -- 7. podsumowanie wyników kontroli -- -- Moduł nie wymaga podawania zawodnika. -- ========================================================= function p.main(frame) local wynik = {} -- ===================================================== -- FUNKCJE POMOCNICZE -- ===================================================== local function liczba(v) if v == nil or v == "" then return 0 end v = tostring(v) v = mw.ustring.gsub( v, "%s+", "" ) return tonumber(v) or 0 end local function dodaj(t, tekst) table.insert( t, tekst ) end local function bezpieczny(v) if v == nil then return "" end return tostring(v) end -- ===================================================== -- LICZNIKI -- ===================================================== local kontrola = { udzialy = 0, poprawne = 0, brakMeczu = 0, zlaDruzyna = 0, duplikaty = 0, statystyki = 0, sztab = 0, sztabBrakMeczu = 0, sztabZlaDruzyna = 0 } -- ===================================================== -- TABLICE BŁĘDÓW -- ===================================================== local brakMeczu = {} local zlaDruzyna = {} local duplikaty = {} local bledneStatystyki = {} local sztabBrakMeczu = {} local sztabZlaDruzyna = {} -- ===================================================== -- POBRANIE UDZIAŁÓW ZAWODNIKÓW -- ===================================================== local fields = table.concat({ "UdzialZawodnika.mecz=mecz", "UdzialZawodnika.zawodnik=zawodnik", "UdzialZawodnika.druzyna=druzyna", "UdzialZawodnika.numer=numer", "UdzialZawodnika.minuty=minuty", "UdzialZawodnika.minuty_format=minuty_format", "UdzialZawodnika.gol=gol", "UdzialZawodnika.asysta=asysta", "UdzialZawodnika.zbiorka=zbiorka", "UdzialZawodnika.eval=eval", "UdzialZawodnika.plusminus=plusminus", "Mecze.id=id_meczu", "Mecze.data=data", "Mecze.sezon=sezon", "Mecze.druzyna1=druzyna1", "Mecze.druzyna2=druzyna2", "Mecze.wynik=wynik" }, ",") local rows = mw.ext.cargo.query( "UdzialZawodnika,Mecze", fields, { join = "UdzialZawodnika.mecz=Mecze.id", orderBy = "Mecze.data ASC", limit = 50000 } ) -- ===================================================== -- MAPA WSZYSTKICH UDZIAŁÓW -- -- potrzebna do wykrywania duplikatów -- ===================================================== local mapaUdzialow = {} -- ===================================================== -- PRZETWARZANIE UDZIAŁÓW -- ===================================================== if rows then for _, row in ipairs(rows) do kontrola.udzialy = kontrola.udzialy + 1 local mecz = bezpieczny(row.mecz) local zawodnik = bezpieczny(row.zawodnik) local druzyna = bezpieczny(row.druzyna) -- ============================================= -- DUPLIKAT -- ============================================= local klucz = zawodnik .. "|" .. druzyna .. "|" .. mecz mapaUdzialow[klucz] = (mapaUdzialow[klucz] or 0) + 1 -- ============================================= -- KONTROLA POWIĄZANIA Z MECZEM -- ============================================= local idMeczu = bezpieczny(row.id_meczu) if idMeczu == "" then kontrola.brakMeczu = kontrola.brakMeczu + 1 table.insert( brakMeczu, row ) else -- ========================================= -- KONTROLA DRUŻYNY -- ========================================= local d1 = bezpieczny(row.druzyna1) local d2 = bezpieczny(row.druzyna2) if druzyna ~= d1 and druzyna ~= d2 then kontrola.zlaDruzyna = kontrola.zlaDruzyna + 1 table.insert( zlaDruzyna, row ) else kontrola.poprawne = kontrola.poprawne + 1 end -- ========================================= -- KONTROLA STATYSTYK -- ========================================= local minuty = liczba(row.minuty) local punkty = liczba(row.gol) local asysty = liczba(row.asysta) local zbiorki = liczba(row.zbiorka) local eval = liczba(row.eval) local problem = false if minuty < 0 then problem = true end if punkty < 0 then problem = true end if asysty < 0 then problem = true end if zbiorki < 0 then problem = true end if problem then kontrola.statystyki = kontrola.statystyki + 1 table.insert( bledneStatystyki, row ) end end end end -- ===================================================== -- WYKRYWANIE DUPLIKATÓW -- ===================================================== for klucz, ile in pairs(mapaUdzialow) do if ile > 1 then kontrola.duplikaty = kontrola.duplikaty + 1 table.insert( duplikaty, { klucz = klucz, ile = ile } ) end end -- ===================================================== -- KONTROLA SZTABU -- ===================================================== local fieldsSztab = table.concat({ "SztabMeczu.mecz=mecz", "SztabMeczu.osoba=osoba", "SztabMeczu.druzyna=druzyna", "SztabMeczu.rola=rola", "Mecze.id=id_meczu", "Mecze.data=data", "Mecze.sezon=sezon", "Mecze.druzyna1=druzyna1", "Mecze.druzyna2=druzyna2" }, ",") local sztab = mw.ext.cargo.query( "SztabMeczu,Mecze", fieldsSztab, { join = "SztabMeczu.mecz=Mecze.id", orderBy = "Mecze.data ASC", limit = 50000 } ) if sztab then for _, row in ipairs(sztab) do kontrola.sztab = kontrola.sztab + 1 local idMeczu = bezpieczny(row.id_meczu) local druzyna = bezpieczny(row.druzyna) if idMeczu == "" then kontrola.sztabBrakMeczu = kontrola.sztabBrakMeczu + 1 table.insert( sztabBrakMeczu, row ) else local d1 = bezpieczny(row.druzyna1) local d2 = bezpieczny(row.druzyna2) if druzyna ~= d1 and druzyna ~= d2 then kontrola.sztabZlaDruzyna = kontrola.sztabZlaDruzyna + 1 table.insert( sztabZlaDruzyna, row ) end end end end -- ===================================================== -- NAGŁÓWEK -- ===================================================== dodaj( wynik, "== Kontrola bazy danych ==" ) dodaj( wynik, "" ) dodaj( wynik, "''Automatyczna kontrola danych zawodników i sztabu. " .. "Strona techniczna — nie przeznaczona do wyświetlania " .. "w artykułach.''" ) dodaj( wynik, "" ) -- ===================================================== -- PODSUMOWANIE -- ===================================================== dodaj( wynik, "=== Podsumowanie ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable" style="width:100%; text-align:center;"' ) dodaj( wynik, "! Kontrola !! Liczba" ) dodaj(wynik, "|-") dodaj( wynik, "! Wszystkie wpisy UdzialZawodnika" ) dodaj( wynik, "| '''" .. kontrola.udzialy .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! Poprawne powiązania z meczem" ) dodaj( wynik, "| '''" .. kontrola.poprawne .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Brak powiązania z meczem" ) dodaj( wynik, "| '''" .. kontrola.brakMeczu .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Niezgodna drużyna" ) dodaj( wynik, "| '''" .. kontrola.zlaDruzyna .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Duplikaty" ) dodaj( wynik, "| '''" .. kontrola.duplikaty .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Błędy wartości statystycznych" ) dodaj( wynik, "| '''" .. kontrola.statystyki .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! Wszystkie wpisy SztabMeczu" ) dodaj( wynik, "| '''" .. kontrola.sztab .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Sztab — brak meczu" ) dodaj( wynik, "| '''" .. kontrola.sztabBrakMeczu .. "'''" ) dodaj(wynik, "|-") dodaj( wynik, "! 🔴 Sztab — niezgodna drużyna" ) dodaj( wynik, "| '''" .. kontrola.sztabZlaDruzyna .. "'''" ) dodaj( wynik, "|}" ) dodaj( wynik, "" ) -- ===================================================== -- BRAKUJĄCE MECZE -- ===================================================== if #brakMeczu > 0 then dodaj( wynik, "=== 🔴 Wpisy zawodników bez meczu ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Zawodnik !! Drużyna !! Mecz" ) for _, row in ipairs(brakMeczu) do dodaj( wynik, "|-" ) dodaj( wynik, "| [[" .. bezpieczny(row.zawodnik) .. "]]" ) dodaj( wynik, "| " .. bezpieczny(row.druzyna) ) dodaj( wynik, "| " .. bezpieczny(row.mecz) ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- NIEZGODNA DRUŻYNA -- ===================================================== if #zlaDruzyna > 0 then dodaj( wynik, "=== 🔴 Niezgodna drużyna zawodnika ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Zawodnik !! Wpisana drużyna !! Gospodarz !! Gość !! Mecz" ) for _, row in ipairs(zlaDruzyna) do dodaj( wynik, "|-" ) dodaj( wynik, "| [[" .. bezpieczny(row.zawodnik) .. "]]" ) dodaj( wynik, "| " .. bezpieczny(row.druzyna) ) dodaj( wynik, "| " .. bezpieczny(row.druzyna1) ) dodaj( wynik, "| " .. bezpieczny(row.druzyna2) ) dodaj( wynik, "| " .. bezpieczny(row.mecz) ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- DUPLIKATY -- ===================================================== if #duplikaty > 0 then dodaj( wynik, "=== 🔴 Duplikaty UdzialZawodnika ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Zawodnik / drużyna / mecz !! Liczba wpisów" ) for _, item in ipairs(duplikaty) do dodaj( wynik, "|-" ) dodaj( wynik, "| " .. item.klucz ) dodaj( wynik, "| '''" .. item.ile .. "'''" ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- BŁĘDNE STATYSTYKI -- ===================================================== if #bledneStatystyki > 0 then dodaj( wynik, "=== 🔴 Podejrzane wartości statystyczne ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Zawodnik !! Drużyna !! Mecz !! Min. !! Pkt !! As. !! Zb. !! EVAL" ) for _, row in ipairs(bledneStatystyki) do dodaj( wynik, "|-" ) dodaj( wynik, "| [[" .. bezpieczny(row.zawodnik) .. "]]" ) dodaj( wynik, "| " .. bezpieczny(row.druzyna) ) dodaj( wynik, "| " .. bezpieczny(row.mecz) ) dodaj( wynik, "| " .. bezpieczny(row.minuty_format) ) dodaj( wynik, "| " .. bezpieczny(row.gol) ) dodaj( wynik, "| " .. bezpieczny(row.asysta) ) dodaj( wynik, "| " .. bezpieczny(row.zbiorka) ) dodaj( wynik, "| " .. bezpieczny(row.eval) ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- KONTROLA SZTABU -- ===================================================== if #sztabBrakMeczu > 0 then dodaj( wynik, "=== 🔴 Sztab bez meczu ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Osoba !! Drużyna !! Rola !! Mecz" ) for _, row in ipairs(sztabBrakMeczu) do dodaj( wynik, "|-" ) dodaj( wynik, "| [[" .. bezpieczny(row.osoba) .. "]]" ) dodaj( wynik, "| " .. bezpieczny(row.druzyna) ) dodaj( wynik, "| " .. bezpieczny(row.rola) ) dodaj( wynik, "| " .. bezpieczny(row.mecz) ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- SZTAB — ZŁA DRUŻYNA -- ===================================================== if #sztabZlaDruzyna > 0 then dodaj( wynik, "=== 🔴 Niezgodna drużyna sztabu ===" ) dodaj( wynik, "" ) dodaj( wynik, '{| class="wikitable sortable" style="width:100%;"' ) dodaj( wynik, "! Osoba !! Wpisana drużyna !! Gospodarz !! Gość !! Rola !! Mecz" ) for _, row in ipairs(sztabZlaDruzyna) do dodaj( wynik, "|-" ) dodaj( wynik, "| [[" .. bezpieczny(row.osoba) .. "]]" ) dodaj( wynik, "| " .. bezpieczny(row.druzyna) ) dodaj( wynik, "| " .. bezpieczny(row.druzyna1) ) dodaj( wynik, "| " .. bezpieczny(row.druzyna2) ) dodaj( wynik, "| " .. bezpieczny(row.rola) ) dodaj( wynik, "| " .. bezpieczny(row.mecz) ) end dodaj( wynik, "|}" ) dodaj( wynik, "" ) end -- ===================================================== -- JEŚLI NIE MA BŁĘDÓW -- ===================================================== if kontrola.brakMeczu == 0 and kontrola.zlaDruzyna == 0 and kontrola.duplikaty == 0 and kontrola.statystyki == 0 and kontrola.sztabBrakMeczu == 0 and kontrola.sztabZlaDruzyna == 0 then dodaj( wynik, "=== 🟢 Wynik kontroli ===" ) dodaj( wynik, "" ) dodaj( wynik, "'''Nie wykryto nieprawidłowości w kontrolowanych danych.'''" ) end 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ł:KontrolaWystepow/opis
(
edytuj
)
Szukaj
Szukaj
Edytujesz
Moduł:KontrolaWystepow
Dodaj temat