123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932 |
- <?php
- require_once("../include/constantes.php");
- require_once("../include/bd_pdo.php");
- require_once("../classes/ValidaSesion.php");
- require_once("../classes/MainMenu.php");
- require_once("../include/util.php");
- $menu = 11;
- $submenu = 115;
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, $submenu, GEMA);
- if (!$objSesion->tieneAcceso()) {
- $objSesion->terminaSesion();
- }
- $objSesion->validaPeriodoUsuario(); //si no tiene periodo manda a main
- if (!$objSesion->puedeEditar()) {
- header("Location: main.php?error=3");
- exit();
- }
- //Obtiene plan de estudios
- $stmt = $pdo->prepare('SELECT * from fs_planestudio(:nivel, NULL, NULL, true, NULL, NULL) WHERE "Carrera_esComun" IS NOT true');
- $stmt->bindParam(":nivel", $_SESSION["nivel_id"]);
- if (!$stmt->execute()) {
- print_r($stmt->errorInfo());
- $errorDesc = "Ocurrió un error al cargar los planes de estudios";
- } else
- $plan_rs = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
- if (count($plan_rs) == 0) {
- header("Location: planestudios.php?error=4");
- exit();
- }
- //Obtiene carrera
- $stmt = $pdo->prepare('SELECT * from fs_carrera(NULL, :nivel, false)');
- $stmt->bindParam(":nivel", $_SESSION["nivel_id"]);
- if (!$stmt->execute()) {
- print_r($stmt->errorInfo());
- $errorDesc = "Ocurrió un error al cargar los planes de estudios";
- } else
- $carrera_rs = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
- if (count($plan_rs) == 0) {
- header("Location: planestudios.php?error=4");
- exit();
- }
- ?>
- <!DOCTYPE html>
- <html lang="es" prefix="og: http://ogp.me/ns#">
- <head>
- <title>GEMA - Facultad de Ingeniería</title>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <link rel="icon" type="image/png" href="../img/favicon.png" />
- <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
- <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
- <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand(); ?>" type="text/css">
- <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
- <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
- <link rel="stylesheet" href="../css/calendar.css" type="text/css">
- </head>
- <body>
- <div>
- <?php
- //--- Objeto que pinta menu
- $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, GEMA, "Reporte de insignias de alumnos"); //usr, menu, pdo, sist
- $menuObj->printMenu();
- //--Manejo de errores y mensajes de exito
- if (isset($_GET["error"]) && is_numeric($_GET["error"])) {
- switch ($_GET["error"]) {
- case 0:
- $errorDesc = "No se reciberon los datos para generar la insignia.";
- break;
- case 1:
- $errorDesc = "No tienes permiso de realizar esta acción.";
- break;
- case 3:
- $errorDesc = "Ningún alumno seleccionado tiene insignias.";
- break;
- }
- }
- ?>
- <main class="container-fluid content marco">
- <div class="row ">
- <div class="col-12">
- <?php $show_all=true; include("../include/periodoCambio.php"); ?>
- <form action="./export/pdf_insignias_borrador.php" method="post" target="_blank" id="forma">
- <div class="form-box form-box">
- <?php include_once("../include/errorMessage.php"); ?>
- <p class="text-center">Busca los alumnos a los que desees generar su reporte de insignias.</p>
- <div class="form-group row">
- <label for="alumnos" class="col-4 col-form-label">Alumnos *</label>
- <div class="col-6 col-sm-4">
- <select multiple="multiple" class="form-control" name="alumnos[]" id="alumnos" size="4">
- </select>
- <div class="invalid-feedback" id="feedback1">Debes agregar al menos 1 alumno</div>
- </div>
- <div class="col-2 col-sm-4">
- <button type="button" class="btn btn-outline-primary btn-sm col-8" data-toggle="modal" data-target="#modal" data-tipo="1">
- <?php echo $ICO["mas"]; ?> Agregar a alumnos
- </button>
- <button type="button" class="btn btn-outline-danger mt-2 btn-sm col-8" id="btn-quitar">
- <?php echo $ICO["borrar"]; ?> Quitar seleccionados
- </button>
-
- <button type="button" class="btn btn-outline-danger mt-2 btn-sm col-8" onclick="limpiarAlumnos()">
- <?php echo $ICO["borrar"]; ?> Quitar Todos
- </button>
-
- </div>
- </div>
- </div>
- </form>
- </div>
- </div>
- <div class="row text-center justify-content-center">
- <p class="col-2"><b>Con insignias:</b> <span id="cuenta-alumnos-insignias">0</span></p>
- <p class="col-2"><b>Sin insignias:</b> <span id="cuenta-alumnos-sin_insignias">0</span></p>
- <p class="col-2"><b>Total: </b><span id="total-alumnos">0</span></p>
- </div>
- <p class="text-center">
- <!-- Button trigger modal -->
- <button type="button" class="btn btn-outline-primary" data-toggle="modal" data-target="#consultaModal">
- <?php echo $ICO["ojo"]; ?> Vista previa alumnos
- </button>
- <button type="button" class="btn btn-primary" id="trigger-pdf-modal">
- <?php echo $ICO["descargar"]; ?> Generar PDF
- </button>
- <button type="button" class="btn btn-primary" id="btn-send">
- <?php echo $ICO["lista"]; ?> Generar borrador
- </button>
- </p>
- </main>
- <!--- FOOTER--->
- <?php require_once("../include/footer.php"); ?>
- <!-- Modal de query -->
- <div class=" modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h4 class="col-12 modal-title text-center"><span id="modalLabel">Consultar insignias de los alumnos</span>
- <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
- </h4>
- </div>
- <form action="#" method="post" id="formaModal">
- <div class="modal-body">
- <nav class="d-flex justify-content-center">
- <div class="nav nav-tabs" id="nav-tab" role="tablist">
- <a class="nav-item nav-link active" id="nav-individual-tab" data-toggle="tab" href="#nav-individual" role="tab" aria-controls="nav-individual" aria-selected="true">Alumno individual</a>
- <a class="nav-item nav-link" id="nav-grupal-tab" data-toggle="tab" href="#nav-grupal" role="tab" aria-controls="nav-grupal" aria-selected="false">Alumnos grupal</a>
- </div>
- </nav>
- <div class="tab-content" id="nav-tabContent">
- <div class="tab-pane fade show active" id="nav-individual" role="tabpanel" aria-labelledby="nav-individual-tab">
- <p>Busca alumnos por nombre y/o clave para agregarlos al reporte.</p>
- <div class="form-box">
- <div class="form-group row">
- <label for="nombre" class="col-4 col-form-label">Nombre</label>
- <div class="col-8">
- <input id="nombre" name="nombre" type="text" class="form-control" maxlength="50">
- </div>
- </div>
- <div class="form-group row">
- <label for="clave" class="col-4 col-form-label">Clave</label>
- <div class="col-8">
- <input id="clave" name="clave" type="text" class="form-control" maxlength="7">
- </div>
- </div>
- <div class="form-group row">
- <label for="plan" class="col-4 col-form-label">Carrera</label>
- <div class="col-8">
- <div class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">Ver todas</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <li data-id="">Ver todos</li>
- <?php foreach ($plan_rs as $plan) { ?>
- <li data-id="<?php echo $plan["PlanEstudio_id"]; ?>"><?php echo $plan["Carrera_desc"] . " " . $plan["PlanEstudio_desc"]; ?></li>
- <?php } ?>
- </ul>
- <input type="hidden" id="plan" name="plan" value="">
- </div>
- </div>
- </div>
- </div>
- <div class="form-group row">
- <div class="offset-4 col-8">
- <button type="button" class="btn btn-outline-primary" id="buscaBtn"><?php echo $ICO["aceptar"]; ?> Buscar</button>
- <button type="button" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"]; ?> Cancelar</button>
- </div>
- </div>
- <div class="row collapse" id="addedBox">
- <div class="col-12">
- <div class="alert alert-success">
- <button type="button" class="close" data-toggle="collapse" href="#addedBox" aria-controls="addedBox" aria-expanded="true">×</button>
- <span class="ing-aceptar ing-fw float-left" style="font-size:2em"></span>
- <p class="pt-1" style="margin-left:60px" id="addedBox_text">El usuario se asignó correctamente al reporte</p>
- </div>
- </div>
- </div>
- <div class="alert alert-secondary d-none" role="alert" id="ya_dentro">
- <p>
- El usuario ya se encuentra en el reporte
- </p>
- </div>
- <div id="resultados" class="d-none">
- <p>Solo se mostrarán los primeros <strong><?php echo MAX_ROWS; ?></strong> resultados.</p>
- <table class="table table-sm table-striped table-white">
- <thead class="thead-dark">
- <tr>
- <th style="width:30px">Estado</th>
- <th>Clave</th>
- <th>Nombre</th>
- <th>Programa</th>
- <th>Acciones</th>
- </tr>
- </thead>
- <tbody id="table-result">
- <tr class="alumno-row">
- <td class="res-estado text-center"><span class="res-icon"><?php echo $ICO_LG["circulo"]; ?></span></td>
- <td class="res-clave text-center"></td>
- <td class="res-nombre"></td>
- <td class="res-carrera"></td>
- <td class="res-agrega text-center"><button type="button" onclick="" class="btn btn-outline-primary btn-sm btn-agrega-nombre"><?php echo $ICO["mas"]; ?></button></td>
- </tr>
- </tbody>
- </table>
- </div>
- <p id="sin_alumnos" class="d-none text-danger text-center">No hay alumnos que coincidan con los parámetros de búsqueda</p>
- </div>
- <div class="tab-pane fade" id="nav-grupal" role="tabpanel" aria-labelledby="nav-grupal-tab">
- <p>Agrega a grupos al reporte buscándolos por semestre y carrera.</p>
- <div class="form-box">
- <div class="form-group row">
- <label for="semestre" class="col-4 col-form-label">Semestre</label>
- <div class="col-8">
- <div class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">1</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <?php for ($semestre = 1; $semestre <= 9; $semestre++) { ?>
- <li data-id="<?php echo $semestre; ?>"><?php echo $semestre; ?></li>
- <?php } ?>
- </ul>
- <input type="hidden" id="semestre" name="semestre" value="1">
- </div>
- </div>
- </div>
- <div class="form-group row">
- <label for="plan" class="col-4 col-form-label">Carrera</label>
- <div class="col-8">
- <div class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">Ver todos</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <li data-id="">Ver todos</li>
- <?php foreach ($carrera_rs as $carrera) { ?>
- <li data-id="<?php echo $carrera["Carrera_id"]; ?>"><?php echo $carrera["Carrera_desc"]; ?></li>
- <?php } ?>
- </ul>
- <input type="hidden" id="carrera" name="carrera" value="">
- </div>
- </div>
- </div>
- </div>
- <div class="form-group row">
- <div class="offset-4 col-8">
- <button type="button" class="btn btn-outline-primary" id="asignarBtn"><?php echo $ICO["aceptar"]; ?> Asignar</button>
- <button type="button" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"]; ?> Cancelar</button>
- </div>
- </div>
- </div>
- </div>
- </div>
- </form>
- </div>
- </div>
- </div>
- <!-- Modal de consulta -->
- <div class="modal fade" id="consultaModal" tabindex="-1" role="dialog" aria-labelledby="consultaModalLabel" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h4 class="col-12 modal-title text-center"><span id="modalLabel">Vista previa de las insignias de cada alumno</span>
- <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
- </h4>
- </div>
- <div class="modal-body">
- <!-- Exctract selected alumnos from select -->
- <div class="row">
- <div class="col-12">
- <div class="form-box">
- <div class="form-group row">
- <label for="alumnos" class="col-4 col-form-label">Alumnos</label>
- <div class="col-8">
- <div class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input" id="alumno_seleccionado">Seleccionar alumnos</div>
- <span class="ing-buscar icono"></span>
- <ul id="consultaDataList" style="display:none">
- </ul>
- <input type="hidden" id="alumnosVistaPrev" value="">
- </div>
- </div>
- </div>
- </div>
- <table class="table table-sm table-white d-none" id="vista_previa">
- <thead class="thead-dark">
- <tr>
- <th style="width: 120px;">Tipo</th>
- <th>Insignia</th>
- </tr>
- </thead>
- <tbody></tbody>
- </table>
- <div class="alert alert-secondary d-none" id="sin_insignias">
- <p>El alumno no tiene insignias asignadas</p>
- </div>
- <div class="alert alert-secondary d-none" id="sin_alumnos_con_insignias">
- <p>No hay ningún alumno con insignias asignadas</p>
- </div>
- <div class="alert alert-dark d-none" role="alert" id="sin_alumnos_vista">
- <p>No hay ningún alumno en el recuadro</p>
- </div>
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar vista previa</button>
- </div>
- </div>
- </div>
- </div>
- <!--- Modal del PDF -->
- <div class="modal fade" id="pdfModal" tabindex="-1" role="dialog" aria-labelledby="pdfModalLabel" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h4 class="col-12 modal-title text-center"><span id="modalLabel">Asignar insignia a alumnos</span>
- <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
- </h4>
- </div>
- <div class="modal-body">
- <form action="./export/pdf_insignias.php" method="post" target="_blank" id="forma-modal">
- <div class="form-box">
- <div class="form-group row">
- <label for="fecha_carta" class="col-4 col-form-label">Fecha de la carta *</label>
- <div class="col-4">
- <input id="fecha_carta" name="fecha_carta" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php echo date("d/m/Y"); ?>">
- </div>
- </div>
- <div class="form-group row d-none">
- <label for="fecha_carta" class="col-4 col-form-label">Estilo de la carta</label>
- <div class="col-4">
- <div class="datalist datalist-select mb-1 w-100">
- <div class="datalist-input">Normal</div>
- <span class="ing-buscar icono"></span>
- <ul style="display:none">
- <li data-id="carta.css">Normal</li>
- <li data-id="carta-ea.css">Espacio ampliado</li>
- <li data-id="carta-er.css">Espacio reducido</li>
- </ul>
- <input type="hidden" id="estilo" name="estilo" value="carta.css">
- </div>
- </div>
- </div>
- <div class="form-group row align-items-center">
- <label for="fecha_carta" class="col-4 col-form-label">Espacio de la carta </label>
- <div class="col-4">
- <div class="slidecontainer">
- <input type="range" min="-10" max="100" value="10" class="slider w-100" id="tamano" step="10" name="tamano">
- </div>
- </div>
- <div class="col-4">
- <span id="espacio-px">10px</span>
- </div>
- </div>
- <div class="form-group row align-items-center" id="tipo_descarga">
- <label class="col-4 col-form-label">Tipo de descarga</label>
- <div class="col-3 ">
- <div class="form-check form-check-inline">
- <input class="form-check-input radio-lg radio_descarga" type="radio" id="multiple_no" name="inter" value="0" checked="true">
- <label for="multiple_no" class="col-form-label">Archivo único</label>
- </div>
- </div>
- <div class="col-4 ">
- <div class="form-check form-check-inline">
- <input class="form-check-input radio-lg radio_descarga" type="radio" id="multiple_si" name="inter" value="1">
- <label for="multiple_si" class="col-form-label">Archivos separados</label>
- </div>
- </div>
- </div>
- <div class="form-group row align-items-center">
- <label class="col-4 col-form-label" for="firmado">Firmado</label>
- <div class="col-3 ">
- <div class="form-check form-check-inline">
- <input class="form-check-input radio-lg" type="radio" id="normal" name="firmado" value="1">
- <label for="normal" class="col-form-label">Sí</label>
- </div>
- </div>
- <div class="col-4 ">
- <div class="form-check form-check-inline">
- <input class="form-check-input radio-lg" type="radio" id="sin_firmas" name="firmado" value="0" checked="true">
- <label for="sin_firmas" class="col-form-label">No</label>
- </div>
- </div>
- </div>
- </div>
- <div id="alumnos-clon"></div>
- </form>
- <!-- progress bar -->
- <div class="progress">
- <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
- <span class="sr-only">0%</span>
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-outline-primary" id="btn-pdf"><?php echo $ICO["descargar"]; ?> Descargar PDF</button>
- <button type="button" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"]; ?> Cerrar</button>
- </div>
- </div>
- </div>
- </div>
- <script src="../js/jquery.min.js"></script>
- <script src="../js/jquery-ui.js"></script>
- <script src="../js/datepicker-es.js"></script>
- <script src="../js/bootstrap/popper.min.js"></script>
- <script src="../js/bootstrap/bootstrap.min.js"></script>
- <script src="../js/sidebarmenu.js"></script>
- <script src="../js/datalist.js"></script>
- <script src="../js/util.js"></script>
- <script>
- var ListaAlumnos = [];
- var setIDAlumnos = new Set();
- setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
- $(document).on('click', '#dlPeriodo ul li', function() {
- $("#formaPeriodo").submit();
- });
- /***
- * Funciones para quitar a los alumnos del listado
- */
- // on supr key press
- $("#alumnos").on("keydown", function(e) {
- // count the number of selected items
- if (e.keyCode == 46) {
- e.preventDefault();
- $("#btn-quitar").click();
- }
- });
- $("#btn-quitar").click(function() {
- // get each selected option in an array
- var selectedOptions = $('#alumnos option:selected');
- // get the values of each selected option
- var selected = selectedOptions.length;
- if (selected == 0) return;
- var total = parseInt($("#total-alumnos").text());
- var sin_insignias_selected = 0;
- var con_insignias_selected = 0;
- var sin_insignias = parseInt($("#cuenta-alumnos-sin_insignias").text());
- var con_insignias = parseInt($("#cuenta-alumnos-insignias").text());
- selectedOptions.each(function() {
- var num = parseInt($(this).text().match(/\d+/g)[0]);
- if (num > 0) {
- con_insignias_selected++;
- } else {
- sin_insignias_selected++;
- }
- var id = $(this).val();
- // remove spaces from the value string
- id = id.replace(/\s/g, '');
- // remove the option from the select
- $(this).remove();
- // remove the value from the array
- setIDAlumnos.delete(parseInt(id));
- // remove from ListaAlumnos
- ListaAlumnos = ListaAlumnos.filter(function(el) {
- return el.id != id;
- });
- });
- $("#total-alumnos").text(total - selected);
- $("#cuenta-alumnos-insignias").text(con_insignias - con_insignias_selected);
- $("#cuenta-alumnos-sin_insignias").text(sin_insignias - sin_insignias_selected);
- $("#alumnos option:selected").remove();
- });
- $('#nombre').keydown(function(event) {
- if (event.keyCode == 13) {
- $("#buscaBtn").trigger('click');
- }
- });
- $('#clave').keydown(function(event) {
- if (event.keyCode == 13) {
- $("#buscaBtn").trigger('click');
- }
- });
- /***
- * Funciones para agregar a los alumnos al listado
- */
- // Checar que el alumno ya exista en la lista
- function enLista(lista, clave) {
- var found = false;
- $(lista + " option").each(function(index) {
- if (parseInt($(this).prop("value")) == parseInt(clave)) {
- found = true;
- }
- });
- return found;
- }
-
- // Agregar alumnos al listado
- function nuevaOption(id, nombre, clave, insignias) {
- if (!enLista("#alumnos", id)) {
- var html = `<option value="${id}"> ${insignias} [ ${clave} ] ${nombre} </option>`;
- // append to alumnos
- $("#alumnos").append(html);
- return true
- }
- return false;
- }
-
- // Checar que haya alumnos en el listado
- function validaAlumnos() {
- $(".is-invalid").removeClass("is-invalid");
- if ($("#alumnos option").length == 0) {
- $("#alumnos").addClass("is-invalid");
- return false
- }
- return true
- }
-
- $('#consultaModal').on('show.bs.modal', function(e) {
- $("#sin_alumnos_con_insignias").addClass("d-none");
- $("#sin_alumnos_vista").addClass("d-none");
- var alumnos_con_insignias = 0;
- // foreach alumno in ListaAlumnos
- $("table#vista_previa").addClass("d-none");
- $("#consultaModal #alumno_seleccionado").text("Seleccionar alumnos");
- $("#consultaDataList").empty();
- $("#consultaDataList").append(`<li data-id="-1">Seleccionar alumnos</li>`);
- if (ListaAlumnos.length == 0) {
- $("#sin_alumnos_vista").removeClass("d-none");
- return;
- }
- ListaAlumnos.forEach(function(alumno, index) {
- if (alumno.insignias.length > 0) {
- $("#consultaDataList").append(`<li data-id="${index}">[ ${alumno.clave} ] ${alumno.nombre}</li>`);
- alumnos_con_insignias++;
- }
- });
- if (alumnos_con_insignias == 0)
- $("#sin_alumnos_con_insignias").removeClass("d-none");
- });
- // On click dataList consulta Modal
- $('#consultaDataList').on('click', 'li', function() {
- $("#sin_insignias").addClass("d-none");
- var index = $(this).data('id');
- // if id is not undefined
- if (index < 0) {
- $("table#vista_previa").addClass("d-none");
- return;
- }
- var alumno = ListaAlumnos[index];
- if (alumno.insignias.length == 0) {
- $("table#vista_previa").addClass("d-none");
- $("#sin_insignias").removeClass("d-none");
- return;
- }
- $("table#vista_previa").removeClass("d-none");
- $("table#vista_previa tbody").empty();
- alumno.insignias.forEach(function(insignia) {
- var html = `<tr class="alumno-row">
- <td class="res-tipo text-center" style="color: ${insignia.Insignia_color}">
- <span class="res-icon">
- <?php echo $ICO_LG["circulo"]; ?>
- </span>
- </td>
- <td class="res-nombre">${insignia.Insignia_titulo}</td>
- </tr>`
- $("table#vista_previa tbody").append(html);
- });
- });
- function show_error(error) {
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(error);
- $('#messageBox')[0].scrollIntoView({
- block: "end"
- });
- }
- async function show_ok(message) {
- $("#successBox").collapse('show');
- $("#successBox_text").html(message);
- await setTimeout(function() {
- $("#successBox").collapse('hide');
- }, 3000);
- }
- $(document).on("click", ".btn-agrega-nombre", async function(event) {
- $("#ya_dentro").addClass("d-none");
- var id = $(this).data("id");
- var insignias = 0;
- let response = await fetch(`./action/alumno_insignias_select.php`, {
- method: "POST",
- body: JSON.stringify({
- id: id
- })
- }).then(response => response.json());
- if (response.error) {
- show_error(response.error);
- return;
- } else {
- var alumno = response.alumno;
- if (!setIDAlumnos.has(alumno.id)) {
- setIDAlumnos.add(alumno.id);
- ListaAlumnos.push(alumno);
- }
- insignias += alumno.insignias.length;
- }
- $("#total-alumnos").text(ListaAlumnos.length);
- var con_insignias = parseInt($("#cuenta-alumnos-insignias").text());
- var sin_insignias = parseInt($("#cuenta-alumnos-sin_insignias").text());
- if (insignias > 0)
- con_insignias++;
- else
- sin_insignias++;
- $("#cuenta-alumnos-insignias").text(con_insignias);
- $("#cuenta-alumnos-sin_insignias").text(sin_insignias);
- var nombre = $(this).data("nombre");
- if (nuevaOption(id, nombre, $(this).data("clave"), insignias)) {
- $(this).parents("tr").hide();
- } else {
- $("#ya_dentro").removeClass("d-none");
- }
- $("#nombre").val("");
- $("#clave").val("");
- setDatalistFirst("#plan");
- });
- $('#modal').on('show.bs.modal', function(e) {
- //$("#clave").focus();
- $("#nombre").val("");
- $("#clave").val("");
- setDatalistFirst("#plan");
- $("#addedBox").collapse('hide');
- });
- $(document).ready(function() {
- $(".date-picker").datepicker({
- dateFormat: "dd/mm/yy",
- changeMonth: true,
- changeYear: true
- });
- $(".date-picker").datepicker($.datepicker.regional["es"]);
- // $("#forma").prop("action", "./export/pdf_nombramientos.php");
- $("#multiple_no").prop("checked", true);
- $(".radio_descarga").change(function() {
- if ($(this).val() == 0) {
- $("#forma").prop("action", "./export/pdf_insignias.php");
- } else {
- $("#forma").prop("action", "./export/pdf_insignias_split.php");
- }
- });
- $("#trigger-pdf-modal").click(function() {
- $(".progress-bar").addClass("d-none");
- $("#alumnos option").prop("selected", true);
- if (validaAlumnos()) {
- $("#pdfModal").modal("show");
- }
- $('#alumnos option').prop("selected", false);
- });
- $("#btn-send").click(function() {
- $("#alumnos option").prop("selected", true);
- if (validaAlumnos()) $("#forma").submit();
- $('#alumnos option').prop("selected", false);
- });
- $("#buscaBtn").click(function() {
- $("#addedBox").collapse('hide');
- $(".is-invalid").removeClass("is-invalid");
- if (trim($("#nombre").val()) == "" && trim($("#clave").val()) == "") {
- $("#nombre").addClass("is-invalid");
- $("#clave").addClass("is-invalid");
- } else {
- var form = $("#formaModal");
- $.ajax({
- url: './action/alumnobusca_select.php',
- type: 'POST',
- dataType: 'json',
- data: {
- 'nombre': $("#nombre").val(),
- 'clave': $("#clave").val(),
- 'plan': $("#plan").val()
- },
- success: function(result) {
- if (result["error"] != "" && result["error"] !== undefined) {
- show_error(result["error"]);
- $("#modal").modal('hide');
- } else {
- //cargar tabla de alumnos
- var rows = $("#table-result .alumno-row").length; //cuenta accesos actuales
- $("#table-result .alumno-row").show(); //cuenta accesos actuales
- if (rows > result["alumno"].length) { //sobran
- //borrar renglones extra (rows - result.length) pero dejar al menos 1
- while (rows > result["alumno"].length && rows > 1) {
- $("#table-result .alumno-row:last-child").remove();
- rows--;
- }
- } else { //faltan
- // clone the rest of the rows
- for (var i = 0; i < (result["alumno"].length - rows); i++) {
- $("#table-result .alumno-row:first-child").clone(true).appendTo("#table-result");
- }
- }
- if (result["alumno"].length != 0) { //hay alumnos?
- $("#resultados").removeClass("d-none");
- $("#sin_alumnos").addClass("d-none");
- $("#table-result").children().each(function(index) {
- if (index < result["alumno"].length) { //llenar info
- $(this).removeClass("d-none");
- $(this).find(".res-estado").css("color", result["alumno"][index]["estado_color"]);
- $(this).find(".res-clave").html(result["alumno"][index]["claveULSA"]);
- $(this).find(".res-nombre").html(result["alumno"][index]["nombre"]);
- $(this).find(".res-carrera").html(result["alumno"][index]["carrera"]);
- $(this).find(".btn-agrega-nombre").data("id", result["alumno"][index]["id"]);
- $(this).find(".btn-agrega-nombre").data("nombre", result["alumno"][index]["nombre"]);
- $(this).find(".btn-agrega-nombre").data("clave", result["alumno"][index]["claveULSA"]);
- $(this).find(".btn-agrega-nombre").data("carrera", result["alumno"][index]["carrera"]);
- $(this).find(".btn-agrega-nombre").data("color", result["alumno"][index]["estado_color"]);
- }
- });
- } else { //sin alumnos
- $("#resultados").addClass("d-none");
- $("#sin_alumnos").removeClass("d-none");
- }
- }
- },
- error: function(jqXHR, textStatus, errorThrown) {
- show_error(errorThrown);
- }
- }); //ajax
- }
- });
- // Fetch from TEMP_insignias.php
- $('#asignarBtn').click(async function() {
- console.log("<?php echo $_SESSION['periodo_id']; ?>");
- console.log(`Semestre: ${$('#semestre').val()} y carrera: ${$('#carrera').val()}`);
- const response = await fetch("./action/alumnos_semestre_select.php", {
- method: "POST",
- body: JSON.stringify({
- semestre: $("#semestre").val(),
- carrera: $("#carrera").val()
- })
- })
- .then(response => {
- if (response.ok)
- return response.json();
- else
- throw new Error(`${response.status} ${response.statusText}`);
- })
- .catch(error =>
- show_error(error.message)
- );
- if (response.error !== undefined && response.error !== "")
- show_error(response.error);
- else {
- // comprobar que no haya duplicados
- response.alumnos.forEach(alumno => {
- if (!setIDAlumnos.has(alumno.id)) {
- setIDAlumnos.add(alumno.id);
- ListaAlumnos.push(alumno);
- }
- });
- console.log(response.alumnos);
- var count_alumnos = response.alumnos.length + parseInt($("#total-alumnos").text());
- var con_insignias = parseInt($("#cuenta-alumnos-insignias").text());
- var sin_insignias = parseInt($("#cuenta-alumnos-sin_insignias").text());
- // iterate over array
- response.alumnos.forEach(alumno => {
- if (alumno.insignias.length > 0) {
- con_insignias++;
- } else {
- sin_insignias++;
- }
- nuevaOption(alumno.id, alumno.nombre, alumno.clave, alumno.insignias.length)
- show_ok("Grupo agregado correctamente");
- });
- $("#total-alumnos").text(count_alumnos);
- $("#cuenta-alumnos-insignias").text(con_insignias);
- $("#cuenta-alumnos-sin_insignias").text(sin_insignias);
- }
- $("#modal").modal("hide");
- })
- });
- $("#btn-pdf").click(async function() {
- $("#alumnos-clon").html("");
- // clone without id
- var clon = $("#alumnos").clone().addClass("d-none").appendTo("#alumnos-clon");
- clon.prop("id", "alumnos-multiple-clon");
- $("#alumnos-multiple-clon option").prop("selected", true);
- // if multiple is checked
- if ($("#multiple_si").is(":checked")) {
- $(".progress-bar").removeClass("d-none");
- $(".progress-bar").css("width", "25%");
- $("#forma-modal").attr("action", "export/pdf_insignias_split.php");
- var form = $("#forma-modal");
- var url = form.attr('action');
- var data = form.serialize();
- $.ajax({
- type: 'POST',
- url: url,
- data: data,
- // gateway timeout error
- timeout: 60000,
- success: async function(data) {
- $(".progress-bar").css("width", "100%");
- console.log(data);
- await window.open("export/zip/cartas_insignias.zip", "_blank");
- }
- });
- } else {
- $("#forma-modal").attr("action", "./export/pdf_insignias.php");
- $("#forma-modal").submit();
- }
- });
- $("#tamano").change(function() {
- console.log($("#tamano").val());
- $("#espacio-px").html((parseInt($(this).val()) + 20) + "px");
- });
- function limpiarAlumnos() {
- $("#alumnos").html("");
- $("#total-alumnos").text("0");
- $("#cuenta-alumnos-insignias").text("0");
- $("#cuenta-alumnos-sin_insignias").text("0");
- ListaAlumnos = [];
- setIDAlumnos.clear();
- }
- </script>
- </body>
- </html>
|