Module:Tabel Baanrecords (langebaanschaatsen)
{{#invoke:Tabel_Baanrecords_(langebaanschaatsen)|main |show_links=1 |show_tabel=1 |show_afstanden=1 |show_rest=1 |show_punten=1 |V_100_Naam=[[Jenny Wolf]] |V_100_Land={{GER}} |V_100_Tijd=10,21 |V_100_Datum=06-03-2009 |V_500_Naam=[[Sang-Hwa Lee]] |V_500_Land={{KOR}} |V_500_Tijd=36,36 |V_500_Datum=16-11-2013 |V_1000_Naam=[[Brittany Bowe]] |V_1000_Land={{USA}} |V_1000_Tijd=1.12,18 |V_1000_Datum=22-11-2015 |V_1500_Naam=[[Heather Richardson-Bergsma]] |V_1500_Land={{USA}} |V_1500_Tijd=1.50,85 |V_1500_Datum=21-11-2015 |V_Achtervolging_Naam=[[Linda de Vries]]<br/>[[Antoinette de Jong]]<br/>[[Ireen Wüst]] |V_Achtervolging_Land={{NED}} |V_Achtervolging_Tijd=2.56,02 |V_Achtervolging_Datum=17-11-2013 |V_3000_Naam=[[Martina Sáblíková]] |V_3000_Land={{CZE}} |V_3000_Tijd=3.56,30 |V_3000_Datum=11-12-2009 |V_5000_Naam=[[Martina Sáblíková]] |V_5000_Land={{CZE}} |V_5000_Tijd=6.42,66 |V_5000_Datum=18-02-2011 |V_10000_Naam=[[Eva Rodansky]] |V_10000_Land={{USA}} |V_10000_Tijd=15.45,88 |V_10000_Datum=06-03-2005 |V_Sprint_Naam=[[Heather Richardson]] |V_Sprint_Land={{USA}} |V_Sprint_Tijd=148,015 |V_Sprint_Datum=26-01-2013 |V_Mini_Naam=[[Eva Rodansky]] |V_Mini_Land={{USA}} |V_Mini_Tijd=163,243 |V_Mini_Datum=28-02-2004 |V_Kleine_Naam=[[Cindy Klassen]] |V_Kleine_Land={{CAN}} |V_Kleine_Tijd=159,605 |V_Kleine_Datum=08-01-2005 |V_2X500_Naam=[[Heather Richardson]] |V_2X500_Land={{USA}} |V_2X500_Tijd=74,190 |V_2X500_Datum=27-12-2013 |M_100_Naam=[[Yuya Oikawa]] |M_100_Land={{JPN}} |M_100_Tijd=09,40 |M_100_Datum=06-03-2009 |M_500_Naam=[[Pavel Koelizjnikov]] |M_500_Land={{RUS}} |M_500_Tijd=33,98 |M_500_Datum=20-11-2015 |M_1000_Naam=[[Shani Davis]] |M_1000_Land={{USA}} |M_1000_Tijd=1.06,42 |M_1000_Datum=07-03-2009 |M_1500_Naam=[[Shani Davis]] |M_1500_Land={{USA}} |M_1500_Tijd=1.41,04 |M_1500_Datum=11-12-2009 |M_3000_Naam=[[Håvard Bøkko]] |M_3000_Land={{NOR}} |M_3000_Tijd=3.39,29 |M_3000_Datum=28-02-2009 |M_Achtervolging_Naam=[[Jan Blokhuijsen]]<br/>[[Sven Kramer]]<br/>[[Koen Verweij]] |M_Achtervolging_Land={{NED}} |M_Achtervolging_Tijd=3.35,60 |M_Achtervolging_Datum=16-11-2013 |M_5000_Naam=[[Sven Kramer]] |M_5000_Land={{NED}} |M_5000_Tijd=6.04,59 |M_5000_Datum=17-11-2013 |M_10000_Naam=[[Ted-Jan Bloemen]] |M_10000_Land={{CAN}} |M_10000_Tijd=12.36,30 |M_10000_Datum=21-11-2015 |M_Sprint_Naam=[[Michel Mulder]] |M_Sprint_Land={{NED}} |M_Sprint_Tijd=136,790 |M_Sprint_Datum=26-01-2013 |M_Mini_Naam=[[Ronald Macky]] |M_Mini_Land={{USA}} |M_Mini_Tijd=150,809 |M_Mini_Datum=05-03-2005 |M_Kleine_Naam=[[Paul Dyrud]] |M_Kleine_Land={{USA}} |M_Kleine_Tijd=153,348 |M_Kleine_Datum=29-01-2005 |M_Grote_Naam=[[Shani Davis]] |M_Grote_Land={{USA}} |M_Grote_Tijd=147,755 |M_Grote_Datum=27-12-2007 |M_2X500_Naam=[[Kang-Seok Lee]] |M_2X500_Land={{KOR}} |M_2X500_Tijd=68,690 |M_2X500_Datum=08-03-2007 }}
De weergave van de tabellen kunnen als volgt ingesteld worden
Parameter | Doel |
---|---|
show_links | Geeft de links weer van de desbetreffende afstanden (1=aan,0=uit) |
show_tabel | 1=Zet de tabellen van de vrouwen en mannen naast elkaar, 0=Zet de desbetreffende tabellen onder elkaar |
show_afstanden | Geeft de klassieke afstanden weer (500m,1000m,1500m,3000m,5000m,10.000m) (1=aan,0=uit) |
show_rest | Geeft overige afstanden weer (1=aan,0=uit) |
show_punten | Geeft de totaalpunten weer van de records op klassieke afstanden (excl. 3000m mannen en 10.000 vrouwen) (1=aan,0=uit) |
De parameters om gegevens in te voegen is als volgt opgebouwd. geslacht_rij_kolom
Parameter | Doel |
---|---|
Geslacht | |
V | Vrouwen |
M | Mannen |
Rij | |
100 | 100 meter |
500 | 500 meter |
1000 | 1000 meter |
1500 | 1500 meter |
3000 | 3000 meter |
5000 | 5000 meter |
10000 | 10.000 meter |
Achtervolging | Ploegenachtervolging |
Teamsprint | Teamsprint |
2X500 | 2 x 500 meter |
Sprint | Sprint vierkamp (2 x 500m en 2 x 1000m) |
Mini | Mini vierkamp (500m,1000m,1500m,3000m) |
Kleine | Kleine vierkamp (500m,1500m,3000m,5000m) |
Grote | Grote vierkamp (500m,1500m,5000m,10.000m) |
overige | Je kan zelf een rij creëren met een elk gewenste naam |
Kolom | |
Afstand | indien een overige rij is aangemaakt geef je hier de tekst die in kolom afstand moet worden weergegeven In ander gevallen wordt er een extra regel toegevoegd in de desbetreffende kolom |
Naam | Naam van de schaatser/schaatsster |
Land | Land waarvoor de schaatser/schaatsster uitkomt |
Tijd | Tijd de schaatser/schaatsster |
Datum | Datum waarop het record is gereden |
}}
local p = {}
bit = require( 'bit32' )
function nul(nr)
if nr == nil then
return 0
else
return nr
end
end
function parse(time)
if(time == nil or string.len(time) == 0) then return 0 end
s, h = string.match(time, "(%d+),(%d+)")
m = string.match(time, "(%d+)%.")
m = nul(m)
s = nul(s)
h = nul(h)
return ((m*60)+s) .. "." .. h
end
db = {
pos = {
["100"] = 0,
["500"] = 1,
["1000"] = 2,
["1500"] = 3,
["3000"] = 4,
["5000"] = 5,
["10000"] = 6,
["Achtervolging"] = 10,
["Teamsprint"] = 15,
["2X500"] = 20,
["Sprint"] = 30,
["Mini"] = 40,
["Kleine"] = 50,
["Grote"] = 60
},
links = {
["100"] = "100_meter_(schaatsen)",
["500"] = "500_meter_(schaatsen)",
["1000"] = "1000_meter_(schaatsen)",
["1500"] = "1500_meter_(schaatsen)",
["3000"] = "3000_meter_(schaatsen)",
["5000"] = "5000_meter_(schaatsen)",
["10000"] = "10.000_meter_(schaatsen)",
["Achtervolging"] = "Ploegenachtervolging_(schaatsen)",
["Teamsprint"] = "Teamsprint_(schaatsen)",
["2X500"] = nil,
["Sprint"] = nil,
["Mini"] = nil,
["Kleine"] = "Kleine_vierkamp",
["Grote"] = "Grote_vierkamp"
},
name = {
["100"] = "100 m",
["500"] = "500 m",
["1000"] = "1000 m",
["1500"] = "1500 m",
["3000"] = "3000 m",
["5000"] = "5000 m",
["10000"] = "10.000 m",
["Achtervolging"] = "Ploegen-<br>achtervolging",
["Teamsprint"] = "Teamsprint",
["2X500"] = "2×500 m",
["Sprint"] = "Sprintvierkamp",
["Mini"] = "Minivierkamp",
["Kleine"] = "Kleine vierkamp",
["Grote"] = "Grote vierkamp"
},
cat = {
["100"] = 12,
["500"] = 3,
["1000"] = 3,
["1500"] = 3,
["3000"] = 9,
["5000"] = 3,
["10000"] = 6,
["Achtervolging"] = 12,
["Teamsprint"] = 12,
["2X500"] = 12,
["Sprint"] = 12,
["Mini"] = 12,
["Kleine"] = 12,
["Grote"] = 12
},
bit = {
["V"] = 5,
["M"] = 10
}
}
punt = {}
punt.V = 0
punt.M = 0
function creattable(t,a,g,frame)
table.insert(t,"{| class=\"wikitable\"")
if g == "V" then table.insert(t,"|+ Vrouwen")
elseif g == "M" then table.insert(t,"|+ Mannen")
end
local l = ""
if g == "V" then l = "Schaatsster"
elseif g == "M" then l = "Schaatser"
end
table.insert(t,"!Afstand || "..l.." || Land || Tijd || Datum")
local d = {}
local c = {}
for key,value in pairs(a) do
if db.pos[key] then table.insert(d, key)
else table.insert(c, key) end
end
table.sort(d,function(a,b)
return tonumber(db.pos[b]) > tonumber(db.pos[a])
end)
table.sort(c)
for i,n in ipairs(c) do table.insert(d,n) end
local p = true
for i,n in ipairs(d) do
if Show.punten and p and db.pos[n] > 9 then
p = false
table.insert(t,"|-\n|colspan=\"3\"| '''Puntentotaal\n|colspan=\"2\"| '''"..string.format("%.3f",punt[g]))
end
if db.cat[n] == nil then db.cat[n] = 252 end
if a[n].Tijd and bit.band(db.bit[g],db.cat[n],3) ~= 0 then
punt[g] = punt[g]+(math.floor(parse(a[n].Tijd)*1000/(n/500))/1000)
end
if (bit.band(db.bit[g],db.cat[n],12) ~= 0 and Show.rest) or (bit.band(db.bit[g],db.cat[n],3) ~= 0 and Show.afstanden) then
if Show.punten and bit.band(db.bit[g],db.cat[n],3) == 0 and db.pos[n] < 10 then
table.insert(t,"|- bgcolor=FFFFDD")
else
table.insert(t,"|-")
end
local l = "|"
if Show.links and db.links[n] then l = l.."[["..db.links[n].."|"..db.name[n].."]]"
elseif db.name[n] then l = l..db.name[n]
elseif a[n].Afstanden == nil then l = l..n
end
if a[n].Afstanden then
if string.len(l) > 1 then l = l.."<br/>" end
l = l..a[n].Afstanden
end
l = l.." || "
if a[n].Naam then l = l..a[n].Naam end
l = l.." || "
if a[n].Land then l = l..a[n].Land end
l = l.." || "
if a[n].Tijd then l = l..a[n].Tijd end
l = l.." || "
if a[n].Datum then l = l..a[n].Datum end
table.insert(t,l)
end
end
if Show.punten and p then
table.insert(t,"|-\n|colspan=\"3\"| '''Puntentotaal\n|colspan=\"2\"| '''"..string.format("%.3f",punt[g]))
end
table.insert(t,"|}")
return t
end
Args = {}
Show = {
rest = true,
afstanden = true,
punten = false,
mannen = true,
vrouwen = true,
tabel = true
}
function p.main(frame)
Args = frame.args
t = {}
local r = {}
r.V = {}
r.M = {}
for key,value in pairs(Args) do
s = string.match(key, "show_(.*)")
if s and value == "1" then
Show[s] = true
end
if s and value == "0" then
Show[s] = false
end
g,a,p = string.match(key, "([^_]*)_(.*)_([^_]*)")
if g and a and p then
if r[g][a] == nil then
r[g][a] = {}
end
r[g][a][p] = value
end
end
local vr = (table.getn(r.V) and Show.vrouwen)
local ma = (table.getn(r.M) and Show.mannen)
local ta = (Show.tabel)
if ta then table.insert(t,"{|\n| valign=\"top\" |") end
if vr then t = creattable(t,r.M,"M",frame) end
if vr and ma and ta then table.insert(t,"| width=\"10px\" |\n| valign=\"top\" |") end
if ma then t = creattable(t,r.V,"V",frame) end
if vr and ma and ta and Show.punten then
table.insert(t,"|-\n|colspan=\"2\"| '''Gezamenlijk puntentotaal || '''"..string.format("%.3f",punt.V+punt.M))
end
if ta then table.insert(t,"|}") end
return table.concat(t,"\n")
end
return p