Module:Zandbak/RonnieV/NMBS

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Naar zoeken springen

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