Bu modulun sənədləşdirmə səhifəsi səhifəsində yaradıla bilər

-- Farsca vikidən götürülüb.

require('strict')

local p = {}

local numConv = require('Module:Numeral converter').convert

local showPercentage = function (all, thisCount, frame)
	if all == 0 then
		return "'''0'''"
	else
		return frame:expandTemplate{ title = 'Rəqəm və faiz', args = {thisCount, all, 1, size = 'small', disp = 'br()', bold = 'yes'} } 
	end
end

local frame = mw.getCurrentFrame()
local col_begin = frame:expandTemplate{title = 'sütun-başla'}
local col_break = frame:expandTemplate{title = 'sütun'}
local col_end = frame:expandTemplate{title = 'sütun/son'}

local langAz = mw.language.new('az')
local langEn = mw.language.new('en')
local monthNames = {
	'Yanvar',
	'Fevral',
	'Mart',
	'Aprel',
	'May',
	'İyun',
	'İyul',
	'Avqust',
	'Sentyabr',
	'Oktyabr',
	'Noyabr',
	'Dekabr',
}

local gCount = {
	d = 0,
	k = 0,
	m = 0,
	years = {
		d = {},
		k = {},
		m = {}
	}
}

function p.makeGeneralGraphs (frame, countTable)
	local date = os.date('*t')
	local iyear = 2006
	local currentYear = date.year
	
	local function makeString (c)
		local dGroup, kGroup, mGroup = '', '', ''
		local barChartWidth = 45 * ((currentYear - iyear) + 1)
		
		local s  = col_begin .. '\n' .. col_break .. '\n'
		
		s = s .. '{{#invoke:Chart|pie chart|radius=150|percent=true' ..
		'|slice 1=' .. numConv('en', c.d) .. 'Silinən:#d33' ..
		'|slice 2=' .. numConv('en', c.k) .. ':Saxlanılan:#00af89' ..
		'|slice 3=' .. numConv('en', c.m) .. ':Birləşdirilən:#36c' ..
		'}}' .. '\n' .. col_break
		
		s = s .. '{{#invoke:Chart|bar chart|stack=1|height=400' ..
		'|colors=#d33:#00af89:#36c|group names=Silinən:Saxlanılan:Birləşdirilən' ..
		'|width=' .. barChartWidth
		
		repeat
			dGroup = dGroup .. c.years.d[iyear] .. ':'
			iyear = iyear + 1
		until iyear > currentYear
		s = s .. '|group 1=' .. mw.ustring.sub(dGroup, 1, -2)
		
		iyear = 2006
		repeat
			kGroup = kGroup .. c.years.k[iyear] .. ':'
			iyear = iyear + 1
		until iyear > currentYear
		s = s .. '|group 2=' .. mw.ustring.sub(kGroup, 1, -2)
		
		iyear = 2006
		repeat
			mGroup = mGroup .. c.years.m[iyear] .. ':'
			iyear = iyear + 1
		until iyear > currentYear
		s = s .. '|group 3=' .. mw.ustring.sub(mGroup, 1, -2)
		
		iyear = 2006
		s = s .. '|x legends='
		repeat
			s = s .. '[[#' .. iyear .. '|' .. iyear .. ']]:'
			iyear = iyear + 1
		until iyear > currentYear
		s = mw.ustring.sub(s, 1, -2)
		
		s = s .. '}}' .. '\n' .. col_end
		
		return frame:preprocess(s)
	end
	return frame:expandTemplate{
		title = 'gizli blok',
		args = {
			'Silinənlərin diaqram formatında ümumi statistikası',
			makeString(countTable),
			background = '#E5E4E2'
		}
	}
end

function p.getDate (frmt, obj, l)
	if l == 'en' then
		return langEn:formatDate(frmt, obj or 'now')
	else
		return langAz:formatDate(frmt, obj or 'now')
	end
end

function p.count (arc)
	local c = {
		a = 0,	-- all
		d = 0,	-- delete
		k = 0,	-- keep
		m = 0	-- merge
	}
	local titleObj = mw.title.new('Vikipedita:Silinməyə_namizəd_səhifələr/Arxiv/' .. arc)
	local content = titleObj:getContent()
	
	if (titleObj.exists) then
		for i in string.gfind(content, 'Silinməsinə') do
			c.d = c.d + 1
		end
		
		for i in string.gfind(content, 'Saxlanılmasına') do
			c.k = c.k + 1
		end
		
		for i in string.gfind(content, 'Birləşdirilməsinə') do
			c.m = c.m + 1
		end
		
		c.a = c.d + c.k + c.m
	end
	
	return c
