Hoppa till innehållet

Modul:Sportklubb WD

Från Wikipedia

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.

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:

  • 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