Moyenne e-lyco

Affiche la moyenne générale de l'utilisateur et celle de la classe

目前为 2018-03-24 提交的版本。查看 最新版本

// ==UserScript==
// @name        Moyenne e-lyco
// @namespace   ?
// @description Affiche la moyenne générale de l'utilisateur et celle de la classe
// @include     http://st-joseph-ancenis.loire-atlantique.e-lyco.fr/*
// @include     https://0441928g.e-lyco.fr/*
// @match       http://st-joseph-ancenis.loire-atlantique.e-lyco.fr/*
// @match       https://0441928g.e-lyco.fr/*
// @version     1.3
// @grant       none
// ==/UserScript==

// Attendre le chargement total de la page
setTimeout(function() {
  
// Moyenne Eleve
var noteFinale = 0;
var i = 0;
var mat = 0;
  
try {
  while (document.getElementsByClassName("yui-dt-liner bulletin-note bulletin-note-eleve")[i].innerText !== null) { // Erreur "TypeError" pour stopper la boucle
    var note = document.getElementsByClassName("yui-dt-liner bulletin-note bulletin-note-eleve")[i].innerText;
    if (document.getElementsByClassName("yui-dt-liner bulletin-note bulletin-note-eleve")[i].innerText == "") {
      note = 0;
      mat -= 1;
    }
    else {
    	note = note.replace(",","."); // Bidouillage de la note
    	note = parseFloat(note);
    	noteFinale = noteFinale + note;
    }
    i++;
    mat++;
  }
}

catch (err) {
  console.log("Totale note éléve : "+noteFinale);
  console.log("Nombre de matière : "+mat);
}
  
var noteFinale = noteFinale/mat;
noteFinale = noteFinale.toPrecision(4);
noteFinale = noteFinale.toString();
noteFinale = noteFinale.replace(".",","); // Rebidouillage 

// Moyenne classe (même fonctionnement que pour la moyenne élève)
var noteFinaleClasse = 0;
var i = 1; // A cause du NaN du "Moy." au début
var mat = 0;
  
try {
  while (document.getElementsByClassName("yui-dt0-col-moyenneClasse yui-dt-col-moyenneClasse")[i].innerText !== null) {
    var note = document.getElementsByClassName("yui-dt0-col-moyenneClasse yui-dt-col-moyenneClasse")[i].innerText;
    if (document.getElementsByClassName("yui-dt0-col-moyenneClasse yui-dt-col-moyenneClasse")[i].innerText == "") {
      note = 0;
      mat -= 1;
    }
    else {
    	note = note.replace(",",".");
    	note = parseFloat(note);
    	noteFinaleClasse = noteFinaleClasse + note;
    }
    i++;
    mat++;
  }
}

catch (err) {
  console.log("Totale note classe : "+noteFinaleClasse);
  console.log("Nombre de matière pour classe : "+mat);
}
  
noteFinaleClasse = noteFinaleClasse/mat;
noteFinaleClasse = noteFinaleClasse.toPrecision(4);
noteFinaleClasse = noteFinaleClasse.toString();
noteFinaleClasse = noteFinaleClasse.replace(".",",");

console.log("Moyenne eleve : " +noteFinale);
console.log("Moyenne classe : "+noteFinaleClasse);
  
// Récupération de la base de données
var http = new XMLHttpRequest();
var url = "https://samsamdu44.000webhostapp.com/script/moyennes.txt";
http.open("GET", url, false); 
http.send(null);

// Bidouillage et Parsing 
var database = http.responseText;
database = database.substring(0, database.length - 2);
database = "["+database+"]";
database = JSON.parse(database);
console.log("BDD -->");
console.log(database);
 
  
var user = document.getElementsByClassName("user")[0].innerText;
user = user.substring(0, user.indexOf("Se déco") - 1);
user = btoa(user); // Faut bien attribuer un id à chaque moyenne
console.log("Id de l'élève : "+user);
  
// Envoi de la moyenne à la base de données (ou pas)
if (database.findIndex(function(element){return element == user}) !== -1 || database.length == 0) { // Arg, compliqué à mettre en oeuvre
  
  // Création de l'objet dans la bdd
	var obj = {
  	  note: noteFinale,
    	user: user
	};
  
  // Parsing
	var data = JSON.stringify(obj);
  data = data+",";

  // Envoi des données
	var http = new XMLHttpRequest();
	var url = "https://samsamdu44.000webhostapp.com/script/elyco.php";
	var params = "data="+data;
  
	http.open("POST", url, true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  
	http.onreadystatechange = function() {
	  if (http.readyState == 4 && http.status == 200) {
  	    console.log("Moyenne rajouté à la base de données avec succès !"); // Message de confirmation
 	  }
	}
	http.send(params);
}

else if (database.findIndex(function(element){return element == user}) == -1) { // Si la moyenne est déjà dans la bdd
  console.log("La moyenne à déja été rajouté à la base de données.");
}
  
// Calcul de la position

// Affichage des calculs
var moyenneEleveTr = document.createElement("tr");
moyenneEleveTr.setAttribute("class", "yui-dt-odd");
moyenneEleveTr.setAttribute("id", "yui-rec11");
moyenneEleveTr.setAttribute("style", "background-color: #f4f4f4;");
document.getElementsByClassName("yui-dt-data")[0].appendChild(moyenneEleveTr);

var moyenneEleveTd = document.createElement("td");
moyenneEleveTd.setAttribute("id","moyenneEleveTd");
moyenneEleveTd.setAttribute("class","yui-dt0-col-matiere yui-dt-col-matiere yui-dt-sortable yui-dt-first");
moyenneEleveTd.setAttribute("style","width:171px; height: 48.4px;");
document.getElementById("yui-rec11").appendChild(moyenneEleveTd);
  
var moyenneEleveDiv = document.createElement("div");
moyenneEleveDiv.innerText = "MOYENNES GÉNÉRALES";
moyenneEleveDiv.setAttribute("style","margin: 11px;font-weight: bold;")
document.getElementById("moyenneEleveTd").appendChild(moyenneEleveDiv);
  
var moyenneEleveAffTd = document.createElement("td");
moyenneEleveAffTd.setAttribute("id","moyenneEleveAffTd");
moyenneEleveAffTd.setAttribute("class","yui-dt0-col-moyenneEleve yui-dt-col-moyenneEleve yui-dt-sortable");
document.getElementById("yui-rec11").appendChild(moyenneEleveAffTd);
  
var moyenneEleveAffDiv = document.createElement("div");
moyenneEleveAffDiv.innerText = noteFinale;
moyenneEleveAffDiv.setAttribute("style","font-weight: bold;position: relative;left: 15px;");
document.getElementById("moyenneEleveAffTd").appendChild(moyenneEleveAffDiv);

var moyenneClasseAffTd = document.createElement("td");
moyenneClasseAffTd.setAttribute("id","moyenneClasseAffTd");
moyenneClasseAffTd.setAttribute("class","yui-dt0-col-moyenneClasse yui-dt-col-moyenneClasse");
moyenneClasseAffTd.setAttribute("style","position: relative; left: 50px; background-color: #f4f4f4; font-weight: bold;");
document.getElementById("yui-rec11").appendChild(moyenneClasseAffTd);

var moyenneClasseAffDiv = document.createElement("div");
moyenneClasseAffDiv.innerText = noteFinaleClasse;
moyenneClasseAffDiv.setAttribute("style","left: 15px;position: relative; width: ");
document.getElementById("moyenneClasseAffTd").appendChild(moyenneClasseAffDiv);
}, 1500);

QingJ © 2025

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