Module:Grand Slam Track and Module:Grand Slam Track/sandbox: Difference between pages
Appearance
(Difference between pages)
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 |
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 |
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 .. |
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 .. |
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 |
||
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 |