reporte_reprobados_old.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. <?php
  2. require_once("../include/constantes.php");
  3. require_once("../include/bd_pdo.php");
  4. require_once("../classes/ValidaSesion.php");
  5. require_once("../classes/MainMenu.php");
  6. require_once("../include/util.php");
  7. require_once("./include/charts_util.php");
  8. $menu = 12;
  9. $submenu = 123;
  10. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  11. $objSesion = new ValidaSesion($pdo, $submenu, GEMA);
  12. if(!$objSesion->tieneAcceso()){
  13. $objSesion->terminaSesion();
  14. }
  15. $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="es" prefix="og: http://ogp.me/ns#">
  19. <head>
  20. <title>GEMA - Facultad de Ingeniería</title>
  21. <meta charset="utf-8">
  22. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  23. <link rel="icon" type="image/png" href="../img/favicon.png" />
  24. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  25. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  26. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  27. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  28. </head>
  29. <body>
  30. <div>
  31. <?php
  32. //--- Objeto que pinta menu
  33. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, GEMA);//usr, menu, pdo, sist
  34. $menuObj->printMenu();
  35. $filter_periodo = $_SESSION["periodo_id"];
  36. if(isset($_POST["plan"]) && is_numeric($_POST["plan"]) && trim($_POST["plan"]) != ""){
  37. $filter_plan = filter_input(INPUT_POST, "plan", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  38. }
  39. if(isset($_POST["sem"]) && is_numeric($_POST["sem"]) && trim($_POST["sem"]) != ""){
  40. $filter_sem = filter_input(INPUT_POST, "sem", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  41. }
  42. if(isset($_SESSION["nivel_id"], $_SESSION["periodo_id"]) && $_SESSION["nivel_id"] != "" && $_SESSION["periodo_id"] != ""){
  43. //Plan de estudios
  44. $stmt = $pdo->prepare('Select * from fs_planestudio(:nivel, NULL, NULL, true, 0, NULL)');
  45. $stmt->bindPAram(":nivel", $_SESSION["nivel_id"]);
  46. if(!$stmt->execute()){
  47. $errorDesc = "Ocurrió un error al cargar los planes de estudio";
  48. }else{
  49. $plan_rs = $stmt->fetchAll();
  50. }
  51. $stmt->closeCursor();
  52. }
  53. if(isset($filter_plan, $filter_sem)){
  54. $error = false;
  55. $prefijo = "";
  56. foreach($plan_rs as $plan){
  57. if($plan["PlanEstudio_id"] == $filter_plan)
  58. $prefijo = $plan["Carrera_prefijo"];
  59. break;
  60. }
  61. //Obtiene tipos de calificaciones
  62. $stmt = $pdo->prepare('Select * from fs_tipocalificacion(NULL) WHERE "TipoCalificacion_esEquivalencia" = false ');//no revalidadas
  63. if(!$stmt->execute()){
  64. $errorDesc = "Ocurrió un error al cargar los tipos de calificaciones";
  65. //print_r($stmt->errorInfo()); exit();
  66. $error = true;
  67. }else{
  68. $tipocalif_rs = $stmt->fetchAll();
  69. }
  70. $stmt->closeCursor();
  71. //materias por asignar
  72. $labelMateriasArr =array();
  73. $stmt = $pdo->prepare('Select * from fs_materiagrupo(:plan, :sem, NULL) WHERE "Area_hasAlerta" = true');
  74. $stmt->bindParam(":plan", $filter_plan);
  75. $stmt->bindParam(":sem", $filter_sem);
  76. if(!$stmt->execute()){
  77. $errorDesc = "Ocurrió un error al leer las materias del semestre.";
  78. print_r($stmt->errorInfo()); exit();
  79. $error = true;
  80. }else{
  81. $mat_rs = $stmt->fetchAll();
  82. foreach($mat_rs as $mat){
  83. $labelMateriasArr[$mat["Materia_id"]] = $mat["Materia_desc"];
  84. }
  85. $labelMateriasArr = removeKey($labelMateriasArr);
  86. }
  87. //------------
  88. //reporte por plan
  89. if(!$error){
  90. $stmt = $pdo->prepare('Select * from fs_reprobadas_plan(:periodo, NULL, false)');//sólo no revalidadas
  91. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  92. if(!$stmt->execute()){
  93. $error = true;
  94. $errorDesc = "Ocurrió un error al cargar las materias reprobadas por plan";
  95. print_r($stmt->errorInfo()); exit();
  96. }else{
  97. $rs = $stmt->fetchAll();
  98. $planArr = array();
  99. $plan_last = -1;
  100. $califArr = array();
  101. $p = 0;
  102. foreach($rs as $plan){
  103. if($plan_last != $plan["PlanEstudio_id"]){
  104. if($plan_last != -1){
  105. $planArr[$p]["califArr"]=$califArr;
  106. $p++;
  107. }
  108. $plan_last = $plan["PlanEstudio_id"];
  109. $califArr = array();
  110. foreach($tipocalif_rs as $tipo){
  111. $califArr[$tipo["TipoCalificacion_id"]] = array("total"=>0, "reprobadas"=>0);
  112. }
  113. }
  114. $planArr[$p] = array("id" => $plan["PlanEstudio_id"], "desc" =>$plan["Carrera_desc"]." ".$plan["PlanEstudio_desc"], "califArr"=>array());
  115. $califArr[$plan["TipoCalificacion_id"]] = array("total"=>$plan["Calificacion_total"], "reprobadas"=>$plan["Calificacion_reprobadas"]);
  116. }
  117. if($plan_last != -1){
  118. $planArr[$p]["califArr"]=$califArr;
  119. }
  120. unset($p);
  121. }
  122. $stmt->closeCursor();
  123. }
  124. //reporte por grupos
  125. if(!$error){
  126. $stmt = $pdo->prepare('Select * from fs_reprobadas_grupo(:periodo, :plan, :sem)');//sólo ord
  127. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  128. $stmt->bindParam(":plan", $filter_plan);
  129. $stmt->bindParam(":sem", $filter_sem);
  130. if(!$stmt->execute()){
  131. $errorDesc = "Ocurrió un error al cargar las materias reprobadas por grupo";
  132. $error = true;
  133. //print_r($stmt->errorInfo()); exit();
  134. }else{
  135. $rs = $stmt->fetchAll();
  136. $gpoArr = array();
  137. $grupo_last = -1;
  138. $califArr = array();
  139. $g = 0;
  140. foreach($rs as $grupo){
  141. if($grupo_last != $grupo["Grupo_id"]){
  142. if($grupo_last != -1){
  143. $gpoArr[$g]["califArr"]=removeKey($califArr);
  144. $g++;
  145. }
  146. $grupo_last = $grupo["Grupo_id"];
  147. $califArr = array();
  148. foreach($mat_rs as $mat){
  149. $califArr[$mat["Materia_id"]] = array("total"=>0, "reprobadas"=>0, "data"=>0, "materia"=>$mat["Materia_desc"]);
  150. }
  151. }
  152. $gpoArr[$g] = array("id" => $grupo["Grupo_id"], "desc" =>$grupo["Grupo_desc"]." ".$grupo["Carrera_prefijo"], "califArr"=>array());
  153. $califArr[$grupo["Materia_id"]] = array("total"=>$grupo["Calificacion_total"], "reprobadas"=>$grupo["Calificacion_reprobadas"],
  154. "data"=>($grupo["Calificacion_total"]==0)?0:round($grupo["Calificacion_reprobadas"]*100/$grupo["Calificacion_total"]), "materia"=>$grupo["Materia_desc"]);
  155. }
  156. if($grupo_last != -1){
  157. $gpoArr[$g]["califArr"]=removeKey($califArr);
  158. }
  159. unset($g);
  160. }
  161. $stmt->closeCursor();
  162. }
  163. //reporte por materias
  164. if(!$error){
  165. $stmt = $pdo->prepare('Select * from fs_reprobadas_materia(:periodo, :plan, :sem, false)');//sólo no revalidadas
  166. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  167. $stmt->bindParam(":plan", $filter_plan);
  168. $stmt->bindParam(":sem", $filter_sem);
  169. if(!$stmt->execute()){
  170. $errorDesc = "Ocurrió un error al cargar las materias reprobadas por grupo";
  171. $error = true;
  172. //print_r($stmt->errorInfo()); exit();
  173. }else{
  174. $rs = $stmt->fetchAll();
  175. $matArr = array();
  176. $tipo_last = -1;
  177. $califArr = array();
  178. $m = 0;
  179. foreach($rs as $grupo){
  180. if($tipo_last != $grupo["TipoCalificacion_id"]){
  181. if($tipo_last != -1){
  182. $matArr[$m]["califArr"]=removeKey($califArr);
  183. $m++;
  184. }
  185. $tipo_last = $grupo["TipoCalificacion_id"];
  186. $califArr = array();
  187. foreach($mat_rs as $mat){
  188. $califArr[$mat["Materia_id"]] = array("total"=>0, "reprobadas"=>0, "data"=>0, "materia"=>$mat["Materia_desc"]);
  189. }
  190. }
  191. $matArr[$m] = array("id" => $grupo["TipoCalificacion_id"], "desc" =>$grupo["TipoCalificacion_desc"], "califArr"=>array());
  192. $califArr[$grupo["Materia_id"]] = array("total"=>$grupo["Calificacion_total"], "reprobadas"=>$grupo["Calificacion_reprobadas"],
  193. "data"=>($grupo["Calificacion_total"]==0)?0:round($grupo["Calificacion_reprobadas"]*100/$grupo["Calificacion_total"]), "materia"=>$grupo["Materia_desc"]);
  194. }
  195. if($tipo_last != -1){
  196. $matArr[$m]["califArr"]=removeKey($califArr);
  197. }
  198. unset($m);
  199. }
  200. $stmt->closeCursor();
  201. }
  202. }
  203. ?>
  204. <main class="container-fluid content marco">
  205. <h2 class="mb-5">Materias no acreditadas <small> <span class="fas fa-angle-double-right"></span> <em><?php echo $_SESSION["periodo_desc"];?></em></small></h2>
  206. <?php include_once("../include/errorMessage.php"); ?>
  207. <div class="row justify-content-md-center my-4">
  208. <div class="col-12 col-md-8">
  209. <?php
  210. $stmt = $pdo->prepare('Select * from fs_periodousuario(:usr)');
  211. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  212. if(!$stmt->execute()){
  213. $errorDesc = "Ocurrió un error al cargar los datos de los periodos.";
  214. }else
  215. $periodoTmp_rs = $stmt->fetchAll();
  216. $stmt->closeCursor();
  217. $stmt = null;
  218. if(isset($periodoTmp_rs)){ ?>
  219. <form action="./action/periodousuario_update.php" method="post" id="formaPeriodo">
  220. <input type="hidden" name="target" value="<?php echo basename(__FILE__);?>">
  221. <div class="form-group row">
  222. <label for="periodo" class="col-4 col-form-label text-right">Cambiar de periodo</label>
  223. <div class="col-8">
  224. <select id="periodo" name="id" required="required" class="form-control">
  225. <?php if($_SESSION["periodo_id"] == ""){ ?>
  226. <option value="">Selecciona un periodo</option>
  227. <?php
  228. }
  229. foreach($periodoTmp_rs as $periodo){
  230. ?>
  231. <option value="<?php echo $periodo["Periodo_id"];?>" <?php if(isset($_SESSION["periodo_id"]) && $_SESSION["periodo_id"] == $periodo["Periodo_id"]){ echo 'selected="selected"';} ?>><?php echo $periodo["Nivel_desc"]." - ".$periodo["Periodo_desc"]." (".$periodo["EstadoPeriodo_desc"].")";?> </option>
  232. <?php }?>
  233. </select>
  234. </div>
  235. </div>
  236. </form>
  237. <?php
  238. unset($periodoTmp_rs);
  239. } ?>
  240. </div>
  241. </div>
  242. <!-- Filtro -->
  243. <div class="row justify-content-md-center">
  244. <div class="col-12 col-md-6">
  245. <div class="form-box">
  246. <form action="reporte_reprobados.php" method="post">
  247. <div class="form-group row">
  248. <label for="filter_plan" class="col-4 col-form-label">Programa académico *</label>
  249. <div class="col-8 filter-info">
  250. <select id="filter_plan" name="plan" class="form-control plan">
  251. <?php
  252. foreach($plan_rs as $plan) {?>
  253. <option value="<?php echo $plan["PlanEstudio_id"];?>" <?php if(isset($filter_plan) && $filter_plan == $plan["PlanEstudio_id"]){ echo "selected='selected'";}?>><?php echo $plan["Carrera_desc"]." ".$plan["PlanEstudio_desc"];?></option>
  254. <?php } ?>
  255. </select>
  256. </div>
  257. </div>
  258. <div class="form-group row">
  259. <label for="filter_sem" class="col-4 col-form-label">Semestre *</label>
  260. <div class="col-8 filter-info">
  261. <select id="filter_sem" name="sem" class="form-control semestre">
  262. <option value="1">1</option>
  263. </select>
  264. </div>
  265. </div>
  266. <div class="form-group row mt-4">
  267. <div class="col-12 text-center">
  268. <button type="submit" class="btn btn-secondary btn-ver" ><?php echo $ICO["buscar"]; ?> Ver</button>
  269. </div>
  270. </div>
  271. </form>
  272. </div>
  273. </div>
  274. </div>
  275. <!-- end Filtro -->
  276. <?php
  277. if(isset($planArr, $gpoArr, $matArr)){//sin datos no se ve nada
  278. ?>
  279. <!--<div class="row">
  280. <div class="col-8">
  281. </div>
  282. <div class="col-4 text-right">
  283. <form action="./export/xls_asistenciasprofesor.php" target="_blank" method="post">
  284. <p class="text-right"><button type="submit" class="btn btn-secondary"><i class="fas fa-external-link-alt"></i> Generar xls</button></p>
  285. </form>
  286. </div>
  287. </div>-->
  288. <form action="./export/xls_reprobados.php" target="_blank" method="post">
  289. <input type="hidden" name="plan" value="<?php echo $filter_plan;?>">
  290. <input type="hidden" name="sem" value="<?php echo $filter_sem;?>">
  291. <input type="hidden" name="prefijo" value="<?php echo $prefijo;?>">
  292. <p class="pb-4"><button type="submit" class="btn btn-sm btn-secondary float-right"><?php echo $ICO["descargar"];?> Descargar datos</button></p>
  293. </form>
  294. <!-- Grafica 1 -->
  295. <div class="row justify-content-md-center">
  296. <div class="col-12 col-md-10">
  297. <div class="card my-4">
  298. <div class="card-header">
  299. <h4>Programas académicos</h4>
  300. </div>
  301. <div class="card-body">
  302. <div>
  303. <canvas id="graficaPlan" height="500"></canvas>
  304. </div>
  305. </div>
  306. <div class="card-footer" style="font-size:80%">
  307. Estas calificaciones se obtienen a partir de los planes de estudio a los que están registrados los <b>alumnos</b>.
  308. </div>
  309. </div>
  310. </div>
  311. </div>
  312. <!-- Grafica 3 -->
  313. <input type="hidden" name="plan" value="<?php echo $filter_plan;?>">
  314. <input type="hidden" name="sem" value="<?php echo $filter_sem;?>">
  315. <div class="row justify-content-md-center">
  316. <div class="col-12 col-md-10">
  317. <div class="card my-4">
  318. <div class="card-header">
  319. <h4>Materias</h4>
  320. </div>
  321. <div class="card-body">
  322. <div>
  323. <canvas id="graficaMateria" height="500"></canvas>
  324. </div>
  325. </div>
  326. <div class="card-footer" style="font-size:80%">
  327. Estas calificaciones se obtienen a partir de los planes de estudio de las <b>materias</b>.
  328. </div>
  329. </div>
  330. </div>
  331. </div>
  332. <!-- Grafica 2 -->
  333. <input type="hidden" name="plan" value="<?php echo $filter_plan;?>">
  334. <input type="hidden" name="sem" value="<?php echo $filter_sem;?>">
  335. <div class="row justify-content-md-center">
  336. <div class="col-12 col-md-10">
  337. <div class="card my-4">
  338. <div class="card-header">
  339. <h4>Grupos (sólo Ordinarios)</h4>
  340. </div>
  341. <div class="card-body">
  342. <div>
  343. <canvas id="graficaGrupo" height="500"></canvas>
  344. </div>
  345. </div>
  346. <div class="card-footer" style="font-size:80%">
  347. Estas calificaciones se obtienen a partir de los planes de estudio de las <b>materias</b>.
  348. </div>
  349. </div>
  350. </div>
  351. </div>
  352. <?php } //fin hay datos ?>
  353. </main>
  354. <!--- FOOTER--->
  355. <?php require_once("../include/footer.php"); ?>
  356. </div>
  357. <script src="../js/jquery.min.js"></script>
  358. <script src="../js/bootstrap/popper.min.js"></script>
  359. <script src="../js/bootstrap/bootstrap.min.js"></script>
  360. <script src="../js/sidebarmenu.js"></script>
  361. <script src="../js/chart.min.js"></script>
  362. <script>
  363. function loadSemestre(planObj, semObj){//revisa el plan y cambia la cantidad de semestres máximos
  364. var semOld = semObj.val();
  365. if(planObj.val() != ""){
  366. $.ajax({
  367. url: './action/planestudios_semestres.php',
  368. type: 'POST',
  369. dataType: 'json',
  370. data: {
  371. id: planObj.val(),
  372. },
  373. success: function(result) {
  374. if(result["error"]!= "" && result["error"] !== undefined){
  375. $("#errorBox").collapse('show');
  376. $("#errorBox_text").html(result["error"]);
  377. $('#messageBox')[0].scrollIntoView({ block: "end" });
  378. }else{
  379. semObj.find('option:gt('+(result["semestres"])+')').remove();//si sobran, borra
  380. //si faltan, agrega
  381. for(var i = semObj.find('option').length+1; i <= result["semestres"]; i++){
  382. semObj.append($("<option></option>").attr("value",i).text(i));
  383. if(i == <?php echo isset($filter_sem)?$filter_sem:"-1";?>)
  384. $("#filter_sem").find("option:last").prop("selected", true);
  385. }
  386. }
  387. },
  388. error: function(jqXHR, textStatus, errorThrown ){
  389. $("#errorBox").collapse('show');
  390. $("#errorBox_text").html(errorThrown);
  391. $('#messageBox')[0].scrollIntoView({ block: "end" });
  392. }
  393. });//
  394. }
  395. }
  396. <?php
  397. if(isset($planArr, $gpoArr, $matArr)){//sin periodo no se ve nada
  398. ?>
  399. var dataRaw = [
  400. [],
  401. [],
  402. [],
  403. ]
  404. var options_line = {
  405. scales: {
  406. xAxes: [{
  407. ticks: {beginAtZero: true},
  408. }],
  409. yAxes: [{
  410. display: true,
  411. ticks: {min:0, max:100, stepSize:10, beginAtZero: true},
  412. scaleLabel: {display: true,labelString: '% No aprobados'}
  413. }],
  414. },
  415. tooltips: {
  416. callbacks: { label: function(tooltipItem, data) { console.log(data); return "No aprobados "+data.datasets[tooltipItem.datasetIndex].label+": "+tooltipItem.yLabel+"%"; } }
  417. },
  418. maintainAspectRatio: false
  419. };
  420. Chart.pluginService.register({
  421. afterDraw: function(chartInstance) {
  422. var ctx = chartInstance.chart.ctx;
  423. // render the value of the chart above the bar
  424. ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
  425. ctx.textAlign = 'center';
  426. ctx.textBaseline = 'bottom';
  427. ctx.fillStyle = chartInstance.chart.config.options.defaultFontColor;
  428. chartInstance.data.datasets.forEach(function (dataset) {
  429. for (var i = 0; i < dataset.data.length; i++) {
  430. var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model;
  431. if(dataset._meta[Object.keys(dataset._meta)[0]].hidden !== true){
  432. if(dataset.data_raw !== undefined){
  433. ctx.fillText(dataset.data_raw[i], model.x, model.y - 5);
  434. }else{
  435. ctx.fillText(dataset.data[i]+"%", model.x, model.y - 5);
  436. }
  437. }
  438. }
  439. });
  440. }
  441. });
  442. function draw_graficaPlan(){
  443. var labels=[
  444. <?php foreach($planArr as $plan){
  445. print_label($plan["desc"]);
  446. //echo '"'.$plan["desc"].'", ';
  447. }?>];
  448. var data = {
  449. labels: labels,
  450. datasets: [
  451. <?php
  452. $i = 0;
  453. foreach($tipocalif_rs as $tipo){ ?>
  454. {
  455. label: "<?php echo $tipo["TipoCalificacion_desc"];?>",
  456. lineTension:0,
  457. pointHitRadius : 12,
  458. fill: false,
  459. data: [
  460. <?php foreach($planArr as $plan){
  461. if($plan["califArr"][$tipo["TipoCalificacion_id"]]["total"] > 0)
  462. $data = round($plan["califArr"][$tipo["TipoCalificacion_id"]]["reprobadas"] * 100 / $plan["califArr"][$tipo["TipoCalificacion_id"]]["total"]);
  463. else $data = 0;
  464. echo $data.", ";
  465. }?>
  466. ],
  467. data_raw: [
  468. <?php foreach($planArr as $plan){
  469. //if($plan["califArr"][$tipo["TipoCalificacion_id"]]["total"] > 0)
  470. $data = $plan["califArr"][$tipo["TipoCalificacion_id"]]["reprobadas"]." de ".$plan["califArr"][$tipo["TipoCalificacion_id"]]["total"];
  471. //else $data = "0 de 0";
  472. echo "'".$data."', ";
  473. }?>
  474. ],
  475. backgroundColor: "<?php echo $colorTipo_arr[$i];?>",
  476. borderColor: "<?php echo $colorTipoFull_arr[$i];?>",
  477. borderWidth: 2
  478. },
  479. <?php
  480. $i++;
  481. } ?>
  482. ]
  483. };
  484. new Chart($("#graficaPlan"), {
  485. type: 'bar',
  486. data: data,
  487. options: options_line
  488. });
  489. }
  490. function draw_graficaGrupo(){
  491. var labels=[
  492. <?php foreach($labelMateriasArr as $label){
  493. print_label($label);
  494. //echo '"'.$label.'", ';
  495. }?>];
  496. var data = {
  497. labels: labels,
  498. datasets: [
  499. <?php
  500. $i = 0;
  501. foreach($gpoArr as $gpo){ ?>
  502. {
  503. label: "<?php echo $gpo["desc"];?>",
  504. lineTension:0,
  505. pointHitRadius : 12,
  506. fill: false,
  507. data: [
  508. <?php foreach($gpo["califArr"] as $mat){
  509. echo $mat["data"].", ";
  510. }?>
  511. ],
  512. data_raw: [
  513. <?php foreach($gpo["califArr"] as $mat){
  514. $data = $mat["reprobadas"]." de ".$mat["total"];
  515. echo "'".$data."', ";
  516. }?>
  517. ],
  518. backgroundColor: "<?php echo $colorMat_arr[$i];?>",
  519. borderColor: "<?php echo $colorMatFull_arr[$i];?>",
  520. borderWidth: 2
  521. },
  522. <?php
  523. $i++;
  524. } ?>
  525. ]
  526. };
  527. new Chart($("#graficaGrupo"), {
  528. type: 'bar',
  529. data: data,
  530. options: options_line
  531. });
  532. }
  533. function draw_graficaMat(){
  534. var labels=[
  535. <?php foreach($labelMateriasArr as $label){
  536. print_label($label);
  537. //echo '"'.$label.'", ';
  538. }?>];
  539. var data = {
  540. labels: labels,
  541. datasets: [
  542. <?php
  543. $i = 0;
  544. foreach($matArr as $tipo){ ?>
  545. {
  546. label: "<?php echo $tipo["desc"];?>",
  547. lineTension:0,
  548. pointHitRadius : 12,
  549. fill: false,
  550. data: [
  551. <?php foreach($tipo["califArr"] as $mat){
  552. echo $mat["data"].", ";
  553. }?>
  554. ],
  555. data_raw: [
  556. <?php foreach($tipo["califArr"] as $mat){
  557. $data = $mat["reprobadas"]." de ".$mat["total"];
  558. echo "'".$data."', ";
  559. }?>
  560. ],
  561. backgroundColor: "<?php echo $colorTipo_arr[$i];?>",
  562. borderColor: "<?php echo $colorTipoFull_arr[$i];?>",
  563. borderWidth: 2
  564. },
  565. <?php
  566. $i++;
  567. } ?>
  568. ]
  569. };
  570. new Chart($("#graficaMateria"), {
  571. type: 'bar',
  572. data: data,
  573. options: options_line
  574. });
  575. }
  576. <?php } ?>
  577. $(document).ready(function(){
  578. <?php
  579. if(isset($planArr, $gpoArr, $matArr)){
  580. ?>
  581. draw_graficaPlan();
  582. draw_graficaGrupo();
  583. draw_graficaMat();
  584. <?php } ?>
  585. loadSemestre( $("#filter_plan"), $("#filter_sem")) ;
  586. $("#periodo").change(function() {
  587. if($(this).val() != ""){
  588. $("#formaPeriodo").submit();
  589. }
  590. });
  591. $("#filter_plan").change(function(){
  592. loadSemestre( $(this), $("#filter_sem")) ;
  593. });
  594. });
  595. </script>
  596. </body>
  597. </html>