<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://phuketer.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ADesignation</id>
	<title>Module:Designation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://phuketer.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ADesignation"/>
	<link rel="alternate" type="text/html" href="https://phuketer.com/w/index.php?title=Module:Designation&amp;action=history"/>
	<updated>2026-06-17T18:58:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.2</generator>
	<entry>
		<id>https://phuketer.com/w/index.php?title=Module:Designation&amp;diff=1093&amp;oldid=prev</id>
		<title>imported&gt;MSGJ: default to displaying number in bottom only in infobox</title>
		<link rel="alternate" type="text/html" href="https://phuketer.com/w/index.php?title=Module:Designation&amp;diff=1093&amp;oldid=prev"/>
		<updated>2026-03-26T22:22:00Z</updated>

		<summary type="html">&lt;p&gt;default to displaying number in bottom only in infobox&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local sandbox-- = &amp;#039;/sandbox&amp;#039; -- COMMENT OUT this defintion on the live version&lt;br /&gt;
&lt;br /&gt;
local validate = function(args)&lt;br /&gt;
	local former = false&lt;br /&gt;
	if args.delisted==&amp;#039;yes&amp;#039; then&lt;br /&gt;
		former = true&lt;br /&gt;
	end&lt;br /&gt;
	local par&lt;br /&gt;
	if args and args[1] and args[1]~=&amp;#039;&amp;#039; then&lt;br /&gt;
		par = args[1]:lower()&lt;br /&gt;
		if par:sub(1, 6)==&amp;#039;former&amp;#039; then&lt;br /&gt;
			former = true&lt;br /&gt;
			par = par:sub(7) -- strip off &amp;quot;former&amp;quot; from start&lt;br /&gt;
		end&lt;br /&gt;
		local list = mw.loadJsonData(&amp;#039;Module:Designation/list&amp;#039; .. (sandbox or &amp;#039;&amp;#039;))&lt;br /&gt;
		if list[par] then -- lookup not needed&lt;br /&gt;
			return list[par], former&lt;br /&gt;
		else -- attempt lookup&lt;br /&gt;
			local lookup = mw.loadJsonData(&amp;#039;Module:Designation/lookup&amp;#039; .. (sandbox or &amp;#039;&amp;#039;))&lt;br /&gt;
			if lookup[par] then -- successful lookup&lt;br /&gt;
				par = lookup[par]&lt;br /&gt;
				return list[par], former&lt;br /&gt;
			else&lt;br /&gt;
				local category = mw.title.getCurrentTitle().namespace==0 and &amp;#039;[[Category:Articles using Template:Designation with invalid designation]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
				return &amp;#039;Invalid designation&amp;#039; .. category&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;No parameter&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local get_data = function(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame, {wrappers = {&lt;br /&gt;
		&amp;#039;Template:Designation&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Designation/text&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Designation/colour&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Designation/colour2&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Designation/divbox&amp;#039;,&lt;br /&gt;
		&amp;#039;Template:Designation/abbreviation&amp;#039;&lt;br /&gt;
	}})&lt;br /&gt;
	return validate(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local text = function(frame, data, former)&lt;br /&gt;
	local text = data.text&lt;br /&gt;
	if data.lang then&lt;br /&gt;
		text = frame:expandTemplate{title = &amp;#039;lang&amp;#039;, args = {&lt;br /&gt;
			code = data.lang,&lt;br /&gt;
			text = text&lt;br /&gt;
		}}&lt;br /&gt;
	end&lt;br /&gt;
	return text and ((former and &amp;#039;Former &amp;#039; or &amp;#039;&amp;#039;) .. text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.text = function(frame)&lt;br /&gt;
	local data, former = get_data(frame)&lt;br /&gt;
	if type(data)==&amp;#039;string&amp;#039; then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	return text(frame, data, former)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local colour = function(data, former, index)&lt;br /&gt;
	local color&lt;br /&gt;
	if former then&lt;br /&gt;
		color = &amp;#039;DDDDDD&amp;#039;&lt;br /&gt;
	elseif data[index] then&lt;br /&gt;
		color = data[index]&lt;br /&gt;
	else&lt;br /&gt;
		color = &amp;#039;A8EDEF&amp;#039; -- default colour&lt;br /&gt;
	end&lt;br /&gt;
	return color and (&amp;#039;#&amp;#039; .. color)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.color = function(frame)&lt;br /&gt;
	local data, former = get_data(frame)&lt;br /&gt;
	if type(data)==&amp;#039;string&amp;#039; then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.nowiki(colour(data, former, &amp;#039;col&amp;#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.color2 = function(frame)&lt;br /&gt;
	local data, former = get_data(frame)&lt;br /&gt;
	if type(data)==&amp;#039;string&amp;#039; then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.nowiki(colour(data, former, &amp;#039;col2&amp;#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.abbr = function(frame)&lt;br /&gt;
	local data, former = get_data(frame)&lt;br /&gt;
	if type(data)==&amp;#039;string&amp;#039; then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	return former and &amp;#039;???&amp;#039; or data.abbr or &amp;#039;???&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local box = function(data, color, text)&lt;br /&gt;
	local div = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;line-height&amp;#039;, &amp;#039;1.5&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
	if type(data)==&amp;#039;string&amp;#039; then&lt;br /&gt;
		local invalid = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Error: &amp;#039; .. data)&lt;br /&gt;
		div:node(invalid)&lt;br /&gt;
	else&lt;br /&gt;
		div:css(&amp;#039;border-style&amp;#039;, &amp;#039;solid&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-width&amp;#039;, &amp;#039;4px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-color&amp;#039;, color)&lt;br /&gt;
			:wikitext(text)&lt;br /&gt;
	end&lt;br /&gt;
	return div&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.divbox = function(frame)&lt;br /&gt;
	local data, former = get_data(frame)&lt;br /&gt;
	local color = colour(data, former, &amp;#039;col2&amp;#039;)&lt;br /&gt;
	local text = text(frame, data, former)&lt;br /&gt;
	return tostring(box(data, color, text))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.doc_table = function(frame)&lt;br /&gt;
	local scope = frame.args and frame.args.scope&lt;br /&gt;
	local scopes = {}&lt;br /&gt;
	for s in mw.text.gsplit(scope, &amp;quot;,&amp;quot;, true) do&lt;br /&gt;
		scopes[mw.text.trim(s:lower())] = true&lt;br /&gt;
	end&lt;br /&gt;
	local lookup = mw.loadJsonData(&amp;#039;Module:Designation/lookup&amp;#039; .. (sandbox or &amp;#039;&amp;#039;))&lt;br /&gt;
	local rev_lookup = {}&lt;br /&gt;
	for alias, code in pairs(lookup) do&lt;br /&gt;
		if rev_lookup[code] then&lt;br /&gt;
			table.insert(rev_lookup[code], alias)&lt;br /&gt;
		else&lt;br /&gt;
			rev_lookup[code] = {alias}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local list = mw.loadJsonData(&amp;#039;Module:Designation/list&amp;#039; .. (sandbox or &amp;#039;&amp;#039;))&lt;br /&gt;
	local header = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Code&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Designation&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):css(&amp;#039;width&amp;#039;, &amp;#039;250px&amp;#039;):wikitext(&amp;#039;Bordered version&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Scope&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Aliases&amp;#039;):done()&lt;br /&gt;
	local tab = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;sortable&amp;#039;)&lt;br /&gt;
		:node(header)&lt;br /&gt;
	for code, data in pairs(list) do&lt;br /&gt;
		if scopes[data.scope:lower()] then&lt;br /&gt;
			local des = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;background&amp;#039;, &amp;#039;#&amp;#039; .. (data.col or &amp;#039;A8EDEF&amp;#039;))&lt;br /&gt;
				:wikitext(data.text)&lt;br /&gt;
			local border = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:node(box(data, &amp;#039;#&amp;#039;..(data.col2 or &amp;#039;A8EDEF&amp;#039;), data.text))&lt;br /&gt;
			local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;th&amp;#039;):wikitext(code):done()&lt;br /&gt;
				:node(des)&lt;br /&gt;
				:node(border)&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;):wikitext(data.scope):done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):wikitext(rev_lookup[code] and table.concat(rev_lookup[code], &amp;#039;, &amp;#039;)):done()&lt;br /&gt;
			tab:node(row)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(tab)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local check_params = function(args, n)&lt;br /&gt;
	local desp = {root = args[&amp;#039;designated_other&amp;#039; .. n]}&lt;br /&gt;
	local suffixes = {&amp;#039;name&amp;#039;, &amp;#039;color&amp;#039;, &amp;#039;textcolor&amp;#039;, &amp;#039;link&amp;#039;, &amp;#039;num_position&amp;#039;, &amp;#039;number&amp;#039;, &amp;#039;abbr&amp;#039;}&lt;br /&gt;
	for _, s in ipairs(suffixes) do&lt;br /&gt;
		desp[s] = args[&amp;#039;designated_other&amp;#039; .. n .. &amp;#039;_&amp;#039; .. s]&lt;br /&gt;
	end&lt;br /&gt;
	local data = desp.root and validate{[1]=desp.root}&lt;br /&gt;
	return desp, data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.header = function(frame)&lt;br /&gt;
	local desp, data = check_params(frame:getParent().args, frame.args[1])&lt;br /&gt;
	local makediv = function(text, bgcolor, num, textcolor)&lt;br /&gt;
		local autolink = require(&amp;#039;Module:Link if exists&amp;#039;)._main&lt;br /&gt;
		local link = autolink{[1]=text}&lt;br /&gt;
		local span = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, textcolor)&lt;br /&gt;
			:wikitext(link)&lt;br /&gt;
		local div = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;line-height&amp;#039;, &amp;#039;1.5&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;var(--color-base)&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;background&amp;#039;, bgcolor)&lt;br /&gt;
			:node(span)&lt;br /&gt;
			:wikitext(num)&lt;br /&gt;
		return tostring(div)&lt;br /&gt;
	end&lt;br /&gt;
	local num = &amp;#039;&amp;#039;&lt;br /&gt;
	local position = desp.num_position and desp.num_position:lower()&lt;br /&gt;
	if desp.number and desp.number~=&amp;#039;&amp;#039; and (position==&amp;#039;both&amp;#039; or position==&amp;#039;top&amp;#039;) then&lt;br /&gt;
		local abbr = frame:expandTemplate{title = &amp;#039;abbr&amp;#039;, args = {[1]=&amp;#039;No.&amp;#039;, [2]=&amp;#039;Number&amp;#039;}}&lt;br /&gt;
		num = &amp;#039;&amp;amp;nbsp;&amp;#039; .. abbr .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. desp.number&lt;br /&gt;
	end&lt;br /&gt;
	if data and type(data)==&amp;#039;table&amp;#039; then&lt;br /&gt;
		return makediv(data.text, &amp;#039;#&amp;#039; .. (data.col or &amp;#039;A8EDEF&amp;#039;), num)&lt;br /&gt;
	elseif desp.name then&lt;br /&gt;
		return makediv(desp.name, desp.color or &amp;#039;FFFFFF&amp;#039;, num, desp.textcolor)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.label = function(frame)&lt;br /&gt;
	local desp, data = check_params(frame:getParent().args, frame.args[1])&lt;br /&gt;
	local abbr = (data and data.abbr) or desp.abbr or &amp;#039;???&amp;#039;&lt;br /&gt;
	local category = abbr==&amp;#039;???&amp;#039; and mw.title.getCurrentTitle().namespace==0 and &amp;#039;[[Category:Articles using Template:Designation with undefined abbreviation]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
	return frame.args[2] .. &amp;#039; &amp;#039; .. abbr .. category&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.number = function(frame)&lt;br /&gt;
	local desp, data = check_params(frame:getParent().args, frame.args[1])&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
	local position = desp.num_position and desp.num_position:lower()&lt;br /&gt;
	if position~=&amp;#039;top&amp;#039; then&lt;br /&gt;
		local noabbr = frame:expandTemplate{title = &amp;#039;abbr&amp;#039;, args = {[1]=&amp;#039;No.&amp;#039;, [2]=&amp;#039;Number&amp;#039;}}&lt;br /&gt;
		local abbr = data and data.abbr or desp.abbr or &amp;#039;???&amp;#039;&lt;br /&gt;
		local category = abbr==&amp;#039;???&amp;#039; and mw.title.getCurrentTitle().namespace==0 and &amp;#039;[[Category:Articles using Template:Designation with undefined abbreviation]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
		out = abbr .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. noabbr .. category&lt;br /&gt;
	end&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;MSGJ</name></author>
	</entry>
</feed>