Greasy Fork is available in English.

Wanikani: Level Duration

Displays the number of days you have spent on the current level.

Fra 13.01.2019. Se den seneste versjonen.

// ==UserScript==
// @name         Wanikani: Level Duration
// @namespace    Wanikani: Level Duration
// @version      2.2.0.
// @description  Displays the number of days you have spent on the current level.
// @author       Kumirei
// @include      https://www.wanikani.com*
// @grant        none
// ==/UserScript==

(function() {
		var displayHours = true;

		//check that the Wanikani Framework is installed
		var script_name = 'Level Duration';
		if (!window.wkof) {
				if (confirm(script_name+' requires Wanikani Open Framework.\nDo you want to be forwarded to the installation instructions?'))
						window.location.href = 'https://community.wanikani.com/t/instructions-installing-wanikani-open-framework/28549';
				return;
		}
		//if it's installed then do the stuffs
		else {
				wkof.include('Apiv2');
				wkof.ready('Apiv2').then(fetch_data);
		}

		//fetches and processes the level's unlock date
		function fetch_data(data) {
				var level_text = " days on level";
				wkof.Apiv2.fetch_endpoint('/level_progressions').then(function(data) {
						var date = data.data[data.total_count-1].data.unlocked_at;
						var days_passed = (Date.now() - Date.parse(date))/(1000*60*60*24);
						$('head').append('<style>' +
										 '    .dropdown.levels > a, .nav li.reviews a {padding-bottom: 0 !important;}' +
										 '    .level-duration {' +
										 '        text-align: center;' +
										 '        color: #999 !important;' +
										 '        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;' +
										 '        text-shadow: 0 1px 0 #ffffff;' +
										 '        margin-top: -2px;' +
										 '    }' +
										 '</style>');
						var target = ".dropdown.levels";
						if (window.innerWidth <= 979) target = ".nav li.reviews a";
						if (displayHours && days_passed < 100) {
								level_text = " days " + Math.floor((days_passed-Math.floor(days_passed))*24) + " hours";
								days_passed = Math.floor(days_passed);
						}
						else {
								if (days_passed > 10) days_passed = Math.round(days_passed);
								days_passed = Math.round(days_passed*10)/10;
								if (days_passed == 1 && level_text == " days on level") level_text = " day on level";
						}
						$(target).closest('li').append('<div class="level-duration">' + days_passed + level_text + '</div>');
				});
		}
})();