Greasy Fork is available in English.

Wanikani Wrap-up Button Enhancement

Beefed-up Wrap-up button (Jerky Edition)

// ==UserScript==
// @name         Wanikani Wrap-up Button Enhancement
// @namespace    https://www.wanikani.com
// @version      3.04
// @description  Beefed-up Wrap-up button (Jerky Edition)
// @author       Inserio (Orig. Mempo)
// @match        https://www.wanikani.com/review/session
// @match        http://www.wanikani.com/review/session
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var defaultAmount = 10; //by default
    var css =
        '#additional-content ul li.WKWBE {' +
        '    width: 8.25% !important' +
        '} ' +
        '#additional-content ul li#option-wrap-up-amount span:hover::before {content: none;} ' +
        'input#WKWBE_Amount {' +
        '  position: relative;'+
        '  margin-right: 10px;' +
        '  size: "";' +
        '  width: 100%;' +
        '  min-width: 10px;' +
        '  outline: none' +
        '  text-decoration: none;'+
        '  text-align: center;'+
        '  border: none' +
        '};';
    addStyle(css);

    $('#additional-content ul li:first').after('<li class="WKWBE" id="option-wrap-up-amount"><span><input type="number" min="1" id="WKWBE_Amount" value='+defaultAmount+' onkeypress="return event.charCode >= 48 && event.charCode <= 57 || event.keyCode == 8 || event.key === \'Backspace\'"></input></span></li>');
    $('#additional-content ul li:first').addClass("WKWBE");

    var el = document.getElementById("option-wrap-up");
    el.addEventListener("click", addCustomWrapUpAmount);

    function addCustomWrapUpAmount(){
        let i=0;
        let poplist;
        let pushlist;
        let reviewpop;

        let amount = parseInt($('#WKWBE_Amount').val());
        if(isNaN(amount)){
            amount = defaultAmount;
        }

        let currentActiveLength = $.jStorage.get("activeQueue").length;

        if(amount>currentActiveLength){
            poplist = $.jStorage.get("reviewQueue");
            pushlist = $.jStorage.get("activeQueue");
            reviewpop = 1;
        }else{
            poplist = $.jStorage.get("activeQueue");
            pushlist = $.jStorage.get("reviewQueue");
            reviewpop = 0;
        }

        let iterCount =  (-(reviewpop-1))*(currentActiveLength-amount) + reviewpop*(amount-currentActiveLength);
        for(i=0;i < iterCount ;i++){

            pushlist.push(poplist.pop());

        }
        $.jStorage.set("activeQueue",reviewpop?pushlist:poplist);
        $.jStorage.set("reviewQueue",reviewpop?poplist:pushlist);
    }

    function addStyle(aCss) {
        var head, style;
        head = document.getElementsByTagName('head')[0];
        if (head) {
            style = document.createElement('style');
            style.setAttribute('type', 'text/css');
            style.textContent = aCss;
            head.appendChild(style);
            return style;
        }
        return null;
    }
})();

// Hook into App Store
try { $('.app-store-menu-item').remove(); $('<li class="app-store-menu-item"><a href="https://community.wanikani.com/t/there-are-so-many-user-scripts-now-that-discovering-them-is-hard/20709">App Store</a></li>').insertBefore($('.navbar .dropdown-menu .nav-header:contains("Account")')); window.appStoreRegistry = window.appStoreRegistry || {}; window.appStoreRegistry[GM_info.script.uuid] = GM_info; localStorage.appStoreRegistry = JSON.stringify(appStoreRegistry); } catch (e) {}