<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidataChart</id>
	<title>Modul:WikidataChart - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidataChart"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:WikidataChart&amp;action=history"/>
	<updated>2026-05-27T13:34:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:WikidataChart&amp;diff=2928058&amp;oldid=prev</id>
		<title>imported&gt;McBayne: +Workaround, falls Datum geplottet werden soll</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:WikidataChart&amp;diff=2928058&amp;oldid=prev"/>
		<updated>2026-01-10T18:51:47Z</updated>

		<summary type="html">&lt;p&gt;+Workaround, falls Datum geplottet werden soll&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.plot(frame)&lt;br /&gt;
	local property = frame.args[1] or error(&amp;quot;Wikidata property to chart required&amp;quot;)&lt;br /&gt;
	local xQualifier = frame.args[2] or error(&amp;quot;Wikidata qualifier for x axis required&amp;quot;)&lt;br /&gt;
	local yIds = mw.text.split(frame.args[&amp;quot;pageIds&amp;quot;] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot;, true)&lt;br /&gt;
	local xStart = frame.args[&amp;quot;xStart&amp;quot;]&lt;br /&gt;
	local xEnd = frame.args[&amp;quot;xEnd&amp;quot;]&lt;br /&gt;
	local precision = tonumber(frame.args[&amp;quot;precision&amp;quot;])&lt;br /&gt;
	&lt;br /&gt;
	--[[ &lt;br /&gt;
	order-based parameters are not fully trimmed, and can carry newlines. trim them.&lt;br /&gt;
	this can happen when the template in wiki uses multiline style:&lt;br /&gt;
	{{#invoke:WikidataChart|plotWrapper&lt;br /&gt;
	| P1087&lt;br /&gt;
	| P585&lt;br /&gt;
	...&lt;br /&gt;
	}}&lt;br /&gt;
	]]&lt;br /&gt;
	property = mw.text.trim(property)&lt;br /&gt;
	xQualifier = mw.text.trim(xQualifier)&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	-- Daten sammeln&lt;br /&gt;
	local series = { captions = {}, points = {} }&lt;br /&gt;
	for seriesIdx, id in ipairs(yIds) do&lt;br /&gt;
		if id == &amp;quot;&amp;quot; then id = nil end&lt;br /&gt;
		local entity = mw.wikibase.getEntity(id)&lt;br /&gt;
		&lt;br /&gt;
		local labels = entity.labels or {}&lt;br /&gt;
		series.captions[seriesIdx] = (labels.de or labels.en or {}).value or id&lt;br /&gt;
