\r\n );\r\n}\r\n\r\n //this.trow = trow(Table.Row);\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent;\r\n \r\n}; //FIN CONSTRUCTORS\r\n\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarbarra(false)\r\n\r\n Auth.loggedIn().then( function(b){\r\n _this.setState({ isLoggin: b})\r\n if(b)\r\n Request.get(`${ip}/carrerasalumno/obtener_carreras_alumno/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0){\r\n var arr=[] \r\n arr.push(tmp[0].CARRERA)\r\n _this.setState({ rows: tmp, expandedGroups:arr,heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable\r\n }); \r\n }\r\n else\r\n {\r\n _this.setState({rows: [], heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n }\r\n _this.actualizarbarra(true)\r\n })\r\n })\r\n}\r\n\r\nchangeExpandedGroups = expandedGroups =>\r\n{\r\n this.setState({ expandedGroups });\r\n};\r\n\r\ncerrarmodal =()=> event =>{\r\n this.setState({open_requisitos: false })\r\n}\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n const botones_requisitos = [\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrarmodal(), display:'auto', color: 'red'},\r\n ]\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n \r\n \r\n \r\n {this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''} \r\n \r\n\r\n {/*--------------------------------------------------------------------------- DIALOG REQUISITOS --------------------------------------------------------------------*/}\r\n \r\n \r\n \r\n \r\n {'Requisitos'}\r\n \r\n \r\n \r\n \r\n {this.state.requisitos}\r\n
\r\n \r\n \r\n \r\n\r\n {/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/}\r\n\r\n \r\n }\r\n //RowComponent={this.trow}\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent}\r\n //rowHeaderCellComponent={TableTreeColumnHeader_cellComponent}\r\n showSelectionColumn={false}\r\n />\r\n
\r\n \r\n ); /// finaliza return\r\n }\r\n else if (this.state.isLoggin === false)\r\n {\r\n Auth.logout()\r\n window.location.reload();\r\n return; \r\n }\r\n\r\n\r\n return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\r\n\r\n \r\n\r\n ","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport {colores,funciones} from '../../global';\r\nimport AuthService from '../../AuthService';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport Icono from '../../components/Icono'\r\nimport '../../CSS/Style_principal.css'\r\nimport { Avatar } from '@material-ui/core';\r\n\r\nlet Auth = new AuthService();\r\nvar movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\nvar movil_pequeño=/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n backdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n },\r\n })\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class Campaña_ISO extends React.Component {\r\n tablaRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.l= props.l\r\n this.e= props.e\r\n this.i= props.i\r\n this.actualizarbarra=props.actualizarbarra\r\n this.actualizarcircular=props.actualizarcircular\r\n\r\n this.state = {\r\n openBackDrop: false, \r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n selection: [],\r\n grouping: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true\r\n }\r\n \r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarbarra(false)\r\n\r\n Auth.loggedIn().then( function(b){\r\n _this.setState({ isLoggin: b})\r\n if(b){\r\n _this.setState({ heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n }\r\n _this.actualizarbarra(true)\r\n })\r\n}\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n \r\n \r\n \r\n {this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''} \r\n \r\n\r\n \r\n \r\n ); /// finaliza return\r\n }\r\n else if (this.state.isLoggin === false)\r\n {\r\n Auth.logout()\r\n window.location.reload();\r\n return; \r\n }\r\n return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\r\n\r\n \r\n\r\n ","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport {colores, globales,funciones} from '../../global';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nimport AuthService from '../../AuthService';\r\nimport Request from 'superagent';\r\nimport CustomTable from '../../components/CustomTable';\r\nimport {Table} from '@devexpress/dx-react-grid-material-ui';\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport { Typography,TextField } from '@material-ui/core';\r\nimport Reporte from '../../components/Modalreporte';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\n\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\r\nvar movil_pequeño=/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nlet isVisibleRowSelected = false;\r\n//const colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\n//let alternateColorRow1 = colores.tabla.alternateColorRow1; \r\n//let alternateColorRow2 = colores.tabla.alternateColorRow2;\r\n\r\nconst getRowId = row => row.ID_SECCION;\r\n\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n Dialog:{\r\n borderRadius: border_dialog,\r\n margin:0,\r\n padding:0\r\n },\r\n backdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n },\r\n select: { //CONFIGURA EL SELECT \r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'50%',\r\n },\r\n textField: {\r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'20%',\r\n width: '20%' \r\n },\r\n })\r\n\r\n const columns= [\r\n {name:'ID_SECCION',title: 'ID_SECCION'}\r\n ,{name:'CODIGO_CURSO',title: 'Código'}\r\n ,{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'INICIO',title: 'Inicio'}\r\n ,{name:'FIN',title: 'Fin'}\r\n ,{name:'SECCION',title: 'Sección'}\r\n ,{name:'CODIGO',title: 'Aula'}\r\n ,{name:'JORNADA',title: 'Jornada'}\r\n ,{name:'MODALIDAD',title: 'Grupo'}\r\n ,{name:'CANTIDAD',title: 'Cantidad'}\r\n ,{name:'ANIO_PERIODO',title: 'ANIO_PERIODO'}\r\n ];\r\n \r\n const defaultHiddenColumnNames= ['ID_SECCION','ANIO_PERIODO'];\r\n \r\n const tableColumnExtensions= [\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: false, align: 'center' ,width: 420},\r\n { columnName: 'INICIO', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'FIN', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'SECCION', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'CODIGO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'JORNADA', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'MODALIDAD', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'CANTIDAD', wordWrapEnabled: false, align: 'center',width: 110},\r\n ];\r\n\r\n\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class EstudiantesPreMatriculados extends React.Component {\r\n tablaRef = React.createRef();\r\n descripcionRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.l= props.l\r\n this.e= props.e\r\n this.i= props.i\r\n this.isVisibleRowSelected=isVisibleRowSelected\r\n this.actualizarbarra=props.actualizarbarra\r\n this.actualizarcircular=props.actualizarcircular\r\n\r\n this.state = {\r\n openBackDrop: false, \r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n selection: [],\r\n grouping: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true,\r\n selection_row: [],\r\n vobtenerdescripcion:'',\r\n loadingMain: false,\r\n\r\n optionsPeriodos: [],\r\n valuePeriodos: [],\r\n loadingPeriodos: true\r\n\r\n\r\n }\r\n\r\n const RenderOption = ((option) => {\r\n return (\r\n \r\n { option.PERIODO }{' ('}
{ option.DESCRIPCION } {')'}\r\n \r\n );\r\n });\r\n\r\n const VirtualTable_cellComponent = (getTime) => (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n \r\n if (column.name === 'INICIO')\r\n {\r\n return ( \r\n { row.INICIO !== null ? getTime(row.INICIO, 1) : row.INICIO }\r\n );\r\n }\r\n \r\n if (column.name === 'FIN')\r\n {\r\n return ( \r\n { row.FIN !== null ? getTime(row.FIN, 1) : row.FIN }\r\n );\r\n }\r\n \r\n return(\r\n \r\n );\r\n }\r\n\r\n\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent; \r\n this.RenderOption=RenderOption;\r\n\r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\nchangeSelection = (selection) =>{\r\n if(selection[selection.length-1]===undefined)\r\n {\r\n this.setState({ selection: this.state.selection});\r\n }\r\n else{\r\n this.state.rows.forEach(element => {\r\n if(element.ID_SECCION===funciones.getIdRowChecking(selection,this.state.selection))\r\n {\r\n this.setState({selection: [selection[selection.length-1]],selection_row:[{ID_SECCION: element.ID_SECCION}]})\r\n \r\n \r\n return;\r\n }\r\n });\r\n \r\n }\r\n }\r\n\r\n onChangeAutocomplete = (event, newValue)=>\r\n {\r\n this.setState({ rows: [],valuePeriodos:newValue}, ()=>{ \r\n \r\n if (newValue === null)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n this.setState({ loadingMain: true }, ()=>{\r\n this.obtener_cursos(newValue.ID_CONTROL_MATRICULA);\r\n });\r\n }\r\n \r\n });\r\n \r\n }\r\n\r\n obtener_cursos= (id_control_matricula)=>{\r\n new Request.get(`${ip}/estudiantesprematriculados/obtener_cursos_catedratico/${id_control_matricula}/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0)\r\n {\r\n this.setState({ rows: tmp,loadingMain: false}); \r\n }\r\n else\r\n { \r\n this.setState({rows: [], heightTableMain:funciones.getHeightTableMain(movil_pequeño,this).heightTable,loadingMain: false})\r\n }\r\n \r\n this.actualizarbarra(true)\r\n })\r\n \r\n } \r\n \r\n \r\n\r\n \r\n\r\n generarreporte=event=>{\r\n if(this.state.selection.length!==0)\r\n document.getElementById(\"BT-ListaPrematriculadosCat\").click();\r\n }\r\n\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarbarra(false)\r\n\r\n /*Auth.loggedIn().then( function(b){\r\n _this.setState({ isLoggin: b})\r\n if(b)*/\r\n this.setState({ isLoggin: Auth.getProfile().plataforma !== undefined ? true : false }, ()=>{\r\n this.setState({heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n\r\n/*********************************************************************************************************************************/\r\nRequest.get(`${ip}/estudiantesprematriculados/obtener_periodo_activo_calificador/${Auth.getProfile().user}`)\r\n.set({'authorization': 'Bearer ' + Auth.getToken() })\r\n.retry(1)\r\n.timeout({ response: 20000, deadline: 50000, }) \r\n.end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión periodo')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n}\r\nconst tmp = JSON.parse(res.text);\r\nif(tmp.length>0){\r\n this.setState({optionsPeriodos:tmp,loadingPeriodos: false,\r\n valuePeriodos:{ID_CONTROL_MATRICULA: tmp[0].ID_CONTROL_MATRICULA, PERIODO: tmp[0].PERIODO, DESCRIPCION:tmp[0].DESCRIPCION}})\r\n \r\n this.obtener_cursos(this.state.valuePeriodos.ID_CONTROL_MATRICULA) \r\n\r\n console.log('PRUEBAS ' + this.state.valuePeriodos.PERIODO,this.state.optionsPeriodos)\r\n}\r\n\r\n_this.actualizarbarra(true)\r\n})\r\n\r\n})\r\n\r\n\r\n}\r\n\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n const botones = [\r\n {icono: 'Print', toolt: 'Imprimir', nombre: 'Imprimir' ,escritura:true , disabled:this.state.selection.length===0 ,onclick: this.generarreporte\r\n , display: 'auto'},\r\n ]\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n \r\n \r\n \r\n {this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''} \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Periodo: \r\n \r\n\r\n
option.PERIODO +' (' + option.DESCRIPCION + ')' }\r\n style={{ marginTop: movil_pequeño?5:-15,marginLeft:5, width: !movil_pequeño ? '230px' : '100%'}}\r\n renderInput={(params) => \r\n {this.state.loadingPeriodos ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n }}\r\n fullWidth\r\n />}\r\n renderOption={this.RenderOption}\r\n onChange={this.onChangeAutocomplete} \r\n loading={this.state.loadingPeriodos}\r\n value={this.state.valuePeriodos}\r\n PaperComponent={(props)=>( )} \r\n openOnFocus={true} \r\n />\r\n \r\n\r\n \r\n {/* COLUMNA DESCRIPCION */}\r\n \r\n \r\n \r\n Descripción Columna en Reporte: \r\n \r\n \r\n {this.setState({vobtenerdescripcion: event.target.value});}}\r\n />\r\n
\r\n \r\n {/*------------------- */}\r\n {/*--BOTON DE IMPRIMIR */}\r\n\r\n \r\n
\r\n Debe de Marcar una Clase y luego Presionar el Botón de Impresión:\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*------------------- */}\r\n \r\n }\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent(funciones.getTime)}\r\n showSelectionColumn={true}\r\n RowComponent={this.trow}\r\n\r\n />\r\n
\r\n \r\n ); /// finaliza return\r\n }\r\n else if (this.state.isLoggin === false)\r\n {\r\n Auth.logout()\r\n window.location.reload();\r\n return; \r\n }\r\n\r\n\r\n return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport {colores, globales,funciones} from '../../global';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nimport AuthService from '../../AuthService';\r\nimport Request from 'superagent';\r\nimport CustomTable from '../../components/CustomTable';\r\nimport {Table} from '@devexpress/dx-react-grid-material-ui';\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport { Typography,TextField } from '@material-ui/core';\r\nimport Reporte from '../../components/Modalreporte';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\r\nvar movil_pequeño=/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nlet isVisibleRowSelected = false;\r\n//const colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\n//let alternateColorRow1 = colores.tabla.alternateColorRow1; \r\n//let alternateColorRow2 = colores.tabla.alternateColorRow2;\r\n\r\nconst getRowId = row => row.ID_SECCION;\r\n\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n Dialog:{\r\n borderRadius: border_dialog,\r\n margin:0,\r\n padding:0\r\n },\r\n backdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n },\r\n select: { //CONFIGURA EL SELECT \r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'50%',\r\n },\r\n textField: {\r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'20%',\r\n width: '20%' \r\n },\r\n \r\n })\r\n\r\n const columns= [\r\n {name:'ID_SECCION',title: 'ID_SECCION'}\r\n ,{name:'CODIGO_CURSO',title: 'Código'}\r\n ,{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'INICIO',title: 'Inicio'}\r\n ,{name:'FIN',title: 'Fin'}\r\n ,{name:'SECCION',title: 'Sección'}\r\n ,{name:'CODIGO',title: 'Aula'}\r\n ,{name:'JORNADA',title: 'Jornada'}\r\n ,{name:'MODALIDAD',title: 'Grupo'}\r\n ,{name:'CANTIDAD',title: 'Cantidad'}\r\n ,{name:'ANIO_PERIODO',title: 'ANIO_PERIODO'}\r\n ];\r\n \r\n const defaultHiddenColumnNames= ['ID_SECCION','ANIO_PERIODO'];\r\n \r\n const tableColumnExtensions= [\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: false, align: 'center' ,width: 420},\r\n { columnName: 'INICIO', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'FIN', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'SECCION', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'CODIGO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'JORNADA', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'MODALIDAD', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'CANTIDAD', wordWrapEnabled: false, align: 'center',width: 110},\r\n ];\r\n\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class EstudiantesMatriculados extends React.Component {\r\n tablaRef = React.createRef();\r\n descripcionRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.l= props.l\r\n this.e= props.e\r\n this.i= props.i\r\n this.isVisibleRowSelected=isVisibleRowSelected\r\n this.actualizarbarra=props.actualizarbarra\r\n this.actualizarcircular=props.actualizarcircular\r\n\r\n this.state = {\r\n openBackDrop: false, \r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n selection: [],\r\n grouping: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true,\r\n selection_row: [],\r\n vobtenerdescripcion:'',\r\n loadingMain: false,\r\n\r\n optionsPeriodos: [],\r\n valuePeriodos: [],\r\n loadingPeriodos: true\r\n\r\n }\r\n\r\n const RenderOption = ((option) => {\r\n return (\r\n \r\n { option.PERIODO }{' ('}
{ option.DESCRIPCION } {')'}\r\n \r\n );\r\n });\r\n\r\n const VirtualTable_cellComponent = (getTime) => (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n \r\n if (column.name === 'INICIO')\r\n {\r\n return ( \r\n { row.INICIO !== null ? getTime(row.INICIO, 1) : row.INICIO }\r\n );\r\n }\r\n \r\n if (column.name === 'FIN')\r\n {\r\n return ( \r\n { row.FIN !== null ? getTime(row.FIN, 1) : row.FIN }\r\n );\r\n }\r\n \r\n return(\r\n \r\n );\r\n } \r\n\r\n\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent; \r\n this.RenderOption=RenderOption;\r\n \r\n \r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\nchangeSelection = (selection) =>{\r\n if(selection[selection.length-1]===undefined)\r\n {\r\n this.setState({ selection: this.state.selection});\r\n }\r\n else\r\n {\r\n this.state.rows.forEach(element => {\r\n if(element.ID_SECCION===funciones.getIdRowChecking(selection,this.state.selection))\r\n {\r\n this.setState({selection: [selection[selection.length-1]],selection_row:[{ID_SECCION: element.ID_SECCION}]})\r\n }\r\n });\r\n \r\n }\r\n }\r\n\r\n onChangeAutocomplete = (event, newValue)=>\r\n {\r\n this.setState({ rows: [],valuePeriodos:newValue}, ()=>{ \r\n\r\n if (newValue === null)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n this.setState({ loadingMain: true }, ()=>{\r\n this.obtener_cursos(newValue.ID_CONTROL_MATRICULA);\r\n });\r\n }\r\n\r\n });\r\n \r\n }\r\n\r\n\r\n generarreporte=event=>{\r\n if(this.state.selection.length!==0)\r\n document.getElementById(\"BT-ListaMatriculadosCat\").click();\r\n\r\n }\r\n\r\n obtener_cursos= (id_control_matricula)=>{\r\n new Request.get(`${ip}/estudiantesmatriculados/obtener_cursos_catedratico/${id_control_matricula}/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0)\r\n {\r\n this.setState({ rows: tmp,loadingMain: false}); \r\n }\r\n else\r\n { \r\n this.setState({rows: [], heightTableMain:funciones.getHeightTableMain(movil_pequeño,this).heightTable,loadingMain: false})\r\n }\r\n \r\n this.actualizarbarra(true)\r\n})\r\n\r\n}\r\n\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarbarra(false)\r\n\r\n /*Auth.loggedIn().then( function(b){\r\n _this.setState({ isLoggin: b})\r\n if(b)*/\r\n this.setState({ isLoggin: Auth.getProfile().plataforma !== undefined ? true : false }, ()=>{\r\n this.setState({heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n\r\n/*********************************************************************************************************************************/\r\n Request.get(`${ip}/estudiantesmatriculados/obtener_periodo_activo_calificador/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión periodo')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0){\r\n this.setState({optionsPeriodos:tmp,loadingPeriodos: false,\r\n valuePeriodos:{ID_CONTROL_MATRICULA: tmp[0].ID_CONTROL_MATRICULA, PERIODO: tmp[0].PERIODO, DESCRIPCION:tmp[0].DESCRIPCION}})\r\n \r\n this.obtener_cursos(this.state.valuePeriodos.ID_CONTROL_MATRICULA) \r\n }\r\n \r\n _this.actualizarbarra(true)\r\n })\r\n\r\n })\r\n}\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n const botones = [\r\n {icono: 'Print', toolt: 'Imprimir', nombre: 'Imprimir' ,escritura:true , disabled:this.state.selection.length===0 ,onclick: this.generarreporte\r\n , display: 'auto'},\r\n ]\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n \r\n \r\n \r\n {this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''} \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Periodo: \r\n \r\n\r\n
option.PERIODO +' (' + option.DESCRIPCION + ')' }\r\n style={{ marginTop: movil_pequeño?5:-15,marginLeft:5, width: !movil_pequeño ? '230px' : '100%'}}\r\n renderInput={(params) => \r\n {this.state.loadingPeriodos ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n }}\r\n fullWidth\r\n />}\r\n renderOption={this.RenderOption}\r\n onChange={this.onChangeAutocomplete} \r\n loading={this.state.loadingPeriodos}\r\n value={this.state.valuePeriodos}\r\n PaperComponent={(props)=>( )} \r\n openOnFocus={true} \r\n />\r\n\r\n \r\n {/* COLUMNA DESCRIPCION */}\r\n \r\n \r\n \r\n Descripción Columna en Reporte: \r\n \r\n \r\n {this.setState({vobtenerdescripcion: event.target.value});}}\r\n />\r\n
\r\n \r\n {/*------------------- */}\r\n {/*--BOTON DE IMPRIMIR */}\r\n\r\n \r\n
\r\n Debe de Marcar una Clase y luego Presionar el Botón de Impresión:\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*------------------- */}\r\n \r\n }\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent(funciones.getTime)}\r\n showSelectionColumn={true}\r\n RowComponent={this.trow}\r\n\r\n />\r\n
\r\n \r\n ); /// finaliza return\r\n }\r\n else if (this.state.isLoggin === false)\r\n {\r\n Auth.logout()\r\n window.location.reload();\r\n return; \r\n }\r\n\r\n\r\n return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport {colores, globales,funciones} from '../../global';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nimport AuthService from '../../AuthService';\r\nimport Request from 'superagent';\r\nimport CustomTable from '../../components/CustomTable';\r\nimport {Table} from '@devexpress/dx-react-grid-material-ui';\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport { Typography,TextField } from '@material-ui/core';\r\nimport Reporte from '../../components/Modalreporte';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\r\nvar movil_pequeño=/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nlet isVisibleRowSelected = false;\r\n//const colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\n//let alternateColorRow1 = colores.tabla.alternateColorRow1; \r\n//let alternateColorRow2 = colores.tabla.alternateColorRow2;\r\n\r\nconst getRowId = row => row.ID_SECCION;\r\n\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n Dialog:{\r\n borderRadius: border_dialog,\r\n margin:0,\r\n padding:0\r\n },\r\n backdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n },\r\n select: { //CONFIGURA EL SELECT \r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'50%',\r\n },\r\n textField: {\r\n margin: theme.spacing(movil_pequeño?2:1, 1,0,0),\r\n padding: 0,\r\n minWidth: movil_pequeño?'100%':'20%',\r\n width: '20%' \r\n },\r\n })\r\n\r\n const columns= [\r\n {name:'ID_SECCION',title: 'ID_SECCION'}\r\n ,{name:'CODIGO_CURSO',title: 'Código'}\r\n ,{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'INICIO',title: 'Inicio'}\r\n ,{name:'FIN',title: 'Fin'}\r\n ,{name:'SECCION',title: 'Sección'}\r\n ,{name:'CODIGO',title: 'Aula'}\r\n ,{name:'JORNADA',title: 'Jornada'}\r\n ,{name:'MODALIDAD',title: 'Grupo'}\r\n ,{name:'CANTIDAD',title: 'Cantidad'}\r\n ,{name:'ANIO_PERIODO',title: 'ANIO_PERIODO'}\r\n ];\r\n \r\n const defaultHiddenColumnNames= ['ID_SECCION','ANIO_PERIODO'];\r\n \r\n const tableColumnExtensions= [\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: false, align: 'center' ,width: 420},\r\n { columnName: 'INICIO', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'FIN', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'SECCION', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'CODIGO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'JORNADA', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'MODALIDAD', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'CANTIDAD', wordWrapEnabled: false, align: 'center',width: 110},\r\n ];\r\n\r\n\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class EstudiantesRetirados extends React.Component {\r\n tablaRef = React.createRef();\r\n descripcionRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.l= props.l\r\n this.e= props.e\r\n this.i= props.i\r\n this.isVisibleRowSelected=isVisibleRowSelected\r\n this.actualizarbarra=props.actualizarbarra\r\n this.actualizarcircular=props.actualizarcircular\r\n\r\n this.state = {\r\n openBackDrop: false, \r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n selection: [],\r\n grouping: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true,\r\n selection_row: [],\r\n vobtenerdescripcion:'',\r\n \r\n optionsPeriodos: [],\r\n valuePeriodos: [],\r\n loadingPeriodos: true\r\n }\r\n\r\n const RenderOption = ((option) => {\r\n return (\r\n \r\n { option.PERIODO }{' ('}
{ option.DESCRIPCION } {')'}\r\n \r\n );\r\n }); \r\n\r\n const VirtualTable_cellComponent = (getTime) => (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n \r\n if (column.name === 'INICIO')\r\n {\r\n return ( \r\n { row.INICIO !== null ? getTime(row.INICIO, 1) : row.INICIO }\r\n );\r\n }\r\n \r\n if (column.name === 'FIN')\r\n {\r\n return ( \r\n { row.FIN !== null ? getTime(row.FIN, 1) : row.FIN }\r\n );\r\n }\r\n \r\n return(\r\n \r\n );\r\n }\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent; \r\n this.RenderOption=RenderOption;\r\n \r\n\r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\nchangeSelection = (selection) =>{\r\n if(selection[selection.length-1]===undefined)\r\n {\r\n this.setState({ selection: this.state.selection});\r\n }\r\n else{\r\n this.state.rows.forEach(element => {\r\n if(element.ID_SECCION===funciones.getIdRowChecking(selection,this.state.selection))\r\n {\r\n this.setState({selection: [selection[selection.length-1]],selection_row:[{ID_SECCION: element.ID_SECCION}]})\r\n return;\r\n }\r\n });\r\n \r\n }\r\n }\r\n\r\n onChangeAutocomplete = (event, newValue)=>\r\n {\r\n this.setState({ rows: [],valuePeriodos:newValue}, ()=>{ \r\n \r\n if (newValue === null)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n this.setState({ loadingMain: true }, ()=>{\r\n this.obtener_cursos(newValue.ID_CONTROL_MATRICULA);\r\n });\r\n }\r\n \r\n });\r\n \r\n }\r\n\r\n obtener_cursos= (id_control_matricula)=>{\r\n new Request.get(`${ip}/estudiantesretirados/obtener_cursos_catedratico/${id_control_matricula}/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0)\r\n {\r\n this.setState({ rows: tmp,loadingMain: false}); \r\n }\r\n else\r\n { \r\n this.setState({rows: [], heightTableMain:funciones.getHeightTableMain(movil_pequeño,this).heightTable,loadingMain: false})\r\n }\r\n \r\n this.actualizarbarra(true)\r\n })\r\n \r\n }\r\n\r\n \r\ngenerarreporte=event=>{\r\n if(this.state.selection.length!==0)\r\n document.getElementById(\"BT-ListaRetiradosCat\").click();\r\n}\r\n \r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarbarra(false)\r\n\r\n /*Auth.loggedIn().then( function(b){\r\n _this.setState({ isLoggin: b})\r\n if(b)*/\r\n this.setState({ isLoggin: Auth.getProfile().plataforma !== undefined ? true : false }, ()=>{\r\n this.setState({heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n /*********************************************************************************************************************************/\r\n Request.get(`${ip}/estudiantesretirados/obtener_periodo_activo_calificador/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 20000, deadline: 50000, }) \r\n .end((err, res)=> {\r\n if (err) { \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n (async function() {\r\n funciones.showToast('e','Error de conexión periodo')\r\n })();//FIN FUNCION ASYNC\r\n return;\r\n }\r\n const tmp = JSON.parse(res.text);\r\n if(tmp.length>0){\r\n this.setState({optionsPeriodos:tmp,loadingPeriodos: false,\r\n valuePeriodos:{ID_CONTROL_MATRICULA: tmp[0].ID_CONTROL_MATRICULA, PERIODO: tmp[0].PERIODO, DESCRIPCION:tmp[0].DESCRIPCION}})\r\n \r\n this.obtener_cursos(this.state.valuePeriodos.ID_CONTROL_MATRICULA) \r\n }\r\n\r\n _this.actualizarbarra(true)\r\n })\r\n\r\n})\r\n}\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n const botones = [\r\n {icono: 'Print', toolt: 'Imprimir', nombre: 'Imprimir' ,escritura:true , disabled:this.state.selection.length===0 ,onclick: this.generarreporte\r\n , display: 'auto'},\r\n ]\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n \r\n \r\n \r\n {this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''} \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Periodo: \r\n \r\n
option.PERIODO +' (' + option.DESCRIPCION + ')' }\r\n style={{ marginTop: movil_pequeño?5:-15,marginLeft:5, width: !movil_pequeño ? '230px' : '100%'}}\r\n renderInput={(params) => \r\n {this.state.loadingPeriodos ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n }}\r\n fullWidth\r\n />}\r\n renderOption={this.RenderOption}\r\n onChange={this.onChangeAutocomplete} \r\n loading={this.state.loadingPeriodos}\r\n value={this.state.valuePeriodos}\r\n PaperComponent={(props)=>( )} \r\n openOnFocus={true} \r\n />\r\n \r\n\r\n {/*--BOTON DE IMPRIMIR */}\r\n\r\n \r\n
\r\n Debe de Marcar una Clase y luego Presionar el Botón de Impresión:\r\n \r\n
\r\n \r\n
\r\n
\r\n {/*------------------- */}\r\n \r\n }\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent(funciones.getTime)}\r\n showSelectionColumn={true}\r\n RowComponent={this.trow}\r\n\r\n />\r\n
\r\n \r\n ); /// finaliza return\r\n }\r\n else if (this.state.isLoggin === false)\r\n {\r\n Auth.logout()\r\n window.location.reload();\r\n return; \r\n }\r\n\r\n\r\n return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\r\n","import React from 'react';\r\nimport {globales,funciones} from '../../global';\r\nimport AuthService from '../../AuthService';\r\nimport {withStyles} from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\nimport Button from '@material-ui/core/Button';\r\nimport AuthService_primero from \"../../AuthService_primero\";\r\nimport Request from \"superagent\";\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nlet Auth = new AuthService();\r\nlet tokenInfo = [];\r\n\r\nvar movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\n\r\nconst styles = theme => ({\r\n formControlText: {\r\n width: '100%', \r\n marginTop: theme.spacing(0), \r\n textAlign: 'left',\r\n marginRight: theme.spacing(2),\r\n },\r\n \r\n paper: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: !movil ? '480px' : undefined,\r\n maxWidth: !movil ? '480px' : undefined,\r\n height: !movil ? '630px' : undefined,\r\n maxHeight: !movil ? '99%' : undefined\r\n },\r\n \r\n paperTitle: { \r\n height: '40px', \r\n textAlign: 'center', \r\n verticalAlign: 'middle',\r\n lineHeight: '40px',\r\n margin: \"1px \" + globales.tabla.marginright + \"px 0px \" + globales.tabla.marginleft + \"px\", \r\n },\r\n backdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n },\r\n\r\n paperConfirm: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: '320px', \r\n maxWidth: '320px', \r\n }, \r\n \r\n });\r\n\r\n \r\n\r\nexport default withStyles(styles) (\r\nclass App extends React.Component {\r\n\r\ntablaRef = React.createRef();\r\n\r\n constructor (props) {\r\n super(props);\r\n this.Auth_primero = new AuthService_primero();\r\n this.state = {\r\n isLoading: false,\r\n cargando: false,\r\n isLoggin : undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n isTypePass1: true,\r\n isTypePass2: true,\r\n isTypePass3: true,\r\n password0:'',\r\n password1 :'',\r\n password2 :'', \r\n isUnconscionable:false,\r\n errorMsg0:'',\r\n errorMsg1:'',\r\n errorMsg2:'',\r\n\r\n isInsecure:false,\r\n isIncorrectPass:false,\r\n openBackDrop:false,\r\n openModal:false,\r\n msgModal:'',\r\n colorText:'',\r\n RESULT:0\r\n\r\n };\r\n\r\n this.botones_dialog =[ \r\n {icono: 'Check', toolt: '', nombre: 'Aceptar' ,onclick: this.handleClose, display:'auto'},\r\n ];\r\n\r\n\r\n };//FIN CONSTRUCTOR\r\n\r\n\r\n \r\ncomponentDidMount() { \r\n\r\n tokenInfo = Auth.getProfile(); //Token decodificado\r\n \r\n let _this = this;\r\n\r\n Auth.loggedIn().then( function(b){ \r\n \r\n _this.setState({ isLoggin: b }); //Activa el Render (Ademas obtine la informacion del Token en caso que b = true)\r\n \r\n \r\n \r\n })\r\n\r\n};\r\n\r\nhandleRevelar = (id)=> \r\n { \r\n if(id===1)\r\n {\r\n this.setState({ isTypePass1: this.state.isTypePass1?false:true });\r\n }\r\n if(id===2)\r\n {\r\n this.setState({ isTypePass2: this.state.isTypePass2?false:true });\r\n }\r\n if(id===3)\r\n {\r\n this.setState({ isTypePass3: this.state.isTypePass3?false:true });\r\n }\r\n \r\n }\r\n\r\n manejarPegar = (event)=>\r\n {\r\n event.preventDefault();\r\n }\r\n\r\n handleChangePass0=(event)=>\r\n {\r\n \r\n this.setState({password0:event.target.value,isIncorrectPass:false,errorMsg0:''})\r\n \r\n }\r\n\r\n handleChangePass1=(event)=>\r\n {\r\n \r\n this.setState({password1:event.target.value})\r\n this.validarContraseña(event.target.value)\r\n }\r\n\r\n handleChangePass2=(event)=>\r\n {\r\n \r\n this.setState({password2:event.target.value})\r\n\r\n if(event.target.value!==this.state.password1)\r\n {\r\n this.setState({isUnconscionable:true,errorMsg2:'Las constraseña no coinciden.'})\r\n }\r\n else\r\n {\r\n this.setState({isUnconscionable:false,errorMsg2:''})\r\n }\r\n\r\n //this.validarContraseña(event.target.value)\r\n }\r\n\r\n handleClose = () => { \r\n this.setState({ openModal: false },()=>{\r\n \r\n if(this.state.RESULT)\r\n {window.location.reload()}\r\n\r\n });\r\n }\r\n\r\n handleClick_1 = () => {\r\n \r\n this.setState({ openBackDrop: true }, ()=>{ \r\n \r\n new Request\r\n .post(`${globales.ip}/cambiar_clave/cambiar`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ USER: tokenInfo.user, \r\n OLD_PASS: this.state.password0,\r\n NEW_PASS: this.state.password1 \r\n })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n window.location.reload();\r\n return; \r\n }\r\n \r\n this.setState({ openBackDrop: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n \r\n return;\r\n }\r\n \r\n const RESP = JSON.parse(res.text); \r\n \r\n\r\n if (RESP[0].RESULT === 1)\r\n { \r\n this.setState({ openBackDrop: false, openModal:true,msgModal:RESP[0].RESP,colorText:'',RESULT:RESP[0].RESULT}, ()=>{ \r\n Auth.logout(); \r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n else\r\n { \r\n this.setState({ openBackDrop: false,openModal:true,msgModal:RESP[0].RESP,colorText:'red',RESULT:RESP[0].RESULT }, ()=>{ \r\n /* funciones.showToast('w', RESP[0].RESP); */ \r\n \r\n });\r\n }\r\n \r\n \r\n }); \r\n \r\n });\r\n \r\n };\r\n\r\n\r\n validarContraseña = (password) => {\r\n \r\n // Expresiones regulares para validación\r\n const minLength = /.{8,}/; // Longitud mínima de 8 caracteres\r\n const hasUppercase = /[A-Z]/; // Al menos una mayúscula\r\n const hasLowercase = /[a-z]/; // Al menos una minúscula\r\n const hasNumber = /[0-9]/; // Al menos un número\r\n const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>+-/\\\\_¿¡=\\'°]/; // Al menos un carácter especial\r\n\r\n if (!minLength.test(password)) {\r\n this.setState({errorMsg1:'La contraseña debe tener al menos 8 caracteres.',isInsecure:true,password2:''});\r\n } else if (!hasUppercase.test(password)) {\r\n this.setState({errorMsg1:'Debe incluir al menos una letra mayúscula.',isInsecure:true,password2:''});\r\n } else if (!hasLowercase.test(password)) {\r\n this.setState({errorMsg1:'Debe incluir al menos una letra minúscula.',isInsecure:true,password2:''});\r\n } else if (!hasNumber.test(password)) {\r\n this.setState({errorMsg1:'Debe incluir al menos un número.',isInsecure:true,password2:''});\r\n } else if (!hasSpecialChar.test(password)) {\r\n this.setState({errorMsg1:'Debe incluir al menos un símbolo.',isInsecure:true,password2:''});\r\n } else {\r\n this.setState({errorMsg1:'',isInsecure:false,password2:''}); // Si cumple con todos los requisitos\r\n }\r\n };\r\n\r\nrender() {\r\n\r\n const { classes } = this.props; \r\n\r\n \r\n\r\n\r\n if (this.state.isLoggin === true)\r\n {\r\n return (\r\n \r\n \r\n \r\n {\r\n (() => {\r\n \r\n return (\r\n \r\n\r\n\r\n
\r\n Cambio de contraseña \r\n \r\n\r\n
\r\n\r\n{/* */}\r\n\r\n
\r\n Tu nueva contraseña debe cumplir con los siguientes requisitos: \r\n \r\n \r\n 1. Longitud mínima: La contraseña debe tener al menos 8 caracteres.\r\n \r\n 2. Diversidad de caracteres: Utiliza una combinación de:\r\n \r\nLetras mayúsculas y minúsculas. \r\nNúmeros. \r\nSímbolos ( @ , # , ! , $ , % , + , - , * , _ , etc. ) \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n this.handleRevelar(1) }>\r\n {this.state.isTypePass1? : } \r\n \r\n Tooltip> \r\n div>\r\n\r\n div>\r\n\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n this.handleRevelar(2) }>\r\n {this.state.isTypePass2? : } \r\n \r\n Tooltip> \r\n div>\r\n\r\n div>\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n this.handleRevelar(3) }>\r\n {this.state.isTypePass3? : } \r\n \r\n Tooltip> \r\n div>\r\n\r\n div>\r\n\r\n \r\n Cambiar la contraseña\r\n \r\n\r\n \r\n\r\n Paper>\r\n
\r\n
\r\n \r\n {'Por favor espere.'} \r\n \r\n\r\n
\r\n Notificación \r\n \r\n \r\n \r\n \r\n {/*
*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n \r\n \r\n })()\r\n\r\n }\r\n\r\n \r\n\r\n \r\n );\r\n }\r\nelse if (this.state.isLoggin === false)\r\n{\r\n //Auth.logout();\r\n window.location.reload();\r\n return; //((
))\r\n}\r\nreturn null;\r\n\r\n}//FIN RENDER\r\n}\r\n\r\n)\r\n"],"sourceRoot":""}