User:Gary/mark todays edits.js

/*

MARK TODAY'S EDITS

Description: Marks edits on contributions pages that were made today.

  • /

if (typeof(unsafeWindow) != 'undefined')

{

mw = unsafeWindow.mw;

}

$(markTodaysEdits);

function markTodaysEdits()

{

if (!mw.config.get('wgPageName').match('Special:Contributions') && mw.config.get('wgAction') != 'history') return false;

var today = new Date();

var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

var firstMatchedNode, lastMatchedNode;

var maxTime = 1000 * 60 * 60 * 24;

$('#bodyContent ul:last').children().each(function()

{

var edit = $(this);

if (edit[0].nodeType == 3) return true;

if (edit.contents().length <= 3) edit = edit.children().first();

if (mw.config.get('wgPageName').match('Special:Contributions')) var date = new Date(edit.children().first().text());

else if (mw.config.get('wgAction') == 'history') var date = new Date(edit.children().eq(3).text());

// Revision's date is less than 24 hours

if ((today.getTime() - date.getTime()) < maxTime)

{

if (firstMatchedNode) lastMatchedNode = edit;

else firstMatchedNode = lastMatchedNode = edit;

}

});

if (firstMatchedNode && lastMatchedNode)

{

if (mw.config.get('wgPageName').match('Special:Contributions'))

{

firstMatchedNode = firstMatchedNode.children().first();

lastMatchedNode = lastMatchedNode.children().first();

}

else if (mw.config.get('wgAction') == 'history')

{

firstMatchedNode = firstMatchedNode.children().eq(3);

lastMatchedNode = lastMatchedNode.children().eq(3);

}

var firstColorRatio = calculateColorRatio(maxTime, 70, 95, new Date(firstMatchedNode.text()));

var lastColorRatio = calculateColorRatio(maxTime, 70, 95, new Date(lastMatchedNode.text()));

firstMatchedNode.css('background-color', 'rgb(' + firstColorRatio + '%, ' + firstColorRatio + '%, 100%)');

lastMatchedNode.css('background-color', 'rgb(' + lastColorRatio + '%, ' + lastColorRatio + '%, 100%)');

}

}

function calculateColorRatio(maxTime, minPercentage, maxPercentage, timestamp)

{

var today = new Date();

minPercentage = minPercentage / 100;

maxPercentage = maxPercentage / 100;

var colorRatio = ((maxPercentage - minPercentage) * (1 - (today.getTime() - timestamp.getTime()) / maxTime) + minPercentage) * 100;

if (colorRatio < minPercentage) colorRatio = minPercentage;

return colorRatio;

}