您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Lets you choose the size of your review session
当前为
// ==UserScript== // @name Wanikani: Review Queue Sizer // @namespace http://tampermonkey.net/ // @version 1.0.2 // @description Lets you choose the size of your review session // @author Kumirei // @include /^https://(www|preview).wanikani.com/(lesson|review)/session$/ // @grant none // ==/UserScript== (function(wkof, $) { let script_name = "Wanikani: Review Queue Sizer"; let script_title = "Review Queue Sizer"; let script_id = "review_queue_sizer"; // Make sure WKOF is installed if (!wkof) { let response = confirm( script_name + ' requires WaniKani Open Framework.\n Click "OK" to be forwarded to installation instructions.' ); if (response) { window.location.href = "https://community.wanikani.com/t/instructions-installing-wanikani-open-framework/28549"; } return; } wkof.include("Menu,Settings,ItemData"); wkof .ready("Menu,Settings") .then(load_settings) .then(install_menu) .then(start); function start() { // Run once items have loaded, and only once let stop = false; $.jStorage.listenKeyChange("reviewQueue", () => { if (!stop) { stop = true; run(); } }); } // Load WKOF settings function load_settings() { let defaults = { qsize: 0 }; return wkof.Settings.load(script_id, defaults); } // Installs the options button in the menu function install_menu() { let config = { name: script_id, submenu: "Settings", title: script_title, on_click: open_settings }; wkof.Menu.insert_script_link(config); } function open_settings() { var config = { script_id: script_id, title: script_title, pre_open: settings_pre_open, on_save: settings_on_save, on_close: run, content: { qsize: { type: "number", label: "Queue size", default: 0, hover_tip: "0 means unlimited" } } }; let dialog = new wkof.Settings(config); dialog.open(); } function settings_on_save(settings) { run(); } function settings_pre_open(settings) { const target = settings[0].querySelector("#review_queue_sizer_qsize"); target.addEventListener("keydown", e => { if (e.target.nodeName == "INPUT" && e.keyCode == 8) { e.target.value = e.target.value.slice(0, -1); fire_event(target, "change"); } }); } // Retrieves the current review queue function get_queue() { const items = [ ...($.jStorage.get("activeQueue") ?? []) , ...$.jStorage.get("reviewQueue") ]; return items; } // Create new queue function run() { let items = get_queue(); const limit = wkof.settings[script_id].qsize || items.length; const done = $.jStorage.get("completedCount"); $("#bar").width((done / limit) * 100 + "%"); const truncated = items.slice(0, limit - done); $.jStorage.set("reviewQueue", truncated.slice(10)); $.jStorage.set("activeQueue", truncated.slice(0, 10)); $.jStorage.set("currentItem", truncated[0]); } function fire_event(elem, event) { let e = document.createEvent("HTMLEvents"); e.initEvent(event, true, true); // Type, bubbling, cancelable return !elem.dispatchEvent(e); } })(window.wkof, window.jQuery);