client.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Cliente REST</title>
  7. <script type="module" src="../js/client.js" defer></script>
  8. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"
  9. integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
  10. <link rel="stylesheet" href="../css/indivisa.css">
  11. </head>
  12. <body>
  13. <header class="container-fluid bg-dark text-white text-center">
  14. Página de Cliente REST
  15. </header>
  16. <main class="container" @vue:mounted="mounted">
  17. <div v-for="error in store.errors" class="alert alert-danger alert-dismissible fade show" role="alert">
  18. <strong>Error!</strong> {{error}}
  19. <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  20. </div>
  21. <div class="row">
  22. <div class="col-12">
  23. <h1>Periodos activos</h1>
  24. </div>
  25. </div>
  26. <ul class="list-group">
  27. <li href="#" class="list-group-item" v-for="(periodo, index) in store.periodosV1" :key="periodo.IdPeriodo">
  28. <!-- v1
  29. IdNivel: number;
  30. IdPeriodo: number;
  31. NombreNivel: string;
  32. NombrePeriodo: string;
  33. -->
  34. <div class="row">
  35. <span class="badge bg-secondary">{{index}}</span>
  36. <h2 class="text-center">
  37. Información
  38. </h2>
  39. <div class="col-md-3">
  40. <strong>ID Nivel:</strong> {{periodo.IdNivel}}
  41. </div>
  42. <div class="col-md-3">
  43. <strong>ID Periodo:</strong> {{periodo.IdPeriodo}}
  44. </div>
  45. <div class="col-md-3">
  46. <strong>Nombre Nivel:</strong> {{periodo.NombreNivel}}
  47. </div>
  48. <div class="col-md-3">
  49. <strong>Nombre Periodo:</strong> {{periodo.NombrePeriodo}}
  50. </div>
  51. </div>
  52. <!--
  53. FechaFin: string;
  54. FechaInicio: string;
  55. IdPeriodo: number;
  56. -- info(IdPeriodo) --
  57. -->
  58. <div class="row mt-2" v-if="complete(periodo.IdPeriodo)">
  59. <h2 class="text-center">
  60. Fechas
  61. </h2>
  62. <div class="col-md-2">
  63. <strong>Fecha Inicio:</strong> {{info(periodo.IdPeriodo).FechaInicio}}
  64. </div>
  65. <div class="col-md-2">
  66. <strong>Fecha Fin:</strong> {{info(periodo.IdPeriodo).FechaFin}}
  67. </div>
  68. </div>
  69. <div v-if="!periodo.in_db" class="row mt-2">
  70. <!--
  71. PeriodoV2
  72. ClaveCarrera: string;
  73. NombreCarrera: string;
  74. PeriodoV1
  75. IdNivel: number;
  76. -->
  77. <div class="col-md-12">
  78. <button class="btn btn-primary float-end" @click="store.addPeriodo(periodo)"
  79. :disabled="!complete(periodo.IdPeriodo)">
  80. Agregar
  81. <i class="ing ing-mas"></i>
  82. </button>
  83. </div>
  84. </div>
  85. <div v-else class="row mt-2">
  86. <div class="col-md-12">
  87. <button class="btn btn-success float-end disabled">
  88. Agregado
  89. <i class="ing-aceptar"></i>
  90. </button>
  91. </div>
  92. </div>
  93. <div class="row mt-2">
  94. <div class="col-md-12">
  95. <button class="btn btn-secondary float-end" @click="store.addCarreras(periodo.IdPeriodo)">
  96. Sincronizar Carreras
  97. <i class="ing ing-link"></i>
  98. </button>
  99. </div>
  100. </div>
  101. <div class="accordion mt-2">
  102. <div class="accordion-item">
  103. <h2 class="accordion-header">
  104. <button class="accordion-button collapsed" data-bs-toggle="collapse"
  105. :data-bs-target="`#collapse-${periodo.IdPeriodo}`">
  106. Horarios del periodo
  107. </button>
  108. </h2>
  109. <div :id="`collapse-${periodo.IdPeriodo}`" class="accordion-collapse collapse">
  110. <div class="accordion-body">
  111. <ul class="list-group">
  112. <li class="list-group-item"
  113. v-for="periodo in store.periodosV2.filter(periodov2 => periodov2.IdPeriodo === periodo.IdPeriodo)">
  114. <div class="row">
  115. <div class="col-md-3">
  116. <strong>Clave Carrera:</strong> {{periodo.ClaveCarrera}}
  117. </div>
  118. <div class="col-md-6">
  119. <strong>Nombre Carrera:</strong> {{periodo.NombreCarrera}}
  120. </div>
  121. <div class="col-md-3">
  122. <span class="badge float-end mx-1"
  123. :class="periodo.linked ?'bg-success':'bg-secondary'">
  124. <i class="ing-link"></i>
  125. </span>
  126. <span class="badge float-end mx-1"
  127. :class="periodo.in_db ?'bg-success':'bg-secondary'">
  128. <i class="ing-aceptar"></i>
  129. </span>
  130. </div>
  131. </div>
  132. </li>
  133. </ul>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </li>
  139. </ul>
  140. </main>
  141. <footer>
  142. </footer>
  143. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
  144. integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
  145. crossorigin="anonymous"></script>
  146. </body>
  147. </html>