<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikithionville.fr/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Accueil.stats.js</id>
	<title>MediaWiki:Gadget-Accueil.stats.js - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wikithionville.fr/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Accueil.stats.js"/>
	<link rel="alternate" type="text/html" href="https://wikithionville.fr/index.php?title=MediaWiki:Gadget-Accueil.stats.js&amp;action=history"/>
	<updated>2026-06-11T23:19:41Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wikithionville.fr/index.php?title=MediaWiki:Gadget-Accueil.stats.js&amp;diff=297362&amp;oldid=prev</id>
		<title>WikiThionvilleSyncBot : Sync homepage from repository (commit b06f0a0)</title>
		<link rel="alternate" type="text/html" href="https://wikithionville.fr/index.php?title=MediaWiki:Gadget-Accueil.stats.js&amp;diff=297362&amp;oldid=prev"/>
		<updated>2026-06-11T14:42:47Z</updated>

		<summary type="html">&lt;p&gt;Sync homepage from repository (commit b06f0a0)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;( function ( mw ) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var accueil = mw.libs &amp;amp;&amp;amp; mw.libs.wikithionvilleAccueil;&lt;br /&gt;
&lt;br /&gt;
	if ( !accueil ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function formatCounter( value ) {&lt;br /&gt;
		try {&lt;br /&gt;
			return value.toLocaleString( navigator.language || undefined, {&lt;br /&gt;
				notation: &amp;#039;compact&amp;#039;,&lt;br /&gt;
				compactDisplay: &amp;#039;short&amp;#039;,&lt;br /&gt;
				maximumFractionDigits: 1&lt;br /&gt;
			} );&lt;br /&gt;
		} catch ( error ) {&lt;br /&gt;
			return String( value );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function animateCounter( element, targetValue ) {&lt;br /&gt;
		var target = Math.max( Number( targetValue ) || 0, 0 );&lt;br /&gt;
		var duration = 1100;&lt;br /&gt;
		var startTime = null;&lt;br /&gt;
&lt;br /&gt;
		function tick( timestamp ) {&lt;br /&gt;
			var progress;&lt;br /&gt;
			var value;&lt;br /&gt;
&lt;br /&gt;
			if ( startTime === null ) {&lt;br /&gt;
				startTime = timestamp;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			progress = Math.min( ( timestamp - startTime ) / duration, 1 );&lt;br /&gt;
			value = Math.round( target * progress );&lt;br /&gt;
			element.textContent = formatCounter( value );&lt;br /&gt;
&lt;br /&gt;
			if ( progress &amp;lt; 1 ) {&lt;br /&gt;
				window.requestAnimationFrame( tick );&lt;br /&gt;
			} else {&lt;br /&gt;
				element.textContent = formatCounter( target );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		window.requestAnimationFrame( tick );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function countWhenVisible( element, value ) {&lt;br /&gt;
		var observer;&lt;br /&gt;
&lt;br /&gt;
		if ( !element ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( accueil.reduceMotion || !( &amp;#039;IntersectionObserver&amp;#039; in window ) ) {&lt;br /&gt;
			animateCounter( element, value );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		observer = new IntersectionObserver( function ( entries ) {&lt;br /&gt;
			if ( entries[ 0 ].isIntersecting ) {&lt;br /&gt;
				observer.disconnect();&lt;br /&gt;
				animateCounter( element, value );&lt;br /&gt;
			}&lt;br /&gt;
		}, { threshold: 0.2 } );&lt;br /&gt;
&lt;br /&gt;
		observer.observe( element );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	accueil.initStats = function ( root ) {&lt;br /&gt;
		var stats = root.querySelector( &amp;#039;.home-info__stats&amp;#039; );&lt;br /&gt;
		var api;&lt;br /&gt;
&lt;br /&gt;
		if ( !stats ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		api = new mw.Api();&lt;br /&gt;
		api.get( {&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			meta: &amp;#039;siteinfo&amp;#039;,&lt;br /&gt;
			siprop: &amp;#039;statistics&amp;#039;,&lt;br /&gt;
			formatversion: 2&lt;br /&gt;
		} ).done( function ( data ) {&lt;br /&gt;
			var statistics = data.query &amp;amp;&amp;amp; data.query.statistics;&lt;br /&gt;
&lt;br /&gt;
			if ( !statistics ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			stats.classList.add( &amp;#039;is-visible&amp;#039; );&lt;br /&gt;
			countWhenVisible( root.querySelector( &amp;#039;#counter_articles&amp;#039; ), statistics.articles );&lt;br /&gt;
			countWhenVisible( root.querySelector( &amp;#039;#counter_pages&amp;#039; ), statistics.pages );&lt;br /&gt;
			countWhenVisible( root.querySelector( &amp;#039;#counter_utilisateurs&amp;#039; ), statistics.users );&lt;br /&gt;
		} );&lt;br /&gt;
	};&lt;br /&gt;
}( mediaWiki ) );&lt;/div&gt;</summary>
		<author><name>WikiThionvilleSyncBot</name></author>
	</entry>
</feed>