La documentation pour ce module peut être créée à Module:Index/Documentation

local m_psp = require('Module:ProofreadStats/Data')

local p = {}

function p.index_progression(frame)
	local args = frame:getParent().args
	
	local book = args['livre']
	local title = args['titre']
	local note = args['note'] or ''
	local authors = args['auteurs'] or ''
	
	local index = m_psp['Livre:' .. book]
	local nb_no_text, nb_proofread, nb_validated, nb_total
	
	-- if index then
	-- 	nb_no_text = index[0]
	-- 	nb_proofread = index[3]
	-- 	nb_validated = index[4]
	-- 	nb_total = index[0] + index[1] + index[2] + index[3] + index[4] + index['m']
	-- else
		index = mw.ext.proofreadPage.newIndex(book)
		nb_no_text = index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.WITHOUT_TEXT)
		nb_proofread = index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.PROOFREAD)
		nb_validated = index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.VALIDATED)
		nb_total = index.pageCount 
	-- end
	local psp = math.floor((nb_no_text+nb_proofread+nb_validated) * 100 / nb_total)
	
	local code = '* [ <abbr style="width: 3.5em;display: inline-block;text-align:right;padding:0 0.2em; font-size:80%" title="' .. nb_total
	code = code .. ' pages au total dans le fac-similé">'
	code = code .. nb_total.. ' p.</abbr> |'
	code = code .. ' <abbr style="width: 3.5em;display: inline-block;text-align:right;padding:0 0.2em; font-size:80%" title="'
	code = code .. (nb_proofread + nb_validated) .. ' pages corrigées ou validées"'
	code = code .. ' class="prp-pagequality-3 quality3">' .. psp .. ' %</abbr> '
	code = code .. '| <abbr style="width: 3.5em;display: inline-block;text-align:right;padding:0 0.2em; font-size:80%" title="'
	code = code .. nb_validated .. ' pages validées" class="prp-pagequality-4 quality4">'
	code = code .. (math.floor((nb_no_text+nb_validated) * 100 / nb_total))
	code = code .. ' %</abbr> ] '
	code = code .. '<span style="display:inline-block; vertical-align: top; max-width: 30em">' .. "'''''[[Livre:" .. book .. '|' .. title .. "]]'''''"
	if note ~= '' then
		code = code .. ' <span class="colore" style="font-size: 80%; line-height: normal; color: #008000;">(' .. note .. ')</span> '
	end
	if authors ~= '' then
		code = code .. '<br>de ' .. authors
	end
	code = code .. '</span>'
	return code
end

function p.tome_avancement(frame)
	local args = frame:getParent().args
	
	local title = args["1"]
	local label = args["2"]
	local tooltip = args["3"]
	local style = ''
	
	if not title or title == '' then
		return '<span style="color:red; font-weight:bold;">Index non renseigné.</span>'
	end
	
	if not label or label == '' then
		return '<span style="color:red; font-weight:bold;">Libellé non renseigné.</span>'
	end
	
	if mw.ustring.len(label) == 1 then
		label = '&nbsp;' .. label .. '&nbsp;'
	else
		label = '&thinsp;' .. label .. '&thinsp;'
	end
	
	local index = mw.ext.proofreadPage.newIndex(mw.ustring.gsub(title, 'Livre:', ''))
	if index.missingPages > 0 then
		style = 'border-color: #FFA0A0; border-style: dotted; border-width: thin; border-radius: 2px; padding:0; white-space:nowrap;'
		tooltip = tooltip or 'Avancement À créer — Ce tome/volume comprend des pages à créer ou plus avancées.'
	elseif index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.PROBLEMATIC) > 0 then
		style = 'background-color: #B0B0FF; border-radius: 5px; white-space:nowrap;'
		tooltip = tooltip or 'Ce tome/volume comprend des pages à problème ou plus avancées.'
	elseif index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.NOT_PROOFREAD) > 0 then
		style = 'background-color: #FFA0A0; border-radius: 5px; white-space:nowrap;'
		tooltip = tooltip or 'Avancement À corriger — ce tome/volume comprend des pages à corriger ou plus avancées.'
	elseif index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.PROOFREAD) > 0 then
		style = 'background-color: #FFE867; border-radius: 5px; white-space:nowrap;'
		tooltip = tooltip or 'Avancement À valider — ce tome/volume comprend des pages à valider ou plus avancées.'
	elseif index:pagesWithLevel(mw.ext.proofreadPage.QualityLevel.VALIDATED) > 0 then
		style = 'background-color: #90FF90; border-radius: 5px; white-space:nowrap;'
		tooltip = tooltip or 'Avancement Terminé — ce tome/volume est complètement validé.'
	else
		return '<span style="color:red; font-weight:bold;">Impossible de calculer l’avancement.</span>'
	end
	
	return '[[' .. title .. '|<span style="' .. style .. '" title="' .. tooltip .. '">' .. label .. '</span>]]'
end

return p