end

function p.makeGraph(frame, year, months, count, scale, style)
	
	local columns = #months
	local targs = {}
	
	local i = 1
	repeat
		if count[months[i]].a > 0 then
			table.insert(targs, months[i])
		else
			columns = columns - 1
		end
		i = i + 1
	until i > columns
	
	table.insert(targs, '#36c')
	table.insert(targs, 'Birləşdirilən')
	
	for _, month in pairs(months) do
		if count[month].a > 0 then
			table.insert(targs, count[month].m)
		end
	end
	
	table.insert(targs, '#00af89')
	table.insert(targs, 'Saxlanılan')
	
	for _, month in pairs(months) do
		if count[month].a > 0 then
			table.insert(targs, count[month].k)
		end
	end
	
	table.insert(targs, '#d33')
	table.insert(targs, 'Silinən')
	
	for _, month in pairs(months) do
		if count[month].a > 0 then
			table.insert(targs, count[month].d)
		end
	end
	
	local cur_year_style = (columns > 8) and 5 or 6
	local cur_year_scale = (cur_year_style % 2 == 0) and 1.5 or columns / 3
	
	targs.style   = style or cur_year_style
	targs.scale   = scale or cur_year_scale
	targs.title   = 'SNS müzakirələrinin qrafiki' .. tostring(year)
	targs.columns = columns
	targs.align   = 'center'
	
	 
	return frame:expandTemplate{ title = 'میله‌های داده', args = targs }
end

function p.currentYear (frame)
	local date = os.date('*t')
	local monthIndex = date.month
	local i = tonumber(monthIndex) - 1
	local n = '\n'
	local text = '==' .. date.year .. '==' .. n
	local months = {}
	local countForGraph = {}
	
	gCount.years.d[date.year] = 0
	gCount.years.k[date.year] = 0
	gCount.years.m[date.year] = 0
	
	repeat
		local month = monthNames[monthIndex - i]
		table.insert(months, month)
		i = i - 1
	until i < tonumber(monthIndex) - tonumber(monthIndex)
	
	local tbl = mw.html.create('table')
	tbl
		:attr('class', 'wikitable sortable jquery-tablesorter')
			:tag('tr')
				:tag('th')
					:attr('rowspan', '2')
					:wikitext('ماه')
					:css('width', '70px')
				:tag('th')
					:attr('rowspan', '2')
					:wikitext('کل<br/><small>(باقی)</small>')
					:css('width', '32px')
				:tag('th')
					:attr('colspan', '3')
					:wikitext('نتایج')
				:done()
			:tag('tr')
				:tag('th')
					:wikitext('حذف<br/><small>(٪ از کل)</small>')
					:css('width', '44px')
				:tag('th')
					:wikitext('بماند<br/><small>(٪ از کل)</small>')
					:css('width', '44px')
				:tag('th')
					:wikitext('ادغام<br/><small>(٪ از کل)</small>')
					:css('width', '44px')
				:done()
	
	local length = table.maxn(months)
	local j = 0
	local sortkey = length
	repeat
		local monthname = monthNames[monthIndex - j]
		local ttl = monthname .. ' ' .. date.year
		local cnt = p.count(ttl)
		
		-- populate general counts table
		gCount.d = gCount.d + cnt.d
		gCount.k = gCount.k + cnt.k
		gCount.m = gCount.m + cnt.m
		
		gCount.years.d[date.year] = gCount.years.d[date.year] + cnt.d
		gCount.years.k[date.year] = gCount.years.k[date.year] + cnt.k
		gCount.years.m[date.year] = gCount.years.m[date.year] + cnt.m
		
		-- "ncy" for "not closed yet";
		-- will be populated by "pages in current month's category minus total closed discussions
		local ncy = 0
		if ttl == monthNames[date.month] .. ' ' .. date.year or	-- current or previous month
		ttl == monthNames[date.month - 1] .. ' ' .. date.year then
			ncy = frame:callParserFunction( 'PAGESINCATEGORY', { 'نظرخواهی برای حذف در ' .. ttl, 'R' } ) - cnt.a
		end
		tbl
			:tag('tr')
				:tag('td')
				:attr('data-sort-value', sortkey)
					:wikitext('[' .. '[ویکی‌پدیا:نظرخواهی برای حذف/بایگانی/' .. ttl .. '|' .. ttl .. ']]')
				
				:tag('td')
					:css('text-align', 'center')
					:wikitext(
						"'''" ..
						frame:expandTemplate{
							title = 'پیوند رده در صورت وجود ۲',
							args= {
								'نظرخواهی برای حذف در ' .. ttl,
								numConv('fa', cnt.a)
							}
						} ..
						"'''" ..
						(tonumber(ncy) > 0 and '<br/><small>(' .. numConv('fa', ncy) .. ')</small>' or '')
						)
				:tag('td')
					:css('text-align', 'center')
					:wikitext(showPercentage(cnt.a, cnt.d, frame))
				:tag('td')
					:css('text-align', 'center')
					:wikitext(showPercentage(cnt.a, cnt.k, frame))
				:tag('td')
					:css('text-align', 'center')
					:wikitext(showPercentage(cnt.a, cnt.m, frame))
				:done()
		j = j + 1
		countForGraph[monthname] = cnt
		sortkey = sortkey - 1
	until  j == length
	
	local graphNeeded = (not monthNames[monthIndex] == 'ژانویه') and (not cnt.a + cnt.d + cnt.k + cnt.m == 0)
	
	text = text .. col_begin .. n .. col_break .. n .. tostring(tbl)
	
	if (graphNeeded) then
		text = text .. n .. col_break .. n ..
			   p.makeGraph(frame, date.year, months, countForGraph)
			   .. n .. col_end
	else
		text = text .. n .. col_break .. n ..
		frame:expandTemplate{
			title = 'توجه',
			args = {
				style = 'width:80%',
				content = 'از آنجا که هنوز هیچ جمع‌بندی در سال جدید انجام نشده،' ..
				' نمودار جمع‌بندی‌ها در حال حاضر در دسترس نیست.'
			}
		}
		.. n .. col_end
	end
	
	return text
	
