Jump to content

Module:Grand Slam Track and Module:Grand Slam Track/sandbox: Difference between pages

(Difference between pages)
Page 1
Page 2
Content deleted Content added
+philly
 
combine col
 
Line 7: Line 7:
local P_RANK = 'P1352'
local P_RANK = 'P1352'
local P_RACETIME = 'P2781'
local P_RACETIME = 'P2781'
local P_ENDCAUSE = 'P1534'
local P_PRIZEMONEY = 'P2121'


local Q_SHORTSPRINTS = 'Q133805007'
local Q_SHORTSPRINTS = 'Q133805007'
Line 17: Line 15:
local Q_LONGDISTANCE = 'Q133805125'
local Q_LONGDISTANCE = 'Q133805125'


local Q_DNS = 'Q1210382'
local slams = {'Q133804597'} -- in chronological order
local Q_DNF = 'Q1210380'
local Q_DQ = 'Q1229261'

local slams = {'Q133804597', 'Q134348075', 'Q134688234'} -- in chronological order

local function toOrdinal(n)
n = math.floor(n)
local lastTwo = n % 100
if lastTwo >= 11 and lastTwo <= 13 then
return tostring(n) .. "th"
end
local last = n % 10
if last == 1 then
return n .. "st"
elseif last == 2 then
return n .. "nd"
elseif last == 3 then
return n .. "rd"
else
return n .. "th"
end
end

function addCommas(i)
return tostring(i):reverse():gsub("%d%d%d", "%1,"):reverse():gsub("^,", "")
end


p.gst = function(frame)
p.gst = function(frame)
Line 51: Line 23:
local output = ''
local output = ''
output = output .. '|-\n'
output = output .. '|-\n'
output = output .. '!scope="col" | Slam !!scope="col" | Race group !!scope="col" | Event !!scope="col" | <abbr title="Place">Pl.</abbr> !!scope="col" | Time !!scole="col" | Prize money\n'
output = output .. '!scope="col" | Slam !!scope="col" | Event !!scope="col" | <abbr title="Place">Pl.</abbr> !!scope="col" | Time\n'
local slamSet = {}
local slamSet = {}
for _, slamQid in ipairs(slams) do
for _, slamQid in ipairs(slams) do
slamSet[slamQid] = true
slamSet[slamQid] = true
end
end


Line 68: Line 40:


-- Slam
-- Slam
output = output .. 'rowspan=2| '
output = output .. 'rowspan=2 align=center| '
output = output .. '[[' .. mw.wikibase.renderSnak(pc['mainsnak']) .. ']]'
output = output .. '[[' .. mw.wikibase.renderSnak(pc['mainsnak']) .. ']]'
output = output .. ' || '


-- Race group
-- Race group
output = output .. 'rowspan=2| '
if qs[P_COMPETITIONCLASS] then
if qs[P_COMPETITIONCLASS] then
local cc = mw.wikibase.renderSnak(qs[P_COMPETITIONCLASS][1])
local cc = mw.wikibase.renderSnak(qs[P_COMPETITIONCLASS][1])
output = output .. cc:sub(1, 1):upper() .. cc:sub(2)
output = output .. '<br>'
output = output .. '\'\'' .. cc:sub(1, 1):upper() .. cc:sub(2) .. '\'\''
end
end
output = output .. '\n'
output = output .. '\n'


-- Place dupe fix
if qs[P_RACETIME] and qs[P_RACETIME][2] and qs[P_RANK] and qs[P_RANK][1] and not qs[P_RANK][2] and not qs[P_ENDCAUSE] then
qs[P_RANK][2] = qs[P_RANK][1]
end
-- End cause dupe fix
if qs[P_RACETIME] and qs[P_RACETIME][1] and qs[P_RACETIME][1]['snaktype'] == 'novalue' and not qs[P_RACETIME][2] then
qs[P_RACETIME][2] = qs[P_RACETIME][1]
end
for j = 1,2 do
for j = 1,2 do
-- Event
-- Event
Line 98: Line 61:
-- Place
-- Place
if qs[P_RANK] and qs[P_RANK][j] then
if qs[P_RANK] and qs[P_RANK][j] then
output = output .. toOrdinal(tonumber(mw.wikibase.renderSnak(qs[P_RANK][j])))
output = output .. mw.wikibase.renderSnak(qs[P_RANK][j])
end
end
output = output .. ' || '
output = output .. ' || '
Line 104: Line 67:
-- Time
-- Time
if qs[P_RACETIME] and qs[P_RACETIME][j] then
if qs[P_RACETIME] and qs[P_RACETIME][j] then
local timeStr = mw.wikibase.renderSnak(qs[P_RACETIME][j]):gsub(" second", "")
output = output .. mw.wikibase.renderSnak(qs[P_RACETIME][j]):gsub(" second", "")
if timeStr == 'no value' and qs[P_ENDCAUSE] then
local endCauseIdx = 1
if j == 2 and qs[P_ENDCAUSE][2] then endCauseIdx = 2 end
local endCause = qs[P_ENDCAUSE][endCauseIdx]['datavalue']['value']['id']
if endCause == Q_DNS then timeStr = 'DNS' end
if endCause == Q_DNF then timeStr = 'DNF' end
if endCause == Q_DQ then timeStr = 'DQ' end
end
local seconds = tonumber(timeStr)
if seconds and seconds >= 60 then
local minutes = math.floor(seconds / 60)
local remainingSeconds = seconds % 60
-- Format with leading zero for seconds if needed
output = output .. string.format("%d:%05.2f", minutes, remainingSeconds)
else
output = output .. timeStr
end
end
-- Prize money
if j == 1 and qs[P_PRIZEMONEY] then
output = output .. ' ||rowspan=2| '
output = output .. 'US$' .. addCommas(qs[P_PRIZEMONEY][1]['datavalue']['value']['amount']:sub(2))
end
end
output = output .. '\n|-\n'
output = output .. '\n|-\n'
Line 133: Line 73:
end
end
end
end
output = output .. '|}'
output = output .. '|}\n'
return output
return output
end
end