Jump to content

User:EpochFail/ArticleTopic.js

From Meta, a Wikimedia project coordination wiki

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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
ORES_HOST = "https://ores.wikimedia.org"
//ORES_HOST = "https://ores-beta.wmflabs.org"
MIN_PROBA = 0.40


var get_and_render_categories = function(){
	var revId = mw.config.get('wgCurRevisionId')
	var url = ORES_HOST + "/v3/scores/" + mw.config.get('wgDBname') + "/" + revId + "/articletopic"
	var parserOutputNode = $('.mw-parser-output')
	var topicsContainer = $('<div>').addClass("page_topics")
	parserOutputNode.prepend(topicsContainer)
	var render_categories = function(data){
		//console.log(["rendering", data])
		var topics = [];
		var catProba;
		try {
			catProba = data[mw.config.get('wgDBname')].scores[revId].articletopic.score.probability
		} catch ( e ) {
			// Avoid "Cannot read property 'probability' of undefined" on https://test.wikipedia.org/wiki/Special:Tags
			catProba = {};
		}
		for (var cat in catProba) {
			//console.log(cat)
			if (catProba.hasOwnProperty(cat)) {
				var proba = catProba[cat]
				topics.push({topic: cat, proba: proba})
			}
		}
		topics.sort(function(a, b){return b.proba - a.proba})
		for (var i=0; i < Math.min(topics.length, 10); i++) {
			var topic = topics[i]
			console.log(["looping", topic])
			if(topic.proba > MIN_PROBA){
				topicsContainer.append(topic.topic + "(" + Math.round(topic.proba*100) + "%)<br />")
			}
		}
		topicsContainer.append($('<a>').attr('href', url).text("more from ORES").css("font-size", "80%"))
	}
	
	$.ajax(url, {success: render_categories.bind(this),
		         error: function(jqxmlhr, status, error){console.log(status + ": " + error)}})
}

get_and_render_categories()