EcoleDirecte Tools

Numérotation de la liste des élèves

  1. // ==UserScript==
  2. // @name EcoleDirecte Tools
  3. // @namespace Violentmonkey Scripts
  4. // @match https://*.ecoledirecte.com/*
  5. // @version 1.16
  6. // @author OB - Education Nationale / Académie de Bordeaux - FRANCE
  7. // @icon https://www.ecoledirecte.com/assets/images/logoEcoleDirecte.png
  8. // @grant GM_addStyle
  9. // @run-at document-end
  10. // @description Numérotation de la liste des élèves
  11. // @license MIT
  12. // @date 26/04/2023
  13. // ==/UserScript==
  14.  
  15. GM_addStyle(".numbers{background-color: rgb(255, 255, 128);}");
  16.  
  17. function ConsolePrint(message)
  18. {
  19. var startTime = new Date();
  20. console.log('[ED-Tools] '+ startTime.toLocaleTimeString() + ' ' + message) ;
  21. }
  22.  
  23. ConsolePrint('RUN');
  24.  
  25. function isNumeric(value) {
  26. return /^-?\d+$/.test(value);
  27. }
  28.  
  29. function SetStudentsNumbers(classname) {
  30. var index = 1;
  31. var success = 0;
  32. var lastname = "";
  33.  
  34. ConsolePrint("SetStudentsNumbers search : " + classname);
  35.  
  36. names = document.getElementsByClassName(classname)
  37. for (var i = 0; i < names.length; i++)
  38. {
  39. name = names[i].innerText;
  40. if( !isNumeric(name[0]) && name.length != 0 && name != lastname)
  41. {
  42. ConsolePrint("SetStudentsNumbers IN [" + classname + "] FOUNDED [" + name + "] INDEX " + index);
  43. code = names[i].innerHTML.replace("&nbsp; ","");
  44. names[i].innerHTML = "<span class='numbers'>" + ('0000'+index).slice(-2) + "</span>&nbsp;" + code;
  45. lastname = name;
  46. index++;
  47. success++;
  48. }
  49. }
  50.  
  51. return(success);
  52. }
  53.  
  54. var global_lastname = "";
  55.  
  56. function SetConseilDeClasse()
  57. {
  58. /* Ne fonctionne pas (Ajax) SetStudentsNumbers("nom-eleve"); // Conseil de classe : class="nom-eleve selected" */
  59. /* La liste est dans un ul de class "ng-star-inserted" */
  60.  
  61. var lis = document.getElementsByClassName("nav-stacked") // .getElementsByTagName("li");
  62. for (var i = 0; i < lis.length; ++i) {
  63. // do something with items[i], which is a <li> element
  64. // A suivre
  65. ConsolePrint("nav-stacked ->"+lis[i]);
  66. }
  67.  
  68. names = document.getElementsByClassName("nom-eleve");
  69. for (var i = 0; i < names.length; i++)
  70. {
  71. name = names[i].innerText;
  72. if( name.length > 1 && name != global_lastname )
  73. {
  74. ConsolePrint("CONSEIL DE CLASSE DE [" + name+"]");
  75. global_lastname = name;
  76. }
  77. }
  78. }
  79.  
  80. function SearchStudentsList() {
  81.  
  82. if ( window.location.href.indexOf("CarnetDeNotes/notes") > -1) { /* CarnetDeNotes = validé */
  83. SetStudentsNumbers("open-eleve");
  84. }
  85. else if ( window.location.href.indexOf("CarnetDeNotes/competencesLSU") > -1) { /* Compétences = validé*/
  86. SetStudentsNumbers("nom-eleve cliquable");
  87. }
  88. else if ( window.location.href.indexOf("CarnetDeNotes") > -1) { /* Appréciations, Composantes */
  89. SetStudentsNumbers("nom-eleve cliquable");
  90. }
  91. else if ( window.location.href.indexOf("ConseilDeClasse") > -1) { /* Conseil de classe */
  92. // SetConseilDeClasse();
  93. }
  94. }
  95.  
  96. /* Application */
  97. if (self == top) { /* run only in the top frame. we do our own frame parsing */
  98. ConsolePrint('STARTED');
  99. setInterval(SearchStudentsList, 3000);
  100. }

QingJ © 2025

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