User:Ricordisamoa/DMYdates.js

From Wikidata
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* <nowiki>
 * DMYdates.js
 * @author [[User:Ricordisamoa]]
 * Shows dates in claims as "dd month yyyy"
*/
$( document ).ready( function () {
	if ( mw.user.options.get( 'date' ) !== 'dmy' ) {
		return;
	}
	mw.hook( 'wikibase.entityPage.entityLoaded' ).add( function ( data ) {
		$.each( data.claims || {}, function ( prop, claims ) {
			$.each( claims, function ( index, claim ) {
				var dv = claim.mainsnak.datavalue;
				if (
					dv !== undefined &&
					dv.type === 'time' &&
					dv.value.after === 0 &&
					dv.value.before === 0 &&
					dv.value.timezone === 0 &&
					dv.value.precision === 11
				) {
					var val = new Date( dv.value.time.replace( /^\+(0{7})?/, '' ) ),
					msg = mw.config.get( 'wgMonthNames' )[val.getMonth() + 1].toLowerCase();
					if ( msg === 'may' ) {
						msg += '_long';
					}
					var date = [
						val.getDate(), mw.messages.get( msg ), val.getFullYear()
					];
					var $statementview = $( '.wikibase-statementview' )
						.filter( function () {
							return $( this ).hasClass( 'wikibase-statement-' + claim.id );
						} )
						.find( '.wikibase-statementview-mainsnak .valueview' );
					if ( $statementview.length === 1 ) {
						var $valueview = $statementview
							.contents()
							.filter( function () {
								return this.nodeType === 3;
							} );
						if ( $valueview.length === 1 ) {
							$valueview.get( 0 ).textContent = date.join( ' ' );
						}
					}
				}
			} );
		} );
	} );
} );