Średnia do dziennika

Dodaje średnią ocen

Fra 11.02.2017. Se den seneste versjonen.

  1. // ==UserScript==
  2. // @name Średnia do dziennika
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2
  5. // @description Dodaje średnią ocen
  6. // @author Rysiu
  7. // @match https://*.edu.gdansk.pl/gdansk/zsl/*
  8. // @match https://*.edu.gdansk.pl/gdansk/ZSL/*
  9. // @grant none
  10. // ==/UserScript==
  11. function insertAfter(el, referenceNode) {
  12. referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
  13. }
  14.  
  15. function roundNumber(num, scale) {
  16. var number = Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
  17. if(num - number > 0) {
  18. return (number + Math.floor(2 * Math.round((num - number) * Math.pow(10, (scale + 1))) / 10) / Math.pow(10, scale));
  19. } else {
  20. return number;
  21. }
  22. }
  23.  
  24. (function() {
  25.  
  26. //Tworzy naglowek
  27. var tableHead = document.querySelector('thead > tr');
  28.  
  29. var newHead = document.createElement('th');
  30. newHead.innerHTML = 'Średnia';
  31.  
  32. insertAfter(newHead, tableHead.querySelectorAll('th')[1]);
  33.  
  34. //Znajduje rzedy z ocenami
  35. var rzedy = document.querySelectorAll('.break-word'), i, j;
  36. for (i = 0; i < rzedy.length; ++i) {
  37.  
  38. //Przeskakuje brak ocen
  39. if(rzedy[i].innerHTML == "Brak ocen")
  40. {
  41. var clearAverage = document.createElement('td');
  42. clearAverage.innerHTML = '-';
  43. insertAfter(clearAverage, rzedy[i]);
  44. continue;
  45. }
  46.  
  47. //Znajduje oceny czastkowe
  48. var oceny = rzedy[i].querySelectorAll('span'), suma = 0, waga = 0;
  49. for (j = 0; j < oceny.length; ++j) {
  50. //Znajduje bledne oceny
  51. if(oceny[j].innerHTML.length > 2) continue;
  52. if( isNaN(parseInt(oceny[j].innerHTML[0]))) continue;
  53. //Wyciaga wage
  54. opisOceny = oceny[j].outerHTML;
  55. pozycjaWagi = opisOceny.search("Waga: ");
  56. pozycjaKoncaWagi = opisOceny.search("<br/>Data:");
  57. wagaString = opisOceny.substring(pozycjaWagi + 6, pozycjaKoncaWagi);
  58. wagaString = wagaString.replace(',','.');
  59. wagaFloat = parseFloat(wagaString);
  60.  
  61. //Wyciaga ocene
  62. ocenaString = oceny[j].innerHTML;
  63. ocenaFloat = parseFloat(ocenaString);
  64. if(ocenaString[1] === '-') ocenaFloat -= 0.25;
  65. if(ocenaString[1] === '+') ocenaFloat += 0.5;
  66.  
  67. suma += ocenaFloat * wagaFloat;
  68. waga += wagaFloat;
  69. }
  70.  
  71. var newAverage = document.createElement('td');
  72. newAverage.innerHTML = roundNumber(suma/waga, 2);
  73.  
  74. insertAfter(newAverage, rzedy[i]);
  75.  
  76. suma = 0;
  77. waga = 0;
  78. }
  79. })();