&lt;br /&gt;
		local property = entity.claims[property]&lt;br /&gt;
		for _, item in ipairs(property) do&lt;br /&gt;
			if item.qualifiers and item.qualifiers[xQualifier] and item.qualifiers[xQualifier][1] then&lt;br /&gt;
				local qualifier = item.qualifiers[xQualifier][1]&lt;br /&gt;
				if qualifier.snaktype ~= &amp;quot;value&amp;quot; or qualifier.datatype ~= &amp;quot;time&amp;quot; then&lt;br /&gt;
					error(&amp;quot;&amp;#039;xQualifier&amp;#039; parameter must be a time&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				local x = applyPrecision(mw.text.trim(qualifier.datavalue.value.time, &amp;quot;+&amp;quot;), precision)&lt;br /&gt;
				&lt;br /&gt;
				if (not xStart or x &amp;gt;= xStart) and (not xEnd or string.sub(x, 1, #xEnd) &amp;lt;= xEnd) and qualifier.datavalue.value.precision &amp;gt;= (precision or 0) then&lt;br /&gt;
					local mainsnak = item.mainsnak&lt;br /&gt;
					if mainsnak.snaktype ~= &amp;quot;value&amp;quot; or mainsnak.datatype ~= &amp;quot;quantity&amp;quot; then&lt;br /&gt;
						error(&amp;quot;&amp;#039;property&amp;#039; parameter must be numeric&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
					local y = tonumber(mainsnak.datavalue.value.amount)&lt;br /&gt;
	&lt;br /&gt;
					if not series.points[x] then series.points[x] = {} end&lt;br /&gt;
					series.points[x][seriesIdx] = y&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- x-Werte sortieren&lt;br /&gt;
	local xValues = {}&lt;br /&gt;
	for k in pairs(series.points) do table.insert(xValues, k) end&lt;br /&gt;
	table.sort(xValues)&lt;br /&gt;
&lt;br /&gt;
	-- default werte, können überschrieben werden&lt;br /&gt;
	local chartArgs =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;line&amp;quot;,&lt;br /&gt;
		xType = &amp;quot;date&amp;quot;,&lt;br /&gt;
		x = table.concat(xValues, &amp;quot;,&amp;quot;),&lt;br /&gt;
		yType = &amp;quot;number&amp;quot;,&lt;br /&gt;
		--auskommentiert, da momentan nicht supported von der chart extension&lt;br /&gt;
		--xAxisTitle = mw.wikibase.label(xQualifier),&lt;br /&gt;
		--yAxisTitle = mw.wikibase.label(property)&lt;br /&gt;
	}&lt;br /&gt;
	-- Legenden/Reihentitel setzen&lt;br /&gt;
	for seriesIdx, caption in ipairs(series.captions) do&lt;br /&gt;
		chartArgs[&amp;quot;y&amp;quot; .. seriesIdx] = &amp;quot;&amp;quot;&lt;br /&gt;
		chartArgs[&amp;quot;y&amp;quot; .. seriesIdx .. &amp;quot;Title&amp;quot;] = caption&lt;br /&gt;
	end&lt;br /&gt;
	-- Werte setzen&lt;br /&gt;
	local seriesCount = #series.captions&lt;br /&gt;
	for _, x in ipairs(xValues) do&lt;br /&gt;
		yValues = series.points[x]&lt;br /&gt;
		for seriesIdx = 1, seriesCount do&lt;br /&gt;
			chartArgs[&amp;quot;y&amp;quot; .. seriesIdx] = chartArgs[&amp;quot;y&amp;quot; .. seriesIdx] .. &amp;quot;,&amp;quot; .. (yValues[seriesIdx] or &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Separatoren am Anfang entfernen&lt;br /&gt;
	for seriesIdx, _ in ipairs(series.captions) do&lt;br /&gt;
		chartArgs[&amp;quot;y&amp;quot; .. seriesIdx] = mw.ustring.sub(chartArgs[&amp;quot;y&amp;quot; .. seriesIdx], 2)&lt;br /&gt;
	end&lt;br /&gt;
	-- Diagrammparameter übergeben (alle Paramater die mit chart_ anfangen, werden direkt ohne Präfix an das Graph-Modul übergeben)&lt;br /&gt;
	for k, v in pairs(frame.args) do&lt;br /&gt;
		local chartParam = string.match(k, &amp;quot;^chart_(.+)&amp;quot;)&lt;br /&gt;
		if chartParam then&lt;br /&gt;
			--für abwärtskompatibilität, kann später entfernt werden&lt;br /&gt;
			if chartParam == &amp;quot;width&amp;quot; then&lt;br /&gt;
				chartArgs[&amp;quot;Breite&amp;quot;] = v .. &amp;quot;px&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				chartArgs[chartParam] = v &lt;br /&gt;
			end			&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--workaround, um Datumsformat besser darzustellen solange das von der extension nicht sauber unterstützt wird&lt;br /&gt;
	if chartArgs[&amp;quot;xType&amp;quot;]==&amp;quot;date&amp;quot; then&lt;br /&gt;
		xValuesCutted = {}&lt;br /&gt;
		for _, k in pairs(xValues) do&lt;br /&gt;
			table.insert(xValuesCutted,string.sub( k, 1, 10))&lt;br /&gt;
		end&lt;br /&gt;
		chartArgs[&amp;quot;x&amp;quot;] = table.concat(xValuesCutted, &amp;quot;,&amp;quot;)&lt;br /&gt;
	end	&lt;br /&gt;
	&lt;br /&gt;
	-- Plot erzeugen&lt;br /&gt;
	local resultplot&lt;br /&gt;
	resultplot = mw.getCurrentFrame():expandTemplate {&lt;br /&gt;
		title = &amp;#039;Vorlage:ChartDirekt&amp;#039;,&lt;br /&gt;
		args = chartArgs&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
	return resultplot&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.plotWrapper(frame)&lt;br /&gt;
	return p.plot(frame:getParent())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function applyPrecision(date, precision)&lt;br /&gt;
	if not precision then precision = math.huge end&lt;br /&gt;
&lt;br /&gt;
	local _, _, year, month, day, hour, minute, second, timezone = string.find(date, &amp;quot;^(.?%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)(.+)$&amp;quot;)&lt;br /&gt;
	if precision &amp;lt; 14 then second = &amp;quot;00&amp;quot; end&lt;br /&gt;
	if precision &amp;lt; 13 then minute = &amp;quot;00&amp;quot; end&lt;br /&gt;
	if precision &amp;lt; 12 then hour = &amp;quot;00&amp;quot; end&lt;br /&gt;
	if precision &amp;lt; 11 or day == &amp;quot;00&amp;quot; then day = &amp;quot;01&amp;quot; end&lt;br /&gt;
	if precision &amp;lt; 10 or month == &amp;quot;00&amp;quot; then month = &amp;quot;01&amp;quot; end&lt;br /&gt;
	return year .. &amp;quot;-&amp;quot; .. month .. &amp;quot;-&amp;quot; .. day .. &amp;quot;T&amp;quot; .. hour .. &amp;quot;:&amp;quot; .. minute .. &amp;quot;:&amp;quot; .. second .. timezone&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;McBayne</name></author>
	</entry>
</feed>