Module:Infobox/Appareil informatique/Bac à sable

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

Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox Appareil informatique/Bac à sable.

-- Module pour afficher un appareil informatique
local wd = require( 'Module:Wikidata' )
local general = require( 'Module:Infobox/Fonctions' )
local building = require( 'Module:Infobox/Fonctions/Bâtiment' )
local localdata = require( 'Module:Infobox/Localdata' )


-- Fonction permettant l'affichage de la partie succession
local function buildsuccession ()
	local sui = localdata["successeur"] or wd.formatStatements{property = 'P156', conjtype = 'new line' }
	if localdata["prédécesseur"] or sui then
	return {
			type = 'table',
			titlestyle = { ['background-color'] = '#E6E6E6' },
			title = localdata["chronologie"],
			rows = {
				{
					type = 'succession',
					value = {
						before = localdata["prédécesseur"],
						after = sui
					}
				}
			}
		}
	end
end

-- Fonction permettant l'affichage des dimensions ; facilement adaptable pour changer l'unité si besoin
local function dimensions ()
	local val = localdata["dimensions"]
	
	local d1 = wd.formatStatements{property = 'P2049', targetunit = 'mm', showunit = '-' }
	local d2 = wd.formatStatements{property = 'P2048', targetunit = 'mm', showunit = '-' }
	local d3 = wd.formatStatements{property = 'P2610', targetunit = 'mm', showunit = '-' }
	
	if not val and d1 and d2 and d3 then 
		val =  d1 .. ' × ' .. d2 .. ' × ' .. d3  .. ' mm'
	end
	
	return {
		type = 'row',
		label = 'Dimensions',
		value = function() return val end
	}
end

-- Fonction permettant l'affichage de la masse ; facilement adaptable pour changer l'unité si besoin
local function masse ()
	local val = localdata["poids"]
	local m = wd.formatStatements{property = 'P2067', targetunit = 'g', showunit = '-' }
	
	if not val and m then val = m .. ' g' end
	return { type = 'row', label = 'Masse', value = function() return val end }
end

-- Fonction permettant l'affichage du stockage ; facilement adaptable pour changer l'unité si besoin
local function stockage ()
	local val = localdata["stockage"]
	local sto = wd.formatStatements{property = 'P3559', conjtype = 'or' }
	local type = wd.formatStatements{property = 'P4788' }
	
	if sto and type then sto = sto .. ' (' .. type .. ')' end
	
	if not val and sto then val = sto end
	if val then
		val = wd.addLinkBack(val, nil, 'P3559')
		return { type = 'row', label = 'Stockage', value = function() return val end }
	end
end

local function cpu ()
	local val = localdata["processeur"]
	local proc = wd.formatStatements{property = 'P880', showqualifiers = 'P2144', conjtype = "new line", defaultlink = "-"}
	
	if val then return val
	elseif proc then
		proc = wd.addLinkBack(proc, nil, 'P880')
		return { type = 'row', label = 'Processeur', value = function() return proc end }
	end
end


local function screen ()
	local ecr = localdata["écran"]
	
	if not ecr and wd.formatStatements{property = 'P5307', defaultlink = '-'} then
		ecr = 'Dalle ' .. wd.formatStatements{property = 'P5307', defaultlink = '-'} end
	
	local def = localdata["définition"]
	
	local def1 = wd.formatStatements{property = 'P5307', showonlyqualifier = 'P2043', link = '-', showunit = '-'}
	local def2 = wd.formatStatements{property = 'P5307', showonlyqualifier = 'P2048', link = '-', showunit = 'short'}
	
	if def1 and def2 and not def then def = def1 .. ' × ' .. def2
	elseif ( def1 or def2 ) and not def then def = 
		wd.formatStatements{property = 'P5307', showonlyqualifier = 'P2043', link = '-', showunit = 'short'} .. def2 end
	if def and ecr then ecr = ecr .. ' de ' .. def end
	
	local freq = wd.formatStatements{property = 'P5307', showonlyqualifier = 'P2144', link = '-', showunit = 'short'}
	if freq and ecr then ecr = ecr .. ' à ' .. freq end
	
	if ecr then
		ecr = wd.addLinkBack(ecr, nil, 'P5307')
		return { type = 'row', label = 'Écran', value = function() return ecr end }
	end
end


