Lankide:EpochFail/ArticleQuality-system.js
Oharra: Gorde ondoren zure nabigatzailearen katxea ekidin beharko duzu aldaketak ikusteko. Mozilla / Firefox / Safari: Shift tekla sakatu birkargatzeko momentuan, edo Ctrl-Shift-R sakatu (Cmd-Shift-R Apple Mac baten); IE: Ctrl tekla sakatu birkargatzeko momentuan, edo Ctrl-F5 sakatu; Konqueror:: Birkargatzeko klik egin, edo F5 sakatu, besterik ez; Opera erabiltzaileek Tresnak-Hobespenak atalera jo eta katxea garbitzeko aukera hautatu.
articleQuality = {};
(function($, mw, articleQuality){
var ORES_HOST = "https://ores.wikimedia.org"
var CLASS_WEIGHTS = {Stub: 1, Start: 2, C: 3, B: 4, GA: 5, FA: 6}
var CLASS_NAMES = {Stub: "{{ikono|z}}", Start: "{{ikono|h}}", C: "{{ikono|c}}", B: "{{ikono|b}}",
GA: "{{ikono|ao}}", FA: "{{ikono|na}}"}
var ASSESSMENT_SYSTEM_NAME = "Kalitate neurketa"
var DB_NAME = mw.config.get('wgDBname')
var parserOutputNode = $('#bodyContent')
var computeWeightedSum = function(data, revId){
//console.log(["rendering", data])
var clsProba = data[DB_NAME].scores[revId].wp10.score.probability
var weightedSum = 0
for (var cls in clsProba) {
//console.log(cat)
if (clsProba.hasOwnProperty(cls)) {
var proba = clsProba[cls]
weightedSum += proba * CLASS_WEIGHTS[cls]
}
}
return weightedSum
}
var extractPrediction = function(data, revId){
return data[DB_NAME].scores[revId].wp10.score.prediction
}
var renderArticleQualityHeader = function(data, revId){
var prediction = extractPrediction(data, revId)
var weightedSum = computeWeightedSum(data, revId)
var rawText = ASSESSMENT_SYSTEM_NAME + ": " +
CLASS_NAMES[prediction] + " (" +
Math.round(weightedSum*100)/100 + ")"
var qualityBlock = $('<div>').addClass("article_quality")
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)})
}
articleQuality.getAndRenderArticleQualityHeader = function(){
var revId = mw.config.get('wgCurRevisionId')
var url = ORES_HOST + "/v3/scores/" + DB_NAME + "/" + revId + "/wp10"
$.ajax(url, {success: function(data){renderArticleQualityHeader(data, revId)},
error: function(jqxmlhr, status, error){console.log(status + ": " + error)}})
}
var renderArticleQualityLink = function(data, span, revId){
var prediction = extractPrediction(data, revId)
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: CLASS_NAMES[prediction], contentmodel: "wikitext", formatversion: 2, prop: "text", disablelimitreport: true})
.done(function(data){span.prepend($(data.parse.text).find('p').html())})
.fail(function(error){console.log(error)})
}
var getAndRenderArticleQualityLink = function(revId, span){
var url = ORES_HOST + "/v3/scores/" + DB_NAME + "/" + revId + "/wp10"
$.ajax(url, {success: function(data){renderArticleQualityLink(data, span, revId)},
error: function(jqxmlhr, status, error){console.log(status + ": " + error)}})
}
articleQuality.addPredictionsToArticleLinks = function(){
var api = new mw.Api()
$("span.ores-wp10-prediction").each(function(){
var span = $(this)
var anchor = span.find('a')
var page_title = anchor.attr('title')
api.get({action: 'query', prop: 'revisions', titles: page_title, rvprop: 'ids', formatversion: 2})
.done(function(data){
getAndRenderArticleQualityLink(data.query.pages[0].revisions[0].revid, span)})
})
}
})(jQuery, mediaWiki, articleQuality)