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-09-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         Počítání váženého průměru bakaláři
// @namespace    none
// @version      1.3
// @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
// ==/UserScript==

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

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

//Created by Tomáš Falešník 2015 (see the license file)
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;
}


  var subjects = $x("//div[@class='nazevprdiv']/a");
  var subjectWrapp = $x("//div[@class='nazevprdiv']");


// Here starts the loop that cycles trought subjects
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");

  // Here starts the loop that cycles trought marks of selected subject
  for(var o = 0; marks.length > o; o++){
    var crrWeight = WEIGHT_MAP[weights[o].innerHTML];
    var crrMark = marks[o].innerHTML;

    if(crrWeight === undefined || MARKS_TO_SKIP.indexOf(crrMark) != -1) {
      // Badly specified weight (mark), skip it
      continue;
    }else{
      weightedMarks += parseFloat(crrWeight) * parseFloat(crrMark);
      summedWeights += parseFloat(crrWeight);
    }
  }
  // Counting the weighted average and adding it to the document
  var result = Math.round((parseFloat(weightedMarks) / parseFloat(summedWeights)) * 10000) / 10000;
  if(isNaN(result)){
    result = "0";
  }
  subjectWrapp[i].innerHTML += '<div class="nazevpr" style="text-align:left;font-size:9pt;text-decoration:none;">' + result + '</div>';
}

QingJ © 2025

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