Moduldiskussion:Sportdata
Uppdatering på G
[redigera wikitext]@Jssfrk m.fl.: Jag har under senaste veckan satt igång med att göra om strukturen för de moduler som använder wikidata (de som är listade i dokumentationen på denna sidan). Någon gång inom den närmsta veckan är tanken att rikta om de mallar som använder modulerna (som mall:Sportperson WD och mall:Sportklubb WD så att de använder den nya versionen. Det finns lite testexempel i min sandlåda (testsida 1, testsida 2 och testsida 3) där det går att se hur infoboxarna kommer att se ut.
Tanken är främst att underlätta utveckling och underhåll genom att separera datahantering och visning av data ("texten" i exemplen ovan är datan som är tillgänglig för infoboxen att visa). Mycket är förändringar som främst syns "under ytan", men några förändringar som kommer att märkas direkt är att visningen av olika idrotter (om en person/klubb hållit på med flera) blir betydligt bättre. Jag har också designat om så att vad som syns direkt vad gäller resultat är en medaljlista, medan listan över samtliga resultat (vilket kan bli långt) finns i en tabell som startar "kollapsad" för att inte ta för stor plats ("långa listan" är inte färdigöverförd så när saker saknas så är det för att jag inte hunnit göra det än och inte för att jag planerar att plocka bort något). En annan ändring är att det blir möjligt att använda information från flera wikidataobjekt som bas. På testsida 1 så innehåller "Hylte/Halmstad VBK" information både från den sammanslagna klubben och Hylte VBK (den av föregångarna som nått störst framgångar) och "Örebro Volley" innehåller på samma sätt både information om den klubben och dess föregångare KFUM Örebro.
Förutom att beskriva ovanstående skriver jag för att:
- Förvarna om att det kan finnas barnsjukdomar (jag tar gärna emot tips på artiklar som kan vara värda att hålla särskilt koll på baserat på om personen/klubben har en "krånglig" historia/verksamhet).
- Gärna ta emot önskelista på nya saker eller ändringar eller ändringar av vad som redan finns. Saker jag själv funderar på är att lägga till nära släkt (föräldrar/barn) och om det går se om det går att göra något vettigt för prestationsidrotter som friidrotterna där personbästa och liknande är intressant.
Gunnar Larsson (diskussion) 17 juli 2024 kl. 11.07 (CEST)
Skriptfel när det saknas värde för bestämningen ranking (P1352) för något deltog i (P1344)
[redigera wikitext]@Gunnar Larsson: Jag hittade Engelholms VS i Kategori:Sidor med skriptfel. Anledningen verkar vara att modulen inte klarar av att hantera avsaknaden av ranking (P1352) för något värde för egenskapen deltog i (P1344). Variablen iPosition får i dessa fall värde nil på rad 1345 och detta värde kontrolleras inte innan det används ett antal gånger på raderna mellan 1345 och 1399, vilket leder till att modulen kraschar. Här är några alternativa åtgärder:
- Det enklaste är kanske att helt strunta i att ta med tävlingar där ranking (P1352) saknas, det vill säga testa redan på rad 1322 i loopen om iPosition har värdet nil och i så fall hoppa över hela loopen för detta värde på i. Kanske det finns andra variabler i tblAllQueryResults[i] som också behöver säkerställas att de har värden som går att använda. I stället för att exekvera loopens kod i dessa felfall kunde artikeln läggas in i någon lämplig åtgärdskategori för att uppmärksamma oss på att Wikidataobjektet behöver kompletteras.
- En annan möjlighet är förstås att acceptera avsaknaden av ranking (P1352) för vissa tävlingar, men då behöver koden ändra på alla ställen där iPosition används och göra något vettigt med värdet nil. Om det är vanligt att ranking (P1352) saknas men man ändå vill ha med deltagandet i resultatlistan är detta kanske en bättre åtgärd.
Jag har gjort en tillfällig fix enligt alternativ 1 ovan, dock utan inläggning i åtgärdskategori, bara en spårningsutskrift i loggen som visar vilken tävling det är som saknar data. Då upptäckte jag ett annat liknande skriptfel för samma objekt där det var txtYears
som användes på rad 1508 trots att det på rad 1507 hade fått värdet nil. Samma temporära fix inlagd på rad 1445 eftersom iPosition används ett antal gånger i loopen mellan rad 1449 och rad 1512.
Nu ligger artikeln inte längre i åtgärdskategorin och den kronologiska resultatlistan visas, dock med undantag för Elitserien i volleyboll för damer 2019/2020 där det saknas ranking (P1352) i Wikidataobjektet. Medan jag skrev detta meddelande har nästan 200 artiklar rasslat in i Kategori:Sidor med skriptfel. Det ska bli spännande att se hur många av dessa som "räddas" av min temporära fix. -- Larske (diskussion) 22 augusti 2024 kl. 13.03 (CEST)
- Tack @Larske! Det ser ut (åtminstone när jag tittar i kategorin) som att din ändring räddat dem. Jag ska titta mer på problemet när jag är hemma från jobbet. Det bör nog bara vara att flytta tidigare koll till rätt plats (i går ändrade jag hanteringen av position så att den visas för individuella idrottare (friidrottare, simmare m.m.), vilket den inte gjorde innan, det gjorde jag genom att flytta upp där värdet sätts i tabellen så problemet bör vara kopplat till det). Gunnar Larsson (diskussion) 22 augusti 2024 kl. 13.53 (CEST)
- Det var cirka 120 artiklar som använde
{{Sportperson WD}}
och cirka 40 artiklar som använde{{Sportklubb WD}}
som hann komma in i Kategori:Sidor med skriptfel, men efter quickfixen ovan är nu alla dessa volleybollrelaterade artiklar åter fria från skriptfel. (Jag körde en nulledit för alla artiklar i kategorin) - Jag ser nu att det kanske är bestämningen ranking (P1352) för laget/personen i värdet för egenskapen deltagande lag (P1923) i objektet för deltog i (P1344) som används för att plocka fram
iPosition
, kanske som en fallback om det saknas som bestämning för värdet deltog i (P1344) i lagobjektet. Men det är ändå något som måste kunna hanteras om ranking (P1352) nu skulle saknas på båda ställena. - Sen är det ju alltid lurigt när man lagrar samma information på två ställen, förr eller senare divergerar det. Å andra sidan kanske det gör att ett inmatningsfel upptäcks...
- Jag tyckte att det kunde vara intressant att jämföra de två olika "ranking" som finns för samma sak enligt ovan, se följande fråga:
- Länk till fråga som ger en lista på volleybollag och turneringar där lagets ranking (P1352) i en turnering som laget deltog i (P1344) inte stämmer överens med lagets ranking (P1352) i turneringens deltagande lag (P1923). Just nu hittar frågan bara en avvikelse:
- Enligt lagobjektet Asterix Avo Beveren (Q747942) kom de på 17:e plats i turneringen CEV Champions League 2017-2018 (Q42303662), se här
- Enligt turneringsobjektet kom nämnda lag på 21:a plats, se här.
- Länk till fråga som ger en lista på volleybollag och turneringar där lagets ranking (P1352) i en turnering som laget deltog i (P1344) inte stämmer överens med lagets ranking (P1352) i turneringens deltagande lag (P1923). Just nu hittar frågan bara en avvikelse:
- Det är det första av dessa motstridiga värden, alltså 17:e plats, som visas i svwp-artikeln Asterix Avo Beveren, men enligt källan ska det vara 21:a plats.
- -- Larske (diskussion) 22 augusti 2024 kl. 14.43 (CEST)
- Toppentrevlig fråga! Jag har funderat över just hur vanligt det är att uppgifterna skiljer sig utan att ha kommit mig för att göra något. Skönt att det bara var ett fall. Anledningen att funktionen kan ta ranking både direkt från deltog i (P1344) och deltagande lag (P1923) är att det ofta är praktiskt smidigare att lägga in uppgifterna med deltagande lag (P1923) då alla resultat från en tävling kan läggas in på en och samma webbsida och att de sedan kan användas för t.ex. alla som spelat med klubben (det bör också minska risken för fel). Samtidigt skulle det vara rejält förvirrande att inte använda (och ge prioritet till) deltog i (P1344). Som du skriver finns det absolut en risk för att informationen ska skilja sig. Samtidigt ligger det lite i Wikidatas natur att den är lite vildvuxen jämfört med en mer kontrollerad databas, så rent praktiskt kommer det att förekomma att bägge fylls i så det är bra är bra om modulen kan hantera det. Skulle absolut kunna lägga till en åtgärdskategori till Kategori:Artiklar med åtgärdsbehov vid användning av modulen Sportdata.
- Jag har nu tittat på koden och tidigare (före igår) medförde avsaknad av resultat att iPosition blev en tom sträng som sattes till ett högt värde i slutet av getOneCompetiton (som sedan omvandlades tillbaka med hjälp av funktionen txtPosition när placeringen faktiskt visas). När iPosition istället blev nil gjordes inte den ändringen, så nu har jag lagt till att nil hanteras på samma sätt som en tom sträng (så att det alltid bör finnas en iPosition). Jag har inte ändrat dina "temporära" ändringar då det inte är fel med hängslen och livrem. Är lite nyfiken på loggandet. Var kan man se den datan? (har inte använt det för felsökning innan, men utgår från att det är användbart :-) ) Gunnar Larsson (diskussion) 22 augusti 2024 kl. 17.58 (CEST)
- @Gunnar Larsson: Så här kan du se vad som skrivs i loggen av Lua-funktionerna mw.log() och mw.logObject() som jag använde här ovan:
- Gå in i redigeringsläget för modulen och lägg in de spårningsutskrifter du önskar. Du behöver inte spara sidan. Att ha skrivningar i loggen aktiva i produktion ska vi nog undvika, men under ett testskede kan det underlätta felsökningen väldigt mycket.
- Skriv in namnet på den artikel du vill testa på genom att skriva in sidnamnet i rutan Förhandsgranska sida med denna mall.
- Klicka på Visa förhandsgranskning
- Gå allra längst ner på sidan, till ▶ Profildata för parser, och klicka på ▶, som blir en ▼, och avsnittet öppnas (ibland är det redan öppet)
- Om det finns någon logg att läsa finns avsnittet Lua-loggar med en "Visa-länk" som du klickar på.
- Sen är det bara att läsa och försöka förstå vad som har hänt.
- Om jag har många spårningsutskrifter i en modul brukar jag skriva
mw.log('<radnumret>')
före varje annanmw.log()
ellermw.logObject()
för att jag lätt ska se var i koden respektive utskrift kommer från. Det borde ju finnas inbyggt som standard och det kanske det också gör, men det är inget som jag har hittat. Hojta till om du hittar det. - -- Larske (diskussion) 22 augusti 2024 kl. 20.51 (CEST)
- @Gunnar Larsson: Så här kan du se vad som skrivs i loggen av Lua-funktionerna mw.log() och mw.logObject() som jag använde här ovan: