Модуль:Сегодня создано статей (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