{"version":3,"sources":["themeMui.js","themeMui_login.js","pages/suficiencia/suficiencia_estudiante.js","pages/suficiencia/ingreso_nota_suficiencia.js","pages/suficiencia/configuracion_suficiencia_especial.js","serviceWorker.js"],"names":["movil","test","navigator","userAgent","theme","createMuiTheme","palette","secondary","main","colores","naranja","primary","azul","props","MuiButton","size","MuiFilledInput","margin","MuiFormControl","MuiFormHelperText","MuiIconButton","MuiInputBase","MuiInputLabel","MuiListItem","dense","MuiOutlinedInput","MuiFab","MuiTable","MuiTextField","MuiToolbar","variant","MuiButtonBase","disableRipple","MuiSwitch","MuiCheckbox","MuiAutocomplete","disableListWrap","autoHighlight","clearText","openText","closeText","noOptionsText","loadingText","MuiListItemIcon","style","minWidth","overrides","MuiAccordion","root","boxShadow","border","borderBottom","display","MuiAccordionSummary","maxHeight","minHeight","expandIcon","width","height","transform","label","fontSize","MuiSelect","icon","marginTop","marginRight","select","paddingLeft","popupIndicator","clearIndicator","paper","listbox","option","undefined","MuiTooltip","tooltip","MuiTableRow","color","MuiTabs","backgroundColor","tabla","encabezado","indicator","MuiTab","MuiDialogTitle","paddingTop","paddingBottom","textAlign","MuiDialogContent","paddingRight","MuiDialogActions","justifyContent","marginLeft","MuiTableCell","body","footer","MuiListSubheader","whiteSpace","textOverflow","overflow","cursor","verticalAlign","lineHeight","MuiInput","input","background","padding","typography","fontFamily","display4","display3","display2","display1","headline","title","subtitle1","subtitle2","subheading","body2","body1","caption","button","h6","h5","alignItems","Auth","AuthService","ip","globales","border_dialog","movil_pequeño","isVisibleRowSelected","colorRowSelected","selection","alternateColorRow1","alternateColorRow2","ListboxComponent","virtual","getRowId","row","ID_CURSO_HIJO","getRowId_niveles","defaultHiddenColumnNames","defaultHiddenColumnNames_niveles","columns","name","columns_niveles","tableColumnExtensions","columnName","wordWrapEnabled","align","tableColumnExtensions_niveles","groupSummaryItems","type","grouping","GroupCellContent","_ref","column","_jsx","children","value","styles","popper","zIndex","Dialog","borderRadius","backdrop","flexDirection","spacing","textField","withStyles","React","Component","constructor","super","tablaRef","createRef","onEntering","this","consulta_suficiencia_especial","aceptar_suficiencia","setState","openBackDrop","cuenta_alumno","state","valueAutoCompleteAdd","CUENTA_ALUMNO","Request","post","set","getToken","send","getProfile","plataforma","user","ID_FACTURA","ID_CURSO_PADRE","ID_DETALLE_PLAN","TIPO","ESPECIAL","ID_SUFICIENCIA","USUARIO","retry","timeout","response","deadline","end","err","res","toString","substr","window","location","reload","funciones","showToast","rows","JSON","parse","text","length","RESP","consulta_suficiencias","open_seleccion","ex","aceptar_suficiencia_niveles","selection_niveles","open_seleccion_niveles","quitar_suficiencia_niveles","open_borrar_niveles","quitar_suficiencia","open_borrar","_this","get","tmp","rows_niveles","actualizarcircular","allGroups","grupo","found","forEach","item","index","find","GRUPO","push","filters","expandedGroups","segundo_grupo","heightTableMain","getHeightTableMain","heightTable","cerrardialog_niveles","event","open_niveles","cerrardialog_selection","cerrardialog_selection_niveles","changeFilters","changeExpandedGroups","filtersClientes","optionAutocompleteAdd","openAutoComplete","isLoadingClientes","onBlurAutoCompleteAdd","openAutoCompleteAdd","onChangeAutocompleteAdd","onChangeInput","e","target","trim","NOMBRE_COMPLETO","l","i","actualizarbarra","isLoggin","filteringColumnExtensions","expandedRowIds","enabledFilterRows","loadingsuficiencias","isSaving","TotalGroupCellComponent","allMONEDAS","CHECK1","SIMBOLO_MONEDA","tableRow","Table","StubCell","TableSummaryRow","TotalCell","StubCellComponentTable","_ref4","colSpan","tableColumn","key","VirtualTable_cellComponent","ClickCheckbox","CODIGO_CURSO","DESCRIPCION_CURSO","MONTO","Clickniveles","Cell","PAGO","Checkbox","checked","onClick","disabled","Tooltip","Button","textTransform","startIcon","Icono","icono","VirtualTable_cellComponent_niveles","SECUENCIA","trow","TableRow","_ref2","classes","highlighted","rowIndex","selectByRowClick","odd","Row","trow_niveles","_ref3","componentDidMount","render","botones_seleccionar","nombre","escritura","onclick","botones_quitar","botones_seleccionar_niveles","botones_quitar_niveles","botones_niveles","_jsxs","Fragment","marginBottom","Autocomplete","id","options","getOptionLabel","renderInput","params","TextField","onBlur","InputProps","endAdornment","CircularProgress","readOnly","renderOption","onChange","open","loading","disableClearable","onInputChange","Backdrop","className","fullWidth","maxWidth","TransitionProps","DialogTitle","DialogContent","CustomTable","Columns","Rows","TableColumnExtensions","DefaultHiddenColumnNames","Selection","RowComponent","standarPlugin","TableRowsIndexer","ChangeExpandedGroups","showSelectionColumn","BarraBotones","botones","Typography","ref","marginleft_movil","marginleft","marginright_movil","marginright","Filters","onFiltersChange","Grouping","ExpandedGroups","groupItems","summaryRowMessages","count","sum","groupContentComponent","groupCellComponent","stubCellComponentTable","logout","getChildRows","rootRows","TREE","TableTreeColumn_cellComponent","ID_SUFICIENCIA_DEPENDENCIA","TableTreeColumn","color_disabled","Avatar","currentnota","notaRef","element","tree","filter","x","changeExpandedRowIds","cerrardialog","open_ingreso","open_modificar","errornota","igual","onChangenota","current","NOTA","guardar_ingreso","guardar_modificar","tableNameTreeColum","ClickBoton","CREDITOS","ESTADO","ID_SECCION_CLIENTE","ESTATUS_ACADEMICO","TIENE_NIVELES","document","getElementById","focus","botones_ingresa","botones_modificar","autoFocus","defaultValue","InputLabelProps","shrink","InputAdornment","position","PopperProps","IconButton","required","error","onKeyDown","onlyNumbers","inputProps","maxLength","ExpandedRowIds","TableNameTreeColum","GetChildRows","OnExpandedRowIdsChange","open_seleccion_niveles_modificar","onChangeAutocompleteniveles","async","newValue","setSelectedplanes","planes_combo","niveles","ID_PLAN","ID_NIVEL","Promise","resolve","setSelectedniveles","comboplanes","onChangeAutocompleteplanes","cursos","open_seleccion_niveles_ingreso","nota","ID_SUFICIENCIA_ESPECIALES","ID_DETALLE_PLAN_R","obtenerNiveles","eliminar_ingreso","comboniveles","isloadingNiveles","CODIGO_NIVEL","DESCRIPCION_NIVEL","CODIGO_PLAN","DESCRIPCION_PLAN","ID","niveles_combo","botones_seleccionar_niveles_ingreso","getOptionSelected","Boolean","hostname","match","unregister","serviceWorker","ready","then","registration"],"mappings":"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","file":"static/js/main~3d9b8e9e.7e164fce.chunk.js","sourcesContent":["import {createMuiTheme} from '@material-ui/core/styles';\r\nimport {colores} from './global';\r\n\r\nconst movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nexport const theme = createMuiTheme({\r\n palette: {\r\n secondary: {\r\n main: colores.naranja\r\n },\r\n primary: {\r\n main: colores.azul\r\n },\r\n //type: 'dark'\r\n },\r\n props: {\r\n MuiButton: {\r\n size: 'small',\r\n },\r\n MuiFilledInput: {\r\n margin: 'dense',\r\n },\r\n MuiFormControl: {\r\n margin: 'dense',\r\n },\r\n MuiFormHelperText: {\r\n margin: 'dense',\r\n },\r\n MuiIconButton: {\r\n size: 'small',\r\n },\r\n MuiInputBase: {\r\n margin: 'dense',\r\n },\r\n MuiInputLabel: {\r\n margin: 'dense',\r\n },\r\n MuiListItem: {\r\n dense: true,\r\n },\r\n MuiOutlinedInput: {\r\n margin: 'dense',\r\n },\r\n MuiFab: {\r\n size: 'small',\r\n },\r\n MuiTable: {\r\n size: 'small',\r\n },\r\n MuiTextField: {\r\n margin: 'dense',\r\n },\r\n MuiToolbar: {\r\n variant: 'dense',\r\n },\r\n MuiButtonBase: { \r\n disableRipple: true, \r\n },\r\n MuiSwitch: {\r\n size: 'small'\r\n },\r\n MuiCheckbox: {\r\n size: 'small'\r\n },\r\n MuiAutocomplete: { \r\n disableListWrap: true,\r\n autoHighlight: true, \r\n clearText: 'Borrar',\r\n openText: 'Abrir',\r\n closeText: 'Cerrar',\r\n noOptionsText: 'Sin opciones',\r\n loadingText: 'Cargando...' \r\n },\r\n MuiListItemIcon: {\r\n style: { minWidth: 30 }\r\n },\r\n },\r\n overrides: {\r\n //MuiIconButton: {\r\n //sizeSmall: {\r\n // Adjust spacing to reach minimal touch target hitbox\r\n //marginLeft: 4,\r\n //marginRight: 4, \r\n //marginTop: 2,\r\n //padding: 1,\r\n //},\r\n //},\r\n MuiAccordion: {\r\n root: { \r\n boxShadow: 'none',\r\n border: '1px solid rgba(0, 0, 0, .125)',\r\n '&:not(:last-child)': {\r\n borderBottom: 0,\r\n },\r\n '&:before': {\r\n display: 'none',\r\n },\r\n '&$expanded': {\r\n margin: 'auto',\r\n }\r\n },\r\n },\r\n MuiAccordionSummary: {\r\n root: { \r\n maxHeight: 35,\r\n minHeight: 35,\r\n '&$expanded': { \r\n minHeight: 35,\r\n },\r\n }, \r\n expandIcon: { \r\n width: 22, \r\n height: 22,\r\n }\r\n }, \r\n MuiCheckbox: {\r\n root: {\r\n transform: \"scale(1.2)\",\r\n width: 26,\r\n height: 26,\r\n }\r\n },\r\n MuiButton: {\r\n label: { fontSize: 12 }\r\n },\r\n MuiSelect: {\r\n icon: { marginTop: 2, marginRight: 2 },\r\n select: { paddingLeft: 12 } \r\n },\r\n MuiAutocomplete: {\r\n popupIndicator: { marginTop: 2 },\r\n clearIndicator: { marginTop: 2 },\r\n paper: { marginTop: 0 },\r\n listbox: { maxHeight: movil ? 160 : 243 }, \r\n option: { minHeight: movil ? 28 : undefined }\r\n },\r\n MuiTooltip:{\r\n tooltip:{\r\n fontSize: 12\r\n }\r\n },\r\n MuiTableRow: { \r\n root: {\r\n \"&:first-child th\": {\r\n color: \"white\"\r\n }, \r\n }\r\n },\r\n MuiTabs:{\r\n root: {\r\n color: \"white\",\r\n backgroundColor: colores.tabla.encabezado, \r\n minHeight: \"35px\"\r\n ,maxHeight: \"35px\"\r\n },\r\n indicator:{\r\n backgroundColor: colores.naranja,\r\n },\r\n },\r\n MuiTab: {\r\n root: {\r\n backgroundColor: colores.tabla.encabezado, \r\n maxHeight: 35,\r\n minHeight: 35, \r\n //color: 'inherit'\r\n },\r\n /*selected: {\r\n backgroundColor: colores.tabla.encabezado,\r\n color:'#ffff'\r\n }*/\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n color: \"white\",\r\n backgroundColor: colores.tabla.encabezado,//colores.azul,\r\n paddingTop: \"6px\",\r\n paddingBottom: \"6px\",\r\n textAlign: \"center\",\r\n }\r\n },\r\n MuiDialogContent:{\r\n root:{\r\n paddingLeft: '18px', \r\n paddingRight: '18px',\r\n paddingBottom: \"0px\", \r\n paddingTop: \"18px\"\r\n }\r\n },\r\n MuiDialogActions:{\r\n root: {\r\n justifyContent: 'center', \r\n marginLeft: \"15px\",\r\n marginRight: \"15px\"\r\n }\r\n },\r\n MuiTableCell: {\r\n body: { height: 29 },\r\n footer: { height: 29 }\r\n },\r\n MuiListSubheader: {\r\n root: {\r\n fontSize: 12, \r\n color: colores.azul,\r\n backgroundColor: '#FFFFFF !important',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden', \r\n cursor: \"default\", \r\n maxHeight: \"35px\", \r\n minHeight: \"35px\",\r\n display: \"inline-block\", \r\n verticalAlign: \"middle\", \r\n lineHeight: \"35px\", \r\n width: \"100%\", \r\n },\r\n },\r\n MuiInput: {\r\n input: {\r\n fontSize: \"12px !important\",\r\n },\r\n },\r\n MuiInputLabel: { \r\n root: { \r\n \"&$shrink\": { \r\n fontSize: 15,\r\n background: '#ffffff',\r\n padding: '0px 5px 0px 0px', \r\n marginLeft: \"-2px !important\" \r\n },\r\n }, \r\n },\r\n },\r\n typography: {\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontSize: 12,\r\n display4: {\r\n fontSize: 12,\r\n },\r\n display3: {\r\n fontSize: 12,\r\n },\r\n display2: {\r\n fontSize: 12,\r\n },\r\n display1: {\r\n fontSize: 12,\r\n },\r\n headline: {\r\n fontSize: 12,\r\n },\r\n title: {\r\n fontSize: 12,\r\n },\r\n subtitle1: {\r\n fontSize: 12, \r\n },\r\n subtitle2: {\r\n fontSize: 14, \r\n },\r\n subheading: {\r\n fontSize: 12,\r\n },\r\n body2: {\r\n fontSize: 12,\r\n },\r\n body1: {\r\n fontSize: 12,\r\n },\r\n caption: {\r\n fontSize: 12,\r\n },\r\n button: {\r\n fontSize: 12,\r\n },\r\n h6: {\r\n fontSize: 15,\r\n },\r\n },\r\n});","import {createMuiTheme} from '@material-ui/core/styles';\r\nimport {colores} from './global';\r\n\r\n//const movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nexport const theme = createMuiTheme({\r\n palette: {\r\n //type: 'dark',\r\n secondary: { main: colores.naranja },\r\n primary: { main: colores.azul },\r\n },\r\n typography: {\r\n body1: {\r\n fontSize: 12,\r\n },\r\n body2: {\r\n fontSize: \"12px !important\",\r\n },\r\n subtitle1: { fontSize: 14 },\r\n subtitle2: { fontSize: 15 },\r\n h5: { fontSize: 16 },\r\n h6: { fontSize: 14 },\r\n },\r\n overrides: {\r\n MuiInputLabel: {\r\n root: {\r\n \"&$shrink\": {\r\n fontSize: 16,\r\n background: \"#ffffff\",\r\n padding: \"0px 4px 0px 0px\",\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n root: {\r\n fontSize: \"12px !important\",\r\n },\r\n },\r\n MuiTooltip: {\r\n tooltip: {\r\n fontSize: 12,\r\n },\r\n },\r\n MuiTableRow: {\r\n root: {\r\n \"&:first-child th\": {\r\n color: \"white\",\r\n },\r\n },\r\n },\r\n MuiTabs: {\r\n root: {\r\n color: \"white\",\r\n backgroundColor: colores.azul,\r\n },\r\n indicator: {\r\n backgroundColor: colores.naranja,\r\n },\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n textAlign: \"center\",\r\n color: \"white\",\r\n backgroundColor: colores.azul,\r\n paddingTop: \"8px\",\r\n paddingBottom: \"8px\",\r\n },\r\n },\r\n MuiDialogContent: {\r\n root: {\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\",\r\n marginLeft: \"8px\",\r\n marginRight: \"8px\",\r\n paddingBottom: \"0px\",\r\n paddingTop: \"18px\",\r\n },\r\n },\r\n MuiDialogActions: {\r\n root: {\r\n justifyContent: \"center\",\r\n marginLeft: \"0px\",\r\n marginRight: \"0px\",\r\n },\r\n },\r\n MuiTableCell: {\r\n root: {\r\n paddingTop: \"12px\",\r\n paddingBottom: \"12px\",\r\n },\r\n body: {\r\n height: \"43px\",\r\n },\r\n footer: {\r\n height: \"43px\",\r\n },\r\n },\r\n MuiInput: {\r\n input: {\r\n fontSize: \"12px !important\",\r\n },\r\n },\r\n MuiListSubheader: {\r\n root: {\r\n fontSize: 12,\r\n paddingTop: \"10px !important\",\r\n maxHeight: \"45px !important\",\r\n minHeight: \"45px !important\",\r\n color: colores.azul,\r\n backgroundColor: \"#FFFFFF !important\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n alignItems: \"bottom\",\r\n },\r\n },\r\n },\r\n props: {\r\n MuiButtonBase: {\r\n disableRipple: true,\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 Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport Icono from '../../components/Icono'\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport { Typography } from '@material-ui/core';\r\nimport {TableSummaryRow} from '@devexpress/dx-react-grid-material-ui';\r\nimport Button from '@material-ui/core/Button';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {virtual} from '../../components/VirtualListBox';\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\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//let searchWorker = undefined;\r\nlet isVisibleRowSelected = false;\r\nconst colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\nlet alternateColorRow1 = colores.tabla.alternateColorRow1; \r\nlet alternateColorRow2 = colores.tabla.alternateColorRow2;\r\nconst ListboxComponent = virtual.ListboxComponent;\r\n\r\nconst getRowId = row => row.ID_CURSO_HIJO;\r\nconst getRowId_niveles = row => row.ID_CURSO_HIJO;\r\n\r\n\r\nconst defaultHiddenColumnNames= ['ID_SUFICIENCIA','SIMBOLO_MONEDA','ID_CURSO_HIJO','ID_CURSO_PADRE','ID_FACTURA','CURSO_PADRE','ID_DETALLE_PLAN','CHECK1','PAGO','ESPECIAL'];\r\nconst defaultHiddenColumnNames_niveles= ['SECUENCIA','SIMBOLO_MONEDA','CODIGO_CURSO','CREDITOS','ID_CURSO_HIJO','ID_CURSO_PADRE','ID_FACTURA','CURSO_PADRE','ID_DETALLE_PLAN','CHECK1','PAGO'];\r\n\r\nconst columns= [{name:'CHECK',title: ' '},{name:'CODIGO_CURSO',title: 'Código'},{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'CREDITOS',title: 'UV'},{name:'ID_CURSO_HIJO',title: 'ID_CURSO_HIJO'},{name:'ID_CURSO_PADRE',title: 'ID_CURSO_PADRE'},\r\n {name:'ID_FACTURA',title: 'ID_FACTURA'},\r\n {name:'CURSO_PADRE',title: 'CURSO_PADRE'},{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'},{name:'ID_SUFICIENCIA',title: 'ID_SUFICIENCIA'},\r\n {name:'MONTO',title: 'Monto'},{name:'GRUPO',title: 'GRUPO'},{name:'ESTADO',title: 'Estado'},{name:'SIMBOLO_MONEDA',title: 'SIMBOLO_MONEDA'},{name:'CHECK1',title: 'CHECK1'},{name:'PAGO',title: 'PAGO'},{name:'ESPECIAL',title: 'ESPECIAL'},{name:'ELIMINAR',title: ' '},\r\n];\r\n\r\nconst columns_niveles= [{name:'CHECK',title: ' '},{name:'CODIGO_CURSO',title: 'Código'},{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n,{name:'CREDITOS',title: 'UV'},{name:'ID_CURSO_HIJO',title: 'ID_CURSO_HIJO'},{name:'ID_CURSO_PADRE',title: 'ID_CURSO_PADRE'}\r\n,{name:'ID_FACTURA',title: 'ID_FACTURA'}\r\n,{name:'CURSO_PADRE',title: 'CURSO_PADRE'},{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'}\r\n,{name:'MONTO',title: 'Monto'},{name:'ESTADO',title: 'Estado'}\r\n,{name:'SECUENCIA',title: 'SECUENCIA'}\r\n,{name:'CHECK1',title: 'CHECK1'},{name:'SIMBOLO_MONEDA',title: 'SIMBOLO_MONEDA'},{name:'PAGO',title: 'PAGO'},{name:'ELIMINAR',title: ' '}]\r\n\r\nconst tableColumnExtensions= [\r\n { columnName: 'CHECK', wordWrapEnabled: false, align: 'center',width: 60},\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 250},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'CREDITOS', wordWrapEnabled: false, align: 'center',width: 50},\r\n { columnName: 'MONTO', wordWrapEnabled: false, align: 'center',width: 200},\r\n { columnName: 'ESTADO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'ELIMINAR', wordWrapEnabled: false, align: 'center',width: 150},\r\n];\r\nconst tableColumnExtensions_niveles= [{ columnName: 'CHECK', wordWrapEnabled: false, align: 'center',width: 60},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'MONTO', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'ESTADO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'ELIMINAR', wordWrapEnabled: false, align: 'center',width: 150},\r\n];\r\n\r\n/*\r\nconst totalSummaryItems = [\r\n { columnName: \"CHECK\", type: \"count\" },\r\n { columnName: \"MONTO\", type: \"sum\" }, \r\n];*/\r\n\r\nconst groupSummaryItems = [ \r\n { columnName: \"MONTO\", type: \"sum\" },\r\n];\r\n\r\nconst grouping= [{ columnName: 'GRUPO' }]\r\n\r\n\r\nconst GroupCellContent = ({ column, row }) => {\r\n return(\r\n <span> \r\n {row.value}\r\n </span>\r\n )\r\n};\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n popper: {\r\n zIndex: 400500,\r\n },\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/* EXPORT */\r\nexport default withStyles(styles)(\r\n class Suficiencia_estudiante 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.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 open_niveles: false,\r\n open_seleccion_niveles: false,\r\n open_borrar_niveles: false,\r\n segundo_grupo: '',\r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n rows_niveles: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true,\r\n selection: [],\r\n selection_niveles: [],\r\n open_seleccion: false,\r\n open_borrar: false,\r\n optionAutocompleteAdd: [],\r\n isLoadingClientes: true,\r\n loadingsuficiencias: false,\r\n openAutoCompleteAdd: false,\r\n valueAutoCompleteAdd: null,\r\n isSaving: false,\r\n }\r\n\r\n \r\n const trow = TableRow => withStyles(styles, { name: \"Row\" })( ({classes,highlighted, rowIndex, row, selectByRowClick, ...props}) => {\r\n\r\n const odd = !!(rowIndex % 2);\r\n \r\n if (this.state.selection[0]===undefined?this.state.selection[0]:this.state.selection[0].ID_CURSO_HIJO === props.tableRow.row.ID_CURSO_HIJO) { isVisibleRowSelected = true; }\r\n return (\r\n <Table.Row {...props}\r\n style={{\r\n //cursor: 'pointer',\r\n backgroundColor: this.state.selection[0]===undefined?odd ? alternateColorRow1 : alternateColorRow2:this.state.selection[0].ID_CURSO_HIJO === props.tableRow.row.ID_CURSO_HIJO ? colorRowSelected : \r\n odd ? alternateColorRow1 : alternateColorRow2, \r\n padding: '0rem 0rem !important',\r\n margin: '0px', \r\n }}\r\n />\r\n );\r\n });\r\n const trow_niveles = TableRow => withStyles(styles, { name: \"Row\" })( ({classes,highlighted, rowIndex, row, selectByRowClick, ...props}) => {\r\n\r\n const odd = !!(rowIndex % 2);\r\n \r\n if (this.state.selection_niveles[0]===undefined?this.state.selection_niveles[0]:this.state.selection_niveles[0].ID_CURSO_HIJO === props.tableRow.row.ID_CURSO_HIJO) { isVisibleRowSelected = true; }\r\n return (\r\n <Table.Row {...props}\r\n style={{\r\n //cursor: 'pointer',\r\n backgroundColor: this.state.selection_niveles[0]===undefined?odd ? alternateColorRow1 : alternateColorRow2:this.state.selection_niveles[0].ID_CURSO_HIJO === props.tableRow.row.ID_CURSO_HIJO ? colorRowSelected : \r\n odd ? alternateColorRow1 : alternateColorRow2, \r\n padding: '0rem 0rem !important',\r\n margin: '0px', \r\n }}\r\n />\r\n );\r\n });\r\n\r\n\r\n const VirtualTable_cellComponent_niveles = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n\r\n const ClickCheckbox=(ID_CURSO_HIJO,ID_CURSO_PADRE,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN,TIPO) => event =>{\r\n this.setState({selection_niveles: [{ID_CURSO_HIJO,ID_CURSO_PADRE,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN}] ,open_seleccion_niveles: TIPO===1?true:false,open_borrar_niveles: TIPO===2?true:false})\r\n }\r\n\r\n if(column.name===\"ESTADO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.CHECK1?row.PAGO?<b style={{color:'green'}}>Pagada</b>:<b style={{color:'red'}}>Pendiente de Pago</b>:null}\r\n </Table.Cell>\r\n );\r\n }\r\n\r\n if(column.name===\"CHECK\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n <Checkbox checked={row.CHECK1} \r\n onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,1)}\r\n disabled={row.SECUENCIA===1?row.CHECK1:this.state.rows_niveles[row.SECUENCIA-2]!==undefined?this.state.rows_niveles[row.SECUENCIA-2].CHECK1?row.CHECK1:true:row.CHECK1}\r\n style={{padding: 0, height:'10px', margin: 0}}\r\n />\r\n </Table.Cell>\r\n );\r\n }\r\n if(column.name===\"ELIMINAR\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {\r\n row.CHECK1&&!row.PAGO?(this.state.rows_niveles[row.SECUENCIA]!==undefined?this.state.rows_niveles[row.SECUENCIA].CHECK1:false)?\r\n <Button disabled={true}\r\n style={{padding:8, paddingTop:5, paddingBottom:5, textTransform: 'none'}}\r\n variant='outlined'\r\n color=\"default\"\r\n startIcon={<Icono icono={'Delete'} style={{margin:0}}/>}>\r\n Eliminar\r\n </Button>\r\n :<Tooltip title='Eliminar Factura' > \r\n <Button\r\n style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:'red'}} onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,2)}\r\n variant='outlined' \r\n startIcon={<Icono icono={'Delete'} style={{margin:0}}/>}>\r\n Eliminar\r\n </Button>\r\n </Tooltip>\r\n :null\r\n } \r\n </Table.Cell>\r\n );\r\n\r\n }\r\n if(column.name===\"MONTO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.SIMBOLO_MONEDA+' '+ row.MONTO}\r\n </Table.Cell>\r\n );\r\n }\r\n\r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'45px',}}/>\r\n );\r\n }\r\n\r\n const VirtualTable_cellComponent = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n const ClickCheckbox=(ID_CURSO_HIJO,ID_CURSO_PADRE,CODIGO_CURSO,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN,TIPO) => event =>{\r\n \r\n this.setState({selection: [{ID_CURSO_HIJO,ID_CURSO_PADRE,CODIGO_CURSO,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN}] ,open_seleccion: TIPO===1?true:false,open_borrar: TIPO===2?true:false})\r\n }\r\n const Clickniveles=(ID_CURSO_HIJO,ID_CURSO_PADRE,CODIGO_CURSO,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN,ID_SUFICIENCIA) => event =>{\r\n this.setState({selection: [{ID_CURSO_HIJO,ID_CURSO_PADRE,CODIGO_CURSO,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN,ID_SUFICIENCIA}],open_niveles:true})\r\n }\r\n\r\n if(column.name===\"ESTADO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0,}}>\r\n {row.CHECK1?row.PAGO?<b style={{color:'green'}}>Pagada</b>:<b style={{color:'red'}}>Pendiente de Pago</b>:null}\r\n </Table.Cell>\r\n );\r\n }\r\n\r\n if(column.name===\"CHECK\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0,}}>\r\n <Checkbox checked={row.CHECK1} \r\n onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,1)}\r\n disabled={row.CHECK1}\r\n style={{padding: 0, height:'10px', margin: 0}}\r\n />\r\n </Table.Cell>\r\n );\r\n }\r\n if(column.name===\"MONTO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0,}}>\r\n {row.SIMBOLO_MONEDA+' '+ row.MONTO}\r\n </Table.Cell>\r\n );\r\n }\r\n if(column.name===\"ELIMINAR\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0,}}>\r\n {row.CHECK1?\r\n !row.PAGO?\r\n <Tooltip title='Eliminar Factura' > \r\n <Button style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:'red'}} \r\n onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,2)}\r\n variant='outlined' \r\n startIcon={<Icono icono={'Delete'} style={{margin:0}}/>}>\r\n Eliminar\r\n </Button>\r\n </Tooltip>\r\n :row.ESPECIAL?\r\n <Tooltip title='Aplica a Otros Niveles' > \r\n <Button style={{padding:10,paddingTop:5,paddingBottom:5,textTransform: 'none'}} variant='outlined' color='primary'\r\n onClick={Clickniveles(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,row.ID_SUFICIENCIA)}\r\n startIcon={<Icono icono={'Add'} style={{margin:0}}/>}>\r\n Niveles\r\n </Button> \r\n </Tooltip>:null\r\n :null\r\n } \r\n </Table.Cell>\r\n );\r\n }\r\n return(\r\n <Table.Cell {...props} style={{padding: 0,}}/>\r\n );\r\n }\r\n\r\n const TotalGroupCellComponent = (props) => {\r\n var allMONEDAS=[]\r\n var found = null;\r\n this.state.rows.forEach(\r\n function getCheck(item, index) {\r\n if(item.CHECK1){\r\n found = allMONEDAS.find(grupo => grupo === item.SIMBOLO_MONEDA);\r\n if (found == null){\r\n allMONEDAS.push(item.SIMBOLO_MONEDA);\r\n }else {\r\n found = null;\r\n }\r\n }\r\n })\r\n if (props.tableRow.row.value === this.state.segundo_grupo || (props.tableRow.row.value !== this.state.segundo_grupo && allMONEDAS.length>1))\r\n {\r\n return <Table.StubCell style={{ border: 'none' }}/>;\r\n }\r\n \r\n return (<TableSummaryRow.TotalCell {...props} />);\r\n \r\n }\r\n \r\n const StubCellComponentTable = ({ colSpan,...props}) => {\r\n var allMONEDAS=[]\r\n var found = null;\r\n this.state.rows.forEach(\r\n function getCheck(item, index) {\r\n if(item.CHECK1){\r\n found = allMONEDAS.find(grupo => grupo === item.SIMBOLO_MONEDA);\r\n if (found == null){\r\n allMONEDAS.push(item.SIMBOLO_MONEDA);\r\n }else {\r\n found = null;\r\n }\r\n }\r\n })\r\n\r\n if (props.tableRow.type.toString() === \"Symbol(groupSummary)\" && (props.tableRow.row.value === this.state.segundo_grupo || (props.tableRow.row.value !== this.state.segundo_grupo && allMONEDAS.length>1))) //&& props.tableColumn.type.toString() === \"Symbol(group)\"\r\n {\r\n return (<Table.StubCell colSpan={colSpan} style={{ border: 'none' }} {...props} />); \r\n }\r\n return (<Table.StubCell colSpan={props.tableColumn.key === \"Symbol(flex)\" ? 2 : colSpan} {...props} />);\r\n }\r\n this.TotalGroupCellComponent=TotalGroupCellComponent;\r\n this.StubCellComponentTable=StubCellComponentTable;\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent;\r\n this.VirtualTable_cellComponent_niveles=VirtualTable_cellComponent_niveles;\r\n this.trow = trow(Table.Row);\r\n this.trow_niveles = trow_niveles(Table.Row);\r\n }; //FIN CONSTRUCTORS\r\n\r\nonEntering=()=>{\r\n this.consulta_suficiencia_especial()\r\n}\r\n\r\naceptar_suficiencia=()=>{\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/suficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection[0].ID_DETALLE_PLAN, TIPO: 1,ESPECIAL:0,ID_SUFICIENCIA: null,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencias()\r\n this.setState({openBackDrop: false, open_seleccion: false, selection: []}, ()=>{\r\n funciones.showToast('s', 'Suficiencia ingresada correctamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\naceptar_suficiencia_niveles=()=>{\r\n \r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/suficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection_niveles[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection_niveles[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection_niveles[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection_niveles[0].ID_DETALLE_PLAN, TIPO: 1,ESPECIAL:1,ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n\r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencia_especial()\r\n this.setState({openBackDrop: false, open_seleccion_niveles: false, selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Suficiencia ingresada correctamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\nquitar_suficiencia_niveles=()=>{\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/suficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection_niveles[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection_niveles[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection_niveles[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection_niveles[0].ID_DETALLE_PLAN, TIPO: 2,ESPECIAL:1,ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n\r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencia_especial()\r\n this.setState({openBackDrop: false, open_borrar_niveles: false, selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Se eliminó satisfactoriamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\nquitar_suficiencia=()=>{\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/suficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection[0].ID_DETALLE_PLAN, TIPO: 2,ESPECIAL:0,ID_SUFICIENCIA: null,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencias()\r\n this.setState({openBackDrop: false,open_borrar: false,selection: []}, ()=>{\r\n funciones.showToast('s', 'Se eliminó satisfactoriamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarcircular(false)\r\n // Auth.loggedIn().then( function(b){\r\n // _this.setState({ isLoggin: b})\r\n if(Auth.getProfile().plataforma===1){\r\n _this.filtersClientes('-');\r\n }\r\n \r\n //if(b)\r\n this.setState({ isLoggin: Auth.getProfile().plataforma !== undefined ? true : false }, ()=>{\r\n Request.get(`${ip}/suficiencia/obtener_seleccion_suficiencia/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 \r\n if(tmp.length>0){\r\n var allGroups=[]\r\n var grupo=''\r\n var found = null;\r\n tmp.forEach(\r\n function getCheck(item, index) {\r\n found = allGroups.find(grupo => grupo === item.GRUPO);\r\n if(index===tmp.length-1)\r\n grupo=item.GRUPO\r\n if (found == null){\r\n allGroups.push(item.GRUPO);\r\n }else {\r\n found = null;\r\n }\r\n })\r\n _this.setState({ rows: tmp,expandedGroups: allGroups,segundo_grupo: grupo, 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 \r\n _this.actualizarcircular(true)\r\n })\r\n })\r\n}\r\n\r\nconsulta_suficiencia_especial=()=>{\r\n var _this=this\r\n\r\n this.setState({openBackDrop: true},()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n Request.get(`${ip}/suficiencia/obtener_suficiencia_especial/${Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno}/${this.state.selection[0].ID_DETALLE_PLAN}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 _this.setState({openBackDrop:false }); \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 _this.setState({ rows_niveles: tmp,openBackDrop:false }); \r\n }\r\n else\r\n {\r\n _this.setState({rows_niveles: [],openBackDrop:false})\r\n }\r\n })\r\n }\r\n catch(ex){\r\n _this.setState({openBackDrop:false }); \r\n funciones.showToast('e', 'Error de conexión');\r\n }\r\n })\r\n}\r\n\r\nconsulta_suficiencias=()=>{\r\n this.actualizarcircular(false)\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n Request.get(`${ip}/suficiencia/obtener_seleccion_suficiencia/${Auth.getProfile().plataforma===1?cuenta_alumno:Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 var allGroups=[]\r\n var grupo=''\r\n var found = null;\r\n tmp.forEach(\r\n function getCheck(item, index) {\r\n found = allGroups.find(grupo => grupo === item.GRUPO);\r\n if(index===tmp.length-1)\r\n grupo=item.GRUPO\r\n if (found == null){\r\n allGroups.push(item.GRUPO);\r\n }else {\r\n found = null;\r\n }\r\n })\r\n this.setState({ rows: tmp,filters:[], expandedGroups: allGroups,segundo_grupo: grupo, heightTableMain: funciones.getHeightTableMain(movil_pequeño,this).heightTable}); \r\n }\r\n else\r\n {\r\n this.setState({rows: [], heightTableMain: funciones.getHeightTableMain(movil_pequeño,this).heightTable})\r\n }\r\n \r\n this.actualizarcircular(true)\r\n })\r\n }\r\n catch(ex){\r\n funciones.showToast('e', 'Error de conexión');\r\n this.actualizarcircular(true)\r\n }\r\n}\r\n\r\ncerrardialog_niveles =()=> event =>{\r\n this.setState({open_niveles: false,selection: [],selection_niveles:[],rows_niveles:[]},()=>{\r\n\r\n })\r\n}\r\n\r\ncerrardialog_selection =()=> event =>{\r\n this.setState({open_seleccion: false, open_borrar: false,selection: []},()=>{\r\n })\r\n}\r\ncerrardialog_selection_niveles =()=> event =>{\r\n this.setState({open_seleccion_niveles: false, open_borrar_niveles: false,selection_niveles: []},()=>{\r\n })\r\n}\r\n\r\nchangeFilters = filters => this.setState({ filters });\r\n\r\nchangeExpandedGroups = expandedGroups =>\r\n{\r\n this.setState({ expandedGroups });\r\n};\r\n\r\n\r\nfiltersClientes = (value)=>{\r\n\r\n new Request\r\n .get(`${globales.ip}/Filtrar_estudiantes/${value}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 30000, })\r\n .end((err, res) => {\r\n \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 this.setState({ optionAutocompleteAdd: [], openAutoComplete: false, isLoadingClientes: false }, ()=>{\r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n this.setState({ optionAutocompleteAdd: rows, isLoadingClientes: false });\r\n }\r\n else\r\n {\r\n this.setState({ optionAutocompleteAdd: [], openAutoComplete: false, isLoadingClientes: false })\r\n } \r\n });\r\n }\r\n \r\n\r\nonBlurAutoCompleteAdd = ()=>{\r\n\r\n if (this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: false }); \r\n }\r\n\r\n}\r\n\r\n\r\nonChangeAutocompleteAdd = (event, value) => {\r\n\r\n this.setState({ valueAutoCompleteAdd: value, openAutoCompleteAdd: false }, ()=>{\r\n this.consulta_suficiencias()\r\n });\r\n \r\n}\r\nonChangeInput = (e, value)=>{ \r\n\r\n if (e === null || e.target.value === undefined)\r\n {\r\n if (this.state.openAutoCompleteAdd){ \r\n this.setState({ openAutoCompleteAdd: false });\r\n }\r\n return;\r\n }\r\n \r\n if ((e.target.value.toString().trim().length < 3 || (this.state.valueAutoCompleteAdd !== null && value === this.state.valueAutoCompleteAdd.CUENTA_ALUMNO + ' | ' + this.state.valueAutoCompleteAdd.NOMBRE_COMPLETO)) && this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: false });\r\n }\r\n else if (e.target.value.toString().trim().length >= 3 && !this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: 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_seleccionar = [\r\n {icono: 'CheckCircle', nombre: 'Aceptar' ,escritura:true, onclick: this.aceptar_suficiencia\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection(), display:'auto', color: 'red'},\r\n ]\r\n const botones_quitar = [\r\n {icono: 'Delete', nombre: 'Aceptar' ,escritura:true, onclick: this.quitar_suficiencia\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection(), display:'auto', color: 'red'},\r\n ]\r\n const botones_seleccionar_niveles = [\r\n {icono: 'CheckCircle', nombre: 'Aceptar' ,escritura:true, onclick: this.aceptar_suficiencia_niveles\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n const botones_quitar_niveles = [\r\n {icono: 'Delete', nombre: 'Aceptar' ,escritura:true, onclick: this.quitar_suficiencia_niveles\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n const botones_niveles = [\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_niveles(), display:'auto', color: 'red'},\r\n ]\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return (\r\n <React.Fragment>\r\n {Auth.getProfile().plataforma===1?\r\n <div align=\"center\" style={{marginBottom: 10,marginTop: 10}}>\r\n <Autocomplete\r\n id=\"estudiante\"\r\n options={this.state.optionAutocompleteAdd}\r\n getOptionLabel={(option) => option.CUENTA_ALUMNO + ' | ' + option.NOMBRE_COMPLETO}\r\n style={{ width: !movil ? '500px' : '95%' }} \r\n renderInput={(params) => <TextField {...params} \r\n label=\"Estudiante\"\r\n variant=\"outlined\" \r\n onBlur={this.onBlurAutoCompleteAdd} \r\n InputProps={{...params.InputProps,endAdornment: (\r\n <React.Fragment>\r\n {this.state.isLoadingClientes ? <CircularProgress color='secondary' size={25} /> : null}\r\n {params.InputProps.endAdornment}\r\n </React.Fragment>\r\n ),\r\n readOnly: this.state.isSaving\r\n }}\r\n />}\r\n renderOption={(option) => (\r\n <React.Fragment> \r\n <span style={{ minWidth: !movil ? '16%' : '25%' }}>{option.CUENTA_ALUMNO}</span>\r\n {option.NOMBRE_COMPLETO} \r\n </React.Fragment>\r\n )}\r\n noOptionsText={'No hay resultados'}\r\n loadingText={'Cargando...'} \r\n onChange={this.onChangeAutocompleteAdd}\r\n open={this.state.openAutoCompleteAdd}\r\n loading = {this.state.isLoadingClientes}\r\n ListboxComponent={ListboxComponent}\r\n disableListWrap\r\n value={this.state.valueAutoCompleteAdd} \r\n autoHighlight\r\n disableClearable={this.state.isSaving}\r\n clearText = 'Borrar'\r\n openText = ''\r\n closeText = ''\r\n classes= {{ popper: classes.popper }}\r\n onInputChange={this.onChangeInput} \r\n /> \r\n </div>\r\n :null\r\n }\r\n\r\n <Backdrop className={classes.backdrop} open={this.state.openBackDrop}>\r\n <CircularProgress color=\"inherit\" />\r\n <span style={{ marginTop: '10px' }}>{this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''}</span>\r\n </Backdrop>\r\n <Dialog open={this.state.open_niveles} fullWidth={true} maxWidth='md'\r\n classes = {{ paper: classes.Dialog}}\r\n //onEntering={this.onEntering}\r\n TransitionProps={{ onEntering: this.onEntering }}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Facturar Otros Niveles'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <CustomTable\r\n Columns={columns_niveles} \r\n Rows={this.state.rows_niveles} \r\n TableColumnExtensions={tableColumnExtensions_niveles}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames_niveles}\r\n getRowId = {getRowId_niveles}\r\n Selection={this.state.selection_niveles}\r\n //ChangeSelection = {this.changeSelection}\r\n height={'300px'}\r\n //rowHeaderCellComponent={ColumnHeader_cellComponent(classes,this.handleInfoClick())}\r\n //ExpandedRowIds = {this.state.expandedRowIds}\r\n enabledFilterRows= {false}\r\n RowComponent={this.trow_niveles}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n ChangeExpandedGroups = {this.changeExpandedGroups} \r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent_niveles}\r\n showSelectionColumn={false}\r\n />\r\n </DialogContent>\r\n <BarraBotones align='center' botones={botones_niveles} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_seleccion||this.state.open_borrar} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Confirmación'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <Typography align='center' >\r\n {(this.state.open_seleccion?'¿Desea agregar la factura pendiente de suficiencia para la clase ':this.state.open_borrar?'¿Desea quitar la factura de la suficiencia por la clase ':'')+(this.state.selection.length>0?this.state.selection[0].DESCRIPCION_CURSO:'')+'?'\r\n }\r\n </Typography>\r\n </DialogContent>\r\n <BarraBotones align='center' botones={this.state.open_seleccion?botones_seleccionar:this.state.open_borrar?botones_quitar:[]} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_seleccion_niveles||this.state.open_borrar_niveles} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Confirmación'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <Typography align='center' >\r\n {(this.state.open_seleccion_niveles?'¿Seleccionó ':this.state.open_borrar_niveles?'¿Desea quitar ':'')+(this.state.selection_niveles.length>0?this.state.selection_niveles[0].DESCRIPCION_CURSO:'')+'?'\r\n }\r\n </Typography>\r\n </DialogContent>\r\n <BarraBotones align='center' botones={this.state.open_seleccion_niveles?botones_seleccionar_niveles:this.state.open_borrar_niveles?botones_quitar_niveles:[]} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <div ref={this.tablaRef} style={{background:'white',marginLeft:movil_pequeño?globales.tabla.marginleft_movil:globales.tabla.marginleft,marginRight:movil_pequeño?globales.tabla.marginright_movil:globales.tabla.marginright}}>\r\n <CustomTable\r\n Columns={columns} \r\n Rows={this.state.rows} \r\n TableColumnExtensions={tableColumnExtensions}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames}\r\n getRowId = {getRowId}\r\n Selection={this.state.selection}\r\n // ChangeSelection = {this.changeSelection}\r\n height={this.state.heightTableMain}\r\n Filters = {this.state.filters}\r\n onFiltersChange = {this.changeFilters}\r\n //rowHeaderCellComponent={ColumnHeader_cellComponent(classes,this.handleInfoClick())}\r\n //ExpandedRowIds = {this.state.expandedRowIds}\r\n enabledFilterRows= {this.state.enabledFilterRows}\r\n RowComponent={this.trow}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n Grouping={grouping}\r\n ExpandedGroups = {this.state.expandedGroups} \r\n ChangeExpandedGroups = {this.changeExpandedGroups} \r\n //totalItems={totalSummaryItems}\r\n groupItems={groupSummaryItems}\r\n summaryRowMessages={{ count: 'Count', sum: 'Monto' }}\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent}\r\n showSelectionColumn={false}\r\n groupContentComponent={GroupCellContent}\r\n groupCellComponent={this.TotalGroupCellComponent} \r\n stubCellComponentTable={this.StubCellComponentTable}\r\n />\r\n </div>\r\n </React.Fragment>\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 Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport Icono from '../../components/Icono'\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport { Typography } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {virtual} from '../../components/VirtualListBox';\r\nimport { TableTreeColumn } from '@devexpress/dx-react-grid-material-ui';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\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///let searchWorker = undefined;\r\nlet isVisibleRowSelected = false;\r\nconst colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\nlet alternateColorRow1 = colores.tabla.alternateColorRow1; \r\nlet alternateColorRow2 = colores.tabla.alternateColorRow2;\r\nconst ListboxComponent = virtual.ListboxComponent;\r\n\r\nvar getChildRows = (row, rootRows) =>{\r\n return row ? row.TREE : rootRows;\r\n};\r\n\r\nconst getRowId = row => row.ID_SUFICIENCIA;\r\nconst getRowId_niveles = row => row.ID_CURSO_HIJO;\r\n\r\nconst defaultHiddenColumnNames= ['TIENE_NIVELES','ID_DETALLE_PLAN','TREE','ID_SUFICIENCIA','PAGO','ESPECIAL','ID_SUFICIENCIA_DEPENDENCIA','ID_SECCION_CLIENTE'];\r\nconst defaultHiddenColumnNames_niveles= ['SIMBOLO_MONEDA','CODIGO_CURSO','CREDITOS','ID_CURSO_HIJO','ID_CURSO_PADRE','ID_FACTURA','CURSO_PADRE','ID_DETALLE_PLAN','CHECK1','PAGO'];\r\n\r\n\r\nconst columns= [{name:'TREE',title: 'TREE'},{name:'ID_SUFICIENCIA',title: 'ID_SUFICIENCIA'},{name:'CODIGO_CURSO',title: 'Código'},{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'CREDITOS',title: 'UV'},{name:'ESTADO',title: 'Financiero'},{name:'PAGO',title: 'PAGO'}\r\n ,{name:'ESPECIAL',title: 'ESPECIAL'}\r\n ,{name:'ID_SECCION_CLIENTE',title: 'ID_SECCION_CLIENTE'},{name:'NOTA',title: 'Nota'},{name:'ESTATUS_ACADEMICO',title: 'Estado'},{name:'ID_SUFICIENCIA_DEPENDENCIA',title: 'ID_SUFICIENCIA_DEPENDENCIA'}\r\n ,{name:'BOTONES',title: ' '},{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'},{name:'TIENE_NIVELES',title: 'TIENE_NIVELES'},\r\n];\r\n\r\nconst columns_niveles= [{name:'CHECK',title: ' '},{name:'CODIGO_CURSO',title: 'Código'},{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n,{name:'CREDITOS',title: 'UV'},{name:'ID_CURSO_HIJO',title: 'ID_CURSO_HIJO'},{name:'ID_CURSO_PADRE',title: 'ID_CURSO_PADRE'}\r\n,{name:'ID_FACTURA',title: 'ID_FACTURA'}\r\n,{name:'CURSO_PADRE',title: 'CURSO_PADRE'},{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'}\r\n,{name:'MONTO',title: 'Monto'},{name:'ESTADO',title: 'Estado'}\r\n,{name:'CHECK1',title: 'CHECK1'},{name:'SIMBOLO_MONEDA',title: 'SIMBOLO_MONEDA'},{name:'PAGO',title: 'PAGO'},{name:'ELIMINAR',title: ' '}]\r\n\r\nconst tableColumnExtensions_niveles= [{ columnName: 'CHECK', wordWrapEnabled: false, align: 'center',width: 60},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'MONTO', wordWrapEnabled: false, align: 'center',width: 120},\r\n { columnName: 'ESTADO', wordWrapEnabled: false, align: 'center',width: 150},\r\n { columnName: 'ELIMINAR', wordWrapEnabled: false, align: 'center',width: 150},\r\n];\r\n\r\nconst tableColumnExtensions= [\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 200},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: true, align: 'left'},\r\n { columnName: 'CREDITOS', wordWrapEnabled: false, align: 'center',width: 80},\r\n { columnName: 'ESTADO', wordWrapEnabled: false, align: 'center',width: 160},\r\n { columnName: 'NOTA', wordWrapEnabled: false, align: 'center',width: 80},\r\n { columnName: 'ESTATUS_ACADEMICO', wordWrapEnabled: false, align: 'center',width: 80},\r\n { columnName: 'BOTONES', wordWrapEnabled: false, align: 'center',width: 150},\r\n];\r\n\r\nconst TableTreeColumn_cellComponent = (props) => {\r\n \r\n const {row} = props;\r\n \r\n \r\n //const classes = useStyles();\r\n if(row.ID_SUFICIENCIA_DEPENDENCIA)\r\n return (\r\n \r\n <TableTreeColumn.Cell style={{color: colores.color_disabled}} {...props} >\r\n <Tooltip title='Dependiente'>\r\n <Avatar style={{width:25,height: 25,margin:0,marginLeft:55,padding:0,backgroundColor: colores.azul}}>\r\n <span style={{fontSize:14}}>D</span>\r\n </Avatar>\r\n </Tooltip>\r\n <span style={{marginLeft:10}}>{row.CODIGO_CURSO}</span>\r\n </TableTreeColumn.Cell>\r\n );\r\n\r\n return (<TableTreeColumn.Cell {...props} />);\r\n \r\n };\r\n\r\n\r\n/* CLASES DE ESTILO */\r\n\r\nvar styles = theme =>({\r\n popper: {\r\n zIndex: 400500,\r\n },\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\nlet currentnota = null;\r\n\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class Ingreso_nota_Suficiencia extends React.Component {\r\n tablaRef = React.createRef();\r\n notaRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.Auth = new AuthService();\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 open_modificar: false,\r\n open_niveles: false,\r\n open_ingreso: false,\r\n open_seleccion_niveles: false,\r\n open_borrar_niveles: false,\r\n igual: false,\r\n errornota: false,\r\n segundo_grupo: '',\r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n rows_niveles: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: false,\r\n selection: [],\r\n selection_niveles: [],\r\n optionAutocompleteAdd: [],\r\n isLoadingClientes: true,\r\n loadingsuficiencias: false,\r\n openAutoCompleteAdd: false,\r\n valueAutoCompleteAdd: null,\r\n isSaving: false,\r\n tableNameTreeColum: 'CODIGO_CURSO',\r\n }\r\n\r\n const trow = TableRow => withStyles(styles, { name: \"Row\" })( ({classes,highlighted, rowIndex, row, selectByRowClick, ...props}) => {\r\n\r\n const odd = !!(rowIndex % 2);\r\n \r\n if (this.state.selection[0]===undefined?this.state.selection[0]:this.state.selection[0].ID_SUFICIENCIA === props.tableRow.row.ID_SUFICIENCIA) { isVisibleRowSelected = true; }\r\n return (\r\n <Table.Row {...props}\r\n style={{\r\n //cursor: 'pointer',\r\n backgroundColor: this.state.selection[0]===undefined?odd ? alternateColorRow1 : alternateColorRow2:this.state.selection[0].ID_SUFICIENCIA === props.tableRow.row.ID_SUFICIENCIA ? colorRowSelected : \r\n odd ? alternateColorRow1 : alternateColorRow2, \r\n padding: '0rem 0rem !important',\r\n margin: '0px', \r\n }}\r\n />\r\n );\r\n });\r\n\r\n const VirtualTable_cellComponent_niveles = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n \r\n const ClickCheckbox=(ID_CURSO_HIJO,ID_CURSO_PADRE,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN,TIPO) => event =>{\r\n this.setState({selection_niveles: [{ID_CURSO_HIJO,ID_CURSO_PADRE,DESCRIPCION_CURSO,MONTO,ID_FACTURA,ID_DETALLE_PLAN}] ,open_seleccion_niveles: TIPO===1?true:false,open_borrar_niveles: TIPO===2?true:false})\r\n }\r\n \r\n if(column.name===\"CHECK\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n <Checkbox checked={row.CHECK1} \r\n onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,1)}\r\n disabled={row.SECUENCIA===1?row.CHECK1:this.state.rows_niveles[row.SECUENCIA-2]!==undefined?this.state.rows_niveles[row.SECUENCIA-2].CHECK1?row.CHECK1:true:row.CHECK1}\r\n style={{padding: 0, height:'10px', margin: 0}}\r\n />\r\n </Table.Cell>\r\n );\r\n }\r\n if(column.name===\"ESTADO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.CHECK1?row.PAGO?<b style={{color:'green'}}>Pagada</b>:<b style={{color:'red'}}>Pendiente de Pago</b>:null}\r\n </Table.Cell>\r\n );\r\n }\r\n if(column.name===\"ELIMINAR\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n { row.CHECK1&&!row.PAGO?(this.state.rows_niveles[row.SECUENCIA]!==undefined?this.state.rows_niveles[row.SECUENCIA].CHECK1:false)?\r\n <Button disabled={true}\r\n style={{padding:8, paddingTop:5, paddingBottom:5, textTransform: 'none'}}\r\n variant='outlined'\r\n color=\"default\"\r\n startIcon={<Icono icono={'Delete'} style={{margin:0}}/>}>\r\n Eliminar\r\n </Button>\r\n :<Tooltip title='Eliminar Factura' > \r\n <Button\r\n style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:'red'}} onClick={ClickCheckbox(row.ID_CURSO_HIJO,row.ID_CURSO_PADRE,row.DESCRIPCION_CURSO,row.MONTO,row.ID_FACTURA,row.ID_DETALLE_PLAN,2)}\r\n variant='outlined' \r\n startIcon={<Icono icono={'Delete'} style={{margin:0}}/>}>\r\n Eliminar\r\n </Button>\r\n </Tooltip>\r\n :null} \r\n </Table.Cell>\r\n );\r\n \r\n }\r\n if(column.name===\"MONTO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.SIMBOLO_MONEDA+' '+ row.MONTO}\r\n </Table.Cell>\r\n );\r\n }\r\n \r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'45px',}}/>\r\n );\r\n }\r\n \r\n const VirtualTable_cellComponent = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n const ClickBoton=(ID_SUFICIENCIA,CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ESTADO,PAGO,ESPECIAL,ID_SECCION_CLIENTE,NOTA,ESTATUS_ACADEMICO\r\n ,ID_SUFICIENCIA_DEPENDENCIA,ID_DETALLE_PLAN,TIENE_NIVELES,TIPO) => event =>{\r\n if(TIPO===2)\r\n currentnota=NOTA\r\n this.setState({selection: [{ID_SUFICIENCIA,CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ESTADO,PAGO,ESPECIAL,ID_SECCION_CLIENTE,NOTA,ESTATUS_ACADEMICO,ID_SUFICIENCIA_DEPENDENCIA,ID_DETALLE_PLAN,TIENE_NIVELES}] ,open_ingreso: TIPO===1?true:false,igual: TIPO===2?true:false,open_modificar: TIPO===2?true:false})\r\n }\r\n\r\n if(row.ID_SUFICIENCIA_DEPENDENCIA)\r\n return (\r\n <Table.Cell {...props} style={{padding: 0, height:'8px',color: colores.color_disabled}}/>\r\n );\r\n \r\n if(column.name===\"ESTADO\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.PAGO?<b style={{color:row.ID_SUFICIENCIA_DEPENDENCIA?colores.color_disabled:'green'}}>Pagada</b>:<b style={{color:'red'}}>Pendiente de Pago</b>}\r\n </Table.Cell>\r\n );\r\n }\r\n \r\n if(column.name===\"BOTONES\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.PAGO?!row.NOTA?\r\n <Tooltip title='Ingreso Nota' > \r\n <Button style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:colores.azul}} \r\n onClick={ClickBoton(row.ID_SUFICIENCIA,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ESTADO,row.PAGO,row.ESPECIAL\r\n ,row.ID_SECCION_CLIENTE,row.NOTA,row.ESTATUS_ACADEMICO,row.ID_SUFICIENCIA_DEPENDENCIA,row.ID_DETALLE_PLAN,row.TIENE_NIVELES,1)}\r\n variant='outlined' \r\n startIcon={<Icono icono={'Add'} style={{margin:0}}/>}>\r\n Ingresar Nota\r\n </Button>\r\n </Tooltip>:!row.TIENE_NIVELES?\r\n <Tooltip title='Modificar Nota' > \r\n <Button style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:colores.azul}} \r\n onClick={ClickBoton(row.ID_SUFICIENCIA,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ESTADO,row.PAGO,row.ESPECIAL\r\n ,row.ID_SECCION_CLIENTE,row.NOTA,row.ESTATUS_ACADEMICO,row.ID_SUFICIENCIA_DEPENDENCIA,row.ID_DETALLE_PLAN,row.TIENE_NIVELES,2)}\r\n variant='outlined' \r\n startIcon={<Icono icono={'Edit'} style={{margin:0}}/>}>\r\n Modificar Nota\r\n </Button>\r\n </Tooltip>:<Tooltip title='Ya tiene otros niveles seleccionados' ><span>Tiene Otros Niveles</span></Tooltip>\r\n :null\r\n } \r\n </Table.Cell>\r\n );\r\n }\r\n\r\n if(column.name===\"ESTATUS_ACADEMICO\" || column.name===\"NOTA\")\r\n {\r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'20px',color: row.ESTATUS_ACADEMICO==='R'?'red':'green'}}/>\r\n );\r\n }\r\n\r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'20px'}}/>\r\n );\r\n }\r\n\r\n \r\n\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent;\r\n this.VirtualTable_cellComponent_niveles=VirtualTable_cellComponent_niveles;\r\n this.trow = trow(Table.Row);\r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\n\r\n \r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarcircular(false)\r\n // Auth.loggedIn().then( function(b){\r\n // _this.setState({ isLoggin: b})\r\n\r\n // if(b)\r\n this.setState({ isLoggin: Auth.getProfile().plataforma !== undefined ? true : false }, ()=>{\r\n document.getElementById('estudiante').focus();\r\n _this.filtersClientes('-');\r\n Request.get(`${ip}/notasuficiencia/obtener_suficiencias_estudiante_nota/${'00'}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 \r\n if(tmp.length>0){\r\n tmp.forEach((element,index) => {\r\n \r\n if (element.ESPECIAL && element.ID_SUFICIENCIA_DEPENDENCIA==null)\r\n { \r\n var tree=tmp.filter(x => x.ID_SUFICIENCIA_DEPENDENCIA === element.ID_SUFICIENCIA?true:false)\r\n \r\n tmp[index].TREE = tree\r\n }\r\n });\r\n var row=tmp.filter(x => x.ID_SUFICIENCIA_DEPENDENCIA === null?true:false)\r\n _this.setState({ rows: row, heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable\r\n }); \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 \r\n _this.actualizarcircular(true)\r\n })\r\n })\r\n}\r\n\r\n\r\nconsulta_suficiencias=()=>{\r\n this.actualizarcircular(false)\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n Request.get(`${ip}/notasuficiencia/obtener_suficiencias_estudiante_nota/${cuenta_alumno}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 tmp.forEach((element,index) => {\r\n if (element.ESPECIAL && element.ID_SUFICIENCIA_DEPENDENCIA==null)\r\n { \r\n var tree=tmp.filter(x => x.ID_SUFICIENCIA_DEPENDENCIA === element.ID_SUFICIENCIA?true:false)\r\n \r\n tmp[index].TREE = tree\r\n }\r\n });\r\n var row=tmp.filter(x => x.ID_SUFICIENCIA_DEPENDENCIA === null?true:false)\r\n this.setState({ rows: row,filters:[], heightTableMain: funciones.getHeightTableMain(movil_pequeño,this).heightTable}); \r\n }\r\n else\r\n {\r\n this.setState({rows: [], heightTableMain: funciones.getHeightTableMain(movil_pequeño,this).heightTable})\r\n }\r\n \r\n this.actualizarcircular(true)\r\n })\r\n }\r\n catch(ex){\r\n funciones.showToast('e', 'Error de conexión');\r\n this.actualizarcircular(true)\r\n }\r\n}\r\n\r\n \r\nfiltersClientes = (value)=>{\r\n\r\n new Request\r\n .get(`${globales.ip}/Filtrar_estudiantes/${value}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 20000, deadline: 30000, })\r\n .end((err, res) => {\r\n \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 this.setState({ optionAutocompleteAdd: [], openAutoComplete: false, isLoadingClientes: false }, ()=>{\r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n this.setState({ optionAutocompleteAdd: rows, isLoadingClientes: false });\r\n }\r\n else\r\n {\r\n this.setState({ optionAutocompleteAdd: [], openAutoComplete: false, isLoadingClientes: false })\r\n } \r\n });\r\n }\r\n\r\n \r\n onBlurAutoCompleteAdd = ()=>{\r\n \r\n if (this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: false }); \r\n }\r\n \r\n }\r\n \r\n \r\n onChangeAutocompleteAdd = (event, value) => {\r\n \r\n this.setState({ valueAutoCompleteAdd: value, openAutoCompleteAdd: false }, ()=>{\r\n this.consulta_suficiencias()\r\n });\r\n \r\n }\r\n onChangeInput = (e, value)=>{ \r\n \r\n if (e === null || e.target.value === undefined)\r\n {\r\n if (this.state.openAutoCompleteAdd){ \r\n this.setState({ openAutoCompleteAdd: false });\r\n }\r\n return;\r\n }\r\n \r\n if ((e.target.value.toString().trim().length < 3 || (this.state.valueAutoCompleteAdd !== null && value === this.state.valueAutoCompleteAdd.CUENTA_ALUMNO + ' | ' + this.state.valueAutoCompleteAdd.NOMBRE_COMPLETO)) && this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: false });\r\n }\r\n else if (e.target.value.toString().trim().length >= 3 && !this.state.openAutoCompleteAdd)\r\n {\r\n this.setState({ openAutoCompleteAdd: true });\r\n }\r\n \r\n}\r\n\r\nchangeExpandedRowIds = expandedRowIds =>\r\n{\r\n this.setState({ expandedRowIds });\r\n\r\n}\r\n\r\ncerrardialog =()=> event =>{\r\n this.setState({open_ingreso: false, open_modificar: false,selection: [],errornota: false,igual: false},()=>{\r\n currentnota=null\r\n })\r\n}\r\n\r\nonChangenota=()=> event =>{\r\n\r\n if(this.state.open_modificar)\r\n if(this.notaRef.current.value.toString().trim()===this.state.selection[0].NOTA.toString().trim())\r\n this.setState({igual:true})\r\n else\r\n this.setState({igual:false})\r\n\r\n if(event.target.value>100)\r\n this.setState({errornota:true})\r\n else\r\n this.setState({errornota:false})\r\n}\r\n\r\nguardar_ingreso=()=>{\r\n if(this.state.errornota){\r\n funciones.showToast('w','Escriba una nota correcta.')\r\n return;\r\n }\r\n\r\n if(this.notaRef.current.value.toString().trim() === null || this.notaRef.current.value.toString().trim() === ''){\r\n funciones.showToast('w','Escriba una nota.')\r\n return;\r\n }\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/notasuficiencia/IU_nota_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,cuenta_alumno: cuenta_alumno,NOTA: this.notaRef.current.value,USUARIO: Auth.getProfile().user,TIPO: 1 })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencias()\r\n if(this.state.selection[0].ESPECIAL)\r\n {\r\n this.setState({openBackDrop: false,open_ingreso: false}, ()=>{\r\n this.consulta_suficiencia_especial()\r\n })\r\n }\r\n else{\r\n this.setState({openBackDrop: false,open_ingreso: false,selection: []}, ()=>{\r\n currentnota=null\r\n funciones.showToast('s', 'Se ingresó la nota satisfactoriamente.'); \r\n \r\n })\r\n }\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{funciones.showToast('w', rows[0].RESP);});\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{funciones.showToast('e', 'Error de conexión');});\r\n }\r\n })\r\n}\r\n\r\nonEntering=()=>{\r\n this.consulta_suficiencia_especial()\r\n}\r\n\r\n\r\nguardar_modificar=()=>{\r\n if(this.state.errornota){\r\n funciones.showToast('w','Escriba una nota correcta.')\r\n return;\r\n }\r\n\r\n if(this.notaRef.current.value.toString().trim() === null || this.notaRef.current.value.toString().trim() === ''){\r\n funciones.showToast('w','Escriba una nota.')\r\n return;\r\n }\r\n\r\n if(this.notaRef.current.value.toString().trim()===this.state.selection[0].NOTA)\r\n {\r\n return;\r\n }\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/notasuficiencia/IU_nota_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,cuenta_alumno: cuenta_alumno,NOTA: this.notaRef.current.value,USUARIO: Auth.getProfile().user,TIPO: 2 })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencias()\r\n if(this.state.selection[0].ESPECIAL)\r\n {\r\n this.setState({openBackDrop: false,open_modificar: false}, ()=>{\r\n this.consulta_suficiencia_especial()\r\n })\r\n }\r\n else{\r\n this.setState({openBackDrop: false,open_modificar: false,selection: [],errornota: false,igual:false}, ()=>{\r\n currentnota=null\r\n funciones.showToast('s', 'Se modificó la nota satisfactoriamente.'); \r\n })\r\n }\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n\r\n \r\n}\r\n\r\ncerrardialog_niveles =()=> event =>{\r\n this.setState({open_niveles: false,selection: [],selection_niveles:[],rows_niveles:[]},()=>{\r\n\r\n })\r\n}\r\n\r\nconsulta_suficiencia_especial=()=>{\r\n var _this=this\r\n this.setState({openBackDrop: true},()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n Request.get(`${ip}/notasuficiencia/obtener_suficiencia_especial/${cuenta_alumno}/${this.state.selection[0].ID_DETALLE_PLAN}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 _this.setState({openBackDrop:false }); \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 _this.setState({ rows_niveles: tmp,openBackDrop:false,open_niveles:true }); \r\n }\r\n else\r\n {\r\n _this.setState({rows_niveles: [],openBackDrop:false})\r\n }\r\n })\r\n }\r\n catch(ex){\r\n _this.setState({openBackDrop:false }); \r\n funciones.showToast('e', 'Error de conexión');\r\n }\r\n })\r\n}\r\naceptar_suficiencia_niveles=()=>{\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/notasuficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection_niveles[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection_niveles[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection_niveles[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection_niveles[0].ID_DETALLE_PLAN, TIPO: 1,ESPECIAL:1,ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n\r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencia_especial()\r\n this.setState({openBackDrop: false, open_seleccion_niveles: false, selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Suficiencia ingresada correctamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\nquitar_suficiencia_niveles=()=>{\r\n this.setState({ openBackDrop: true }, ()=>{\r\n let cuenta_alumno = this.state.valueAutoCompleteAdd!==null? this.state.valueAutoCompleteAdd.CUENTA_ALUMNO:'0'\r\n try{\r\n new Request\r\n .post(`${ip}/notasuficiencia/ID_suficiencia`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({cuenta_alumno: Auth.getProfile().plataforma===2?Auth.getProfile().user:cuenta_alumno, ID_FACTURA: this.state.selection_niveles[0].ID_FACTURA, ID_CURSO_HIJO: this.state.selection_niveles[0].ID_CURSO_HIJO,ID_CURSO_PADRE: this.state.selection_niveles[0].ID_CURSO_PADRE\r\n , ID_DETALLE_PLAN: this.state.selection_niveles[0].ID_DETALLE_PLAN, TIPO: 2,ESPECIAL:1,ID_SUFICIENCIA: this.state.selection[0].ID_SUFICIENCIA,USUARIO: Auth.getProfile().user })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n\r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.consulta_suficiencia_especial()\r\n this.setState({openBackDrop: false, open_borrar_niveles: false, selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Se eliminó satisfactoriamente.'); \r\n })\r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\ncerrardialog_selection_niveles =()=> event =>{\r\n this.setState({open_seleccion_niveles: false, open_borrar_niveles: false,selection_niveles: []},()=>{})\r\n}\r\n\r\n\r\n/* RENDER */\r\nrender() {\r\n const { classes } = this.props;\r\n\r\n const botones_ingresa = [\r\n {icono: 'Save', nombre: 'Guardar',disabled: this.state.errornota ,escritura:true, onclick: this.guardar_ingreso\r\n , display: 'auto',color: colores.azul},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog(), display:'auto', color: 'red'},\r\n ]\r\n const botones_modificar = [\r\n {icono: 'Save', nombre: 'Guardar',disabled: this.state.errornota||this.state.igual ,escritura:true, onclick: this.guardar_modificar\r\n , display: 'auto',color: colores.azul},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog(), display:'auto', color: 'red'},\r\n ]\r\n const botones_niveles = [\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_niveles(), display:'auto', color: 'red'},\r\n ]\r\n const botones_seleccionar_niveles = [\r\n {icono: 'CheckCircle', nombre: 'Aceptar' ,escritura:true, onclick: this.aceptar_suficiencia_niveles\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n const botones_quitar_niveles = [\r\n {icono: 'Delete', nombre: 'Aceptar' ,escritura:true, onclick: this.quitar_suficiencia_niveles\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n \r\n if (this.state.isLoggin === true )\r\n {\r\n return (\r\n <React.Fragment>\r\n {Auth.getProfile().plataforma===1?\r\n <div align=\"center\" style={{marginBottom: 10,marginTop: 10}}>\r\n <Autocomplete\r\n id=\"estudiante\"\r\n options={this.state.optionAutocompleteAdd}\r\n getOptionLabel={(option) => option.CUENTA_ALUMNO + ' | ' + option.NOMBRE_COMPLETO}\r\n style={{ width: !movil ? '500px' : '95%' }} \r\n renderInput={(params) => <TextField {...params} \r\n label=\"Estudiante\"\r\n variant=\"outlined\" \r\n onBlur={this.onBlurAutoCompleteAdd} \r\n InputProps={{...params.InputProps,endAdornment: (\r\n <React.Fragment>\r\n {this.state.isLoadingClientes ? <CircularProgress color='secondary' size={25} /> : null}\r\n {params.InputProps.endAdornment}\r\n </React.Fragment>\r\n ),\r\n readOnly: this.state.isSaving\r\n }}\r\n />}\r\n renderOption={(option) => (\r\n <React.Fragment> \r\n <span style={{ minWidth: !movil ? '16%' : '25%' }}>{option.CUENTA_ALUMNO}</span>\r\n {option.NOMBRE_COMPLETO} \r\n </React.Fragment>\r\n )}\r\n noOptionsText={'No hay resultados'}\r\n loadingText={'Cargando...'} \r\n onChange={this.onChangeAutocompleteAdd}\r\n open={this.state.openAutoCompleteAdd}\r\n loading = {this.state.isLoadingClientes}\r\n ListboxComponent={ListboxComponent}\r\n disableListWrap\r\n value={this.state.valueAutoCompleteAdd} \r\n autoHighlight\r\n disableClearable={this.state.isSaving}\r\n clearText = 'Borrar'\r\n openText = ''\r\n closeText = ''\r\n classes= {{ popper: classes.popper }}\r\n onInputChange={this.onChangeInput} \r\n /> \r\n </div>\r\n :null\r\n }\r\n\r\n <Backdrop className={classes.backdrop} open={this.state.openBackDrop}>\r\n <CircularProgress color=\"inherit\" />\r\n <span style={{ marginTop: '10px' }}>{this.state.open_seleccion?'Guardando...':this.state.open_borrar?'Eliminando...':''}</span>\r\n </Backdrop>\r\n <Dialog open={this.state.open_seleccion_niveles||this.state.open_borrar_niveles} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Confirmación'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <Typography align='center' >\r\n {(this.state.open_seleccion_niveles?'¿Seleccionó ':this.state.open_borrar_niveles?'¿Desea quitar ':'')+(this.state.selection_niveles.length>0?this.state.selection_niveles[0].DESCRIPCION_CURSO:'')+'?'\r\n }\r\n </Typography>\r\n </DialogContent>\r\n <BarraBotones align='center' botones={this.state.open_seleccion_niveles?botones_seleccionar_niveles:this.state.open_borrar_niveles?botones_quitar_niveles:[]} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_niveles} fullWidth={true} maxWidth='md'\r\n classes = {{ paper: classes.Dialog}}\r\n TransitionProps={{ onEntering: this.onEntering }}\r\n //onEntering={this.onEntering}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Facturar Otros Niveles'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <CustomTable\r\n Columns={columns_niveles} \r\n Rows={this.state.rows_niveles} \r\n TableColumnExtensions={tableColumnExtensions_niveles}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames_niveles}\r\n getRowId = {getRowId_niveles}\r\n Selection={this.state.selection_niveles}\r\n //ChangeSelection = {this.changeSelection}\r\n height={'300px'}\r\n //rowHeaderCellComponent={ColumnHeader_cellComponent(classes,this.handleInfoClick())}\r\n //ExpandedRowIds = {this.state.expandedRowIds}\r\n enabledFilterRows= {false}\r\n RowComponent={this.trow_niveles}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n ChangeExpandedGroups = {this.changeExpandedGroups} \r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent_niveles}\r\n showSelectionColumn={false}\r\n />\r\n </DialogContent>\r\n <BarraBotones align='center' botones={botones_niveles} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_ingreso||this.state.open_modificar} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Ingreso de Nota'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <TextField\r\n variant=\"outlined\" margin=\"dense\"\r\n id=\"curso\" label={'Curso'} \r\n fullWidth\r\n name=\"curso\"\r\n disabled\r\n autoFocus \r\n defaultValue= {this.state.selection[0]?this.state.selection[0].CODIGO_CURSO+' '+this.state.selection[0].DESCRIPCION_CURSO:''}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {this.state.selection[0]?this.state.selection[0].ESPECIAL?\r\n <Tooltip title={'PodrÃa aplicar a otros niveles.'} PopperProps={{style:{zIndex:400000}}}>\r\n <IconButton color='primary' style={{height: 35,width:35}} >\r\n <Icono icono={'Info'}/>\r\n </IconButton>\r\n </Tooltip>\r\n :<b></b>:<b></b>\r\n }\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n <TextField\r\n variant=\"outlined\" margin=\"dense\" required\r\n id=\"nota\" label={this.state.errornota?\"Nota Inválida\":'Nota'} \r\n name=\"nota\"\r\n error={this.state.errornota}\r\n autoFocus \r\n defaultValue= {currentnota}\r\n onKeyDown={funciones.onlyNumbers(this.notaRef, false, true)}\r\n onChange={this.onChangenota()}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n inputProps={{ ref: this.notaRef, maxLength: 3 }} \r\n />\r\n </DialogContent>\r\n <BarraBotones botones={this.state.open_ingreso?botones_ingresa:botones_modificar} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <div ref={this.tablaRef} style={{background:'white',marginLeft:movil_pequeño?globales.tabla.marginleft_movil:globales.tabla.marginleft,marginRight:movil_pequeño?globales.tabla.marginright_movil:globales.tabla.marginright}}>\r\n <CustomTable\r\n Columns={columns} \r\n Rows={this.state.rows} \r\n TableColumnExtensions={tableColumnExtensions}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames}\r\n getRowId = {getRowId}\r\n Selection={this.state.selection}\r\n //ChangeSelection = {this.changeSelection}\r\n height={this.state.heightTableMain}\r\n Filters = {this.state.filters}\r\n onFiltersChange = {this.changeFilters}\r\n //ExpandedGroups = {this.state.expandedGroups}\r\n ExpandedRowIds = {this.state.expandedRowIds}\r\n TableNameTreeColum={this.state.tableNameTreeColum}\r\n GetChildRows = {getChildRows}\r\n TableTreeColumn_cellComponent= {TableTreeColumn_cellComponent} \r\n OnExpandedRowIdsChange = {this.changeExpandedRowIds}\r\n enabledFilterRows= {this.state.enabledFilterRows}\r\n RowComponent={this.trow}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent}\r\n //rowHeaderCellComponent={TableTreeColumnHeader_cellComponent}\r\n showSelectionColumn={false}\r\n />\r\n </div>\r\n </React.Fragment>\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 return null;\r\n} /// finaliza render\r\n} /// finaliza class\r\n)/// finaliza withStyles\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 Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport Icono from '../../components/Icono'\r\nimport {Table} from '@devexpress/dx-react-grid-material-ui';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport TableRowsIndexer from '../../components/tableRowsIndexer'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { Typography } from '@material-ui/core';\r\n\r\nlet Auth = new AuthService();\r\nvar ip=globales.ip\r\nvar border_dialog=globales.border_dialog\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\nlet isVisibleRowSelected = false;\r\nconst colorRowSelected = 'rgb('+ colores.tabla.selection +')';\r\nlet alternateColorRow1 = colores.tabla.alternateColorRow1; \r\nlet alternateColorRow2 = colores.tabla.alternateColorRow2;\r\n\r\n/*\r\nconst VirtualTable_cellComponent = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n return(\r\n <Table.Cell {...props}/>\r\n );\r\n}*/\r\n\r\n\r\nconst getRowId = row => row.ID_CURSO_HIJO;\r\nconst getRowId_niveles = row => row.ID_DETALLE_PLAN;\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 defaultHiddenColumnNames= ['ID_CURSO_HIJO','ID_DETALLE_PLAN'];\r\n\r\n const columns= [{name:'ID_CURSO_HIJO',title: 'ID_CURSO_HIJO'},{name:'CODIGO_CURSO',title: 'Código'}\r\n ,{name:'DESCRIPCION_CURSO',title: 'Nombre'},{name:'CREDITOS',title: 'U.V.'}\r\n ,{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'}\r\n ,{name:'BOTONES',title: ' '}\r\n ];\r\n\r\n const columns_niveles= [{name:'CHECK',title: ' '},{name:'CODIGO_CURSO',title: 'Código'},{name:'DESCRIPCION_CURSO',title: 'Descripción'}\r\n ,{name:'CREDITOS',title: 'UV'},{name:'ID_DETALLE_PLAN',title: 'ID_DETALLE_PLAN'}\r\n ,{name:'CHECK1',title: 'CHECK1'},{name:'NOTA',title: 'Nota'},{name:'SECUENCIA',title: 'SECUENCIA'},{name:'BOTONES',title: ' '}\r\n ]\r\n\r\n const tableColumnExtensions_niveles= [{ columnName: 'CHECK', wordWrapEnabled: false, align: 'center',width: 60},\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'CREDITOS', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'NOTA', wordWrapEnabled: true, align: 'center'},\r\n { columnName: 'BOTONES', wordWrapEnabled: true, align: 'center',width: 200},\r\n ];\r\n\r\n const defaultHiddenColumnNames_niveles= ['ID_DETALLE_PLAN','CHECK1','SECUENCIA'];\r\n\r\n\r\n\r\n const tableColumnExtensions= [\r\n { columnName: 'CODIGO_CURSO', wordWrapEnabled: false, align: 'center',width: 200},\r\n { columnName: 'DESCRIPCION_CURSO', wordWrapEnabled: false, align: 'left'},\r\n { columnName: 'CREDITOS', wordWrapEnabled: false, align: 'center',width: 200},\r\n { columnName: 'BOTONES', wordWrapEnabled: true, align: 'center',width: 200},\r\n ];\r\n\r\n let currentnota = null;\r\n\r\n/* EXPORT */\r\nexport default withStyles(styles)(\r\n class Configuracion_suficiencia_especial extends React.Component {\r\n tablaRef = React.createRef();\r\n notaRef = 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 open_ingreso: false,\r\n open_modificar: false,\r\n open_seleccion_niveles_ingreso: false,\r\n open_seleccion_niveles_modificar: false,\r\n open_borrar_niveles: false,\r\n isLoggin: undefined,\r\n heightTableMain: 0,\r\n rows: [],\r\n selection: [],\r\n setSelectedniveles: null,\r\n setSelectedplanes: null,\r\n grouping: [],\r\n expandedGroups: [],\r\n filteringColumnExtensions: [],\r\n filters: [],\r\n expandedRowIds: [],\r\n enabledFilterRows: true,\r\n niveles: [],\r\n comboniveles: [],\r\n comboplanes: [],\r\n open_niveles: false,\r\n rows_niveles: [],\r\n selection_niveles: [],\r\n isloadingNiveles: false,\r\n }\r\n\r\n\r\n\r\n\r\n\r\n const trow = TableRow => withStyles(styles, { name: \"Row\" })( ({classes,highlighted, rowIndex, row, selectByRowClick, ...props}) => {\r\n\r\n const odd = !!(rowIndex % 2);\r\n\r\n if (this.state.selection[0]===undefined?this.state.selection[0]:this.state.selection[0].ID_CURSO_HIJO === props.tableRow.row.ID_CURSO_HIJO) { isVisibleRowSelected = true; }\r\n return (\r\n <Table.Row {...props}\r\n \r\n style={{\r\n cursor: 'pointer',\r\n backgroundColor: this.state.selection[0]===undefined?odd ? alternateColorRow1 : alternateColorRow2:this.state.selection[0].ID_CURSO_HIJO === props.tableRow.row.ID ? colorRowSelected : \r\n odd ? alternateColorRow1 : alternateColorRow2, \r\n padding: '0rem 0rem !important',\r\n margin: '0px', \r\n }}\r\n />\r\n );\r\n });\r\n\r\n const VirtualTable_cellComponent = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n const ClickBoton=(ID_NIVEL,CODIGO_NIVEL,DESCRIPCION_NIVEL,ID_PLAN,CODIGO_PLAN,DESCRIPCION_PLAN\r\n ,ID_CURSO_HIJO,CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ID_DETALLE_PLAN,TIPO) => event =>{\r\n \r\n this.setState({selection: [{ID_NIVEL,CODIGO_NIVEL,DESCRIPCION_NIVEL,ID_PLAN,CODIGO_PLAN,DESCRIPCION_PLAN\r\n ,ID_CURSO_HIJO,CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ID_DETALLE_PLAN}] \r\n ,open_ingreso: TIPO===1?true:false,igual: TIPO===2?true:false,open_modificar: TIPO===2?true:false})\r\n }\r\n\r\n if(column.name===\"BOTONES\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n <Tooltip title='Modificar' > \r\n <Button style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color:colores.azul}} \r\n onClick={ClickBoton(row.ID_NIVEL,row.CODIGO_NIVEL,row.DESCRIPCION_NIVEL,row.ID_PLAN,row.CODIGO_PLAN,row.DESCRIPCION_PLAN\r\n ,row.ID_CURSO_HIJO,row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,2)}\r\n variant='outlined' \r\n >\r\n <Icono icono={'Edit'} style={{margin:0}}/>\r\n </Button>\r\n </Tooltip> \r\n </Table.Cell>\r\n );\r\n }\r\n\r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'43px'}}/>\r\n );\r\n }\r\n\r\n const VirtualTable_cellComponent_niveles = (props) => {\r\n const { column } = props;\r\n const {row} = props;\r\n\r\n const ClickCheckbox=(CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ID_DETALLE_PLAN,NOTA,ID_SUFICIENCIA_ESPECIALES,SECUENCIA,TIPO) => event =>{\r\n if(TIPO===2)\r\n currentnota=NOTA\r\n this.setState({selection_niveles: [{CODIGO_CURSO,DESCRIPCION_CURSO,CREDITOS,ID_DETALLE_PLAN,NOTA,ID_SUFICIENCIA_ESPECIALES,SECUENCIA}] \r\n ,open_seleccion_niveles_ingreso: TIPO===1?true:false,open_seleccion_niveles_modificar: TIPO===2?true:false,open_borrar_niveles: TIPO===3?true:false})\r\n }\r\n\r\n \r\n if(column.name===\"CHECK\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n <Checkbox checked={row.CHECK1} \r\n onClick={ClickCheckbox(row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,row.NOTA,row.ID_SUFICIENCIA_ESPECIALES,row.SECUENCIA,1)}\r\n disabled={row.SECUENCIA===1?row.CHECK1:this.state.rows_niveles[row.SECUENCIA-2].CHECK1?row.CHECK1:true}\r\n style={{padding: 0, height:'10px', margin: 0}}\r\n />\r\n </Table.Cell>\r\n );\r\n }\r\n \r\n if(column.name===\"BOTONES\")\r\n {\r\n return(\r\n <Table.Cell {...props} align='center' style={{padding: 0, height:'8px',}}>\r\n {row.CHECK1?\r\n <React.Fragment>\r\n <Tooltip title='Modificar' >\r\n <Button \r\n style={{padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none'}}\r\n variant='outlined' \r\n color=\"primary\"\r\n onClick={ClickCheckbox(row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,row.NOTA,row.ID_SUFICIENCIA_ESPECIALES,row.SECUENCIA,2)}\r\n >\r\n <Icono icono={'Edit'} style={{margin:0}}/>\r\n </Button>\r\n </Tooltip>\r\n {\r\n row.SECUENCIA===1 && this.state.rows_niveles[row.SECUENCIA]!==undefined?!this.state.rows_niveles[row.SECUENCIA].CHECK1?\r\n <Tooltip title='Eliminar' >\r\n <Button \r\n style={{marginLeft:5,padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color: 'red'}}\r\n color='inherit'\r\n variant='outlined' \r\n onClick={ClickCheckbox(row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,row.NOTA,row.ID_SUFICIENCIA_ESPECIALES,row.SECUENCIA,3)}\r\n >\r\n <Icono icono={'Delete'} style={{margin:0}}/>\r\n </Button>\r\n </Tooltip>\r\n :\r\n <Button \r\n style={{marginLeft:5,padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none'}}\r\n color='inherit'\r\n variant='outlined' \r\n disabled\r\n >\r\n <Icono icono={'Delete'} style={{margin:0}}/>\r\n </Button>\r\n :\r\n this.state.rows_niveles[row.SECUENCIA]!==undefined?!this.state.rows_niveles[row.SECUENCIA].CHECK1?\r\n <Tooltip title='Eliminar' >\r\n <Button \r\n style={{marginLeft:5,padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color: 'red'}}\r\n color='inherit'\r\n variant='outlined' \r\n onClick={ClickCheckbox(row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,row.NOTA,row.ID_SUFICIENCIA_ESPECIALES,row.SECUENCIA,3)}\r\n >\r\n <Icono icono={'Delete'} style={{margin:0}}/>\r\n </Button>\r\n </Tooltip>\r\n :<Button \r\n style={{marginLeft:5,padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none'}}\r\n color='inherit'\r\n variant='outlined' \r\n disabled\r\n >\r\n <Icono icono={'Delete'} style={{margin:0}}/>\r\n </Button>\r\n :\r\n <Tooltip title='Eliminar' >\r\n <Button \r\n style={{marginLeft:5,padding:8,paddingTop:5,paddingBottom:5,textTransform: 'none',color: 'red'}}\r\n color='inherit'\r\n variant='outlined' \r\n onClick={ClickCheckbox(row.CODIGO_CURSO,row.DESCRIPCION_CURSO,row.CREDITOS,row.ID_DETALLE_PLAN,row.NOTA,row.ID_SUFICIENCIA_ESPECIALES,row.SECUENCIA,3)}\r\n >\r\n <Icono icono={'Delete'} style={{margin:0}}/>\r\n </Button>\r\n </Tooltip>\r\n }\r\n </React.Fragment>\r\n :null} \r\n </Table.Cell>\r\n );\r\n\r\n }\r\n\r\n return(\r\n <Table.Cell {...props} style={{padding: 0, height:'45px',}}/>\r\n );\r\n }\r\n\r\n this.VirtualTable_cellComponent_niveles=VirtualTable_cellComponent_niveles;\r\n this.VirtualTable_cellComponent = VirtualTable_cellComponent;\r\n this.trow = trow(Table.Row);\r\n }; //FIN CONSTRUCTORS\r\n\r\n\r\nonChangenota=()=> event =>{\r\n \r\n if(this.state.open_seleccion_niveles_modificar)\r\n if(this.notaRef.current.value.toString().trim()===this.state.selection_niveles[0].NOTA.toString().trim())\r\n this.setState({igual:true})\r\n else\r\n this.setState({igual:false})\r\n else\r\n this.setState({igual:false})\r\n\r\n //funciones.showToast('w',this.state.rows_niveles[this.state.selection_niveles[0].SECUENCIA-2])\r\n //console.log(this.state.rows_niveles[this.state.selection_niveles[0].SECUENCIA-2])\r\n \r\n if(event.target.value>100)\r\n this.setState({errornota:true})\r\n else\r\n if(this.state.rows_niveles[this.state.selection_niveles[0].SECUENCIA-2]!==undefined)\r\n {\r\n if(this.state.rows_niveles[this.state.selection_niveles[0].SECUENCIA-2].NOTA>event.target.value)\r\n this.setState({errornota:true})\r\n else\r\n this.setState({errornota:false})\r\n }\r\n else\r\n this.setState({errornota:false})\r\n\r\n}\r\n\r\ncomponentDidMount()\r\n{\r\n let _this = this;\r\n _this.actualizarcircular(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.obtenerNiveles()\r\n _this.setState({rows: [], heightTableMain: funciones.getHeightTableMain(movil_pequeño,_this).heightTable})\r\n //}\r\n \r\n })\r\n _this.actualizarcircular(true)\r\n}\r\n\r\nonChangeAutocompleteniveles = async (event, newValue) =>{\r\n this.setState({setSelectedplanes: null,rows: []})\r\n if (newValue!==null)\r\n {\r\n var found\r\n var planes_combo=[]\r\n this.state.niveles.forEach(\r\n function getCheck(item, index) {\r\n found = planes_combo.find(grupo => grupo.ID_PLAN === item.ID_PLAN);\r\n if (item.ID_NIVEL === newValue.ID_NIVEL && found==null){\r\n planes_combo.push(item);\r\n }\r\n else{\r\n found=null;\r\n }\r\n })\r\n \r\n await Promise.resolve(this.setState({setSelectedniveles :newValue,comboplanes: planes_combo}));\r\n }\r\n \r\n \r\n}\r\nonChangeAutocompleteplanes = async (event, newValue) =>{\r\n \r\n if (newValue!==null)\r\n {\r\n var found\r\n var cursos=[]\r\n this.state.niveles.forEach(\r\n function getCheck(item, index) {\r\n if (item.ID_PLAN=== newValue.ID_PLAN){\r\n found = cursos.find(grupo => grupo.ID_CURSO_HIJO === item.ID_CURSO_HIJO);\r\n if(found==null)\r\n cursos.push(item);\r\n else{\r\n found=null;\r\n }\r\n }\r\n })\r\n \r\n await Promise.resolve(this.setState({setSelectedplanes :newValue,rows:cursos}));\r\n }\r\n \r\n\r\n}\r\n\r\nobtenerNiveles()\r\n{\r\nthis.setState({isloadingNiveles: true},()=>{\r\nnew Request\r\n .get(`${globales.ip}/configuracionsuficiencia/obtener_niveles_planes_suficiencia/${Auth.getProfile().user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \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 funciones.showToast('e', 'Error de conexión'); \r\n return;\r\n }\r\n \r\n const niveles = JSON.parse(res.text);\r\n if (niveles.length > 0) \r\n { \r\n var found\r\n var niveles_combo=[]\r\n niveles.forEach(\r\n function getCheck(item, index) {\r\n found = niveles_combo.find(grupo => grupo.ID_NIVEL === item.ID_NIVEL);\r\n \r\n if (found == null){\r\n niveles_combo.push(item);\r\n }else {\r\n found = null;\r\n }\r\n })\r\n this.setState({ niveles: niveles,comboniveles: niveles_combo,isloadingNiveles: false}); \r\n }\r\n });\r\n })\r\n}\r\n\r\ncerrardialog_niveles =()=> event =>{\r\n this.setState({open_ingreso: false,open_modificar: false,selection: [],selection_niveles:[],rows_niveles:[],errornota: false},()=>{})\r\n currentnota=null;\r\n}\r\n\r\nonEntering=()=>{\r\n this.consulta_suficiencia_especial()\r\n}\r\n\r\n\r\nconsulta_suficiencia_especial=()=>{\r\n var _this=this\r\n\r\n this.setState({openBackDrop: true},()=>{\r\n try{\r\n Request.get(`${ip}/configuracionsuficiencia/obtener_suficiencias_requisitos/${Auth.getProfile().user}/${this.state.selection[0].ID_DETALLE_PLAN}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(10)\r\n .timeout({ response: 5000, 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 _this.setState({ openBackDrop: false }); \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 _this.setState({ rows_niveles: tmp, openBackDrop: false }); \r\n }\r\n else\r\n {\r\n _this.setState({ rows_niveles: [], openBackDrop: false})\r\n }\r\n })\r\n }\r\n catch(ex){\r\n _this.setState({openBackDrop:false }); \r\n funciones.showToast('e', 'Error de conexión');\r\n }\r\n })\r\n}\r\n\r\n\r\ncerrardialog_selection_niveles =()=> event =>{\r\n this.setState({open_seleccion_niveles_ingreso: false, open_seleccion_niveles_modificar: false,open_borrar_niveles: false,selection_niveles: [], errornota: false, igual: false},()=>{\r\n currentnota=null;\r\n })\r\n}\r\n\r\nguardar_ingreso=()=>{\r\n var nota = this.state.selection_niveles[0].NOTA===null?this.state.selection_niveles[0].NOTA:this.state.selection_niveles[0].NOTA.toString().trim()\r\n if(this.state.errornota){\r\n funciones.showToast('w','Escriba una nota correcta.')\r\n return;\r\n }\r\n\r\n if(this.notaRef.current.value.toString().trim() === null || this.notaRef.current.value.toString().trim() === ''){\r\n funciones.showToast('w','Escriba una nota.')\r\n return;\r\n }\r\n\r\n if(this.notaRef.current.value.toString().trim()===nota){\r\n funciones.showToast('w','Escriba una nota distinta.')\r\n return;\r\n }\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n try{\r\n new Request\r\n .post(`${ip}/configuracionsuficiencia/IUD_configuracion_especial`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ID_SUFICIENCIA_ESPECIALES: this.state.selection_niveles[0].ID_SUFICIENCIA_ESPECIALES\r\n ,ID_DETALLE_PLAN: this.state.selection[0].ID_DETALLE_PLAN,ID_DETALLE_PLAN_R: this.state.selection_niveles[0].ID_DETALLE_PLAN\r\n ,NOTA: this.notaRef.current.value\r\n ,USUARIO: Auth.getProfile().user\r\n ,SECUENCIA: this.state.selection_niveles[0].SECUENCIA\r\n ,TIPO: this.state.open_seleccion_niveles_modificar?2:1 })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.setState({openBackDrop: false,open_seleccion_niveles_ingreso: false,open_seleccion_niveles_modificar: false,selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Se ingresó la nota satisfactoriamente.'); \r\n currentnota=null;\r\n this.obtenerNiveles()\r\n this.consulta_suficiencia_especial()\r\n })\r\n \r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexión');\r\n });\r\n }\r\n })\r\n}\r\n\r\neliminar_ingreso=()=>{\r\n\r\n this.setState({ openBackDrop: true }, ()=>{\r\n try{\r\n new Request\r\n .post(`${ip}/configuracionsuficiencia/IUD_configuracion_especial`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ID_SUFICIENCIA_ESPECIALES: this.state.selection_niveles[0].ID_SUFICIENCIA_ESPECIALES\r\n ,ID_DETALLE_PLAN: this.state.selection[0].ID_DETALLE_PLAN,ID_DETALLE_PLAN_R: this.state.selection_niveles[0].ID_DETALLE_PLAN\r\n ,NOTA: this.state.selection_niveles[0].NOTA\r\n ,USUARIO: Auth.getProfile().user,TIPO: 3 })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 60000, }) \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 this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'Error de conexión'); \r\n });\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n this.setState({openBackDrop: false,open_borrar_niveles:false,selection_niveles: []}, ()=>{\r\n funciones.showToast('s', 'Se quitó la clase seleccionada.'); \r\n this.obtenerNiveles()\r\n this.consulta_suficiencia_especial()\r\n })\r\n \r\n }\r\n else{\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n } \r\n }); \r\n }\r\n catch(ex){\r\n this.setState({ openBackDrop: false}, ()=>{\r\n funciones.showToast('e', 'Error de conexió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_niveles = [\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_niveles(), display:'auto', color: 'red'},\r\n ]\r\n const botones_seleccionar_niveles_ingreso = [\r\n {icono: 'CheckCircle', nombre: 'Aceptar',disabled: this.state.errornota||this.state.igual \r\n ,escritura:true, onclick: this.guardar_ingreso\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n\r\n const botones_quitar_niveles = [\r\n {icono: 'Delete', nombre: 'Aceptar' ,escritura:true, onclick: this.eliminar_ingreso\r\n , display: 'auto',color: 'green'},\r\n {icono: 'Close', nombre: 'Cerrar' ,onclick: this.cerrardialog_selection_niveles(), display:'auto', color: 'red'},\r\n ]\r\n\r\n //<BarraBotones align='center' botones={botones} l={this.l} e={this.e} i={this.i}/>\r\n\r\n if (this.state.isLoggin === true )\r\n {\r\n return ( \r\n <React.Fragment>\r\n <Backdrop className={classes.backdrop} open={this.state.openBackDrop}>\r\n <CircularProgress color=\"inherit\" />\r\n <span style={{ marginTop: '10px' }}>{'Guardando...'}</span>\r\n </Backdrop>\r\n <Dialog open={this.state.open_borrar_niveles} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Confirmación'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <Typography align='center' >\r\n {'¿Desea quitar '+(this.state.selection_niveles[0]!==undefined?this.state.selection_niveles[0].DESCRIPCION_CURSO:'')+'?'}\r\n </Typography>\r\n </DialogContent>\r\n <BarraBotones align='center' botones={botones_quitar_niveles} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_seleccion_niveles_ingreso||this.state.open_seleccion_niveles_modificar} fullWidth={true} maxWidth='xs'\r\n classes = {{ paper: classes.Dialog}}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Confirmación Nota'}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <TextField\r\n variant=\"outlined\" margin=\"dense\"\r\n id=\"curso\" label={'Curso'} \r\n fullWidth\r\n name=\"curso\"\r\n disabled\r\n autoFocus \r\n defaultValue= {this.state.selection_niveles[0]?this.state.selection_niveles[0].CODIGO_CURSO+' '+this.state.selection_niveles[0].DESCRIPCION_CURSO:''}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n <TextField\r\n variant=\"outlined\" margin=\"dense\" required\r\n id=\"nota\" label={this.state.errornota?\"Nota Inválida\":'Nota'} \r\n name=\"nota\"\r\n error={this.state.errornota}\r\n autoFocus \r\n defaultValue= {currentnota}\r\n onKeyDown={funciones.onlyNumbers(this.notaRef, false, true)}\r\n onChange={this.onChangenota()}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n inputProps={{ ref: this.notaRef, maxLength: 3 }} \r\n />\r\n </DialogContent>\r\n <BarraBotones align='center' botones={botones_seleccionar_niveles_ingreso} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <Dialog open={this.state.open_ingreso || this.state.open_modificar} fullWidth={true} maxWidth='md'\r\n classes = {{ paper: classes.Dialog}}\r\n //onEntering={this.onEntering}\r\n TransitionProps={{ onEntering: this.onEntering }}\r\n >\r\n <DialogTitle style={{background:colores.azul,textAlign:'center', marginBottom:20,padding:2, color: 'white'}}>\r\n {'Requisitos de '+(this.state.selection[0]!==undefined?this.state.selection[0].DESCRIPCION_CURSO:'')}\r\n </DialogTitle>\r\n <DialogContent style={{marginBottom:20}}>\r\n <CustomTable\r\n Columns={columns_niveles} \r\n Rows={this.state.rows_niveles} \r\n TableColumnExtensions={tableColumnExtensions_niveles}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames_niveles}\r\n getRowId = {getRowId_niveles}\r\n Selection={this.state.selection_niveles}\r\n //ChangeSelection = {this.changeSelection}\r\n height={'300px'}\r\n //rowHeaderCellComponent={ColumnHeader_cellComponent(classes,this.handleInfoClick())}\r\n //ExpandedRowIds = {this.state.expandedRowIds}\r\n enabledFilterRows= {false}\r\n //cellsEditing\r\n // cellsEditingCellComponent={(this.cellsEditingCellComponent)}\r\n //commitChanges={this.commitChanges}\r\n RowComponent={this.trow_niveles}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n ChangeExpandedGroups = {this.changeExpandedGroups} \r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent_niveles}\r\n showSelectionColumn={false}\r\n />\r\n </DialogContent>\r\n <BarraBotones align='center' botones={botones_niveles} l={this.l} e={this.e} i={this.i}/>\r\n </Dialog>\r\n <div style={{marginTop: 10,marginBottom: 10,display: !movil?'flex':'block', justifyContent:'center'}}>\r\n <Autocomplete\r\n id=\"niveles\"\r\n options={this.state.comboniveles} \r\n getOptionLabel={(option) =>option.CODIGO_NIVEL + ' | ' + option.DESCRIPCION_NIVEL}\r\n style={{ width: !movil ? '400px' : '100%' ,marginRight:!movil ? 10:0 }} \r\n renderInput={(params) => <TextField {...params} label=\"Nivel\" variant=\"outlined\" />}\r\n value={this.state.setSelectedniveles}\r\n getOptionSelected = {(option, value) => option.ID_NIVEL === value.ID_NIVEL}\r\n onChange={this.onChangeAutocompleteniveles} \r\n loading={this.state.isloadingNiveles}\r\n /> \r\n <Autocomplete\r\n id=\"Plan\"\r\n options={this.state.comboplanes} \r\n getOptionLabel={(option) =>option.CODIGO_PLAN + ' | ' + option.DESCRIPCION_PLAN}\r\n style={{ width: !movil ? '400px' : '100%' }} \r\n renderInput={(params) => <TextField {...params} label=\"Plan\" variant=\"outlined\" />}\r\n value={this.state.setSelectedplanes}\r\n getOptionSelected = {(option, value) => option.ID_NIVEL === value.ID_NIVEL}\r\n onChange={this.onChangeAutocompleteplanes} \r\n /> \r\n </div>\r\n <div ref={this.tablaRef} style={{background:'white',marginLeft:movil_pequeño?globales.tabla.marginleft_movil:globales.tabla.marginleft,marginRight:movil_pequeño?globales.tabla.marginright_movil:globales.tabla.marginright}}>\r\n <CustomTable\r\n Columns={columns} \r\n Rows={this.state.rows} \r\n TableColumnExtensions={tableColumnExtensions}\r\n DefaultHiddenColumnNames={defaultHiddenColumnNames}\r\n getRowId = {getRowId}\r\n Selection={this.state.selection}\r\n //ChangeSelection = {this.changeSelection}\r\n height={this.state.heightTableMain}\r\n Filters = {this.state.filters}\r\n onFiltersChange = {this.changeFilters}\r\n //ExpandedGroups = {this.state.expandedGroups}\r\n enabledFilterRows= {this.state.enabledFilterRows}\r\n RowComponent={this.trow}\r\n standarPlugin = { <TableRowsIndexer/> }\r\n VirtualTable_cellComponent={this.VirtualTable_cellComponent}\r\n //rowHeaderCellComponent={TableTreeColumnHeader_cellComponent}\r\n showSelectionColumn={false}\r\n />\r\n </div> \r\n </React.Fragment>\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 ","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n"],"sourceRoot":""}