consultar_horarios.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // get this script tag
  2. const script = document.currentScript as HTMLScriptElement;
  3. // get data-facultad attribute from script tag
  4. const dataFacultad = script.getAttribute("data-facultad") as string;
  5. const table = document.querySelector("table") as HTMLTableElement;
  6. // hide the table
  7. table.style.display = "none";
  8. disableDatalist("#filter_grupo");
  9. const buscarGrupo = async () => {
  10. // Add loading animation in the button
  11. const btn = document.querySelector("#btn-buscar") as HTMLButtonElement;
  12. btn.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Cargando...';
  13. btn.disabled = true;
  14. const carrera = document.querySelector("#filter_carrera") as HTMLInputElement;
  15. const grupo = document.querySelector("#filter_grupo") as HTMLInputElement;
  16. const periodo = document.querySelector("#periodo") as HTMLInputElement;
  17. console.log(`Carrera: ${carrera}, Grupo: ${grupo}`);
  18. if (carrera.value == "" || grupo.value == "") {
  19. triggerMessage("El nombre del grupo y la carrera son requeridos", "Faltan campos");
  20. // Remove loading animation in the button
  21. btn.innerHTML = '<i class="ing-buscar ing"></i> Buscar';
  22. btn.disabled = false;
  23. return;
  24. }
  25. const formData = new FormData();
  26. formData.append("carrera", carrera.value);
  27. formData.append("grupo", grupo.value);
  28. formData.append("periodo", periodo.value);
  29. formData.append('facultad', dataFacultad);
  30. try {
  31. const response = await fetch("api/horario.php", {
  32. method: "POST",
  33. body: formData
  34. }).then(res => res.json());
  35. } catch (error) {
  36. triggerMessage("Error al cargar el horario", "Error");
  37. }
  38. // Remove loading animation in the button
  39. btn.innerHTML = '<i class="ing-buscar ing"></i> Buscar';
  40. btn.disabled = false;
  41. }
  42. // on click the li element, inside datalist #dlcarera
  43. const dlcarreras = document.querySelectorAll("#dlcarrera li");
  44. dlcarreras.forEach(li => {
  45. li.addEventListener("click", async () => {
  46. // get the data-id from the li element
  47. const carrera= li.getAttribute("data-id") as string;
  48. const facultad = dataFacultad;
  49. const periodo = document.querySelector("#periodo") as HTMLSelectElement;
  50. const formData = new FormData();
  51. formData.append("carrera", carrera);
  52. formData.append("facultad", facultad);
  53. formData.append("periodo", periodo.value);
  54. try {
  55. const {
  56. status,
  57. grupos
  58. } = await fetch("action/action_grupo.php", {
  59. method: "POST",
  60. body: formData
  61. }).then(res => res.json());
  62. if (status != "success") {
  63. throw new Error("Error al cargar los grupos");
  64. }
  65. const dlgrupo = document.querySelector("#dlgrupo ul") as HTMLUListElement;
  66. const prompt = document.querySelector("#dlgrupo .datalist-input") as HTMLInputElement;
  67. dlgrupo.innerHTML = "";
  68. grupos.forEach(grupo => {
  69. const li = document.createElement("li");
  70. // data-id is the id of the group
  71. li.setAttribute("data-id", grupo);
  72. li.textContent = grupo;
  73. dlgrupo.appendChild(li);
  74. });
  75. // write Seleccionar grupo
  76. prompt.textContent = "Seleccionar grupo";
  77. disableDatalist("#filter_grupo", false);
  78. } catch (error) {
  79. triggerMessage("Error al cargar los grupos", "Error");
  80. console.log(error);
  81. }
  82. });
  83. });