<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AGraph_production</id>
	<title>Module:Graph production - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AGraph_production"/>
	<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Graph_production&amp;action=history"/>
	<updated>2026-04-27T17:01:31Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Graph_production&amp;diff=317&amp;oldid=prev</id>
		<title>Jaggerwock : Page créée avec « local getArgs = require(&#039;Module:Arguments&#039;).getArgs local p = {} local defaultproperty = &#039;P1092&#039; -- propriété &quot;quantité produite&quot;  local json = { 	version = 2, 	width = 600, height = 300, 	data = { 		{ 			name = &quot;table&quot;, 			values = {} 		} 	}, 	scales = { 		{ 			name = &quot;x&quot;, 			type = &quot;ordinal&quot;, 			range = &quot;width&quot;, 			domain = { data = &quot;table&quot;, field= &quot;x&quot; } 		}, 		{ 			name = &quot;y&quot;, 			range = &quot;height&quot;, 			nice = true, 			domain = { data = &quot;table&quot;, field = &quot;y&quot; }... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Graph_production&amp;diff=317&amp;oldid=prev"/>
		<updated>2024-09-20T14:10:00Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local p = {} local defaultproperty = &amp;#039;P1092&amp;#039; -- propriété &amp;quot;quantité produite&amp;quot;  local json = { 	version = 2, 	width = 600, height = 300, 	data = { 		{ 			name = &amp;quot;table&amp;quot;, 			values = {} 		} 	}, 	scales = { 		{ 			name = &amp;quot;x&amp;quot;, 			type = &amp;quot;ordinal&amp;quot;, 			range = &amp;quot;width&amp;quot;, 			domain = { data = &amp;quot;table&amp;quot;, field= &amp;quot;x&amp;quot; } 		}, 		{ 			name = &amp;quot;y&amp;quot;, 			range = &amp;quot;height&amp;quot;, 			nice = true, 			domain = { data = &amp;quot;table&amp;quot;, field = &amp;quot;y&amp;quot; }... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
local defaultproperty = &amp;#039;P1092&amp;#039; -- propriété &amp;quot;quantité produite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local json = {&lt;br /&gt;
	version = 2,&lt;br /&gt;
	width = 600, height = 300,&lt;br /&gt;
	data = {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;table&amp;quot;,&lt;br /&gt;
			values = {}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	scales = {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;x&amp;quot;,&lt;br /&gt;
			type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
			range = &amp;quot;width&amp;quot;,&lt;br /&gt;
			domain = { data = &amp;quot;table&amp;quot;, field= &amp;quot;x&amp;quot; }&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;y&amp;quot;,&lt;br /&gt;
			range = &amp;quot;height&amp;quot;,&lt;br /&gt;
			nice = true,&lt;br /&gt;
			domain = { data = &amp;quot;table&amp;quot;, field = &amp;quot;y&amp;quot; }&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	axes = {&lt;br /&gt;
		{ type = &amp;quot;x&amp;quot;, scale = &amp;quot;x&amp;quot; },&lt;br /&gt;
		{ type = &amp;quot;y&amp;quot;, scale = &amp;quot;y&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	marks = {&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;rect&amp;quot;,&lt;br /&gt;
			from = { data = &amp;quot;table&amp;quot; },&lt;br /&gt;
			properties = {&lt;br /&gt;
				enter = {&lt;br /&gt;
					x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
					width = { scale = &amp;quot;x&amp;quot;, band = true, offset = -1},&lt;br /&gt;
					y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
					y2 = { scale = &amp;quot;y&amp;quot;, value = 0 }&lt;br /&gt;
				},&lt;br /&gt;
				update = {&lt;br /&gt;
					fill = { value = &amp;quot;steelblue&amp;quot; }&lt;br /&gt;
				},&lt;br /&gt;
				hover = {&lt;br /&gt;
					fill = { value = &amp;quot;red&amp;quot; }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;text&amp;quot;,&lt;br /&gt;
			from = { data = &amp;quot;table&amp;quot; },&lt;br /&gt;
			properties = {&lt;br /&gt;
				enter = {&lt;br /&gt;
					x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
					dx = { scale = &amp;quot;x&amp;quot;, band = true, mult = 0.5 },&lt;br /&gt;
					y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
					fill = { value = &amp;quot;#000&amp;quot; },&lt;br /&gt;
					align = { value = &amp;quot;center&amp;quot; },&lt;br /&gt;
					baseline = { value = &amp;quot;top&amp;quot; },&lt;br /&gt;
					dy = { value = -13 },&lt;br /&gt;
					text = { field = &amp;quot;y&amp;quot; }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function getStatements(id, property)&lt;br /&gt;
	local entity = mw.wikibase.getEntity(id)&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not entity.claims or not entity.claims[property] then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local statements = entity.claims[property]&lt;br /&gt;
	return statements&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function prepareStatements(statements)&lt;br /&gt;
	local numbers_raw = {}&lt;br /&gt;
	local function processStatement(i, statement)&lt;br /&gt;
		local snak = statement.mainsnak&lt;br /&gt;
		if not snak or snak.snaktype ~= &amp;#039;value&amp;#039; then&lt;br /&gt;
			statements[i] = nil&lt;br /&gt;
			return;&lt;br /&gt;
		end&lt;br /&gt;
		local n = tonumber(snak.datavalue.value.amount)&lt;br /&gt;
		local d = nil&lt;br /&gt;
		if statement.qualifiers and statement.qualifiers.P585 then  -- dátum&lt;br /&gt;
			d = require(&amp;#039;Module:Time&amp;#039;).newFromWikidataValue(statement.qualifiers.P585[1].datavalue.value)&lt;br /&gt;
		end&lt;br /&gt;
		if d and d.year then&lt;br /&gt;
			statements[i] = { d.year, n }&lt;br /&gt;
			numbers_raw[d.year] = n&lt;br /&gt;
			return;&lt;br /&gt;
		else&lt;br /&gt;
			statements[i] = nil&lt;br /&gt;
			return;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for n, statement in pairs(statements) do&lt;br /&gt;
		processStatement(n, statement)&lt;br /&gt;
	end&lt;br /&gt;
	local dates = {}&lt;br /&gt;
	for d, v in pairs(statements) do&lt;br /&gt;
		table.insert(dates, v[1])&lt;br /&gt;
	end&lt;br /&gt;
	if #dates &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(dates)&lt;br /&gt;
	local numbers = {}&lt;br /&gt;
	if #dates &amp;lt;= 20 then&lt;br /&gt;
		for _, v in ipairs(dates) do&lt;br /&gt;
			table.insert(numbers, { tostring(v), numbers_raw[v] } )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local n = #dates - 1&lt;br /&gt;
		for i = 0, 9 do&lt;br /&gt;
			local j = math.floor(i * n / 9 + 0.5) + 1&lt;br /&gt;
			local year = dates[j]&lt;br /&gt;
			table.insert(numbers, {tostring(year), numbers_raw[year]})&lt;br /&gt;
		end&lt;br /&gt;
		if numbers_raw[dates[n + 1]] &amp;gt;= 1000000 then&lt;br /&gt;
			json.marks[2].properties.enter.angle = { value = -45 }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return numbers&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function drawGraph(data, float)&lt;br /&gt;
	for _, v in pairs(data) do&lt;br /&gt;
		local d, n = v[1], v[2]&lt;br /&gt;
		table.insert(json.data[1].values, { x = d, y = n })&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
		:css(&amp;quot;display&amp;quot;, &amp;quot;inline-block&amp;quot;)  -- style hotfix&lt;br /&gt;
		:css(&amp;quot;float&amp;quot;, float) -- optional&lt;br /&gt;
		:wikitext(mw.getCurrentFrame():extensionTag(&amp;quot;graph&amp;quot;, mw.text.jsonEncode(json)))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	if type(frame) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		args = { id = frame }&lt;br /&gt;
	else&lt;br /&gt;
		args = getArgs(frame)&lt;br /&gt;
	end&lt;br /&gt;
	local property = args[&amp;quot;propriété&amp;quot;] or args.property or defaultproperty&lt;br /&gt;
	local statements = getStatements(args.id, property)&lt;br /&gt;
	if type(statements) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	statements = prepareStatements(statements)&lt;br /&gt;
	if type(statements) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return drawGraph(statements, args.float)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
</feed>