Module:Sandbox/Habst/Athletics results

Revision as of 17:26, 4 July 2019 by imported>Habst (split event)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Sandbox/Habst/Athletics results/doc

p = {}

local P_POINTINTIME = 'P585'
local P_PARTICIPANTOF = 'P1344'
local P_SPORTSDISCIPLINE = 'P2416'

local P_RACETIME = 'P2781'
local P_POINTS = 'P1358'
local P_DISTANCE = 'P2043'
local marks = { P_RACETIME, P_POINTS, P_DISTANCE }

p.athleticsResults = function(frame)
	local qid = frame.args[1]
	local ent = mw.wikibase.getEntity(qid)
	local participantOfClaims = ent['claims'][P_PARTICIPANTOF]
	local years = {}
	local output = ''
	output = output .. '{| class="wikitable mw-collapsible" border="1" style="border-collapse:collapse; width:100%; font-size:90%;"\n'
	output = output .. '!colspan=11|Results for Usain Bolt\n'
	output = output .. '|-\n'
	output = output .. '!scope="col" style="width:5%;"|Date!!scope="col" style="width:20%;"|Meeting!!scope="col" style="width:10%;"|Location!!scope="col" style="width:10%;"|Ctry.!!scope="col" style="width:5%;"|Cat.!!scope="col" style="width:10%;"|Event!!scope="col" style="width:5%;"|H!!scope="col" style="width:5%;"|Pl.!!scope="col" style="width:10%;"|Perf.!!scope="col" style="width:5%;"|W!!scope="col" style="width:5%;"|N\n'
	for i, pc in ipairs(participantOfClaims) do
		mw.logObject(mw.wikibase.renderSnak(pc['mainsnak']))
		if pc['qualifiers'] then
			local fulldate = pc['qualifiers'][P_POINTINTIME][1]['datavalue']['value']['time']
			local year = fulldate:sub(2, 5)
			local serialized = fulldate -- e.g. "+2017-06-28T00:00:00Z" 21 characters long
			if pc['qualifiers'][P_SPORTSDISCIPLINE] then
				serialized = serialized .. '\'\'\'' .. mw.wikibase.renderSnak(pc['qualifiers'][P_SPORTSDISCIPLINE][1]) .. ':\'\'\' '
			end
			local markProperty = nil
			for j, pm in ipairs(marks) do
				if pc['qualifiers'][pm] then
					markProperty = pm
				end
			end
			if markProperty ~= nil then
				-- mw.logObject(pc['qualifiers'][markProperty])
				serialized = serialized .. mw.wikibase.renderSnak(pc['qualifiers'][markProperty][1]):match('([^±]*)')
			end
			meetname = mw.wikibase.renderSnak(pc['mainsnak'])
			if meetname ~= 'no value' then
				serialized = serialized .. ' at [[' .. meetname .. ']]'
			end
			if not years[year] then
				years[year] = {}
			end
			table.insert(years[year], serialized)
		end
	end
	yearsort = {}
    for n in pairs(years) do table.insert(yearsort, n) end
    table.sort(yearsort)
	for i, year in ipairs(yearsort) do
		--results = years[year]
		--ressort = {}
		--for k, v in pairs(results) do table.insert(ressort, v) end
		--table.sort(ressort)
		output = output .. '|-\n'
		output = output .. '|colspan=11 style="text-align:center; margin:0; padding:0;"|\n'
		output = output .. '{| class="wikitable mw-collapsible mw-collapsed" border="1" style="border-collapse:collapse; width:100%; margin:0;"\n'
		output = output .. '!colspan=11|' .. year .. '\n'
		for i, res in ipairs(years[year]) do
			output = output .. '|-\n'
			output = output .. '|style="width:5%;"|' .. res:sub(7,11)
			output = output .. '||style="width:20%;"|test' .. '||style="width:10%;"|[[Kingston]]||style="width:10%;"|Jamaica||style="width:5%;"|F'
			output = output .. '||style="width:10%;"|' .. '200 m'
			output = output .. '||style="width:5%;"|SF2||style="width:5%;"|1||style="width:10%;"|22.08||style="width:5%;"|0.0||style="width:5%;"|PB\n'
			-- output = output .. '  | ' .. res:sub(22) .. '\n'
		end
		output = output .. '  |}\n'
	end
	output = output .. '|}\n'
	return output
end
return p