NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name EnsimagZenithPlus // @namespace https://intranet.ensimag.fr/Zenith2/ // @description Amélioration du Zenith de l'ensimag // @include https://intranet.ensimag.fr/Zenith2/* // @include http://intranet.ensimag.fr/Zenith2/* // @version 1.1 // @grant none // ==/UserScript== /* * Auteur : Arthur Sonzogni * Contributeur : */ ( function($){ var ZP = { main : function() { // fonction globale this.global.run(); // fonctions de la page if (document.URL.indexOf("ConsultNotes") != -1) { this.consultNote.run(); } else if (document.URL.indexOf("Passwords") != -1) { } else if (document.URL.indexOf("Autre") != -1) { } else if (document.URL.indexOf("ConsultNotes") != -1) { } else { this.homePage.run(); } }, global : { run : function() { this.addOngletNote(); }, addOngletNote : function() { $("#header_liens").append("<li id=\"OngletNote\" class=\"\"><a href=\"/Zenith2/ConsultNotes?uid=\">Notes</a></li>"); }, }, consultNote : { // attribut moyenne : 0.0, ecartType : 0.0, // methodes run : function() { this.retrievePrevision(); this.cleanInterface(); this.checkNewElement(); this.updateView(); //this.cascadeApparition(); this.autoriserModifications(); this.addButtonNewLine(); this.setOngletActif(); this.addCss(); }, updateView : function() { this.calculMoyenne(); this.addInformationPanel(); this.addLineColor(); this.addLineButton(); this.autoriserModifications(); this.savePrevision(); }, calculMoyenne : function() { var sumNote = 0; var sumNote2 = 0; var sumCoef = 0; $("tbody tr").each( function(){ var tds = $(this).children("td"); if (tds.hasClass("noteDisable")) return; var coef = ZP.util.parseFloat(tds.eq(1).text()); var note = ZP.util.parseFloat(tds.eq(3).text()); sumNote2 += coef * note * note; sumNote += coef * note; sumCoef += coef; }); this.moyenne = sumNote/sumCoef; this.ecartType = Math.sqrt(sumNote2/sumCoef-this.moyenne*this.moyenne); }, addInformationPanel : function() { // suppression de l'ancien panneau $(".panelAdded").hide(1000,function(){ $(this).remove(); }); // ajout du nouveau $(".cadre-gris").append("<div class='panelAdded'>"+ "<h2><strong>Moyenne générale = "+this.moyenne.toFixed(2)+"</strong></h2>"+ "<h3>(Ecart-type = "+this.ecartType.toFixed(2)+")</h3>"+ "</div>"); }, addLineColor : function() { $("tbody tr").each( function(){ if ($(this).hasClass("noteDisable")) return; var tds = $(this).children("td"); var note = ZP.util.parseFloat(tds.eq(3).text()); if (note<8) $(this).css("background-color","#FF3333"); else if (note<10) $(this).css("background-color","#FFAAAA"); else if (note<12) $(this).css("background-color","#FFB981"); else if (note<14) $(this).css("background-color","#CCFFA9"); else if (note<16) $(this).css("background-color","#76FF76"); else $(this).css("background-color","#009953"); }); $("table td").css({padding:"10px"}); $("table td").css({"padding-right":"10px"}); }, checkNewElement : function() { if (typeof(Storage) != "undefined") { //localStorage.clear(); $("tbody tr").each( function(){ var tds = $(this).children("td"); var matiere = tds.eq(0).text(); var note = tds.eq(3).text(); if ($(this).hasClass("prevision")) return; if (localStorage.getItem(matiere) !== note) { tds.eq(0).append('<span style="color:#990000"> ( Nouveau ) </span> '); $(this).css("font-weight","Bold"); localStorage.setItem(matiere,note); } }); } }, cascadeApparition : function() { $('tbody tr').hide(); $('tbody tr').first().show('fast', function showNextOne() { $(this).next('tr').show(50, showNextOne); }); }, autoriserModifications : function() { var that = this; $("tbody td").each(function(){ // on selectionne les bonnes cases var i = $(this).index(); switch(i){case 0:case 1:case 3:break;default:return;} $(this).off("click").on("click",function () { // sauvegarde du contenu var OriginalContent = $(this).text(); if ($(this).hasClass("cellEditing")) return; $(this).addClass("cellEditing"); $(this).html("<input type='text' value='" + OriginalContent + "' />"); $(this).children().first().focus(); $(this).children().first().keypress(function (e) { if (e.which == 13) { var newContent = $(this).val(); $(this).parent().text(newContent); $(this).parent().removeClass("cellEditing"); that.updateView(); } }); $(this).children().first().blur(function(){ $(this).parent().text(OriginalContent); $(this).parent().removeClass("cellEditing"); that.updateView(); }); }); }); }, addButtonNewLine : function() { var that = this; $("table.perso.display").append("<button id=\"boutonNouvelleLigne\">nouvelle note (prévision)</button>"); $("#boutonNouvelleLigne").off("click").click(function(){ that.addPrevision(prompt("Matière ?"),prompt("Coefficient ?"),prompt("Notes ?")); that.updateView(); that.autoriserModifications(); }); }, addPrevision : function(matiere,coefficient,note) { $("tbody").append("<tr class=\"prevision\"><td><b>(prévision)</b> "+matiere+"</td><td>"+coefficient+"</td><td>1</td><td>"+note+"</td><td></td></tr>"); }, cleanInterface : function() { //$("#main").children().eq(0).remove(); //$("#main").children().eq(1).remove(); //$("#main").contents().filter(function() { //return this.nodeType === 3; //}).remove(); }, setOngletActif : function() { $("#OngletNote").addClass("actif"); }, addLineButton : function() { var that = this; $("tbody tr").each(function(){ var line = $(this); var cell = line.children("td").eq(4); cell.html("Menu <div class='menuList'><ul>"+ "<li class='menuListRemove'>Supprimer</li>"+ "<li class='menuListDisable'>Desactiver</li>"+ "<li class='menuListEnable'>Activer</li>"+ "</ul></div>"); cell.addClass("buttonMenu"); cell.find(".menuListRemove").off("click").on("click",function(){ line.animate({opacity:"0","font-size":"0px","padding":"0px","margin":"0px"},1000,function(){ line.remove(); that.updateView(); }); }); cell.find(".menuListDisable").off("click").on("click",function(){ line.find("td:not(:last-child)").addClass("noteDisable"); that.updateView(); }); cell.find(".menuListEnable").off("click").on("click",function(){ line.removeClass("noteDisable"); that.updateView(); }); }); }, addPopUp : function(cell,line) { $("table").append( $('<div class="menuPopUp"></div>') .append("bonjour") .offset(line.offset()) ); }, addCss : function() { $("head").append(""+ "<style>"+ ".noteDisable"+ "{"+ " background-color : #999;"+ "}"+ ".buttonMenu"+ "{"+ " text-align : center;"+ " background-color : #EEE;"+ " width : 100px;"+ " box-shadow : inset 0 -1px 1px rgba(0,0,0,0.4);"+ " padding : 0px ;"+ " margin : 0px ;"+ "}"+ ".buttonMenu:hover"+ "{"+ " background-color : #FFF;"+ " box-shadow : inset 0 0px 0px rgba(0,0,0,0.4);"+ "}"+ ".menuList"+ "{"+ " position : absolute;"+ " width : 100px;"+ " background-color : transparent;"+ " display : none;"+ " padding : 0px ;"+ " margin : 0px ;"+ "}"+ ".menuList ul"+ "{"+ " list-style : none;"+ " position : relative;"+ " width : 100px;"+ " left : -10px;"+ " top : +5px;"+ " padding-left : 10px ;"+ " padding-right : 10px ;"+ " padding-top : 5px ;"+ " padding-bottom : 5px ;"+ " margin : 0px ;"+ " background-color : #FFF;"+ " box-shadow : 0 10px 10px rgba(0,0,0,0.4);"+ "}"+ ".menuList li"+ "{"+ " background-color : #EEE;"+ " padding : 10px ;"+ "}"+ ".menuList ul li:hover"+ "{"+ " background-color : #BBB;"+ " box-shadow : inset 0 2px 2px rgba(0,0,0,0.4);"+ "}"+ ".buttonMenu:hover .menuList"+ "{"+ " display : block;"+ "}"+ ".cadre-gris"+ "{"+ " border:0px;"+ " padding-bottom:100px;"+ "}"+ "#footer"+ "{"+ " display:none;"+ "}"+ "</style>" ); }, savePrevision : function() { if (typeof(Storage) != "undefined") { var prevision = []; $("tbody tr").each( function(){ var tds = $(this).children("td"); if ($(this).hasClass("prevision")){ var matiere = tds.eq(0).text(); var coef = tds.eq(1).text(); var note = tds.eq(3).text(); prevision.push({ 'matiere':matiere.replace("(prévision) ",""), 'coef':coef, 'note':note, }); } }); localStorage.setItem("prevision",JSON.stringify(prevision)); } }, retrievePrevision : function() { if (typeof(Storage) != "undefined") { var prevision = localStorage.getItem("prevision"); if (prevision) { prevision = JSON.parse(prevision); for(var i = 0 ; i<prevision.length ; i++ ) { this.addPrevision(prevision[i].matiere,prevision[i].coef,prevision[i].note); } } } }, }, homePage : { run : function() { }, }, util : { parseFloat : function(num){ return parseFloat(num.replace(",",".")); } } }; ZP.main(); })(jQuery);