User:EpochFail/ArticleTopic.js
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()