Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name WaniKani True Result
- // @namespace http://www.wanikani.com
- // @description WaniKani True Result by Alucardeck
- // @version 0.1
- // @include http://www.wanikani.com/review
- // @grant none
- // ==/UserScript==
- function get(id) {
- if (id && typeof id === 'string') {
- id = document.getElementById(id);
- }
- return id || null;
- }
- var perfNode = get('performance');
- var vocabNodes = perfNode.getElementsByClassName('vocabulary');
- var vuCount = 0;
- var vtCount = vocabNodes.length;
- for(var n=0; n<vocabNodes.length; n++){
- var resNode = vocabNodes[n].parentNode.childNodes[1];
- var className = resNode.className;
- if(className == 'up'){
- vuCount++;
- }
- }
- var kanjiNodes = perfNode.getElementsByClassName('kanji');
- var kuCount = 0;
- var ktCount = kanjiNodes.length;
- for(var n=0; n<kanjiNodes.length; n++){
- var resNode = kanjiNodes[n].parentNode.childNodes[1];
- var className = resNode.className;
- if(className == 'up'){
- kuCount++;
- }
- }
- var radNodes = perfNode.getElementsByClassName('radical');
- var ruCount = 0;
- var rtCount = radNodes.length;
- for(var n=0; n<radNodes.length; n++){
- var resNode = radNodes[n].parentNode.childNodes[1];
- var className = resNode.className;
- if(className == 'up'){
- ruCount++;
- }
- }
- var totalDiv = document.createElement('div');
- var rTitle = document.createElement('div');
- var kTitle = document.createElement('div');
- var vTitle = document.createElement('div');
- var tTitle = document.createElement('div');
- var tpTitle = document.createElement('h1');
- var resTitle = document.createElement('h2');
- rTitle.style.backgroundColor = '#0af';
- kTitle.style.backgroundColor = '#f0a';
- vTitle.style.backgroundColor = '#a0f';
- tTitle.style.backgroundColor = '#aaa';
- rTitle.style.marginLeft = 'auto';
- kTitle.style.marginLeft = 'auto';
- vTitle.style.marginLeft = 'auto';
- tTitle.style.marginLeft = 'auto';
- rTitle.style.marginRight = 'auto';
- kTitle.style.marginRight = 'auto';
- vTitle.style.marginRight = 'auto';
- tTitle.style.marginRight = 'auto';
- totalDiv.style.textAlign = 'center';
- rTitle.style.width = '40%';
- kTitle.style.width = '40%';
- vTitle.style.width = '40%';
- tTitle.style.width = '50%';
- totalDiv.style.color = 'white';
- totalDiv.style.textShadow = '0 1px 0 rgba(255,255,255,0.6)';
- rTitle.style.padding = '5px';
- kTitle.style.padding = '5px';
- vTitle.style.padding = '5px';
- tTitle.style.padding = '5px';
- tTitle.style.fontSize = 'larger';
- totalDiv.appendChild(rTitle);
- totalDiv.appendChild(kTitle);
- totalDiv.appendChild(vTitle);
- totalDiv.appendChild(tTitle);
- totalDiv.appendChild(tpTitle);
- totalDiv.appendChild(resTitle);
- if(rtCount>0){
- var rp = (ruCount/rtCount*100).toFixed(1);
- rTitle.appendChild(document.createTextNode('Radicals: '+(ruCount)+'/'+(rtCount)+' - '+rp+'%'));
- }else{
- rTitle.style.fontStyle = 'italic';
- rTitle.appendChild(document.createTextNode('No radicals reviewed'));
- }
- if(ktCount>0){
- var kp = (kuCount/ktCount*100).toFixed(1);
- kTitle.appendChild(document.createTextNode('Kanji: '+(kuCount)+'/'+(ktCount)+' - '+kp+'%'));
- }else{
- kTitle.style.fontStyle = 'italic';
- kTitle.appendChild(document.createTextNode('No kanji reviewed'));
- }
- if(vtCount>0){
- var vp = (vuCount/vtCount*100).toFixed(1);
- vTitle.appendChild(document.createTextNode('Vocabulary: '+(vuCount)+'/'+(vtCount)+' - '+vp+'%'));
- }else{
- vTitle.style.fontStyle = 'italic';
- vTitle.appendChild(document.createTextNode('No vocabulary reviewed'));
- }
- var tuCount = ruCount+kuCount+vuCount;
- var ttCount = rtCount+ktCount+vtCount;
- if(ttCount>0){
- var tp = (tuCount/ttCount*100).toFixed(1);
- tTitle.style.fontWeight = 'bold';
- tTitle.appendChild(document.createTextNode('TOTAL: '+tuCount+'/'+ttCount+''));
- tpTitle.style.fontWeight = 'bold';
- tpTitle.appendChild(document.createTextNode(tp+'% success!'));
- var resTxt = '';
- if(tp>=90){
- resTxt = 'おめでとう!! <(^.^)>'
- }else{
- resTxt = 'がんばれ! <(T-T)>'
- }
- var resLbl = document.createTextNode(resTxt);
- resTitle.appendChild(resLbl);
- }else{
- tTitle.appendChild(document.createTextNode('No prior results'));
- }
- perfNode.insertBefore(totalDiv,perfNode.firstChild);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement