Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
Front-NG
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
José Alejandro Cáceres López
Front-NG
Commits
3ca5b574
Commit
3ca5b574
authored
Aug 28, 2023
by
José Alejandro Cáceres López
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
controles en proyecto
parent
873e03d6
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
671 additions
and
426 deletions
+671
-426
acta-compromiso-carreras.component.ts
...compromiso-carreras/acta-compromiso-carreras.component.ts
+2
-2
listar-anexos-imagenes.component.ts
...istar-anexos-imagenes/listar-anexos-imagenes.component.ts
+3
-1
add-informe.component.html
...informes de avance/add-informe/add-informe.component.html
+2
-2
add-informe.component.ts
...n/informes de avance/add-informe/add-informe.component.ts
+2
-2
list-informe.component.html
...formes de avance/list-informe/list-informe.component.html
+2
-2
list-informe.component.ts
...informes de avance/list-informe/list-informe.component.ts
+18
-3
add-cronograma-acti.component.ts
...ción/add-cronograma-acti/add-cronograma-acti.component.ts
+33
-3
add-hitos.component.ts
...Estrategias de Ejecución/add-hitos/add-hitos.component.ts
+33
-3
asignacion-docentes.component.css
...tes/asignacion-docentes/asignacion-docentes.component.css
+137
-137
asignacion-docentes.component.html
...es/asignacion-docentes/asignacion-docentes.component.html
+9
-12
asignacion-docentes.component.ts
...ntes/asignacion-docentes/asignacion-docentes.component.ts
+67
-78
listar-docentes-asignados.component.css
...ocentes-asignados/listar-docentes-asignados.component.css
+106
-108
listar-docentes-asignados.component.html
...centes-asignados/listar-docentes-asignados.component.html
+19
-20
listar-docentes-asignados.component.ts
...docentes-asignados/listar-docentes-asignados.component.ts
+83
-28
add-compromiso.component.ts
... participacion/add-compromiso/add-compromiso.component.ts
+37
-4
list-compromiso.component.ts
...articipacion/list-compromiso/list-compromiso.component.ts
+17
-3
list-documentos.component.ts
...articipacion/list-documentos/list-documentos.component.ts
+21
-8
aporte-comunidad.component.ts
... detallado/aporte-comunidad/aporte-comunidad.component.ts
+14
-0
aporte-entidad.component.ts
...esto detallado/aporte-entidad/aporte-entidad.component.ts
+15
-1
aporte-universidad.component.ts
...allado/aporte-universidad/aporte-universidad.component.ts
+15
-2
list-comunidad.component.ts
...esto detallado/list-comunidad/list-comunidad.component.ts
+15
-3
list-entidad.component.ts
...supuesto detallado/list-entidad/list-entidad.component.ts
+15
-2
responsable-prog.service.ts
...ain/services/responsable-prog/responsable-prog.service.ts
+6
-2
No files found.
src/app/modules/main/pages/Proyectos/Acta de Compromiso de Carreras/acta-compromiso-carreras/acta-compromiso-carreras.component.ts
View file @
3ca5b574
...
...
@@ -82,7 +82,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
return
fileName
.
toLocaleLowerCase
().
endsWith
(
'.pdf'
);
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
width
:
'400px'
,
disableClose
:
true
...
...
@@ -107,7 +107,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
this
.
proyecto
.
uzytavproyec_com_part2_nom
=
pdfData
.
filename
;
this
.
proyectosService
.
modificarParametros
(
this
.
proyecto
.
uzytavproyec_id
,
this
.
proyecto
).
subscribe
(
response
=>
{
this
.
openModal
();
this
.
openModal
(
'El PDF ha sido Enviado'
);
console
.
log
(
'Datos Actualizados'
,
this
.
proyecto
);
this
.
myForm
.
disable
();
this
.
cambio
=
false
;
...
...
src/app/modules/main/pages/Proyectos/Diagnostico y problema/Anexos e Imagenes/listar-anexos-imagenes/listar-anexos-imagenes.component.ts
View file @
3ca5b574
...
...
@@ -94,7 +94,7 @@ export class ListarAnexosImagenesComponent implements OnInit {
eliminarParametro
(
id
:
number
)
{
this
.
openModalDelete
(
'¿Desea eliminar
la Entidad
?'
).
subscribe
(
result
=>
{
this
.
openModalDelete
(
'¿Desea eliminar
el Anexo
?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
anexosImagenesService
.
eliminarParametros
(
id
).
subscribe
(
()
=>
{
...
...
@@ -110,6 +110,8 @@ export class ListarAnexosImagenesComponent implements OnInit {
});
}
formatFecha
(
fecha
:
Date
):
string
{
const
dateObj
=
new
Date
(
fecha
);
return
format
(
dateObj
,
'dd-MM-yyyy'
);
...
...
src/app/modules/main/pages/Proyectos/Ejecución/informes de avance/add-informe/add-informe.component.html
View file @
3ca5b574
...
...
@@ -67,7 +67,7 @@
<ng-container
matColumnDef=
"resultado"
>
<th
mat-header-cell
*
matHeaderCellDef
>
Resultado
</th>
<td
mat-cell
*
matCellDef=
"let actividad"
>
<input
matInput
type=
"number"
[
formControlName
]="'
resultado
'
+
actividad
.
uzytavobjetivo_programa_id
"
<input
matInput
[
formControlName
]="'
resultado
'
+
actividad
.
uzytavobjetivo_programa_id
"
placeholder=
"Resultado"
>
</td>
</ng-container>
...
...
@@ -82,7 +82,7 @@
<ng-container
matColumnDef=
"observacion"
>
<th
mat-header-cell
*
matHeaderCellDef
>
Observación
</th>
<td
mat-cell
*
matCellDef=
"let actividad"
>
<input
matInput
type=
"number"
[
formControlName
]="'
observacion
'
+
actividad
.
uzytavobjetivo_programa_id
"
<input
matInput
[
formControlName
]="'
observacion
'
+
actividad
.
uzytavobjetivo_programa_id
"
placeholder=
"Observación"
>
</td>
</ng-container>
...
...
src/app/modules/main/pages/Proyectos/Ejecución/informes de avance/add-informe/add-informe.component.ts
View file @
3ca5b574
...
...
@@ -173,7 +173,7 @@ export class AddInformeComponent implements OnInit {
this
.
guardarBody
(
this
.
informeS
.
obtenerIdCabe
());
this
.
cancelarF
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
cabeM
);
this
.
openModal
();
this
.
openModal
(
'Los datos han sido Enviados'
);
});
}
}
...
...
@@ -222,7 +222,7 @@ export class AddInformeComponent implements OnInit {
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
});
...
...
src/app/modules/main/pages/Proyectos/Ejecución/informes de avance/list-informe/list-informe.component.html
View file @
3ca5b574
...
...
@@ -38,10 +38,10 @@
<mat-icon
color=
"warn"
(
click
)="
eliminarHeader
(
item
.
uzytavactproy_id
)"
>
delete
</mat-icon>
</button>
<button>
<!--
<button>
<mat-icon color="azul"
(click)="editarCabecera(item.uzytavactproy_id)">edit</mat-icon>
</button>
</button>
-->
</td>
</tr>
...
...
src/app/modules/main/pages/Proyectos/Ejecución/informes de avance/list-informe/list-informe.component.ts
View file @
3ca5b574
import
{
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
format
}
from
'date-fns'
;
import
{
Observable
}
from
'rxjs'
;
import
{
actproy
}
from
'src/app/modules/main/Models/actproy'
;
import
{
detactproy
}
from
'src/app/modules/main/Models/detactproy'
;
import
{
objetivoprograma
}
from
'src/app/modules/main/Models/objetivoPrograma'
;
...
...
@@ -8,6 +9,8 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import
{
Informes_avanceService
}
from
'src/app/modules/main/services/informes_avance/informes_avance.service'
;
import
{
MostrarOcultarService
}
from
'src/app/modules/main/services/mostrar-ocultar.service'
;
import
{
Objetivo_programaService
}
from
'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
@
Component
({
selector
:
'vex-list-informe'
,
...
...
@@ -35,7 +38,8 @@ export class ListInformeComponent implements OnInit {
private
bodyM
:
detactproy
,
private
compartirDatos
:
Actualiza_datosService
,
private
mostrarOcultarService
:
MostrarOcultarService
,
public
idCompartido
:
Compartir_idService
public
idCompartido
:
Compartir_idService
,
private
dialog
:
MatDialog
)
{
}
ngOnInit
():
void
{
...
...
@@ -113,8 +117,8 @@ export class ListInformeComponent implements OnInit {
}
eliminarHeader
(
id
:
number
){
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Desea Eliminar el Registro?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
informeS
.
eliminarParametrosCabecera
(
id
).
subscribe
(
()
=>
{
console
.
log
(
'El registro se ha eliminado'
);
...
...
@@ -126,10 +130,21 @@ export class ListInformeComponent implements OnInit {
}
);
}
});
}
formatFecha
(
fecha
:
Date
):
string
{
const
dateObj
=
new
Date
(
fecha
);
return
format
(
dateObj
,
'dd-MM-yyyy'
);
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Estrategias de Ejecución/add-cronograma-acti/add-cronograma-acti.component.ts
View file @
3ca5b574
...
...
@@ -12,6 +12,10 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import
{
Objetivo_programaService
}
from
'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'
;
import
{
DatePipe
}
from
"@angular/common"
;
import
{
Observable
}
from
'rxjs'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
EnvioFormularioComponent
}
from
'../../../programa/opciones/envio-formulario/envio-formulario.component'
;
@
Component
({
selector
:
'vex-add-cronograma-acti'
,
...
...
@@ -44,7 +48,8 @@ export class AddCronogramaActiComponent implements OnInit {
private
objPS
:
Objetivo_programaService
,
private
idCompartido
:
Compartir_idService
,
private
datosCompartidos
:
Actualiza_datosService
,
private
objM
:
objetivoprograma
private
objM
:
objetivoprograma
,
private
dialog
:
MatDialog
)
{
this
.
myForm
=
this
.
formBuilder
.
group
({
Actividades
:
[
''
,
Validators
.
required
],
...
...
@@ -94,6 +99,7 @@ export class AddCronogramaActiComponent implements OnInit {
console
.
log
(
'yo digo'
,
this
.
objM
.
uzytavobjetivo_programafec_fin
)
this
.
objPS
.
modificarParametros
(
id_recuperado
,
this
.
objM
).
subscribe
(
response
=>
{
this
.
showDataAdd
=
false
;
this
.
openModal
(
'Los Datos han sido agregados'
);
this
.
ocultar
=
true
;
this
.
myForm
.
reset
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
objM
);
...
...
@@ -153,8 +159,8 @@ export class AddCronogramaActiComponent implements OnInit {
}
eliminarFechas
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Desea eliminar el registro?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
objPS
.
modificarFechas
(
id
).
subscribe
(
()
=>
{
console
.
log
(
'El registro se ha eliminado'
);
...
...
@@ -165,6 +171,30 @@ export class AddCronogramaActiComponent implements OnInit {
}
);
}
});
}
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
width
:
'400px'
,
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
this
.
formularioEnviado
=
true
;
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Estrategias de Ejecución/add-hitos/add-hitos.component.ts
View file @
3ca5b574
...
...
@@ -3,12 +3,16 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import
{
CalendarOptions
,
EventApi
,
EventClickArg
,
EventInput
}
from
'@fullcalendar/core'
;
import
dayGridPlugin
from
'@fullcalendar/daygrid'
;
import
moment
from
'moment'
;
import
{
Observable
}
from
'rxjs'
;
import
{
seguim
}
from
'src/app/modules/main/Models/hito'
;
import
{
objetivoprograma
}
from
'src/app/modules/main/Models/objetivoPrograma'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
HitosService
}
from
'src/app/modules/main/services/hitos/hitos.service'
;
import
{
Objetivo_programaService
}
from
'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
EnvioFormularioComponent
}
from
'../../../programa/opciones/envio-formulario/envio-formulario.component'
;
@
Component
({
selector
:
'vex-add-hitos'
,
templateUrl
:
'./add-hitos.component.html'
,
...
...
@@ -38,7 +42,8 @@ export class AddHitosComponent implements OnInit {
private
objM
:
objetivoprograma
,
private
objPS
:
Objetivo_programaService
,
private
hitoS
:
HitosService
,
private
hitoM
:
seguim
private
hitoM
:
seguim
,
private
dialog
:
MatDialog
)
{
this
.
myForm
=
this
.
formBuilder
.
group
({
hitos
:
[
''
,
Validators
.
required
],
...
...
@@ -105,6 +110,7 @@ export class AddHitosComponent implements OnInit {
this
.
objM
.
uzytavobjetivo_programafec_fin
=
fechaHoraSecond
;
this
.
objPS
.
modificarParametros
(
id_recuperado
,
this
.
objM
).
subscribe
(
response
=>
{
this
.
showDataAdd
=
false
;
this
.
openModal
(
'Los Datos han sido agregados'
);
this
.
ocultar
=
true
;
this
.
myForm
.
reset
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
objM
);
...
...
@@ -141,9 +147,21 @@ export class AddHitosComponent implements OnInit {
return
color
;
}
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
width
:
'400px'
,
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
this
.
formularioEnviado
=
true
;
});
}
eliminarFechas
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Desea eliminar el registro?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
objPS
.
modificarFechas
(
id
).
subscribe
(
()
=>
{
console
.
log
(
'El registro se ha eliminado'
);
...
...
@@ -155,5 +173,17 @@ export class AddHitosComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/asignacion-docentes/asignacion-docentes.component.css
View file @
3ca5b574
...
...
@@ -7,32 +7,32 @@
margin
:
0
auto
;
background-color
:
white
;
border-radius
:
10px
;
}
}
.botones
{
.botones
{
width
:
100px
;
height
:
40px
;
text-align
:
center
;
padding
:
0
;
}
/* Estilos para la columna única */
.columna-unico
{
}
/* Estilos para la columna única */
.columna-unico
{
width
:
100%
;
box-sizing
:
border-box
;
padding-right
:
0
;
padding-left
:
0
;
}
}
/* Estilos para los labels */
label
{
/* Estilos para los labels */
label
{
display
:
block
;
margin-bottom
:
8px
;
font-weight
:
bold
;
}
}
/* Estilos para los inputs y selects */
input
[
type
=
"text"
],
select
{
/* Estilos para los inputs y selects */
input
[
type
=
"text"
],
select
{
width
:
100%
;
padding
:
10px
;
border
:
none
;
...
...
@@ -41,23 +41,23 @@
font-size
:
16px
;
margin-bottom
:
16px
;
transition
:
border-color
0.3s
ease
;
}
}
input
[
type
=
"text"
]
:focus
,
select
:focus
{
input
[
type
=
"text"
]
:focus
,
select
:focus
{
outline
:
none
;
border-color
:
#4caf50
;
}
}
/* Estilos para los mensajes de error */
.error-message
{
/* Estilos para los mensajes de error */
.error-message
{
color
:
red
;
font-size
:
14px
;
margin-top
:
4px
;
}
}
/* Estilos para el botón */
button
{
/* Estilos para el botón */
button
{
display
:
block
;
margin
:
20px
auto
;
padding
:
10px
20px
;
...
...
@@ -68,14 +68,14 @@
font-size
:
16px
;
cursor
:
pointer
;
transition
:
background-color
0.3s
ease
;
}
}
button
:hover
{
button
:hover
{
background-color
:
rgb
(
90
,
159
,
95
);
}
}
/* Estilos para el contenedor principal */
.contenedor
{
/* Estilos para el contenedor principal */
.contenedor
{
width
:
96%
;
margin-left
:
2%
;
margin-right
:
2%
;
...
...
@@ -85,16 +85,16 @@
background-color
:
#ffffff
;
position
:
relative
;
z-index
:
1
;
}
}
/* Estilos para el contenedor del formulario */
.contenedor-dos
{
/* Estilos para el contenedor del formulario */
.contenedor-dos
{
padding
:
0.9375rem
20px
;
position
:
relative
;
}
}
/* Estilos para el título sobremontado */
.sobremontado
{
/* Estilos para el título sobremontado */
.sobremontado
{
position
:
relative
;
width
:
96%
;
top
:
-20px
;
...
...
@@ -108,18 +108,18 @@
z-index
:
2
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
}
}
/* Estilos para el icono de instituciones */
.icono-instituciones
{
/* Estilos para el icono de instituciones */
.icono-instituciones
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
font-size
:
20px
;
}
}
.volver
{
.volver
{
position
:
absolute
;
top
:
25%
;
right
:
10px
;
...
...
@@ -137,171 +137,171 @@
outline
:
none
;
cursor
:
pointer
;
}
}
.save-button
{
.save-button
{
display
:
flex
;
justify-content
:
flex-end
;
margin-bottom
:
16px
;
}
}
.input-container
{
.input-container
{
width
:
100%
;
display
:
flex
;
flex-direction
:
column
;
}
/* Estilos para el formulario */
}
/* Estilos para el formulario */
.formulario
{
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
space-between
;
max-width
:
96%
;
margin
:
0
auto
;
background-color
:
white
;
border-radius
:
10px
;
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
space-between
;
max-width
:
96%
;
margin
:
0
auto
;
background-color
:
white
;
border-radius
:
10px
;
}
.botones
{
width
:
100px
;
height
:
40px
;
text-align
:
center
;
padding
:
0
;
width
:
100px
;
height
:
40px
;
text-align
:
center
;
padding
:
0
;
}
/* Estilos para la columna única */
.columna-unico
{
width
:
100%
;
box-sizing
:
border-box
;
padding-right
:
0
;
padding-left
:
0
;
width
:
100%
;
box-sizing
:
border-box
;
padding-right
:
0
;
padding-left
:
0
;
}
/* Estilos para los labels */
label
{
display
:
block
;
margin-bottom
:
8px
;
font-weight
:
bold
;
display
:
block
;
margin-bottom
:
8px
;
font-weight
:
bold
;
}
/* Estilos para los inputs y selects */
input
[
type
=
"text"
],
select
{
width
:
100%
;
padding
:
10px
;
border
:
none
;
border-bottom
:
1px
solid
#ccc
;
background-color
:
transparent
;
font-size
:
16px
;
margin-bottom
:
16px
;
transition
:
border-color
0.3s
ease
;
width
:
100%
;
padding
:
10px
;
border
:
none
;
border-bottom
:
1px
solid
#ccc
;
background-color
:
transparent
;
font-size
:
16px
;
margin-bottom
:
16px
;
transition
:
border-color
0.3s
ease
;
}
input
[
type
=
"text"
]
:focus
,
select
:focus
{
outline
:
none
;
border-color
:
#4caf50
;
outline
:
none
;
border-color
:
#4caf50
;
}
/* Estilos para los mensajes de error */
.error-message
{
color
:
red
;
font-size
:
14px
;
margin-top
:
4px
;
color
:
red
;
font-size
:
14px
;
margin-top
:
4px
;
}
/* Estilos para el botón */
button
{
display
:
block
;
margin
:
20px
auto
;
padding
:
10px
20px
;
background-color
:
rgb
(
71
,
127
,
75
);
color
:
#fff
;
border
:
none
;
border-radius
:
5px
;
font-size
:
16px
;
cursor
:
pointer
;
transition
:
background-color
0.3s
ease
;
display
:
block
;
margin
:
20px
auto
;
padding
:
10px
20px
;
background-color
:
rgb
(
71
,
127
,
75
);
color
:
#fff
;
border
:
none
;
border-radius
:
5px
;
font-size
:
16px
;
cursor
:
pointer
;
transition
:
background-color
0.3s
ease
;
}
button
:hover
{
background-color
:
rgb
(
90
,
159
,
95
);
background-color
:
rgb
(
90
,
159
,
95
);
}
/* Estilos para el contenedor principal */
.contenedor
{
width
:
96%
;
margin-left
:
2%
;
margin-right
:
2%
;
margin-top
:
10%
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
background-color
:
#ffffff
;
position
:
relative
;
z-index
:
1
;
width
:
96%
;
margin-left
:
2%
;
margin-right
:
2%
;
margin-top
:
10%
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
background-color
:
#ffffff
;
position
:
relative
;
z-index
:
1
;
}
/* Estilos para el contenedor del formulario */
.contenedor-dos
{
padding
:
0.9375rem
20px
;
position
:
relative
;
padding
:
0.9375rem
20px
;
position
:
relative
;
}
/* Estilos para el título sobremontado */
.sobremontado
{
position
:
relative
;
width
:
96%
;
top
:
-20px
;
left
:
2%
;
background-color
:
#477f4b
;
color
:
#fff
;
text-align
:
center
;
padding
:
10px
;
box-sizing
:
border-box
;
margin-bottom
:
-50px
;
z-index
:
2
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
position
:
relative
;
width
:
96%
;
top
:
-20px
;
left
:
2%
;
background-color
:
#477f4b
;
color
:
#fff
;
text-align
:
center
;
padding
:
10px
;
box-sizing
:
border-box
;
margin-bottom
:
-50px
;
z-index
:
2
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
}
/* Estilos para el icono de instituciones */
.icono-instituciones
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
font-size
:
20px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
font-size
:
20px
;
}
.volver
{
position
:
absolute
;
top
:
25%
;
right
:
10px
;
transform
:
translateY
(
-50%
);
border-radius
:
50%
;
background-color
:
white
;
display
:
flex
;
color
:
rgb
(
71
,
127
,
75
);
align-items
:
center
;
justify-content
:
center
;
padding
:
0
;
width
:
32px
;
height
:
32px
;
border
:
none
;
outline
:
none
;
cursor
:
pointer
;
position
:
absolute
;
top
:
25%
;
right
:
10px
;
transform
:
translateY
(
-50%
);
border-radius
:
50%
;
background-color
:
white
;
display
:
flex
;
color
:
rgb
(
71
,
127
,
75
);
align-items
:
center
;
justify-content
:
center
;
padding
:
0
;
width
:
32px
;
height
:
32px
;
border
:
none
;
outline
:
none
;
cursor
:
pointer
;
}
.save-button
{
display
:
flex
;
justify-content
:
flex-end
;
margin-bottom
:
5px
;
display
:
flex
;
justify-content
:
flex-end
;
margin-bottom
:
5px
;
}
.input-container
{
width
:
100%
;
display
:
flex
;
flex-direction
:
column
;
margin-bottom
:
5px
;
width
:
100%
;
display
:
flex
;
flex-direction
:
column
;
margin-bottom
:
5px
;
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/asignacion-docentes/asignacion-docentes.component.html
View file @
3ca5b574
<div
class=
"contenedor-dos"
>
<form
class=
"formulario"
[
formGroup
]="
myForm
"
(
ngSubmit
)="
onSubmit
()"
>
<!-- Información de la institución -->
<div
class=
"columna-unico"
>
<!-- Control de fechas inicio -->
<div
class=
"save-button"
>
<button
mat-raised-button
class=
"botones"
color=
"primary"
*
ngIf=
"!cambio"
(
click
)="
cambiar
()"
>
Agregar
</button>
...
...
@@ -10,27 +8,26 @@
[
disabled
]="
myForm
.
invalid
"
>
Guardar
</button>
<span
class=
"separator"
></span>
<button
mat-raised-button
class=
"botones"
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
<button
mat-raised-button
class=
"botones"
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
</div>
<div
class=
"input-container"
>
<mat-form-field
class=
"contenedor-dos"
>
<mat-label>
Nombres
</mat-label>
<input
matInput
[
formControl
]="
myControl
"
formControlName=
"nombres"
placeholder=
"Realizar búsqueda"
/>
<input
matInput
#
searchInput
id=
"#searchInput"
(
input
)="
resetAutocompleteVisibility
();
realizarBusqueda
(
searchInput
.
value
)"
[
value
]="
selectedUsuario
?
selectedUsuario
.
uzytusuario_nombres
+
'
'
+
selectedUsuario
.
uzytusuario_apellidos
:
''"
placeholder=
"Realizar búsqueda"
[
disabled
]="!
cambio
"
/>
</mat-form-field>
<mat-autocomplete
*
ngIf=
"usuarios"
autoActiveFirstOption
>
<mat-option
*
ngFor=
"let usuario of filteredOptions | async"
[
value
]="
usuario
"
(
click
)="
onUsuarioSelected
(
usuario
)"
>
<mat-autocomplete
*
ngIf=
"usuarios && autocompleteVisible"
[
displayWith
]="
displayFn
"
>
<mat-option
*
ngFor=
"let usuario of usuarios"
[
value
]="
usuario
"
(
click
)="
onUsuarioSelected
(
usuario
)"
>
{{ usuario.uzytusuario_nombres }} {{ usuario.uzytusuario_apellidos }}
</mat-option>
</mat-autocomplete>
</div>
<div
class=
"input-container"
>
<mat-form-field
class=
"contenedor-dos"
>
<mat-label>
Seleccionar Funcion
</mat-label>
...
...
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/asignacion-docentes/asignacion-docentes.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
FormBuilder
,
Validators
,
FormGroup
,
FormControl
}
from
'@angular/forms'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
...
...
@@ -6,51 +6,40 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import
{
Programa
}
from
'src/app/modules/main/Models/programa-v'
;
import
{
DocenteParticipante
}
from
'src/app/modules/main/Models/docente-participante'
;
import
{
DocentesParticipantesService
}
from
'src/app/modules/main/services/docentes-participantes/docentes-participantes.service'
;
import
{
ProgramaService
}
from
'src/app/modules/main/services/programa/programa.service'
;
import
{
DatosEspeService
}
from
'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'
;
import
{
UsuariosService
}
from
'src/app/modules/main/services/usuarios/usuarios.service'
;
import
{
Usuario
}
from
'src/app/modules/main/Models/usuario'
;
import
{
MatAutocomplete
,
MatAutocompleteTrigger
}
from
'@angular/material/autocomplete'
;
import
{
TiPres
}
from
'src/app/modules/main/Models/tiv-pres'
;
import
{
TipresService
}
from
'src/app/modules/main/services/tipres/tipres.service'
;
import
{
ResponsableProg
}
from
'src/app/modules/main/Models/responsable-prog'
;
import
{
Observable
}
from
'rxjs'
;
import
{
map
,
startWith
}
from
'rxjs/operators'
;
import
{
ResponsableProgService
}
from
'src/app/modules/main/services/responsable-prog/responsable-prog.service'
;
import
{
TipresService
}
from
'src/app/modules/main/services/tipres/tipres.service'
;
import
{
EnvioFormularioComponent
}
from
'../../../../programa/opciones/envio-formulario/envio-formulario.component'
;
interface
Funcion
{
value
:
string
;
viewValue
:
string
;
}
@
Component
({
selector
:
'app-asignacion-docentes'
,
templateUrl
:
'./asignacion-docentes.component.html'
,
styleUrls
:
[
'./asignacion-docentes.component.css'
]
})
export
class
AsignacionDocentesComponent
implements
OnInit
{
@
ViewChild
(
MatAutocomplete
)
autocomplete
:
MatAutocomplete
;
@
ViewChild
(
MatAutocompleteTrigger
)
autocompleteTrigger
:
MatAutocompleteTrigger
;
@
ViewChild
(
'searchInput'
,
{
static
:
false
})
searchInput
:
ElementRef
;
autocompleteVisible
:
boolean
=
true
;
idRecuperado
:
number
;
myForm
:
FormGroup
;
docenteParticipante
:
DocenteParticipante
;
responsableProg
:
ResponsableProg
;
responsableProgAll
!
:
ResponsableProg
[]
selectedDepartamentoId
:
number
;
selectedCampusId
:
number
;
searchTerm
:
string
;
debounceTimeout
:
any
;
tipres
!
:
TiPres
[]
tipres
!
:
TiPres
[]
selectedUsuario
:
Usuario
;
idUsuario
:
number
filteredOptions
:
Observable
<
Usuario
[]
>
;
myControl
=
new
FormControl
(
''
);
usuarios
:
Usuario
[];
enviarSolicitud
=
false
;
...
...
@@ -81,36 +70,26 @@ export class AsignacionDocentesComponent implements OnInit {
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
cambio
=
false
;
this
.
obtenerCampus
()
this
.
obtenerFuncion
()
this
.
obtenerUsuarios
()
this
.
obtenerDepartamento
()
this
.
filteredOptions
=
this
.
myControl
.
valueChanges
.
pipe
(
startWith
(
''
),
map
(
value
=>
this
.
_filter
(
value
||
''
)),
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
cambio
=
false
;
// Set initial value to false
this
.
obtenerCampus
();
this
.
obtenerFuncion
();
this
.
obtenerDepartamento
();
this
.
obtenerRegistros
()
this
.
myForm
=
this
.
formBuilder
.
group
({
numero
:
[{
value
:
''
,
disabled
:
true
},
Validators
.
required
],
funcion
:
[{
value
:
''
,
disabled
:
true
},
Validators
.
required
],
//nombres
: [{ value: '', disabled: true }, Validators.required],
nombre
:
[{
value
:
''
,
disabled
:
true
},
Validators
.
required
],
});
}
private
_filter
(
value
:
string
):
Usuario
[]
{
const
filterValue
=
value
.
toLowerCase
();
return
this
.
usuarios
.
filter
(
option
=>
(
option
.
uzytusuario_nombres
+
' '
+
option
.
uzytusuario_apellidos
).
toLowerCase
().
includes
(
filterValue
)
);
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
...
...
@@ -118,48 +97,52 @@ export class AsignacionDocentesComponent implements OnInit {
});
}
realizarBusqueda
()
{
clearTimeout
(
this
.
debounceTimeout
);
realizarBusqueda
(
searchTerm
:
string
)
{
clearTimeout
(
this
.
debounceTimeout
);
this
.
debounceTimeout
=
setTimeout
(()
=>
{
this
.
usuariosService
.
obtenerParametros
().
subscribe
(
data
=>
{
this
.
usuariosService
.
obtenerUsuarios
(
searchTerm
).
subscribe
(
data
=>
{
this
.
usuarios
=
data
;
console
.
log
(
this
.
usuarios
)
});
},
30
0
);
},
0
);
}
obtenerUsuarios
()
{
this
.
usuariosService
.
obtenerParametros
().
subscribe
(
usuarios
=>
{
this
.
usuarios
=
usuarios
;
},
error
=>
{
console
.
log
(
'Error al obtener los usuarios:'
,
error
);
}
);
}
displayFn
(
usuario
:
Usuario
):
string
{
return
usuario
?
usuario
.
uzytusuario_nombres
+
' '
+
usuario
.
uzytusuario_apellidos
:
''
;
}
onUsuarioSelected
(
usuario
:
Usuario
):
void
{
resetAutocompleteVisibility
()
{
this
.
autocompleteVisible
=
true
;
}
async
onUsuarioSelected
(
usuario
:
Usuario
):
Promise
<
void
>
{
await
this
.
datosCompartidos
.
datos$
.
subscribe
(()
=>
{
this
.
obtenerRegistros
();
});
console
.
log
(
"this.responsableProgAll2"
,
this
.
responsableProgAll
)
if
(
usuario
)
{
// Verificar si el idUsuario ya existe en los registros
const
usuarioExistente
=
this
.
responsableProgAll
.
find
(
responsable
=>
responsable
.
uzytusuario_id_docente
===
usuario
.
uzytusuario_id
);
if
(
usuarioExistente
)
{
this
.
openModal
(
"El usuario ya existe en los registros."
);
// Puedes mostrar un mensaje en la interfaz aquí si lo deseas
}
else
{
this
.
idUsuario
=
usuario
.
uzytusuario_id
;
console
.
log
(
"id idUsuario "
,
this
.
idUsuario
)
console
.
log
(
"idUsuario"
,
this
.
idUsuario
);
this
.
selectedUsuario
=
usuario
;
const
nombreCompleto
=
usuario
.
uzytusuario_nombres
+
" "
+
usuario
.
uzytusuario_apellidos
;
this
.
myControl
.
setValue
(
nombreCompleto
);
// Asigna el nombre completo al FormControl
// Cierra el componente de autocompletar manualmente usando el trigger
if
(
this
.
autocompleteTrigger
)
{
this
.
autocompleteTrigger
.
closePanel
();
this
.
myForm
.
get
(
'nombre'
).
patchValue
(
usuario
.
uzytusuario_nombres
+
' '
+
usuario
.
uzytusuario_apellidos
);
this
.
autocompleteVisible
=
false
;
}
}
else
{
console
.
log
(
"
no existe el usuario
"
);
console
.
log
(
"
No existe el usuario.
"
);
}
}
...
...
@@ -167,30 +150,32 @@ export class AsignacionDocentesComponent implements OnInit {
obtenerRegistros
()
{
if
(
this
.
idRecuperado
!==
undefined
)
{
this
.
responsableProgService
.
obtenerParametrosRelacionados
(
this
.
idRecuperado
)
.
subscribe
(
data
=>
{
this
.
responsableProgAll
=
data
;
});
}
}
onSubmit
()
{
if
(
this
.
myForm
.
valid
&&
this
.
myControl
.
valid
)
{
console
.
log
(
"id idUsuario "
,
this
.
idUsuario
)
if
(
this
.
myForm
.
valid
)
{
console
.
log
(
"id idUsuario "
,
this
.
idUsuario
)
this
.
responsableProg
.
uzytavproyec_id
=
this
.
idRecuperado
;
this
.
responsableProg
.
uzytusuario_id_docente
=
this
.
idUsuario
;
this
.
responsableProg
.
uzytavtipres_id
=
this
.
myForm
.
value
.
funcion
this
.
responsableProg
.
uzytavresponsable_prog_g_horas_planif
=
this
.
myForm
.
value
.
numero
/*/
this.docenteParticipante.uzytavcamp_code = this.selectedCampusId.toString();
this.docenteParticipante.uzytavsubj_code = this.selectedDepartamentoId.toString();
this.docenteParticipante.uzytavdocparti_numero = this.myForm.value.numero;
*/
this
.
responsableProgService
.
guardarParametros
(
this
.
responsableProg
).
subscribe
(
response
=>
{
console
.
log
(
"Datos enviados "
,
this
.
responsableProg
)
this
.
openModal
();
console
.
log
(
"Datos enviados "
,
this
.
responsableProg
)
this
.
openModal
(
'El Docente ha sido Agregado'
);
this
.
guardar
()
this
.
datosCompartidos
.
actualizarDatos
(
this
.
responsableProg
);
},
error
=>
{
console
.
log
(
error
)
//this.router.navigate(['main/Convocatorias']);
}
);
}
...
...
@@ -215,7 +200,7 @@ export class AsignacionDocentesComponent implements OnInit {
this
.
tipresService
.
obtenerParametros
().
subscribe
(
tipres
=>
{
this
.
tipres
=
tipres
.
filter
(
item
=>
item
.
uzytavtipres_id
===
1
||
item
.
uzytavtipres_id
===
2
);
console
.
log
(
"obtenido "
,
tipres
)
console
.
log
(
"obtenido "
,
tipres
)
},
error
=>
{
console
.
log
(
'Error al obtener los tipresService:'
,
error
);
...
...
@@ -244,15 +229,19 @@ export class AsignacionDocentesComponent implements OnInit {
this
.
cambio
=
false
;
this
.
myForm
.
disable
();
this
.
myForm
.
reset
()
this
.
myControl
.
reset
()
if
(
this
.
searchInput
&&
this
.
searchInput
.
nativeElement
)
{
this
.
searchInput
.
nativeElement
.
value
=
''
;
// Vacía el contenido del input
}
}
guardar
()
{
this
.
cambio
=
false
;
this
.
myForm
.
disable
();
this
.
myForm
.
reset
()
this
.
myControl
.
disable
();
this
.
myControl
.
reset
()
this
.
myForm
.
reset
();
if
(
this
.
searchInput
&&
this
.
searchInput
.
nativeElement
)
{
this
.
searchInput
.
nativeElement
.
value
=
''
;
// Vacía el contenido del input
}
}
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/listar-docentes-asignados/listar-docentes-asignados.component.css
View file @
3ca5b574
.principal
{
text-align
:
center
;
margin-bottom
:
2%
;
}
}
.grid-container
{
.grid-container
{
display
:
grid
;
grid-template-columns
:
5%
10%
45%
10%
5%
10%
15%
;
border
:
1px
solid
#ccc
;
}
}
#cabecera
{
#cabecera
{
background
:
linear-gradient
(
135deg
,
var
(
--background-base
)
22px
,
var
(
--background-hover
)
22px
,
...
...
@@ -30,10 +30,10 @@
transparent
69px
)
0
64px
;
background-color
:
var
(
--background-base
);
background-size
:
64px
128px
;
}
}
.Column
{
.Column
{
padding-left
:
0px
;
padding-right
:
0px
;
width
:
100px
;
...
...
@@ -42,23 +42,23 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis; */
}
}
.Column1
{
.Column1
{
padding-left
:
0px
;
padding-right
:
0px
;
width
:
10px
;
white-space
:
normal
;
overflow
:
visible
;
}
}
.Column2
{
.Column2
{
width
:
25px
;
padding-left
:
0px
;
padding-right
:
0px
;
}
}
.volver
{
.volver
{
position
:
absolute
;
top
:
50%
;
right
:
10px
;
...
...
@@ -76,52 +76,52 @@
outline
:
none
;
cursor
:
pointer
;
}
}
.grid-item
{
.grid-item
{
font-weight
:
bold
;
}
}
.grid-opciones
{
.grid-opciones
{
display
:
grid
;
grid-template-columns
:
1
fr
1
fr
1
fr
1
fr
;
}
.titulo
{
}
.titulo
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
}
.titulo-texto
{
.titulo-texto
{
font-weight
:
bold
;
font-size
:
18px
;
font-family
:
'Franklin Gothic Medium'
,
'Arial Narrow'
,
Arial
,
sans-serif
;
margin-right
:
10px
;
}
}
.componente
{
.componente
{
justify-content
:
center
;
align-items
:
center
;
}
}
.card
{
.card
{
background-color
:
rgb
(
252
,
252
,
251
)
}
}
.colorEditar
{
.colorEditar
{
color
:
blue
;
}
}
.colorEditar
svg
{
.colorEditar
svg
{
fill
:
blue
;
}
}
.contenedorP
{
.contenedorP
{
width
:
96%
;
margin-left
:
2%
;
margin-right
:
2%
;
...
...
@@ -130,15 +130,15 @@
text-align
:
center
;
margin-top
:
10%
;
background-color
:
white
;
}
.contenedor
:not
(
:last-child
)
{
}
.contenedor
:not
(
:last-child
)
{
margin-bottom
:
2px
;
}
}
.separador
{
.separador
{
margin-top
:
5%
;
}
.contenedor
{
}
.contenedor
{
width
:
96%
;
margin-left
:
2%
;
margin-right
:
2%
;
...
...
@@ -147,9 +147,9 @@
background-color
:
white
;
position
:
relative
;
z-index
:
1
;
}
}
.sobremontado
{
.sobremontado
{
position
:
relative
;
align-items
:
center
;
justify-content
:
center
;
...
...
@@ -166,55 +166,55 @@
z-index
:
2
;
border-radius
:
10px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
0.4
);
}
}
.sobremontado
span
{
.sobremontado
span
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin
:
0
;
}
}
.sobremontado
mat-icon
{
.sobremontado
mat-icon
{
margin-right
:
5px
;
}
}
.icono-instituciones
{
.icono-instituciones
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
font-size
:
20px
;
cursor
:
pointer
;
}
}
table
{
table
{
width
:
100%
;
border-collapse
:
collapse
;
margin-top
:
20px
;
font-family
:
'Roboto'
,
sans-serif
;
color
:
#333
;
}
}
table
th
,
table
td
{
table
th
,
table
td
{
padding
:
12px
;
text-align
:
left
;
border-bottom
:
1px
solid
#e0e0e0
;
}
}
table
th
{
table
th
{
background-color
:
rgb
(
248
,
249
,
250
);
font-weight
:
bold
;
text-transform
:
uppercase
;
}
}
table
td
{
table
td
{
position
:
relative
;
}
}
table
td
::after
{
table
td
::after
{
content
:
""
;
position
:
absolute
;
bottom
:
-1px
;
...
...
@@ -222,24 +222,24 @@
width
:
100%
;
height
:
1px
;
background-color
:
#e0e0e0
;
}
}
input
[
type
=
"text"
]
{
input
[
type
=
"text"
]
{
width
:
200px
;
padding
:
8px
;
border
:
1px
solid
#ccc
;
border-radius
:
5px
;
margin-left
:
10px
;
}
}
.area-busqueda
{
.area-busqueda
{
padding
:
20px
;
margin-top
:
30px
;
text-align
:
right
;
}
}
@media
(
max-width
:
600px
)
{
@media
(
max-width
:
600px
)
{
table
{
font-size
:
14px
;
}
...
...
@@ -248,21 +248,21 @@
table
td
{
padding
:
8px
;
}
}
}
.btn-observar
{
.btn-observar
{
border-radius
:
50%
;
width
:
36px
;
height
:
36px
;
}
}
.colorsito
{
.colorsito
{
background-color
:
rgb
(
248
,
249
,
250
);
}
}
.rounder
{
.rounder
{
border-radius
:
50%
;
background-color
:
rgb
(
71
,
127
,
75
);
display
:
flex
;
...
...
@@ -274,65 +274,65 @@
border
:
none
;
outline
:
none
;
cursor
:
pointer
;
}
}
.rounder
mat-icon
{
.rounder
mat-icon
{
font-size
:
24px
;
color
:
#fff
;
}
}
@media
(
max-width
:
768px
)
{
@media
(
max-width
:
768px
)
{
.rounder
{
width
:
30%
;
}
}
}
@media
(
max-width
:
480px
)
{
@media
(
max-width
:
480px
)
{
.rounder
{
width
:
40%
;
}
}
}
.margen
{
.margen
{
margin
:
10px
;
padding
:
10px
;
margin-bottom
:
10px
;
}
}
.bordes
{
.bordes
{
border-collapse
:
collapse
;
width
:
100%
;
}
}
.bordes
th
,
.bordes
td
{
.bordes
th
,
.bordes
td
{
border
:
1px
solid
black
;
padding
:
8px
;
}
}
.bordes
th
{
.bordes
th
{
background-color
:
#f5f5f5
;
font-weight
:
bold
;
}
}
.bordes
td
{
.bordes
td
{
background-color
:
#ffffff
;
}
}
.bordes
tr
:nth-child
(
even
)
{
.bordes
tr
:nth-child
(
even
)
{
background-color
:
#f9f9f9
;
}
}
.bordes
tr
:hover
{
.bordes
tr
:hover
{
background-color
:
#eaeaea
;
}
}
.bordes
th
:last-child
,
.bordes
td
:last-child
{
.bordes
th
:last-child
,
.bordes
td
:last-child
{
border-bottom
:
none
;
}
}
.rounder-nuevo
{
.rounder-nuevo
{
border-radius
:
50%
;
background-color
:
rgb
(
71
,
127
,
75
);
display
:
flex
;
...
...
@@ -345,37 +345,37 @@
outline
:
none
;
cursor
:
pointer
;
margin-left
:
5px
;
}
}
.white-icon
{
.white-icon
{
color
:
white
;
}
}
.btn
{
.btn
{
padding
:
0
2%
0
2%
;
}
}
.azul
{
.azul
{
color
:
blue
;
}
}
.institution
{
.institution
{
display
:
flex
;
align-items
:
center
;
}
}
.institution-name
{
.institution-name
{
font-size
:
20px
;
/* Tamaño de fuente deseado */
font-weight
:
bold
;
/* Opcional, para hacerlo más destacado */
margin-right
:
30px
;
/* Espacio entre el icono y el nombre */
}
}
.add-icon
{
.add-icon
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
...
...
@@ -392,5 +392,4 @@
font-size
:
25px
;
/* Tamaño del signo "+" */
}
\ No newline at end of file
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/listar-docentes-asignados/listar-docentes-asignados.component.html
View file @
3ca5b574
...
...
@@ -12,35 +12,43 @@
<!-- Dirección Column -->
<ng-container
matColumnDef=
"
Campu
s"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Campus
</th>
<ng-container
matColumnDef=
"
Nombre
s"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Nombre
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
{{dato.
campus$ | async
}}
</td>
{{dato.
usuario.uzytusuario_nombres
}}
</td>
</ng-container>
<ng-container
matColumnDef=
"
Departamento
"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Departament
o
</th>
<ng-container
matColumnDef=
"
Apellidos
"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Apellid
o
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
{{ dato.
departamento$ | async
}}
{{ dato.
usuario.uzytusuario_apellidos
}}
</td>
</ng-container>
<ng-container
matColumnDef=
"Docentes Participantes"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Docentes Participantes
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
{{dato.uzytavdocparti_numero}}
</td>
<ng-container
matColumnDef=
"Funcion"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Funcion
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
{{ dato.tiPres.uzytavtipres_descrip }}
</td>
</ng-container>
<ng-container
matColumnDef=
"HorasP"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Horas Planificadas
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
{{ dato.uzytavresponsable_prog_g_horas_planif }}
</td>
</ng-container>
<ng-container
matColumnDef=
"Acciones"
class=
"Column"
>
<th
class=
"Column"
mat-header-cell
*
matHeaderCellDef
mat-sort-header
>
Acciones
</th>
<td
class=
"Column"
mat-cell
*
matCellDef=
"let dato"
>
<!--eliminar-->
<button>
<mat-icon
color=
"warn"
(
click
)="
eliminarParametro
(
dato
.
uzytav
docparti
_id
)"
>
delete
</mat-icon>
<mat-icon
color=
"warn"
(
click
)="
eliminarParametro
(
dato
.
uzytav
responsable_prog
_id
)"
>
delete
</mat-icon>
</button>
</td>
</ng-container>
...
...
@@ -48,14 +56,5 @@
<tr
mat-header-row
*
matHeaderRowDef=
"displayedColumns"
></tr>
<tr
mat-row
*
matRowDef=
"let row; columns: displayedColumns;"
></tr>
</table>
<table>
<!-- Nueva tabla para la fila de total -->
<tr>
<td
class=
"Column1 negrita "
colspan=
"1"
>
Total
</td>
<td
class=
"Column "
>
{{ totalDocentesParticipantes }}
</td>
<td
class=
"Column "
></td>
<td
class=
"Column "
></td>
</tr>
</table>
</div>
</div>
src/app/modules/main/pages/Proyectos/Inicio Ejecución/Asignacion Docentes/listar-docentes-asignados/listar-docentes-asignados.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
MatTableDataSource
}
from
'@angular/material/table'
;
import
{
Observable
,
of
}
from
'rxjs'
;
import
{
Observable
,
forkJoin
,
of
}
from
'rxjs'
;
import
{
map
}
from
'rxjs/operators'
;
import
{
DocenteParticipante
}
from
'src/app/modules/main/Models/docente-participante'
;
import
{
Programa
}
from
'src/app/modules/main/Models/programa-v'
;
import
{
Proyectos
}
from
'src/app/modules/main/Models/proyectos'
;
import
{
ResponsableProg
}
from
'src/app/modules/main/Models/responsable-prog'
;
import
{
TiPres
}
from
'src/app/modules/main/Models/tiv-pres'
;
import
{
Usuario
}
from
'src/app/modules/main/Models/usuario'
;
import
{
DatosEspeService
}
from
'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
DocentesParticipantesService
}
from
'src/app/modules/main/services/docentes-participantes/docentes-participantes.service'
;
import
{
MostrarOcultarService
}
from
'src/app/modules/main/services/mostrar-ocultar.service'
;
import
{
ResponsableProgService
}
from
'src/app/modules/main/services/responsable-prog/responsable-prog.service'
;
import
{
TipresService
}
from
'src/app/modules/main/services/tipres/tipres.service'
;
import
{
UsuariosService
}
from
'src/app/modules/main/services/usuarios/usuarios.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
@
Component
({
selector
:
'app-listar-docentes-asignados'
,
...
...
@@ -16,64 +26,97 @@ import { DocentesParticipantesService } from 'src/app/modules/main/services/doce
})
export
class
ListarDocentesAsignadosComponent
implements
OnInit
{
idRecuperado
:
number
;
dataSource
:
MatTableDataSource
<
DocenteParticipante
>
;
dataSource
:
MatTableDataSource
<
ResponsableProg
>
;
docenteParticipante
:
DocenteParticipante
[]
=
[];
programas
:
Programa
[];
// Arreglo de programas obtenidos del servicio
selectedProgramaId
:
number
;
displayedColumns
:
string
[]
=
[
'Nro'
,
'Campus'
,
'Departamento'
,
'Docentes Participantes'
,
'Acciones'
];
displayedColumns
:
string
[]
=
[
'Nro'
,
'Nombres'
,
'Apellidos'
,
'Funcion'
,
'HorasP'
,
'Acciones'
];
totalDocentesParticipantes
:
number
=
0
;
//total de participantes
usuario
!
:
Usuario
[];
tiPres
!
:
TiPres
[];
proyecto
:
Proyectos
responsableProg
!
:
ResponsableProg
[]
constructor
(
private
idCompartido
:
Compartir_idService
,
private
datosCompar
:
Actualiza_datosService
,
private
docentesParticipantesService
:
DocentesParticipantesService
,
private
datosEspeService
:
DatosEspeService
private
responsableProgService
:
ResponsableProgService
,
private
datosEspeService
:
DatosEspeService
,
private
mostrarOcultarService
:
MostrarOcultarService
,
private
datosUsuarioService
:
UsuariosService
,
private
tipresService
:
TipresService
,
private
datosCompartidos
:
Actualiza_datosService
,
private
dialog
:
MatDialog
)
{
this
.
dataSource
=
new
MatTableDataSource
<
DocenteParticipante
>
([]);
this
.
dataSource
=
new
MatTableDataSource
<
ResponsableProg
>
([]);
}
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
proyecto
=
this
.
mostrarOcultarService
.
editProyecto
;
this
.
datosCompar
.
datos$
.
subscribe
(()
=>
{
this
.
obtenerRegistros
();
});
this
.
docentesParticipantes
Service
.
parametrosActualizados
.
subscribe
(()
=>
{
this
.
responsableProg
Service
.
parametrosActualizados
.
subscribe
(()
=>
{
this
.
obtenerRegistros
();
});
}
obtenerRegistros
()
{
if
(
this
.
idRecuperado
!==
undefined
)
{
this
.
docentesParticipantesService
.
obtenerRegistrosRelacionadosProyecto
(
this
.
idRecuperado
).
subscribe
(
data
=>
{
this
.
docenteParticipante
=
data
.
map
(
docente
=>
{
return
{
...
docente
,
departamento
$
:
this
.
obtenerDatosDepartamento
(
docente
.
uzytavsubj_code
),
campus
$
:
this
.
obtenerDatosCampus
(
docente
.
uzytavcamp_code
)
};
this
.
responsableProgService
.
obtenerParametrosRelacionados
(
this
.
idRecuperado
)
.
subscribe
(
data
=>
{
if
(
data
!==
undefined
)
{
const
userObservables
:
Observable
<
Usuario
>
[]
=
[];
const
tiPresObservables
:
Observable
<
TiPres
>
[]
=
[];
for
(
const
responsable
of
data
)
{
console
.
log
(
"id usuario "
,
responsable
.
uzytusuario_id_docente
)
console
.
log
(
"id obtenerTipres "
,
responsable
.
uzytusuario_id_docente
)
userObservables
.
push
(
this
.
obtenerUsuarios
(
responsable
.
uzytusuario_id_docente
));
tiPresObservables
.
push
(
this
.
obtenerTipres
(
responsable
.
uzytavtipres_id
));
}
forkJoin
([...
userObservables
,
...
tiPresObservables
]).
subscribe
(
results
=>
{
const
users
=
results
.
slice
(
0
,
userObservables
.
length
);
const
tiPres
=
results
.
slice
(
userObservables
.
length
);
this
.
responsableProg
=
data
.
map
((
responsable
,
index
)
=>
({
...
responsable
,
usuario
:
users
[
index
],
tiPres
:
tiPres
[
index
]
}));
console
.
log
(
"this.responsableProg;"
,
this
.
responsableProg
);
this
.
dataSource
.
data
=
this
.
responsableProg
;
});
this
.
dataSource
.
data
=
this
.
docenteParticipante
;
this
.
calcularTotalDocentesParticipantes
();
// Total de docentes
}
});
}
}
calcularTotalDocentesParticipantes
()
{
this
.
totalDocentesParticipantes
=
0
;
// Reinicia el total a 0
for
(
const
docente
of
this
.
docenteParticipante
)
{
this
.
totalDocentesParticipantes
+=
docente
.
uzytavdocparti_numero
;
obtenerUsuarios
(
id
:
number
)
{
return
this
.
datosUsuarioService
.
obtenerUsuariosId
(
id
)
;
}
obtenerTipres
(
id
:
number
){
return
this
.
tipresService
.
obtenerParametrosId
(
id
);
}
obtenerDatosCampus
(
codigo
:
string
):
Observable
<
string
>
{
return
this
.
datosEspeService
.
obtenerCampus
().
pipe
(
map
(
campus
=>
{
...
...
@@ -94,12 +137,15 @@ export class ListarDocentesAsignadosComponent implements OnInit {
eliminarParametro
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
docentesParticipantes
Service
.
eliminarParametros
(
id
).
subscribe
(
this
.
openModalDelete
(
'¿Desea eliminar el Docente?'
).
subscribe
(
resutl
=>
{
if
(
resutl
)
{
this
.
responsableProg
Service
.
eliminarParametros
(
id
).
subscribe
(
()
=>
{
console
.
log
(
'El registro se ha eliminado'
);
this
.
datosCompartidos
.
actualizarDatos
(
this
.
responsableProg
);
this
.
obtenerRegistros
();
},
(
error
)
=>
{
// No mostrar el error en la consola
...
...
@@ -107,7 +153,16 @@ export class ListarDocentesAsignadosComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/compromiso participacion/add-compromiso/add-compromiso.component.ts
View file @
3ca5b574
...
...
@@ -8,6 +8,10 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde
import
{
EnvioFormularioComponent
}
from
'../../../../programa/opciones/envio-formulario/envio-formulario.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Parroquia
}
from
'src/app/modules/main/Models/Ubicaciones/parroquia'
;
import
{
Canton
}
from
'src/app/modules/main/Models/Ubicaciones/canton'
;
import
{
Provincia
}
from
'src/app/modules/main/Models/Ubicaciones/provincia'
;
import
{
UbicacionesService
}
from
'src/app/modules/main/services/Ubicaciones/ubicaciones.service'
;
@
Component
({
...
...
@@ -26,13 +30,18 @@ export class AddCompromisoComponent implements OnInit {
entidad
:
parametrosdet
[]
=
[];
orga
:
parametrosdet
[]
=
[];
institu
:
Instituciones
[]
=
[];
parroquias
:
Parroquia
[]
=
[];
cantones
:
Canton
[]
=
[];
provincias
:
Provincia
[]
=
[];
constructor
(
private
formBuilder
:
FormBuilder
,
private
instP
:
ParametrosdetService
,
private
instituS
:
InstitucionesService
,
private
instproyM
:
instproy
,
private
dialog
:
MatDialog
,
private
datosCompartidos
:
Actualiza_datosService
private
datosCompartidos
:
Actualiza_datosService
,
private
UbicacionesS
:
UbicacionesService
)
{
}
ngOnInit
():
void
{
...
...
@@ -62,10 +71,10 @@ export class AddCompromisoComponent implements OnInit {
this
.
instproyM
.
uzytparametros_det_id_organizacion
=
this
.
myForm
.
get
(
'organizacionI'
).
value
;
this
.
instproyM
.
uzytavinstproy_declaracion
=
this
.
myForm
.
get
(
'declaracion'
).
value
;
this
.
instP
.
guardarParametros
(
this
.
instproyM
).
subscribe
(
response
=>
{
this
.
openModal
();
this
.
openModal
(
'Los Datos han sido Enviados'
);
this
.
instP
.
parametrosActualizados
.
next
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
instproyM
);
this
.
formularioGuardado
.
emit
();
});
}
catch
(
error
)
{
console
.
error
(
'Error al enviar los datos:'
,
error
);
...
...
@@ -86,11 +95,24 @@ export class AddCompromisoComponent implements OnInit {
this
.
instituS
.
obtenerParametros
().
subscribe
(
data
=>
{
this
.
institu
=
data
;
});
this
.
UbicacionesS
.
obtenerProvincias
().
subscribe
(
data
=>
{
this
.
provincias
=
data
;
});
this
.
UbicacionesS
.
obtenerCant
().
subscribe
(
data
=>
{
this
.
cantones
=
data
;
})
this
.
UbicacionesS
.
obtenerParro
().
subscribe
(
data
=>
{
this
.
parroquias
=
data
;
});
}
onInstitucionSelected
(
selectedInstitucionId
:
number
)
{
const
selectedInstitucion
=
this
.
institu
.
find
(
item
=>
item
.
uzytavinstituc_id
===
selectedInstitucionId
);
if
(
selectedInstitucion
)
{
this
.
myForm
.
get
(
'provinciaI'
)?.
setValue
(
this
.
getParroquiaNombre
(
selectedInstitucion
.
uzytparroquia_id
));
this
.
myForm
.
get
(
'direccionI'
)?.
setValue
(
selectedInstitucion
.
uzytavinstituc_calle
);
this
.
myForm
.
get
(
'nombreR'
)?.
setValue
(
selectedInstitucion
.
uzytavinstituc_nombre
);
this
.
myForm
.
get
(
'apellidoR'
)?.
setValue
(
selectedInstitucion
.
uzytavinstituc_apellirl
);
...
...
@@ -100,7 +122,7 @@ export class AddCompromisoComponent implements OnInit {
}
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
});
...
...
@@ -110,4 +132,15 @@ export class AddCompromisoComponent implements OnInit {
this
.
formularioEnviado
=
true
;
});
}
getParroquiaNombre
(
parroquiaId
:
string
):
string
{
const
parroquia
=
this
.
parroquias
.
find
(
p
=>
p
.
uzytparroquia_id
===
parroquiaId
);
if
(
parroquia
)
{
const
canton
=
this
.
cantones
.
find
(
c
=>
c
.
uzytcanton_id
===
parroquia
.
uzytcanton_id
)
const
prov
=
this
.
provincias
.
find
(
pro
=>
pro
.
uzytprovincia_id
===
canton
.
uzytprovincia_id
)
const
nombre
=
prov
.
uzytprovincia_nombre
.
toLowerCase
();
return
nombre
.
charAt
(
0
).
toUpperCase
()
+
nombre
.
slice
(
1
);
}
return
''
;
}
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/compromiso participacion/list-compromiso/list-compromiso.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
MatTableDataSource
}
from
'@angular/material/table'
;
import
{
Observable
}
from
'rxjs'
;
import
{
Canton
}
from
'src/app/modules/main/Models/Ubicaciones/canton'
;
import
{
Parroquia
}
from
'src/app/modules/main/Models/Ubicaciones/parroquia'
;
import
{
Provincia
}
from
'src/app/modules/main/Models/Ubicaciones/provincia'
;
...
...
@@ -11,6 +12,8 @@ import { UbicacionesService } from 'src/app/modules/main/services/Ubicaciones/ub
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
ParametrosdetService
}
from
'src/app/modules/main/services/parametrosdet/parametrosdet.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
@
Component
({
selector
:
'vex-list-compromiso'
,
...
...
@@ -36,7 +39,8 @@ export class ListCompromisoComponent implements OnInit {
private
instP
:
ParametrosdetService
,
private
ubicacionesS
:
UbicacionesService
,
private
InstitucionesS
:
InstitucionesService
,
private
paratS
:
ParametrosdetService
private
paratS
:
ParametrosdetService
,
private
dialog
:
MatDialog
)
{
this
.
dataSource
=
new
MatTableDataSource
<
instproy
>
([]);
}
...
...
@@ -169,8 +173,8 @@ export class ListCompromisoComponent implements OnInit {
eliminarParametro
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Desea Eliminar la Institución?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
instP
.
eliminarParametros
(
id
).
subscribe
(
()
=>
{
console
.
log
(
'El registro se ha eliminado'
);
...
...
@@ -182,7 +186,17 @@ export class ListCompromisoComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Inicio Ejecución/compromiso participacion/list-documentos/list-documentos.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
,
Input
}
from
'@angular/core'
;
import
{
Component
,
OnInit
,
Input
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
docompar
}
from
'src/app/modules/main/Models/docompar'
;
import
{
AddDocumentosComponent
}
from
'../add-documentos/add-documentos.component'
;
...
...
@@ -6,6 +6,8 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde
import
{
ActualizarAnexosService
}
from
'src/app/modules/main/services/actualizar_anexos/actualizar-anexos.service'
;
import
{
saveAs
}
from
'file-saver'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Observable
}
from
'rxjs'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
@
Component
({
selector
:
'vex-list-documentos'
,
templateUrl
:
'./list-documentos.component.html'
,
...
...
@@ -23,16 +25,16 @@ export class ListDocumentosComponent implements OnInit {
)
{
}
ngOnInit
():
void
{
this
.
datosCompartidos
.
datos$
.
subscribe
(()
=>
{
this
.
datosCompartidos
.
datos$
.
subscribe
(()
=>
{
this
.
obtenerDocumentos
();
});
this
.
pdfService
.
parametrosActualizados
.
subscribe
(()
=>
{
this
.
pdfService
.
parametrosActualizados
.
subscribe
(()
=>
{
this
.
obtenerDocumentos
();
});
}
GuardarParametro
(){
GuardarParametro
()
{
const
dialogRef
=
this
.
dialog
.
open
(
AddDocumentosComponent
,
{
data
:
{
idConf
:
this
.
idConf
}
});
...
...
@@ -70,18 +72,18 @@ export class ListDocumentosComponent implements OnInit {
return
'document.pdf'
;
// Nombre predeterminado si no se puede obtener el nombre del archivo
}
obtenerDocumentos
(){
obtenerDocumentos
()
{
this
.
pdfService
.
obtenerNombrePDF
().
subscribe
(
data
=>
{
this
.
documentoInst
=
data
.
filter
(
item
=>
item
.
uzytavinstproy_id
===
this
.
idConf
);
});
}
descargar
(){
descargar
()
{
}
eliminarParametro
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Estás seguro de que quieres eliminar este parámetro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Desea eliminar el PDF?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
pdfService
.
eliminarPDF
(
id
).
subscribe
(
()
=>
{
// Manejar la eliminación exitosa
...
...
@@ -96,5 +98,16 @@ export class ListDocumentosComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Presupuesto detallado/aporte-comunidad/aporte-comunidad.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
MatTable
,
MatTableDataSource
}
from
'@angular/material/table'
;
import
{
Observable
}
from
'rxjs'
;
import
{
CatalogoPP
}
from
'src/app/modules/main/Models/catalogo-partidas-presupuestarias'
;
import
{
PartidasPresupuestarias
}
from
'src/app/modules/main/Models/partidas-presupuestarias'
;
import
{
PresupuestoPartidas
}
from
'src/app/modules/main/Models/presupuesto-partidas'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
PresupuestoPartidasService
}
from
'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
@
Component
({
selector
:
'app-aporte-comunidad'
,
...
...
@@ -97,6 +99,7 @@ export class AporteComunidadComponent implements OnInit {
eliminarParametros
(
id
:
number
)
{
this
.
openModalDelete
(
'¿Dsea eliminar el Aporte de la Comunidad?'
).
subscribe
(
result
=>
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
presupuestoPartidasService
.
eliminarParametros
(
id
).
subscribe
(
...
...
@@ -109,7 +112,18 @@ export class AporteComunidadComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Presupuesto detallado/aporte-entidad/aporte-entidad.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
MatTable
,
MatTableDataSource
}
from
'@angular/material/table'
;
import
{
Observable
}
from
'rxjs'
;
import
{
CatalogoPP
}
from
'src/app/modules/main/Models/catalogo-partidas-presupuestarias'
;
import
{
PartidasPresupuestarias
}
from
'src/app/modules/main/Models/partidas-presupuestarias'
;
import
{
PresupuestoPartidas
}
from
'src/app/modules/main/Models/presupuesto-partidas'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
PresupuestoPartidasService
}
from
'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
@
Component
({
...
...
@@ -51,7 +53,7 @@ export class AporteEntidadComponent implements OnInit {
}
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
datosCompartidos
.
datos$
.
subscribe
(()
=>
{
this
.
obtenerRegistros
();
});
...
...
@@ -100,6 +102,7 @@ export class AporteEntidadComponent implements OnInit {
eliminarParametros
(
id
:
number
)
{
this
.
openModalDelete
(
'¿Dsea eliminar el Aporte de la Universidad?'
).
subscribe
(
result
=>
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
presupuestoPartidasService
.
eliminarParametros
(
id
).
subscribe
(
...
...
@@ -112,5 +115,16 @@ export class AporteEntidadComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Presupuesto detallado/aporte-universidad/aporte-universidad.component.ts
View file @
3ca5b574
...
...
@@ -10,6 +10,7 @@ import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
PartidasPresupuestariasService
}
from
'src/app/modules/main/services/partidas-presupuestarias/partidas-presupuestarias.service'
;
import
{
PresupuestoPartidasService
}
from
'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
@
Component
({
selector
:
'app-aporte-universidad'
,
...
...
@@ -166,8 +167,8 @@ export class AporteUniversidadComponent implements OnInit {
eliminarParametros
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Dsea eliminar el Aporte de la Universidad?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
presupuestoPartidasService
.
eliminarParametros
(
id
).
subscribe
(
(
response
)
=>
{
console
.
log
(
'El registro se ha eliminado exitosamente.'
);
...
...
@@ -178,6 +179,18 @@ export class AporteUniversidadComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Presupuesto detallado/list-comunidad/list-comunidad.component.ts
View file @
3ca5b574
...
...
@@ -7,6 +7,8 @@ import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-par
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
PresupuestoPartidasService
}
from
'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
import
{
Observable
}
from
'rxjs'
;
@
Component
({
selector
:
'app-list-comunidad'
,
...
...
@@ -37,7 +39,7 @@ export class ListComunidadComponent implements OnInit {
}
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
datosCompartidos
.
datos$
.
subscribe
(()
=>
{
this
.
obtenerRegistros
();
});
...
...
@@ -85,8 +87,8 @@ export class ListComunidadComponent implements OnInit {
eliminarParametros
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Dsea eliminar el Aporte de la Comunidad?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
presupuestoPartidasService
.
eliminarParametros
(
id
).
subscribe
(
(
response
)
=>
{
console
.
log
(
'El registro se ha eliminado exitosamente.'
);
...
...
@@ -97,7 +99,17 @@ export class ListComunidadComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/pages/Proyectos/Presupuesto detallado/list-entidad/list-entidad.component.ts
View file @
3ca5b574
import
{
Component
,
OnInit
,
ViewChild
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
MatTable
,
MatTableDataSource
}
from
'@angular/material/table'
;
import
{
Observable
}
from
'rxjs'
;
import
{
CatalogoPP
}
from
'src/app/modules/main/Models/catalogo-partidas-presupuestarias'
;
import
{
PartidasPresupuestarias
}
from
'src/app/modules/main/Models/partidas-presupuestarias'
;
import
{
PresupuestoPartidas
}
from
'src/app/modules/main/Models/presupuesto-partidas'
;
import
{
Actualiza_datosService
}
from
'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'
;
import
{
Compartir_idService
}
from
'src/app/modules/main/services/compartir_id/compartir_id.service'
;
import
{
PresupuestoPartidasService
}
from
'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'
;
import
{
ConfirmacionEliminacionComponent
}
from
'../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component'
;
@
Component
({
selector
:
'app-list-entidad'
,
...
...
@@ -88,8 +90,8 @@ export class ListEntidadComponent implements OnInit {
eliminarParametros
(
id
:
number
)
{
const
confirmacion
=
confirm
(
'¿Desea eliminar el registro?'
);
if
(
confirmacion
)
{
this
.
openModalDelete
(
'¿Dsea eliminar el Aporte de la Entidad Auspiciante?'
).
subscribe
(
result
=>
{
if
(
result
)
{
this
.
presupuestoPartidasService
.
eliminarParametros
(
id
).
subscribe
(
(
response
)
=>
{
console
.
log
(
'El registro se ha eliminado exitosamente.'
);
...
...
@@ -100,5 +102,16 @@ export class ListEntidadComponent implements OnInit {
}
);
}
});
}
formularioEnviado
:
boolean
;
openModalDelete
(
mensaje
:
string
):
Observable
<
string
>
{
const
dialogRef
=
this
.
dialog
.
open
(
ConfirmacionEliminacionComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
return
dialogRef
.
afterClosed
();
}
}
src/app/modules/main/services/responsable-prog/responsable-prog.service.ts
View file @
3ca5b574
...
...
@@ -10,7 +10,9 @@ import { ResponsableProg } from '../../Models/responsable-prog';
})
export
class
ResponsableProgService
{
private
readonly
URL
=
environment
.
appApiUrl
+
'/cabevalp'
;
private
readonly
URL
=
environment
.
appApiUrl
+
'/responsableprog'
;
private
readonly
URLRelacionadoProyec
=
environment
.
appApiUrl
+
'/responsableprog/obtenerRegistrosPorProyectID'
;
parametrosActualizados
:
Subject
<
void
>
=
new
Subject
<
void
>
();
private
idCabEvalProy
:
number
;
...
...
@@ -25,12 +27,14 @@ export class ResponsableProgService {
return
this
.
httpClient
.
get
<
ResponsableProg
>
(
`
${
this
.
URL
}
/exampleFindId/
${
id
}
`
)
}
obtenerParametrosRelacionados
(
idProyecto
:
number
):
Observable
<
ResponsableProg
[]
>
{
return
this
.
httpClient
.
get
<
ResponsableProg
[]
>
(
`
${
this
.
URLRelacionadoProyec
}
/
${
idProyecto
}
`
)
}
guardarParametros
(
parametros
:
ResponsableProg
):
Observable
<
Object
>
{
return
this
.
httpClient
.
post
(
`
${
this
.
URL
+
"/guardar"
}
`
,
parametros
).
pipe
(
tap
((
response
:
any
)
=>
{
this
.
idCabEvalProy
=
response
.
uzytavcabevalp_id
;
console
.
log
(
"id cabecera evaluacion"
,
this
.
idCabEvalProy
)
// Captura el ID devuelto por el servidor
})
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment