User:Psemdel
Jump to navigation
Jump to search
function UCIcalendar_translate(wiki, x)
local l10nDef = { }
l10nDef["fr"] = {"Calendrier UCI", "Date", "Course", "Pays", "Classe", "Vainqueur", "Deuxième", "Troisième"}
l10nDef["en"] = {"UCI Calendar", "Date", "Race", "Country", "Class", "Winner", "Second", "Third"}
l10nDef["de"] = {"UCI Kalender", "Datum", "Rennen", "Staat", "Klasse", "Sieger", "Zweiter", "Dritter"}
l10nDef["da"] = {"","Dato", "Løb", "Land", "Klasse", "Vinder","Toer", "Treer"}
l10nDef["es"] = {"", "Fecha", "Carrera", "País", "Clase", "Ganador","Segundo", "Tercero"}
l10nDef["ja"] = {"", "開催日", "レース", "国", "国", "勝者","準優勝", "3位"}
l10nDef["lv"] = {"", "Datums", "Sacensības", "Valsts", "Kategorija", "Uzvarētājs","Otrais", "Trešais"}
l10nDef["mk"] = {"", "Датум", "Трка", "Земја", "Класа", "Победник", "Второпласиран", "Третопласиран"}
l10nDef["no"] = {"", "Dato", "Ritt", "Land", "Klasse", "Vinner","Andreplass", "Tredjeplass"}
l10nDef["ru"] = {"", "Дата", "Гонка", "Страна", "Класс", "Победитель","Второй", "Третий"}
local l10n = l10nDef[wiki]
if not l10n then l10n = l10nDef["fr"] end -- default
return l10n[x]
end
function p.womenucicalendar(frame)
----- function to display UCI women calendar of one year ----
----- based on victories function -----
----- author: psemdel -----
local onlywinner, year, headertemp, startofseason
if frame.args[1] ~= nil then
year= string.gsub(frame.args[1], "%c", "")
else
year = "2018"
end
if year == "2018" then calendarID="Q47005682"
elseif year == "2017" then calendarID="Q27765666"
elseif year == "2016" then calendarID="Q22696468"
elseif year == "2015" then calendarID="Q18348936"
elseif year == "2014" then calendarID="Q15831496"
elseif year == "2013" then calendarID="Q6425932"
elseif year == "2012" then calendarID="Q2466796"
elseif year == "2011" then calendarID="Q2466792"
elseif year == "2010" then calendarID="Q2933831"
elseif year == "2009" then calendarID="Q2933830"
elseif year == "2008" then calendarID="Q2933828"
elseif year == "2007" then calendarID="Q3650627"
elseif year == "2006" then calendarID="Q16154659"
end --else nil
if frame.args[2] ~= nil then
onlywinner =tonumber(frame.args[2])
else
onlywinner=1
end
if onlywinner==1 then
headertemp={2, 3, 4, 5, 6}
else
headertemp={2, 3, 4, 5, 6, 7, 8}
end
local s = {
header_function = UCIcalendar_translate, -- translations are in function victories_translate
header_1 = 1, -- translation 1 in function victories_translate is printed in the upper part of the table header
header_2 = headertemp,-- translations 2, 3, 4, 5, 6 in function victories_translate are printed in this order
-- in the lower part of the table header. The second value 3 in {4, 3} tells where the icon will go.
data_type = {'date', 'race', 'country', 'class', 'rider'},
country_column = 3,
flag_column = 2,
data_sort_type = {'', 'unsortable', '', '', '','',''}, -- see https://meta.wikimedia.org/wiki/Help:Sorting
item = calendarID,
property = 'P527',
no_country = {},
only_winner = onlywinner, --display only the winner or 1st,2nd and 3rd
error_message = 0
}
return tableA(s, womenucicalendar_main(s))
end
function womenucicalendar_main(s)--Display the UCI women calendar of one year, function similar to listofwinners
local calendarID=s.item
local h = {}
local country = true
local sortkey, sortkey_class
local tBody = ''
local tableBody, sortindex = {}, {}
local a1, b1, c1
local timeofrace
------- Declaration of the classes ------
-- Class of a cycling race. Class is: 1.UWT, 2.UWT, 1.HC, ... add new classes, no problem
local class = { "Q22231106", "Q22231107", "Q22231108", "Q22231109", "Q22231110", "Q22231111", "Q22231112",
"Q22231113", "Q22231114", "Q22231115", "Q22231116", "Q22231117", "Q22231118", "Q22231119", "Q23015458", "Q23005601", "Q23005603" }
local class_2x = {"Q22231107", "Q23005603", "Q22231115", "Q22231109", "Q22231112", "Q22231113", "Q22231117"} --multi stage races
-- 1.UWT, 2.UWT, 1.HC, 2.HC, 1.1, 1.2, 2.1, 2.2, 1.Ncup, 2.Ncup, 1.2U, 2.2U, CC, CN, CDM, 1.WWT, 2.WWT
-- CC, CDM,
-- 1.UWT, 2.UWT, 1.WWT, 2.WWT, 2.Ncup, 1.Ncup, 2.HC, 1.HC, 2.1, 1.1, 2.2, 2.2U, 1.2, 1.2U, CN
-- https://fr.wikipedia.org/wiki/Projet:Cyclisme/Usages#Victoires
local class_sort={["Q22231106"]='01', ["Q22231107"]='01', ["Q23005601"]='01', ["Q23005603"]='01', ["Q22231115"]='01', -- 1.UWT, 2.UWT, 1.WWT, 2.WWT, 2.Ncup
["Q22231114"]='02', ["Q22231109"]='03', ["Q22231108"]='04', ["Q22231112"]='05', ["Q22231110"]='06', -- 1.Ncup, 2.HC, 1.HC, 2.1, 1.1
["Q22231113"]='07', ["Q22231117"]='07', ["Q22231111"]='08', ["Q22231116"]='08', ["Q22231119"]='09', --2.2, 2.2U, 1.2, 1.2U, CN
["Q22231118"]='13', ["Q23015458"]='15' }
local stages = {'Q18131152', 'Q20646667', 'Q20646670', 'Q20680270', 'Q20646668', 'Q20679712', 'Q2348250', 'Q2266066', 'Q485321'}
-- UCI Europe Tour,..., UCI ProTour, UCI World Calendar, UCI WorldTour, UCI Women’s WorldTour, UCI Women's Road World Rankings
local UCI_Circuits = {'Q1194340', 'Q1063423', 'Q1063430', 'Q268357', 'Q1039648', 'Q1329578', 'Q12270097', 'Q635366', 'Q21075974', 'Q1693153'}
-- Displayed classes for UCI women calendar
local displayed_class = {"Q22231109","Q22231110","Q22231111","Q22231112","Q22231113";"Q22231118"}
----- Test if everything is fine -----
_, _, s.item = string.find(s.item, "(%w+)")
local entity = mw.wikibase.getEntityObject( s.item )
pcall(function() test = entity.claims[s.property][1].mainsnak.snaktype end)
if test == 'somevalue' or test == 'novalue' then s.error_message = 2 return '' end
if pcall(function() test = entity.claims[s.property][1].mainsnak.datavalue.value['numeric-id'] end)
then else s.error_message = 1 return ''
end
for _, value in pairs(s.no_country) do -- get data if country should be printed in this wiki
if value == wiki then country = false end
end
--------- Definition local functions ------
function fn_date(h,entity_race)
local i
sortkey=''
for _,property in ipairs({"P585","P582", "P580"}) do
-- give time dates, when property 'point in time', 'start time' or 'end time' is used
a1, b1, c1 = pcall(fooA, 'time', entity_race, property, 1)
if a1 == true and h['time'] == '' then i = 1
while a1 == true and c1 == 'deprecated' do
i = i + 1
a1, b1, c1 = pcall(fooA, 'time', entity_race, property, i)
end
local _, _, y, m, d = string.find(b1, "(%d+)%p(%d+)%p(%d+)")
if m ~= '00' and d =='00' then sortkey = y..m..'32' h['time'] = mw.language.getContentLanguage():formatDate("M", '+'..y.."-"..m.."-31")
elseif m == '00' and d =='00' then sortkey = y..'12'..'32' h['time'] = ''
else sortkey = y..m..d h['time'] = func_date (b1, 'small')
end
timeofrace = b1
break
end
end
return '<td data-sort-value="'..sortkey.. '" style="text-align:right;padding:0 0.5em">'.. h['time'].. '</td>'
end
local function fn2_country()
a,b = timeStartEnd(h['raceID'], "P17", 'numeric-id', timeofrace)
h['countryID'] = 'Q'..b
if available_list == true and country == true then
if type( translations.list ) == "function" then h['countryName'] = translations.list('Q'..b) h['countryID'] = 'Q'..b end
if h['countryName'] == '' then
local country = mw.wikibase.getEntityObject( 'Q'..b )
h['countryName'] = country:getLabel() or country:getLabel('en') .. ' (en)'
end
end
--no stage in UCI calendar
end
local function fn_country(h)
local str
if available_list==true and country == true then
fn2_country()
if h['countryID'] ~= '' and h['countryName'] ~= '' then str = '<td style="text-align:' .. textalign .. ';padding:0 0.5em">'..flag(h['countryID'], timeofrace).. ' '.. h['countryName'].. '</td>'
elseif h['countryID'] == '' and h['countryName'] ~= '' then str = '<td style="text-align:' .. textalign .. ';padding:0 0.5em">'.. ' '.. h['countryName'].. '</td>'
elseif h['countryID'] ~= '' and h['countryName'] == '' then str = '<td style="text-align:' .. textalign .. ';padding:0 0.5em">'..flag(h['countryID'], timeofrace).. '</td>'
elseif h['countryID'] ~= '' and h['countryName'] ~= '' then str = '<td style="text-align:' .. textalign .. ';padding:0 0.5em">'.. ' '.. '</td>'
end
else str = ''
end
return str
end
local function fn_race(h)
local str, a, b, a1, b1, a2, b2, a3, b3
local label_x = ''
local entity_x1
local Sitelink_x, Sitelink_x0, Sitelink_x1, Sitelink_x2 = '', '', ''
local entity_race = mw.wikibase.getEntityObject( h['raceID'] )
local entity_type, entity_num = '', 0
local level = -1
local link
local multi_stage = false
a, b = pcall(fooA, 'numeric-id', entity_race, 'P31', 1)
if a == true then
-- test for stage item
for i=1,#stages do
if "Q"..b == stages[i] then entity_type = 'stage item' end -- stage article
end
-- test for 'no stage item' - item
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P31', 1) -- first value for P31
a2, b2 = pcall(fooA, 'numeric-id', entity_race, 'P31', 2) -- second value for P31
if a1 == true and a2 == true then -- for two values
if "Q"..b1 == "Q22231119" or "Q"..b1 == "Q23015458" then entity_num = 2 entity_type = 'championship' end
if "Q"..b2 == "Q22231119" or "Q"..b2 == "Q23015458" then entity_num = 1 entity_type = 'championship' end
if entity_type == '' then
for i=1,#class do -- #class = number of elements in class
if "Q"..b1 == class[i] then
for ii=1,#class_2x do
if "Q"..b1 == class_2x[ii] then multi_stage = "Q"..b1 break end
end
entity_num = 2 entity_type = 'no stage item' break
end
if "Q"..b2 == class[i] then
for ii=1,#class_2x do
if "Q"..b2 == class_2x[ii] then multi_stage = "Q"..b2 break end
end
entity_num = 1 entity_type = 'no stage item' break
end
end
end
end
-- else A
if entity_type == '' and a1 == true and a2 == false then -- for one value
entity_type = 'else A'
end
-- else B
end
if entity_type == 'else A' then
local entity_l
a1, b1 = pcall(fooA, 'text', entity_race, 'P1448', 1) -- show the "official name"
if a1 == true then
local lang_WD, text_WD
for _,v in pairs(entity_race.claims["P1448"]) do
lang_WD = v.mainsnak.datavalue.value.language
text_WD = v.mainsnak.datavalue.value.text
if lang_WD == wiki or lang_WD == 'en' or lang_WD == 'fr' then label_x =text_WD break end
end
end
if label_x == '' then
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P31', 1)
if a1 == true then
entity_l = mw.wikibase.getEntityObject( 'Q'..b1 )
label_x = entity_l:getLabel( ) or
entity_l:getLabel( 'en' ) or
entity_l:getLabel( 'de' ) or
entity_l:getLabel( 'fr' ) or ''
end
end
if entity_l~= nil then Sitelink_x1 = entity_l:getSitelink(wiki..'wiki') end
if entity_race~= nil then Sitelink_x0 = entity_race:getSitelink(wiki..'wiki') end
if Sitelink_x0 ~= nil then Sitelink_x = Sitelink_x0 level = 0
elseif Sitelink_x1 ~= nil then Sitelink_x = Sitelink_x1 level = 1
end
end
if entity_type == 'no stage item' then
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P31', entity_num)
if a1 == true then
entity_l = mw.wikibase.getEntityObject( 'Q'..b1 )
label_x = entity_l:getLabel( ) or
entity_l:getLabel( 'en' ) or
entity_l:getLabel( 'de' ) or
entity_l:getLabel( 'fr' ) or ''
end
if entity_l~= nil then Sitelink_x1 = entity_l:getSitelink(wiki..'wiki') end
if entity_race~= nil then Sitelink_x0 = entity_race:getSitelink(wiki..'wiki') end
if Sitelink_x0 ~= nil then Sitelink_x = Sitelink_x0 level = 0
elseif Sitelink_x1 ~= nil then Sitelink_x = Sitelink_x1 level = 1
end
end
if entity_type == 'championship' then
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P31', entity_num)
if a1 == true then
entity_l = mw.wikibase.getEntityObject( 'Q'..b1 )
a2, b2 = pcall(fooA, 'text', entity_l, 'P2561', 1) -- show the "name"
if a2 == true then
local lang_WD, text_WD
for _,v in pairs(entity_l.claims["P2561"]) do
lang_WD = v.mainsnak.datavalue.value.language
text_WD = v.mainsnak.datavalue.value.text
if wiki == lang_WD then label_x =text_WD break end
end
end
if label_x == '' then
label_x = entity_l:getLabel( ) or
entity_l:getLabel( 'en' ) or
entity_l:getLabel( 'de' ) or
entity_l:getLabel( 'fr' ) or ''
end
end
a1, b1 = pcall(fooA, 'numeric-id', entity_l, 'P361', 1)
if a1 == true then
entity_x = mw.wikibase.getEntityObject( 'Q'..b1 )
if entity_x ~= nil then
Sitelink_x = entity_x:getSitelink(wiki..'wiki')
if Sitelink_x~=nil then link = '[['..Sitelink_x..'|'.. label_x.. ']]' else link = label_x end
if wiki == 'ar' then
Sitelink_x = entity_x:getSitelink('arwiki')
if Sitelink_x~=nil then link = '[['..Sitelink_x..'|'.. label_x.. ']]'
else link = mw.getCurrentFrame():expandTemplate{ title = 'Ill-WD2', args = {id='Q'..b1,en='true'} }
end
end
end
end
end
if entity_type == 'stage item' then
local entity_l
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P361', 1)
if a1 == true then
entity_x1 = mw.wikibase.getEntityObject( 'Q'..b1 )
a2, b2 = pcall(fooA, 'numeric-id', entity_x1, 'P31', 1)
if a2 == true then
local is_class = false
for i=1,#class do
if "Q"..b2 == class[i] then is_class = true break end
end
if is_class == false then entity_l = mw.wikibase.getEntityObject( 'Q'..b2 )
else
a3, b3 = pcall(fooA, 'numeric-id', "Q"..b2, 'P31', 2)
if a3 == true then entity_l = mw.wikibase.getEntityObject( 'Q'..b3 ) end
end
end
label_x = entity_l:getLabel( ) or
entity_l:getLabel( 'en' ) or
entity_l:getLabel( 'de' ) or
entity_l:getLabel( 'fr' ) or ''
end
entity_stage = mw.wikibase.getEntityObject( 'Q18131152' )
entity_prolog = mw.wikibase.getEntityObject( 'Q485321' )
local comma = ", "
if wiki == 'fr' then
for _,v in ipairs({"^Trois", "^Quatre", "^Boucles"}) do -- ^ match only at the beginning
local i, _ = mw.ustring.find(label_x , v)
if i ~= nil then comma = " des " end
end
for _,v in ipairs({"^Triptyque", "^Tour", "^Grand Prix", "^Circuit", "^Mémorial", "^Trophée"}) do
local i, _ = mw.ustring.find(label_x , v)
if i ~= nil then comma = " du " end
end
for _,v in ipairs({"^Ronde", "^Semaine", "^Classica", "^Flèche", "^Course", "^Classique"}) do
local i, _ = mw.ustring.find(label_x , v)
if i ~= nil then comma = " de la " end
end
for _,v in ipairs({"^Étoile"}) do
local i, _ = mw.ustring.find(label_x , v)
if i ~= nil then comma = " de l'" end
end
end
a, b = pcall(fooA, 'value', entity_race, 'P1545', 1)
if a == false then b = '?' end
if b ~= '0' then
local l10nDef = {["fr"]="étape", ["en"]="stage", ["ar"]="مرحلة", ["br"]="Tennad", ["ca"]="etapa", ["cs"]="etapa", ["de"]="Etappe", ["da"]="etape", ["eo"]="Etapo",
["es"]="etapa", ["eu"]="Etapa", ["fi"]="Etappi", ["fo"]="teinur", ["hu"]="Szakasz", ["it"]="Tappa", ["ja"]="ステージ", ["la"]="Statio", ["lb"]="etapp",
["lv"]="Posms", ["mk"]="Етапа", ["nl"]="Etappe", ["no"]="etappe", ["pl"]="Etap", ["pt"]="Etapa", ["ro"]="Etapa", ["ru"]="Этап", ["sk"]="Etapa",
["sv"]="Etapp" }
local stage_label = l10nDef[wiki]
if stage_label == nil
then
stage_label = entity_stage:getLabel(wiki) or entity_stage:getLabel('fr')
if wiki == "ar" then stage_label = entity_stage:getLabel(wiki) or entity_stage:getLabel('en') end
end
local substage = ' '
local i,j = string.find(b, "%a+")
local k,l = string.find(b, "%d+")
local value1, value2
value2 = string.sub(b, k, l)
if i ~= nil then value1 = string.sub(b, i, j) end
if value1 ~= nil then substage = value1..' ' b = value2 end
if entity_l~= nil then Sitelink_x2 = entity_l:getSitelink(wiki..'wiki') end
if entity_x1~=nil then Sitelink_x1 = entity_x1:getSitelink(wiki..'wiki') end
if entity_race~=nil then Sitelink_x0 = entity_race:getSitelink(wiki..'wiki') end
if Sitelink_x0 ~= nil then Sitelink_x = Sitelink_x0 level = 0
elseif Sitelink_x1 ~= nil then Sitelink_x = Sitelink_x1 level = 1
elseif Sitelink_x2 ~= nil then Sitelink_x = Sitelink_x2 level = 2
end
if wiki=="de" or wiki=="da" or wiki=="fo" or wiki=="no" then --label_x = label_x.. ', '.. b.. '. '.. stage_label
if level == 1 or level == 2 then link = '[['..Sitelink_x..'|'.. label_x.. ']]' ..', '.. b.. '. '.. substage.. stage_label end
if level == 0 then link = '[['..Sitelink_x.. '|'.. label_x.. ', '.. b.. '. '.. substage.. stage_label.. ']]' end
if level == -1 then link = label_x.. ', '.. b.. '. '.. substage.. stage_label end
elseif wiki=='en' or wiki=='br' then label_x = label_x.. ', '.. stage_label.. ' '.. b
elseif wiki=='ar' then
label_x = label_x .. '، ' .. stage_label .. ' '.. b
if entity_l~= nil then Sitelink_x2 = (entity_l:getSitelink('arwiki') or entity_l:getSitelink('enwiki')) end
if entity_x1~=nil then Sitelink_x1 = (entity_x1:getSitelink('arwiki') or entity_x1:getSitelink('enwiki')) end
if entity_race~=nil then Sitelink_x0 = (entity_race:getSitelink('arwiki') or entity_race:getSitelink('enwiki')) end
elseif wiki == 'fr' then
if level == 1 or level == 2 then
if b == '1' then link = b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. '[[:fr:'..Sitelink_x..'#1re.C2.A0.C3.A9tape'..'|'.. label_x.. ']]'
else link = b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. '[[:fr:'..Sitelink_x..'#'.. b.. 'e.C2.A0.C3.A9tape'..'|'.. label_x..']]'
end
end
if level == 0 then
if b == '1' then link = '[[:fr:'..Sitelink_x.. '|'.. b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. label_x.. ']]'
else link = '[[:fr:'..Sitelink_x.. '|'.. b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. label_x..']]'
end
end
if level == -1 then
if b == '1' then link = b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. label_x
else link = b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. label_x
end
end
elseif wiki == "lb" then
if level == 1 or level == 2 then
if b == '1' then link = b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. '[[:'..wiki..':'..Sitelink_x..'#1re.C2.A0.C3.A9tape'..'|'.. label_x.. ']]'
else link = b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. '[[:'..wiki..':'..Sitelink_x..'#'.. b.. 'e.C2.A0.C3.A9tape'..'|'.. label_x..']]'
end
end
if level == 0 then
if b == '1' then link = '[[:'..wiki..':'..Sitelink_x.. '|'.. b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. label_x.. ']]'
else link = '[[:'..wiki..':'..Sitelink_x.. '|'.. b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. label_x..']]'
end
end
if level == -1 then
if b == '1' then link = b.. '<sup>re</sup>'.. substage.. stage_label.. comma.. label_x
else link = b.. '<sup>e</sup>'.. substage.. stage_label.. comma.. label_x
end
end
elseif wiki=="ca" then label_x = b.. 'a '.. stage_label.. ' del '.. label_x
elseif wiki=="es" then label_x = b.. "<sup>a</sup> ".. stage_label.. ', '.. label_x
else label_x = stage_label.. ' '.. b..', '.. label_x
end
else -- Prolog
if entity_l~= nil then Sitelink_x2 = entity_l:getSitelink(wiki..'wiki') end
if entity_x1~=nil then Sitelink_x1 = entity_x1:getSitelink(wiki..'wiki') end
if entity_race~=nil then Sitelink_x0 = entity_race:getSitelink(wiki..'wiki') end
if Sitelink_x0 ~= nil then Sitelink_x = Sitelink_x0 level = 0
elseif Sitelink_x1 ~= nil then Sitelink_x = Sitelink_x1 level = 1
elseif Sitelink_x2 ~= nil then Sitelink_x = Sitelink_x2 level = 2
end
local l10nDef = { ["fr"]="Prologue", ["ar"]="المقدمة", ["en"]="Prologue", ["br"]="Prolog", ["ca"]="Pròleg", ["cs"]="Prolog", ["de"]="Prolog", ["da"]="Prolog", ["eo"]="Prologo",
["es"]="Prólogo", ["eu"]="Aitzinetapa", ["fi"]="Prologi", ["fo"]="Forteinur", ["hu"]="Prolog", ["it"]="Prologo", ["ja"]="プロローグ", ["la"]="Incipit prologus", ["lb"]="Prolog", ["lv"]="Prologs",
["mk"]="Пролог", ["nl"]="Proloog", ["no"]="Prolog", ["pl"]="Prologu", ["pt"]="Prólogo", ["ro"]="Prolog", ["ru"]="Пролог", ["sk"]="Prológ", ["sv"]="Prolog" }
local prolog_label
prolog_label = l10nDef[wiki]
if prolog_label == nil then
prolog_label = entity_prolog:getLabel() or entity_prolog:getLabel('en') or entity_prolog:getLabel('fr') or
entity_prolog:getLabel('de')
prolog_label = mw.ustring.gsub(prolog_label, "^(%a)",function (x) return mw.ustring.upper(x) end)
end
if wiki=="de" or wiki=="da" or wiki=="fo" or wiki=="no" then
-- label_x = label_x.. ', '.. prolog_label
if level >= 0 then link = '[['..Sitelink_x.. '|'.. label_x.. ']]'.. ', '.. prolog_label end
elseif wiki == 'en' then label_x = label_x.. ', '.. prolog_label
elseif wiki == 'ar' then label_x = label_x.. '، '.. prolog_label
elseif wiki == 'fr' then
if level > 0 then link = prolog_label.. comma.. '[[:fr:'..Sitelink_x..'#'..prolog_label.. '|'.. label_x.. ']]' end
if level == 0 then link = '[[:fr:'..Sitelink_x..'#'..prolog_label.. '|'.. prolog_label.. comma.. label_x.. ']]' end
if level == -1 then link = prolog_label.. comma.. label_x end
elseif wiki == 'lb' then
if level > 0 then link = prolog_label.. comma.. '[[:'..wiki..':'..Sitelink_x..'#'..prolog_label.. '|'.. label_x.. ']]' end
if level == 0 then link = '[[:'..wiki..':'..Sitelink_x..'#'..prolog_label.. '|'.. prolog_label.. comma.. label_x.. ']]' end
if level == -1 then link = prolog_label.. comma.. label_x end
else label_x = prolog_label.. ', '.. label_x
end
end
end
if level == -1 and link == nil then
local Sitelink = ''
local entity_k = mw.wikibase.getEntityObject( h['raceID'] )
Sitelink = entity_k:getSitelink(wiki..'wiki')
if Sitelink ~= '' and Sitelink ~= nil then
link = '[['..Sitelink..'|'..label_x..']]'
end
end
mw.log(multi_stage, entity_type)
if level >= 0 and link == nil and Sitelink_x ~= '' then
--change for calendar, no need for "general classification,..."
if onwikidata == true then link = '[[:fr:'..Sitelink_x..'|'..label_x..']]'
else
link = '[['..Sitelink_x..'|'..label_x..']]'
end
end
if link == nil then link = label_x end
if available_list==true and country == true then str = '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..link.. '</td>'
else
fn2_country()
if h['countryID'] ~= '' then str = '<td style="text-align:'.. textalign ..';padding:0 0.5em">'.. flag(h['countryID'], timeofrace).. ' '.. link.. '</td>'
else str = '<td style="text-align:'.. textalign ..';padding:0 2.3em">'..link.. '</td>'
end
end
return str
end --end fn
local function fn_classtester(h)
local entity_race = mw.wikibase.getEntityObject( h['raceID'] )
local display=false
local a, b, c, d
a, b = pcall(fooA, 'numeric-id', entity_race, 'P31', 1) -- first value for P31
c, d = pcall(fooA, 'numeric-id', entity_race, 'P31', 2) -- second value for P31
if a == true and c == true then -- for two values
for i=1,#class do -- #class = number of elements in class
if "Q"..b == displayed_class[i] then display=true break end
if "Q"..d == displayed_class[i] then display=true break end
end
elseif a == true then
for i=1,#class do -- #class = number of elements in class
if "Q"..b == displayed_class[i] then display=true break end
end
elseif c==true then
for i=1,#class do -- #class = number of elements in class
if "Q"..d == displayed_class[i] then display=true break end
end
end
return display
end
local function fn_class(h)
local entity_race = mw.wikibase.getEntityObject( h['raceID'] )
local entity_type, entity_num = '', 0
local class_text = ''
local link = ''
local Sitelink
sortkey_class = ''
a, b = pcall(fooA, 'numeric-id', entity_race, 'P31', 1)
if a == true then
-- test for stage item
for i=1,#stages do
if "Q"..b == stages[i] then entity_type = 'stage item' end
end
end
if entity_type == 'stage item' then
local a1, b1
a1, b1 = pcall(fooA, 'numeric-id', entity_race, 'P361', 1)
if a1 == true then
local a, b, c, d
local entity = mw.wikibase.getEntityObject( 'Q'..b1 )
a, b = pcall(fooA, 'numeric-id', entity, 'P31', 1) -- first value for P31
c, d = pcall(fooA, 'numeric-id', entity, 'P31', 2) -- second value for P31
if a == true and c == true then -- for two values
for i=1,#class do -- #class = number of elements in class
if "Q"..d == class[i] then class_text = mw.wikibase.label('Q'..d) sortkey_class = class_sort['Q'..d] break end
end -- for i
end -- if a
end
link = class_text
if link ~= '' then
a, b = pcall(fooA, 'numeric-id', entity_race, 'P361', 1) -- first value for P361
if a == true then
entity_II = mw.wikibase.getEntityObject('Q'..b)
c, d = pcall(fooA, 'numeric-id', entity_II, 'P361', 1) -- first value for P361
if c == true then entity_circuit = mw.wikibase.getEntityObject('Q'..d) end
end
end
else -- not a stage item
local a, b, c, d, e, f
a, b = pcall(fooA, 'numeric-id', entity_race, 'P31', 1) -- first value for P31
c, d = pcall(fooA, 'numeric-id', entity_race, 'P31', 2) -- second value for P31
if a == true and c == true then -- for two values
for i=1,#class do -- #class = number of elements in class
if "Q"..d == class[i] then class_text = mw.wikibase.label('Q'..d) sortkey_class = class_sort['Q'..d] break end
end
end
link = class_text
if link ~= '' then
a, b = pcall(fooA, 'numeric-id', entity_race, 'P361', 1) -- first value for P361
if a == true then entity_circuit = mw.wikibase.getEntityObject('Q'..b) end
end
end
if link ~= '' then
e, f = pcall(fooA, 'numeric-id', entity_circuit, 'P31', 1)
if e == true then
for i=1,#UCI_Circuits do -- abcd
if "Q"..f == UCI_Circuits[i] then
if onwikidata == true then
Sitelink = entity_circuit:getSitelink('frwiki')
if Sitelink~= nil then link = '[[:fr:'..Sitelink..'|'..link..']]' end
else
Sitelink = entity_circuit:getSitelink(wiki..'wiki')
if Sitelink~=nil then link = '[['..Sitelink..'|'..link..']]' end
end
break
end
end
end
end
return '<td data-sort-value="'..sortkey_class.. '" style="text-align:center;padding:0 0.5em">'..link.. '</td>'
end--end fn class
local function fn_rider(h,entity_race,order,displayteam)
local qual
local winner= ''
local winner_flag=''
local checkstage=false
local propertyID
if order==1 or order==nil then
--checkstage=true
propertyID=20882667
elseif order==2 then
propertyID=20882668
else
propertyID=20882669
end
a, b = pcall(fooC, 'numeric-id', entity_race, 'P1346', 1, 'P642', 1)
if a == true then
winner = '' winner_flag = ''
for k, v in ipairs(entity_race.claims["P1346"]) do
for kk, vv in ipairs(v.qualifiers['P642']) do
if vv.datavalue.value['numeric-id'] == propertyID then -- overall winner general classification
winner = 'Q'.. v.mainsnak.datavalue.value['numeric-id']
end
if checkstage==true then
if vv.datavalue.value['numeric-id'] == 20882747 then -- stagewinner
if winner == '' then winner = 'Q'.. v.mainsnak.datavalue.value['numeric-id'] end
end
end
end
end
winner_flag = ''
local a, b = timeStartEnd(winner, "P27", 'numeric-id', timeofrace)
if a == true then
winner_flag = flag('Q'..b, timeofrace).. ' '
end
end
if winner ~= '' then
local winner_team = false
local entity_winner = mw.wikibase.getEntityObject( winner )
a, b = pcall(fooA, 'numeric-id', entity_winner, 'P31', 1) -- looking if winner is a person
if a == true and b ~= 5 then winner_team = true end
if winner_team == false then
if displayteam==false or displayteam==nil then
return '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..winner_flag.. WPlink(winner).. '</td>'
else
local team
a, b = timeStartEnd(winner, 'P54', 'numeric-id', timeofrace) --winner 'Q4505812'
if a == true then
--teamOftheWinner = mw.wikibase.getEntity( 'Q'..b )
-- g.team[rank] = national_team:getLabel() or g.country[rank].. s
team = WPlink('Q'..b, 'team', timeofrace)
return '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..winner_flag.. WPlink(winner).." ("..team..")".. '</td>'
else
return '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..winner_flag.. WPlink(winner).. '</td>'
end
end
else
winner_flag = ''
local a, b = timeStartEnd(winner, "P17", 'numeric-id', timeofrace) -- flag of team
if a == true then
winner_flag = flag('Q'..b, timeofrace).. ' '
end
return '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..winner_flag ..WPlink(winner, 'team', timeofrace).. '</td>'
end
else
return '<td style="text-align:'.. textalign ..';padding:0 0.5em">'..''.. '</td>'
end
end
----- Begin of the main part of the code
if calendarID ~= nil then
local entity = mw.wikibase.getEntity(calendarID)
local WDlink_on
local WPcontent = {}
local num = 0
if pcall(fooA, 'numeric-id', entity, 'P527', 1) == true then
for k, v1 in pairs(entity.claims['P527']) do
--For all races in the UCI calendar--
h['time'] = '' h['countryID'] = '' h['countryName'] = ''
h['raceID'] = 'Q'.. v1.mainsnak.datavalue.value['numeric-id']
h['item1ID'] = h['raceID'] h['item2ID'] = '' h['item3ID'] = ''
local entity_race = mw.wikibase.getEntityObject( h['raceID'] )
---- Create a row ----
tBody = '<tr style= "line-height: 1.8em; padding: 5px;">'
if fn_classtester(h)==true then
if s.only_winner==0 then
for k,v in ipairs({fn_date(h,entity_race),fn_race(h), fn_country(h), fn_class(h), fn_rider(h,entity_race,1,true), fn_rider(h,entity_race,2,true), fn_rider(h,entity_race,3,true)}) do
tBody = tBody..v
end
else
for k,v in ipairs({fn_date(h,entity_race),fn_race(h), fn_country(h), fn_class(h), fn_rider(h,entity_race,1,true)}) do
tBody = tBody..v
end
end
tBody = tBody.. '</tr>'
---- Add the row to the table
table.insert(sortindex, sortkey)
table.insert(tableBody, tBody)
end
end
end -- for k, v1
return table.concat (tableBody)
end -- no calendarUCI
end