Modul:Sportscompetition WD
Dokumentationen för denna modul kan skapas på Modul:Sportscompetition WD/dok
p= {}
local sd = require( 'Modul:Sportdata' )
local sd = require( 'Modul:Referenshantering' )
txtSerie="Serie"
txtSport="sport"
txtEdition="Upplaga"
txtResult="Resultat"
txtPeriod='Spelades'
txtWinner="Vinnare"
txtSecond="Tvåa"
txtThird="Trea"
txtInfoboxTemplate='Faktamall'
--Parameternames for the infobox tempate
txtLabel='etikett'
txtContent='innehåll'
txtHeader='rubrik'
--Help text
txtEditComment='Redigera uppgifter i faktarutan'
p.map = function(frame)
if (frame.args['id']) then
entityid=frame.args['id']
else
entityid=mw.wikibase.getEntityIdForCurrentPage()
end
if not (entityid==nil) then
missing={}
missingcoordinate={}
txtArea=frame.args['area'];
if (frame.args['id']) then
intWidth_px=frame.args['intWidth_px']
else
intWidth_px=370
end
leagueseason=mw.wikibase.getEntity(entityid)
local claims = leagueseason:getBestStatements( 'P1923' )
myArgs={txtArea,width=intWidthpx}
-- myArgs['width']=intWidth_px
-- txt=frame:expandTemplate{ title='Kartposition start', myArgs}
txt='{{Kartposition start |' .. txtArea .. ' |width=' .. intWidth_px .. '}}'
for key, value in pairs( claims ) do
idTeam = read(value,'id')
if (idTeam) then
txtTeam=txtWikilink( idTeam )
team=mw.wikibase.getEntity(idTeam)
claims2 = team:getBestStatements( 'P115' )[1]
if (claims2) then
idArena=read(claims2,'id')
arena=mw.wikibase.getEntity(idArena)
txtArena=txtWikilink( idArena )
claims3 = arena:getBestStatements( 'P625' )[1]
if (claims3) then
-- txt=txt..tmp .. tmp2 .. read(claims3,'longitude') .. ':' .. read(claims3,'latitude')
myArgs={ txtArea, lat=read(claims3,'latitude')}
myArgs['long']=read(claims3,'longitude')
myArgs['plats']='<span style="position:relative;top:0px;">' .. txtTeam .. '</span>'
-- txt=txt..frame:expandTemplate{title = "Kartposition markör", myArgs}
txt=txt .. '{{Kartposition markör|' .. txtArea .. ' |lat=' .. read(claims3,'latitude') .. ' |long=' .. read(claims3,'longitude') .. ' |markör= |plats=<span style="position:relative;top:0px;">' .. txtTeam .. '</span>}}'
-- txt=txt..tmp .. tmp2 .. tprint (claims3)
else
table.insert(missingcoordinate,txtArena)
end
else
table.insert(missing,txtTeam)
end
else
-- txt=txt..'A'
end
end
myArgs={txtArea,undertext='Placering av deltagande lag, elitserien 2020/2021'}
-- myArgs['undertext']="Placering av deltagande lag, elitserien 2020/2021"
txt=txt .. '{{Kartposition slut|Sverige|undertext=Placering av deltagande lag i ' .. getLabelByEntity(entityid) .. '.'
iCounter=0
for key, value in pairs( missing ) do
if (iCounter==0) then
txt = txt .. 'Data om hemmarena saknas för: ' .. value
else
txt = txt .. ', ' .. value
end
iCounter=iCounter+1
end
iCounter=0
for key, value in pairs( missingcoordinate ) do
if (iCounter==0) then
txt = txt .. 'Data om arenans koordinater saknas för: ' .. value
else
txt = txt .. ', ' .. value
end
end
txt = txt .. '}}'
-- txt=txt..frame:expandTemplate{ title="Kartposition slut",myArgs}
-- tmp = frame:expandTemplate{ title = "Faktamall" , args =myArgs}
-- return '<nowiki>' .. txt .. '</nowiki>'
txt=frame:preprocess(txt)
else
txt=''
end
return txt
end
p.infobox=function(frame)
if (frame.args['id']) then
entityid=frame.args['id']
else
entityid=mw.wikibase.getEntityIdForCurrentPage()
end
if not (entityid==nil) then
iCounter=1
entity=mw.wikibase.getEntity(entityid)
myArgs={}
wdTitle=getLabelByEntity( entityid )
myArgs={titel=wdTitle}
claimLeague=entity:getBestStatements( 'P3450' )[1]
if claimLeague then
idLeague=read(claimLeague,'id')
entityLeague=mw.wikibase.getEntity(idLeague)
idPrev=getPropertyId(claimLeague,'P155')
if idPrev then
txtPrev=txtWikilink(idPrev)
else
txtPrev=''
end
idNext=getPropertyId(claimLeague,'P156')
if idNext then
txtNext=txtWikilink(idNext)
else
txtNext=''
end
entitySport=entity:getBestStatements( 'P641' )[1]
if next(entitySport) then
idSport=read(entitySport,'id')
myArgs[txtLabel .. iCounter]=txtSerie .. " (" .. txtSport .. ")"
myArgs[txtContent .. iCounter]=firstToUpper(txtWikilink(idLeague)) .. " (" .. firstToUpper(txtWikilink(idSport)) .. ")"
else
myArgs[txtLabel .. iCounter]=txtSerie
myArgs[txtContent .. iCounter]=firstToUpper(txtWikilink(idLeague))
end
iCounter=iCounter+1
else
txtPrev=''
txtNext=''
end
txtEditionCount=entity:formatPropertyValues( 'P393' )
if txtEditionCount then
myArgs[txtLabel .. iCounter]=txtEdition
myArgs[txtContent .. iCounter]=txtEditionCount.value
iCounter=iCounter+1
end
formattedStart=entity:formatPropertyValues( 'P580' )
if formattedStart then
myArgs[txtLabel .. iCounter]=txtPeriod
myArgs[txtContent .. iCounter]=formattedStart['value'] .. ' - '
formattedEnd=entity:formatPropertyValues( 'P582' )
if formattedEnd then
myArgs[txtContent .. iCounter]=myArgs[txtContent .. iCounter] .. formattedEnd['value']
end
iCounter=iCounter+1
end
claimsTeams=entity:getBestStatements( 'P1923' )
first=0
second=0
third=0
for k, value in pairs(claimsTeams) do
iTeam=read(value,'id')
iPos=0
if (value.qualifiers) then
iPos=string.sub(readQualifier(value.qualifiers.P1352[1],'amount'),2,-1)
end
if (iPos=="1") then
first=iTeam
end
if (iPos=="2") then
second=iTeam
end
if (iPos=="3") then
third=iTeam
end
end
if (first>"0") then
myArgs[txtHeader .. iCounter]=txtResult
iCounter=iCounter+1
myArgs[txtLabel .. iCounter]=txtWinner
myArgs[txtContent .. iCounter]=txtWikilink(first)
iCounter=iCounter+1
if (second>"0") then
myArgs[txtLabel .. iCounter]=txtSecond
myArgs[txtContent .. iCounter]=txtWikilink(second)
iCounter=iCounter+1
if (third>"0") then
myArgs[txtLabel .. iCounter]=txtThird
myArgs[txtContent .. iCounter]=txtWikilink(third)
iCounter=iCounter+1
end
end
end
myArgs['under']='[https://www.wikidata.org/wiki/' .. entityid .. ' '.. txtEditComment .. ']<br>'.. frame:expandTemplate{ title = 'align' , args ={'left','← ' .. txtPrev}} .. frame:expandTemplate{ title = 'align' , args ={'right',txtNext .. ' →'}}
tmp = frame:expandTemplate{ title = txtInfoboxTemplate , args =myArgs}
return tmp
end
end
-- Funktion från https://stackoverflow.com/questions/41942289/display-contents-of-tables-in-lua
function tprint (tbl, indent)
if not indent then indent = 0 end
local toprint = string.rep(" ", indent) .. "{\r\n"
indent = indent + 2
for k, v in pairs(tbl) do
toprint = toprint .. string.rep(" ", indent)
if (type(k) == "number") then
toprint = toprint .. "[" .. k .. "] = "
elseif (type(k) == "string") then
toprint = toprint .. k .. "= "
end
if (type(v) == "number") then
toprint = toprint .. v .. ",\r\n"
elseif (type(v) == "string") then
toprint = toprint .. "\"" .. v .. "\",\r\n"
elseif (type(v) == "table") then
toprint = toprint .. tprint(v, indent + 2) .. ",\r\n"
else
toprint = toprint .. "\"" .. tostring(v) .. "\",\r\n"
end
end
toprint = toprint .. string.rep(" ", indent-2) .. "}"
return toprint
end
-- from: https://stackoverflow.com/questions/2421695/first-character-uppercase-lua
function firstToUpper(str)
if (str) then
return (str:gsub("^%l", string.upper))
else
return ''
end
end
return p