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
acbf6245
Commit
acbf6245
authored
Aug 26, 2023
by
José Alejandro Cáceres López
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
validaciones y controles
parent
69f52ad1
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
320 additions
and
140 deletions
+320
-140
acta-director-proyecto.component.html
...a-director-proyecto/acta-director-proyecto.component.html
+10
-10
acta-director-proyecto.component.ts
...cta-director-proyecto/acta-director-proyecto.component.ts
+74
-22
acta-compromiso-carreras.component.html
...mpromiso-carreras/acta-compromiso-carreras.component.html
+10
-10
acta-compromiso-carreras.component.ts
...compromiso-carreras/acta-compromiso-carreras.component.ts
+29
-4
acta-consejo-departamento.component.html
...ejo-departamento/acta-consejo-departamento.component.html
+10
-10
acta-consejo-departamento.component.ts
...nsejo-departamento/acta-consejo-departamento.component.ts
+31
-5
cobertura-proyecto.component.html
...cion/cobertura-proyecto/cobertura-proyecto.component.html
+6
-6
cobertura-proyecto.component.ts
...zacion/cobertura-proyecto/cobertura-proyecto.component.ts
+34
-20
add-datos-generales.component.css
...les/add-datos-generales/add-datos-generales.component.css
+8
-5
add-datos-generales.component.html
...es/add-datos-generales/add-datos-generales.component.html
+8
-7
edit-datos-generales-proyecto.component.html
...les-proyecto/edit-datos-generales-proyecto.component.html
+7
-7
edit-entregables.component.css
... Proyecto/edit-entregables/edit-entregables.component.css
+4
-0
edit-entregables.component.html
...Proyecto/edit-entregables/edit-entregables.component.html
+20
-10
edit-entregables.component.ts
...l Proyecto/edit-entregables/edit-entregables.component.ts
+15
-5
add-anexos-imagenes.component.html
...es/add-anexos-imagenes/add-anexos-imagenes.component.html
+1
-1
edit-diagnostico.component.html
...problema/edit-diagnostico/edit-diagnostico.component.html
+7
-1
edit-diagnostico.component.ts
...y problema/edit-diagnostico/edit-diagnostico.component.ts
+13
-3
error-texto.component.css
...s/Proyectos/errores/error-texto/error-texto.component.css
+2
-2
error-texto.component.html
.../Proyectos/errores/error-texto/error-texto.component.html
+1
-1
error-texto.component.ts
...es/Proyectos/errores/error-texto/error-texto.component.ts
+7
-4
convocatorias-agregar.component.ts
.../convocatorias-agregar/convocatorias-agregar.component.ts
+16
-3
envio-formulario.component.html
...opciones/envio-formulario/envio-formulario.component.html
+1
-1
envio-formulario.component.ts
...a/opciones/envio-formulario/envio-formulario.component.ts
+6
-3
No files found.
src/app/modules/main/pages/Proyectos/Acta Compromiso Director Proyecto/acta-director-proyecto/acta-director-proyecto.component.html
View file @
acbf6245
...
...
@@ -3,30 +3,30 @@
<!-- Información de la institución -->
<div
class=
"save-button"
>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"!cambio"
(
click
)="
cambiar
()"
>
Editar
</button>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"cambio"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="!
archivoEsPDFValido
"
*
ngIf=
"cambio"
>
Guardar
</button>
<span
class=
"separator"
></span>
<button
mat-raised-button
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
</div>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part1_url == null && !cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part1_url == null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<button
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part1_url != null && !cambio"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_com_part1_url
,
proyecto
.
uzytavproyec_com_part1_nom
)"
aria-placeholder=
"Ver PDF"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_com_part1_url
,
proyecto
.
uzytavproyec_com_part1_nom
)"
aria-placeholder=
"Ver PDF"
>
Descargar PDF
</button>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part1_url != null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
</form>
</div>
src/app/modules/main/pages/Proyectos/Acta Compromiso Director Proyecto/acta-director-proyecto/acta-director-proyecto.component.ts
View file @
acbf6245
...
...
@@ -15,6 +15,8 @@ import { Proyectos } from 'src/app/modules/main/Models/proyectos';
import
{
DatosEspeService
}
from
'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'
;
import
{
MostrarOcultarService
}
from
'src/app/modules/main/services/mostrar-ocultar.service'
;
import
{
saveAs
}
from
'file-saver'
;
import
{
ErroresComponent
}
from
'../../../programa/opciones/errores/errores.component'
;
import
{
ErrorTextoComponent
}
from
'../../errores/error-texto/error-texto.component'
;
@
Component
({
selector
:
'app-acta-director-proyecto'
,
...
...
@@ -22,7 +24,7 @@ import { saveAs } from 'file-saver';
styleUrls
:
[
'./acta-director-proyecto.component.css'
]
})
export
class
ActaDirectorProyectoComponent
implements
OnInit
{
archivoEsPDFValido
:
boolean
=
false
;
myForm
:
FormGroup
;
selectedFile
:
File
|
null
=
null
;
file
:
File
;
...
...
@@ -48,7 +50,7 @@ export class ActaDirectorProyectoComponent implements OnInit {
}
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
proyecto
=
this
.
mostrarOcultarService
.
editProyecto
;
this
.
cambio
=
false
;
...
...
@@ -68,14 +70,43 @@ export class ActaDirectorProyectoComponent implements OnInit {
const
fileList
:
FileList
=
event
.
target
.
files
;
if
(
fileList
.
length
>
0
)
{
this
.
file
=
fileList
[
0
];
if
(
!
this
.
validarArchivo
(
this
.
file
))
{
this
.
openModalError
(
'¡Por favor, selecciona un archivo PDF!'
);
return
;
}
else
{
this
.
archivoEsPDFValido
=
true
;
}
}
}
validarArchivo
(
file
:
File
):
boolean
{
const
fileName
=
file
.
name
;
return
fileName
.
toLocaleLowerCase
().
endsWith
(
'.pdf'
);
}
/*
onFileChange(event: any) {
// Obtener el archivo seleccionado
const fileList: FileList = event.target.files;
if (fileList.length > 0) {
const file = fileList[0];
const fileName = file.name;
if (!fileName.toLocaleLowerCase().endsWith('.pdf')) {
this.openModalError('¡Por favor, selecciona un archivo PDF!');
this.archivoEsPDFValido = false; // Establecer a false si no es un PDF
} else {
this.archivoEsPDFValido = true; // Establecer a true si es un PDF
// Continúa con el manejo del archivo si es un PDF
}
}
}
*/
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
width
:
'400px'
,
disableClose
:
true
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
...
...
@@ -87,22 +118,24 @@ export class ActaDirectorProyectoComponent implements OnInit {
if
(
this
.
myForm
.
valid
)
{
this
.
proyecto
.
uzytavproyec_id
=
this
.
idRecuperado
;
const
pdfData
=
await
this
.
enviarPDF
();
this
.
proyecto
.
uzytavproyec_com_part1_url
=
pdfData
.
idPDF
;
this
.
proyecto
.
uzytavproyec_com_part1_nom
=
pdfData
.
filename
;
this
.
proyectosService
.
modificarParametros
(
this
.
proyecto
.
uzytavproyec_id
,
this
.
proyecto
).
subscribe
(
response
=>
{
this
.
openModal
();
console
.
log
(
'Datos Actualizados'
,
this
.
proyecto
);
this
.
myForm
.
disable
();
this
.
cambio
=
false
;
},
error
=>
{
console
.
log
(
error
)
}
);
if
(
pdfData
.
idPDF
!==
null
&&
pdfData
.
idPDF
!==
undefined
)
{
this
.
proyecto
.
uzytavproyec_com_part1_url
=
pdfData
.
idPDF
;
this
.
proyecto
.
uzytavproyec_com_part1_nom
=
pdfData
.
filename
;
this
.
proyectosService
.
modificarParametros
(
this
.
proyecto
.
uzytavproyec_id
,
this
.
proyecto
).
subscribe
(
response
=>
{
this
.
openModal
(
'El PDF ha sido Enviado'
);
console
.
log
(
'Datos Actualizados'
,
this
.
proyecto
);
this
.
myForm
.
disable
();
this
.
cambio
=
false
;
},
error
=>
{
}
);
}
}
}
async
enviarPDF
()
{
const
formData
=
new
FormData
();
formData
.
append
(
'files'
,
this
.
file
);
...
...
@@ -115,8 +148,11 @@ export class ActaDirectorProyectoComponent implements OnInit {
filename
:
response
.
fileName
};
}
catch
(
error
)
{
console
.
error
(
'Error al guardar el PDF en el servidor:'
,
error
);
throw
error
;
this
.
openModalError
(
'¡Este PDF ya se ha subido!'
);
return
{
idPDF
:
null
,
filename
:
''
};
}
}
...
...
@@ -137,11 +173,15 @@ export class ActaDirectorProyectoComponent implements OnInit {
},
error
=>
{
console
.
error
(
'Error al obtener el PDF:'
,
error
);
return
{
idPDF
:
null
,
filename
:
null
};
}
);
}
getFilenameFromResponse
(
contentDispositionHeader
:
string
|
null
):
string
{
if
(
contentDispositionHeader
)
{
const
matches
=
/filename
[^
;=
\n]
*=
(([
'"
])
.*
?\2
|
[^
;
\n]
*
)
/
.
exec
(
contentDispositionHeader
);
...
...
@@ -151,7 +191,7 @@ export class ActaDirectorProyectoComponent implements OnInit {
}
return
'document.pdf'
;
// Nombre predeterminado si no se puede obtener el nombre del archivo
}
cambiar
()
{
this
.
cambio
=
true
;
this
.
myForm
.
get
(
'archivo'
).
enable
();
...
...
@@ -160,4 +200,16 @@ export class ActaDirectorProyectoComponent implements OnInit {
this
.
cambio
=
false
;
this
.
myForm
.
disable
();
}
openModalError
(
texto
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
ErrorTextoComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
texto
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
console
.
log
(
'La ventana modal se ha cerrado'
);
this
.
formularioEnviado
=
true
;
});
}
}
src/app/modules/main/pages/Proyectos/Acta de Compromiso de Carreras/acta-compromiso-carreras/acta-compromiso-carreras.component.html
View file @
acbf6245
...
...
@@ -3,30 +3,30 @@
<!-- Información de la institución -->
<div
class=
"save-button"
>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"!cambio"
(
click
)="
cambiar
()"
>
Editar
</button>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"cambio"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="!
archivoEsPDFValido
"
*
ngIf=
"cambio"
>
Guardar
</button>
<span
class=
"separator"
></span>
<button
mat-raised-button
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
</div>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part2_url == null && !cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part2_url == null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<button
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part2_url != null && !cambio"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_com_part2_url
,
proyecto
.
uzytavproyec_com_part2_nom
)"
aria-placeholder=
"Ver PDF"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_com_part2_url
,
proyecto
.
uzytavproyec_com_part2_nom
)"
aria-placeholder=
"Ver PDF"
>
Descargar PDF
</button>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_com_part2_url != null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
</form>
</div>
src/app/modules/main/pages/Proyectos/Acta de Compromiso de Carreras/acta-compromiso-carreras/acta-compromiso-carreras.component.ts
View file @
acbf6245
...
...
@@ -15,6 +15,7 @@ import { Proyectos } from 'src/app/modules/main/Models/proyectos';
import
{
DatosEspeService
}
from
'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'
;
import
{
saveAs
}
from
'file-saver'
;
import
{
MostrarOcultarService
}
from
'src/app/modules/main/services/mostrar-ocultar.service'
;
import
{
ErrorTextoComponent
}
from
'../../errores/error-texto/error-texto.component'
;
@
Component
({
selector
:
'app-acta-compromiso-carreras'
,
...
...
@@ -22,7 +23,7 @@ import { MostrarOcultarService } from 'src/app/modules/main/services/mostrar-ocu
styleUrls
:
[
'./acta-compromiso-carreras.component.css'
]
})
export
class
ActaCompromisoCarrerasComponent
implements
OnInit
{
archivoEsPDFValido
:
boolean
=
false
;
myForm
:
FormGroup
;
selectedFile
:
File
|
null
=
null
;
file
:
File
;
...
...
@@ -67,9 +68,19 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
const
fileList
:
FileList
=
event
.
target
.
files
;
if
(
fileList
.
length
>
0
)
{
this
.
file
=
fileList
[
0
];
if
(
!
this
.
validarArchivo
(
this
.
file
))
{
this
.
openModalError
(
'¡Por favor, selecciona un archivo PDF!'
);
return
;
}
else
{
this
.
archivoEsPDFValido
=
true
;
}
}
}
validarArchivo
(
file
:
File
):
boolean
{
const
fileName
=
file
.
name
;
return
fileName
.
toLocaleLowerCase
().
endsWith
(
'.pdf'
);
}
openModal
()
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
...
...
@@ -97,7 +108,6 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
this
.
cambio
=
false
;
},
error
=>
{
console
.
log
(
error
)
}
);
}
...
...
@@ -115,8 +125,11 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
filename
:
response
.
fileName
};
}
catch
(
error
)
{
console
.
error
(
'Error al guardar el PDF en el servidor:'
,
error
);
throw
error
;
this
.
openModalError
(
'¡Este PDF ya se ha subido!'
);
return
{
idPDF
:
null
,
filename
:
''
};
}
}
...
...
@@ -158,4 +171,16 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
this
.
myForm
.
disable
();
}
openModalError
(
texto
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
ErrorTextoComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
texto
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
console
.
log
(
'La ventana modal se ha cerrado'
);
this
.
formularioEnviado
=
true
;
});
}
}
src/app/modules/main/pages/Proyectos/Acta de Consejo de Departamento/acta-consejo-departamento/acta-consejo-departamento.component.html
View file @
acbf6245
...
...
@@ -3,30 +3,30 @@
<!-- Información de la institución -->
<div
class=
"save-button"
>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"!cambio"
(
click
)="
cambiar
()"
>
Editar
</button>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"cambio"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="!
archivoEsPDFValido
"
*
ngIf=
"cambio"
>
Guardar
</button>
<span
class=
"separator"
></span>
<button
mat-raised-button
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
</div>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_aprob_con_dep_url == null && !cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_aprob_con_dep_url == null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
<button
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_aprob_con_dep_url != null && !cambio"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_aprob_con_dep_url
,
proyecto
.
uzytavproyec_aprob_con_dep_nom
)"
aria-placeholder=
"Ver PDF"
>
<img
src=
"../../../../../../../assets/img/icons/pdf.png"
style=
"width: 50px; height: 50px;"
(
click
)="
verPDF
(
proyecto
.
uzytavproyec_aprob_con_dep_url
,
proyecto
.
uzytavproyec_aprob_con_dep_nom
)"
aria-placeholder=
"Ver PDF"
>
Descargar PDF
</button>
<div
class=
"input-container"
*
ngIf=
"proyecto.uzytavproyec_aprob_con_dep_url != null && cambio"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
".pdf"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
</form>
</div>
src/app/modules/main/pages/Proyectos/Acta de Consejo de Departamento/acta-consejo-departamento/acta-consejo-departamento.component.ts
View file @
acbf6245
...
...
@@ -15,6 +15,7 @@ import { Proyectos } from 'src/app/modules/main/Models/proyectos';
import
{
DatosEspeService
}
from
'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'
;
import
{
MostrarOcultarService
}
from
'src/app/modules/main/services/mostrar-ocultar.service'
;
import
{
saveAs
}
from
'file-saver'
;
import
{
ErrorTextoComponent
}
from
'../../errores/error-texto/error-texto.component'
;
@
Component
({
selector
:
'app-acta-consejo-departamento'
,
...
...
@@ -22,7 +23,7 @@ import { saveAs } from 'file-saver';
styleUrls
:
[
'./acta-consejo-departamento.component.css'
]
})
export
class
ActaConsejoDepartamentoComponent
implements
OnInit
{
archivoEsPDFValido
:
boolean
=
false
;
myForm
:
FormGroup
;
selectedFile
:
File
|
null
=
null
;
file
:
File
;
...
...
@@ -69,9 +70,20 @@ export class ActaConsejoDepartamentoComponent implements OnInit {
const
fileList
:
FileList
=
event
.
target
.
files
;
if
(
fileList
.
length
>
0
)
{
this
.
file
=
fileList
[
0
];
if
(
!
this
.
validarArchivo
(
this
.
file
))
{
this
.
openModalError
(
'¡Por favor, selecciona un archivo PDF!'
);
return
;
}
else
{
this
.
archivoEsPDFValido
=
true
;
}
}
}
validarArchivo
(
file
:
File
):
boolean
{
const
fileName
=
file
.
name
;
return
fileName
.
toLocaleLowerCase
().
endsWith
(
'.pdf'
);
}
openModal
()
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
...
...
@@ -98,7 +110,6 @@ export class ActaConsejoDepartamentoComponent implements OnInit {
this
.
cambio
=
false
;
},
error
=>
{
console
.
log
(
error
)
}
);
}
...
...
@@ -116,8 +127,11 @@ export class ActaConsejoDepartamentoComponent implements OnInit {
filename
:
response
.
fileName
};
}
catch
(
error
)
{
console
.
error
(
'Error al guardar el PDF en el servidor:'
,
error
);
throw
error
;
this
.
openModalError
(
'¡Este PDF ya se ha subido!'
);
return
{
idPDF
:
null
,
filename
:
''
};
}
}
...
...
@@ -142,7 +156,7 @@ export class ActaConsejoDepartamentoComponent implements OnInit {
}
);
}
getFilenameFromResponse
(
contentDispositionHeader
:
string
|
null
):
string
{
if
(
contentDispositionHeader
)
{
const
matches
=
/filename
[^
;=
\n]
*=
(([
'"
])
.*
?\2
|
[^
;
\n]
*
)
/
.
exec
(
contentDispositionHeader
);
...
...
@@ -163,5 +177,17 @@ export class ActaConsejoDepartamentoComponent implements OnInit {
this
.
myForm
.
disable
();
}
openModalError
(
texto
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
ErrorTextoComponent
,
{
disableClose
:
true
,
data
:
{
mensaje
:
texto
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
console
.
log
(
'La ventana modal se ha cerrado'
);
this
.
formularioEnviado
=
true
;
});
}
}
src/app/modules/main/pages/Proyectos/Datos Generales/Cobertura y Localizacion/cobertura-proyecto/cobertura-proyecto.component.html
View file @
acbf6245
...
...
@@ -10,11 +10,11 @@
<div
class=
"contenedor-dos"
*
ngIf=
"mostrarFormulario"
>
<!--formulario 1-->
<form
class=
"formulario"
[
formGroup
]="
myForm
"
*
ngIf=
"selectedOption !== 'Nacional'"
(
ngSubmit
)="
onSubmit
()"
>
<form
class=
"formulario"
[
formGroup
]="
myForm
Provincia
"
*
ngIf=
"selectedOption !== 'Nacional'"
(
ngSubmit
)="
onSubmit
()"
>
<!--Boton para guardar-->
<div
class=
"save-button"
*
ngIf=
"selectedOption === 'Provincial'"
>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
.
invalid
"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
Provincia
.
invalid
"
>
Guardar
</button>
</div>
<mat-form-field
*
ngIf=
"selectedOption === 'Provincial'"
class=
"form-field"
>
...
...
@@ -29,9 +29,9 @@
</form>
<!--Fomulario 2-->
<form
class=
"formulario"
[
formGroup
]="
myForm
"
*
ngIf=
"selectedOption !== 'Nacional'"
(
ngSubmit
)="
onSubmit2
()"
>
<form
class=
"formulario"
[
formGroup
]="
myForm
Canton
"
*
ngIf=
"selectedOption !== 'Nacional'"
(
ngSubmit
)="
onSubmit2
()"
>
<div
class=
"save-button"
*
ngIf=
"selectedOption === 'Cantonal'"
>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
.
invalid
"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
Canton
.
invalid
"
>
Guardar
</button>
</div>
<mat-form-field
*
ngIf=
"selectedOption === 'Cantonal'"
...
...
@@ -59,10 +59,10 @@
</mat-form-field>
</form>
<!--formulario 3-->
<form
*
ngIf=
"selectedOption !== 'Nacional'"
class=
"formulario"
[
formGroup
]="
myForm
"
(
ngSubmit
)="
onSubmit3
()"
>
<form
*
ngIf=
"selectedOption !== 'Nacional'"
class=
"formulario"
[
formGroup
]="
myForm
Parro
"
(
ngSubmit
)="
onSubmit3
()"
>
<div
class=
"save-button"
*
ngIf=
"selectedOption === 'Parroquial'"
>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
.
invalid
"
>
Guardar
</button>
<button
mat-raised-button
color=
"primary"
[
disabled
]="
myForm
Parro
.
invalid
"
>
Guardar
</button>
</div>
<mat-form-field
*
ngIf=
"selectedOption === 'Parroquial'"
class=
"form-field"
>
<mat-label>
Provincias
</mat-label>
...
...
src/app/modules/main/pages/Proyectos/Datos Generales/Cobertura y Localizacion/cobertura-proyecto/cobertura-proyecto.component.ts
View file @
acbf6245
import
{
Component
,
EventEmitter
,
OnInit
,
Output
}
from
'@angular/core'
;
import
{
FormBuilder
,
FormGroup
}
from
'@angular/forms'
;
import
{
FormBuilder
,
FormGroup
,
Validators
}
from
'@angular/forms'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
Canton
}
from
'src/app/modules/main/Models/Ubicaciones/canton'
;
import
{
Parroquia
}
from
'src/app/modules/main/Models/Ubicaciones/parroquia'
;
...
...
@@ -22,7 +22,9 @@ import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_
export
class
CoberturaProyectoComponent
implements
OnInit
{
selectedOption
:
string
;
myForm
:
FormGroup
;
myFormProvincia
:
FormGroup
;
myFormCanton
:
FormGroup
;
myFormParro
:
FormGroup
;
provincia
!
:
Provincia
[];
selectedProvincia
:
string
;
...
...
@@ -56,10 +58,19 @@ export class CoberturaProyectoComponent implements OnInit {
private
datosCompartidos
:
Actualiza_datosService
)
{
this
.
formularioEnviado
=
false
;
this
.
myForm
=
this
.
formBuilder
.
group
({
provincia
:
[
''
],
cantones
:
[
''
],
parroquias
:
[
''
]
this
.
myFormProvincia
=
this
.
formBuilder
.
group
({
provincia
:
[
''
,
Validators
.
required
]
});
this
.
myFormCanton
=
this
.
formBuilder
.
group
({
provincia
:
[
''
,
Validators
.
required
],
cantones
:
[
''
,
Validators
.
required
]
});
this
.
myFormParro
=
this
.
formBuilder
.
group
({
provincia
:
[
''
,
Validators
.
required
],
cantones
:
[
''
,
Validators
.
required
],
parroquias
:
[
''
,
Validators
.
required
]
});
}
...
...
@@ -89,10 +100,10 @@ export class CoberturaProyectoComponent implements OnInit {
enviarSolicitud
=
false
;
onSubmit
()
{
if
(
this
.
myForm
.
valid
&&
!
this
.
enviarSolicitud
)
{
if
(
this
.
myForm
Provincia
.
valid
&&
!
this
.
enviarSolicitud
)
{
this
.
zonaM
.
uzytavproyec_id
=
this
.
idRecuparado
;
console
.
log
(
"back "
,
this
.
zonaM
.
uzytavproyec_id
)
const
provinciasSeleccionadas
=
this
.
myForm
.
value
.
provincia
;
const
provinciasSeleccionadas
=
this
.
myForm
Provincia
.
value
.
provincia
;
// Ejecutar todas las operaciones de guardado en paralelo
forkJoin
(
...
...
@@ -109,7 +120,7 @@ export class CoberturaProyectoComponent implements OnInit {
).
subscribe
(
responses
=>
{
console
.
log
(
'Datos Enviados'
);
this
.
zonaS
.
parametrosActualizados
.
next
();
this
.
openModal
();
this
.
openModal
(
'Se han agregado la(s) Provincia(s)'
);
this
.
formularioGuardado
.
emit
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
zonaM
);
});
...
...
@@ -117,10 +128,10 @@ export class CoberturaProyectoComponent implements OnInit {
}
onSubmit2
()
{
if
(
this
.
myForm
.
valid
&&
!
this
.
enviarSolicitud
)
{
if
(
this
.
myForm
Canton
.
valid
&&
!
this
.
enviarSolicitud
)
{
this
.
zonaM
.
uzytavproyec_id
=
this
.
idRecuparado
;
console
.
log
(
"back "
,
this
.
zonaM
.
uzytavproyec_id
)
const
cantonesSeleccionados
=
this
.
myForm
.
value
.
cantones
;
const
cantonesSeleccionados
=
this
.
myForm
Canton
.
value
.
cantones
;
forkJoin
(
cantonesSeleccionados
.
map
(
canton
=>
{
const
zonaMCopia
=
{...
this
.
zonaM
};
...
...
@@ -131,7 +142,7 @@ export class CoberturaProyectoComponent implements OnInit {
).
subscribe
(
responses
=>
{
console
.
log
(
'Datos Enviados'
);
this
.
zonaS
.
parametrosActualizados
.
next
();
this
.
openModal
();
this
.
openModal
(
'Se han agregado el/los Canton(es)'
);
this
.
formularioGuardado
.
emit
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
zonaM
);
});
...
...
@@ -139,12 +150,12 @@ export class CoberturaProyectoComponent implements OnInit {
}
onSubmit3
()
{
if
(
this
.
myForm
.
valid
)
{
if
(
this
.
myForm
Parro
.
valid
)
{
this
.
zonaM
.
uzytavproyec_id
=
this
.
idRecuparado
;
console
.
log
(
"back "
,
this
.
zonaM
.
uzytavproyec_id
)
const
parroquiasSeleccionadas
=
this
.
myForm
.
value
.
parroquias
;
const
provinciaSeleccionada
=
this
.
myForm
.
value
.
provincia
;
const
parroquiasSeleccionadas
=
this
.
myForm
Parro
.
value
.
parroquias
;
const
provinciaSeleccionada
=
this
.
myForm
Parro
.
value
.
provincia
;
console
.
log
(
'pruea: '
,
parroquiasSeleccionadas
);
forkJoin
(
parroquiasSeleccionadas
.
map
(
parroquia
=>
{
...
...
@@ -157,8 +168,8 @@ export class CoberturaProyectoComponent implements OnInit {
).
subscribe
(
responses
=>
{
console
.
log
(
'Datos Enviados'
);
this
.
zonaS
.
parametrosActualizados
.
next
();
this
.
openModal
();
this
.
myForm
.
reset
();
this
.
openModal
(
'Se han agregado la(s) Parroquia(s)'
);
this
.
myForm
Parro
.
reset
();
this
.
formularioGuardado
.
emit
();
this
.
datosCompartidos
.
actualizarDatos
(
this
.
zonaM
);
});
...
...
@@ -167,16 +178,19 @@ export class CoberturaProyectoComponent implements OnInit {
resetForm
()
{
this
.
myForm
.
reset
();
this
.
myFormParro
.
reset
();
this
.
myFormCanton
.
reset
();
this
.
myFormProvincia
.
reset
();
this
.
selectedProvincia
=
null
;
this
.
selectedCanton
=
null
;
this
.
selectedParroquiaId
=
null
;
}
//Abrir la ventana modal para actuaizar y mostrar.
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
...
...
src/app/modules/main/pages/Proyectos/Datos Generales/Datos Generales/add-datos-generales/add-datos-generales.component.css
View file @
acbf6245
...
...
@@ -3,7 +3,7 @@
.form-row
{
display
:
flex
;
}
.form-column
{
flex
:
1
;
margin
:
0
10px
;
...
...
@@ -27,16 +27,20 @@
.example-radio-button
{
margin
:
5px
;
}
.save-button
{
display
:
flex
;
justify-content
:
flex-end
;
margin-bottom
:
16px
;
}
.form-column
mat-form-field
{
display
:
block
;
margin-bottom
:
16px
;
width
:
100%
;
}
\ No newline at end of file
.estilo-edi
{
background-color
:
white
;
color
:
#5bb02c
;
}
src/app/modules/main/pages/Proyectos/Datos Generales/Datos Generales/add-datos-generales/add-datos-generales.component.html
View file @
acbf6245
...
...
@@ -16,10 +16,11 @@
{{ programa.uzytavprograma_vnombre }}
</mat-option>
</mat-select>
<mat-error
*
ngIf=
"myForm.get('programa').invalid && (myForm.get('programa').dirty
<mat-error
*
ngIf=
"myForm.get('programa').invalid && (myForm.get('programa').dirty
|| myForm.get('programa').touched)"
>
Por favor, ingrese un programa.
</mat-error>
<mat-icon
matSuffix
matTooltip=
"Seleccione el programa al cual se va enlazar el proyecto"
class=
"estilo-edi"
>
help_outline
</mat-icon>
</mat-form-field>
<div
class=
"form-row"
>
<div
class=
"form-column"
>
...
...
@@ -30,9 +31,10 @@
<input
matInput
formControlName=
"codigo"
>
</mat-form-field>
<mat-form-field>
<mat-label>
Nombre
</mat-label>
<input
matInput
placeholder=
"Nombre del Proyecto"
formControlName=
"nombreP"
>
<mat-icon
matSuffix
matTooltip=
"Nombre del Proyecto Postulante"
class=
"estilo-edi"
>
help_outline
</mat-icon>
</mat-form-field>
<mat-form-field>
...
...
@@ -44,18 +46,18 @@
<mat-label>
Departamento
</mat-label>
<input
matInput
formControlName=
"departamento"
[
value
]="(
usuario
.
departamento
$
|
async
)"
>
</mat-form-field>
<mat-form-field>
<mat-label>
Seleccionar Carrera
</mat-label>
<mat-select
[(
value
)]="
selectedCarreraId
"
formControlName=
"carrera"
>
<mat-select
[(
value
)]="
selectedCarreraId
"
formControlName=
"carrera"
>
<mat-option
*
ngFor=
"let carrera of carrera"
[
value
]="
carrera
.
codigo_CARRERA
"
>
{{ carrera.nombre_CARRERA }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field
class=
"form-field"
>
<mat-label>
Población Beneficiada
</mat-label>
<mat-select
formControlName=
"poblacion"
multiple
>
...
...
@@ -125,4 +127,4 @@
<ng-container
*
ngIf=
"guardarFormulario"
>
<app-edit-datos-generales-proyecto
></app-edit-datos-generales-proyecto>
</ng-container>
\ No newline at end of file
</ng-container>
src/app/modules/main/pages/Proyectos/Datos Generales/Datos Generales/edit-datos-generales-proyecto/edit-datos-generales-proyecto.component.html
View file @
acbf6245
...
...
@@ -19,7 +19,7 @@
</mat-option>
</mat-select>
<mat-error
*
ngIf=
"myForm.get('programa').invalid && (myForm.get('programa').dirty
<mat-error
*
ngIf=
"myForm.get('programa').invalid && (myForm.get('programa').dirty
|| myForm.get('programa').touched)"
>
Por favor, ingrese un programa.
</mat-error>
...
...
@@ -38,6 +38,7 @@
<mat-form-field>
<mat-label>
Nombre
</mat-label>
<input
matInput
placeholder=
"Nombre del Proyecto"
formControlName=
"nombreP"
>
<mat-icon
matSuffix
matTooltip=
"Nombre del Proyecto Postulante"
class=
"estilo-edi"
>
help_outline
</mat-icon>
</mat-form-field>
...
...
@@ -64,7 +65,7 @@
Por favor, ingrese una carrera.
</mat-error>
</mat-form-field>
<mat-form-field
class=
"form-field"
>
...
...
@@ -74,7 +75,7 @@
{{ poblacion.uzytavpobla_tipo }}
</mat-option>
</mat-select>
<mat-error
*
ngIf=
"myForm.get('poblacion').invalid && (myForm.get('poblacion').dirty
<mat-error
*
ngIf=
"myForm.get('poblacion').invalid && (myForm.get('poblacion').dirty
|| myForm.get('poblacion').touched)"
>
Por favor, ingrese una población.
</mat-error>
...
...
@@ -98,7 +99,7 @@
<input
matInput
[
matDatepicker
]="
pickerInicio
"
formControlName=
"fechaIni"
>
<mat-datepicker-toggle
matSuffix
[
for
]="
pickerInicio
"
></mat-datepicker-toggle>
<mat-datepicker
#
pickerInicio
></mat-datepicker>
<mat-error
*
ngIf=
"myForm.get('fechaIni').invalid && (myForm.get('fechaIni').dirty
<mat-error
*
ngIf=
"myForm.get('fechaIni').invalid && (myForm.get('fechaIni').dirty
|| myForm.get('fechaIni').touched)"
>
Por favor, ingrese una fecha.
</mat-error>
...
...
@@ -141,7 +142,7 @@
<input
matInput
[
matDatepicker
]="
pickerFin
"
formControlName=
"fechaFin"
>
<mat-datepicker-toggle
matSuffix
[
for
]="
pickerFin
"
></mat-datepicker-toggle>
<mat-datepicker
#
pickerFin
></mat-datepicker>
<mat-error
*
ngIf=
"myForm.get('fechaFin').invalid && (myForm.get('fechaFin').dirty
<mat-error
*
ngIf=
"myForm.get('fechaFin').invalid && (myForm.get('fechaFin').dirty
|| myForm.get('fechaFin').touched)"
>
Por favor, ingrese una fecha.
</mat-error>
...
...
@@ -153,4 +154,4 @@
</mat-card-content>
</mat-card>
</form>
</div>
\ No newline at end of file
</div>
src/app/modules/main/pages/Proyectos/Datos Generales/Entregables del Proyecto/edit-entregables/edit-entregables.component.css
View file @
acbf6245
...
...
@@ -29,3 +29,7 @@
font-size
:
14px
;
margin-top
:
5px
;
}
.estilo-edi
{
background-color
:
white
;
color
:
#5bb02c
;
}
src/app/modules/main/pages/Proyectos/Datos Generales/Entregables del Proyecto/edit-entregables/edit-entregables.component.html
View file @
acbf6245
<div
class=
"container"
>
<form
class=
"example-form"
[
formGroup
]="
myForm
"
(
ngSubmit
)="
onSubmit
()"
>
<form
class=
"example-form"
[
formGroup
]="
myForm
"
(
ngSubmit
)="
onSubmit
()"
>
<mat-card>
<mat-card-header>
<div
class=
"save-button"
>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"!cambio"
(
click
)="
cambiar
()"
>
Editar
</button>
<button
mat-raised-button
color=
"primary"
*
ngIf=
"cambio"
>
Guardar
</button>
[
disabled
]="
myForm
.
invalid
"
>
Guardar
</button>
<span
class=
"separator"
></span>
<button
mat-raised-button
color=
"warn"
*
ngIf=
"cambio"
(
click
)="
cancelado
()"
>
Cancelar
</button>
...
...
@@ -16,20 +16,30 @@
<div>
<label
class=
"label-negrita"
>
Bienes:
</label>
<ckeditor
formControlName=
"bienes"
class=
"custom-ckeditor"
[
disabled
]="!
isEditorEnabled
"
[
style
.
height
]="
editorHeight
"
[
editor
]="
Editor
"
></ckeditor>
<ckeditor
formControlName=
"bienes"
class=
"custom-ckeditor"
[
disabled
]="!
isEditorEnabled
"
[
style
.
height
]="
editorHeight
"
[
editor
]="
Editor
"
></ckeditor>
<div
*
ngIf=
"myForm.get('bienes').hasError('maxlength')"
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
<div
*
ngIf=
"myForm.get('bienes').hasError('required') && (myForm.get('bienes').touched || myForm.dirty)"
class=
"error-message"
>
Este campo es requerido.
</div>
</div>
<div
class=
"editor-separator"
></div>
<div>
<label
class=
"label-negrita"
>
Servicos:
</label>
<ckeditor
formControlName=
"servicios"
class=
"custom-ckeditor"
[
disabled
]="!
isEditorEnabled
"
[
style
.
height
]="
editorHeight
"
[
editor
]="
Editor
"
></ckeditor>
<ckeditor
formControlName=
"servicios"
class=
"custom-ckeditor"
[
disabled
]="!
isEditorEnabled
"
[
style
.
height
]="
editorHeight
"
[
editor
]="
Editor
"
></ckeditor>
<div
*
ngIf=
"myForm.get('servicios').hasError('maxlength')"
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
<div
*
ngIf=
"myForm.get('servicios').hasError('required') && (myForm.get('servicios').touched || myForm.dirty)"
class=
"error-message"
>
Este campo es requerido.
</div>
</div>
</mat-card-content>
...
...
src/app/modules/main/pages/Proyectos/Datos Generales/Entregables del Proyecto/edit-entregables/edit-entregables.component.ts
View file @
acbf6245
...
...
@@ -28,7 +28,7 @@ export class EditEntregablesComponent implements OnInit {
private
compartiId
:
Compartir_idService
,
private
mostrarOcultarService
:
MostrarOcultarService
,
private
dialog
:
MatDialog
)
{}
)
{
}
cambiar
()
{
this
.
cambio
=
true
;
...
...
@@ -38,10 +38,19 @@ export class EditEntregablesComponent implements OnInit {
cancelado
()
{
this
.
cambio
=
false
;
this
.
isEditorEnabled
=
false
;
this
.
myForm
.
get
(
'bienes'
).
setValue
(
''
);
this
.
myForm
.
get
(
'servicios'
).
setValue
(
''
);
this
.
myForm
.
get
(
'bienes'
).
markAsPristine
();
this
.
myForm
.
get
(
'bienes'
).
markAsUntouched
();
this
.
myForm
.
get
(
'servicios'
).
markAsPristine
()
this
.
myForm
.
get
(
'servicios'
).
markAsUntouched
();
}
ngOnInit
():
void
{
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
idRecuperado
=
parseInt
(
localStorage
.
getItem
(
'proyectoId'
),
10
);
this
.
proyectos
=
new
Proyectos
();
this
.
obtenerRegistros
();
...
...
@@ -73,7 +82,7 @@ export class EditEntregablesComponent implements OnInit {
this
.
proyectosService
.
modificarParametros
(
this
.
idRecuperado
,
this
.
proyectos
).
subscribe
(
response
=>
{
this
.
cambio
=
false
;
this
.
isEditorEnabled
=
false
;
this
.
openModal
();
this
.
openModal
(
'Se han enviado los Entregables del Proyecto'
);
});
}
catch
(
error
)
{
...
...
@@ -82,9 +91,10 @@ export class EditEntregablesComponent implements OnInit {
}
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
...
...
src/app/modules/main/pages/Proyectos/Diagnostico y problema/Anexos e Imagenes/add-anexos-imagenes/add-anexos-imagenes.component.html
View file @
acbf6245
...
...
@@ -24,7 +24,7 @@
<!-- Control de PDF -->
<div
class=
"input-container"
>
<label>
Subir Archivo
</label>
<input
type=
"file"
id=
"uzytavconvoca_digital"
(
change
)="
onFileChange
($
event
)"
<input
type=
"file"
id=
"uzytavconvoca_digital"
accept=
"image/*"
(
change
)="
onFileChange
($
event
)"
formControlName=
"archivo"
>
</div>
...
...
src/app/modules/main/pages/Proyectos/Diagnostico y problema/diagnostico y problema/edit-diagnostico/edit-diagnostico.component.html
View file @
acbf6245
...
...
@@ -23,6 +23,9 @@
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
<div
*
ngIf=
"myForm.get('diagnostico').hasError('required') && (myForm.get('diagnostico').touched || myForm.dirty)"
class=
"error-message"
>
Este campo es requerido.
</div>
</div>
<div
class=
"editor-separator"
></div>
<div>
...
...
@@ -31,10 +34,13 @@
<ckeditor
formControlName=
"identificacion"
[
style
.
height
]="
editorHeight
"
[
disabled
]="!
isEditorEnabled
"
[
editor
]="
Editor
"
></ckeditor>
<div
*
ngIf=
"myForm.get('identificacion').hasError('maxlength')"
<div
*
ngIf=
"myForm.get('identificacion').hasError('maxlength')"
class=
"error-message"
>
El contenido no puede exceder los 3000 caracteres.
</div>
<div
*
ngIf=
"myForm.get('identificacion').hasError('required') && (myForm.get('identificacion').touched || myForm.dirty)"
class=
"error-message"
>
Este campo es requerido.
</div>
</div>
</mat-card-content>
...
...
src/app/modules/main/pages/Proyectos/Diagnostico y problema/diagnostico y problema/edit-diagnostico/edit-diagnostico.component.ts
View file @
acbf6245
...
...
@@ -40,6 +40,15 @@ export class EditDiagnosticoComponent implements OnInit {
cancelado
()
{
this
.
cambio
=
false
;
this
.
isEditorEnabled
=
false
;
this
.
myForm
.
get
(
'diagnostico'
).
setValue
(
''
);
this
.
myForm
.
get
(
'identificacion'
).
setValue
(
''
);
this
.
myForm
.
get
(
'diagnostico'
).
markAsPristine
();
this
.
myForm
.
get
(
'diagnostico'
).
markAsUntouched
();
this
.
myForm
.
get
(
'identificacion'
).
markAsPristine
()
this
.
myForm
.
get
(
'identificacion'
).
markAsUntouched
();
}
ngOnInit
():
void
{
...
...
@@ -76,7 +85,7 @@ export class EditDiagnosticoComponent implements OnInit {
this
.
proyectosService
.
modificarParametros
(
this
.
idRecuperado
,
this
.
proyectos
).
subscribe
(
response
=>
{
this
.
cambio
=
false
;
this
.
isEditorEnabled
=
false
;
this
.
openModal
();
this
.
openModal
(
'Se ha enviado el Diagnostico y Problema del Proyecto'
);
});
}
catch
(
error
)
{
console
.
error
(
'Error al enviar los datos:'
,
error
);
...
...
@@ -84,9 +93,10 @@ export class EditDiagnosticoComponent implements OnInit {
}
}
openModal
()
{
openModal
(
mensaje
:
string
)
{
const
dialogRef
=
this
.
dialog
.
open
(
EnvioFormularioComponent
,
{
disableClose
:
true
disableClose
:
true
,
data
:
{
mensaje
:
mensaje
}
});
dialogRef
.
afterClosed
().
subscribe
(
result
=>
{
...
...
src/app/modules/main/pages/Proyectos/errores/error-texto/error-texto.component.css
View file @
acbf6245
...
...
@@ -33,7 +33,7 @@
}
.modal-content
button
{
background-color
:
#
2196f3
;
background-color
:
#
e03535
;
color
:
white
;
border
:
none
;
padding
:
10px
20px
;
...
...
@@ -42,5 +42,5 @@
}
.modal-content
button
:hover
{
background-color
:
#
0c7cd5
;
background-color
:
#
ea5656
;
}
src/app/modules/main/pages/Proyectos/errores/error-texto/error-texto.component.html
View file @
acbf6245
<div
class=
"modal"
>
<div
class=
"modal-content"
>
<p>
La información excede el maximo de caracteres
</p>
{{mensaje}}
</p>
<button
mat-button
(
click
)="
closeModal
()"
>
Cerrar
</button>
</div>
</div>
src/app/modules/main/pages/Proyectos/errores/error-texto/error-texto.component.ts
View file @
acbf6245
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
MatDialogRef
}
from
'@angular/material/dialog'
;
import
{
Component
,
Inject
,
OnInit
}
from
'@angular/core'
;
import
{
M
AT_DIALOG_DATA
,
M
atDialogRef
}
from
'@angular/material/dialog'
;
@
Component
({
selector
:
'vex-error-texto'
,
...
...
@@ -8,11 +8,14 @@ import { MatDialogRef } from '@angular/material/dialog';
})
export
class
ErrorTextoComponent
implements
OnInit
{
formularioEnviado
=
true
;
mensaje
:
string
;
constructor
(
private
dialogRef
:
MatDialogRef
<
ErrorTextoComponent
>
)
{
}
private
dialogRef
:
MatDialogRef
<
ErrorTextoComponent
>
,
@
Inject
(
MAT_DIALOG_DATA
)
public
data
:
any
)
{
this
.
mensaje
=
data
.
mensaje
;
}
ngOnInit
():
void
{
}
closeModal
()
{
...
...
src/app/modules/main/pages/convocatorias/convocatorias-agregar/convocatorias-agregar.component.ts
View file @
acbf6245
...
...
@@ -23,7 +23,7 @@ export class ConvocatoriasAgregarComponent implements OnInit {
enviarSolicitud
=
false
;
checkboxValue
:
string
;
formularioEnviado
:
boolean
;
archivoEsPDFValido
:
boolean
=
false
;
constructor
(
private
formBuilder
:
FormBuilder
,
private
router
:
Router
,
...
...
@@ -79,9 +79,20 @@ export class ConvocatoriasAgregarComponent implements OnInit {
const
fileList
:
FileList
=
event
.
target
.
files
;
if
(
fileList
.
length
>
0
)
{
this
.
file
=
fileList
[
0
];
if
(
!
this
.
validarArchivo
(
this
.
file
))
{
this
.
openModalError
(
'¡Por favor, selecciona un archivo PDF!'
);
return
;
}
else
{
this
.
archivoEsPDFValido
=
true
;
}
}
}
validarArchivo
(
file
:
File
):
boolean
{
const
fileName
=
file
.
name
;
return
fileName
.
toLocaleLowerCase
().
endsWith
(
'.pdf'
);
}
async
enviarPDF
()
{
const
formData
=
new
FormData
();
formData
.
append
(
'files'
,
this
.
file
);
...
...
@@ -95,7 +106,10 @@ export class ConvocatoriasAgregarComponent implements OnInit {
};
}
catch
(
error
)
{
this
.
openModalError
(
'¡Ya existe un Documento con ese Nombre!
\
n Ingrese Datos Nuevamente'
);
return
{
idPDF
:
null
,
filename
:
''
};
}
}
...
...
@@ -124,7 +138,6 @@ export class ConvocatoriasAgregarComponent implements OnInit {
this
.
router
.
navigate
([
'main/Convocatorias'
]);
},
error
=>
{
console
.
log
(
error
)
this
.
openModalError
(
'Ya existe una Convocatoria Activa'
);
//this.router.navigate(['main/Convocatorias']);
}
...
...
src/app/modules/main/pages/programa/opciones/envio-formulario/envio-formulario.component.html
View file @
acbf6245
<div
class=
"modal"
>
<div
class=
"modal-content"
>
<p>
Su información ha sido enviada con éxito.
</p>
{{mensaje}}
</p>
<button
mat-button
(
click
)="
closeModal
()"
>
Cerrar
</button>
</div>
</div>
src/app/modules/main/pages/programa/opciones/envio-formulario/envio-formulario.component.ts
View file @
acbf6245
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
MatDialogRef
}
from
'@angular/material/dialog'
;
import
{
Component
,
Inject
,
OnInit
}
from
'@angular/core'
;
import
{
M
AT_DIALOG_DATA
,
M
atDialogRef
}
from
'@angular/material/dialog'
;
@
Component
({
selector
:
'vex-envio-formulario'
,
...
...
@@ -8,11 +8,14 @@ import { MatDialogRef } from '@angular/material/dialog';
})
export
class
EnvioFormularioComponent
implements
OnInit
{
formularioEnviado
=
true
;
mensaje
:
string
;
constructor
(
private
dialogRef
:
MatDialogRef
<
EnvioFormularioComponent
>
private
dialogRef
:
MatDialogRef
<
EnvioFormularioComponent
>
,
@
Inject
(
MAT_DIALOG_DATA
)
private
data
:
{
mensaje
:
string
}
)
{
}
ngOnInit
():
void
{
this
.
mensaje
=
this
.
data
.
mensaje
;
}
closeModal
()
{
...
...
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