Adds a timer during reviews and displays the final time afterward
当前为
// ==UserScript==
// @name Wanikani Egg Timer
// @namespace wkeggtimer
// @description Adds a timer during reviews and displays the final time afterward
// @include http://www.wanikani.com/review*
// @include https://www.wanikani.com/review*
// @version 0.1
// @author Horus Scope
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @license GPL version 3 or later: http://www.gnu.org/copyleft/gpl.html
// ==/UserScript==
function timeStamp( inc = 0 ) {
var prev = GM_getValue("eggtimer");
prev += inc;
GM_setValue("eggtimer",prev);
// Yes, parseInt is prettier.
var hours = Math.floor(prev / 60 / 60);
var minutes = Math.floor( (prev - (hours*60*60)) / 60 );
var seconds = prev - hours*60*60 - minutes*60;
return ""
+ (hours? hours+"h " : "")
+ (minutes? minutes+"m " : "")
+ (seconds? seconds+"s" : "");
}
var timeSpan; // referenced in go( )
function generate( ) {
var display = document.createElement('div');
display.className = 'timerSessionDisplay'; // no style actually defined
timeSpan = document.createElement('span');
timeSpan.className = 'timerSessionSpan'; // no style actually defined
timeSpan.textContent = "Last review: " + timeStamp( );
display.appendChild(timeSpan);
return display;
}
// start counting. [or, dont]
function go( )
{
// style
var styleStr = ""; // <div class="timerSessionDisplay"><span class="timerSessionSpan">
GM_addStyle(styleStr);
// change behavior depending on screen [summary, reviewing now]
if(/session$/.exec(window.location.href)) { // review/session [ reviewing now ]
GM_setValue("eggtimer",0); // time start
var header = document.getElementById('summary-button'); // because easy
var display = generate( ); // makes div object
header.appendChild( display );
setInterval(function() {timeSpan.textContent = "Elapsed: " + timeStamp( 1 );}, 1000);
} else { // review [ summary screen ]
var footer = document.getElementById('last-session-date'); // makes sense
var display = generate( );
footer.insertBefore(display, footer.childNodes[0]); // probably float:left btw
}
}
window.onload = go( );