Počítání váženého průměru bakaláři

Počítání váženého průměru známek bakaláři

当前为 2016-10-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         Počítání váženého průměru bakaláři
// @namespace    none
// @version      1.6
// @description  Počítání váženého průměru známek bakaláři
// @author       Tomáš Falešník (2016)
// @match        http://znamky.zsunesco.cz/*
// @grant        none
// @require      http://code.jquery.com/jquery-latest.js   
// ==/UserScript==

//Prosím upravte @match na vaši školu, jinak to nebude fungovat..
//Př: http://bakalari.nejaka.skola.cz/* - Ta hvězdička za lomítkem tam musí být.

(function() {
  'use strict';

  var WEIGHT_MAP = {
    'D': 6,
    'M': 4,
    'F': 3,
    'T': 2,
    'C': 10,
    'O': 3,
    'P': 6,
    'L': 4,
    'A': 1
  };

  var MARKS_TO_SKIP = ['A', 'X', '?', 'N'];

  var roundTo = 2;

  function $x(path) {
    var xpath = document.evaluate(path, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    var temp = [];

    for (var i = xpath.snapshotLength - 1; i >= 0; i--) {
      temp.push(xpath.snapshotItem(i));
    }
  return temp;
  }

  if($("#cphmain_roundprub_HTC_labelnadpisprub_0") !== undefined && $("#cphmain_roundprub_HTC_labelnadpisprub_0").html().indexOf("Průběžná klasifikace") !== -1) {
    $("#cphmain_pravyprub > div > div > div > div").append('<div style="white-space: normal; word-break: break-word; font-size: 13px; font-weight: bold;"> Počítání průměru: </div> <table> <tbody> <tr> <td>Zaokrouhlit na: </td> <td><input type="number" min="0" value="2" id="pz_round"> des. míst</td> </tr> </tbody> </table>');
    $("#pz_round").change(function(e) {
      roundTo = $("#pz_round").val();
      count();
    });
    count();
  }

  function count() {
    var subjects = $x("//div[@class='nazevprdiv']/a");
    var subjectWrapp = $x("//div[@class='nazevprdiv']");
    
    $(".pz_prumer").remove();

    // Subject loop
    for(var i = 0; subjects.length > i; i++) {
      var weightedMarks = 0;
      var summedWeights = 0;

      var subjectName = subjects[i].innerHTML;
      var marks = $x("//div[@class='nazevprdiv' and ./a[text()='" + subjectName + "']]/../../td/table/tbody/tr[@class='detznamka']/td");
      var weights = $x("//div[@class='nazevprdiv' and ./a[text()='" + subjectName + "']]/../../td/table/tbody/tr[@class='typ']/td");  

      // Mark loop
      for(var o = 0; marks.length > o; o++) {
        var crrWeight = WEIGHT_MAP[weights[o].innerHTML];
        var crrMark = marks[o].innerHTML;

        // Badly specified weight, skip it
        if (crrWeight === undefined) continue;

        if(MARKS_TO_SKIP.indexOf(crrMark) === -1) {
          weightedMarks += parseInt(crrWeight) * parseInt(crrMark);
          summedWeights += parseInt(crrWeight);
        }
      }
      //Counts the weighted average and adds it to the document
      var result = Math.round((parseInt(weightedMarks) / parseInt(summedWeights)) * Math.pow(10, roundTo)) / Math.pow(10, roundTo);
      $(subjectWrapp[i]).append('<div class="nazevpr pz_prumer" style="text-align:left;font-size:9pt;text-decoration:none;">' + result + '</div>');
    }
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址