Jump to content

User:He7d3r/Tools/ScoredCategories.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.
// [[File:User:He7d3r/Tools/ScoredCategories.js]] (workaround for [[phab:T35355]])
/**
 * Adds a table to category pages showing the pages with the top 10 scores
 *
 * @author: Helder (https://github.com/he7d3r)
 * @license: CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0/>
 */
// <nowiki>
(function(e,t){"use strict";function i(i){var n,r,o,a,c,u=t("<table><tbody><tr><th>Score</th><th>Page</th></tr></tbody></table>").addClass("wikitable sortable"),l=u.find("tbody");for(n=0;i.length>n;n++)r=i[n],c=r.revisions[0].revid,a=(100*r[d]).toFixed(0),o=t("<tr>").append(t("<td>").append(t("<a>").attr("href",g+"?models="+s+"&revids="+c).text(a+"%")),t("<td>").append(t("<a>").attr("href",e.util.getUrl(r.title,{diff:c})).text(r.title))),l.append(o);t("#mw-content-text").prepend(u.tablesorter())}function n(e){t.each(a,function(t,i){var n=e[i.revisions[0].revid][s].score;i[d]=!n||n.error?0:n.probability["true"]}),a=a.sort(function(e,t){return t[d]-e[d]}).slice(0,u),i(a)}function r(){var i,r=0,o={},d=function(a){t.ajax({url:g,data:{models:s,revids:a.join("|")},dataType:"json"}).done(function(a){t.extend(o,a[e.config.get("wgDBname")].scores),r+=c,i.length>r?d(i.slice(r,r+c)):n(o)}).fail(function(){e.log.error("The request failed.",arguments)})};a.length&&(i=t.map(a,function(e){return e.revisions[0].revid}),d(i.slice(r,r+c)))}function o(){var i=new e.Api,n={prop:"revisions",rvprop:"ids",generator:"categorymembers",gcmtitle:e.config.get("wgPageName"),formatversion:2,gcmlimit:"max","continue":""},o=function(e){t.extend(n,e),i.get(n).done(function(e){a=a.concat(e.query&&e.query.pages||[]),e["continue"]?o(e["continue"]):r()})};o()}var a=[],c=20,s="damaging",d=s+"Score",g="//ores.wikimedia.org/v3/scores/"+e.config.get("wgDBname")+"/",u=10;e.config.get("wgNamespaceNumber")===14&&e.config.get("wgAction")==="view"&&t.when(e.loader.using(["mediawiki.api","mediawiki.util","jquery.tablesorter"]),t.ready).then(o)})(mediaWiki,jQuery);
// </nowiki>