User:Magnus Manske/author sort.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>
/*
This script sorts P50 and P2093 statements by series ordial (P1545).
Example: https://www.wikidata.org/wiki/Q28209168

TO ACTIVATE, ADD

importScript( 'User:Magnus_Manske/author_sort.js' ); // [[User:Magnus Manske/author_sort.js]]

TO YOUR [[Special:MyPage/common.js]] USER SUBPAGE.
*/


$( function(){
	function author_sort(property) {
		let nodes = [];
		$('#'+property+" div.wikibase-statementview").each(function(nodenum,node){
			let id = $(node).attr("id");
			let serial_number = '';
			$(node).find('div.wikibase-snaklistview-listview').each(function(dummy,sv){
				if ( $(sv).find("a[title='Property:P1545'").length>0 ) {
					serial_number = $(sv).find('div.wikibase-snakview-variation-valuesnak').text()*1;
				}
			});
			nodes.push([node,serial_number]);
		});
		nodes.sort(function(a,b){
			if ( a[1]<b[1] ) return -1;
			if ( a[1]>b[1] ) return 1;
			return 0;
		})
		$.each(nodes,function(num,node_serial){
			if ( num+1<nodes.length ) {
				let node = node_serial[0];
				let parent = node.parentNode;
				let insert_before = parent.childNodes[num+1];
				parent.insertBefore(node, insert_before);
			}
		});
	}
	
	author_sort("P50");
	author_sort("P2093");
} ) ;

//</nowiki>