utn-cli 2.1.45 → 2.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.css +44 -4
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.html +10 -8
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.ts +2 -2
- package/templates/frontend/src/app/Componentes/Nucleo/estadisticas-del-modulo/estadisticas-del-modulo.component.css +49 -2
- package/templates/frontend/src/app/Componentes/Nucleo/estadisticas-del-modulo/estadisticas-del-modulo.component.html +9 -2
- package/templates/frontend/src/app/Componentes/Nucleo/estadisticas-del-modulo/estadisticas-del-modulo.component.ts +2 -2
- package/templates/frontend/src/app/Componentes/Nucleo/gestion-actividad/gestion-actividad.component.css +10 -2
- package/templates/frontend/src/app/Componentes/Nucleo/manual/manual.component.css +76 -7
- package/templates/frontend/src/app/Componentes/Nucleo/manual/manual.component.html +25 -7
- package/templates/frontend/src/app/Componentes/Nucleo/manual/manual.component.ts +93 -16
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.component.css +71 -3
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.component.html +11 -8
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.ts +3 -3
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.css +67 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.html +21 -9
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.ts +1 -2
- package/templates/frontend/src/app/Componentes/Nucleo/panel-notificaciones/panel-notificaciones.component.css +209 -0
- package/templates/frontend/src/app/Componentes/Nucleo/panel-notificaciones/panel-notificaciones.component.html +45 -0
- package/templates/frontend/src/app/Componentes/Nucleo/panel-notificaciones/panel-notificaciones.component.ts +53 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.css +106 -13
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.html +43 -32
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.ts +4 -3
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-sugerencias/reporte-de-sugerencias.component.css +76 -21
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-sugerencias/reporte-de-sugerencias.component.html +23 -14
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-sugerencias/reporte-de-sugerencias.component.ts +4 -3
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-modulo/tarjeta-modulo.component.css +20 -10
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-modulo/tarjeta-modulo.component.html +17 -8
- package/templates/frontend/src/app/Paginas/Nucleo/accesibilidad/accesibilidad.component.css +20 -1
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.css +143 -48
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.html +60 -38
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.ts +28 -6
- package/templates/frontend/src/app/Paginas/Nucleo/declaracion-ia/declaracion-ia.component.css +4 -4
- package/templates/frontend/src/app/datos-globales.service.ts +2 -1
- package/templates/frontend/src/index.html +7 -0
- package/templates/frontend/src/styles.css +14 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
justify-content: space-between;
|
|
8
8
|
gap: 16px;
|
|
9
|
+
padding-bottom: 12px;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
.cabecera2-info {
|
|
@@ -24,6 +25,17 @@
|
|
|
24
25
|
.cabecera2 .titulo2 {
|
|
25
26
|
font-size: large;
|
|
26
27
|
font-weight: 600;
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: 6px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.titulo2-icono {
|
|
34
|
+
font-size: 1.6rem !important;
|
|
35
|
+
width: 1.6rem !important;
|
|
36
|
+
height: 1.6rem !important;
|
|
37
|
+
color: #002f6b;
|
|
38
|
+
flex-shrink: 0;
|
|
27
39
|
}
|
|
28
40
|
|
|
29
41
|
.cabecera2 .descripcion2 {
|
|
@@ -34,11 +46,11 @@
|
|
|
34
46
|
.filtro-tarjetas {
|
|
35
47
|
display: flex;
|
|
36
48
|
align-items: center;
|
|
37
|
-
gap:
|
|
49
|
+
gap: 6px;
|
|
38
50
|
background: #f0f4f8;
|
|
39
51
|
border: 1px solid #c4d0de;
|
|
40
|
-
border-radius:
|
|
41
|
-
padding:
|
|
52
|
+
border-radius: 4px;
|
|
53
|
+
padding: 8px 12px;
|
|
42
54
|
flex-shrink: 0;
|
|
43
55
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
44
56
|
}
|
|
@@ -49,9 +61,9 @@
|
|
|
49
61
|
}
|
|
50
62
|
|
|
51
63
|
.filtro-icono {
|
|
52
|
-
font-size:
|
|
53
|
-
width:
|
|
54
|
-
height:
|
|
64
|
+
font-size: 20px !important;
|
|
65
|
+
width: 20px !important;
|
|
66
|
+
height: 20px !important;
|
|
55
67
|
color: #6b7c8f;
|
|
56
68
|
flex-shrink: 0;
|
|
57
69
|
}
|
|
@@ -60,10 +72,10 @@
|
|
|
60
72
|
border: none;
|
|
61
73
|
background: transparent;
|
|
62
74
|
outline: none;
|
|
63
|
-
font-size:
|
|
75
|
+
font-size: 15px;
|
|
64
76
|
font-family: 'Roboto', sans-serif;
|
|
65
77
|
color: #333;
|
|
66
|
-
width:
|
|
78
|
+
width: 320px;
|
|
67
79
|
}
|
|
68
80
|
|
|
69
81
|
.filtro-input::placeholder {
|
|
@@ -125,10 +137,15 @@
|
|
|
125
137
|
color: #0b4fce;
|
|
126
138
|
}
|
|
127
139
|
|
|
140
|
+
.ColorBlanco:hover {
|
|
141
|
+
background-color: rgba(255, 255, 255, 0.15);
|
|
142
|
+
color: white;
|
|
143
|
+
}
|
|
144
|
+
|
|
128
145
|
/* Contenedor */
|
|
129
146
|
.contenedor {
|
|
130
147
|
flex-grow: 1;
|
|
131
|
-
padding:
|
|
148
|
+
padding: 16px 15px 0;
|
|
132
149
|
display: flex;
|
|
133
150
|
flex-direction: column;
|
|
134
151
|
background-color: aliceblue;
|
|
@@ -148,40 +165,97 @@
|
|
|
148
165
|
|
|
149
166
|
/* Contenido */
|
|
150
167
|
.contenido {
|
|
151
|
-
border: 3px solid #0b4fce;
|
|
152
168
|
border-radius: 15px;
|
|
153
169
|
padding: 20px;
|
|
154
|
-
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
|
155
170
|
background-color: white;
|
|
156
171
|
text-align: center;
|
|
157
172
|
}
|
|
158
173
|
|
|
159
|
-
/*
|
|
160
|
-
.titulo,
|
|
174
|
+
/* Header unificado */
|
|
161
175
|
.encabezado {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
176
|
+
display: flex;
|
|
177
|
+
justify-content: space-between;
|
|
178
|
+
align-items: center;
|
|
179
|
+
padding: 0 16px;
|
|
180
|
+
height: 52px;
|
|
181
|
+
background: linear-gradient(90deg, rgba(1, 33, 105, 1) 0%, rgba(63, 97, 171, 1) 100%);
|
|
182
|
+
color: white;
|
|
183
|
+
flex-shrink: 0;
|
|
184
|
+
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
|
|
166
185
|
}
|
|
167
186
|
|
|
168
|
-
.
|
|
169
|
-
font-size: 18px;
|
|
170
|
-
background-color: #002f6b;
|
|
171
|
-
color: white;
|
|
187
|
+
.encabezado-marca {
|
|
172
188
|
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
gap: 10px;
|
|
191
|
+
min-width: 0;
|
|
192
|
+
overflow: hidden;
|
|
173
193
|
}
|
|
174
194
|
|
|
175
|
-
.encabezado {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
195
|
+
.encabezado-logo {
|
|
196
|
+
height: 28px;
|
|
197
|
+
width: auto;
|
|
198
|
+
flex-shrink: 0;
|
|
199
|
+
filter: brightness(0) invert(1);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.encabezado-nombre-uni {
|
|
203
|
+
font-size: 16px;
|
|
204
|
+
font-weight: 700;
|
|
205
|
+
white-space: nowrap;
|
|
206
|
+
letter-spacing: 0.2px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.encabezado-nombre-corto {
|
|
210
|
+
display: none;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.encabezado-separador {
|
|
214
|
+
color: rgba(255, 255, 255, 0.35);
|
|
215
|
+
font-weight: 200;
|
|
216
|
+
font-size: 20px;
|
|
217
|
+
line-height: 1;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.encabezado-titulo-modulo {
|
|
221
|
+
font-size: 14px;
|
|
222
|
+
font-weight: 700;
|
|
223
|
+
color: rgba(255, 255, 255, 0.8);
|
|
224
|
+
white-space: nowrap;
|
|
225
|
+
overflow: hidden;
|
|
226
|
+
text-overflow: ellipsis;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.encabezado-acciones {
|
|
179
230
|
display: flex;
|
|
231
|
+
align-items: center;
|
|
232
|
+
gap: 2px;
|
|
233
|
+
flex-shrink: 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.encabezado-divisor-vertical {
|
|
237
|
+
width: 1px;
|
|
238
|
+
height: 20px;
|
|
239
|
+
background-color: rgba(255, 255, 255, 0.25);
|
|
240
|
+
margin: 0 6px;
|
|
180
241
|
}
|
|
181
242
|
|
|
182
243
|
@media (max-width: 768px) {
|
|
183
244
|
.encabezado {
|
|
184
245
|
font-size: 18px;
|
|
246
|
+
padding: 0 8px;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.encabezado-logo {
|
|
250
|
+
height: 22px;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.encabezado-marca {
|
|
254
|
+
gap: 6px;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.encabezado-acciones {
|
|
258
|
+
gap: 0;
|
|
185
259
|
}
|
|
186
260
|
|
|
187
261
|
.cabecera2 {
|
|
@@ -219,6 +293,14 @@
|
|
|
219
293
|
font-size: 18px;
|
|
220
294
|
}
|
|
221
295
|
|
|
296
|
+
.encabezado-nombre-completo {
|
|
297
|
+
display: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.encabezado-titulo-modulo {
|
|
301
|
+
font-size: 11px;
|
|
302
|
+
}
|
|
303
|
+
|
|
222
304
|
.pie-col.izquierda {
|
|
223
305
|
display: none;
|
|
224
306
|
}
|
|
@@ -238,10 +320,11 @@
|
|
|
238
320
|
display: flex;
|
|
239
321
|
justify-content: space-between;
|
|
240
322
|
align-items: center;
|
|
241
|
-
padding:
|
|
242
|
-
background-color: #
|
|
243
|
-
|
|
244
|
-
|
|
323
|
+
padding: 3px 12px;
|
|
324
|
+
background-color: #f4f6f9;
|
|
325
|
+
border-top: 1px solid #dde3ec;
|
|
326
|
+
color: #6b7c8f;
|
|
327
|
+
font-size: 11px;
|
|
245
328
|
flex-shrink: 0;
|
|
246
329
|
}
|
|
247
330
|
|
|
@@ -286,29 +369,25 @@
|
|
|
286
369
|
.contador-usuarios {
|
|
287
370
|
display: flex;
|
|
288
371
|
align-items: center;
|
|
289
|
-
background:
|
|
290
|
-
padding:
|
|
291
|
-
border-radius:
|
|
372
|
+
background: transparent;
|
|
373
|
+
padding: 2px 10px;
|
|
374
|
+
border-radius: 12px;
|
|
292
375
|
font-family: 'Roboto', sans-serif;
|
|
293
|
-
font-size:
|
|
294
|
-
color: #
|
|
295
|
-
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
|
|
296
|
-
border: 1px solid rgba(0, 47, 107, 0.1);
|
|
376
|
+
font-size: 11px;
|
|
377
|
+
color: #6b7c8f;
|
|
297
378
|
transition: all 0.3s ease;
|
|
298
379
|
}
|
|
299
380
|
|
|
300
381
|
.contador-usuarios:hover {
|
|
301
|
-
background: rgba(
|
|
302
|
-
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
303
|
-
transform: translateY(-1px);
|
|
382
|
+
background: rgba(0, 47, 107, 0.05);
|
|
304
383
|
}
|
|
305
384
|
|
|
306
385
|
.icono-usuarios {
|
|
307
|
-
font-size:
|
|
308
|
-
width:
|
|
309
|
-
height:
|
|
310
|
-
margin-right:
|
|
311
|
-
color: #
|
|
386
|
+
font-size: 14px !important;
|
|
387
|
+
width: 14px !important;
|
|
388
|
+
height: 14px !important;
|
|
389
|
+
margin-right: 5px;
|
|
390
|
+
color: #8fa0b4;
|
|
312
391
|
}
|
|
313
392
|
|
|
314
393
|
.etiqueta-usuarios {
|
|
@@ -318,11 +397,28 @@
|
|
|
318
397
|
}
|
|
319
398
|
|
|
320
399
|
.separador-usuarios {
|
|
321
|
-
margin: 0
|
|
400
|
+
margin: 0 8px;
|
|
322
401
|
color: #ccc;
|
|
323
402
|
font-weight: 200;
|
|
324
403
|
}
|
|
325
404
|
|
|
405
|
+
.pie .botonDeNavegacion {
|
|
406
|
+
color: #8fa0b4;
|
|
407
|
+
padding: 2px;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.pie .botonDeNavegacion mat-icon {
|
|
411
|
+
font-size: 18px !important;
|
|
412
|
+
width: 18px !important;
|
|
413
|
+
height: 18px !important;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.pie .botonDeNavegacion:hover {
|
|
417
|
+
background-color: rgba(0, 47, 107, 0.08);
|
|
418
|
+
color: #002f6b;
|
|
419
|
+
transform: scale(1.1);
|
|
420
|
+
}
|
|
421
|
+
|
|
326
422
|
.valor-fijo {
|
|
327
423
|
font-weight: bold;
|
|
328
424
|
color: #002f6b;
|
|
@@ -343,11 +439,10 @@
|
|
|
343
439
|
|
|
344
440
|
.numero-animado {
|
|
345
441
|
display: block;
|
|
346
|
-
font-weight:
|
|
347
|
-
color: #
|
|
442
|
+
font-weight: 600;
|
|
443
|
+
color: #4a5e73;
|
|
348
444
|
width: 100%;
|
|
349
445
|
text-align: center;
|
|
350
|
-
/* Animación tipo YouTube: deslizamiento estrictamente vertical */
|
|
351
446
|
animation: youtubeSlide 0.6s cubic-bezier(0.23, 1, 0.32, 1) forwards;
|
|
352
447
|
will-change: transform, opacity;
|
|
353
448
|
}
|
|
@@ -1,39 +1,24 @@
|
|
|
1
1
|
<div class="pagina">
|
|
2
2
|
<div class="encabezado">
|
|
3
|
-
<div class="
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
</div>
|
|
8
|
-
<div class="pie-col derecha">
|
|
9
|
-
@if(TienePermiso) {
|
|
10
|
-
<button class="botonDeNavegacion" [matTooltip]="NombreUsuario || 'Perfil'" [title]="NombreUsuario || 'Perfil'"
|
|
11
|
-
(click)="irAPerfil()">
|
|
12
|
-
<mat-icon>person</mat-icon>
|
|
13
|
-
</button>
|
|
14
|
-
<button class="botonDeNavegacion" matTooltip="Mensajes" title="Mensajes" (click)="irAMensajes()">
|
|
15
|
-
@if (Mensajes.length > 0) {
|
|
16
|
-
<mat-icon>mark_email_unread</mat-icon>
|
|
17
|
-
} @else {
|
|
18
|
-
<mat-icon>email_unread</mat-icon>
|
|
19
|
-
}
|
|
20
|
-
</button>
|
|
21
|
-
<button class="botonDeNavegacion" matTooltip="Salir" title="Salir" (click)="Salir()">
|
|
22
|
-
<mat-icon>logout</mat-icon>
|
|
3
|
+
<div class="encabezado-marca">
|
|
4
|
+
@if(TienePermiso && esDashboard){
|
|
5
|
+
<button class="botonDeNavegacion ColorBlanco" matTooltip="Módulos" title="Módulos" (click)="toggleSidebar()">
|
|
6
|
+
<mat-icon>menu</mat-icon>
|
|
23
7
|
</button>
|
|
24
|
-
} @else {
|
|
25
|
-
<button class="botonDeNavegacion" matTooltip="
|
|
26
|
-
<mat-icon>
|
|
8
|
+
} @else if (TienePermiso) {
|
|
9
|
+
<button class="botonDeNavegacion ColorBlanco" matTooltip="Menú principal" title="Menú principal" (click)="irAlInicio()">
|
|
10
|
+
<mat-icon>home</mat-icon>
|
|
27
11
|
</button>
|
|
28
12
|
}
|
|
13
|
+
<span class="encabezado-divisor-vertical"></span>
|
|
14
|
+
<img class="encabezado-logo" src="https://storage.sigu.utn.ac.cr/images/cards/LogoUTN.svg" alt="Logo UTN" />
|
|
15
|
+
<span class="encabezado-nombre-uni encabezado-nombre-completo">Universidad Técnica Nacional</span>
|
|
16
|
+
<span class="encabezado-nombre-uni encabezado-nombre-corto">UTN</span>
|
|
17
|
+
<span class="encabezado-separador">|</span>
|
|
18
|
+
<span class="encabezado-titulo-modulo">SIGU</span>
|
|
29
19
|
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@if(TienePermiso){
|
|
33
|
-
<div class="titulo">
|
|
34
|
-
<div class="pie-col izquierda"></div>
|
|
35
|
-
<div class="pie-col centro">{{ Titulo }}</div>
|
|
36
|
-
<div class="pie-col derecha">
|
|
20
|
+
<div class="encabezado-acciones">
|
|
21
|
+
@if(TienePermiso){
|
|
37
22
|
<button class="botonDeNavegacion ColorBlanco" matTooltip="Ir atrás" title="Ir atrás" (click)="irAtras()">
|
|
38
23
|
<mat-icon>arrow_back</mat-icon>
|
|
39
24
|
</button>
|
|
@@ -41,16 +26,40 @@
|
|
|
41
26
|
(click)="irAlMenuDeModulo()">
|
|
42
27
|
<mat-icon>menu</mat-icon>
|
|
43
28
|
</button>
|
|
44
|
-
<!-- <button class="botonDeNavegacion" matTooltip="Ir al móudulo padre" title="Ir al móudulo padre" (click)="irAlModuloPadre()">
|
|
45
|
-
<mat-icon>apps</mat-icon>
|
|
46
|
-
</button> -->
|
|
47
29
|
<button class="botonDeNavegacion ColorBlanco" matTooltip="Ir al inicio" title="Ir al inicio"
|
|
48
30
|
(click)="irAlInicio()">
|
|
49
31
|
<mat-icon>home</mat-icon>
|
|
50
32
|
</button>
|
|
33
|
+
<span class="encabezado-divisor-vertical"></span>
|
|
34
|
+
<button class="botonDeNavegacion ColorBlanco" matTooltip="Mensajes" title="Mensajes" (click)="irAMensajes()">
|
|
35
|
+
@if (Mensajes.length > 0) {
|
|
36
|
+
<mat-icon>mark_email_unread</mat-icon>
|
|
37
|
+
} @else {
|
|
38
|
+
<mat-icon>email_unread</mat-icon>
|
|
39
|
+
}
|
|
40
|
+
</button>
|
|
41
|
+
<button class="botonDeNavegacion ColorBlanco" [matTooltip]="NombreUsuario || 'Perfil'"
|
|
42
|
+
[title]="NombreUsuario || 'Perfil'" [matMenuTriggerFor]="menuUsuario">
|
|
43
|
+
<mat-icon>person</mat-icon>
|
|
44
|
+
</button>
|
|
45
|
+
<mat-menu #menuUsuario="matMenu">
|
|
46
|
+
<button mat-menu-item (click)="irAPerfil()" title="Ver perfil">
|
|
47
|
+
<mat-icon>manage_accounts</mat-icon>
|
|
48
|
+
<span>{{ NombreUsuario || 'Perfil' }}</span>
|
|
49
|
+
</button>
|
|
50
|
+
<mat-divider></mat-divider>
|
|
51
|
+
<button mat-menu-item (click)="Salir()" title="Cerrar sesión">
|
|
52
|
+
<mat-icon>logout</mat-icon>
|
|
53
|
+
<span>Cerrar sesión</span>
|
|
54
|
+
</button>
|
|
55
|
+
</mat-menu>
|
|
56
|
+
} @else {
|
|
57
|
+
<button class="botonDeNavegacion ColorBlanco" matTooltip="Entrar" title="Entrar" (click)="Entrar()">
|
|
58
|
+
<mat-icon>login</mat-icon>
|
|
59
|
+
</button>
|
|
60
|
+
}
|
|
51
61
|
</div>
|
|
52
62
|
</div>
|
|
53
|
-
}
|
|
54
63
|
<div class="zona-scrollable">
|
|
55
64
|
<div [ngClass]="claseDelContenedor">
|
|
56
65
|
<!-- @if(TienePermiso) {
|
|
@@ -72,17 +81,23 @@
|
|
|
72
81
|
} -->
|
|
73
82
|
<div class="contenido">
|
|
74
83
|
@if(TienePermiso){
|
|
75
|
-
@if(
|
|
84
|
+
@if(esDashboard && tieneTarjetas) {
|
|
76
85
|
<div class="cabecera2">
|
|
77
86
|
<div class="cabecera2-info">
|
|
78
|
-
<p class="titulo2">
|
|
87
|
+
<p class="titulo2">
|
|
88
|
+
@if (esDashboard) {
|
|
89
|
+
<mat-icon class="titulo2-icono" aria-hidden="true">home</mat-icon>
|
|
90
|
+
}
|
|
91
|
+
{{ Descripcion }}
|
|
92
|
+
</p>
|
|
79
93
|
<p class="descripcion2">{{ Detalle }}</p>
|
|
80
94
|
</div>
|
|
81
95
|
@if (esDashboard) {
|
|
82
96
|
<div class="filtro-tarjetas">
|
|
83
97
|
<mat-icon class="filtro-icono">search</mat-icon>
|
|
84
98
|
<input #filtroInput class="filtro-input" type="text" placeholder="Buscar tarjeta..." [value]="filtro"
|
|
85
|
-
(input)="onFiltroChange($event)" aria-label="Buscar tarjeta por nombre"
|
|
99
|
+
(input)="onFiltroChange($event)" aria-label="Buscar tarjeta por nombre"
|
|
100
|
+
(keydown.tab)="enfocarPrimeraTarjeta($event)" />
|
|
86
101
|
@if (filtro) {
|
|
87
102
|
<button class="filtro-limpiar" (click)="limpiarFiltro()" title="Limpiar búsqueda"
|
|
88
103
|
aria-label="Limpiar búsqueda">
|
|
@@ -101,6 +116,13 @@
|
|
|
101
116
|
</div>
|
|
102
117
|
</div>
|
|
103
118
|
|
|
119
|
+
@if (panelNotificacionesAbierto) {
|
|
120
|
+
<app-panel-notificaciones
|
|
121
|
+
[datos]="datosNotificaciones"
|
|
122
|
+
(cerrar)="panelNotificacionesAbierto = false">
|
|
123
|
+
</app-panel-notificaciones>
|
|
124
|
+
}
|
|
125
|
+
|
|
104
126
|
<div class="pie">
|
|
105
127
|
<div class="pie-col izquierda">
|
|
106
128
|
Módulo: {{ Modulo }}. Versión: {{ Version }}.
|
|
@@ -151,7 +173,7 @@
|
|
|
151
173
|
<button class="botonDeNavegacion" matTooltip="Ayuda" title="Ayuda" (click)="irAAyuda()">
|
|
152
174
|
<mat-icon>help</mat-icon>
|
|
153
175
|
</button>
|
|
154
|
-
<button class="botonDeNavegacion" matTooltip="
|
|
176
|
+
<button class="botonDeNavegacion" matTooltip="Calendario institucional" title="Calendario institucional"
|
|
155
177
|
(click)="irACalendario()">
|
|
156
178
|
<mat-icon>calendar_view_week</mat-icon>
|
|
157
179
|
</button>
|
|
@@ -8,6 +8,7 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
8
8
|
import { MatDialog } from '@angular/material/dialog';
|
|
9
9
|
import { MatDividerModule } from '@angular/material/divider';
|
|
10
10
|
import type { ItemDeMenuDialog } from '../../../Componentes/Nucleo/reordenar-menu/reordenar-menu.component';
|
|
11
|
+
import { PanelNotificacionesComponent } from '../../../Componentes/Nucleo/panel-notificaciones/panel-notificaciones.component';
|
|
11
12
|
|
|
12
13
|
import { MatMenuModule } from '@angular/material/menu';
|
|
13
14
|
|
|
@@ -22,7 +23,7 @@ interface ItemDeMenu {
|
|
|
22
23
|
|
|
23
24
|
@Component({
|
|
24
25
|
selector: 'app-contenedor-componentes',
|
|
25
|
-
imports: [RouterOutlet, MatIconModule, MatTooltipModule, CommonModule, MatMenuModule, MatDividerModule],
|
|
26
|
+
imports: [RouterOutlet, MatIconModule, MatTooltipModule, CommonModule, MatMenuModule, MatDividerModule, PanelNotificacionesComponent],
|
|
26
27
|
templateUrl: './contenedor-componentes.component.html',
|
|
27
28
|
styleUrl: './contenedor-componentes.component.css'
|
|
28
29
|
})
|
|
@@ -35,6 +36,8 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
35
36
|
public Modulo: string = '';
|
|
36
37
|
public Version: string = '';
|
|
37
38
|
public Mensajes: string[] = [];
|
|
39
|
+
public panelNotificacionesAbierto: boolean = false;
|
|
40
|
+
public datosNotificaciones: any[] = [];
|
|
38
41
|
public EnlaceDelManual: string = '-';
|
|
39
42
|
public EnlaceDelVideo: string = '-';
|
|
40
43
|
public claseDelContenedor: string = '';
|
|
@@ -54,6 +57,12 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
get esDashboard(): boolean { return this.router.url === '/'; }
|
|
60
|
+
|
|
61
|
+
toggleSidebar(): void {
|
|
62
|
+
const abriendo = !this.datosGlobalesService.sidebarVisible$.value;
|
|
63
|
+
if (abriendo) this.panelNotificacionesAbierto = false;
|
|
64
|
+
this.datosGlobalesService.sidebarVisible$.next(abriendo);
|
|
65
|
+
}
|
|
57
66
|
get tieneTarjetas(): boolean { return this.datosGlobalesService.cantidadDeTarjetas$.value > 0; }
|
|
58
67
|
get filtro(): string { return this.datosGlobalesService.filtroDeTarjetas$.value; }
|
|
59
68
|
|
|
@@ -70,6 +79,13 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
70
79
|
this.datosGlobalesService.filtroDeTarjetas$.next('');
|
|
71
80
|
}
|
|
72
81
|
|
|
82
|
+
enfocarPrimeraTarjeta(event: Event): void {
|
|
83
|
+
const primera = document.querySelector<HTMLElement>('.modulo-card[role="button"]');
|
|
84
|
+
if (!primera) return;
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
primera.focus();
|
|
87
|
+
}
|
|
88
|
+
|
|
73
89
|
constructor(private http: HttpClient, private datosGlobalesService: DatosGlobalesService, private location: Location, private dialog: MatDialog, private router: Router, private ngZone: NgZone) {
|
|
74
90
|
if (datosGlobalesService.ObtenerToken() === '') {
|
|
75
91
|
datosGlobalesService.RedirigirALogin();
|
|
@@ -258,9 +274,15 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
258
274
|
}
|
|
259
275
|
|
|
260
276
|
irAMensajes(): void {
|
|
261
|
-
this.
|
|
262
|
-
|
|
263
|
-
this.
|
|
277
|
+
this.datosGlobalesService.sidebarVisible$.next(false);
|
|
278
|
+
this.http.get(this.datosGlobalesService.ObtenerURL() + 'misc/obtenerNotificaciones').subscribe((datos: any) => {
|
|
279
|
+
this.datosNotificaciones = (datos.body ?? []).map((n: any) => ({
|
|
280
|
+
llave: n.FechaYHoraDeCreacion,
|
|
281
|
+
valor: n.Notificacion,
|
|
282
|
+
tachado: false,
|
|
283
|
+
eliminando: false
|
|
284
|
+
}));
|
|
285
|
+
this.panelNotificacionesAbierto = true;
|
|
264
286
|
});
|
|
265
287
|
}
|
|
266
288
|
|
|
@@ -310,13 +332,13 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
310
332
|
|
|
311
333
|
async irASugerencias(): Promise<void> {
|
|
312
334
|
const { ReporteDeSugerenciasComponent } = await import('../../../Componentes/Nucleo/reporte-de-sugerencias/reporte-de-sugerencias.component');
|
|
313
|
-
this.dialog.open(ReporteDeSugerenciasComponent);
|
|
335
|
+
this.dialog.open(ReporteDeSugerenciasComponent, { panelClass: 'dialog-sugerencias' });
|
|
314
336
|
}
|
|
315
337
|
|
|
316
338
|
irAEstadisticasDelModulo(): void {
|
|
317
339
|
this.http.get(this.datosGlobalesService.ObtenerURL() + 'misc/obtenerVistas').subscribe(async (datos: any) => {
|
|
318
340
|
const { EstadisticasDelModuloComponent } = await import('../../../Componentes/Nucleo/estadisticas-del-modulo/estadisticas-del-modulo.component');
|
|
319
|
-
this.dialog.open(EstadisticasDelModuloComponent, { data: datos.body });
|
|
341
|
+
this.dialog.open(EstadisticasDelModuloComponent, { data: datos.body, panelClass: 'dialog-estadisticas' });
|
|
320
342
|
});
|
|
321
343
|
}
|
|
322
344
|
|
package/templates/frontend/src/app/Paginas/Nucleo/declaracion-ia/declaracion-ia.component.css
CHANGED
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
/* Encabezado */
|
|
15
15
|
.ia-encabezado {
|
|
16
16
|
display: flex;
|
|
17
|
-
align-items:
|
|
17
|
+
align-items: center;
|
|
18
18
|
gap: 14px;
|
|
19
19
|
padding: 20px 24px;
|
|
20
|
-
background: linear-gradient(
|
|
20
|
+
background: linear-gradient(90deg, rgba(1, 33, 105, 1) 0%, rgba(63, 97, 171, 1) 100%);
|
|
21
21
|
color: white;
|
|
22
22
|
border-radius: 12px;
|
|
23
23
|
}
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
width: 40px !important;
|
|
28
28
|
height: 40px !important;
|
|
29
29
|
flex-shrink: 0;
|
|
30
|
-
margin-top: 4px;
|
|
31
30
|
opacity: 0.9;
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
.ia-encabezado h1 {
|
|
35
|
-
margin: 0
|
|
34
|
+
margin: 0;
|
|
36
35
|
font-size: 22px;
|
|
37
36
|
font-weight: 700;
|
|
37
|
+
line-height: 1;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.ia-encabezado p {
|
|
@@ -8,13 +8,14 @@ export class DatosGlobalesService {
|
|
|
8
8
|
|
|
9
9
|
readonly filtroDeTarjetas$ = new BehaviorSubject<string>('');
|
|
10
10
|
readonly cantidadDeTarjetas$ = new BehaviorSubject<number>(0);
|
|
11
|
+
readonly sidebarVisible$ = new BehaviorSubject<boolean>(false);
|
|
11
12
|
|
|
12
13
|
constructor() { }
|
|
13
14
|
|
|
14
15
|
ObtenerToken() {
|
|
15
16
|
const baseUrl = this.ObtenerURL();
|
|
16
17
|
if (baseUrl === 'http://localhost/') {
|
|
17
|
-
return 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
|
|
18
|
+
return 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxMiIsIklkZW50aWZpY2Fkb3IiOiIxMiIsImlhdCI6MTc3OTcxNjM5NCwiZXhwIjoxNzc5NzUyMzk0fQ.43_5Rnqyi-ArRpND81Z1MoPHluQbilX13AED102ilgQ';
|
|
18
19
|
}
|
|
19
20
|
const match = document.cookie.match(/(?:^|;\s*)_siguid=([^;]+)/);
|
|
20
21
|
let token = match ? decodeURIComponent(match[1]) : '';
|
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
21
21
|
<script src="https://accounts.google.com/gsi/client" async defer></script>
|
|
22
22
|
<meta description="Universidad Técnica Nacional - SIGU">
|
|
23
|
+
<style>
|
|
24
|
+
#userwayAccessibilityIcon {
|
|
25
|
+
bottom: 35px !important;
|
|
26
|
+
top: auto !important;
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
23
29
|
</head>
|
|
24
30
|
|
|
25
31
|
<body bgcolor="#adbccf">
|
|
@@ -29,6 +35,7 @@
|
|
|
29
35
|
(function (d) {
|
|
30
36
|
var s = d.createElement("script");
|
|
31
37
|
s.setAttribute("data-account", "oDM5lWND5w");
|
|
38
|
+
s.setAttribute("data-position", "3");
|
|
32
39
|
s.setAttribute("src", "https://cdn.userway.org/widget.js");
|
|
33
40
|
(d.body || d.head).appendChild(s);
|
|
34
41
|
})(document);
|
|
@@ -8,7 +8,20 @@ body {
|
|
|
8
8
|
font-family: Roboto, "Helvetica Neue", sans-serif;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.cdk-overlay-pane.mat-mdc-dialog-panel{
|
|
11
|
+
.cdk-overlay-pane.mat-mdc-dialog-panel {
|
|
12
12
|
max-width: 100vw !important;
|
|
13
13
|
max-height: 200vh !important;
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
.dialog-sugerencias .mat-mdc-dialog-surface,
|
|
17
|
+
.dialog-mensajes .mat-mdc-dialog-surface,
|
|
18
|
+
.dialog-estadisticas .mat-mdc-dialog-surface {
|
|
19
|
+
overflow: hidden !important;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.dialog-sugerencias .mat-mdc-dialog-content,
|
|
23
|
+
.dialog-mensajes .mat-mdc-dialog-content,
|
|
24
|
+
.dialog-estadisticas .mat-mdc-dialog-content {
|
|
25
|
+
max-height: unset !important;
|
|
26
|
+
overflow: visible !important;
|
|
27
|
+
}
|