Modul:Sportklubb WD
Dokumentation [visa] [redigera] [historik] [rensa sidcachen]
Detta är en modul för att information om sportklubbar och landslag. Modulen hämtar uppgifter från Wikidata och lägger in det i Mall:Faktamall. Modulen anropas genom att lägga in {{#Invoke:Sportklubb WD | club}} i artikeln.
Argument
[redigera wikitext]Vanligen behövs inga andra argument, men modulen kan anropas med nedanstående argument:
- id - id för en entitet på wikidata, som t.ex. Hylte/Halmstad VBK (Q3143961) för Hylte/Halmstad VBK. Argumentet behövs vanligen inte då modulen läser av det direkt om sidan är länkad till wikidata. Däremot är det användbart om sidan på Wikipedia av en eller annan anledning inte är länkad till wikidata.
- width_px - bredd (i pixel) för bild eller logotyp som visas. Användbart framförallt om infoboxen annars skulle bli alldeles för bred.
Beskrivning
[redigera wikitext]Modulen består av följande delar:
- Grundläggande data om klubben (bild (P18) eller bild av logotyp (P154), datum för grundande eller skapande (P571), säte (P159), hemmaplan (P115) och officiell webbplats (P856)). Uppgifterna hämtas från motsvarande uppgifter i Wikidata.
- Uppgifter om klubbens resultat. Dessa sorteras efter typ av turnering (t.ex. nationell serie eller cup, olika internationella turneringar). Om klubben är aktiv inom fler tävlingsklasser (t.ex. olika sporter och/eller för olika kön) sorteras de även efter dessa. Uppgifterna hämtas från entitetens deltog i (P1344). Uppgifterna om typ av turnering hämtas från den länkade tävlingens sportsäsong av serie eller tävling (P3450) och tävlingsklass från sportsäsongens tävlingsklass (P2094).
- Tränare för klubben. Dessa hämtas från huvudtränare (P286) och sorteras efter tidpunkten då personen startade som tränare.
- Klubbens namn i olika sammanhang. Denna hämtas från namn (P2561) och sorteras efter tidpunkt då namnet började användas (om det är känt)
För alla delar gäller att de bara visas i infoboxen om det finns några inlagda uppgifter (t.ex. visas inte individuella utmärkelser om det inte finns några inlagda).
Felsökning
[redigera wikitext]Modulen försöker visa ett meddelande direkt i sidan om information saknas på wikidata som gör att den inte kan visa informationen på det sätt som det är tänkt. Detta sker vanliga genom att använda Mediawikis referenssystem (d.v.s. ni ser en siffra i upphöjd format som när ni klickar på den tar er till sidans referensdel där det finns mer information).
Om du får ett meddelande som börjar Luafel i Modul:Sportklubb_WD skriv gärna ett meddelande på modulens diskussionssida.
p = {}
local rm = require( 'Modul:Referenshantering' )
local sd = require( 'Modul:Sportdata' )
p.iRefcounter=0
p.infobox = function(frame)
p.frame=frame
p=p.data()
myArgs=p.tblInfobox_canvas()
p.iCounter=0
if p.image then
showImage(p.image)
else
if p.logo and (not(p.frame.args['hidelogo'])) then
showImage(p.logo)
end
end
p.showpartininfobox(localisation.txtFoundedDateLabel,'founded',true)
p.loopitems(localisation.txtSeatLabel,'location',showPlace,nil,', ',localisation.txtAnd)
p.loopitems(localisation.txtHomeVenueLabel,'homevenues',showVenue,nil,', ',localisation.txtAnd)
p.showpartininfobox(localisation.txtDissolvedDateLabel,'dissolved')
p.loopitems(localisation.txtWebsiteLabel,'website',nil,{'data'},', ',localisation.txtAnd)
p.loopitems(localisation.txtNickNameLabel,'nickname',nil,{'data'},', ',localisation.txtAnd)
p.loopitems(localisation.txtSportLabel,'arraySports',nil,{'data'},', ',localisation.txtAnd)
bHasKit1,kit1=getKit(frame,1,txtHomeKit)
bHasKit2,kit2=getKit(frame,2,txtAwayKit)
bHasKit3,kit3=getKit(frame,3,txt3rdKit)
bHasKit=bHasKit1 or bHasKit2 or bHasKit3
if (bHasKit) then
p.iCounter=p.iCounter+1
myArgs[txtContent .. p.iCounter]='<table bgcolor=#ffffff><tr><td>' ..kit1 .. '</td><td>' .. kit2 .. '</td><td>' .. kit3 .. '</td></tr></table>'
myArgs[txtContent .. p.iCounter .. txtStyle]='background:#ffffff'
end
p.iViewAlternativeTemporalData=1
-- Results--
showPerCompetitionClass(localisation.txtResult,nil,"results",function (item) p.resulttable(item,'background:'..localisation.txtResultColour..';') end,function (item) p.resulttable(item) end)
if p.txtPlayerCategory~=nil then
p.addHeader(localisation.txtPlayersHeaders)
-- p.addContent('[[:' .. p.txtPlayerCategory .. '|' .. localisation.txtPlayersDescription .. ']]')
p.iCounter=p.iCounter+1
myArgs[localisation.txtContent .. p.iCounter]='[[:' .. p.txtPlayerCategory .. '|' .. localisation.txtPlayersDescription .. ']]'
end
-- Coaches--
showPerCompetitionClass(localisation.txtClubCoachesHeader,localisation.txtCoachDescriptionLabel,"coaches",function (item) p.showovertime(localisation.txtNameHeader,item) end,function (item) p.showovertime(localisation.txtNameHeader,item) end)
-- p.showtemporalpartininfobox(localisation.txtClubCoachesHeader,localisation.txtCoachDescriptionLabel,localisation.txtNameHeader,p.coaches)
p.showtemporalpartininfobox(localisation.txtNamesHeader,localisation.txtNamesDescription,localisation.txtNameHeader,p.names)
-- Under --
myArgs['under']='[https://www.wikidata.org/wiki/' .. p.objectMainId .. ' '.. localisation.txtEditComment .. ']'
p.lastchecked()
p.dochecks()
return frame:expandTemplate{ title = localisation.txtTemplate .. ':' .. localisation.txtInfoboxTemplate , args =myArgs}
end
p.dochecks=function()
if (rm.iSourcesMissing>=settings.iMaxSourcesMissingWithoutWarning) then
myArgs['under']=myArgs['under'] .. '[[' .. localisation.txtCategory .. ':' .. localisation.txtManyMissingSourcesCategory .. ']]'
end
if (p.iCounter<2) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtFewItems .. ']]'
end
if (p.isClub==true) then
if (#(p.location)==0) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtMissingLocation .. ']]'
end
if (#(p.homevenues)==0) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtMissingHomeVenue .. ']]'
end
if (not p.founded) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtMissingFounded .. ']]'
end
end
if (not p.arraySports) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtMissingSport_Club .. ']]'
end
local unrankedcompetition=p.filter_advanced(p,'results',{'iCompetitionRank'},{9999999})
if (#unrankedcompetition>0) then
myArgs['under']=myArgs['under']..'[['..localisation.txtCategory .. ':' .. localisation.txtCompetitionMissingCompetitionRank .. ']]'
end
end
p.data = function()
if (p.frame.args['qid']) then
p.objectMainId=p.frame.args['qid'] else
p.objectMainId=mw.wikibase.getEntityIdForCurrentPage()
end
-- get main id (if set in call use that, otherwise use connected object)
tmpBasicData=getGeneralInformation(p.objectMainId,true)
p=merge(p,tmpBasicData)
p.objectIds={}
-- get part ids (if set in call use that, otherwise use P527 [part of])
if (not(isempty(p.frame.args['qids']))) then
p.objectIds = split(p.frame.args['qids'],",")
else
claimParts=mw.wikibase.getBestStatements(p.objectMainId, 'P527' )
for key, value in pairs( claimParts ) do
idPart=value.mainsnak.datavalue.value.id
table.insert(p.objectIds,idPart)
end
end
if #p.objectIds>0 then
for i, value in ipairs(p.objectIds) do
p[value]=getGeneralInformation(value,false)
end
end
return p
end
function showVenue(data)
local txt=data.txtWikilink .. txtUnpackReference_model(p.frame,data.ref,data.qid,data.pid)
--.. txtEditPen(data.qid,data.pid)
if data.capacity then
txt=txt.. ' (' .. data.capacity.data .. ' ' .. localisation.txtSeats .. ')'
txt = txt .. txtUnpackReference_model(p.frame,data.capacity.ref,data.capacity.qid,data.capacity.pid)
--.. txtEditPen(data.capacity.qid,data.capacity.pid)
end
return txt
end
function getKit(myframe,number,title)
bHasKit=false
if ((myframe.args['body'..number]~=nil and myframe.args['body'..number]~='') or (myframe.args['pattern_b'..number]~=nil and myframe.args['pattern_b'..number]~='')) then
arrayKit={pattern_la =myframe.args['pattern_la'..number], pattern_b=myframe.args['pattern_b'..number], pattern_ra =myframe.args['pattern_ra'..number], leftarm =myframe.args['leftarm'..number],body= myframe.args['body'..number], rightarm =myframe.args['rightarm'..number],shorts=myframe.args['shorts'..number],socks =myframe.args['socks'..number], titel = title}
kit = myframe:expandTemplate{ title = localisation.txtTemplate .. ':' .. localisation.txtKitTemplate , args =arrayKit}
bHasKit=true
else
kit=''
end
return bHasKit,kit
end
function getCoaches (iTeam)
local coaches={}
local claimsCoaches= mw.wikibase.getBestStatements(iTeam, 'P286' )
for key, value in pairs( claimsCoaches ) do
local coach={}
coach.id = read(value,'id')
coach.data=txtWikilink(coach.id)
coach.from,coach.to = readDates(value)
coach.iCompetitionClass = getQualifierId(value,'P2094')
-- coach.competitionClass = getQualifier(value,'P2094')
coach.bHasRef,coach.ref=processAllRefsForWDItem_model(value.references,iTeam)
coach.qid=iTeam
coach.pid='P286'
table.insert(coaches,coach)
end
return coaches
end
function getNames (iTeam)
local names={}
local claimNames= mw.wikibase.getBestStatements(iTeam, 'P2561' )
for key, value in pairs( claimNames ) do
local name={}
name.data = read(value,'text')
name.from,name.to = readDates(value)
name.bHasRef,name.ref=processAllRefsForWDItem_model(value.references,iTeam)
name.qid=iTeam
name.pid='P2561'
table.insert(names,name)
end
return names
end
function getGeneralInformation(qid,ismain)
ret={}
ret.label=getLabelByEntity(qid)
ret.image=getImage(qid,'P18')
ret.logo=getImage(qid,'P154')
ret.founded=useStatement(qid, 'P571' )
ret.dissolved=useStatement(qid, 'P576' )
ret.arraySports=useStatement(qid, 'P641' )
claimSports=mw.wikibase.getBestStatements(qid, 'P641' )
if (ismain) then
ret.location=getLocation (qid,'P159',true)
ret.isClub=isClub(qid,'P31')
ret.isNationalTeam=isNationalTeam(qid,'P31')
end
ret.homevenues=getHomeVenues(qid)
ret.website=useStatement(qid, 'P856' )
ret.nickname=useStatement(qid, 'P1449' )
-- ret.coaches=useStatement (qid,'P286')
ret.coaches=getCoaches (qid)
ret.results=getResults(qid)
ret.names=getNames(qid)
local claimsPlayersCategory = mw.wikibase.getBestStatements(qid, 'P6112' )
if next(claimsPlayersCategory) then
ret.txtPlayerCategory=mw.wikibase.getSitelink(read(claimsPlayersCategory[1],'id'))
end
return ret
end
function showPerCompetitionClass(txtHeader,txtDescription,txtTypeOfInformation,executeIfHasCompetitionClasses,executeIfHasntCompetitionClasses)
local arrayCompetitionClasses=listalluniques(p.all(p,txtTypeOfInformation),"iCompetitionClass")
-- arrayCompetitionClasses=listalluniques(p.all(p,"results"),"iCompetitionClass")
if (#p[txtTypeOfInformation]>0) then
p.addHeader(txtHeader,nil,txtDescription)
end
if (#arrayCompetitionClasses>0) then -- Only show competition class header if there are some
for i=1,#arrayCompetitionClasses do
if (#arrayCompetitionClasses>1) then -- Only show competition class header if more than one competition class
-- p.addHeader(firstToUpper(getLabelByEntity(arrayCompetitionClasses[i])),'background:#555555;color:#ffffff')
p.addHeader(firstToUpper(getLabelByEntity(arrayCompetitionClasses[i])),'background:'..localisation.txtResultColour)
end
tmp=p.filter_advanced(p,txtTypeOfInformation,{'iCompetitionClass'},{arrayCompetitionClasses[i]})
executeIfHasCompetitionClasses(tmp)
-- p.resulttable(tmp,'background:'..localisation.txtResultColour..';')
end
else
executeIfHasntCompetitionClasses(p[txtTypeOfInformation])
-- p.resulttable(p[txtTypeOfInformation])
end
end
return p