<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata%2Fnumber</id>
	<title>Модуль:Wikidata/number - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata%2Fnumber"/>
	<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/number&amp;action=history"/>
	<updated>2026-04-25T19:25:24Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/number&amp;diff=770&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/number&amp;diff=770&amp;oldid=prev"/>
		<updated>2022-12-20T08:44:45Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:44, 20 декабря 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/number&amp;diff=769&amp;oldid=prev</id>
		<title>wiki&gt;Putnik: для очень старых дат timestamp меньше 0, и это ломало логику</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/number&amp;diff=769&amp;oldid=prev"/>
		<updated>2022-01-11T01:52:22Z</updated>

		<summary type="html">&lt;p&gt;для очень старых дат timestamp меньше 0, и это ломало логику&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.formatVisualMagnitude ( context, options )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	&lt;br /&gt;
	min = context.selectClaims( options, 'P1215[P1227:Q76596947][rank:normal,rank:preferred]' )&lt;br /&gt;
	max = context.selectClaims( options, 'P1215[P1227:Q76596417][rank:normal,rank:preferred]' )&lt;br /&gt;
	if ( not min or not max) then -- показываем как обычно&lt;br /&gt;
		return context.formatPropertyDefault( context, options )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- показываем Vmin-Vmax для переменной звезды&lt;br /&gt;
	local lang = mw.language.getContentLanguage();&lt;br /&gt;
	for _, claim1 in ipairs(min) do&lt;br /&gt;
		for _, claim2 in ipairs(max) do&lt;br /&gt;
			return	lang:formatNum(tonumber(claim1.mainsnak.datavalue.value.amount))&lt;br /&gt;
					.. ' − ' .. &lt;br /&gt;
					lang:formatNum(tonumber(claim2.mainsnak.datavalue.value.amount)) &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatColorIndex( context, options )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	&lt;br /&gt;
	if ( options.property ) then &lt;br /&gt;
		-- Пролучаем все claims независимо от ранга&lt;br /&gt;
		claims = context.selectClaims( options, options.property .. '[rank:normal,rank:preferred]' );&lt;br /&gt;
	end&lt;br /&gt;
	if ( claims ) then&lt;br /&gt;
		return context.formatPropertyDefault( context, options )&lt;br /&gt;
	end&lt;br /&gt;
	-- Вычисляем B-V либо U-B из P1215&lt;br /&gt;
	b = context.selectClaims( options, 'P1215[P1227:Q6746395][rank:normal,rank:preferred]' )&lt;br /&gt;
	if ( not b ) then return end&lt;br /&gt;
	if string.find( options.property, 'Q17773035' ) then&lt;br /&gt;
		m1 = context.selectClaims( options, 'P1215[P1227:Q15977921][rank:normal,rank:preferred]' )&lt;br /&gt;
		m2 = b&lt;br /&gt;
		if ( not m1 ) then return end&lt;br /&gt;
	else&lt;br /&gt;
		m1 = b&lt;br /&gt;
		m2 = context.selectClaims( options, 'P1215[P1227:Q4892529][rank:normal,rank:preferred]' )&lt;br /&gt;
		if ( not m2 ) then return end&lt;br /&gt;
	end&lt;br /&gt;
	for _, claim1 in ipairs(m1) do&lt;br /&gt;
		for _, claim2 in ipairs(m2) do&lt;br /&gt;
			newClaim = { mainsnak = { snaktype = 'value', datavalue = { type = 'quantity', &lt;br /&gt;
				value = { unit = '1', amount = claim1.mainsnak.datavalue.value.amount - &lt;br /&gt;
				claim2.mainsnak.datavalue.value.amount }}}}&lt;br /&gt;
			return context.formatStatementDefault( context, options, newClaim )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatPropertyWithMostRecentClaimAndIndicator( context, options )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	if ( not options.entity ) then error( 'options.entity missing' ); end;&lt;br /&gt;
