123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // @ts-ignore Import module
- import { createApp, reactive } from 'https://unpkg.com/petite-vue?module';
- const webServices = {
- getPeriodosV1: async () => {
- try {
- const response = await fetch('periodos.v1.php');
- return await response.json();
- }
- catch (error) {
- console.log(error);
- return [];
- }
- },
- getPeriodosV2: async () => {
- try {
- const response = await fetch('periodos.v2.php');
- return await response.json();
- }
- catch (error) {
- console.log(error);
- return [];
- }
- }
- };
- const store = reactive({
- periodosV1: [],
- periodosV2: [],
- errors: [],
- fechas(idPeriodo) {
- const periodo = this.periodosV2.find((periodo) => periodo.IdPeriodo === idPeriodo);
- return {
- inicio: periodo ? periodo.FechaInicio : '',
- fin: periodo ? periodo.FechaFin : ''
- };
- },
- periodov1(idPeriodo) {
- return this.periodosV1.find((periodo) => periodo.IdPeriodo === idPeriodo);
- },
- periodov2(idPeriodo) {
- return this.periodosV2.filter((periodo) => periodo.IdPeriodo === idPeriodo);
- },
- async addPeriodo(periodo) {
- try {
- const result = await fetch('backend/periodos.php', {
- method: 'POST',
- body: JSON.stringify({
- ...periodo,
- ...this.fechas(periodo.IdPeriodo)
- }),
- headers: {
- 'Content-Type': 'application/json'
- }
- }).then((response) => response.json());
- if (result.success) {
- this.periodosV1 = this.periodosV1.map((periodoV1) => {
- if (periodoV1.IdPeriodo === periodo.IdPeriodo) {
- periodoV1.in_db = true;
- }
- return periodoV1;
- });
- return result;
- }
- else {
- this.errors.push(result.message);
- }
- }
- catch (error) {
- this.errors.push(error);
- }
- },
- async addCarreras(idPeriodo) {
- try {
- const periodoV1 = this.periodov1(idPeriodo);
- const periodoV2 = this.periodov2(idPeriodo);
- const data = periodoV2.map(({ ClaveCarrera, NombreCarrera }) => ({
- ClaveCarrera: ClaveCarrera,
- NombreCarrera: NombreCarrera,
- IdNivel: periodoV1.IdNivel,
- }));
- const result = await fetch('backend/carreras.php', {
- method: 'POST',
- body: JSON.stringify(data),
- headers: {
- 'Content-Type': 'application/json'
- }
- }).then((response) => response.json());
- if (result.success) {
- await webServices.getPeriodosV1().then((periodosV1) => {
- this.periodosV1 = periodosV1;
- });
- await webServices.getPeriodosV2().then((periodosV2) => {
- this.periodosV2 = periodosV2;
- });
- }
- }
- catch (error) {
- this.errors.push(error);
- }
- }
- });
- createApp({
- store,
- info(IdPeriodo) {
- const periodo = store.periodosV2.find((periodo) => periodo.IdPeriodo === IdPeriodo &&
- periodo.FechaInicio != '' && periodo.FechaFin != '');
- return periodo;
- },
- complete(IdPeriodo) {
- const info = this.info(IdPeriodo);
- return info !== undefined;
- },
- mounted: async () => {
- await webServices.getPeriodosV1().then((periodosV1) => {
- store.periodosV1 = periodosV1;
- });
- await webServices.getPeriodosV2().then((periodosV2) => {
- store.periodosV2 = periodosV2;
- });
- }
- }).mount();
|