您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
WaniKani Review Order by Alucardeck
- // ==UserScript==
- // @name WaniKani Review Order
- // @namespace https://www.wanikani.com
- // @description WaniKani Review Order by Alucardeck
- // @version 0.35
- // @include https://www.wanikani.com/review/session
- // @include http://www.wanikani.com/review/session
- // @grant none
- // ==/UserScript==
- function get(id) {
- if (id && typeof id === 'string') {
- id = document.getElementById(id);
- }
- return id || null;
- }
- function init(){
- console.log('init() start');
- var stats = $("#stats")[0];
- var t = document.createElement('div');
- stats.appendChild(t);
- t.innerHTML = '<div id="wkroStatus"><table align="right"><tbody>'+
- '<tr><td>Rad</td><td align="right"><span id="wkroRadCount"></span></td></tr>'+
- '<tr><td>Kan</td><td align="right"><span id="wkroKanCount"></span></td></tr>'+
- '<tr><td>Voc</td><td align="right"><span id="wkroVocCount"></span></td></tr>'+
- '</tbody></table></div><div id="divSt">Not Ordered!</div>'+
- '<button id="reorderBtn1" type="button" onclick="window.dispatchEvent(new Event(\'reorderWKBulk\'));">Bulk Mode</button>'+
- '<button id="reorderBtn2" type="button" onclick="window.dispatchEvent(new Event(\'reorderWKSingle\'));">Single Mode</button>'+
- '</div>';
- $.jStorage.listenKeyChange("activeQueue",displayUpdate);
- window.addEventListener('reorderWKSingle',reorderSingle);
- window.addEventListener('reorderWKBulk',reorderBulk);
- displayUpdate();
- console.log('init() end');
- }
- function reorderBulk(){
- //Reordering method following original parameters of 10 activeQueue list
- method = "BULK";
- reorder();
- }
- function reorderSingle(){
- //Reordering method following the 1 activeQueue list, that makes both reading/meaning coming in pairs.
- //method = "SINGLE";
- //reorder();
- try{
- unsafeWindow.Math.random = function() { return 0; }
- }catch(e){
- Math.random = function() { return 0; }
- }
- reorderBulk();
- }
- function reorder(){
- console.log('reorder() start');
- var divSt = get("divSt");
- var reorderBtn1= get("reorderBtn1");
- var reorderBtn2= get("reorderBtn2");
- reorderBtn1.style.visibility="hidden";
- reorderBtn2.style.visibility="hidden";
- divSt.innerHTML = 'Reordering.. please wait!';
- var cur = $.jStorage.get("currentItem");
- var qt = $.jStorage.get("questionType");
- var actList = $.jStorage.get("activeQueue");
- var revList = $.jStorage.get("reviewQueue");
- console.log('current item: '+cur);
- var curt = cur.kan?'kan':cur.voc?'voc':'rad';
- var removedCount = 0;
- for(var i=0;i<actList.length;i++){
- var it = actList[i];
- var itt = cur.kan?'kan':cur.voc?'voc':'rad';
- console.log(it);
- if(!(curt==itt&&cur.id==it.id)){
- actList.splice(i--,1);
- revList.push(it);
- removedCount++;
- }
- }
- console.log('Items removed from ActiveQueue: '+removedCount);
- for(var i=revList.length-1;i>=0;i--){
- var it=revList[i];
- if(it.kan){
- revList.splice(i,1);
- revList.push(it);
- //console.log('kan '+it.kan);
- }
- }
- for(var i=revList.length-1;i>=0;i--){
- var it=revList[i];
- if(it.rad){
- revList.splice(i,1);
- revList.push(it);
- //console.log('rad '+it.rad);
- }
- }
- if(method=='BULK')
- for(var i=0;i<removedCount;i++)
- actList.push(revList.pop());
- console.log('Ordered ReviewQueue:');
- for(var i=0;i<revList.length;i++){
- var it=revList[i];
- if(it.rad)
- console.log('rad '+it.rad);
- else if(it.kan)
- console.log('kan '+it.kan);
- else if(it.voc)
- console.log('voc '+it.voc);
- }
- $.jStorage.set("reviewQueue",revList);
- $.jStorage.set("activeQueue",actList);
- divSt.innerHTML = 'Done!';
- console.log('reorder() end');
- }
- function displayUpdate(){
- var radC = 0, kanC = 0, vocC = 0;
- var list = $.jStorage.get("reviewQueue").concat($.jStorage.get("activeQueue"));
- console.log('ReviewQueue ('+$.jStorage.get("reviewQueue").length+') ActiveQueue ('+$.jStorage.get("activeQueue").length+')');
- for(var i=0;i<list.length;i++){
- var it=list[i];
- if(it.rad)
- radC++;
- else if(it.kan)
- kanC++;
- else if(it.voc)
- vocC++;
- }
- console.log('Rad '+radC+' Kan '+kanC+' Voc '+vocC);
- var radSpan = $("#wkroRadCount")[0];
- var kanSpan = $("#wkroKanCount")[0];
- var vocSpan = $("#wkroVocCount")[0];
- radSpan.innerHTML = radC;
- kanSpan.innerHTML = kanC;
- vocSpan.innerHTML = vocC;
- }
- var method = "";
- init();
- console.log('script load end');