Module:Zandbak/RonnieV/NMBS
Uit Wiki Raamsdonks Erfgoed
Documentatie voor deze module kan aangemaakt worden op de volgende pagina: Module:Zandbak/RonnieV/NMBS/doc
p = {} -- an empty table
-- reizigersinformatie van een station
local function getmostrecentdate(qid)
statementstbl = mw.wikibase.getAllStatements( qid, 'P1373' )
local maxdatum = ''
for k, v in ipairs(statementstbl) do
local dtype = v.mainsnak.datatype
if dtype == "quantity" then
if v.mainsnak.datavalue ~= nil then
local value = v.mainsnak.datavalue.value.amount
local datum = mw.wikibase.renderSnaks( v.qualifiers.P585 )
local jaar = string.sub(datum, string.len(datum)-4)
if jaar > maxdatum then
maxdatum = jaar
end
end
end
end
return maxdatum
end
local function getdata(qid, gezochtjaar)
statementstbl = mw.wikibase.getAllStatements( qid, 'P1373' )
local aantaldoordeweek = '-'
local aantalzaterdag = '-'
local aantalzondag = '-'
local labels = ""
for k, v in ipairs(statementstbl) do
local dtype = v.mainsnak.datatype
if dtype == "quantity" then
if v.mainsnak.datavalue ~= nil then
local amount = string.sub(v.mainsnak.datavalue.value.amount,2)
local tv = v.qualifiers.P585
local datum = mw.wikibase.renderSnaks( tv )
local jaar = string.sub(datum, string.len(datum)-4)
if jaar == gezochtjaar then
local dag = v.qualifiers.P2894
local weekdag = mw.wikibase.renderSnaks( dag ) or ''
if weekdag == 'werkweek' then
aantaldoordeweek = amount
else
if weekdag == 'zaterdag' then
aantalzaterdag = amount
else
if weekdag == 'zondag' then
aantalzondag = amount
end
end
end
end
end
end
end
return aantaldoordeweek, aantalzaterdag, aantalzondag
end
local function getNMBStelling(qid, gezochtjaar)
aantaldoordeweek, aantalzaterdag, aantalzondag = getdata(qid, gezochtjaar)
labels = mw.getCurrentFrame():expandTemplate{title='NMBS Reizigerstellingen', args={aantaldoordeweek, aantalzaterdag, aantalzondag, ltrim(gezochtjaar)}}
return labels
end
local function getNMBStellingExpanded(qid, gezochtjaar)
if qid == nil then
labels = mw.getCurrentFrame():expandTemplate{title='NMBS Reizigerstellingen', args={'geen', 'metingen', 'bekend', ''}}
else
aantaldoordeweek, aantalzaterdag, aantalzondag = getdata(qid, gezochtjaar)
labels = mw.getCurrentFrame():expandTemplate{title='NMBS Reizigerstellingen', args={aantaldoordeweek, aantalzaterdag, aantalzondag, ltrim(gezochtjaar)}}
end
return labels
end
function ltrim(s)
return s:match'^%s*(.*)'
end
function p.getvoyagers(frame)
local qid = frame.args.qid or mw.wikibase.getEntityIdForCurrentPage()
local result
if qid == nil then
result = getNMBStelling(nil, nil) or ''
else
local date = getmostrecentdate(qid)
result = getNMBStelling(qid, date) or ''
end
return result
end
function p.getvoyagersexpanded(frame)
local qid = frame.args.qid or mw.wikibase.getEntityIdForCurrentPage()
local result
if qid == nil then
result = getNMBStellingExpanded(nil, nil) or ''
else
local date = getmostrecentdate(qid)
result = getNMBStellingExpanded(qid, date) or ''
end
return result
end
return p