User:EpochFail/ItemQuality.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)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
itemQuality = {};
(function($, mw, itemQuality){
var ORES_HOST = "https://ores.wikimedia.org"
var CLASS_WEIGHTS = {E: 1, D: 2, C: 3, B: 4, A: 5}
var CLASS_NAMES = {E: "E", D: "D", C: "C", B: "B", A: "A"}
var ASSESSMENT_SYSTEM_NAME = "[[WD:Item quality|Item quality]]"
var revId = mw.config.get('wgCurRevisionId')
var url = ORES_HOST + "/v3/scores/wikidatawiki/" + revId + "/itemquality"
var parserOutputNode = $('#bodyContent')
var compute_weighted_sum = function(data){
//console.log(["rendering", data])
var clsProba = data.wikidatawiki.scores[revId].itemquality.score.probability
var weighted_sum = 0
for (var cls in clsProba) {
//console.log(cat)
if (clsProba.hasOwnProperty(cls)) {
var proba = clsProba[cls]
weighted_sum += proba * CLASS_WEIGHTS[cls]
}
}
return weighted_sum
}
var extract_prediction = function(data){
return data.wikidatawiki.scores[revId].itemquality.score.prediction
}
var render_itemquality = function(data){
var prediction = extract_prediction(data)
var weighted_sum = compute_weighted_sum(data)
var rawText = ASSESSMENT_SYSTEM_NAME + ": " +
CLASS_NAMES[prediction] + " (" +
Math.round(weighted_sum*100)/100 + ")"
var qualityBlock = $('<div>')
parserOutputNode.prepend(qualityBlock)
var api = new mw.Api()
// https://en.wikipedia.org/w/api.php?action=parse&text=%27%27foobar%27%27&contentmodel=wikitext&formatversion=2&prop=text&disablelimitreport=true
api.get({action: "parse", text: rawText, contentmodel: "wikitext", formatversion: 2, prop: "text", disablelimitreport: true})
.done(function(data){qualityBlock.html(data.parse.text)})
.fail(function(error){console.log(error)})
}
window.itemQuality.get_and_render_itemquality = function(){
$.ajax(url, {success: render_itemquality.bind(this),
error: function(jqxmlhr, status, error){console.log(status + ": " + error)}})
}
})(jQuery, mediaWiki, itemQuality)