User:BrandonXLF/MoreDiffInfo.js

/*** More Diff Info ***/

// Adds more information to diff pages such as revision ID, size, and ORES score // Documentation at en:w:User:BrandonXLF/MoreDiffInfo // By en:w:User:BrandonXLF

$.when(mw.loader.using('moment'), $.ready).then(function(require) {	var moment = require('moment'),		DA_IMG = 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Rating-Christgau-dud.svg/64px-Rating-Christgau-dud.svg.png',		GF_IMG = 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Ic_thumb_up_48px.svg/32px-Ic_thumb_up_48px.svg.png';

function createImage(type, url) { return ''; }

function getInnerORES(scores) { var innerORES = [];

if (scores.damaging) { innerORES.push(Math.round(scores.damaging.true * 100) + '% ' + createImage('Damaging', DA_IMG)); }

if (scores.goodfaith) { innerORES.push(Math.round(scores.goodfaith.true * 100) + '% ' + createImage('Good Faith', GF_IMG)); }

return innerORES.join(' ') || 'No ORES'; }

function generateInfo(revision, previousRevision) { var out = [ revision.revid, revision.size.toLocaleString +' bytes', getInnerORES(revision.oresscores), ],			help = '(?)';

if (previousRevision) { var diff = revision.size - previousRevision.size;

out[1] += '  0 ? '#006400' : '') + '">(' + (diff > 0 ? '+' : '') + diff + ') ';

out.push(moment(revision.timestamp).from(previousRevision.timestamp, true) + ' later'); }

return out.join(' | ') + ' ' + help; }

mw.hook('wikipage.diff').add(function {		var ids = mw.config.get(['wgDiffOldId', 'wgDiffNewId']);

if (!ids.wgDiffOldId || !ids.wgDiffNewId) return;

new mw.Api.get({			action: 'query',			prop: 'revisions',			revids: [ids.wgDiffOldId, ids.wgDiffNewId],			rvprop: ['ids', 'size', 'oresscores', 'timestamp'],			rvslots: 'main',			formatversion: 2		}).then(function(res) {			var revisions = res.query.pages[0].revisions,				oldRevision,				newRevision;

for (var i = 0; i < revisions.length; i++) { if (revisions[i].revid == ids.wgDiffOldId) { oldRevision = revisions[i]; } else if (revisions[i].revid == ids.wgDiffNewId) { newRevision = revisions[i]; }			}

if (!oldRevision || !newRevision) return;

$('#mw-diff-otitle2').after($(' ').append(generateInfo(oldRevision))); $('#mw-diff-ntitle2').after($(' ').append(generateInfo(newRevision, oldRevision))); });	}); });