Advertisement
Guest User

first you listen, then you type, then you read

a guest
Nov 10th, 2022
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | Source Code | 0 0
  1. // Back Template
  2.  
  3. {{FrontSide}}
  4. <hr id=answer>
  5. {{Vocabulary-Audio}}
  6. {{Sentence-Audio}}
  7. <span style="font-size: 30px;">{{edit:Vocabulary-English}}</span>
  8. <br>
  9. <span style="font-size: 35px;" class="gothic">{{edit:Vocabulary-Kana}}</span>
  10. <br>
  11. <input type="text" id=enterfurigana class="gothic"γ€€autofocus>
  12. <br>
  13. <span style="font-size: 14px;" class="gothic">{{Vocabulary-Pos}}</span>
  14. <br>
  15. <!--<span style="font-size: 40px;" class="hide" class="gothic">{{edit:furigana:Reading}}-->
  16. <span style="font-size: 40px;" class="gothic hide expression">{{edit:furigana:Expression}}
  17. </span>
  18. <div class="hide english">
  19. <br>
  20. <span style="font-size: 25px; ">{{Sentence-English}}</span>
  21. <div style="display: none">
  22. <br>
  23.  
  24. <br>
  25. </div>
  26. </div>
  27.  
  28. <script type="text/javascript">
  29. // this is giga meh
  30. var createIframe = (type) => {
  31. const iframe = document.createElement('iframe');
  32. const selection = window.getSelection().toString();
  33. if (selection) type = "0";
  34. iframe.src = `https://jotoba.de/search/${selection ? selection : "{{edit:Vocabulary-Kanji}}"}?t=${type ? type : "1"}`;
  35. iframe.width = "100%";
  36. iframe.style.border = "none";
  37. iframe.style.height = "55vh";
  38. return iframe;
  39. }
  40. (() => {
  41. document.querySelector("#enterfurigana").focus();
  42. if (document.querySelector("body").classList.contains('customBackScriptHasRun')) return;
  43. const controlPressed = (event) => {
  44. const el = document.querySelector("#enterfurigana");
  45. /*
  46. if (document.activeElement === el) {
  47. // el.disabled = true;
  48. el.blur();
  49. // window.focus();
  50. return;
  51. }
  52. */
  53. // el.disabled = false;
  54. el.focus();
  55. }
  56.  
  57. const shiftPressed = (event) => {
  58. const expression = document.querySelector(".expression");
  59. const english = document.querySelector(".english");
  60. if (!expression) return;
  61. if (event.type === 'keydown') {
  62. if (english && event.altKey && event.shiftKey) {
  63. english.classList.remove('hide');
  64. } else {
  65. expression.classList.remove('hide');
  66. }
  67. }
  68. if (event.type === 'keyup') {
  69. expression.classList.add('hide');
  70. if (english) english.classList.add('hide');
  71. }
  72. }
  73.  
  74. const dontPropagate = (event) => {
  75. event.preventDefault();
  76. event.stopPropagation();
  77. event.stopImmediatePropagation();
  78. }
  79.  
  80. const changeColor = (event) => {
  81. if (!(event.srcElement && event.srcElement.value)) return;
  82. const expression = document.querySelector(".expression");
  83. if (!expression) return;
  84. if (expression.textContent.replace(/\n/, '').trim() === event.srcElement.value.trim()) {
  85. event.srcElement.style.backgroundColor = '#aaffaa1a';
  86. } else {
  87. event.srcElement.style.backgroundColor = '';
  88. }
  89. }
  90.  
  91. const spawnIframe = (type) => {
  92. const iframe = createIframe(type);
  93. const prev = document.querySelector("iframe");
  94. if (prev) {
  95. return prev.src = iframe.src;
  96. };
  97. document.body.appendChild(iframe);
  98. }
  99.  
  100. const destroyIframe = () => {
  101. const iframe = document.querySelector("iframe");
  102. iframe && iframe.remove();
  103. }
  104.  
  105. document.addEventListener('input', changeColor);
  106. document.addEventListener('change', changeColor);
  107. document.addEventListener('compositionstart', changeColor);
  108. document.addEventListener('compositionupdate', changeColor);
  109. document.addEventListener('compositionend', changeColor);
  110.  
  111. document.addEventListener('keydown', (event) => {
  112. // console.log(event);
  113. changeColor(event);
  114. switch(event.key) {
  115. case('Control'):
  116. controlPressed(event);
  117. // dontPropagate(event);
  118. break;
  119. case('Shift'):
  120. shiftPressed(event);
  121. dontPropagate(event);
  122. break;
  123. case('Alt'):
  124. shiftPressed(event);
  125. dontPropagate(event);
  126. break;
  127. case('F2'):
  128. destroyIframe();
  129. pycmd('ease1');
  130. dontPropagate(event);
  131. break;
  132. case('F3'):
  133. destroyIframe();
  134. pycmd("ease3");
  135. dontPropagate(event);
  136. break;
  137. case('F4'):
  138. pycmd('play:a:0');
  139. dontPropagate(event);
  140. break;
  141. case('F6'):
  142. pycmd('play:a:1');
  143. dontPropagate(event);
  144. break;
  145. case('F7'):
  146. spawnIframe('1');
  147. dontPropagate(event);
  148. break;
  149. }
  150. });
  151.  
  152. document.addEventListener('keyup', (event) => {
  153. switch(event.key) {
  154. case('Shift'):
  155. shiftPressed(event);
  156. dontPropagate(event);
  157. break;
  158. }
  159. });
  160.  
  161. setTimeout(() => {
  162. document.querySelector("body").classList.add('customBackScriptHasRun');
  163. });
  164. })()
  165. </script>
  166.  
  167. // Styling
  168.  
  169. .card,
  170. input {
  171. font-family: arial;
  172. font-size: 25px;
  173. text-align: center;
  174. // color: White;
  175. // background-color: Black;
  176. }
  177.  
  178. .card .gothic,
  179. .gothic,
  180. input {
  181. font-family: IPAexGothic !important;
  182. }
  183.  
  184. input#typeans {
  185. γ€€ font-family: IPAexGothic !important;
  186. font-size: 50px !important;
  187. height: 65px;
  188. width: 25%;
  189. }
  190.  
  191. #typeans {
  192. font-family: IPAexGothic !important;
  193. font-size: 18px;
  194. }
  195.  
  196. #enterfurigana {
  197. width: 60% !important;
  198. font-size: 40px !important;
  199. height: 50px !important;
  200. }
  201.  
  202.  
  203. .hide {
  204. opacity: 0;
  205. }
  206.  
  207. /*
  208. .hide:hover {
  209. opacity: 1;
  210. }
  211. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement