<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AWikidane%2Fselect</id>
	<title>Moduł:Wikidane/select - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AWikidane%2Fselect"/>
	<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Wikidane/select&amp;action=history"/>
	<updated>2026-07-10T12:11:36Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Wikidane/select&amp;diff=379&amp;oldid=prev</id>
		<title>Żółty Kapłan: 1 wersja</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Wikidane/select&amp;diff=379&amp;oldid=prev"/>
		<updated>2025-12-07T20:56:05Z</updated>

		<summary type="html">&lt;p&gt;1 wersja&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 22:56, 7 gru 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;pl&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_droga:diff:1.41:old-378:rev-379 --&gt;
&lt;/table&gt;</summary>
		<author><name>Żółty Kapłan</name></author>
	</entry>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Wikidane/select&amp;diff=378&amp;oldid=prev</id>
		<title>wpl&gt;Paweł Ziemian: poprawki</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Wikidane/select&amp;diff=378&amp;oldid=prev"/>
		<updated>2024-10-21T18:46:00Z</updated>

		<summary type="html">&lt;p&gt;poprawki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local moduleData = mw.loadData(&amp;quot;Module:Wikidane/data&amp;quot;)&lt;br /&gt;
local function loadArg(frame,id)&lt;br /&gt;
	local result = frame.args[id]&lt;br /&gt;
	if not result or (#result == 0) then&lt;br /&gt;
		result = frame:getParent().args[id]&lt;br /&gt;
		if not result or (#result == 0) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkSnakType(item, filters)&lt;br /&gt;
	if filters == null then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local snaktype = item and item.mainsnak and item.mainsnak.snaktype&lt;br /&gt;
&lt;br /&gt;
	if (snaktype == &amp;quot;novalue&amp;quot;) and filters.novalue then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
			&lt;br /&gt;
	if (snaktype == &amp;quot;somevalue&amp;quot;) and filters.somevalue then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if (snaktype == &amp;quot;value&amp;quot;) and filters.value then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkFilters(item, filters)&lt;br /&gt;
	&lt;br /&gt;
	local function currentUtcTime() return os.date(&amp;quot;!+%FT%TZ&amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(filters) do&lt;br /&gt;
		local qualifiers = item.qualifiers and item.qualifiers[k]&lt;br /&gt;
		if not qualifiers then&lt;br /&gt;
			return v.missing or false&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local accepted = false&lt;br /&gt;
		for _, w in ipairs(qualifiers) do&lt;br /&gt;
			if (w.snaktype == &amp;quot;novalue&amp;quot;) and v.novalue then&lt;br /&gt;
				accepted = true&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if (w.snaktype == &amp;quot;somevalue&amp;quot;) and v.somevalue then&lt;br /&gt;
				accepted = true&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if w.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				if (w.datatype == &amp;quot;wikibase-item&amp;quot;) and (w.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;) and (w.datavalue.value[&amp;quot;entity-type&amp;quot;] == &amp;quot;item&amp;quot;) and v[&amp;quot;Q&amp;quot;..w.datavalue.value[&amp;quot;numeric-id&amp;quot;]] then&lt;br /&gt;
					accepted = true&lt;br /&gt;
					break&lt;br /&gt;
				elseif (w.datatype == &amp;quot;globe-coordinate&amp;quot;) and (w.datavalue.type == &amp;quot;globecoordinate&amp;quot;) and v.globe then&lt;br /&gt;
					accepted = true&lt;br /&gt;
					break&lt;br /&gt;
				elseif (w.datatype == &amp;quot;time&amp;quot;) and (w.datavalue.type == &amp;quot;time&amp;quot;) and (w.datavalue.value.calendarmodel == &amp;quot;http://www.wikidata.org/entity/Q1985727&amp;quot;) then&lt;br /&gt;
					if v.before and (currentUtcTime() &amp;lt; w.datavalue.value.time) then&lt;br /&gt;
						accepted = true&lt;br /&gt;
						break&lt;br /&gt;
					elseif v.after and (currentUtcTime() &amp;gt; w.datavalue.value.time) then&lt;br /&gt;
						accepted = true&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if not accepted then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function take(sequence, maxCount)&lt;br /&gt;
	if not maxCount or (type(sequence) ~= &amp;quot;table&amp;quot;) or (maxCount &amp;lt; 1) or (#sequence &amp;lt; maxCount) then&lt;br /&gt;
		return sequence&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for i = 1, maxCount do&lt;br /&gt;
		result[i] = sequence[i]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local rankLoaders =&lt;br /&gt;
{&lt;br /&gt;
	[&amp;quot;najlepsza&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getBestStatements,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;preferowana lub zwykła&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
		group = function(rank) return ((rank == &amp;quot;preferred&amp;quot;) or (rank == &amp;quot;normal&amp;quot;)) and 1 or false end,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;dowolna&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
		group = function(rank) if rank == &amp;quot;preferred&amp;quot; then return 1 elseif rank == &amp;quot;normal&amp;quot; then return 2 else return 3 end end,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;preferowana&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
		group = function(rank) return rank == &amp;quot;preferred&amp;quot; and 1 or false end,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;zwykła&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
		group = function(rank) return rank == &amp;quot;normal&amp;quot; and 1 or false end,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;przestarzała&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
		group = function(rank) return rank == &amp;quot;deprecated&amp;quot; and 1 or false end,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;wszystkie&amp;quot;] = {&lt;br /&gt;
		get = mw.wikibase.getAllStatements,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
prepareSnakFilter = function(frame)&lt;br /&gt;
	local selectors = frame.args[&amp;quot;TYP&amp;quot;]&lt;br /&gt;
	if selectors and (#selectors &amp;gt; 0) then&lt;br /&gt;
		local map = {}&lt;br /&gt;
		local any = false&lt;br /&gt;
		for _, w in ipairs(mw.text.split(selectors, &amp;quot;%s&amp;quot;)) do&lt;br /&gt;
			map[w] = true&lt;br /&gt;
			any = true&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if any then&lt;br /&gt;
			return map&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end,&lt;br /&gt;
&lt;br /&gt;
prepareFilters = function(frame)&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for i, v in ipairs(moduleData.qualifiedFilters) do&lt;br /&gt;
		local selectors = frame.args[v]&lt;br /&gt;
		if selectors and (#selectors &amp;gt; 0) then&lt;br /&gt;
			local map = {}&lt;br /&gt;
			local any = false&lt;br /&gt;
			for _, w in ipairs(mw.text.split(selectors, &amp;quot;%s&amp;quot;)) do&lt;br /&gt;
				map[w] = true&lt;br /&gt;
				any = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if any then&lt;br /&gt;
				result[v] = map&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end,&lt;br /&gt;
&lt;br /&gt;
selectProperty = function(pid, filters, qid, maximumNumberOfItems, rank, snaktype)&lt;br /&gt;
	qid = qid or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if not qid then&lt;br /&gt;
		mw.log(moduleData.warnNoEntity)&lt;br /&gt;
		return pid, false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local P, ddd = pid:match&amp;quot;^([Pp]?)(%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?)$&amp;quot;&lt;br /&gt;
	if not P then&lt;br /&gt;
		mw.log(string.format(moduleData.warnPropertyByName, pid))&lt;br /&gt;
		P = mw.wikibase.resolvePropertyId(pid)&lt;br /&gt;
		if not P then&lt;br /&gt;
			return pid, false&lt;br /&gt;
		end&lt;br /&gt;
		pid = P&lt;br /&gt;
	elseif #P == 0 then&lt;br /&gt;
		pid = &amp;quot;P&amp;quot; .. pid&lt;br /&gt;
	elseif P == &amp;quot;p&amp;quot; then&lt;br /&gt;
		pid = &amp;quot;P&amp;quot; .. ddd&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local loader = rankLoaders[rank or &amp;quot;najlepsza&amp;quot;]&lt;br /&gt;
	if not loader then&lt;br /&gt;
		return pid, false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mw.log(&amp;quot;\n== selectProperty ==&amp;quot;)&lt;br /&gt;
	mw.logObject(rank, &amp;quot;rank&amp;quot;)&lt;br /&gt;
	mw.logObject(loader, &amp;quot;loader&amp;quot;)&lt;br /&gt;
	mw.logObject(filters, &amp;quot;filters&amp;quot;)&lt;br /&gt;
	mw.logObject(snaktype, &amp;quot;snaktype&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local prop = loader.get( qid, pid )&lt;br /&gt;
	if not prop or (#prop == 0) then&lt;br /&gt;
		mw.log(string.format(moduleData.warnNoStatements, pid))&lt;br /&gt;
		return pid, false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mw.logObject(#prop, &amp;quot;#prop A&amp;quot;)&lt;br /&gt;
	local hasFilters = false&lt;br /&gt;
	for _, _ in pairs(filters) do&lt;br /&gt;
		hasFilters = true&lt;br /&gt;
		break&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if loader.group or hasFilters or snaktype then&lt;br /&gt;
		local group = loader.group or function() return 1 end&lt;br /&gt;
		local results = {{},{},{},{},{}}&lt;br /&gt;
		for _, p in ipairs(prop) do&lt;br /&gt;
			local g = group(p.rank)&lt;br /&gt;
			if g and results[g] and checkFilters(p, filters) and checkSnakType(p, snaktype) then&lt;br /&gt;
				table.insert(results[g], p)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i, v in ipairs(results) do&lt;br /&gt;
			prop = results[i]&lt;br /&gt;
			if #prop &amp;gt; 0 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		mw.logObject(#prop, &amp;quot;#prop B&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #prop &amp;gt; 0 then&lt;br /&gt;
		return pid, qid, take(prop, tonumber(maximumNumberOfItems))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return pid, false&lt;br /&gt;
end,&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>wpl&gt;Paweł Ziemian</name></author>
	</entry>
</feed>