Модуль:Сегодня создано статей (Bk;rl,&Vyik;ux vk[;guk vmgmyw)

Перейти к навигации Перейти к поиску
Документация

Реализация {{Сегодня создано статей}}.

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', 'Английская', 'США' },
		{ 'ceb', 'Себуанская', 'Себу' },
		{ 'sv', 'Шведская', 'Швеция' },
		{ 'de', 'Немецкая', 'Германия' },
		{ 'fr', 'Французская', 'Франция' },
		{ 'nl', 'Нидерландская', 'Нидерланды' },
		{ 'ru', 'Русская', 'Россия' },
		{ 'it', 'Итальянская', 'Италия' },
		{ 'es', 'Испанская', 'Испания' },
		{ 'pl', 'Польская', 'Польша' },
		{ 'arz', 'Египетско-арабская', 'Египет' },
		{ 'ja', 'Японская', 'Япония' },
		{ 'war', 'Варайская', 'Восточные Висайи' },
		{ 'vi', 'Вьетнамская', 'Вьетнам' },
		{ 'zh', 'Китайская', 'Китай' },
		{ 'ar', 'Арабская', 'Арабские страны' },
		{ 'uk', 'Украинская', 'Украина' },
		{ 'pt', 'Португальская', 'Португалия' },
		{ 'fa', 'Персидская', 'Персия' }
		}
	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] .. ']]',
			'var(--ruwiki-background-color-blue200, #cfe3ff)',
			math.max(scale == 'relative' and (today[k] / maxToday * minWidth) or today[k], 0),
			'',
			today[k]
		} }
	end
	
	local lang = mw.language.new('ru')
	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 = 'var(--ruwiki-background-color-blue200, #cfe3ff)',
		left1 = 'Википедия',
		right1 = 'Статей',
		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|ceb}}-{{TODAYNUMBEROF|ARTICLES|ceb}}}}<br>' ..
			'[[Шведская Википедия|Шведская]] — {{#expr: {{NUMBEROF|ARTICLES|sv}}-{{TODAYNUMBEROF|ARTICLES|sv}}}}<br>' ..
			'[[Варайская Википедия|Варайская]] — {{#expr: {{NUMBEROF|ARTICLES|war}}-{{TODAYNUMBEROF|ARTICLES|war}}}}<br>' ..
			'[[Египетско-арабская Википедия|Египетско-арабская]] — {{#expr: {{NUMBEROF|ARTICLES|arz}}-{{TODAYNUMBEROF|ARTICLES|arz}}}}'
			)
	} }
	
	mw.logObject(result)
	return '<div style="overflow:auto; width:100%;">\n{|\n|-\n|' .. result .. '\n|}</div>'
end

return p