Karakterkalkulator

Se gjennomsnittskarakter i fsweb!

  1. // ==UserScript==
  2. // @name Karakterkalkulator
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Se gjennomsnittskarakter i fsweb!
  6. // @author You
  7. // @match https://fsweb.no/studentweb/resultater.jsf
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=fsweb.no
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. function fractConverter(fract)
  14. {
  15. if(fract==0 || Math.abs(fract) < 0.33333)
  16. {
  17. return "";
  18. }
  19. else if (fract < 0)
  20. {
  21. return "-";
  22. }
  23. return "+";
  24. }
  25.  
  26. function main()
  27. {
  28. const rows = document.querySelectorAll(".resultatTop");
  29. let weigthSum = 0;
  30. let gradeAvg = 0;
  31. let gradeLookup = {"A":5,"B":4,"C":3,"D":2,"E":1,"F":0};
  32. let gradeLookup2 = {5:"A",4:"B",3:"C",2:"D",1:"E",0:"F"};
  33.  
  34. for(let row of rows)
  35. {
  36. try{
  37.  
  38. var gradeEl = row.querySelector("td.col6Resultat.textAlignRight > div.infoLinje > span");
  39. var weightEl = row.querySelector("td.col7Studiepoeng.textAlignRight > span");
  40.  
  41. var grade = gradeEl.innerHTML;
  42. var weigth = weightEl.innerHTML;
  43.  
  44. grade = gradeLookup[grade];
  45. weigth = Number(weigth)
  46.  
  47. weigthSum += weigth
  48. gradeAvg += weigth*grade;
  49. }catch(e){continue;}
  50. }
  51. gradeAvg /= weigthSum;
  52. gradeAvg = gradeAvg.toFixed(2);
  53. const rounded = Math.round(gradeAvg);
  54. const prefix = gradeLookup2[rounded];
  55. const suffix = fractConverter(gradeAvg-rounded);
  56. const gradeLetter = prefix + suffix;
  57. const el = document.querySelector("p.table-footer");
  58. el.innerHTML += "<span style=\"padding-left: 30px;\">Gjennomsnitt: "+gradeLetter+" ("+gradeAvg+"GPA)</span>";
  59. }
  60.  
  61. (function() {
  62. 'use strict';
  63.  
  64. window.onload = main;
  65. })();