Greasy Fork 还支持 简体中文。

WaniKani Fast Abridged Wrong/Multiple Answer

try to take over the world!

目前為 2018-04-07 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name WaniKani Fast Abridged Wrong/Multiple Answer
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.7
  5. // @description try to take over the world!
  6. // @author You
  7. // @match https://www.wanikani.com/review/session
  8. // @match https://www.wanikani.com/
  9. // @match https://www.wanikani.com/dashboard
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. window.wk_fawa = {};
  14.  
  15. var wrongCountFAWA;
  16. (function(global) {
  17. 'use strict';
  18. // Hook into App Store
  19. 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) {}
  20.  
  21. if (!window.wkof) {
  22. alert('WaniKani Fast Abridged Wrong/Multiple Answer requires Wanikani Open Framework.\nYou will now be forwarded to installation instructions.');
  23. window.location.href = 'https://community.wanikani.com/t/instructions-installing-wanikani-open-framework/28549';
  24. return;
  25. }
  26.  
  27. var settings_dialog;
  28. var defaults = {
  29. alwaysShow: false,
  30. alwaysShowOnlyMultiple: false,
  31. dontShowWrong: false,
  32. correctColor: "#88cc00",
  33. incorrectColor: "#ff0033"
  34. };
  35.  
  36. if(localStorage.getItem("wkFastWrongAlwaysShow") != null){
  37. defaults.alwaysShow = localStorage.getItem("wkFastWrongAlwaysShow");
  38. defaults.alwaysShowOnlyMultiple = localStorage.getItem("wkFastWrongAlwaysShowOnlyMultiple");
  39. defaults.dontShowWrong = localStorage.getItem("wkFastWrongDontShowWrong");
  40. localStorage.removeItem("wkFastWrongAlwaysShow");
  41. localStorage.removeItem("wkFastWrongAlwaysShowOnlyMultiple");
  42. localStorage.removeItem("wkFastWrongDontShowWrong");
  43. }
  44. if(localStorage.getItem("wkFastWrongWrongColor") != null){
  45. defaults.correctColor = localStorage.getItem("wkFastWrongMultipleColor");
  46. defaults.incorrectColor = localStorage.getItem("wkFastWrongWrongColor");
  47. localStorage.removeItem("wkFastWrongWrongColor");
  48. localStorage.removeItem("wkFastWrongMultipleColor");
  49. }
  50.  
  51. wrongCountFAWA = $.jStorage.get("wrongCount");
  52. if(window.location.pathname == "/" || window.location.pathname == "/dashboard"){
  53. wkof.include('Apiv2, Menu, Settings');
  54. wkof.ready('Menu').then(install_menu);
  55. wkof.ready('Settings').then(install_settings);
  56. } else {
  57. wkof.include('Apiv2, Settings');
  58. wkof.ready('Settings').then(install_settings).then(function(){
  59. $('#user-response').after("<input id='lblCorrect' type='text' style='display: none;' disabled/>");
  60. $.jStorage.listenKeyChange('currentItem', function (key, action) {
  61. if (action === 'updated') {
  62. $('#lblCorrect').val('').css('display','none');
  63. }
  64. });
  65. $.jStorage.listenKeyChange('questionCount', function (key, action) {
  66. if(wrongCountFAWA != $.jStorage.get("wrongCount"))
  67. {
  68. wrongCountFAWA = $.jStorage.get("wrongCount");
  69. if(wkof.settings.fawa.dontShowWrong != "1"){
  70. showCorrect(0);
  71. }
  72. }
  73. else {
  74. if (action === 'updated' && $.jStorage.get("questionCount") > 0 && wkof.settings.fawa.alwaysShow == "1") {
  75. showCorrect(1);
  76. }
  77. }
  78. });
  79. });
  80. }
  81.  
  82. function install_menu() {
  83. wkof.Menu.insert_script_link({
  84. script_id: 'fawa',
  85. name: 'fawa',
  86. submenu: 'Settings',
  87. title: 'Fast Abridged Wrong/Multiple Answer',
  88. on_click: open_settings
  89. });
  90. }
  91. function open_settings() {
  92. settings_dialog.open();
  93. }
  94. function install_settings() {
  95. settings_dialog = new wkof.Settings({
  96. script_id: 'fawa',
  97. name: 'fawa',
  98. title: 'Fast Abridged Wrong/Multiple Answer',
  99. on_save: process_settings,
  100. settings: {
  101. 'grp_main': {
  102. type:'group',
  103. label:'Main',
  104. content:{
  105. 'alwaysShow': {type:'checkbox',label:'Always Show Correct Answers',default:defaults.alwaysShow},
  106. 'alwaysShowOnlyMultiple': {type:'checkbox',label:'&nbsp;&nbsp;&nbsp;(Only if multiple answers)',default:defaults.alwaysShowOnlyMultiple},
  107. 'dontShowWrong': {type:'checkbox',label:'&nbsp;&nbsp;&nbsp;(Don\'t show wrongs)',default:defaults.dontShowWrong}
  108. }
  109. },
  110. 'grp_colors':{
  111. type: 'group',
  112. label: 'colors',
  113. content: {
  114. 'correctColor': {type:'color',label:'Correct',default:defaults.correctColor},
  115. 'incorrectColor': {type:'color',label:'Incorrect',default:defaults.incorrectColor},
  116. }
  117. }
  118. }
  119. });
  120. settings_dialog.load().then(function(){
  121. wkof.settings.fawa = $.extend(true, {}, defaults,wkof.settings.fawa);
  122. settings_dialog.save();
  123. });
  124. }
  125. function process_settings(){
  126. settings_dialog.save();
  127. console.log('Settings saved!');
  128. }
  129.  
  130. function showBar(mode){//0=wrong, 1=right
  131. $('#lblCorrect').css('display','block');
  132. $('#lblCorrect').attr('style','display: block; background-color: ' + ((mode == 0) ? wkof.settings.fawa.incorrectColor : wkof.settings.fawa.correctColor) + ' !important;');
  133. }
  134.  
  135. function showCorrect(mode){
  136. switch($('#question-type h1').text().toLowerCase()){
  137. case "vocabulary reading":
  138. if(mode === 1 && wkof.settings.fawa.alwaysShowOnlyMultiple == "1" && $.jStorage.get("currentItem").kana.length === 1) return;
  139. showBar(mode);
  140. $('#lblCorrect').val($.jStorage.get("currentItem").kana.join(", "));
  141. break;
  142. case "vocabulary meaning":
  143. case "kanji meaning":
  144. case "radical name":
  145. if(mode === 1 && wkof.settings.fawa.alwaysShowOnlyMultiple == "1" && $.jStorage.get("currentItem").en.length === 1) return;
  146. showBar(mode);
  147. $('#lblCorrect').val($.jStorage.get("currentItem").en.join(", "));
  148. break;
  149. case "kanji reading":
  150. switch($.jStorage.get("currentItem").emph.toLowerCase()){
  151. case "onyomi":
  152. if(mode === 1 && wkof.settings.fawa.alwaysShowOnlyMultiple == "1" && $.jStorage.get("currentItem").on.length === 1) return;
  153. showBar(mode);
  154. $('#lblCorrect').val($.jStorage.get("currentItem").on.join(", "));
  155. break;
  156. case "kunyomi":
  157. if(mode === 1 && wkof.settings.fawa.alwaysShowOnlyMultiple == "1" && $.jStorage.get("currentItem").kun.length === 1) return;
  158. showBar(mode);
  159. $('#lblCorrect').val($.jStorage.get("currentItem").kun.join(", "));
  160. break;
  161. }
  162. break;
  163. }
  164. }
  165.  
  166. })(window.wk_fawa);