Aller au contenu

Module:Carte/autodoc

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 5 décembre 2017 à 01:11 et modifiée en dernier par Od1n (discuter | contributions) (court-circuitage du traitement si inclus sur Module:Carte/données/Bac à sable, afin de faciliter (et fiabiliser) l'inclusion *automatique* à venir de ce module de documentation). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Ce modèle possède une unique fonction exportable destinée à être utilisée par l'intermédiaire du modèle : {{Documentation données cartes}}.

datadoc(frame) – créé la page de documentation pour un module de paramétrage de carte (par exemple Module:Carte/données/canada.

-- Cette page est la racine des pages de paramétrage des carte de géolocalisation. Voir [[Catégorie:Module de paramétrage de carte]]
-- elle contient aussi un hack pour la documentation des sous-modules de paramétrage de carte

local p = {}
local linguistic = require('Module:Linguistique')

local todms = require('Module:Coordinates').dec2dms

local function showpoint(mapdata, latitude, longitude, text) -- affiche un point important de la carte avec ses coordonnées
	return 	{latitude = latitude, longitude = longitude, text = text}
end

local function makemainmap(area) -- carte principale affichée avec les points principaux dans la doc
	local data = require('Module:Carte/données/' .. area)
	if data.projection ~= 'Projection équirectangulaire' then
		return '[[File:' .. data.images.default .. '|thumb|' .. "(carte par défaut)" .. ']]'
	end
	local top, bottom, left, right = data.top, data.bottom, data.left, data.right
	local ycenter= (top + bottom) / 2
	local xcenter = (left + right) / 2
	if right < left then
		xcenter = xcenter - 180
	end
	return tostring(require('Module:Carte').multimap({
		maplist = {area},
		caption = 'Carte par défaut<br />.',
		pointtable = {
			showpoint(data, top, xcenter, todms{args = {data.top, 'N'}}), -- 'N' pour latitude : hack, il faudrait réparer module:Coordonnées
			showpoint(data, bottom, xcenter, todms{args = {data.bottom, 'N'}}),
			showpoint(data, ycenter, left, todms{args = {data.left, 'W'}}),
			showpoint(data, ycenter, right, todms{args = {data.right, 'W'}}),
		}  })).. '</b><br />'
end

function p.datadoc(frame) -- pour documenter les pages Carte/données/
	local pagename = frame:preprocess('{{PAGENAME}}')
	if mw.ustring.match(pagename, '/Bac à sable$') or mw.ustring.match(pagename, '/Test$') then
		return ''
	end
	local area = mw.text.split(pagename , '/')[3]
	local data = require('Module:Carte/données/' .. area)
	local placename = data.name or mw.wikibase.label(data.wikidata)
	local placelink = ''
	if data.wikidata then 
		placelink = mw.wikibase.sitelink(data.wikidata)
	end
	if placelink == '' then -- apparemment wikibase.sitelink retourne '' pas nil
		placelink = nil
	end
	local formattedname =  placename
	if placelink then
		formattedname =  '[[' .. placelink .. '|' .. placename .. ']]'
	end
	-- ajouter ici un script vérifiant que toutes les champs requis sont fournis, et dans un format correct

	-- catégorisation
	local cats = ''
	-- cat des pages de doc
	if string.find(pagename, '/Documentation') then
		cats = '[[Catégorie:Documentation de module]]'

	-- cat des pages de code
	else
		if data.zone then
			cats = cats .. '[[Catégorie:Module de paramétrage de carte ' .. linguistic.of(data.zone) .. '|' .. area .. ']]'
		else
			cats = cats .. '[[Catégorie:Module de paramétrage de carte|' .. area .. ']]'
		end
		if not placelink then 
			cats = cats .. '[[Catégorie:Module de paramétrage de carte sans lien Wikidata|' .. area .. ']]'
		end
	end

	local typeprojection = data.projection
	if typeprojection == 'Projection équirectangulaire' then 
		typeprojection = '[[Projection cylindrique équidistante|projection équirectangulaire]]'
	elseif typeprojection == 'Projection conique avec DL' then
		typeprojection = '[[Aide:Systèmes de projection#Projection conique centrale sur le cône tangent|projection conique centrale sur le cône tangent]]'
	end
	local introtext = "Cette page contient des données concernant des cartes de géolocalisation " .. linguistic.of(formattedname, string.sub(data.genre, 1, 1), string.sub(data.genre, 2, 2), data.determiner, placename) 
	.. ' construites selon la technique de la ' .. typeprojection .. '.' 
	.. '<br />Elle est conçue pour être utilisée depuis [[Module:Carte]]. Pour davantage d\'informations sur le sujet, veuillez-vous rapporter à la documentation de ce module. '
	.. '<br /><br /><br /><b> Liste des cartes disponibles</b><br />'
	local maplist = data.images
	local mapgallery = {}
	local mainmap = ''
	local nummap = 0 -- nombre de cartes traitées
	local gallery = mw.html.create('table'):tag('tr')
	if maplist.default then -- pour la carte principale : affiche les coordonnées extrêmes
		local mainmap = makemainmap(area)
		gallery:tag('td'):css({marge = '0px'}):wikitext(mainmap):done()
		maplist.default = nil
		nummap = nummap + 1
	end
	for i, j in pairs(maplist) do
		gallery:tag('td'):wikitext('[[File:' .. j .. '|thumb|' .. i .. ']]')
		nummap = nummap + 1
		if nummap % 3 == 0 then -- aller à la ligne toutes les trois cartes
			gallery:done()
			gallery:tag('tr')
		end
	end
	gallery:allDone()
	return introtext .. tostring(gallery) .. cats
end
return p