Advertisement
Guest User

Untitled

a guest
May 22nd, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name          WaniKani True Result
  3. // @namespace     http://www.wanikani.com
  4. // @description   WaniKani True Result by Alucardeck
  5. // @version 0.1
  6. // @include       http://www.wanikani.com/review
  7. // @grant       none
  8. // ==/UserScript==
  9. function get(id) {
  10.     if (id && typeof id === 'string') {
  11.         id = document.getElementById(id);
  12.     }
  13.     return id || null;
  14. }
  15.  
  16. var perfNode = get('performance');
  17.  
  18. var vocabNodes = perfNode.getElementsByClassName('vocabulary');
  19. var vuCount = 0;
  20. var vtCount = vocabNodes.length;
  21. for(var n=0; n<vocabNodes.length; n++){
  22.     var resNode = vocabNodes[n].parentNode.childNodes[1];
  23.     var className = resNode.className;
  24.     if(className == 'up'){
  25.         vuCount++;
  26.     }
  27. }
  28.  
  29. var kanjiNodes = perfNode.getElementsByClassName('kanji');
  30. var kuCount = 0;
  31. var ktCount = kanjiNodes.length;
  32. for(var n=0; n<kanjiNodes.length; n++){
  33.     var resNode = kanjiNodes[n].parentNode.childNodes[1];
  34.     var className = resNode.className;
  35.     if(className == 'up'){
  36.         kuCount++;
  37.     }
  38. }
  39.  
  40. var radNodes = perfNode.getElementsByClassName('radical');
  41. var ruCount = 0;
  42. var rtCount = radNodes.length;
  43. for(var n=0; n<radNodes.length; n++){
  44.     var resNode = radNodes[n].parentNode.childNodes[1];
  45.     var className = resNode.className;
  46.     if(className == 'up'){
  47.         ruCount++;
  48.     }
  49. }
  50.  
  51. var totalDiv = document.createElement('div');
  52. var rTitle = document.createElement('div');
  53. var kTitle = document.createElement('div');
  54. var vTitle = document.createElement('div');
  55. var tTitle = document.createElement('div');
  56. var tpTitle = document.createElement('h1');
  57. var resTitle = document.createElement('h2');
  58.  
  59. rTitle.style.backgroundColor = '#0af';
  60. kTitle.style.backgroundColor = '#f0a';
  61. vTitle.style.backgroundColor = '#a0f';
  62. tTitle.style.backgroundColor = '#aaa';
  63.  
  64. rTitle.style.marginLeft = 'auto';
  65. kTitle.style.marginLeft = 'auto';
  66. vTitle.style.marginLeft = 'auto';
  67. tTitle.style.marginLeft = 'auto';
  68.  
  69. rTitle.style.marginRight = 'auto';
  70. kTitle.style.marginRight = 'auto';
  71. vTitle.style.marginRight = 'auto';
  72. tTitle.style.marginRight = 'auto';
  73.  
  74. totalDiv.style.textAlign = 'center';
  75.  
  76. rTitle.style.width = '40%';
  77. kTitle.style.width = '40%';
  78. vTitle.style.width = '40%';
  79. tTitle.style.width = '50%';
  80.  
  81. totalDiv.style.color = 'white';
  82. totalDiv.style.textShadow = '0 1px 0 rgba(255,255,255,0.6)';
  83.  
  84. rTitle.style.padding = '5px';
  85. kTitle.style.padding = '5px';
  86. vTitle.style.padding = '5px';
  87. tTitle.style.padding = '5px';
  88.  
  89. tTitle.style.fontSize = 'larger';
  90.  
  91. totalDiv.appendChild(rTitle);
  92. totalDiv.appendChild(kTitle);
  93. totalDiv.appendChild(vTitle);
  94. totalDiv.appendChild(tTitle);
  95. totalDiv.appendChild(tpTitle);
  96. totalDiv.appendChild(resTitle);
  97.  
  98. if(rtCount>0){
  99.     var rp = (ruCount/rtCount*100).toFixed(1);
  100.     rTitle.appendChild(document.createTextNode('Radicals: '+(ruCount)+'/'+(rtCount)+' - '+rp+'%'));
  101. }else{
  102.     rTitle.style.fontStyle = 'italic';
  103.     rTitle.appendChild(document.createTextNode('No radicals reviewed'));
  104. }
  105. if(ktCount>0){
  106.     var kp = (kuCount/ktCount*100).toFixed(1);
  107.     kTitle.appendChild(document.createTextNode('Kanji: '+(kuCount)+'/'+(ktCount)+' - '+kp+'%'));
  108. }else{
  109.     kTitle.style.fontStyle = 'italic';
  110.     kTitle.appendChild(document.createTextNode('No kanji reviewed'));
  111. }
  112. if(vtCount>0){
  113.     var vp = (vuCount/vtCount*100).toFixed(1);
  114.     vTitle.appendChild(document.createTextNode('Vocabulary: '+(vuCount)+'/'+(vtCount)+' - '+vp+'%'));
  115. }else{
  116.     vTitle.style.fontStyle = 'italic';
  117.     vTitle.appendChild(document.createTextNode('No vocabulary reviewed'));
  118. }
  119. var tuCount = ruCount+kuCount+vuCount;
  120. var ttCount = rtCount+ktCount+vtCount;
  121. if(ttCount>0){
  122.     var tp = (tuCount/ttCount*100).toFixed(1);
  123.     tTitle.style.fontWeight = 'bold';
  124.     tTitle.appendChild(document.createTextNode('TOTAL: '+tuCount+'/'+ttCount+''));
  125.     tpTitle.style.fontWeight = 'bold';
  126.     tpTitle.appendChild(document.createTextNode(tp+'% success!'));
  127.     var resTxt = '';
  128.     if(tp>=90){
  129.         resTxt = 'おめでとう!! <(^.^)>'
  130.     }else{
  131.         resTxt = 'がんばれ! <(T-T)>'
  132.     }
  133.     var resLbl = document.createTextNode(resTxt);
  134.     resTitle.appendChild(resLbl);
  135. }else{
  136.     tTitle.appendChild(document.createTextNode('No prior results'));
  137. }
  138.  
  139. perfNode.insertBefore(totalDiv,perfNode.firstChild);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement