Module:Nsm/Département

Une page de Wikiversité, la communauté pédagogique libre.

Le module:Nsm/Département propose plusieurs fonctions pour afficher les données de l'espace de noms Département. Ce module utilise les données collectées dans le module:Nsm/Table/108 (cf fr-wikiversity-ns sur gerrit).

  • dpt affiche le tableau complet des départements.
  • classement liste les départements dans l’ordre décroissant du nombre de documents existants, (indiquer la taille du classement en argument).
  • vide affiche la liste des départements vides.
  • pseudo affiche la liste des départements incomplets via les fonctions no-fac et no-page.
  • liens_dpt statistiques sur le nombre de liens
  • dpt_stat statistiques sur le nombre de leçons par département.

Voir aussi les librairies Module:Nsm/Lib, Module:Namespace lib et Module:Sortable lib.

info Documentation du Module:Nsm/Département : v · d · m · h.


local p            = require("Module:Nsm/Lib")       -- Bibliothèque NameSpace Monitor
local import       = require("Module:Nsm/Table/108") -- Tables de l'espace de noms
local import_talk  = require("Module:Nsm/Table/109") -- talkpages tables
local import_fac   = require("Module:Nsm/Table/106") -- module Faculté
local import_tri   = require("Module:Lib_table_tri") -- fonctions de tri (spairs)
-- Variables
t_prop     = import.t_prop           -- table des propriétés
t_pages    = import.t_pages          -- table des pages
label      = t_prop.label            -- Label de l'espace 
talk_prop  = import_talk.t_prop      -- ns talk properties
talk_pages = import_talk.t_talkpages -- talk pages table
talk_label = talk_prop.label         -- Label espace discussion
lang       = t_prop.lang             -- Global 
local t_dpt_fac = import_fac.t_dpt_fac -- Table département liés à faculté
pfix = prefix(lang, label)     -- Prefixe commun
t_root = ns_root_only(t_pages) -- table des pages racines
t_sub     = ns_subpages_only(t_pages)
function p.liens_existants() --Liste cumulée des documents (de l'espace principal) indexés via les départements.  
	local c = 0  -- Compteur de lien
	local t = {} -- Table des résultat
	for k, v in pairs(t_root) do -- Chaque departement consulte liste liens existants
		for index, document in pairs(v.l_exist) do c = c + 1 -- Compte les liens
			t[c] = document end end -- ajoute la paire numéro/document aux resultats
	t = unique_v(t) -- Filtre les doublons
	return st_print(t)
end

-- FONCTIONS
-- Ajouter sous-fonction "get_dpt(fac)" à la libraririe pour filtrer par faculté
-- Sur la base de t_dpt_fac¿?t_pages retourne la table des départements de la faculté en argument
function p.dpt() --[[Affiche le tableau principal des paramètres, avec le nombre de sous-pages et l'analyse des liens vers l'espace principal pour chaque département.]]--
	local col = {'n_sub','page',  'n_theme', 'n_niveau', 'n_add', 'n_lessons', 'n_exist'}
	return st_print(t_root, col, '-i')
end
function p.liens_dpt_rch() --[[Affiche les liens vers l'espace recherche pour chaque département. copie de p.dpt]]--
	local col = {'page', 'rch_out',  'l_rch'}
	return st_print(t_root, col, '-i')
end

function p.classement(frame) -- RELIRE Classement des départements en fonction du nombre de lien vers l'espace principal
	local t = {} --table pour les resultats
	local limite = 50
	if frame.args[1] ~= nil then limite = tonumber(frame.args[1]) end
	local r = ';Classement des '.. limite .. ' départements les plus peuplés\n'
	local t_top = {} -- table pour tri dept par nombre de liens existants
	for i, v in ipairs(t_pages) do -- à partir table globale
		local departement = v.page
		if v.l_exist ~= nil then -- si liens existants
			local l_exist = table.maxn(v.l_exist) -- stock le nombre 
			t_top[departement] = l_exist          -- en regard du titre du dpt
		end	end
	local st_top = {} -- reçoit les donnée triées
	local c=0
	for k, v in spairs(t_top, function(t,a,b) return t[b] < t[a] end) do
		c = c+1
		st_top[c] = {k, v}
	end
	for i, v  in pairs(st_top) do
    	if i <= limite then
    		tv = {}
    		tv['page'] = v[1]  -- Nommer les paramètres
    		tv['liens'] = v[2] -- Pour imprimer les colonnes
    		table.insert(t, tv)
    		--r = r .. ':' .. i .. ' [[' .. page .. ']] ' .. liens .. '\n'
    		end	end
	local col = {'page', 'liens'}
	return st_print(t, col, '-i') --, '-i'
	--return r
end

function p.report_liens(frame) -- Attend une table de départements, additionne les liens
	local module_name = frame:getTitle()
	local r = '; p.report_liens() : Analyse des liens depuis les départements vers l\'espace principal. Voir [[' ..  module_name .. ']].\n'
		local c_theme, c_niveau, c_exist, c_add, c_liens, n_dpt = 0, 0, 0, 0, 0, 0
	for k, v in pairs(t_root) do -- À partir de la table racine des dpt
		c_theme  = c_theme   + v.n_theme
		c_niveau = c_niveau  + v.n_niveau
		c_exist  = c_exist   + v.n_exist
		c_add    = c_add     + v.n_add
		c_liens  = c_liens + v.n_lessons
		n_dpt = n_dpt + 1 end
	-- Calculs
	local tous    = c_theme  + c_niveau -- Somme des liens par thèmes et par niveaux
	local double  = c_niveau - c_add    -- Vérifier (proba. dble c_theme)
	local broken  = c_liens  - c_exist    -- Somme liens moins cumul page existe
	local average = c_exist    / n_dpt    -- Ratio nombre de pages/leçon par département
	r = r .. '* Somme des liens par thèmes et par niveaux : '.. tous .. '\n'
	r = r .. ':: Somme des liens par thèmes affichés : ' .. c_theme .. '\n'
	r = r .. ':: Somme des liens par niveaux affichés : ' .. c_niveau .. '\n'
	r = r .. ':: Liens ajouté par la section niveaux : ' .. c_add .. '\n'
	r = r .. '* Somme des liens sans redondance : ' .. c_liens .. '\n'
	r = r .. ':: Liens redondants : ' .. double .. '\n'
	r = r .. '* Somme des liens dont la page existe : ' .. c_exist .. '\n'
	r = r .. ':: Liens cassés : ' .. broken .. '\n' 
	r = r .. '* Moyenne de liens par département : ' .. average .. '\n'
	return r
end

function p.dpt_stat()  -- affiche les statistiques de leçons par departement
	local t_root = ns_root_only(t_pages) -- root_page
	local les0, les3, les5, les9, les10 = 0, 0, 0, 0, 0
	for i, v in pairs(t_root) do
		if table.maxn(v.l_exist) == 0 then
			les0 = les0 + 1
		elseif table.maxn(v.l_exist) <= 3 then
			les3 = les3 + 1
		elseif table.maxn(v.l_exist) <= 5 then
			les5 = les5 + 1
		elseif table.maxn(v.l_exist) <= 9 then
			les9 = les9 + 1
		else les10 = les10 +1 end
	end
	local r = '* Nombre de départements vides : .................... '.. les0 .. '\n* Départements à soutenir (max. 3 leçons) : ...... '.. les3 .. '\n* Départements matures (plus de 3 leçons) : ..... ' .. les5+les9+les10 ..'\n::: Départements avec 5 leçons maximum : .......... ' .. les5 .. '\n::: Départements avancés (max. 9 leçons) : .......... ' .. les9 .. '\n::: Départements remarquables (plus de 9 leçons) : ' .. les10 .. '\n::::;Nombre total de départements  ... ' .. les0+les3+les5+les9+les10
	return r
end

function p.vide(frame)   -- TABLEAU MANUEL frame pour collecter la date de dernière revision
	local data_set = {}  -- Jeu de données
	local c = 0          -- compte les dep vides
	local tab = st_open .. st_title .. '!dernière \nrévision\n!sous-pages\n!Catégorie\n'.. st_endline  -- construction du tableau personnalisé
	for i, v in ipairs(t_pages) do  -- chaque page de la table
		if v.nsep == 0 then         -- Uniquement les pages racines
			if table.maxn(v.l_exist) == 0 then  -- valeur maximum de la liste
				c = c +1                        -- compteur de departement vide
				local lastrev = frame:preprocess( '{{REVISIONTIMESTAMP:'..v.page..'}}' )
				v.date1 = lastrev   -- dernière revision page principale du dpt
				data_set[c] = v     -- reçoit toutes les données de la page
				local base_line = cel(c) ..cel(lnk(v.page)) -- début de ligne
				category = string.sub(v.page, 17)  -- tronque le prefixe
				category = '[[:Catégorie:' .. category ..']]' -- forme le lien catégorie
				local sp = '' -- variable pour les liens des sous-pages
				for i,v in pairs(v.l_sub) do sp = sp .. lnk(v)..'\n' end -- compile les liens
				line = base_line ..cel(v.date1) ..cel(sp) ..cel(category).. st_endline --complète la ligne
				tab = tab .. line -- ajoute la ligne
				end end end
	tab = tab .. st_close  -- ferme le tableau
	return tab
end

function p.nombre_de_departements() -- MÊME Fx dans faculté -> Variable locale ou -> option de sortie de la fx principale
	n_dpt = t_prop.racine -- Nombre de pages racines de l'espace de noms
	return n_dpt
end
	
function p.no_fac() --[[Vérifie si le département est attaché à une faculté]]--
	local result = ';Liste des départements sans faculté\n'
	local line = ''
	for i, data in ipairs(t_pages) do -- Dictionnaire des pages (t_root!)
		if data.nsep == 0 then        -- Uniquement pour les pages racines
			local pseudo = data.page  
			local bol = false --[[On doit pouvoir vérifier l'existence de la valeur dans la table sans la parcourir à chaque fois]]--
        	for i, v in ipairs(t_dpt_fac) do -- département de faculté
				if v.page == pseudo then bol = true end 
        	end -- la page est dans les 2 tables
        	if bol == false then line = line .. ':' .. i .. ' [[' .. tostring(pseudo) .. ']]\n' end end	end
	if line == '' then result = result .. 'Tous les départements sont attachés à (au moins) une faculté.\n' else result = result .. line end
	return result
end
    
function p.no_page() -- Vérifie si le lien du département pointe vers une page existante
	local result = ';Liste des départements sans page dans l\'espace de noms\n'
	local no_page = ''
	for i, dpt in ipairs(t_dpt_fac) do 
		nom_dpt = dpt.page
		local bol = false
		for i, v in ipairs(t_pages) do
			if v.page == nom_dpt then bol = true end end
		if bol == false then no_page = no_page .. ':' .. i .. ' [[' .. tostring(nom_dpt) .. ']]\n' end end
	if no_page == '' then result = result .. 'Tous les départements référencés dans l\'espace de noms Faculté, disposent d\'une page dans l\'espace de nom Département' else result = result .. no_page end
	return result
end
function p.pseudo()
	local r = ''
	r1 = p.no_fac()
	r2 = p.no_page()
	r = r1 .. r2
	return r
end

--[[
function p.chk_cat() -- supervise la catégorie départements
	local r = chk_cat('Départements', t_root)
	return r
end
function p.find_cat() --RENOMMER dpt_cat_stat() catégories:Départements - affiche le lien vers la catégorie éponyme pour chaque département
	local tab = find_cat(t_root, pfix) -- appel la fonction
	return tab                         -- retourne le tableau
end
]]--

return p