Модуль:Створення статей щоденно

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
{{i}} Документація модуля[створити]
local getArgs = require('Module:Arguments').getArgs
local p = {}

function p.main(frame)
	local args = getArgs(frame)
	local scale = args['шкала'] == 'відносна' and 'relative' or 'absolute'
-- Перелік Вікіпедій для таблиці	
	local languages = {
		{ 'en', 'Англійська', 'США' },
		{ 'de', 'Німецька', 'Німеччина' },
		{ 'fr', 'Французька', 'Франція' },
		{ 'uk', 'Українська', 'Україна' },
		{ 'nl', 'Нідерландська', 'Нідерланди' },
		{ 'ru', 'Російська', 'Росія' },
		{ 'it', 'Італійська', 'Італія' },
		{ 'es', 'Іспанська', 'Іспанія' },
		{ 'pl', 'Польська', 'Польша' },
		{ 'ja', 'Японська', 'Японія' },
		{ 'ar', 'Арабська', 'Арабська' },
	}
	
	local numberOf, todayNumberOf, today, maxToday = {}, {}, {}, 0
	for k, v in pairs(languages) do
		numberOf[k] = frame:expandTemplate{ title = 'NUMBEROF', args = { 'ARTICLES', v[1] } }
		todayNumberOf[k] = frame:expandTemplate{ title = 'TODAYNUMBEROF', args = { 'ARTICLES', v[1] } }
		today[k] = numberOf[k] - todayNumberOf[k]
		if today[k] > maxToday then
			maxToday = today[k]
		end
	end
	
	local bars = ''
	local minWidth = 400;
	for k, v in pairs(today) do
		bars = bars .. '\n' .. frame:expandTemplate{ title = 'bar pixel', args = {
			'[[' .. languages[k][2] .. ' Вікіпедія|' .. languages[k][2] .. ']]',
			'#cfe3ff',
			scale == 'relative' and math.max(today[k] / maxToday * minWidth, 0) or today[k],
			'',
			today[k]
		} }
	end
	
	local lang = mw.language.new('uk')
	local result = frame:expandTemplate{ title = 'bar box', args = {
		title = 'Сьогодні створено статей<br><span style="font-weight:normal;">' ..
			lang:ucfirst(lang:formatDate('l, j xg Y, H:i "(UTC)"')) .. '</span>',
		titlebar = '#cfe3ff',
		left1 = 'Вікіпедія',
		right2 = 'Статей',
		barwidth = tostring(minWidth) .. 'px',
		bars = bars,
		caption = frame:preprocess('\'\'<div style="width:' .. math.max(
				minWidth + 154,
				scale == 'relative' and minWidth + 154 or (minWidth + 154 + (maxToday - minWidth))
			) .. 'px;">' ..
			'Розділи, у яких число статей може бути занадто великим чи малим для конкретного відображення в гістограмі:</div>\'\'' ..
			'[[Шведська Вікіпедія|Шведська]] — {{#expr: {{NUMBEROF|ARTICLES|sv}}-{{TODAYNUMBEROF|ARTICLES|sv}}}}<br>' ..
			'[[Варайська Вікіпедія|Варайська]] — {{#expr: {{NUMBEROF|ARTICLES|war}}-{{TODAYNUMBEROF|ARTICLES|war}}}}<br>' ..
			'[[Себуанська Вікіпедія|Себуанська]] — {{#expr: {{NUMBEROF|ARTICLES|ceb}}-{{TODAYNUMBEROF|ARTICLES|ceb}}}}')
	} }
	
	mw.logObject(result)
	return '<div style="overflow:auto; width:100%;">\n{|\n|-\n|' .. result .. '\n|}</div>'
end

return p