Module:Nsm/Département
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 fonctionsno-fac
etno-page
.liens_dpt
statistiques sur le nombre de liensdpt_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.
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