&lt;br /&gt;
	local claims;&lt;br /&gt;
	if options.property then &lt;br /&gt;
		-- Пролучаем все claims независимо от ранга&lt;br /&gt;
		claims = context.selectClaims( options, options.property .. '[rank:normal,rank:preferred]' );&lt;br /&gt;
	end&lt;br /&gt;
	if claims == nil then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Ищем claim с максимальным значением P585 и форматируем его в out&lt;br /&gt;
	local maxTimestamp = nil;&lt;br /&gt;
	local mostRecentClaim;&lt;br /&gt;
	for i, claim in ipairs(claims) do&lt;br /&gt;
		if (claim.qualifiers and claim.qualifiers.P585) then -- обрабатываем только claims с указанным P585&lt;br /&gt;
			local timestamp = context.parseTimeFromSnak( claim.qualifiers.P585[1] );&lt;br /&gt;
			if timestamp ~= nil and ( maxTimestamp == nil or maxTimestamp &amp;lt; timestamp ) then&lt;br /&gt;
				maxTimestamp = timestamp;&lt;br /&gt;
				mostRecentClaim = claim&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (not mostRecentClaim) then -- нет ни одного claim с указанным P585&lt;br /&gt;
		return context.formatPropertyDefault( context, options )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = context.formatStatement( options, mostRecentClaim )&lt;br /&gt;
	if out ~= '' then&lt;br /&gt;
		-- Ищем claim со значением P585 сразу после максимального и запоминаем его в secondMostRecentValue&lt;br /&gt;
		local secondMostRecentTimestamp = 0;&lt;br /&gt;
		local secondMostRecentValue = 0;&lt;br /&gt;
		for i, claim in ipairs(claims) do&lt;br /&gt;
			if (claim.qualifiers and claim.qualifiers.P585) then -- обрабатываем только claims с указанным P585&lt;br /&gt;
				local timestamp = context.parseTimeFromSnak( claim.qualifiers.P585[1] )&lt;br /&gt;
				if (timestamp ~= nil and secondMostRecentTimestamp &amp;lt; timestamp and maxTimestamp &amp;gt; timestamp) then&lt;br /&gt;
					secondMostRecentTimestamp = timestamp&lt;br /&gt;
					secondMostRecentValue = tonumber( claim.mainsnak.datavalue.value.amount )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if (secondMostRecentValue ~= 0) then -- если предыдущее значение нашлось&lt;br /&gt;
			if (secondMostRecentValue &amp;lt; tonumber( mostRecentClaim.mainsnak.datavalue.value.amount )) then&lt;br /&gt;
				out = '&amp;lt;span style=&amp;quot;color: #0c0; font-size: larger;&amp;quot;&amp;gt;▲&amp;lt;/span&amp;gt;' .. out&lt;br /&gt;
			else&lt;br /&gt;
				out = '&amp;lt;span style=&amp;quot;color: red; font-size: larger;&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;' .. out&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.before then&lt;br /&gt;
			out = options.before .. out&lt;br /&gt;
		end&lt;br /&gt;
		if options.after then&lt;br /&gt;
			out = out .. options.after&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatQuantityWithDateClaim( context, options, statement )&lt;br /&gt;
	local snak = context.formatSnak( options, statement.mainsnak )&lt;br /&gt;
	if not snak then return '' end&lt;br /&gt;
&lt;br /&gt;
    --Date&lt;br /&gt;
    if ( statement.qualifiers and statement.qualifiers.P585 ) then&lt;br /&gt;
        snak = snak .. ' (' .. context.formatSnak( options, statement.qualifiers.P585[1] ) .. ')'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	--References&lt;br /&gt;
	if ( options.references ) then&lt;br /&gt;
    	snak = snak .. context.formatRefs( options, statement );&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return snak&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDMS( context, options, value )&lt;br /&gt;
	if not value.amount then return value end&lt;br /&gt;
	if options and options.unit == '-' then return value.amount end&lt;br /&gt;
	local prefix = &amp;quot;+&amp;quot;&lt;br /&gt;
	if tonumber( value.amount ) &amp;lt; 0 then&lt;br /&gt;
		prefix = &amp;quot;−&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return p.formatAngle ( math.abs( tonumber( value.amount ) ), &lt;br /&gt;
		string.len( value.amount ) - string.find( value.amount, '.', 1, true ) - 5,&lt;br /&gt;
		prefix .. &amp;quot;%s° %02d′ %s″&amp;quot;)&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
function p.formatRA( context, options, value )&lt;br /&gt;
	if not value.amount then return value end&lt;br /&gt;
	if options and options.unit == '-' then return value.amount end&lt;br /&gt;
	return p.formatAngle (tonumber( value.amount ) / 15, &lt;br /&gt;
		string.len( value.amount ) - string.find( value.amount, '.', 1, true ) - 4,&lt;br /&gt;
		&amp;quot;%s&amp;lt;sup&amp;gt;ч&amp;lt;/sup&amp;gt; %02d&amp;lt;sup&amp;gt;м&amp;lt;/sup&amp;gt; %s&amp;lt;sup&amp;gt;с&amp;lt;/sup&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatAngle ( angle, sig, format )&lt;br /&gt;
	local d, angle = math.modf( angle )&lt;br /&gt;
	local m, angle = math.modf( angle * 60 )&lt;br /&gt;
	local mult = 10 ^ sig;&lt;br /&gt;
	local s = math.floor( angle * 60 * mult + 0.5 ) / mult;	&lt;br /&gt;
	local lang = mw.language.getContentLanguage();&lt;br /&gt;
	return string.format( format, d, m, lang:formatNum( s ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wiki&gt;Putnik</name></author>
	</entry>
</feed>