local p = {}
local wl = require('وحدة:ص.م')
local track = require('وحدة:Wikidata/تتبع').makecategory1
local teams_id = {
'Q476028'
,"Q847017"
, "Q28140340"
}
function get_flag (countryID, date)
if not countryID or countryID == "" then return "" end
local trackingCategory = ''
--[[ If you uncomment the line under this comment, all pages with look-up misses in
the flag table will be placed in a tracking category. You can use this to find more flags
to add to the table. ]]
-- trackingCategory = '[[تصنيف:Missing flag in Module:Cycling race]]'
local flags = {
Q16 = {'CAN', {'Flag of Canada.svg', '+1965-02-15'}},
Q17 = {'JPN', {'Flag of Japan.svg', '+1999-08-13'}},
Q20 = {'NOR', {'Flag of Norway.svg', '+1821-07-13'}},
Q27 = {'IRL', {'Flag of Ireland.svg', '+1937-12-29'}},
Q28 = {'HUN', {'Flag of Hungary.svg', '+1957-05-23'}},
Q29 = {'ESP', {'Flag of Spain.svg', '+1981-12-06'},
{'Flag of Spain (1977–1981).svg', '+1977-01-21', '+1981-12-06'},
{'Flag of Spain (1945–1977).svg', '+1945-10-11', '+1977-01-21'},
{'Flag of Spain (1938–1945).svg', '+1939', '+1945-10-11'},
{'Flag of the Second Spanish Republic.svg', '+1931-04-14', '+1939'},
{'Flag of Spain (1785–1873, 1875–1931).svg', '+1874', '+1931-04-13'}},
Q30 = {'USA', {'Flag of the United States.svg', '+1960-07-04'}},
Q31 = {'BEL', {'Flag of Belgium (civil).svg'}},
Q32 = {'LUX', {'Flag of Luxembourg.svg'}},
Q33 = {'FIN', {'Flag of Finland.svg', '+1918-05-29'}},
Q34 = {'SWE', {'Flag of Sweden.svg'}},
Q35 = {'DEN', {'Flag of Denmark.svg'}},
Q36 = {'POL', {'Flag of Poland.svg'}},
Q37 = {'LTU', {'Flag of Lithuania.svg', '+2004-09-01'},
{'Flag of Lithuania (1988-2004).svg', '+1990-03-11', '+2004-09-01'}},
Q38 = {'ITA', {'Flag of Italy.svg', '+1946-06-19'},
{'Flag of Italy (1861–1946).svg', '+1861', '+1946-06-19'}},
Q39 = {'SUI', {'Flag of Switzerland.svg', '+1889-12-12'}},
Q40 = {'AUT', {'Flag of Austria.svg', '+1945-05-01'}},
Q41 = {'GRE', {'Flag of Greece.svg', '+1978'}},
Q43 = {'TUR', {'Flag of Turkey.svg'}},
Q45 = {'POR', {'Flag of Portugal.svg', '+1911-06-30'}},
Q55 = {'NED', {'Flag of the Netherlands.svg', '+1806'}},
Q77 = {'URU', {'Flag of Uruguay.svg'}},
Q96 = {'MEX', {'Flag of Mexico.svg', '+1968-09-16'},
{'Flag of Mexico (1934-1968).svg', '+1934', '+1968-09-16'}},
Q114 = {'KEN', {'Flag of Kenya.svg'}},
Q115 = {'ETH', {'Flag of Ethiopia.svg', '+1996-10-31'}},
Q142 = {'FRA', {'Flag of France.svg', '+1794-05-20'}},
Q145 = {'GBR', {'Flag of the United Kingdom.svg'}},
Q148 = {'CHN', {"Flag of the People's Republic of China.svg", '+1985'}},
Q155 = {'BRA', {'Flag of Brazil.svg', '+1992-05-11'},
{'Flag of Brazil (1968–1992).svg', '+1968-05-28', '+1992-05-11'}},
Q159 = {'RUS', {'Flag of Russia.svg', '+1993-12-11'},
{'Flag of Russia (1991–1993).svg', '+1991-08-22', '+1993-12-11'},
{'Flag of the Russian Soviet Federative Socialist Republic.svg', '+1954', '+1991-08-22'},
{'Flag of the Russian Soviet Federative Socialist Republic (1937–1954).svg', '+1937', '+1954'}},
Q183 = {'GER', {'Flag of Germany.svg', '+1949-05-23'},
{'Flag of the German Reich (1935–1945).svg', '+1935-09-15', '+1945-05-23'},
{'Flag of the German Reich (1933–1935).svg', '+1933-03-12', '+1935-09-15'},
{'Flag of Germany (3-2 aspect ratio).svg', '+1919-04-11', '+1933-03-12'},
{'Flag of the German Empire.svg', '+1871-04-16', '+1919-04-11'}},
Q184 = {'BLR', {'Flag of Belarus.svg', '+2012-05-11'},
{'Flag of Belarus (1995–2012).svg', '+1995-06-07', '+2012-05-11'}},
Q191 = {'EST', {'Flag of Estonia.svg'}},
Q211 = {'LAT', {'Flag of Latvia.svg'}},
Q212 = {'UKR', {'Flag of Ukraine.svg', '+1992-01-28'}},
Q213 = {'CZE', {'Flag of the Czech Republic.svg', '+1920-03-30'}},
Q214 = {'SVK', {'Flag of Slovakia.svg'}},
Q215 = {'SLO', {'Flag of Slovenia.svg'}},
Q217 = {'MDA', {'Flag of Moldova.svg'}},
Q218 = {'ROU', {'Flag of Romania.svg', '+1989-12-27'},
{'Flag of Romania (1965-1989).svg', '+1989-12-27', '+1965'},
{'Flag of Romania (1952-1965).svg', '+1952', '+1965'},
{'Flag of Romania (1948-1952).svg', '+1948-01-08', '+1952'},
{'Flag of Romania.svg', '12. april 1867-04-12', '+1948-01-08'}},
Q219 = {'BUL', {'Flag of Bulgaria.svg', '+1990-11-22'},
{'Flag of Bulgaria (1971 – 1990).svg', '+1971-05-18', '+1990-11-22'}},
Q222 = {'ALB', {'Flag of Albania.svg', '+1992'}},
Q224 = {'CRO', {'Flag of Croatia.svg', '+1990-12-21'},
{'Flag of Croatia (white chequy).svg', '+1990-06-27', '+1990-12-21'}},
Q227 = {'AZE', {'Flag of Azerbaijan.svg'}},
Q228 = {'AND', {'Flag of Andorra.svg'}},
Q229 = {'CYP', {'Flag of Cyprus.svg', '+2006-08-20'},
{'Flag of Cyprus (1960-2006).svg', '+1960-08-16', '+2006-08-20'}},
Q232 = {'KAZ', {'Flag of Kazakhstan.svg'}},
Q238 = {'SMR', {'Flag of San Marino.svg'}},
Q241 = {'CUB', {'Flag of Cuba.svg'}},
Q252 = {'INA', {'Flag of Indonesia.svg'}},
Q258 = {'RSA', {'Flag of South Africa.svg', '+1994-04-27'},
{'Flag of South Africa (1928–1994).svg', '+1928-05-31', '+1994-04-27'}},
Q262 = {'ALG', {'Flag of Algeria.svg'}},
Q265 = {'UZB', {'Flag of Uzbekistan.svg'}},
Q298 = {'CHI', {'Flag of Chile.svg'}},
Q334 = {'SGP', {'Flag of Singapore.svg'}},
Q347 = {'LIE', {'Flag of Liechtenstein.svg'}},
Q398 = {'BRN', {'Flag of Bahrain.svg', '+2002-02-14'}},
Q403 = {'SRB', {'Flag of Serbia.svg', '+2004-08-18'},
{'Flag of Serbia (1992–2004).svg', '+1992-04-27', '+2004-08-17'}},
Q408 = {'AUS', {'Flag of Australia.svg'}},
Q414 = {'ARG', {'Flag of Argentina.svg'}},
Q664 = {'NZL', {'Flag of New Zealand.svg'}},
Q711 = {'MGL', {'Flag of Mongolia.svg'}},
Q717 = {'VEN', {'Flag of Venezuela.svg', '+2006'}},
Q736 = {'ECU', {'Flag of Ecuador.svg'}},
Q739 = {'COL', {'Flag of Colombia.svg'}},
Q750 = {'BOL', {'Flag of Bolivia.svg', '+1851-10-31'}},
Q786 = {'DOM', {'Flag of the Dominican Republic.svg'}},
Q794 = {'IRI', {'Flag of Iran.svg', '+1980-07-29'},
{'Flag of Iran (1964–1980).svg', '+1964', '+1980-07-29'}},
Q800 = {'CRC', {'Flag of Costa Rica (state).svg', '+1906-11-27'}},
Q801 = {'ISR', {'Flag of Israel.svg'}},
Q817 = {'KUW', {'Flag of Kuwait.svg', '+1961-09-07'}},
Q833 = {'MAS', {'Flag of Malaysia.svg', '+1963-09-16'}},
Q842 = {'OMA', {'Flag of Oman.svg', '+1995'}},
Q846 = {'QAT', {'Flag of Qatar.svg'}},
Q865 = {'TPE', {'Flag of the Republic of China.svg', '+1928-12-17'}},
Q869 = {'THA', {'Flag of Thailand.svg'}},
Q878 = {'UAE', {'Flag of the United Arab Emirates.svg'}},
Q884 = {'KOR', {'Flag of South Korea.svg', '+1997-10'}},
Q928 = {'PHI', {'Flag of the Philippines.svg', '+1998'}},
Q948 = {'TUN', {'Flag of Tunisia.svg', '+1999-07-03'}},
Q965 = {'BUR', {'Flag of Burkina Faso.svg'}},
Q986 = {'ERI', {'Flag of Eritrea.svg'}},
Q1000 = {'GAB', {'Flag of Gabon.svg', '+1960-08-09'}},
Q1008 = {'CIV', {"Flag of Côte d'Ivoire.svg"}},
Q1009 = {'CMR', {'Flag of Cameroon.svg'}},
Q1028 = {'MAR', {'Flag of Morocco.svg'}},
Q1036 = {'UGA', {'Flag of Uganda.svg', '+1962-10-09'}},
Q1037 = {'RWA', {'Flag of Rwanda.svg', '+2001-10-25'},
{'Flag of Rwanda (1962–2001).svg', '+1962', '+2001-10-25'}},
Q9676 = {'IMN', {'Flag of the Isle of Man.svg'}},
Q15180 = {'URS', {'Flag of the Soviet Union.svg', '+1980-08-15', '+1991-12-25'},
{'Flag of the Soviet Union (1955–1980).svg', '+1955-08-19', '+1980-08-14'}},
Q16957 = {'GDR', {'Flag of East Germany.svg', '+1959-10-01'},
{'Flag of Germany.svg', '+1949-10-07', '+1959-10-01'}}, --German Democratic Republic
Q8646 = {'HKG', {'Flag of Hong Kong.svg'}},
Q29999 = {'NED', {'Flag of the Netherlands.svg', '+1690'}}, --Kingdom of the Netherlands
Q33946 = {'TCH', {'Flag of the Czech Republic.svg', '+1920'}}, -- Czechoslovakia (1918–1992)
Q36704 = {'YUG', {'Flag of Yugoslavia (1992–2003).svg', '+1992-04-27', '+2003-02-04'}, --Yugoslavia
{'Flag of Yugoslavia (1943–1992).svg', '+1946', '+1992-04-27'}},
Q83286 = {'YUG', {'Flag of Yugoslavia (1943–1992).svg'}}, --Socialist Federal Republic of Yugoslavia
Q172579 = {'ITA', {'Flag of Italy (1861–1946).svg'}}, --Kingdom of Italy (1861-1946)
Q713750 = {'FRG', {'Flag of Germany.svg'}}, --West Germany
Q13474305 = {'ESP', {'Flag of Spain (1945–1977).svg', '+1945-10-11', '+1977-01-21'}, -- Francoist Spain (1935-1976)
{'Flag of Spain (1938–1945).svg', '+1939', '+1945-10-11'},
{'Flag of the Second Spanish Republic.svg', '+1931-04-14', '+1939'}},
}
local entry = flags[countryID]
local IOC
local file
if entry then
for i, v in ipairs(entry) do
if i == 1 then
IOC = v
end
if not date or date == "" then
file = v[1]
break
else
-- mw.log("Module:Wikidata2/P54: date: " .. date)
local from = v[2]
local to = v[3]
if (not from or from <= date) and (not to or to > date) then
file = v[1]
break
end
end
end
end
if file then
return '[[ملف:' .. file .. '|border|20px|' .. IOC .. ']]'
elseif not date then
local p41 = mw.wikibase.getBestStatements(countryID, "P41") -- P41 is flag image
if p41[1] and p41[1].mainsnak.snaktype == 'value' then
return '[[ملف:' .. p41[1].mainsnak.datavalue.value .. '|border|20px|(Wikidata:' .. countryID .. ')]]' .. trackingCategory
end
end
return trackingCategory
end
function string.ends(String,End)
return End=='' or string.sub(String,-string.len(End))==End
end
function format_label( label )
lab = label
lab = mw.ustring.gsub(lab , " لكرة القدم%]%]", "]]")
lab = mw.ustring.gsub(lab , " لكرة القدم %[%[", "[[")
lab = mw.ustring.gsub(lab , "%|نادي ", "|")
lab = mw.ustring.gsub(lab , "%|منتخب ", "|")
lab = mw.ustring.gsub(lab , "^منتخب ", "")
lab = mw.ustring.gsub(lab , " لكرة القدم$" , "" )
return lab
end
local national_id = {
'Q23895910'
,'Q23847779'
,'Q6979593'
,"Q21945604"
,"Q23759293"
,"Q23905105"
,"Q3874020"
,"Q1194951"
, "Q6979740"
,"Q23901137"
,"Q23901123" -- national under-17 football team
,"Q23904672" -- national under-16 football team
,"Q23904671" -- national under-18 football team
}
function template ( args )
local rows = mw.html.create( 'tr' )
local years = args[1] .. "–" .. args[2]
local goals;
if args[4] and args[4] ~="" then
goals = "(" .. args[4] .. ")"
end
rows:attr('colspan', 4)
--head:css('background-color', '#E1E1E1')
rows:tag('td'):tag("span"):addClass('nowrap'):wikitext(years)
rows:tag('td'):wikitext(args[3])
rows:tag('td'):tag("span"):addClass('nowrap'):wikitext(args[2] or "-")
rows:tag('td'):tag("span"):addClass('nowrap'):wikitext(goals)
return tostring(rows)
end
function ifd ( entit )
local s = {}
local tt = "o"
local fii = formatStatements( {property ='P31', entityId = entit, noref ='true' ,rank='all'
, firstvalue='true',separator='',conjunction='',formatting ='raw'})
local finns = false
for k, id in pairs(teams_id) do
if fii == id then
tt = "team"
end
end
if tt == "o" then
for k, Qid in pairs(national_id) do
if fii == Qid then
tt = "national"
end
end
end
if tt == "o" then
mw.log("Module:Wikidata2/P54: * id: {{Q|" .. entit .. "}} {{P|P31}}: {{Q|" .. fii.. "}} ")
end
return tt
end
function p.football( statement , options)
local countryID = ""
if statement then
if statement.type then
if statement.type == 'statement' and statement.mainsnak.snaktype == "value" then
--=====================================
local value = statement.mainsnak.datavalue.value
local entit = getEntityIdFromValue( value )
local s = formatSnak( statement.mainsnak, options ).value
--local s = formatEntityId( entit , options ).value
local type_ = ifd( entit )
if type_ and type_ ~= ''
then
if s then
local entit = getEntityIdFromValue( value )
countryID = formatStatements( {property ='P1532', entityId = entit
, noref ='true' ,rank='all'--,pattern =options.pattern
--,size ='20',image ='image' ,propertyimage ='P41'
,formatting="raw", firstvalue='true',separator='',conjunction=''
})
if not countryID or countryID == "" then
countryID = formatStatements( {property ='P17', entityId = entit
, noref ='true' ,rank='all'--,pattern =options.pattern
--,size ='20',image ='image' ,propertyimage ='P41'
,formatting="raw", firstvalue='true',separator='',conjunction=''})
end
local Flag = get_flag(countryID, nil)
local label = formatEntityId( entit , options ).value
label = format_label( label )
if label and label ~= '' then
if Flag and Flag ~= '' then
s = Flag .. ' '.. label
else
s = label
end
end
if statement.references then
if options.reff and options.reff ~= '' then
reff = formatReferences( statement, options )
s = s..reff
end
end
if statement.qualifiers
then
if statement.qualifiers.P1350 or statement.qualifiers.P1351 or statement.qualifiers.P580 or statement.qualifiers.P582 then
amatch = formatStatements({property = "P1350", firstvalue= 'true'}, statement.qualifiers) or ''
goal = formatStatements({property = "P1351", firstvalue= 'true'}, statement.qualifiers) or ''
start1 = formatStatements({property = "P580", firstvalue= 'true',modifytime = 'y'}, statement.qualifiers) or ' '
finish1 = formatStatements({property = "P582", firstvalue= 'true',modifytime = 'y'}, statement.qualifiers) or ' '
P1642 = formatStatements({property = "P1642", firstvalue= 'true',modifytime = 'y'}, statement.qualifiers) or ' '
end
end
--if options.football1 and options.football1 ~= '' then
Args = {(start1 or ''),(finish1 or ''),s,(amatch or ''),(goal or ''),P1642=(P1642 or '')}
--s = template (Args)
s = mw.getCurrentFrame():expandTemplate{ title = "صندوق معلومات سيرة كرة قدم/سطر فريق", args =Args}
--end
end
return {value = s , Type = type_}
end
end
--=====================================
end
end
end
function p.foot( claims , options)
local icon = track({property="P54", id= options.entityId or "",category= "[[تصنيف:فرق لاعب كرة من ويكي بيانات]][[تصنيف:صفحات تستخدم خاصية P54]]"})
local Nationals = {}
local Other = {}
local Teams = {}
--table.insert( Other, wl.SubTitle({'-','-' ,"b0c4de","000000",4}) )
--table.insert( Teams, wl.SubTitle({'المسيرة الاحترافية','-' ,"b0c4de","000000",4}) )
--table.insert( Nationals , wl.SubTitle({'المنتخب الوطني','-' ,"b0c4de","000000",4}) )
--==========================================
for i, statement in pairs( claims ) do
options.num = i
local stat = p.football( statement, options )
if stat then
local s = stat.value
local Table;
local Type = stat.Type
if s == '' then s = nil end
if s then
if Type == 'team'
then --Table = Teams
table.insert( Teams, s )
elseif Type == 'national'
then --Table = Nationals
table.insert( Nationals, s )
elseif Type == 'o'
then --Table = Other
table.insert( Other, s )
end
--if s then
--table.insert( Table, s )
--local t = formatReferences( statement, options )
--stat.ref = t
--if options.justref and options.justref ~= ''
--then
--table.insert( Table, t )
--else
--table.insert( Table, s .. t )
--end
end
end
end
local fs = {}
local head = mw.html.create( 'tr' )
head:attr('colspan', 4)
--head:css('background-color', '#E1E1E1')
head:tag('td'):wikitext("'''سنوات'''")
head:tag('td'):wikitext("'''فريق'''")
head:tag('td'):wikitext("'''مباريات'''")
head:tag('td'):wikitext("'''أهداف'''")
--if #Other > 0 or #Teams > 0 or #Nationals > 0 then
--table.insert( fs, tostring(head) )
--end
local Other_tot = mw.text.listToText( Other, options.separator, options.conjunction )
if #Other > 0 then
table.insert( fs, wl.SubTitle({'الفرق ' .. icon,'-' ,"b0c4de","000000",4}) )
table.insert( fs, tostring(head) )
table.insert( fs, Other_tot )
end
local Teams_tot = mw.text.listToText( Teams, options.separator, options.conjunction )
if #Teams > 0 then
table.insert( fs, wl.SubTitle({'المسيرة الاحترافية ' .. icon,'-' ,"b0c4de","000000",4}) )
if #Other <= 0 then table.insert( fs, tostring(head) ) end
table.insert( fs, Teams_tot )
end
local Nationals_tot = mw.text.listToText( Nationals, options.separator, options.conjunction )
if #Nationals > 0 then
table.insert( fs , wl.SubTitle({'المنتخب الوطني '.. icon,'-' ,"b0c4de","000000",4}) )
if (#Other <= 0) and (#Teams <= 0) then table.insert( fs, tostring(head) ) end
table.insert( fs, Nationals_tot )
end
local content = mw.getCurrentFrame():expandTemplate{ title = "صندوق معلومات سيرة كرة قدم/تعديل ويكي بيانات", args ={id = options.entityId or ""} }
local edit_at_wd = mw.html.create( 'tr' )
:tag('td')
:attr('scope', 'col')
:css('background-color', '#F9F9F9')
:css('color', '#000000')
:css('text-align', "left")
:attr('colspan', 4)
:wikitext(content)
:done()
if #fs > 0 then
table.insert( fs, tostring(edit_at_wd) )
end
--if tot == '' then tot = nil end
--return tot
return table.concat(fs)
end
return p