-- voir https://fr.wikipedia.org/wiki/Aide:Infobox_en_Lua
return {
	maincolor = '#D5D9ED',
	parts = {
		-- paramètre 'nom complet' en sous-titre
		general.title('informatique', nil, 'nom complet'),
		general.logo(),
		general.mainimage('Article à illustrer Appareil informatique'),
		{
			type = 'images',
			imageparameters =  {'image2'},
			captionparameter = {'légende2', 'description2'},
			defaultupright = '0.6',
			uprightparameter = 'upright',
			sizeparameter = 'taille image2',
			numval = 1,
		},
		{ type = 'table', rows = {
			{	type = 'row',
				label = 'Développeur',
				value = 'développeur',
        		property = 'P178'
			},
			{	type = 'row',
				label = 'Fabricant',
				value = 'fabricant',
	       		property = 'P176'
			},
			{	type = 'row',
				label = 'Famille',
				value = 'famille',
				property = 'P179'
			},
			{ type = 'row',
				label = 'Présentation',
				value = 'date de présentation',
				property = 'P571'
			},
			{	type = 'row',
				label = 'Date de sortie',
				value = 'début',
        		property = {'P5204', 'P577'}
			},
			{	type = 'row',
				label = 'Date de retrait',
				value = 'fin',
        		property = {'P2669', 'P730'}
			},
		},	},
		{ type = 'table', title = 'Fonctions', rows = {
			{	type = 'row',
				label = 'Type',
				value = 'type',
				wikidata = { property = 'P31', conjtype = 'and' }
			},
			screen
			--{	type = 'row',
			--	label = 'Écran',
			--	value = 'écran',
		--		wikidata = { property = 'P5307' }
		--	},
		--	{	type = 'row',
		--		label = 'Résolution',
		--		value = 'résolution',
		--	},
		--	{	type = 'row',
		--		label = 'Définition',
		--		value = 'définition',
		--	},
			{	type = 'row',
				label = 'Génération',
				value = 'génération',
			},
			{	type = 'row',
				label = 'Média',
				value = 'média',
			},
			{	type = 'row',
				label = 'Unités vendues',
				value = 'vente',
			},
			{	type = 'row',
				label = 'Environnement',
				value = 'environnement',
			},
			{	type = 'row',
				label = 'Entrées',
				value = 'entrées',
				wikidata = { property = 'P479', conjtype = 'and', defaultlink = '-' }
			},
			{	type = 'row',
				label = 'Capteurs',
				value = 'capteurs',
				wikidata = { property = 'P9192', conjtype = 'and', defaultlink = '-' }
			},
			{	type = 'row',
				label = 'Connectique',
				value = 'connectivité',
				wikidata = { property = 'P2935', conjtype = 'and', defaultlink = '-' }
			},
			{	type = 'row',
				label = 'Audio',
				value = 'audio',
				wikidata = { property = 'P7501', conjtype = 'and', defaultlink = '-' }
			},
		},  },
		{ type = 'table', title = 'Caractéristiques', rows = {
			{	type = 'row',
				label = 'Alimentation',
				value = 'alimentation',
			},
			{	type = 'row',
				label = 'Autonomie',
				value = 'autonomie',
			},
			{	type = 'row',
				label = 'Batterie',
				value = 'barrerie',
				wikidata = { property = 'P4140', defaultlink = '-', showunit = 'short' }
			},
			{	type = 'row',
				label = 'Puce',
				value = 'SoC'
			},
			cpu
			{	type = 'row',
				label = 'Carte graphique',
				value = 'carte graphique',
        		property = 'P2560',
			},
			{	type = 'row',
				label = 'Processeur sonore',
				value = 'processeur sonore',
			},
			{	type = 'row',
				label = 'Mémoire',
				value = {'mémoire', 'mémoire vive'},
				wikidata = { property = 'P2928', conjtype = 'or' }
			},
			stockage,
			{	type = 'row',
				label = 'Système d\'exploitation',
				value = 'os',
        		wikidata = { property = 'P306', defaultlink = '-' }
			},
			{	type = 'row',
				label = 'Contrôleurs',
				value = 'contrôleurs',
			},
			{	type = 'row',
				label = 'Caméra',
				value = 'caméra',
			},
			{	type = 'row',
				label = 'Pavé tactile',
				value = 'touchpad',
			},
			{	type = 'row',
				label = 'Services',
				value = 'services',
			},
			{	type = 'row',
				label = '[[Degré de liberté (mécanique)|Degrés de liberté]]',
				value = 'degrés de liberté',
			},
			{	type = 'row',
				label = 'Compatibilité',
				value = 'compatibilité',
			},
		},  },
		{
			type = 'table', title = 'Mesures', rows = { dimensions, masse }
		}, 
	buildsuccession ()
	}
}