"इस मॉड्यूल हेतु प्रलेख मॉड्यूल:Index progress/doc पर बनाया जा सकता है"

--[=[
This is a module to extract data from the ProofreadPage Lua API
and feed it into a {{progress bar}}
]=]

local getArgs = require('Module:Arguments').getArgs

local p = {} --p stands for package
local proofreadPage = require('mw.ext.proofreadPage')
local yesno = require('Module:Yesno')

--[=[
Map ProofradPage Lua index progress to {{Progress bar}} and
return the expanded template
]=]
function progressStatsToBar( frame, index, existing_only, height )
	
	local total
	if existing_only then
		total = index.existingPages
	else
		total = index.pageCount
	end
	
	return frame:expandTemplate{
		title = 'Progress bar',
		args = {
			total = total,
			notext = index:pagesWithLevel( 0 ),
			['not proofread'] = index:pagesWithLevel( 1 ),
			problematic = index:pagesWithLevel( 2 ),
			proofread = index:pagesWithLevel( 3 ),
			validated = index:pagesWithLevel( 4 ),
			height = height
		}
    }
end

function p.bar( frame )

	local args = getArgs(frame)
	local idx = args[ 1 ]
		:gsub( '^Index:', '' )
	local existing_only = yesno(args.existing_only or 'no')
	local height = args.height

	local index = proofreadPage.newIndex( idx )
	if not index then
		return nil
	end
	
	return progressStatsToBar( frame, index, existing_only, height )
end

--[=[
Map ProofradPage Lua index progress to {{progress pie chart}} and
return the expanded template
]=]
function progressStatsToPie( frame, index, existing_only, no_legend )
	
	local total
	if existing_only then
		total = index.existingPages
	else
		total = index.pageCount
	end
	
	return frame:expandTemplate{
		title = 'Progress pie chart',
		args = {
			total = total,
			notext = index:pagesWithLevel( 0 ),
			['not proofread'] = index:pagesWithLevel( 1 ),
			problematic = index:pagesWithLevel( 2 ),
			proofread = index:pagesWithLevel( 3 ),
			validated = index:pagesWithLevel( 4 ),
			existing_only = existing_only,
			no_legend = no_legend
		}
    }
end

function p.pie( frame )

	local args = getArgs(frame)
	local idx = args[ 1 ]
		:gsub( '^Index:', '' )
	local existing_only = yesno(args.existing_only or 'no')
	local no_legend = yesno(args.no_legend or 'no')

	local index = proofreadPage.newIndex( idx )
	if not index then
		return nil
	end
	
	return progressStatsToPie( frame, index, existing_only, no_legend )
end

return p