end

function p.prevYear(frame)
	local y = p.getDate('Y', '-1 year', 'fa')
	local text = '== ' .. y .. ' ==\n'
	local tbl = mw.html.create('table')
	local ttl, month, cnt
	local sortkey = 12
	local countForGraph = {}
	
	gCount.years.d[y] = 0
	gCount.years.k[y] = 0
	gCount.years.m[y] = 0
	
	tbl
		:attr('class', 'wikitable sortable jquery-tablesorter')
		:tag('tr')
			:tag('th')
				:attr('rowspan', '2')
				:wikitext('ماه')
				:css('width', '70px')
			:tag('th')
				:attr('rowspan', '2')
				:wikitext('کل')
				:css('width', '32px')
			:tag('th')
				:attr('colspan', '3')
				:wikitext('نتایج')
			:done()
		:tag('tr')
			:tag('th')
				:wikitext('حذف')
				:css('width', '44px')
			:tag('th')
				:wikitext('بماند')
				:css('width', '44px')
			:tag('th')
				:wikitext('ادغام')
				:css('width', '44px')
		:done()
	for i = #monthNames, 1, -1 do
		month = monthNames[i]
		ttl = month .. ' ' .. y
		cnt = p.count(ttl)
		
		-- populate general counts table
		gCount.d = gCount.d + cnt.d
		gCount.k = gCount.k + cnt.k
		gCount.m = gCount.m + cnt.m
		
		gCount.years.d[y] = gCount.years.d[y] + cnt.d
		gCount.years.k[y] = gCount.years.k[y] + cnt.k
		gCount.years.m[y] = gCount.years.m[y] + cnt.m
		
		countForGraph[month] = cnt
		tbl
			:tag('tr')
				:tag('td')
				:attr('data-sort-value', sortkey)
					:wikitext('[' .. '[ویکی‌پدیا:نظرخواهی برای حذف/بایگانی/' .. ttl .. '|' .. ttl .. ']]')
				
				:tag('td')
					:css('text-align', 'center')
					:wikitext(numConv('fa', cnt.a))
				:tag('td')
					:css('text-align', 'center')
					:wikitext(numConv('fa', cnt.d))
				:tag('td')
					:css('text-align', 'center')
					:wikitext(numConv('fa', cnt.k))
				:tag('td')
					:css('text-align', 'center')
					:wikitext(numConv('fa', cnt.m))
				:done()
		sortkey = sortkey - 1
	end
	
	text = text .. col_begin .. '\n' .. col_break .. '\n' .. tostring(tbl) .. '\n' ..
	col_break .. '\n' .. p.makeGraph(frame, y, monthNames, countForGraph, 1.7, 1) .. '\n' .. col_end
	
	return text
	
