<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="az">
	<id>https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FMedals</id>
	<title>Modul:Wikidata/Medals - Redaktə tarixçəsi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FMedals"/>
	<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Medals&amp;action=history"/>
	<updated>2026-05-10T01:44:34Z</updated>
	<subtitle>Vikidə bu səhifənin dəyişikliklər tarixçəsi</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Medals&amp;diff=57&amp;oldid=prev</id>
		<title>imported&gt;Toghrul R 09:12, 31 avqust 2025-də</title>
		<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Medals&amp;diff=57&amp;oldid=prev"/>
		<updated>2025-08-31T09:12:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Yeni səhifə&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local mw = require(&amp;#039;mw&amp;#039;)&lt;br /&gt;
local awardsOrder = mw.ext.data.get(&amp;quot;Wikidata/awards order.tab&amp;quot;) &lt;br /&gt;
local D = mw.loadData(&amp;#039;Module:Wikidata/Medals/data&amp;#039;)&lt;br /&gt;
local absorption      = D.absorption&lt;br /&gt;
local prioritizeP2910 = D.prioritizeP2910&lt;br /&gt;
local topPriority     = D.topPriority&lt;br /&gt;
&lt;br /&gt;
local entityCache = {}&lt;br /&gt;
local function safeGetEntity(id)&lt;br /&gt;
	if not id then return nil end&lt;br /&gt;
	if entityCache[id] then return entityCache[id] end&lt;br /&gt;
	local e = mw.wikibase.getEntity(id)&lt;br /&gt;
	entityCache[id] = e&lt;br /&gt;
	return e&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getId(val)&lt;br /&gt;
	return type(val) == &amp;quot;table&amp;quot; and val.id or val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getStatementId(stmt)&lt;br /&gt;
	if not stmt or not stmt.mainsnak or stmt.mainsnak.snaktype ~= &amp;#039;value&amp;#039; or not stmt.mainsnak.datavalue then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return getId(stmt.mainsnak.datavalue.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLabel(entity)&lt;br /&gt;
	return entity:getLabel(&amp;#039;az&amp;#039;) or entity:getLabel() or entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wrapWithClaimDiv(html, propertyId, itemId)&lt;br /&gt;
	return &amp;#039;&amp;lt;div class=&amp;quot;wikidata-claim&amp;quot; data-wikidata-property-id=&amp;quot;&amp;#039; .. propertyId .. &amp;#039;&amp;quot; data-wikidata-claim-id=&amp;quot;&amp;#039; .. itemId .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. html .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isPrioritized(id)&lt;br /&gt;
	for _, q in ipairs(prioritizeP2910) do&lt;br /&gt;
		if q == id then return true end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getMainValue(claims, property)&lt;br /&gt;
	if not claims or not claims[property] then return nil end&lt;br /&gt;
	for _, stmt in ipairs(claims[property]) do&lt;br /&gt;
		if stmt.mainsnak and stmt.mainsnak.snaktype == &amp;#039;value&amp;#039; and stmt.mainsnak.datavalue then&lt;br /&gt;
			return stmt.mainsnak.datavalue.value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isDateInRange(date, startTime, endTime)&lt;br /&gt;
	if not date then return false end&lt;br /&gt;
	if startTime and date &amp;lt; startTime then return false end&lt;br /&gt;
	if endTime and date &amp;gt; endTime then return false end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getImage(entity, awardDate, lightMode)&lt;br /&gt;
	if not entity or not entity.claims then return nil end&lt;br /&gt;
	local claims = entity.claims&lt;br /&gt;
&lt;br /&gt;
	local function parseTime(claim)&lt;br /&gt;
		if claim and claim.datavalue and claim.datavalue.value and claim.datavalue.value.time then&lt;br /&gt;
			return claim.datavalue.value.time&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function matchImage(prop)&lt;br /&gt;
		local propClaims = claims[prop]&lt;br /&gt;
		if not propClaims then return nil end&lt;br /&gt;
&lt;br /&gt;
		for _, claim in ipairs(propClaims) do&lt;br /&gt;
			if claim.mainsnak and claim.mainsnak.snaktype == &amp;#039;value&amp;#039; and claim.mainsnak.datavalue then&lt;br /&gt;
				local image = claim.mainsnak.datavalue.value&lt;br /&gt;
				local qualifiers = claim.qualifiers or {}&lt;br /&gt;
				local startTime = parseTime(qualifiers[&amp;#039;P580&amp;#039;] and qualifiers[&amp;#039;P580&amp;#039;][1])&lt;br /&gt;
				local endTime = parseTime(qualifiers[&amp;#039;P582&amp;#039;] and qualifiers[&amp;#039;P582&amp;#039;][1])&lt;br /&gt;
&lt;br /&gt;
				if not lightMode and isDateInRange(awardDate, startTime, endTime) then&lt;br /&gt;
					return image&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local first = propClaims[1]&lt;br /&gt;
		if first and first.mainsnak and first.mainsnak.snaktype == &amp;#039;value&amp;#039; and first.mainsnak.datavalue then&lt;br /&gt;
			return first.mainsnak.datavalue.value&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local id = entity.id&lt;br /&gt;
	local image, size, border = nil, &amp;#039;x15px&amp;#039;, false&lt;br /&gt;
&lt;br /&gt;
	if isPrioritized(id) then&lt;br /&gt;
		image = matchImage(&amp;#039;P2910&amp;#039;)&lt;br /&gt;
		if image then size = &amp;#039;x37px&amp;#039; else&lt;br /&gt;
			image = matchImage(&amp;#039;P2425&amp;#039;)&lt;br /&gt;
			if image then border = true end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		image = matchImage(&amp;#039;P2425&amp;#039;)&lt;br /&gt;
		if image then border = true else&lt;br /&gt;
			image = matchImage(&amp;#039;P2910&amp;#039;)&lt;br /&gt;
			if image then size = &amp;#039;x37px&amp;#039; end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return image, size, border&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getCategoryWikitext(entity, lightMode)&lt;br /&gt;
	if not entity or not entity.claims then return &amp;quot;&amp;quot; end&lt;br /&gt;
	local claims = entity.claims&lt;br /&gt;
&lt;br /&gt;
	local function extractCategoryLink(entityClaims)&lt;br /&gt;
		if not entityClaims or not entityClaims[&amp;#039;P2517&amp;#039;] then return nil end&lt;br /&gt;
		for _, catClaim in ipairs(entityClaims[&amp;#039;P2517&amp;#039;]) do&lt;br /&gt;
			if catClaim.mainsnak and catClaim.mainsnak.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
				local catId = catClaim.mainsnak.datavalue.value.id&lt;br /&gt;
				local catLink = mw.wikibase.getSitelink(catId)&lt;br /&gt;
				if catLink then return &amp;#039;[[&amp;#039; .. catLink .. &amp;#039;]]&amp;#039; end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lightMode then&lt;br /&gt;
		return extractCategoryLink(claims) or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local category = extractCategoryLink(claims)&lt;br /&gt;
	if category then return category end&lt;br /&gt;
&lt;br /&gt;
	local parentClaim = claims[&amp;#039;P361&amp;#039;] and claims[&amp;#039;P361&amp;#039;][1]&lt;br /&gt;
	if parentClaim and parentClaim.mainsnak and parentClaim.mainsnak.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
		local parentId = parentClaim.mainsnak.datavalue.value.id&lt;br /&gt;
		local parentEntity = mw.wikibase.getEntity(parentId)&lt;br /&gt;
		if parentEntity then&lt;br /&gt;
			return extractCategoryLink(parentEntity.claims) or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAwardYear(statements, id)&lt;br /&gt;
	for _, statement in ipairs(statements or {}) do&lt;br /&gt;
		local snak = statement.mainsnak&lt;br /&gt;
		if snak and snak.snaktype == &amp;#039;value&amp;#039; and snak.datavalue and snak.datavalue.value then&lt;br /&gt;
			local value = snak.datavalue.value&lt;br /&gt;
			local statementId = type(value) == &amp;#039;table&amp;#039; and value.id or value&lt;br /&gt;
			if statementId == id and statement.qualifiers then&lt;br /&gt;
				local dateClaims = statement.qualifiers[&amp;#039;P585&amp;#039;]&lt;br /&gt;
				if dateClaims then&lt;br /&gt;
					for _, q in ipairs(dateClaims) do&lt;br /&gt;
						if q and q.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
							local dv = q.datavalue&lt;br /&gt;
							if dv and dv.value and dv.value.time then&lt;br /&gt;
								local year = string.match(dv.value.time, &amp;quot;%d%d%d%d&amp;quot;)&lt;br /&gt;
								if year then&lt;br /&gt;
									return year&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildAwardHTML(id, statement, lightMode)&lt;br /&gt;
	local entity = safeGetEntity(id)&lt;br /&gt;
	if not entity then return nil end&lt;br /&gt;
&lt;br /&gt;
	if lightMode then&lt;br /&gt;
		local label = getLabel(entity)&lt;br /&gt;
		local image, size, border = getImage(entity, nil, true)&lt;br /&gt;
		if not image then return nil end&lt;br /&gt;
		local link = mw.wikibase.getSitelink(id) or (&amp;#039;d:&amp;#039; .. id)&lt;br /&gt;
		local html = &amp;#039;[[Fayl:&amp;#039; .. image&lt;br /&gt;
		if border then html = html .. &amp;#039;|border&amp;#039; end&lt;br /&gt;
		html = html .. &amp;#039;|&amp;#039; .. size .. &amp;#039;|link=&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		local categoryWikitext = mw.title.getCurrentTitle().namespace == 0 and getCategoryWikitext(entity, true) or &amp;quot;&amp;quot;&lt;br /&gt;
		html = html .. categoryWikitext&lt;br /&gt;
&lt;br /&gt;
		return {&lt;br /&gt;
			id = id,&lt;br /&gt;
			html = html,&lt;br /&gt;
			height = size,&lt;br /&gt;
			parents = {},&lt;br /&gt;
			border = border&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local awardDate = nil&lt;br /&gt;
	if statement and statement.qualifiers and statement.qualifiers[&amp;#039;P585&amp;#039;] then&lt;br /&gt;
		for _, q in ipairs(statement.qualifiers[&amp;#039;P585&amp;#039;]) do&lt;br /&gt;
			if q.snaktype == &amp;#039;value&amp;#039; and q.datavalue and q.datavalue.value and q.datavalue.value.time then&lt;br /&gt;
				awardDate = q.datavalue.value.time&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local image, size, border = getImage(entity, awardDate, lightMode)&lt;br /&gt;
	if not image then&lt;br /&gt;
		local categoryWikitext = mw.title.getCurrentTitle().namespace == 0 and getCategoryWikitext(entity, lightMode) or &amp;quot;&amp;quot;&lt;br /&gt;
		if categoryWikitext ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local fallbackHtml = wrapWithClaimDiv(categoryWikitext, &amp;#039;P166&amp;#039;, id)&lt;br /&gt;
			return {&lt;br /&gt;
				id = id,&lt;br /&gt;
				html = fallbackHtml,&lt;br /&gt;
				height = nil,&lt;br /&gt;
				parents = {},&lt;br /&gt;
				border = false&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local label = getLabel(entity)&lt;br /&gt;
&lt;br /&gt;
	local originalId = getStatementId(statement)&lt;br /&gt;
	local awardYear = getAwardYear({ statement }, originalId)&lt;br /&gt;
	if awardYear then&lt;br /&gt;
		label = label .. &amp;#039; — &amp;#039; .. awardYear&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local link = mw.wikibase.getSitelink(id)&lt;br /&gt;
	if not link then&lt;br /&gt;
		if not lightMode then&lt;br /&gt;
			local parent = getMainValue(entity.claims, &amp;#039;P361&amp;#039;)&lt;br /&gt;
			local parentId = parent and parent.id&lt;br /&gt;
			link = parentId and mw.wikibase.getSitelink(parentId) or &amp;quot;d:&amp;quot; .. id&lt;br /&gt;
		else&lt;br /&gt;
			link = &amp;quot;d:&amp;quot; .. id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = &amp;#039;[[Fayl:&amp;#039; .. image&lt;br /&gt;
	if border then html = html .. &amp;#039;|border&amp;#039; end&lt;br /&gt;
	html = html .. &amp;#039;|&amp;#039; .. size .. &amp;#039;|link=&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local claims = entity.claims&lt;br /&gt;
	local parents = {}&lt;br /&gt;
	local function addParents(prop)&lt;br /&gt;
		for _, claim in ipairs(claims[prop] or {}) do&lt;br /&gt;
			if claim.mainsnak and claim.mainsnak.snaktype == &amp;#039;value&amp;#039; and claim.mainsnak.datavalue then&lt;br /&gt;
				table.insert(parents, claim.mainsnak.datavalue.value.id)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	addParents(&amp;#039;P279&amp;#039;)&lt;br /&gt;
	addParents(&amp;#039;P361&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local categoryWikitext = mw.title.getCurrentTitle().namespace == 0 and getCategoryWikitext(entity) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		id = id,&lt;br /&gt;
		html = html .. categoryWikitext,&lt;br /&gt;
		height = size,&lt;br /&gt;
		parents = parents,&lt;br /&gt;
		border = border&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatProperty(context, options)&lt;br /&gt;
	local entityId = type(options.entity) == &amp;quot;table&amp;quot; and options.entity.id or options.entity or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if not entityId then return &amp;#039;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local claims = mw.wikibase.getBestStatements(entityId, &amp;#039;P166&amp;#039;)&lt;br /&gt;
	if not claims or #claims == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local lightMode = #claims &amp;gt; 50&lt;br /&gt;
&lt;br /&gt;
	local rawCount = {}&lt;br /&gt;
	for _, claim in ipairs(claims) do&lt;br /&gt;
		if claim.mainsnak and claim.mainsnak.snaktype == &amp;#039;value&amp;#039; and claim.mainsnak.datavalue and claim.mainsnak.datavalue.value then&lt;br /&gt;
		local qid = getStatementId(claim)&lt;br /&gt;
		rawCount[qid] = (rawCount[qid] or 0) + 1&lt;br /&gt;
			rawCount[qid] = (rawCount[qid] or 0) + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local resolvedCount, replaced = {}, {}&lt;br /&gt;
	for qid, count in pairs(rawCount) do&lt;br /&gt;
		local replacement = absorption[qid]&lt;br /&gt;
		if replacement then&lt;br /&gt;
			if rawCount[replacement] then&lt;br /&gt;
				replaced[qid] = true&lt;br /&gt;
			else&lt;br /&gt;
				resolvedCount[replacement] = (resolvedCount[replacement] or 0) + count&lt;br /&gt;
			end&lt;br /&gt;
		elseif not replaced[qid] then&lt;br /&gt;
			resolvedCount[qid] = (resolvedCount[qid] or 0) + count&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local built = {}&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for _, statement in ipairs(claims) do&lt;br /&gt;
		if statement.mainsnak and statement.mainsnak.snaktype == &amp;#039;value&amp;#039; and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then&lt;br /&gt;
			local qid = getStatementId(statement)&lt;br /&gt;
			local resolvedId = absorption[qid] or qid&lt;br /&gt;
			if not replaced[qid] then&lt;br /&gt;
				local html = buildAwardHTML(resolvedId, statement, lightMode)&lt;br /&gt;
				if html then&lt;br /&gt;
					table.insert(built, html)&lt;br /&gt;
					if not lightMode then&lt;br /&gt;
						count = count + 1&lt;br /&gt;
						if count &amp;gt;= 50 then break end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local idSet = {}&lt;br /&gt;
	for _, a in ipairs(built) do idSet[a.id] = true end&lt;br /&gt;
	for _, a in ipairs(built) do&lt;br /&gt;
		for _, parent in ipairs(a.parents or {}) do&lt;br /&gt;
			if idSet[parent] then idSet[parent] = nil end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local filtered = {}&lt;br /&gt;
	for _, a in ipairs(built) do&lt;br /&gt;
		if idSet[a.id] then table.insert(filtered, a) end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function orderByAwardsList(dataList)&lt;br /&gt;
		local grouped, ordered = {}, {}&lt;br /&gt;
		for _, a in ipairs(dataList) do&lt;br /&gt;
			grouped[a.id] = grouped[a.id] or {}&lt;br /&gt;
			table.insert(grouped[a.id], a)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		for _, row in ipairs(awardsOrder.data or {}) do&lt;br /&gt;
			local qid = row[1]&lt;br /&gt;
			if grouped[qid] then&lt;br /&gt;
				for _, item in ipairs(grouped[qid]) do&lt;br /&gt;
					table.insert(ordered, item)&lt;br /&gt;
				end&lt;br /&gt;
				grouped[qid] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		for _, group in pairs(grouped) do&lt;br /&gt;
			for _, item in ipairs(group) do&lt;br /&gt;
				table.insert(ordered, item)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		return ordered&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local top, ribbons, pics, categoriesOnly = {}, {}, {}, {}&lt;br /&gt;
	for _, a in ipairs(filtered) do&lt;br /&gt;
		if not a.height and a.html:match(&amp;#039;%[%[Kateqoriya:&amp;#039;) then&lt;br /&gt;
			table.insert(categoriesOnly, a)&lt;br /&gt;
		elseif topPriority[a.id] then&lt;br /&gt;
			table.insert(top, a)&lt;br /&gt;
		elseif a.border then&lt;br /&gt;
			table.insert(ribbons, a)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(pics, a)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	top = orderByAwardsList(top)&lt;br /&gt;
	ribbons = orderByAwardsList(ribbons)&lt;br /&gt;
	pics = orderByAwardsList(pics)&lt;br /&gt;
&lt;br /&gt;
	local finalOut = {}&lt;br /&gt;
	for _, a in ipairs(top) do table.insert(finalOut, a.html) end&lt;br /&gt;
	if #top &amp;gt; 0 then table.insert(finalOut, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
	local function outputGrouped(group)&lt;br /&gt;
		local grouped = {}&lt;br /&gt;
		for _, a in ipairs(group) do&lt;br /&gt;
			if a.height then&lt;br /&gt;
				grouped[a.height] = grouped[a.height] or {}&lt;br /&gt;
				table.insert(grouped[a.height], a.html)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for _, row in ipairs(awardsOrder.data or {}) do&lt;br /&gt;
			local id = row[1]&lt;br /&gt;
			for height, list in pairs(grouped) do&lt;br /&gt;
				if #list &amp;gt; 0 and string.find(list[1], id, 1, true) then&lt;br /&gt;
					for _, h in ipairs(list) do table.insert(finalOut, h) end&lt;br /&gt;
					table.insert(finalOut, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
					grouped[height] = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for _, list in pairs(grouped) do&lt;br /&gt;
			for _, h in ipairs(list) do table.insert(finalOut, h) end&lt;br /&gt;
			table.insert(finalOut, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	outputGrouped(ribbons)&lt;br /&gt;
	outputGrouped(pics)&lt;br /&gt;
	&lt;br /&gt;
	local hasImage = false&lt;br /&gt;
	for _, a in ipairs(top) do if a.height then hasImage = true break end end&lt;br /&gt;
	if not hasImage then for _, a in ipairs(ribbons) do if a.height then hasImage = true break end end end&lt;br /&gt;
	if not hasImage then for _, a in ipairs(pics) do if a.height then hasImage = true break end end end&lt;br /&gt;
	&lt;br /&gt;
	if hasImage then&lt;br /&gt;
		for _, a in ipairs(categoriesOnly) do&lt;br /&gt;
			table.insert(finalOut, a.html)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if finalOut[#finalOut] == &amp;quot;&amp;lt;br&amp;gt;&amp;quot; then table.remove(finalOut) end&lt;br /&gt;
	return table.concat(finalOut, options.separator or &amp;#039; &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatValue(context, options, statement)&lt;br /&gt;
	local entityId = statement.id or getStatementId(statement)&lt;br /&gt;
	if not entityId then return &amp;#039;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local entity = mw.wikibase.getEntity(entityId)&lt;br /&gt;
	if not entity then return &amp;#039;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local label = getLabel(entity)&lt;br /&gt;
&lt;br /&gt;
	local awardYear = nil&lt;br /&gt;
	if statement.qualifiers and statement.qualifiers[&amp;#039;P585&amp;#039;] then&lt;br /&gt;
		for _, q in ipairs(statement.qualifiers[&amp;#039;P585&amp;#039;]) do&lt;br /&gt;
			if q.snaktype == &amp;#039;value&amp;#039; and q.datavalue and q.datavalue.value and q.datavalue.value.time then&lt;br /&gt;
				local timeVal = q.datavalue.value.time&lt;br /&gt;
				awardYear = string.match(timeVal, &amp;quot;%d%d%d%d&amp;quot;)&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if awardYear then&lt;br /&gt;
		label = label .. &amp;#039; — &amp;#039; .. awardYear&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local image, size, border = getImage(entity, nil, true)&lt;br /&gt;
&lt;br /&gt;
	local link = mw.wikibase.getSitelink(entityId) or (&amp;#039;d:&amp;#039; .. entityId)&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if image then&lt;br /&gt;
		out = &amp;#039;[[Fayl:&amp;#039; .. image&lt;br /&gt;
		if border then out = out .. &amp;#039;|border&amp;#039; end&lt;br /&gt;
		out = out .. &amp;#039;|&amp;#039; .. size .. &amp;#039;|link=&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		out = &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Toghrul R</name></author>
	</entry>
</feed>