periodos.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import { createApp } from 'https://unpkg.com/petite-vue?module';
  2. const app = createApp({
  3. periodos: [],
  4. niveles: [],
  5. messages: [],
  6. addMessage(title, text, type) {
  7. this.messages.push({ title, text, type, timestamp: new Date() });
  8. },
  9. async sendRequest(action, periodo_id, data) {
  10. const response = await fetch('action/periodos.php', {
  11. method: 'PUT',
  12. headers: {
  13. 'Content-Type': 'application/json'
  14. },
  15. body: JSON.stringify({
  16. action: action,
  17. periodo_id: periodo_id,
  18. ...data
  19. })
  20. });
  21. return await response.json();
  22. },
  23. async changeNivel(periodo, nivel_id) {
  24. if (periodo.nivel_id === nivel_id)
  25. return;
  26. const result = await this.sendRequest('changeNivel', periodo.periodo_id, { nivel_id: nivel_id });
  27. if (result.success) {
  28. this.addMessage('Nivel cambiado', `El nivel del periodo ${periodo.periodo_nombre} ha sido cambiado a ${this.niveles.find((nivel) => nivel.nivel_id === nivel_id)?.nivel_nombre}`, 'success');
  29. periodo.nivel_id = nivel_id;
  30. periodo.nivel = this.niveles.find((nivel) => nivel.nivel_id === nivel_id)?.nivel_nombre || '';
  31. }
  32. else {
  33. this.addMessage('Error al cambiar nivel', `No se pudo cambiar el nivel del periodo ${periodo.periodo_nombre}`, 'danger');
  34. }
  35. },
  36. async changeFechaInicio(periodo, fecha_inicio) {
  37. const result = await this.sendRequest('changeFechaInicio', periodo.periodo_id, { periodo_fecha_inicio: fecha_inicio });
  38. if (result.success) {
  39. this.addMessage('Fecha de inicio cambiada', `La fecha de inicio del periodo ${periodo.periodo_nombre} ha sido cambiada a ${fecha_inicio}`, 'success');
  40. periodo.periodo_fecha_inicio = fecha_inicio;
  41. }
  42. else {
  43. this.addMessage('Error al cambiar fecha de inicio', `No se pudo cambiar la fecha de inicio del periodo ${periodo.periodo_nombre}`, 'danger');
  44. }
  45. },
  46. async changeFechaFin(periodo, fecha_fin) {
  47. const result = await this.sendRequest('changeFechaFin', periodo.periodo_id, { periodo_fecha_fin: fecha_fin });
  48. if (result.success) {
  49. this.addMessage('Fecha de fin cambiada', `La fecha de fin del periodo ${periodo.periodo_nombre} ha sido cambiada a ${fecha_fin}`, 'success');
  50. periodo.periodo_fecha_fin = fecha_fin;
  51. }
  52. else {
  53. this.addMessage('Error al cambiar fecha de fin', `No se pudo cambiar la fecha de fin del periodo ${periodo.periodo_nombre}`, 'danger');
  54. }
  55. },
  56. async updatePeriodo(periodo) {
  57. const result = await this.sendRequest('updatePeriodo', periodo.periodo_id, {
  58. periodo_nombre: periodo.periodo_nombre,
  59. id_periodo_sgu: periodo.id_periodo_sgu,
  60. periodo_clave: periodo.periodo_clave,
  61. });
  62. if (result.success) {
  63. this.addMessage('Periodo actualizado', `El periodo ${periodo.periodo_nombre} ha sido actualizado`, 'success');
  64. }
  65. else {
  66. this.addMessage('Error al actualizar periodo', `No se pudo actualizar el periodo ${periodo.periodo_nombre}`, 'danger');
  67. }
  68. },
  69. async createPeriodo(newPeriodo) {
  70. if (newPeriodo.periodo_nombre === null || newPeriodo.nivel_id === null || newPeriodo.periodo_fecha_inicio === null || newPeriodo.periodo_fecha_fin === null) {
  71. this.addMessage('Error al crear periodo', `No se pudo crear el periodo ${newPeriodo.periodo_nombre}`, 'danger');
  72. return;
  73. }
  74. const result = await fetch('action/periodos.php', {
  75. method: 'POST',
  76. headers: {
  77. 'Content-Type': 'application/json'
  78. },
  79. body: JSON.stringify(newPeriodo)
  80. }).then(res => res.json());
  81. if (result.success) {
  82. this.addMessage('Periodo creado', `El periodo ${newPeriodo.periodo_nombre} ha sido creado`, 'success');
  83. this.periodos;
  84. Object.keys(newPeriodo).forEach(key => newPeriodo[key] = null);
  85. newPeriodo.nivel_id = '';
  86. this.periodos = await fetch('action/periodos.php').then(res => res.json());
  87. }
  88. else {
  89. this.addMessage('Error al crear periodo', `No se pudo crear el periodo ${newPeriodo.periodo_nombre}`, 'danger');
  90. }
  91. },
  92. async deletePeriodo(periodo) {
  93. const response = await fetch('action/periodos.php', {
  94. method: 'DELETE',
  95. headers: {
  96. 'Content-Type': 'application/json'
  97. },
  98. body: JSON.stringify({
  99. periodo_id: periodo.periodo_id,
  100. })
  101. });
  102. const result = await response.json();
  103. if (result.success) {
  104. this.addMessage('Periodo eliminado', `El periodo ${periodo.periodo_nombre} ha sido eliminado`, 'success');
  105. this.periodos = this.periodos.filter((p) => p.periodo_id !== periodo.periodo_id);
  106. }
  107. else {
  108. this.addMessage('Error al eliminar periodo', `No se pudo eliminar el periodo ${periodo.periodo_nombre}`, 'danger');
  109. }
  110. },
  111. async mounted() {
  112. this.periodos = await fetch('action/periodos.php').then(res => res.json());
  113. this.niveles = await fetch('action/nivel.php').then(res => res.json());
  114. }
  115. }).mount('#app');