end

function p.otherYears()
	local hy = p.getDate('Y', '-2 years', 'en')	-- Highest year
	local ly = 2006								-- lowest year
	local lm = 'مارس ۲۰۰۶'						-- to break the loop when we reach the oldest archive
	local yi = tonumber(hy)
	local years = {}
	local text = '== ' .. 'بایگانی‌های پیش از ' .. p.getDate('Y', '-1 year', 'fa') .. ' =='
	
	repeat 
		table.insert(years, yi)
		yi = yi - 1
	until yi - ly < 0
	
	local tbl = mw.html.create('table')
	tbl
		:attr('class', 'wikitable collapsible collapsed')
		:css('width', '372px')
		:tag('tr')
			:tag('th')
				:attr('rowspan', '2')
				:wikitext('ماه')
			:tag('th')
				:attr('rowspan', '2')
				:wikitext('کل')
			:tag('th')
				:attr('colspan', '3')
				:wikitext('نتایج')
			:done()
		:tag('tr')
			:tag('th')
				:wikitext('حذف')
			:tag('th')
				:wikitext('بماند')
			:tag('th')
				:wikitext('ادغام')
		:done()
	for k, v in pairs(years) do
		local yr = v
		tbl
			:tag('tr')
				:tag('td')
					:attr('colspan', '5')
					:attr('id', numConv('fa', yr))
					:css('background', '#39F none repeat scroll 0% 0%')
					:css('text-align', 'center')
					:wikitext("'''" .. numConv('fa', yr) .. "'''")
				:done()
			
			for i = #monthNames, 1, -1 do
				local month = monthNames[i]
				local ttl = month .. ' ' .. numConv('fa', yr)
				if ttl == lm then 
					break
				end
				local cn = p.count(ttl)
				
				-- populate general counts table
				gCount.d = gCount.d + cn.d
				gCount.k = gCount.k + cn.k
				gCount.m = gCount.m + cn.m
				
				gCount.years.d[numConv('fa', yr)] = (gCount.years.d[numConv('fa', yr)] or 0) + cn.d
				gCount.years.k[numConv('fa', yr)] = (gCount.years.k[numConv('fa', yr)] or 0) + cn.k
				gCount.years.m[numConv('fa', yr)] = (gCount.years.m[numConv('fa', yr)] or 0) + cn.m
				
				tbl
					:tag('tr')
						:tag('td')
							:wikitext('[' .. '[ویکی‌پدیا:نظرخواهی برای حذف/بایگانی/' .. ttl .. '|' .. ttl .. ']]')
						:tag('td')
							:css('text-align', 'center')
							:wikitext(numConv('fa', cn.a))
						:tag('td')
							:css('text-align', 'center')
							:wikitext(numConv('fa', cn.d))
						:tag('td')
							:css('text-align', 'center')
							:wikitext(numConv('fa', cn.k))
						:tag('td')
							:css('text-align', 'center')
							:wikitext(numConv('fa', cn.m))
						:done()
			end
		
	end
	text = text .. '\n' .. tostring(tbl)
	return text
	
end

function p.main(frame)
	local nsIsValid = mw.title.getCurrentTitle().namespace == 4
	local output = p.currentYear(frame) .. '\n' .. p.prevYear(frame) .. '\n' .. p.otherYears()
		.. (nsIsValid and '[[رده:بحث‌های نبح| بایگانی]]' or '')
	output = frame:expandTemplate{ title = 'ویکی‌پدیا:نظرخواهی برای حذف/بایگانی/بالا'}
		.. '\n' .. p.makeGeneralGraphs(frame, gCount)
		.. '\n' .. output
	return output
end

return p
Mənbə — ""

Informasiya Melumat Axtar

Anarim.Az

Sayt Rehberliyi ile Elaqe

Saytdan Istifade Qaydalari

Anarim.Az 2004-2023