templates/school/index.html.twig line 1

Open in your IDE?
  1. {% extends 'layout/frontEndLayout.html.twig' %}
  2. {% block name %}
  3. Welcome to LiveEdu
  4. {% endblock %}
  5. {% block body %}
  6. <div id="carouselExampleControls" class="carousel slide bs-slider box-slider" data-ride="carousel" data-pause="hover" data-interval="false">
  7. <!-- Indicators -->
  8. <ol class="carousel-indicators">
  9. <li data-target="#carouselExampleControls" data-slide-to="0" class="active"></li>
  10. <li data-target="#carouselExampleControls" data-slide-to="1"></li>
  11. <li data-target="#carouselExampleControls" data-slide-to="2"></li>
  12. </ol>
  13. <div class="carousel-inner" role="listbox" data-ride="carousel"
  14. data-interval="5000">
  15. <div class="carousel-item active">
  16. <div id="home" class="first-section" style="background-image:url({{ asset('assets/images/slider-01.jpg') }});">
  17. <div class="dtab">
  18. <div class="container">
  19. <div class="row">
  20. <div class="col-md-12 col-sm-12 text-right">
  21. <div class="big-tagline">
  22. <h2>
  23. Bilingual Secondary Institute BETHESDA implements
  24. <strong>
  25. LiveEdu
  26. </strong>
  27. </h2>
  28. </div>
  29. </div>
  30. </div>
  31. <!-- end row -->
  32. <br/>
  33. <br/>
  34. <br/>
  35. <br/>
  36. <br/>
  37. <br/>
  38. <br/>
  39. <br/>
  40. <br/>
  41. <br/>
  42. <br/>
  43. <br/>
  44. <br/>
  45. <br/>
  46. </div>
  47. <!-- end container -->
  48. </div>
  49. </div>
  50. <!-- end section -->
  51. </div>
  52. <div class="carousel-item">
  53. <div id="home" class="first-section" style="background-image:url({{ asset('assets/images/slider-02.jpg') }});">
  54. <div class="dtab">
  55. <div class="container">
  56. <div class="row">
  57. <div class="col-md-12 col-sm-12 text-left">
  58. <div class="big-tagline">
  59. <h2 data-animation="animated zoomInRight">
  60. LiveEdu
  61. <strong>
  62. software online services
  63. </strong>
  64. </h2>
  65. </div>
  66. </div>
  67. </div>
  68. <!-- end row -->
  69. <br/>
  70. <br/>
  71. <br/>
  72. <br/>
  73. <br/>
  74. <br/>
  75. <br/>
  76. <br/>
  77. <br/>
  78. <br/>
  79. <br/>
  80. <br/>
  81. <br/>
  82. <br/>
  83. </div>
  84. <!-- end container -->
  85. </div>
  86. </div>
  87. <!-- end section -->
  88. </div>
  89. <div class="carousel-item">
  90. <div id="home" class="first-section" style="background-image:url({{ asset('assets/images/slide_04.PNG') }});">
  91. <div class="dtab">
  92. <div class="container">
  93. <div class="row">
  94. <div class="col-md-12 col-sm-12 text-left">
  95. <div class="big-tagline">
  96. <h2 data-animation="animated zoomInRight">
  97. <strong>
  98. LiveEdu adds transparancy
  99. </strong>
  100. for quality education
  101. </h2>
  102. </div>
  103. </div>
  104. </div>
  105. <!-- end row -->
  106. <br/>
  107. <br/>
  108. <br/>
  109. <br/>
  110. <br/>
  111. <br/>
  112. <br/>
  113. <br/>
  114. <br/>
  115. <br/>
  116. <br/>
  117. <br/>
  118. <br/>
  119. <br/>
  120. </div>
  121. <!-- end container -->
  122. </div>
  123. </div>
  124. <!-- end section -->
  125. </div>
  126. <!-- Left Control -->
  127. <a class="new-effect carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
  128. <span class="fa fa-angle-left" aria-hidden="true"></span>
  129. <span class="sr-only">
  130. Previous
  131. </span>
  132. </a>
  133. <!-- Right Control -->
  134. <a class="new-effect carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
  135. <span class="fa fa-angle-right" aria-hidden="true"></span>
  136. <span class="sr-only">
  137. Next
  138. </span>
  139. </a>
  140. </div>
  141. </div>
  142. <section class="card">
  143. <article class="row card-body" id="officialExams">
  144. <h1 class="card-title text-center">Taux de reussite aux examens officiels session {{year.code}}</h1>
  145. {% for key in results|keys %}
  146. <div class="col-6 col-md-3 " >
  147. <canvas id={{key}} height="120" data-exam-objects=" {{results[key]}}"></canvas>
  148. </div>
  149. {% endfor %}
  150. </article>
  151. </section>
  152. {% endblock %}
  153. {% block javascripts %}
  154. {{ parent() }}
  155. <script type="text/javascript">
  156. //Generate a random color
  157. const randomRgbColor = (type) => {
  158. if (type === "ECHEC") {
  159. return "rgb(255,0,0)"; // rouge pur
  160. } else {
  161. // Couleurs aléatoires pour les autres
  162. let r = Math.floor(Math.random() * 256);
  163. let g = Math.floor(Math.random() * 256);
  164. let b = Math.floor(Math.random() * 256);
  165. return `rgb(${r},${g},${b})`;
  166. }
  167. ;
  168. };
  169. const colors=[], datasets = [];
  170. const troisiemeAllExamsGraph = $("#troisiemeall"), troisiemeEspExamsGraph = $("#troisiemeesp") ,
  171. premiereCExamsGraph = $("#premiere_c"), premiereDExamsGraph = $("#premiere_d") ,
  172. premiereAEspExamsGraph = $("#premierea4esp"), premiereAAllExamsGraph = $("#premierea4all"),
  173. terminaleCExamsGraph = $("#terminalec"), terminaleDExamsGraph = $("#terminale_d") ,
  174. terminaleAEspExamsGraph = $("#terminaleaesp"), terminaleAAllExamsGraph = $("#terminaleaall"),
  175. formvArtExamsGraph = $("#formvarts"), formvScienceExamsGraph = $("#formvscience")
  176. ;
  177. const troisiemeAllExamsData = troisiemeAllExamsGraph.data('examObjects'), troisiemeEspExamsData = troisiemeEspExamsGraph.data('examObjects'),
  178. premiereCExamsData = premiereCExamsGraph.data('examObjects'), premiereDExamsData = premiereDExamsGraph.data('examObjects'),
  179. premiereAEspExamsData = premiereAEspExamsGraph.data('examObjects'), premiereAAllExamsData = premiereAAllExamsGraph.data('examObjects'),
  180. terminaleCExamsData = terminaleCExamsGraph.data('examObjects'), terminaleDExamsData = terminaleDExamsGraph.data('examObjects'),
  181. terminaleAEspExamsData = terminaleAEspExamsGraph.data('examObjects'), terminaleAAllExamsData = terminaleAAllExamsGraph.data('examObjects'),
  182. formvArtExamsData = formvArtExamsGraph.data('examObjects'),formvScienceExamsData = formvScienceExamsGraph.data('examObjects');
  183. // Draw the graph of official exam results
  184. // Draw the graph of official exam results
  185. const drawCanvas = (examData, examGraph, name) => {
  186. // Parser une seule fois au lieu de 3
  187. const parsedData = JSON.parse(examData);
  188. // Convertir explicitement en nombres
  189. const values = parsedData["mentionCountCategories"].map(v => Number(v));
  190. // Vérifier si des valeurs sont invalides
  191. console.log("➡️ Graph:", name, "Labels:", parsedData["mentionCategories"], "Values:", values);
  192. // Générer les couleurs
  193. const colors = parsedData["mentionCategories"].map(cat => randomRgbColor(cat));
  194. // Créer le graphe
  195. const examChart = new Chart(examGraph, {
  196. type: "doughnut",
  197. data: {
  198. labels: parsedData["mentionCategories"],
  199. datasets: [{
  200. data: values,
  201. backgroundColor: colors
  202. }]
  203. },
  204. options: {
  205. cutout: "70%",
  206. plugins: {
  207. title: {
  208. display: true,
  209. text: name,
  210. font: {
  211. size: 16,
  212. family: 'Helvetica Neue',
  213. },
  214. position: 'bottom',
  215. }
  216. }
  217. }
  218. });
  219. };
  220. // Disposition des canVas dans le frontEnd
  221. drawCanvas(terminaleDExamsData,terminaleDExamsGraph , "Terminale D" );
  222. drawCanvas(terminaleCExamsData,terminaleCExamsGraph , "Terminale C" );
  223. drawCanvas(terminaleAAllExamsData,terminaleAAllExamsGraph , "Terminale A All" );
  224. drawCanvas(terminaleAEspExamsData,terminaleAEspExamsGraph , "Terminale A Esp" );
  225. drawCanvas(premiereAAllExamsData,premiereAAllExamsGraph , "Premiere A All" );
  226. drawCanvas(premiereAEspExamsData,premiereAEspExamsGraph , "Premiere A Esp" );
  227. drawCanvas(premiereCExamsData,premiereCExamsGraph , "Premiere C" );
  228. drawCanvas(premiereDExamsData,premiereDExamsGraph , "Premiere D" );
  229. drawCanvas(troisiemeAllExamsData,troisiemeAllExamsGraph , "Troisieme All" );
  230. drawCanvas(troisiemeEspExamsData,troisiemeEspExamsGraph , "Troisieme Esp" );
  231. drawCanvas(formvArtExamsData,formvArtExamsGraph , "FORM 5 Art(.../5)" );
  232. drawCanvas(formvScienceExamsData,formvScienceExamsGraph , "FORM 5 Science(../5)" );
  233. </script>
  234. {% endblock javascripts %}