Перейти к содержимому страницы
Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

Модуль:PopulationDistribution

Материал из вики «Вече»
Версия от 14:27, 9 мая 2024; wp>ru.wikipedia (Импорт из русской Википедии, версия 137682955)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Для документации этого модуля может быть создана страница Модуль:PopulationDistribution/doc

local p = {}

function p.GetPopulationDistribution(frame)
	local Args =  frame:getParent().args
	if Args[1] == nil then
		return '<strong class="error">Введите викифицированные названия населённых пунктов</strong>'
	end
	
	local District = Args['МО'] or frame.args[1]
    local DistrictPopulation = frame:expandTemplate{ title = "Население", args={District, "ч"}}
    local ChartArgs = {}
    
    local Title = 'Распределение населения '
	if string.find (District, 'район') then
		Title = Title .. 'района'
	elseif string.find (District, '[Гг]ородской округ') then
		Title = Title .. 'городского округа'
	elseif string.find (District, '[Мм]униципальный округ') then
		Title = Title .. 'муниципального округа'
	elseif string.find (District, ' округ') then
		Title = Title .. 'округа'
	elseif string.find (District, '[Гг]ородское поселение') then
		Title = Title .. 'городского поселения'
	else
		Title = Title .. 'муниципального образования'
	end
	ChartArgs['заголовок'] = Title .. ':'
	ChartArgs['other'] = 'Остальные'
	
	for key, val in pairs(Args) do
		if key ~= 'МО' then 
			local Name = mw.text.trim(val)
			ChartArgs[ 'описание' .. key ] = string.format('[[%s|%s]]', Name, string.match(Name, "([^(]+)"))
			ChartArgs[ 'значение' .. key ] = string.format("%.2f", frame:expandTemplate{ title = "Население", args={Name, "ч"}}*100/DistrictPopulation)
		end
	end
	
	return frame:expandTemplate({
		title = 'Круговая диаграмма',
		args = ChartArgs,
	})
end
return p