Moyenne e-lyco

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

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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.4
// @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 = "http://samsamdu44.000webhostapp.com/script/moyennes.txt";
http.open("GET", url, false); 
http.send(null);
 
// Bidouillage et Parsing 
var database = http.responseText;
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);
  
// Dernière moyenne ajouté
var dernierMoy = database.lastIndexOf(user);
dernierMoy = database.split("?")[dernierMoy+1];
  
console.log("Dernière moyenne envoyée : "+dernierMoy);

// Envoi de la moyenne à la base de données (ou pas)
if (database.indexOf(user) == -1) { // Si la moyenne n'existe pas ou 
  
	var data = user+"?"+noteFinale+"?";

  // 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.indexOf(user)) { // Si la moyenne est déjà dans la bdd et est actualisé
  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);