Модуль:PopulationDistribution
Перейти к навигации
Перейти к поиску
Этот модуль вызывается из шаблона Распределение населения.
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