{"version":3,"sources":["components/img/svg/Cerrar sesion.svg","components/img/svg/Logosistema.svg","components/img/svg/Enviar(blanco).svg","components/img/svg/Eliminar.svg","components/img/svg/Editar.svg","AppContext.js","components/NavMenu.js","components/Layout.js","components/Home.js","components/FetchData.js","services/authentication.service.js","webpack:///./src/components/img/svg/Editar.svg?acbb","webpack:///./src/components/img/svg/Eliminar.svg?e30c","components/panels/expand/Solicitud_materia.js","components/panels/tablas/Resumen_Observaciones.js","components/panels/Admision.js","components/panels/modal/Nueva_actividad.js","components/panels/expand/Solicitud_actividad.js","components/panels/tablas/Tabla_Actividades.js","components/panels/Docencia_Grado.js","components/panels/Docencia_Postgrado.js","components/panels/Gestion_Academica.js","components/panels/Investigacion.js","components/panels/Vinculacion.js","components/panels_out/expand/Solicitud_materia.js","components/panels_out/Admision.js","components/panels_out/expand/Solicitud_actividad.js","components/panels_out/Docencia_Grado.js","components/panels_out/Docencia_Postgrado.js","components/panels_out/Gestion_Academica.js","components/panels_out/Investigacion.js","components/panels_out/Vinculacion.js","components/panels_out/Solicitud_General.js","components/panels_out/Resumen_final.js","components/panels/expand/Solicitud_generica.js","components/panels/Solicitud_General.js","components/Wizard_Principal.js","components/Counter.js","components/PrivateRoute.js","App.js","registerServiceWorker.js","index.js","components/img/svg/Nueva.svg","components/img/svg/Aviso.svg"],"names":["module","exports","AppContext","React","createContext","currentUser","updateUser","ColoredLine","color","style","backgroundColor","height","NavMenu","props","toggleNavbar","bind","state","collapsed","this","setState","context","Navbar","className","light","Container","NavbarBrand","tag","Link","to","src","logo","width","alt","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","idpersona","nombres","apellidos","Component","displayName","name","contextType","Layout","children","textAlign","fontSize","Home","console","log","JSON","stringify","FetchData","forecasts","loading","populateWeatherData","contents","renderForecastsTable","id","a","fetch","response","json","data","aria-labelledby","map","forecast","key","date","temperatureC","temperatureF","summary","currentUserSubject","BehaviorSubject","usuario","identificacion","ultimoCambio","roles","token","authenticationService","login","next","logout","window","location","href","realFetch","url","opts","value","Object","assign","asObservable","Solicitud_materia","handleClick","text","accion","materias","materia","idcurso","porc","anio","term","termino","codigomateria","nommateria","numhorasteoricas","numhoraspracticas","paralelo","idtipoactividad","observacion","fechaInicio","fechaFin","valorevaluacion","valornumexam","estadocheck","tipoprofesor","pao1","pao2","pae","loading2","onInputChange","agregarSolicitud","onChangeValue","onChangeRadioAcciones","event","target","toUpperCase","preventDefault","updatestate","rowIndex","descripcion","totalhoras","idUnico","closeExpandxId","Swal","fire","title","icon","timer","confirmButtonText","evento","tecla","which","caracter","String","fromCharCode","RegExp","test","onKeyPress","handlkeyPress","onChange","type","enviar","color_head_resumen","tipo","Resumen_Observaciones","solicitudes","termino1","termino2","termino3","titulo","get_radios","filter","x","ambito","tipoactividad","columns_resumen","dataField","headerStyle","cell","row","colIndex","formatter","cellContent","footer","hidden","split","replace","Row","Col","md","length","keyField","columns","bordered","color_head_desc","PaoFormatter","Admision","handleBtnClick_mat","expanded_mat","includes","handleOnExpand_mat","isExpand","e","handleHideClick_mat","idactividad","check","document","getElementsByName","checked","fila_mat","find","o","i","validacion","push","mensaje_afirma","setconteo_final","handleShowClick_mat","valida_next","isValidated_all","handleHideAllClick_mat","filas","forEach","element","idCurso","handleAllCheck_mat","handleShowAllClick_mat","expandir","terminoPeriodo","concat","valor","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","signDisplay","format","dateFormatter","strFecha","Date","toLocaleDateString","year","month","day","actividades","busqueda","actividad","numhoras","periodicidad","escarga","total","selectact","selectidact","abierto","materia_elegida","validada","estado_actividad","actividad_elegida","idprof","actividades_combo","periodo","newactividad","onChangePao","handleSearch","handleChange","closeExpandxId_mat","updatestate_mat","tam","getSolicitudes","solicitudes_act","populateMateriasData","populateActividadesCombo","update","act","checkSin","getElementById","getElementsByClassName","chec","disabled","showCancelButton","confirmButtonColor","cancelButtonColor","cancelButtonText","then","result","isConfirmed","setSolicitudes","checksi","checkno","columns_materias","footerAlign","columnData2","total1","reduce","acc2","item2","Number","toFixed","toLocaleString","isDummyField","headerFormatter","column","expandRow2","onlyOneExpanding","expanded","expandByColumnOnly","renderer","nombreMateria","horasTotales","handleHideClick","expandRow","totalpepa","cargaMat","horastot2","talambito","contents_mat","renderMateriasTable","renderTotal","respuesta","selected","actividades2","validado","updateCarga","item","index","trim","API_URL","Nueva_actividad","handleNew","consulta","d1","d2","toggle","Modal","ModalHeader","marginBottom","fontFamily","ModalBody","fluid","toLowerCase","charAt","slice","substring","htmlFor","ModalFooter","Solicitud_actividad","periodos","textAc","control","pa3","undefined","terminoeval","terminoText","Tabla_Actividades","handleBtnClick","handleOnExpand","fila","handleShowClick","handleHideAllClick","handleAllCheck","handleShowAllClick","tam2","setfila","columns_acti","columnData","total2","acc","idActividad","totalHoras","tipoActividad","float","background","margin","padding","border","cursor","crear","Docencia_Grado","setconteo_final_mat","populateActividadesData","nomMateria","totalmaterias","horastot","talambitout","cargaAct","nivelEstudio","act2","totalmat","totalact","Docencia_Postgrado","idCplPostGrados","tmpTerminoSplit","loading3","uActividad","tmpTerminoString","Gestion_Academica","terminos","totalactividades","Investigacion","nuevoregistro","btncheckprevius","Vinculacion","faEdit","size","faTrash","Admision_out","abrirModal","cerrarModal","nombremateria","horastotales","radios","desgloseHoras","Docencia_Grado_out","actividades_split","horastermino3","horastermino1","horastermino2","renderActividadesTable","Docencia_Postgrado_out","idcplpostgrados","Gestion_Academica_out","Investigacion_out","Vinculacion_out","Solicitud_General_out","idcargadet","color_head_desc_gen","Resumen_final","rechazos","elementoSC","idVal","some","mensaje","Solicitud_generica","cambiarSolicitud","updatestate_solicitud","rowindex","Solicitud_General","id_row","actualizarSolicitudes","deleteActivity","editActivity","showConfirmButton","ROWID","updateFinal","buttonToLink","totalpepa2","faUserEdit","faUserCheck","process","WizardPrincipal","setacademica2","arr","filaaqui","isArray","element2","solicitudesDetalle","idperiodo","terminoNombre","seDesvincula","cargaAcademica","cargaAcademica2","validaciones","fin_button","ultimocambio","conteo_total","totalGeneral","labelTotal","id_cargadet","valida_out","cargapolitecnica","cont_A","cont_G","cont_R","cont_P","cont_I","cont_V","cont_MP","cont_MR","total_profesional","isloading","horasLicencia","otrasHoras","sinObservaciones","updateState","finishButtonClick","nextButtonClick","isValidated","calcula_totales","subscription","subscribe","validaValida","cargaupd","cargaupd2","carga2","arr_total","solicitudesUpd","amb","items","cargapaneles","fromGeneral","array","splice","indexOf","suma","suma_carga","carga","grado","postGrado","admisiones","investigacion","vinculos","gestionAcademica","restante","POST_CabValidacion","method","headers","body","responseJson","acti","idact","idmat","POST_detalleValidacion","busca_accion","get_actividad","solicitudes_cargas","acti2","periodopost","POST_detalleValidacion2","strEstado","cargapaneles_out","html","profesional","esCarga","sum","tot_profesional","paneles","stepName","component","stepProps","vinculacion","gestion","observaciones","idCargaDet","contenido","steps","nextButtonText","previousButtonText","finishButtonText","headerTextCenter","validate","navSteps","hideLoading","close","datac","showLoading","renderPanelesDatos","horasTPL","NavLink","sm","aviso","paddingRight","paddingLeft","currentDate","responsePeriodo","responseJsonParametros","responseJsonPeriodo","periodoCompleto","response2","respuesta2","data_json","timerProgressBar","nombre","horasTotal","Counter","currentCount","incrementCounter","aria-live","history","createBrowserHistory","PrivateRoute","rest","render","currentUserValue","casOptions","version","constant","CAS_VERSION_2_0","path","protocol","CasClient","auth","successRes","username","user","idapp","netid","netId","numeroidentificacion","currentPath","catch","errorRes","error","casClient","App","unsubscribe","Provider","exact","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","baseUrl","getElementsByTagName","getAttribute","rootElement","dotenv","ReactDOM","basename","URL","origin","addEventListener","status","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.4b591622.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Cerrar sesion.b92e746b.svg\";","module.exports = __webpack_public_path__ + \"static/media/Logosistema.25f422f7.svg\";","module.exports = __webpack_public_path__ + \"static/media/Enviar(blanco).3b9eea41.svg\";","module.exports = __webpack_public_path__ + \"static/media/Eliminar.78ccbb62.svg\";","module.exports = __webpack_public_path__ + \"static/media/Editar.1a681584.svg\";","import React from 'react';\r\n\r\nexport const AppContext = React.createContext({\r\n currentUser: null,\r\n updateUser: () => { },\r\n});","import React, { Component } from 'react';\r\nimport { AppContext } from './../AppContext';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\nimport logo from './img/svg/Logosistema.svg';\r\n\r\nconst ColoredLine = ({ color }) => (\r\n \r\n);\r\n\r\nexport class NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor (props) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true\r\n };\r\n }\r\n\r\n toggleNavbar () {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n render() {\r\n const currentUser = this.context;\r\n return (\r\n
\r\n \r\n \r\n \"Logo\"\r\n \r\n \r\n
    \r\n {/**/}\r\n {/*Carga Academica*/}\r\n {/* */}\r\n \r\n {currentUser && currentUser.idpersona > 0 ? \r\n
    {currentUser.nombres + \" \" + currentUser.apellidos}
    \r\n : \r\n <>\r\n }\r\n
    \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\nNavMenu.contextType = AppContext;","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from './NavMenu';\r\nimport './NavMenu.css';\r\n\r\nimport logout from './img/svg/Cerrar sesion.svg';\r\n\r\nconst ColoredLine = ({ color }) => (\r\n \r\n);\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name; \r\n render () {\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n\r\n \r\n \r\n

\r\n Escuela Superior Politécnica del Litoral - Campus Gustavo Galindo - Guayaquil - Ecuador\r\n
\r\n © El contenido de esta obra es de propiedad de la ESPOL. Todos los derechos reservados.\r\n
\r\n Prohibida su reproducción total o parcial, comunicación pública o distribución sin autorización previa del titular de los derechos.\r\n

\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { AppContext } from './../AppContext';\r\n\r\nimport \"tailwindcss/tailwind.css\"\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n\r\n render() {\r\n const currentUser = this.context;\r\n console.log(\"Home currentUser = \" + JSON.stringify(currentUser));\r\n return (\r\n
\r\n
\r\n\r\n

Bienvenido al Sistema!

\r\n

Para comenzar debemos ingresar al sistema de autenticacion de ESPOL

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\nHome.contextType = AppContext;","import React, { Component } from 'react';\r\n\r\nexport class FetchData extends Component {\r\n static displayName = FetchData.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { forecasts: [], loading: true };\r\n }\r\n\r\n componentDidMount() {\r\n this.populateWeatherData();\r\n }\r\n\r\n static renderForecastsTable(forecasts) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {forecasts.map(forecast =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
DateTemp. (C)Temp. (F)Summary
{forecast.date}{forecast.temperatureC}{forecast.temperatureF}{forecast.summary}
\r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading\r\n ?

Loading...

\r\n : FetchData.renderForecastsTable(this.state.forecasts);\r\n\r\n return (\r\n
\r\n

Weather forecast

\r\n

This component demonstrates fetching data from the server.

\r\n {contents}\r\n
\r\n );\r\n }\r\n\r\n async populateWeatherData() {\r\n const response = await fetch('weatherforecast');\r\n const data = await response.json();\r\n this.setState({ forecasts: data, loading: false });\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\nimport CasClient, { constant } from \"react-cas-client\";\r\n\r\nconst APP_ID = process.env.REACT_APP_ID;\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nconst currentUser = {\r\n usuario: \"\",\r\n idpersona: 0,\r\n identificacion: \"\",\r\n ultimoCambio: \"\",\r\n apellidos: \"\",\r\n nombres: \"\",\r\n roles: [],\r\n token: \"\"\r\n};\r\n\r\nconst currentUserSubject = new BehaviorSubject(currentUser);\r\n\r\nexport const authenticationService = {\r\n login,\r\n logout,\r\n fetch,\r\n currentUser: currentUserSubject.asObservable(),\r\n get currentUserValue() { return currentUserSubject.value },\r\n};\r\n\r\nfunction login(currentUser) {\r\n //let realFetch = window.fetch;\r\n //window.fetch = function (url, opts = null) {\r\n // console.log(opts)\r\n // const currentUser = currentUserSubject.value;\r\n // console.log(currentUser);\r\n // //console.log(\"*****using custom fetch url = \" + url);\r\n // if (currentUser.token) {\r\n // console.log(\"ENTROO TOKEN\");\r\n // opts = Object.assign({}, opts, { 'headers': { 'Content-Type': 'application/json', 'Authorization': `Bearer ${currentUser.token}` } });\r\n // console.log(opts);\r\n // return realFetch(url, opts);\r\n // } else {\r\n // //console.log(\"[fetch] url: \" + url + \" opts: \" + JSON.stringify(opts));\r\n // return realFetch(url, opts);\r\n // }\r\n //};\r\n currentUserSubject.next(currentUser);\r\n //console.log(\"login update currentUser = \" + JSON.stringify(currentUser));\r\n}\r\n\r\nfunction logout() {\r\n // remove user and go to logout CAS\r\n currentUserSubject.next(null);\r\n window.location.href = \"/Account/Logout\";\r\n}\r\n\r\nfunction fetch() {\r\n let realFetch = window.fetch;\r\n window.fetch = function (url, opts = null) {\r\n const currentUser = currentUserSubject.value;\r\n //console.log(currentUser);\r\n //console.log(\"*****using custom fetch url = \" + url);\r\n if (currentUser.token) {\r\n //console.log(\"ENTROO TOKEN\");\r\n opts = Object.assign({}, opts, { 'headers': { 'Content-Type': 'application/json', 'Authorization': `Bearer ${currentUser.token}` } });\r\n //console.log(opts);\r\n return realFetch(url, opts);\r\n } else {\r\n //console.log(\"[fetch] url: \" + url + \" opts: \" + JSON.stringify(opts));\r\n return realFetch(url, opts);\r\n }\r\n };\r\n}","var _style, _g;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgEditar = function SvgEditar(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 75 75\",\n style: {\n enableBackground: \"new 0 0 75 75\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill:#517ED3;}\\r\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M10.1,5.7V5h1.8v0.6c0,0.3,0.3,0.6,0.6,0.6h0.2c0.3,0,0.6-0.3,0.6-0.6V5h1.8v0.6c0,0.3,0.3,0.6,0.6,0.6H16 c0.3,0,0.6-0.3,0.6-0.6V5H17l1.2,1.2V8h1.3V5.7l-1.9-1.9h-0.9V3.1c0-0.3-0.3-0.6-0.6-0.6h-0.2c-0.3,0-0.6,0.3-0.6,0.6v0.6h-1.8V3.1 c0-0.3-0.3-0.6-0.6-0.6h-0.2c-0.3,0-0.6,0.3-0.6,0.6v0.6h-1.8V3.1c0-0.3-0.3-0.6-0.6-0.6H9.3C9,2.5,8.7,2.8,8.7,3.1v0.6H6.9V3.1 c0-0.3-0.3-0.6-0.6-0.6H6.1c-0.3,0-0.6,0.3-0.6,0.6v0.6h-3v18.7H8l0.3-1.2H3.8V5h1.7v0.6c0,0.3,0.3,0.6,0.6,0.6h0.2 c0.3,0,0.6-0.3,0.6-0.6V5h1.8v0.6C8.7,6,9,6.3,9.3,6.3h0.2C9.8,6.3,10.1,6,10.1,5.7z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M22.1,12l-2-2c-0.5-0.5-1.3-0.5-1.8,0c0,0,0,0,0,0l0,0l-7.3,7.3l-0.1,0.1l-1.3,5l5-1.3l0.5-0.5l0,0l7-7h0 c0,0,0,0,0,0C22.6,13.3,22.6,12.5,22.1,12z M11.4,18l2.8,2.8l-2.6,0.6l-0.8-0.8L11.4,18z M14.7,19l-1.6-1.6l5.2-5.2l1.6,1.6 L14.7,19z\"\n }))));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgEditar, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Editar.1a681584.svg\";\nexport { ForwardRef as ReactComponent };","var _style, _g;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgEliminar = function SvgEliminar(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 55 55\",\n style: {\n enableBackground: \"new 0 0 55 55\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill:#517ED3;}\\r\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"WEVjhE.tif_00000119093438099705827470000010918393551806326179_\",\n transform: \"translate(25.617 0)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_353_00000145025560826413162970000013614652887403010213_\",\n transform: \"translate(0 0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Trazado_614_00000096780090749921391730000014499536755224403095_\",\n className: \"st0\",\n d: \"M-10.9,5.2c1.2-1,2.3-1,3.1-0.2 S-7.1,6.9-8,8.1c0.8,0.8,1.6,1.6,2.4,2.4c0.3,0.2,0.4,0.7,0.2,1c0,0,0,0.1-0.1,0.1c-0.3,0.2-0.6,0.3-0.9,0.3 c-0.1,0-0.3-0.2-0.4-0.3c-2.5-2.5-5.1-5.1-7.6-7.6c-0.4-0.3-0.4-0.8-0.1-1.2c0,0,0,0,0-0.1c0.4-0.3,0.9-0.3,1.3,0.1c0,0,0,0,0,0 C-12.5,3.6-11.7,4.4-10.9,5.2z M-10.2,5.8l1.5,1.5c0.1-0.4,0.4-0.7,0.4-1C-8.4,5.9-8.7,5.7-9,5.5C-9.3,5.5-9.7,5.7-10.2,5.8 L-10.2,5.8z\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_352_00000036213696812891983920000017871333147985398460_\",\n transform: \"translate(0 5.147)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Trazado_615_00000156589798824579660600000012746118145589877683_\",\n className: \"st0\",\n d: \"M-11.5,3.8c-2.6,0-5.1,0-7.7,0 c-0.8-0.1-1.6,0.5-1.7,1.4c0,0.2,0,0.4,0,0.6c0.4,3.4,0.9,6.7,1.3,10.1c0,0.9,0.8,1.6,1.7,1.6c0,0,0,0,0,0c0.8,0,1.6,0,2.4,0 c0.8,0,1.7,0,2.5,0c0.9,0.1,1.7-0.6,1.7-1.5c0,0,0,0,0,0c0.4-3.3,0.9-6.6,1.3-9.9C-9.6,4.5-10.1,3.8-11.5,3.8z M-17.1,15.9 c-0.7,0.1-1.3-0.5-1.4-1.2c0,0,0,0,0,0c-0.4-2.6-0.7-5.2-1.1-7.9c-0.2-0.6,0.2-1.3,0.9-1.5c0.1,0,0.3,0,0.4,0c0.6,0,1.7,0,2.4,0 l0.3,10.6C-15.9,15.9-16.8,15.9-17.1,15.9L-17.1,15.9z M-10.9,6.9c-0.3,2.6-0.7,5.2-1,7.8c0,0.7-0.6,1.2-1.3,1.2c0,0,0,0,0,0 c-0.3,0-1.2,0-1.6,0l0.3-10.6c0.6,0,1.7,0,2.3,0C-11.2,5.3-10.7,5.8-10.9,6.9L-10.9,6.9z\"\n }))))));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgEliminar, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Eliminar.78ccbb62.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n \r\nexport class Solicitud_materia extends Component {\r\n static displayName = Solicitud_materia.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\", loading: false, loading2: false\r\n };\r\n this.onInputChange = this.onInputChange.bind(this); \r\n this.agregarSolicitud = this.agregarSolicitud.bind(this);\r\n this.onChangeValue = this.onChangeValue.bind(this);\r\n this.onChangeRadioAcciones = this.onChangeRadioAcciones.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n onChangeValue(event) { \r\n this.setState({\r\n accion: event.target.value,\r\n });\r\n }\r\n\r\n // funcion para los radio buttons de update delete\r\n onChangeRadioAcciones(text) {\r\n //console.log(\"onChangeRadioAcciones: \", text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n\r\n onInputChange(event) {\r\n var control = event.target.name;\r\n if (control === \"review\") {\r\n var value = this.state.observacion;\r\n value = event.target.value.toUpperCase();\r\n this.setState({\r\n observacion: value\r\n });\r\n } \r\n //this.props.updatestate_mat(this.props.idcurso, this.state.observacion, this.state.termino, this.state.accion)\r\n }\r\n \r\n agregarSolicitud(event) { \r\n event.preventDefault();\r\n if (this.state.observacion != \"\" && this.state.accion != \"\") {\r\n\r\n this.props.updatestate(this.props.rowIndex, this.props.idcurso,\r\n this.props.descripcion, this.state.observacion,\r\n this.props.anio, this.props.termino, this.props.totalhoras,\r\n this.state.accion, this.props.idUnico)\r\n\r\n this.props.closeExpandxId(this.props.idcurso)\r\n\r\n Swal.fire({\r\n title: 'Hecho!',\r\n text: 'Asignatura agregada exitosamente',\r\n icon: 'success',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n } else {\r\n\r\n Swal.fire({\r\n title: 'ERROR!',\r\n text: 'Debes llenar los campos observación y escoger acción',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n }\r\n\r\n\r\n }\r\n handlkeyPress(evento) {\r\n // console.log(String.fromCharCode(event.keyCode));\r\n let tecla = evento.which;\r\n let caracter = String.fromCharCode(tecla)\r\n let regex = new RegExp(\"^[A-Za-z0-9 ,.]+$\");\r\n\r\n\r\n if (!regex.test(caracter)) {\r\n\r\n Swal.fire({\r\n title: 'Lo sentimos!',\r\n text: 'El campo de observación no permite caracteres especiales.',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n\r\n return false;\r\n }\r\n\r\n }\r\n\r\n render() {\r\n\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '10px',\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
AsignaturaParaleloObservación PeriodoAcciones
{this.props.descripcion}\r\n {this.props.paralelo}\r\n \r\n {this.props.termino}\r\n \r\n\r\n
{/*onChange={this.onChangeValue}*/}\r\n\r\n
    \r\n
  • {/*onClick={() => this.handleClick(\"Modificar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Modificar Carga\") }} />Modificar\r\n\r\n {/* this.handleClick(\"Modificar Carga\")} title=\"Modificar Carga\" style={this.state.accion === \"Modificar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Modificar*/}\r\n
  • \r\n
  • {/*onClick={() => this.handleClick(\"Eliminar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Eliminar Carga\") }} />Eliminar\r\n\r\n {/* this.handleClick(\"Eliminar Carga\")} title=\"Eliminar Carga\" style={this.state.accion === \"Eliminar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Eliminar*/}\r\n
  • \r\n
\r\n\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n}","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n\r\n\r\nfunction color_head_resumen(tipo) {\r\n if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '5%'\r\n };\r\n } else if (tipo == 'dyo') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '45%'\r\n }\r\n } else if (tipo == 'h') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n }\r\n}\r\n\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nexport class Resumen_Observaciones extends Component {\r\n static displayName = Resumen_Observaciones.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n solicitudes: [], accion: \"\",loading: false, loading2: false\r\n }; \r\n }\r\n\r\n componentDidMount() { \r\n this.setState({\r\n solicitudes:this.props.solicitudes,\r\n }) \r\n }\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n let radios = this.get_radios(this.props.termino1, this.props.termino2, this.props.termino3, this.props.anio);\r\n let dato = this.props.solicitudes.filter(x => x.ambito == 'M|R')\r\n let titulo =\"\"\r\n if (this.props.tipoactividad === 'R') {\r\n titulo = \"DOCENCIA DE GRADO\"\r\n } else if (this.props.tipoactividad === 'P') {\r\n titulo = \"DOCENCIA DE POSTGRADO\"\r\n } else if (this.props.tipoactividad === 'I') {\r\n titulo = \"INVESTIGACIÓN\"\r\n } else if (this.props.tipoactividad === 'V') {\r\n titulo = \"VINCULACIÓN\"\r\n } else if (this.props.tipoactividad === 'G') {\r\n titulo = \"GESTIÓN ACADÉMICA\"\r\n } else {\r\n titulo = \"DOCENCIA DE ADMISIÓN\"\r\n }\r\n\r\n const columns_resumen = [{\r\n dataField: 'id',\r\n text: '#',\r\n\r\n headerStyle: color_head_resumen('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_resumen('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_resumen('dyo'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head_resumen('h'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n //if (row.pao2 == \"2\" && row.pao1 == \"1\" && row.pae == \"0\") {\r\n // return (\r\n // <> PAE {row.anio}
PAO {row.anio}-1
PAO {row.anio}-2\r\n // )\r\n //}\r\n //else if (row.pae1 == \"1\") {\r\n // if (row.pae1 == \"1\" && row.pae == \"0\") {\r\n // return (\r\n // <>PAO {row.anio}-1
PAE {row.anio}\r\n // );\r\n // } else if (row.pao2 == \"2\" && row.pao1 == \"1\") {\r\n // return (\r\n // <>PAO {row.anio}-1
PAO {row.anio}-2\r\n // );\r\n // } else {\r\n // return (\r\n // <>PAO {row.anio}-1\r\n // );\r\n // }\r\n //} else if (row.pao2 == \"2\") {\r\n // if (row.pao2 == \"2\" && row.pao1 == \"1\") {\r\n // return (\r\n // <>PAO {row.anio}-1
PAO {row.anio}-2\r\n // );\r\n\r\n // } else if (row.pao2 == \"2\" && row.pae == \"0\") {\r\n // return (\r\n // <>PAO {row.anio}-2
PAE {row.anio}\r\n // );\r\n // }\r\n // return (\r\n // <>PAO {row.anio}-2\r\n // );\r\n //} else if (row.pae == \"0\") {\r\n // if (row.pae == \"0\" && row.pao1 == \"1\") {\r\n // return (\r\n // <>PAE {row.anio}
PAO {row.anio}-1\r\n // );\r\n\r\n // } else if (row.pae == \"0\" && row.pao2 == \"2\") {\r\n // return (\r\n // <>PAE {row.anio}
PAO {row.anio}-2\r\n // );\r\n // }\r\n // return (\r\n // <>PAE {row.anio}\r\n // );\r\n //} else {\r\n // return (\r\n // <> {row.termino}\r\n // );\r\n //}\r\n if (row.ambito.split('|')[0] == 'A') {\r\n return (\r\n <> {row.termino.replace(' ','\\n')}\r\n );\r\n }\r\n \r\n else {\r\n return (\r\n <> {row.termino}\r\n );\r\n }\r\n\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head_resumen(''),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'accion',\r\n text: 'Acción',\r\n headerStyle: color_head_resumen('h'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {row.accion.toUpperCase()}\r\n
\r\n )\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'observacion',\r\n text: 'Observación',\r\n headerStyle: color_head_resumen('dyo'),\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n { row.observacion.toUpperCase()}\r\n
\r\n )\r\n },\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }\r\n ];\r\n // console.log(this.props)\r\n return (\r\n
\r\n \r\n \r\n

RESUMEN DE OBSERVACIONES DEL ÁMBITO { titulo }

\r\n \r\n
\r\n \r\n
\r\n {this.props.solicitudes && this.props.solicitudes.length > 0 ?\r\n x.ambito == 'M|' + this.props.tipoactividad || x.ambito == 'A|' + this.props.tipoactividad)}\r\n columns={columns_resumen}\r\n bordered={false}\r\n /> : null\r\n }\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport Swal from 'sweetalert2'\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n} \r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\nfunction PaoFormatter(cell, row) {\r\n switch (row.termino) {\r\n case \"1ER TERMINO\":\r\n return (\r\n PAO-1\r\n );\r\n break;\r\n case \"2DO TERMINO\":\r\n return (\r\n PAO-2\r\n );\r\n break;\r\n case \"3ER TERMINO\":\r\n return (\r\n PAE\r\n );\r\n break;\r\n default:\r\n return (\r\n {cell}\r\n );\r\n break;\r\n }\r\n}\r\n\r\n\r\nexport class Admision extends Component {\r\n static displayName = Admision.name;\r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [],busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, total: 0, selectact: \"\", selectidact: \"\", abierto: false,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n anio: props.anio, terminoPeriodo: props.terminoPeriodo, idpersona: props.idprof, actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\", expanded_mat: [],\r\n fila_mat: [], selectact: \"\", selectidact: \"\", abierto: false, valida_next: false, valida_next: false, solicitudes_act: []\r\n };\r\n\r\n\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.isValidated_all = this.isValidated_all.bind(this);\r\n \r\n this.closeExpandxId_mat = this.closeExpandxId_mat.bind(this);\r\n this.updatestate_mat = this.updatestate_mat.bind(this);\r\n\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n }\r\n\r\n setconteo_final(tam) {\r\n //console.log('setconteo final en docencia de grado')\r\n //console.log(tam)\r\n this.props.setconteo_final(tam, 'A')\r\n }\r\n\r\n componentDidMount() {\r\n let solicitudes = this.props.getSolicitudes('')\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n if (this.state.anio > 0) { \r\n this.populateMateriasData(this.props.idprof, this.props.anio);\r\n this.populateActividadesCombo(this.props.idprof, this.props.anio);\r\n }\r\n }\r\n\r\n closeExpandxId_mat(idcurso) {\r\n //console.log('DENTRO DE EXPALNDID')\r\n\r\n //console.log(idcurso)\r\n //console.log(this.state.expanded_mat)\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n }\r\n updatestate_mat(rowIndex,idcurso, descripcion, observacion, anio, termino, totalhoras, accion, idUnico) {\r\n var solicitudes = this.state.solicitudes\r\n\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, totalhoras: totalhoras, termino: termino, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n //console.log('Admision: ')\r\n //console.log(JSON.stringify(solicitudes))\r\n //this.isValidated_all(this.states.fila_mat.length)\r\n this.props.update({ ambito: 'M|A', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'AD', totalhoras: totalhoras, termino: termino, accion: accion, idUnico: idUnico})\r\n //console.log(JSON.stringify(this.state.solicitudes))\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n const check = document.getElementsByName(\"all_admi\");\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n if (this.state.fila_mat[i].validacion === 'no') {\r\n this.state.fila_mat[i].validacion = 'si'\r\n return this.state.fila_mat[i];\r\n }\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n } else {\r\n this.mensaje_afirma(idactividad)\r\n }\r\n this.props.setconteo_final(this.state.fila_mat);\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n //console.log('MATERIA:' + idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila_mat);\r\n\r\n this.props.setconteo_final(this.state.fila_mat);\r\n if (!this.state.valida_next) {\r\n this.isValidated_all(this.state.fila_mat.length);\r\n }\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n }));\r\n //console.log(this.state.expanded_mat);\r\n this.props.setconteo_final(filas);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n this.state.materias.forEach((element) => {\r\n if (element.termino === \"3\") {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCurso)) {\r\n expandir.push(element.idCurso);\r\n }\r\n } else {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n\r\n } else {\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCurso)) {\r\n expandir.push(element.idCurso);\r\n }\r\n });\r\n }\r\n\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n //console.log('MATERIA:' + this.state.materias);\r\n this.props.setconteo_final(filas);\r\n this.handleAllCheck_mat();\r\n }\r\n\r\n handleAllCheck_mat() {\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n const check = document.getElementsByName(\"all_admi\");\r\n const checkSin = document.getElementById(\"Materias_admi\").getElementsByClassName('form-check-input');\r\n //console.log('MATERIA:' + check);\r\n //console.log('MATERIA:' + checkSin);\r\n if (check[0].checked) {\r\n //console.log('MATERIA:' + 'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n //console.log('MATERIA:' + chec);\r\n if (!this.state.valida_next) {\r\n this.isValidated_all(chec);\r\n }\r\n } else {\r\n //console.log('NO A TODO CKICKK EN MATERIAS');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"0\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"0\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n if (!this.state.valida_next) {\r\n this.isValidated_all(chec);\r\n }\r\n }\r\n }\r\n \r\n isValidated_all(tam) {\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n\r\n // btnchecknext.disabled = true;\r\n //console.log('MATERIAS--->ES IGUAL: ' + tam + ' === ' + this.state.materias.length)\r\n if (tam >= this.state.materias.length) {\r\n //console.log('--->desbloquea siguiente ambito')\r\n // btnchecknext.disabled = false;\r\n this.setState({\r\n valida_next: true\r\n })\r\n //console.log('verifica vliidanext:' + this.state.valida_next)\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n\r\n }\r\n }\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n mensaje_afirma(idcurso) {\r\n\r\n Swal.fire({\r\n title: '¿Está seguro de cambiar?',\r\n text: \"Usted podría perder la selección y los datos ingresados de esta observación\", \r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, cambiar selección.',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n\r\n this.props.setSolicitudes(0, idcurso)\r\n //Swal.fire({\r\n // icon: 'success',\r\n // text: 'Tu solicitud de Asignatura/Actividad ha sido eliminada',\r\n // title: 'Eliminado',\r\n // showConfirmButton: false,\r\n // timer: 1500\r\n //})\r\n } else {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idcurso) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n const checksi = document.getElementById(\"ch1_\" + idcurso);\r\n const checkno = document.getElementById(\"ch2_\" + idcurso);\r\n //console.log('NO de mensaje afirma')\r\n checksi.checked = false;\r\n checkno.checked = true;\r\n }\r\n })\r\n }\r\n renderMateriasTable(materias) {\r\n\r\n const columns_materias = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },{\r\n dataField: 'idCurso',\r\n text: 'Codigo',\r\n hidden:true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nombreMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('m'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: PaoFormatter,\r\n footer: 'Subtotal: '\r\n },\r\n {\r\n dataField: 'anio',\r\n text: 'Anio',\r\n hidden:true,\r\n },\r\n {\r\n dataField: 'horasTotales',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<>{total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n },\r\n {\r\n dataField: 'conformidad',\r\n text: 'Validada',\r\n isDummyField: true,\r\n headerFormatter: (column, colIndex) => {\r\n return (\r\n
\r\n Validar
Seleccionar todo\r\n
\r\n Si \r\n No\r\n\r\n
\r\n
\r\n\r\n )\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n
\r\n this.handleHideClick_mat(row.idCurso)}\r\n disabled={this.state.terminoPeriodo === \"2S\" && row.termino !== \"3\"}\r\n />Si \r\n this.handleShowClick_mat(row.idCurso)}\r\n disabled={this.state.terminoPeriodo === \"2S\" && row.termino !== \"3\"}\r\n />No\r\n
\r\n
\r\n // BLOQUEAR PAE en PAO1: (this.state.terminoPeriodo === \"1S\" && row.termino === \"1\") || (this.state.terminoPeriodo === \"2S\" && row.termino !== \"3\")\r\n );\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n }\r\n }];\r\n\r\n const expandRow2 = {\r\n onlyOneExpanding: true,\r\n expanded: this.state.expanded_mat,\r\n expandByColumnOnly: true,\r\n renderer: (row, rowIndex) => (\r\n
\r\n \r\n
\r\n )\r\n };\r\n\r\n return (\r\n \r\n );\r\n\r\n }\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n renderTotal() {\r\n const totalpepa = this.props.cargaMat ? this.props.cargaMat.map(horastot2 => horastot2.horasTotales).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = this.formatter(totalpepa);\r\n\r\n return (\r\n
\r\n
Total de Ámbito de Docencia de Admisión: {talambito} horas
\r\n
\r\n )\r\n }\r\n render() { \r\n\r\n let contents_mat = this.renderMateriasTable(this.state.materias);\r\n let total = this.renderTotal()\r\n\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n\r\n if (this.state.valida_next) {\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n //if (btnchecknext != undefined) {\r\n // btnchecknext.disabled = false;\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n //}\r\n }\r\n\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n {contents_mat}\r\n {total}\r\n
\r\n );\r\n }\r\n \r\n //OJO AQUi se usa la cedula \r\n async populateMateriasData(idpersona, anio) {\r\n\r\n const respuesta = this.props.cargaMat;\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idCurso, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|A', idactividad: act.idCurso }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'M|A', idactividad: act.idCurso, anio: act.anio, descripcion: act.nombreMateria, periodo: act.termino, accion: '', observacion: '', totalhoras: act.horasTotales, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2, 'M|A');\r\n }\r\n\r\n \r\n this.setState({ materia_elegida: selected, materias: data, loading: false }, () => {\r\n // AGREGAR MATERIAS VALIDADAS EN 1S\r\n //console.log(\"materias admisiones: \", this.state.materias);\r\n\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n\r\n var checkSin = document.getElementById(\"Materias_admi\").getElementsByClassName('form-check-input');\r\n\r\n this.state.materias.map((item, index) => {\r\n if (item.termino.trim() === \"1\" || item.termino.trim() === \"2\") {\r\n //console.log(\"termino != 2S: \", item);\r\n\r\n var checkNeeded = checkSin[\"ch1_\" + item.idCurso];\r\n checkNeeded.checked = true;\r\n\r\n this.state.fila_mat.push({\r\n idactividad: item.idCurso,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n this.props.setconteo_final(this.state.fila_mat);\r\n }\r\n });\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL+'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\"; \r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nexport class Nueva_actividad extends Component {\r\n static displayName = Nueva_actividad.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino: \"\", termino1: false, termino2: false, termino3: false, periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, termino: \"\", observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\", loading: false, abierto: false,\r\n selectidact: \"\", selectact: \"\", observacion: \"\", periodo: \"\", anio: \"\", actividades_combo: [], actividades: [], tipoactividad: \"\",\r\n ambito: ''\r\n };\r\n\r\n this.onChange = this.onChange.bind(this);\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.populateActividadesCombo = this.populateActividadesCombo.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let tipo = this.props.tipoactividad\r\n let tipoact = \"\"\r\n let consulta = ''\r\n if (tipo === 'A|R') {\r\n tipoact = 'Docencia Grado'\r\n consulta = 'R'\r\n } else if (tipo === 'A|P') {\r\n tipoact = 'Docencia PostGrado'\r\n consulta = 'R'\r\n } else if (tipo === 'A|I') {\r\n tipoact = 'Investigación'\r\n consulta = 'I'\r\n } else if (tipo === 'A|V') {\r\n tipoact = 'Vinculación'\r\n consulta = 'V'\r\n } else if (tipo === 'A|G') {\r\n tipoact = 'Gestión Académica'\r\n consulta = 'A'\r\n } else {\r\n tipoact = 'Seleccionar Ámbito'\r\n consulta = 'R'\r\n }\r\n this.setState({\r\n actividades: this.props.actividades_combo,\r\n actividades_combo: this.props.actividades_combo,\r\n abierto: this.props.abierto,\r\n tipoactividad: tipo\r\n\r\n })\r\n\r\n this.populateActividadesCombo(consulta)\r\n //console.log(this.state.termino)\r\n }\r\n\r\n\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n //handleSearch(event) {\r\n // this.setState({ observacion: event.target.value.toUpperCase() });\r\n // //console.log(this.state.observacion);\r\n //}\r\n\r\n\r\n handleSearch(event) {\r\n var control = event.target.name;\r\n if (control === \"txObservacion\") {\r\n var value = this.state.observacion;\r\n value = event.target.value.toUpperCase();\r\n this.setState({\r\n observacion: value\r\n });\r\n }\r\n //this.props.updatestate_mat(this.props.idcurso, this.state.observacion, this.state.termino, this.state.accion)\r\n }\r\n\r\n\r\n onChange(event) {\r\n let tipo = event.target.value\r\n let tipoact = ''\r\n let consulta = ''\r\n if (tipo === 'A|R') {\r\n tipoact = 'Docencia Grado'\r\n consulta = 'R'\r\n } else if (tipo === 'A|P') {\r\n tipoact = 'Docencia PostGrado'\r\n consulta = 'R'\r\n } else if (tipo === 'A|I') {\r\n tipoact = 'Investigación'\r\n consulta = 'I'\r\n } else if (tipo === 'A|V') {\r\n tipoact = 'Vinculación'\r\n consulta = 'V'\r\n } else if (tipo === 'A|G') {\r\n tipoact = 'Gestión Académica'\r\n consulta = 'A'\r\n } else {\r\n tipoact = 'Seleccionar Ámbito'\r\n }\r\n\r\n\r\n this.setState({\r\n ambito: consulta,\r\n tipoactividad: tipo\r\n })\r\n this.populateActividadesCombo(consulta)\r\n }\r\n\r\n onChangePao(event) {\r\n //console.log('CLICK EN->' + event.target.value)\r\n //console.log('ESTADO DE Checked->' + event.target.checked)\r\n if (event.target.value == 1) {\r\n this.setState({\r\n termino1: event.target.checked ? true : false\r\n })\r\n }\r\n\r\n if (event.target.value == 2) {\r\n this.setState({\r\n termino2: event.target.checked ? true : false\r\n })\r\n }\r\n\r\n if (event.target.value == 0) {\r\n this.setState({\r\n termino3: event.target.checked ? true : false\r\n })\r\n }\r\n\r\n }\r\n\r\n //por programar\r\n handleNew(e) {\r\n //console.log(\"observacion: \", this.state.observacion.trim());\r\n //console.log(\"selectidact: \", this.state.selectidact);\r\n\r\n //console.log(\"termino1: \", this.state.termino1);\r\n //console.log(\"termino2: \", this.state.termino2);\r\n //console.log(\"termino2: \", this.state.termino3);\r\n\r\n if (this.state.observacion.trim() != \"\" && this.state.selectidact != \"\" && (this.state.termino1 || this.state.termino2||this.state.termino3)) {\r\n let d1 = this.state.termino1 ? 'PAO ' + this.props.anio + '-1' : '';\r\n let d2 = this.state.termino2 ? 'PAO ' + this.props.anio + '-2' : '';\r\n let d3 = this.state.termino3 ? 'PAE ' + this.props.anio : '';\r\n let termino = d3 + ' ' + d1 + ' ' + d2;\r\n this.props.updatestate(-1, this.state.selectidact, this.state.selectact, '', this.props.anio, termino, this.state.tipoactividad, this.state.observacion, termino, termino, termino, 'Nueva Carga');\r\n \r\n //console.log('NUEVOOO' + '|' + this.state.selectidact + '|' + this.state.selectact + '|' + this.props.anio + '|' + this.state.periodo + 'A|V' + this.state.observacion + '|' + termino + '|' + termino + '|' + termino + '|' + 'Nueva Carga')\r\n this.props.toggle();\r\n Swal.fire({\r\n title: 'Hecho!',\r\n text: 'Actividad agregada exitosamente',\r\n icon: 'success',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n });\r\n this.setState({ selectidact: \"\", periodo: \"\", observacion: \"\", termino1: false, termino2: false, termino3: false});\r\n } else {\r\n Swal.fire({\r\n title: 'ERROR!',\r\n text: 'Debes llenar todo los campos solicitados',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n });\r\n } \r\n }\r\n \r\n\r\n handlkeyPress(evento) {\r\n // console.log(String.fromCharCode(event.keyCode));\r\n let tecla = evento.which;\r\n let caracter = String.fromCharCode(tecla)\r\n let regex = new RegExp(\"^[A-Za-z0-9 ,.]+$\");\r\n\r\n\r\n if (!regex.test(caracter)) {\r\n\r\n Swal.fire({\r\n title: 'Lo sentimos!',\r\n text: 'El campo de observación no permite caracteres especiales.',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n\r\n return false;\r\n }\r\n\r\n }\r\n\r\n render() {\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n // console.log(this.props)\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Ámbito
\r\n \r\n\r\n \r\n \r\n Actividad
\r\n\r\n \r\n \r\n \r\n
\r\n Periodo
\r\n {(this.props.terminoPeriodo === \"0S\" || this.props.terminoPeriodo === \"1S\") && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n {(this.props.terminoPeriodo === \"0S\" || this.props.terminoPeriodo === \"1S\") && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n
\r\n {/*
*/}\r\n {/* PAE*/}\r\n {/* PAO-1*/}\r\n {/* PAO-2*/}\r\n {/*
*/}\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n Observación
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n
\r\n );\r\n }\r\n\r\n async populateActividadesCombo(ambito) {\r\n const response = await fetch(API_URL + 'TblActividades/' + this.props.anio + '/'+ambito+'/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2';\r\n\r\nfunction PaoFormatter(anio, termino1, termino2, termino3) {\r\n if (termino1 === \"1\") {\r\n return <>PAO {anio}-1\r\n\r\n } else if (termino2 === \"2\") {\r\n return <>PAO {anio}-2\r\n\r\n } else if (termino3 === \"0\") {\r\n return <>PAE {anio}\r\n }\r\n}\r\n\r\nexport class Solicitud_actividad extends Component {\r\n static displayName = Solicitud_actividad.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino: \"\", termino1: false, termino2: false, termino3: false, periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, termino: \"\",periodos:\"\", observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\",loading: false, loading2: false, idUnico: this.props.idUnico ?? \"\"\r\n };\r\n this.onInputChange = this.onInputChange.bind(this); \r\n this.agregarSolicitud = this.agregarSolicitud.bind(this);\r\n this.onChangeValue = this.onChangeValue.bind(this);\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.onChangeRadioAcciones = this.onChangeRadioAcciones.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n var termino1 = this.props.termino1 === \"1\" ? true : false;\r\n var termino2 = this.props.termino2 === \"2\" ? true : false;\r\n var termino3 = this.props.termino3 === \"0\" ? true : false;\r\n this.setState({\r\n //termino: this.get_radios(this.props.pao1, this.props.pao2, this.props.pae, this.props.anio),\r\n observacion: this.props.observacion, termino1: termino1, termino2: termino2, termino3: termino3\r\n }); \r\n //console.log(this.state.termino)\r\n }\r\n\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n //console.log('handleClick: ', text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n onChangeValue(event) {\r\n //console.log(\"onChangeValue: \", event.target.value);\r\n var textAc = \"\";\r\n if (event.target.value === 0) {\r\n textAc = \"Modificar Carga\";\r\n } else if (event.target.value === 1) {\r\n textAc = \"Eliminar Carga\";\r\n }\r\n this.setState({\r\n //accion: event.target.value,\r\n accion: textAc,\r\n });\r\n }\r\n\r\n // funcion para los radio buttons de update delete\r\n onChangeRadioAcciones(text) {\r\n //console.log(\"onChangeRadioAcciones: \", text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n\r\n onChangePao(event) {\r\n //console.log('CLICK EN->' + event.target.value)\r\n //console.log('ESTADO DE Checked->' + event.target.checked)\r\n if (event.target.value == 1) {\r\n this.setState({\r\n termino1: event.target.checked ? true : false\r\n })\r\n }\r\n\r\n if (event.target.value == 2) {\r\n this.setState({\r\n termino2: event.target.checked ? true : false\r\n })\r\n }\r\n\r\n if (event.target.value == 0) {\r\n this.setState({\r\n termino3: event.target.checked ? true : false\r\n })\r\n }\r\n \r\n }\r\n onInputChange(event) {\r\n //console.log(JSON.stringify(event.target.name))\r\n var control = event.target.name;\r\n if (control === \"review\") {\r\n //var value = this.state.observacion;\r\n var value = event.target.value.toUpperCase();\r\n this.setState({\r\n observacion: value\r\n });\r\n }\r\n else if (control === \"inlineRadioOptions\") {\r\n var value = event.target.value;\r\n\r\n this.setState({\r\n pao1: value == 1 ? \"1\" : \"\",\r\n pao2: value == 2 ? \"2\" : \"\",\r\n pa3: value == 3 ? \"3\" : \"\"\r\n });\r\n } else if (control === \"inlineRadioAction\") {\r\n var value = event.target.value;\r\n this.setState({\r\n accion: value,\r\n });\r\n }\r\n }\r\n \r\n agregarSolicitud(event) { \r\n event.preventDefault();\r\n \r\n if ((this.state.observacion !== \"\" && this.state.observacion !== undefined && this.state.observacion !== null) && this.state.accion !== \"\" && (this.state.termino1 || this.state.termino2 || this.state.termino3)) {\r\n let d1 = this.state.termino1 ? 'PAO ' + this.props.anio + '-1' : ''\r\n let d2 = this.state.termino2 ? 'PAO ' + this.props.anio + '-2' : '' \r\n let d3 = this.state.termino3 ? 'PAE ' + this.props.anio : '';\r\n let terminoeval = d3 + ' ' + d1 + ' ' + d2\r\n\r\n Swal.fire({\r\n title: 'Hecho!',\r\n text: 'Actividad agregada exitosamente',\r\n icon: 'success',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n\r\n })\r\n this.setState({ termino1: false, termino2: false, termino3: false });\r\n //console.log('AGREEGANDO SOLICITUD[EXPAND]: ' + this.props.idactividad + '|' + this.props.descripcion + '|' + this.props.totalhoras + '|' + this.props.anio + '|' + terminoeval+'|'+ this.props.tipoactividad+'|'+ this.state.observacion+'|'+ this.props.termino1+'|'+ this.props.termino2+'|'+ this.props.termino3+'|'+ this.state.accion)\r\n this.props.updatestate(this.props.rowIndex, this.props.idactividad, this.props.descripcion, this.props.totalhoras, this.props.anio, terminoeval, this.props.tipoactividad, this.state.observacion, this.props.termino1, this.props.termino2, this.props.termino3, this.state.accion, this.props.idUnico)\r\n this.props.closeExpandxId(this.props.idUnico)\r\n\r\n\r\n } else {\r\n\r\n Swal.fire({\r\n title: 'ERROR!',\r\n text: 'Debes llenar los campos observación, periodo y escoger acción',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n }\r\n }\r\n handlkeyPress(evento) {\r\n // console.log(String.fromCharCode(event.keyCode));\r\n let tecla = evento.which;\r\n let caracter = String.fromCharCode(tecla)\r\n let regex = new RegExp(\"^[A-Za-z0-9 ,.]+$\");\r\n\r\n\r\n if (!regex.test(caracter)) {\r\n\r\n Swal.fire({\r\n title: 'Lo sentimos!',\r\n text: 'El campo de observación no permite caracteres especiales.',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n \r\n return false;\r\n }\r\n\r\n }\r\n render() {\r\n var terminoText = PaoFormatter(this.props.anio, this.props.termino1, this.props.termino2, this.props.termino3);\r\n \r\n // console.log(this.props)\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ActividadObservación Periodo Acciones
{this.props.descripcion}\r\n {terminoText}\r\n {/*
*/}\r\n {/*
*/}\r\n {/* PAO {this.props.anio}-1
*/}\r\n {/* PAO {this.props.anio}-2
*/}\r\n {/* PAE {this.props.anio}*/}\r\n {/*
*/}\r\n {/*
*/}\r\n
\r\n
{/*onChange={this.onChangeValue}*/}\r\n
    \r\n
  • {/*onClick={() => this.handleClick(\"Modificar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Modificar Carga\") }} />Modificar\r\n {/**/}\r\n\r\n {/* this.handleClick(\"Modificar Carga\")} title=\"Modificar Carga\" style={this.state.accion === \"Modificar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Modificar*/}\r\n
  • \r\n
  • {/*onClick={() => this.handleClick(\"Eliminar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Eliminar Carga\") }} />Eliminar\r\n {/**/}\r\n\r\n {/* this.handleClick(\"Eliminar Carga\")} title=\"Eliminar Carga\" style={this.state.accion === \"Eliminar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Eliminar*/}\r\n
  • \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Solicitud_actividad } from './../expand/Solicitud_actividad';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport crear from './../../img/svg/Nueva.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n\r\n\r\n//Funcion para colocar color a las headers la tabla\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\n\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '10%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nexport class Tabla_Actividades extends Component {\r\n static displayName = Tabla_Actividades.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n solicitudes: [], accion: \"\", loading: false, loading2: false, \r\n actividades: [], solicitudes: [], busqueda: \"\", solicitudes: [], actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: \"\", descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\", idUnico: \"\"\r\n }, anio: props.anio,\r\n fila: [], fila_mat: [], actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], expanded: [], expanded_mat: [], valida_next: false\r\n };\r\n\r\n this.closeExpandxId = this.closeExpandxId.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n actividades: this.props.actividades,\r\n anio: this.props.anio,\r\n tipoactividad: this.props.tipoactividad,\r\n }, () => {\r\n\r\n // AGREGAR ACTIVIDADES VALIDADAS EN 1S\r\n //console.log(\"actividades \" + this.props.tipoactividad + \": \", this.props.actividades);\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n\r\n var checkSin = undefined;\r\n\r\n if (this.props.actividades.length > 0) {\r\n checkSin = document.getElementById(\"Actividades_\" + this.props.tipoactividad).getElementsByClassName('form-check-input');\r\n //console.log(\"checkSin \" + this.props.tipoactividad + \": \", checkSin);\r\n //console.log(\"checkSin \" + this.props.tipoactividad + \" length: \", checkSin.length);\r\n }\r\n\r\n this.props.actividades.map((item, index) => {\r\n if (item.termino1 === \"1\" || item.termino3 === \"0\") {\r\n //console.log(\"termino != 2S: \", item);\r\n\r\n if (this.props.actividades.length > 0) {\r\n //var checkNeeded = checkSin[\"ch1_\" + item.idUnico];\r\n //checkNeeded.checked = true;\r\n }\r\n\r\n this.state.fila.push({\r\n idUnico: item.idUnico,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n this.props.setconteo_final(this.state.fila);\r\n }\r\n });\r\n }\r\n\r\n /////FUNCIONES para interactuar los expand ACtividades\r\n closeExpandxId(idactividad) {\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n }\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n /////FUNCIONES para interactuar con los si/no de ACtividades\r\n handleHideClick = (idactividad) => {\r\n const check = document.getElementsByName(\"all_\" +this.props.tipoactividad);\r\n check[0].checked = false;\r\n check[1].checked = false; \r\n \r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idUnico === idactividad) {\r\n if (this.state.fila[i].validacion === 'no') { \r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i]; \r\n\r\n }\r\n }\r\n }); \r\n if (obj == null) { \r\n this.state.fila.push({\r\n idUnico: idactividad,\r\n validacion: 'si'\r\n })\r\n } else { \r\n this.mensaje_afirma(idactividad)\r\n }\r\n this.props.setconteo_final(this.state.fila);\r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n const check = document.getElementsByName(\"all_\" + this.props.tipoactividad);\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idUnico === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idUnico: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n if (!this.props.valida_next) {\r\n this.isValidated_all( this.state.fila.length);\r\n }\r\n\r\n this.props.setconteo_final(this.state.fila)\r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.props.actividades.forEach((element) => {\r\n // COMENTADO SBRODRIG\r\n //filas.push({\r\n // idactividad: element.idUnico,\r\n // validacion: 'si'\r\n //});\r\n\r\n filas.push({\r\n idUnico: element.idUnico,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n\r\n this.props.setconteo_final(filas);\r\n this.handleAllCheck();\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n this.props.actividades.forEach((element) => {\r\n if (element.termino2 === \"2\") {\r\n filas.push({\r\n idUnico: element.idUnico,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idUnico)) {\r\n expandir.push(element.idUnico);\r\n }\r\n } else {\r\n filas.push({\r\n idUnico: element.idUnico,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n } else {\r\n this.props.actividades.forEach((element) => {\r\n filas.push({\r\n idUnico: element.idUnico,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idUnico)) {\r\n expandir.push(element.idUnico);\r\n }\r\n });\r\n }\r\n \r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n this.props.setconteo_final(filas);\r\n this.handleAllCheck();\r\n }\r\n\r\n isValidated_all(tam, tam2) {\r\n //seteando la fila en el padre\r\n this.props.setfila(tam2);\r\n\r\n }\r\n\r\n handleAllCheck() {\r\n const check = document.getElementsByName(\"all_\" + this.props.tipoactividad );\r\n const checkSin = document.getElementById(\"Actividades_\" + this.props.tipoactividad ).getElementsByClassName('form-check-input');\r\n \r\n if (check[0].checked) {\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"1\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n\r\n } else {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n \r\n if (!this.props.valida_next) {\r\n this.isValidated_all( chec);\r\n }\r\n\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"0\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"0\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1;\r\n\r\n if (!this.props.valida_next) {\r\n this.isValidated_all( chec);\r\n }\r\n }\r\n }\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n\r\n mensaje_afirma(idactividad) {\r\n\r\n Swal.fire({\r\n title: '¿Está seguro de cambiar?',\r\n text: \"Usted podría perder la selección y los datos ingresados de esta observación\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, cambiar selección.',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n\r\n this.props.setSolicitudes(0, idactividad)\r\n } else {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idUnico === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i]; \r\n }\r\n });\r\n const checksi = document.getElementById(\"ch1_\" + idactividad);\r\n const checkno = document.getElementById(\"ch2_\" + idactividad);\r\n //console.log('NO de mensaje afirma')\r\n checksi.checked = false;\r\n checkno.checked = true; \r\n }\r\n })\r\n }\r\n render() {\r\n \r\n\r\n\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'idActividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino2 == \"2\" && row.termino1 == \"1\" && row.termino3 == \"0\") {\r\n return (\r\n <> PAE {row.anio}
PAO {row.anio}-1
PAO {row.anio}-2\r\n )\r\n }\r\n else if (row.termino1 == \"1\") {\r\n if (row.termino1 == \"1\" && row.termino3 == \"0\") {\r\n return (\r\n <>PAO {row.anio}-1
PAE {row.anio}\r\n );\r\n } else if (row.termino2 == \"2\" && row.termino1 == \"1\") {\r\n return (\r\n <>PAO {row.anio}-1
PAO {row.anio}-2\r\n );\r\n } else {\r\n return (\r\n <>PAO {row.anio}-1\r\n );\r\n }\r\n } else if (row.termino2 == \"2\") {\r\n if (row.termino2 == \"2\" && row.termino1 == \"1\") {\r\n return (\r\n <>PAO {row.anio}-1
PAO {row.anio}-2\r\n );\r\n\r\n } else if (row.termino2 == \"2\" && row.termino3 == \"0\") {\r\n return (\r\n <>PAO {row.anio}-2
PAE {row.anio}\r\n );\r\n }\r\n return (\r\n <>PAO {row.anio}-2\r\n );\r\n } else if (row.termino3 == \"0\") {\r\n if (row.termino3 == \"0\" && row.termino1 == \"1\") {\r\n return (\r\n <>PAE {row.anio}
PAO {row.anio}-1\r\n );\r\n\r\n } else if (row.termino3 == \"0\" && row.termino2 == \"2\") {\r\n return (\r\n <>PAE {row.anio}
PAO {row.anio}-2\r\n );\r\n }\r\n return (\r\n <>PAE {row.anio}\r\n );\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal:'\r\n }, {\r\n dataField: 'totalHoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData => {\r\n //const total2 = columnData.reduce((acc, item) => (Number(acc) + Number(item)).toFixed(2), 0);\r\n const total2 = columnData.reduce((acc, item) => (Number(acc) + Number(item)), 0);\r\n return (<>{total2.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n\r\n\r\n }, {\r\n dataField: 'tipoActividad',\r\n text: 'tipoactividad',\r\n hidden: true\r\n\r\n\r\n },\r\n {\r\n dataField: 'conformidad',\r\n text: 'Validada',\r\n isDummyField: true,\r\n headerFormatter: (column, colIndex) => {\r\n return (\r\n
\r\n Validar
Seleccionar todo\r\n
\r\n Si \r\n No\r\n\r\n
\r\n
\r\n\r\n )\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n
\r\n this.handleHideClick(row.idUnico)} disabled={this.props.terminoPeriodo === \"2S\" && row.termino2 === null} />Si  \r\n this.handleShowClick(row.idUnico, rowIndex)} disabled={this.props.terminoPeriodo === \"2S\" && row.termino2 === null} />No\r\n
\r\n
\r\n\r\n );\r\n // BLOQUEAR PAE en PAO1: disabled={(this.props.terminoPeriodo === \"1S\" && row.termino3 === \"0\") || (this.props.terminoPeriodo === \"2S\" && row.termino2 === null)}\r\n //disabled={this.props.terminoPeriodo === \"2S\" && (row.termino1 === \"1\" || row.termino3 === \"0\")}\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n }\r\n }];\r\n const expandRow = {\r\n onlyOneExpanding: true,\r\n expanded: this.state.expanded,\r\n expandByColumnOnly: true,\r\n renderer: (row, rowIndex) => (\r\n
\r\n \r\n
\r\n )\r\n };\r\n\r\n return (\r\n
\r\n \r\n { this.props.actividades && this.props.actividades.length > 0 ?\r\n <>\r\n \r\n : null\r\n } \r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport { Tabla_Actividades } from './tablas/Tabla_Actividades';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\n//Funcion para colocar color a las headers la tabla\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\n\r\nfunction color_head_desc(tipo) {\r\n if (tipo === 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo === 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo === 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '10%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\nfunction PaoFormatter(termino,anio) {\r\n switch (termino) {\r\n case \"1ER TERMINO\":\r\n return (\r\n <>PAO-{anio}-1\r\n );\r\n break;\r\n case \"2DO TERMINO\":\r\n return (\r\n <>PAO-{anio}-2\r\n );\r\n break;\r\n case \"3ER TERMINO\":\r\n return (\r\n <>PAE-{anio}\r\n );\r\n break;\r\n\r\n case \"1S\":\r\n return (\r\n <>PAO-{anio}-1\r\n );\r\n break;\r\n case \"2S\":\r\n return (\r\n <>PAO-{anio}-2\r\n );\r\n break;\r\n case \"3S\":\r\n return (\r\n <>PAE-{anio}\r\n );\r\n break;\r\n default:\r\n return (\r\n <>{termino}\r\n );\r\n break;\r\n }\r\n}\r\n\r\nexport class Docencia_Grado extends Component {\r\n static displayName = Docencia_Grado.name;\r\n static totalmat = 0;\r\n static totalact = 0;\r\n\r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", solicitudes: [], actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n fila: [],\r\n fila_mat: [],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, loading3: false, expanded: [], expanded_mat: [], total: 0,\r\n materia_elegida: [{ idcurso: 0, validada: \"\", estado_actividad: \"\" }],\r\n anio: props.anio, terminoPeriodo: props.terminoPeriodo, idpersona: props.idprof, actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, valida_next: false, solicitudes_act:[]\r\n };\r\n\r\n \r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n this.setfila = this.setfila.bind(this);\r\n this.updatestate = this.updatestate.bind(this);\r\n this.updatestate_mat = this.updatestate_mat.bind(this); \r\n this.isValidated_all = this.isValidated_all.bind(this);\r\n this.closeExpandxId = this.closeExpandxId.bind(this);\r\n this.closeExpandxId_mat = this.closeExpandxId_mat.bind(this);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n let solicitudes = this.props.getSolicitudes('');\r\n //console.log(\"solicitudes_act: \", solicitudes);\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n\r\n if (this.state.anio > 0) {\r\n this.populateActividadesData(this.props.idprof, this.props.anio);\r\n this.populateMateriasData(this.props.idprof, this.props.anio);\r\n this.populateActividadesCombo(this.props.idprof, this.props.anio);\r\n }\r\n }\r\n\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n updatestate(rowIndex,idactividad, descripcion, totalhoras, anio, termino, tipoactividad, observacion, pao1, pao2, pae, accion, idUnico) {\r\n //const terminos = this.get_radios(pao1, pao2, pae, anio)\r\n var solicitudes = this.state.solicitudes \r\n \r\n if (solicitudes.length === 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad !== idactividad)\r\n }\r\n //console.log('VER DESDE NUEVO EL TERMINO:' + termino)\r\n solicitudes.push({ idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico })\r\n \r\n this.setState({ solicitudes: solicitudes });\r\n //console.log(this.state.solicitudes)\r\n this.props.update({ ambito: 'A|R', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: 'A|R', pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico });\r\n\r\n }\r\n\r\n updatestate_mat(rowIndex,idcurso, descripcion, observacion, anio, termino, totalhoras, accion, idUnico) {\r\n var solicitudes = this.state.solicitudes\r\n \r\n\r\n if (solicitudes.length === 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad !== idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, totalhoras: totalhoras, termino: termino, accion: accion\r\n })\r\n this.setState({ solicitudes: solicitudes }, () => {\r\n //console.log(\"solicitudes: \", this.state.solicitudes);\r\n });\r\n\r\n this.props.update({ ambito: 'M|R', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'M|R', totalhoras: totalhoras, termino: termino, accion: accion, idUnico: idUnico });\r\n\r\n }\r\n\r\n closeExpandxId(idactividad) {\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n }\r\n\r\n closeExpandxId_mat(idcurso) {\r\n //console.log('DENTRO DE EXPALNDID');\r\n\r\n //console.log(\"solicitudes_act: \", this.state.solicitudes_act);\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n }\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n //console.log(\"handleHideClick_mat: \", idactividad);\r\n const check = document.getElementsByName(\"all_mg\");\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n if (this.state.fila_mat[i].validacion === 'no') {\r\n this.state.fila_mat[i].validacion = 'si'\r\n //console.log(\"this.state.fila_mat[i]: \", this.state.fila_mat[i]);\r\n return this.state.fila_mat[i];\r\n }\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n } else {\r\n this.mensaje_afirma(idactividad)\r\n }\r\n this.props.setconteo_final_mat(this.state.fila_mat,'R');\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n const check = document.getElementsByName(\"all_mg\");\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n\r\n //console.log('MATERIA:' + idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n this.props.setconteo_final_mat(this.state.fila_mat, 'R');\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n })); \r\n this.props.setconteo_final_mat(filas, 'R');\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n let filas = [];\r\n let expandir = [];\r\n\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n this.state.materias.forEach((element) => {\r\n if (element.term === \"2S\") {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCurso)) {\r\n expandir.push(element.idCurso);\r\n }\r\n } else {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n\r\n } else {\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCurso)) {\r\n expandir.push(element.idCurso);\r\n }\r\n });\r\n }\r\n\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n this.props.setconteo_final_mat(filas, 'R');\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleAllCheck_mat() { \r\n const check = document.getElementsByName(\"all_mg\");\r\n const checkSin = document.getElementById(\"Materias_mg\").getElementsByClassName('form-check-input'); \r\n if (check[0].checked) {\r\n //console.log('MATERIA:' + 'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"1\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n //console.log('MATERIA:' + chec);\r\n //if (!this.state.valida_next) {\r\n // this.isValidated_all(chec, this.state.fila.length);\r\n //}\r\n } else {\r\n //console.log('NO A TODO CKICKK EN MATERIAS');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"0\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n // else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"0\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n } \r\n }\r\n let chec = checkSin.length - 1\r\n //console.log('MATERIA:' + chec);\r\n\r\n //if (!this.state.valida_next) {\r\n // this.isValidated_all(chec, this.state.fila.length);\r\n //}\r\n }\r\n\r\n }\r\n\r\n\r\n mensaje_afirma(idcurso) {\r\n\r\n Swal.fire({\r\n title: '¿Está seguro de cambiar?',\r\n text: \"Usted podría perder la selección y los datos ingresados de esta observación\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, cambiar selección.',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n\r\n this.props.setSolicitudes(0, idcurso)\r\n\r\n //this.actualizarSolicitudes()\r\n\r\n //Swal.fire({\r\n // icon: 'success',\r\n // text: 'Tu solicitud de Asignatura/Actividad ha sido eliminada',\r\n // title: 'Eliminado',\r\n // showConfirmButton: false,\r\n // timer: 1500\r\n //})\r\n } else {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idcurso) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n const checksi = document.getElementById(\"ch1_\" + idcurso);\r\n const checkno = document.getElementById(\"ch2_\" + idcurso);\r\n //console.log('NO de mensaje afirma')\r\n checksi.checked = false;\r\n checkno.checked = true;\r\n }\r\n })\r\n }\r\n\r\n renderMateriasTable(materias) {\r\n\r\n const columns_materias = [{\r\n dataField: 'id',\r\n text: '#',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'codigoMateria',\r\n text: 'Código',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nomMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cell, row, rowIndex, colIndex) => {\r\n return PaoFormatter(row.termino,row.anio)\r\n },\r\n footer: 'Subtotal:'\r\n }, {\r\n dataField: 'totalHoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<> {total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n },\r\n {\r\n dataField: 'conformidad',\r\n text: 'Validada',\r\n isDummyField: true,\r\n headerFormatter: (column, colIndex) => {\r\n return (\r\n
\r\n Validar
Seleccionar todo\r\n
\r\n Si \r\n No\r\n\r\n
\r\n
\r\n\r\n )\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n
\r\n this.handleHideClick_mat(row.idCurso)} disabled={this.state.terminoPeriodo === \"2S\" && row.term.trim() !== \"2S\"} />Si \r\n this.handleShowClick_mat(row.idCurso)} disabled={this.state.terminoPeriodo === \"2S\" && row.term.trim() !== \"2S\"} />No\r\n
\r\n
\r\n );\r\n\r\n // BLOQUEAR PAE en PAO1: disabled={(this.state.terminoPeriodo === \"1S\" && row.term.trim() === \"0S\") || (this.state.terminoPeriodo === \"2S\" && row.term.trim() !== \"2S\")}\r\n //disabled={(row.term.trim() === \"0S\" && this.state.terminoPeriodo !== \"1S\") || row.term.trim() !== this.state.terminoPeriodo}\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n }\r\n }];\r\n\r\n const expandRow2 = {\r\n onlyOneExpanding: true,\r\n expanded: this.state.expanded_mat,\r\n expandByColumnOnly: true,\r\n renderer: (row, rowIndex) => (\r\n
\r\n \r\n\r\n
\r\n )\r\n };\r\n\r\n return (\r\n \r\n );\r\n\r\n }\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n isValidated_all(tam,tam2) {\r\n \r\n //console.log('dentro del isvalidated_all del padre') \r\n //console.log(tam)\r\n //console.log(tam2)\r\n if (tam >= this.state.materias.length && tam2 >= this.state.actividades.length) {\r\n //btnchecknext.disabled = false;\r\n this.setState({\r\n valida_next:true\r\n }) \r\n \r\n }\r\n }\r\n\r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n renderTotal() {\r\n\r\n const totalmaterias = this.props.cargaMat ? this.props.cargaMat.map(horastot => horastot.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const totalactividades = this.props.cargaAct ? this.props.cargaAct.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambitout = totalactividades + totalmaterias;\r\n const talambito = this.formatter(talambitout);\r\n\r\n return (\r\n
\r\n
Total de Ámbito de Docencia Grado: {talambito} horas
\r\n
\r\n )\r\n }\r\n\r\n\r\n setconteo_final(tam) {\r\n //console.log('setconteo final en docencia de grado')\r\n //console.log(tam)\r\n this.props.setconteo_final(tam,'R')\r\n }\r\n\r\n setfila(tam) {\r\n this.setState({\r\n fila: tam\r\n })\r\n //console.log('setfila en docencia de grado')\r\n //console.log(tam)\r\n this.isValidated_all(this.state.fila_mat,tam)\r\n }\r\n\r\n render() {\r\n \r\n\r\n //let contents = this.renderActividadesTable(this.state.actividades);\r\n let contents_mat = this.renderMateriasTable(this.state.materias);\r\n let total = this.renderTotal()\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n \r\n {contents_mat}\r\n \r\n {total}\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) { \r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta.filter(x => x.nivelEstudio === 'R');\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|R', idactividad: act.idActividad }) })\r\n var actividades2 = [];\r\n data.map(act => {\r\n actividades2.push({\r\n tipo: 'A|R', idactividad: act.idActividad, anio: act.anio,\r\n descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '',\r\n totalhoras: act.totalHoras, validado: 1, idUnico: act.idUnico\r\n })\r\n })\r\n this.props.updateCarga(actividades, actividades2, 'A|R');\r\n }\r\n\r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n }\r\n\r\n async populateMateriasData(idpersona, anio) {\r\n //const response = await fetch(API_URL + 'TblMaterias/' + idpersona + '/' + anio);\r\n //const response = this.props.cargaMat;\r\n const respuesta = this.props.cargaMat;//await response.json();\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idCurso, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|R', idactividad: act.idCurso }) })\r\n var actividades2 = [];\r\n data.map(act2 => {\r\n actividades2.push({\r\n tipo: 'M|R', idactividad: act2.idCurso, anio: act2.anio, descripcion: act2.nomMateria,\r\n periodo: act2.termino, accion: '', observacion: '', totalhoras: act2.totalHoras, validado: 1\r\n })\r\n })\r\n this.props.updateCarga(actividades, actividades2, 'M|R');\r\n }\r\n\r\n this.setState({ materia_elegida: selected, materias: data, loading: false }, () => {\r\n\r\n // AGREGAR MATERIAS VALIDADAS EN 1S\r\n //console.log(\"materias grado: \", this.state.materias);\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n\r\n var checkSin = document.getElementById(\"Materias_mg\").getElementsByClassName('form-check-input');\r\n\r\n this.state.materias.map((item, index) => {\r\n if (item.term.trim() === \"1S\" || item.term.trim() === \"0S\" || item.term.trim() === \"3S\") {\r\n //console.log(\"termino != 2S: \", item);\r\n\r\n //var checkNeeded = checkSin[\"ch1_\" + item.idCurso];\r\n //checkNeeded.checked = true;\r\n\r\n this.state.fila_mat.push({\r\n idactividad: item.idCurso,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n this.props.setconteo_final_mat(this.state.fila_mat, 'R');\r\n }\r\n });\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport { AppContext } from './../../AppContext';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\nimport { Tabla_Actividades } from './tablas/Tabla_Actividades';\r\n\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '20%', fontSize: 11,\r\n };\r\n}\r\n\r\n\r\nfunction color_head_resumen(tipo) {\r\n if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '5%'\r\n };\r\n } else if (tipo == 'dyo') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '45%'\r\n }\r\n } else if (tipo == 'h') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n }\r\n}\r\n\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '17%'\r\n };\r\n } else if (tipo == 'sm') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '10%'\r\n };\r\n } else if (tipo == 'hp') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '20%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\n\r\nexport class Docencia_Postgrado extends Component {\r\n static displayName = Docencia_Postgrado.name;\r\n\r\n static totalmat = 0;\r\n static totalact = 0;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n\r\n PaoFormatter(termino, anio) {\r\n //console.log('++' + termino + '++')\r\n if (termino === \"1\" || termino === \"1S\" || termino === \"1ER TERMINO\") {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n } else if (termino === \"2\" || termino === \"2S\" || termino === \"2DO TERMINO\") {\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino === \"0\" || termino === \"3S\" || termino === \"3ER TERMINO\" || termino === \"3\") {\r\n return (\r\n 'PAE-' + anio\r\n );\r\n } else {\r\n return (termino)\r\n }\r\n\r\n }\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, loading3: false, expanded: [], expanded_mat: [], total: 0,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n anio: props.anio, idpersona: props.idprof, terminoPeriodo: props.terminoPeriodo,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila_mat: [], fila: [], valida_next: false, solicitudes_act:[]\r\n };\r\n this.setfila = this.setfila.bind(this);\r\n this.onInputChange = this.onInputChange.bind(this);\r\n this.updatestate = this.updatestate.bind(this);\r\n this.updatestate_mat = this.updatestate_mat.bind(this);\r\n this.closeExpandxId = this.closeExpandxId.bind(this);\r\n this.closeExpandxId_mat = this.closeExpandxId_mat.bind(this);\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n }\r\n\r\n setconteo_final(tam) {\r\n //console.log('setconteo final en docencia de grado')\r\n //console.log(tam)\r\n this.props.setconteo_final(tam,'P')\r\n }\r\n\r\n componentDidMount() {\r\n let solicitudes = this.props.getSolicitudes('')\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateMateriasData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n onInputChange(event) {\r\n var control = event.target.name;\r\n if (control === \"busqueda\") {\r\n var value = this.state.busqueda;\r\n value = event.target.value;\r\n this.setState({\r\n busqueda: value\r\n });\r\n }\r\n else {\r\n var uActividad = this.state.actividad;\r\n value = event.target.value;\r\n uActividad[control] = value;\r\n this.setState({\r\n actividad: uActividad\r\n });\r\n }\r\n }\r\n\r\n\r\n \r\n updatestate(rowIndex, idactividad, descripcion, totalhoras, anio, termino, tipoactividad, observacion, pao1, pao2, pae, accion, idUnico) {\r\n var solicitudes = this.state.solicitudes\r\n \r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n ambito: 'A|P', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n\r\n this.props.update({ ambito: 'A|P', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico});\r\n\r\n }\r\n\r\n updatestate_mat(rowIndex, idcurso, descripcion, observacion, anio, termino, totalhoras, accion, idUnico) {\r\n \r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, totalhoras: totalhoras, termino: termino, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n \r\n this.props.update({ ambito: 'M|P', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'D', totalhoras: totalhoras, termino: termino, accion: accion, idUnico: idUnico})\r\n \r\n }\r\n \r\n\r\n closeExpandxId(idactividad) {\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n }\r\n\r\n closeExpandxId_mat(idcurso) {\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n }\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n const check = document.getElementsByName(\"all_mpg\");\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n if (this.state.fila_mat[i].validacion === 'no') {\r\n this.state.fila_mat[i].validacion = 'si'\r\n return this.state.fila_mat[i];\r\n }\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n } else {\r\n this.mensaje_afirma(idactividad)\r\n }\r\n\r\n this.props.setconteo_final_mat(this.state.fila_mat, 'P');\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n\r\n const check = document.getElementsByName(\"all_mpg\");\r\n check[0].checked = false;\r\n check[1].checked = false;\r\n\r\n //console.log('MATERIA:' + idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n\r\n this.props.setconteo_final_mat(this.state.fila_mat, 'P');\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCplPostGrados,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n }));\r\n //console.log(this.state.expanded_mat);\r\n this.props.setconteo_final_mat(filas, 'P'); \r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n let filas = [];\r\n let expandir = [];\r\n\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n this.state.materias.forEach((element) => {\r\n var tmpTerminoSplit = element.termino.split(\"-\");\r\n var tmpTerminoString = tmpTerminoSplit.length === 3 ? tmpTerminoSplit[2] + \"S\" : \"0S\";\r\n\r\n if (tmpTerminoString === \"2S\") {\r\n filas.push({\r\n idactividad: element.idCplPostGrados,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCplPostGrados)) {\r\n expandir.push(element.idCplPostGrados);\r\n }\r\n } else {\r\n filas.push({\r\n idactividad: element.idCplPostGrados,\r\n validacion: 'si'\r\n });\r\n }\r\n });\r\n } else {\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idCplPostGrados,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idCplPostGrados)) {\r\n expandir.push(element.idCplPostGrados);\r\n }\r\n });\r\n }\r\n \r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n \r\n this.props.setconteo_final_mat(filas, 'P');\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleAllCheck_mat() {\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n const check = document.getElementsByName(\"all_mpg\");\r\n const checkSin = document.getElementById(\"Materias_Postg\").getElementsByClassName('form-check-input');\r\n //console.log('MATERIA:' + check);\r\n //console.log('MATERIA:' + checkSin);\r\n if (check[0].checked) {\r\n //console.log('MATERIA:' + 'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"1\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n //console.log('MATERIA:' + chec);\r\n //if (!this.state.valida_next) {\r\n // this.isValidated_all(chec, this.state.fila.length);\r\n //}\r\n } else {\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n if (checkSin[i].value === \"0\" && !checkSin[i].disabled) {\r\n checkSin[i].checked = true;\r\n }\r\n //else {\r\n // checkSin[i].checked = false;\r\n //}\r\n } else {\r\n if (checkSin[i].value === \"0\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n let chec = checkSin.length - 1\r\n\r\n if (!this.state.valida_next) {\r\n this.isValidated_all(chec, this.state.fila.length);\r\n }\r\n }\r\n }\r\n\r\n\r\n mensaje_afirma(idcurso) {\r\n\r\n Swal.fire({\r\n title: '¿Está seguro de cambiar?',\r\n text: \"Usted podría perder la selección y los datos ingresados de esta observación\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, cambiar selección.',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n if (this.state.expanded_mat.includes(idcurso)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idcurso)\r\n }));\r\n }\r\n\r\n this.props.setSolicitudes(0, idcurso)\r\n //Swal.fire({\r\n // icon: 'success',\r\n // text: 'Tu solicitud de Asignatura/Actividad ha sido eliminada',\r\n // title: 'Eliminado',\r\n // showConfirmButton: false,\r\n // timer: 1500\r\n //})\r\n } else {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idcurso) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n const checksi = document.getElementById(\"ch1_\" + idcurso);\r\n const checkno = document.getElementById(\"ch2_\" + idcurso);\r\n //console.log('NO de mensaje afirma')\r\n checksi.checked = false;\r\n checkno.checked = true;\r\n }\r\n })\r\n }\r\n \r\n renderMateriasTable(materias) {\r\n\r\n const columns_materias = [{\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n headerStyle: color_head_desc('sm'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'codigoCurso',\r\n text: 'Codigo',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nomMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'cohorte',\r\n text: 'Cohorte',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'fechaInicio',\r\n text: 'Fecha Inicio',\r\n headerStyle: color_head_desc('hp'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => { \r\n return (\r\n
\r\n {row.fechaInicio.split(' ')[0]}\r\n
\r\n )\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'fechaFin',\r\n text: 'Fecha Fin',\r\n headerStyle: color_head_desc('hp'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {row.fechaFin.split(' ')[0]}\r\n
\r\n )\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n var respu;\r\n if (row.termino.trim() === \"1\" || row.termino.trim() === \"1S\") {\r\n return (\r\n <>PAO-{row.anio}-1\r\n );\r\n } else if (row.termino.trim() === \"2\" || row.termino.trim() === \"2S\") {\r\n return (\r\n <>PAO-{row.anio}-2\r\n );\r\n\r\n } else if (row.termino.trim() === \"3\" || row.termino.trim() === \"3S\" || row.termino.trim() === \"PAO-20220\") {\r\n return (\r\n <>PAE-{row.anio}\r\n );\r\n\r\n } else {\r\n\r\n return (\r\n <>{row.termino}\r\n );\r\n }\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'horasTotales',\r\n text: 'Horas',\r\n headerStyle: color_head_desc('hp'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<>{total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n },\r\n {\r\n dataField: 'conformidad',\r\n text: 'Validada',\r\n isDummyField: true,\r\n headerFormatter: (column, colIndex) => {\r\n return (\r\n
\r\n Validar
Seleccionar todo\r\n
\r\n Si \r\n No\r\n\r\n
\r\n
\r\n\r\n )\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n var tmpTerminoSplit = row.termino.split(\"-\");\r\n var tmpTerminoString = tmpTerminoSplit.length === 3 ? tmpTerminoSplit[2] + \"S\" : \"0S\";\r\n //console.log(\"tmpTerminoString postgrados: \", tmpTerminoString + \"-\" + this.props.terminoPeriodo);\r\n return (\r\n
\r\n
\r\n this.handleHideClick_mat(row.idCplPostGrados)} disabled={this.state.terminoPeriodo === \"2S\" && tmpTerminoString !== \"2S\"} />Si \r\n this.handleShowClick_mat(row.idCplPostGrados)} disabled={this.state.terminoPeriodo === \"2S\" && tmpTerminoString !== \"2S\"} />No\r\n
\r\n
\r\n );\r\n\r\n // BLOQUEAR PAE en PAO1: disabled={(this.state.terminoPeriodo === \"1S\" && tmpTerminoString === \"0S\") || (this.state.terminoPeriodo === \"2S\" && tmpTerminoString !== \"2S\")}\r\n //disabled={(tmpTerminoString === \"0S\" && this.state.terminoPeriodo !== \"1S\") || tmpTerminoString !== this.state.terminoPeriodo}\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n }\r\n }];\r\n\r\n const expandRow2 = {\r\n onlyOneExpanding: true,\r\n expanded: this.state.expanded_mat,\r\n expandByColumnOnly: true,\r\n renderer: (row, rowIndex) => (\r\n
\r\n \r\n
\r\n )\r\n };\r\n\r\n return (\r\n \r\n );\r\n\r\n \r\n}\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n isValidated_all(tam, tam2) {\r\n \r\n if (tam >= this.state.materias.length && tam2 >= this.state.actividades.length) {\r\n \r\n this.setState({\r\n valida_next: true\r\n })\r\n \r\n }\r\n }\r\n\r\n\r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n renderTotal() {\r\n\r\n const totalmaterias = this.props.cargaMat ? this.props.cargaMat.map(horastot => horastot.horasTotales).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const totalactividades = this.props.cargaAct ? this.props.cargaAct.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambitout = totalactividades + totalmaterias;\r\n const talambito = this.formatter(talambitout);\r\n\r\n return (\r\n
\r\n
Total de Ámbito de Docencia PostGrado: {talambito} horas
\r\n
\r\n )\r\n }\r\n setfila(tam) {\r\n this.setState({\r\n fila: tam\r\n })\r\n this.isValidated_all(this.state.fila_mat,tam)\r\n }\r\n render() {\r\n \r\n \r\n let contents_mat = this.renderMateriasTable(this.state.materias);\r\n let total = this.renderTotal()\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n \r\n {contents_mat}\r\n \r\n {total}\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/' + idpersona + '/' + anio + '/P/D');\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaAct;//await response.json();\r\n const data = respuesta.filter(x => x.nivelEstudio == 'P');\r\n var selected = []\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idActividad, validada: \"\", estado_actividad: \"\" }) })//data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|P', idactividad: act.idActividad }) })\r\n var actividades2 = [];\r\n data.map(act => {\r\n actividades2.push({\r\n tipo: 'A|P', idactividad: act.idActividad, anio: anio, descripcion: act.descripcion,\r\n periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '',\r\n totalhoras: act.totalHoras, validado: 1, idUnico: act.idUnico\r\n })\r\n })\r\n this.props.updateCarga(actividades, actividades2,'A|P');\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateMateriasData(idpersona, anio) {\r\n //const response = await fetch(API_URL + 'TblMateriasPostg/' + idpersona + '/' + anio);\r\n const respuesta = this.props.cargaMat;//await response.json();\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idCplPostGrados, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|P', idactividad: act.idCplPostGrados }) })\r\n var actividades2 = [];\r\n data.map(act => {\r\n actividades2.push({\r\n tipo: 'M|P', idactividad: act.idCplPostGrados, anio: act.anio, descripcion: act.nomMateria,\r\n periodo: act.termino, accion: '', observacion: '', totalhoras: act.horasTotales, validado: 1\r\n })\r\n })\r\n this.props.updateCarga(actividades, actividades2, 'M|P');\r\n\r\n }\r\n this.setState({ materia_elegida: selected, materias: data, loading: false }, () => {\r\n\r\n // AGREGAR MATERIAS VALIDADAS EN 1S\r\n //console.log(\"materias postgrados: \", this.state.materias);\r\n if (this.props.terminoPeriodo === \"2S\") {\r\n\r\n const checkSin = document.getElementById(\"Materias_Postg\").getElementsByClassName('form-check-input');\r\n\r\n this.state.materias.map((item, index) => {\r\n var tmpTerminoSplit = item.termino.split(\"-\");\r\n var tmpTerminoString = tmpTerminoSplit.length === 3 ? tmpTerminoSplit[2] + \"S\" : \"0S\";\r\n\r\n if (tmpTerminoString === \"1S\" || tmpTerminoString === \"0S\") {\r\n //console.log(\"termino != 2S: \", item);\r\n\r\n //var checkNeeded = checkSin[\"ch1_\" + item.idCplPostGrados];\r\n //checkNeeded.checked = true;\r\n\r\n this.state.fila_mat.push({\r\n idactividad: item.idCplPostGrados,\r\n validacion: 'si'\r\n })\r\n }\r\n });\r\n this.props.setconteo_final_mat(this.state.fila_mat, 'P');\r\n }\r\n });\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\nDocencia_Postgrado.contextType = AppContext;","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport { Tabla_Actividades } from './tablas/Tabla_Actividades';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\n\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo === 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo === 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo === 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nexport class Gestion_Academica extends Component {\r\n static displayName = Gestion_Academica.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, total: 0,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\", solicitudes_act: [],\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: [], fila_mat: [],valida_next: false\r\n };\r\n \r\n this.updatestate = this.updatestate.bind(this);\r\n this.setfila = this.setfila.bind(this);\r\n this.isValidated_all = this.isValidated_all.bind(this);\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let solicitudes = this.props.getSolicitudes('')\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.props.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.props.anio);\r\n } \r\n \r\n }\r\n\r\n setconteo_final(tam) {\r\n this.props.setconteo_final(tam,'G')\r\n }\r\n\r\n\r\n updatestate(rowIndex, idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion, idUnico) {\r\n var solicitudes = this.state.solicitudes\r\n \r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n //this.isValidated_all(this.states.fila.length)\r\n this.props.update({ ambito: 'A|G', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico });\r\n\r\n }\r\n \r\n \r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n \r\n isValidated_all(tam) {\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n\r\n //btnchecknext.disabled = true;\r\n //console.log('MATERIAS--->ES IGUAL: ' + tam + ' === ' + this.state.actividades.length)\r\n if (tam >= this.state.actividades.length) {\r\n //console.log('--->desbloquea siguiente ambito')\r\n //btnchecknext.disabled = false;\r\n this.setState({\r\n valida_next: true\r\n })\r\n //console.log('verifica vliidanext:' + this.state.valida_next)\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n\r\n }\r\n }\r\n\r\n \r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n renderTotal() {\r\n \r\n const totalactividades = this.props.cargaAct ? this.props.cargaAct.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = this.formatter(totalactividades);\r\n\r\n return (\r\n
\r\n
Total de Ámbito de Gestión Académica: {talambito} horas
\r\n
\r\n\r\n )\r\n }\r\n\r\n setfila(tam) {\r\n this.setState({\r\n fila: tam\r\n })\r\n this.isValidated_all(tam)\r\n }\r\n render() {\r\n \r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n\r\n if (this.state.valida_next) {\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n //if (btnchecknext != undefined) {\r\n // btnchecknext.disabled = false;\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n //}\r\n }\r\n \r\n let total = this.renderTotal()\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n \r\n \r\n {total}\r\n
\r\n );\r\n } \r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idActividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|G', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|G', idactividad: act.idActividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalHoras, validado: 1, idUnico: act.idUnico }) })\r\n this.props.updateCarga(actividades, actividades2, 'A|G');\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/A/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n\r\n}","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport { Tabla_Actividades } from './tablas/Tabla_Actividades';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\n \r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nexport class Investigacion extends Component {\r\n static displayName = Investigacion.name;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: [], valida_next: true, solicitudes_act:[]\r\n };\r\n \r\n this.isValidated_all = this.isValidated_all.bind(this);\r\n this.setfila = this.setfila.bind(this);\r\n this.updatestate = this.updatestate.bind(this);\r\n\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n }\r\n\r\n setconteo_final(tam) {\r\n //console.log('setconteo final en docencia de grado')\r\n //console.log(tam)\r\n this.props.setconteo_final(tam, 'I')\r\n }\r\n\r\n componentDidMount() {\r\n let solicitudes = this.props.getSolicitudes('')\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n updatestate(rowIndex, idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion, idUnico) {\r\n var solicitudes = this.state.solicitudes\r\n \r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n //this.isValidated_all(this.states.fila.length)\r\n this.props.update({ ambito: 'A|I', idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico});\r\n\r\n }\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n \r\n isValidated_all(tam) {\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n\r\n // btnchecknext.disabled = true;\r\n //console.log('MATERIAS--->ES IGUAL: ' + tam + ' === ' + this.state.actividades.length)\r\n if (tam >= this.state.actividades.length) {\r\n //console.log('--->desbloquea siguiente ambito')\r\n // btnchecknext.disabled = false;\r\n this.setState({\r\n valida_next: true\r\n })\r\n //console.log('verifica vliidanext:' + this.state.valida_next)\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n\r\n }\r\n }\r\n \r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n renderTotal() {\r\n const totalactividades = this.props.cargaAct ? this.props.cargaAct.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = this.formatter(totalactividades);\r\n return (\r\n
\r\n
Total de Ámbito de Investigación: {talambito} horas
\r\n
\r\n )\r\n }\r\n\r\n setfila(tam) {\r\n this.setState({\r\n fila: tam\r\n })\r\n this.isValidated_all(tam)\r\n }\r\n render() {\r\n \r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n if (btncheckprevius != undefined) {\r\n btncheckprevius.hidden = true;\r\n }\r\n\r\n if (this.state.valida_next) {\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n //if (btnchecknext != undefined) {\r\n // btnchecknext.disabled = false;\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n //}\r\n }\r\n\r\n \r\n let total = this.renderTotal()\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n \r\n \r\n {total}\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idActividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|I', idactividad: act.idActividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|I', idactividad: act.idActividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalHoras, validado: 1, idUnico: act.idUnico }) })\r\n this.props.updateCarga(actividades, actividades2, 'A|I');\r\n }\r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/I/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { Resumen_Observaciones } from './tablas/Resumen_Observaciones';\r\nimport { Tabla_Actividades } from './tablas/Tabla_Actividades';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\n\r\nfunction color_head_resumen(tipo) {\r\n if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '5%'\r\n };\r\n } else if (tipo == 'dyo') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '45%'\r\n }\r\n } else if (tipo == 'h') {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#E7E7E7',\r\n color: '#58A7E0', fontSize: 11,\r\n width: '15%'\r\n };\r\n }\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo === 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo === 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo === 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\nexport class Vinculacion extends Component {\r\n static displayName = Vinculacion.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: [], fila_mat: [], valida_next: false, solicitudes_act:[]\r\n };\r\n \r\n this.isValidated_all = this.isValidated_all.bind(this);\r\n this.setfila = this.setfila.bind(this);\r\n this.updatestate = this.updatestate.bind(this);\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n }\r\n\r\n setconteo_final(tam) {\r\n //console.log('setconteo final en docencia de grado')\r\n //console.log(tam)\r\n this.props.setconteo_final(tam, 'V')\r\n }\r\n\r\n componentDidMount() {\r\n let solicitudes = this.props.getSolicitudes('')\r\n if (solicitudes) {\r\n this.setState({\r\n solicitudes_act: solicitudes\r\n })\r\n }\r\n\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n \r\n updatestate(rowIndex, idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion, idUnico) {\r\n\r\n var solicitudes = this.state.solicitudes \r\n \r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({\r\n ambito: 'A|V', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion, idUnico: idUnico\r\n });\r\n\r\n }\r\n\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n \r\n\r\n isValidated_all(tam) {\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n\r\n // btnchecknext.disabled = true;\r\n //console.log('MATERIAS--->ES IGUAL: ' + tam + ' === ' + this.state.actividades.length)\r\n if (tam >= this.state.actividades.length) {\r\n //console.log('--->desbloquea siguiente ambito')\r\n //btnchecknext.disabled = false;\r\n this.setState({\r\n valida_next: true\r\n })\r\n //console.log('verifica vliidanext:' + this.state.valida_next)\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n\r\n }\r\n }\r\n \r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n renderTotal() {\r\n \r\n const totalactividades = this.props.cargaAct ? this.props.cargaAct.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = this.formatter(totalactividades);\r\n\r\n return (\r\n
\r\n
Total de Ámbito de Vinculación: {talambito} horas
\r\n
\r\n\r\n )\r\n }\r\n\r\n setfila(tam) {\r\n this.setState({\r\n fila: tam\r\n })\r\n this.isValidated_all( tam)\r\n }\r\n\r\n render() {\r\n let btncheckprevius = document.getElementsByClassName('btn-previous btn btn-secondary')[0];\r\n //if (btncheckprevius != undefined) {\r\n // btncheckprevius.hidden = true;\r\n //}\r\n\r\n if (this.state.valida_next) {\r\n let btnchecknext = document.getElementsByClassName('btn-next btn btn-secondary')[0];\r\n //if (btnchecknext != undefined) {\r\n // btnchecknext.disabled = false;\r\n // btnchecknext.addEventListener('click', (e) => btnchecknext.disabled = true);\r\n //}\r\n }\r\n \r\n let total = this.renderTotal()\r\n\r\n return (\r\n
\r\n {/*updatestate={this.updatestate} />*/}\r\n \r\n \r\n {total}\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = []\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idActividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|V', idactividad: act.idActividad }) })\r\n var actividades2 = [];\r\n data.map(act => {\r\n actividades2.push({\r\n tipo: 'A|V', idactividad: act.idActividad, anio: anio, descripcion: act.descripcion,\r\n periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '',\r\n totalhoras: act.totalHoras, validado: 1, idUnico: act.idUnico\r\n })\r\n })\r\n this.props.updateCarga(actividades, actividades2, 'A|V');\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/V/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\n \r\nexport class Solicitud_materia extends Component {\r\n static displayName = Solicitud_materia.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\", loading: false, loading2: false\r\n };\r\n this.onInputChange = this.onInputChange.bind(this); \r\n this.agregarSolicitud = this.agregarSolicitud.bind(this);\r\n this.onChangeValue = this.onChangeValue.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n onChangeValue(event) { \r\n this.setState({\r\n accion: event.target.value,\r\n });\r\n }\r\n\r\n onInputChange(event) {\r\n var control = event.target.name;\r\n if (control === \"review\") {\r\n var value = this.state.observacion;\r\n value = event.target.value;\r\n this.setState({\r\n observacion: value\r\n });\r\n } \r\n //this.props.updatestate_mat(this.props.idcurso, this.state.observacion, this.state.termino, this.state.accion)\r\n }\r\n \r\n agregarSolicitud(event) { \r\n event.preventDefault();\r\n this.props.updatestate(this.props.idcurso,\r\n this.props.descripcion, this.state.observacion,\r\n this.props.anio, this.props.termino, this.props.totalhoras,\r\n this.state.accion)\r\n } \r\n render() {\r\n\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '10px',\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
MateriaObservacionPeriodoAcciones
{this.props.descripcion}\r\n {this.props.termino}\r\n \r\n\r\n
\r\n\r\n
\r\n this.handleClick(\"Modificar Carga\")} style={this.state.accion === \"Modificar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />\r\n   |  \r\n this.handleClick(\"Eliminar Carga\")} style={this.state.accion === \"Eliminar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n}","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n} function color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction estaConformeFormatter(column, colIndex, { sortElement, filterElement }) {\r\n return (\r\n
\r\n { filterElement}\r\n { column.text}\r\n { sortElement}\r\n
\r\n );\r\n\r\n}\r\n\r\nfunction PaoFormatter(cell, row) {\r\n switch (row.termino) {\r\n case \"1ER TERMINO\":\r\n return (\r\n PAO-1\r\n );\r\n break;\r\n case \"2DO TERMINO\":\r\n return (\r\n PAO-2\r\n );\r\n break;\r\n case \"3ER TERMINO\":\r\n return (\r\n PAE\r\n );\r\n break;\r\n default:\r\n return (\r\n {cell}\r\n );\r\n break;\r\n }\r\n}\r\n\r\n\r\nexport class Admision_out extends Component {\r\n static displayName = Admision_out.name;\r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [],busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, total: 0, selectact: \"\", selectidact: \"\", abierto: false,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\", expanded_mat: [],\r\n fila_mat: [], selectact: \"\", selectidact: \"\", abierto: false\r\n };\r\n\r\n\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate_mat = this.updatestate_mat.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.anio > 0) { \r\n this.populateMateriasData(this.props.idprof, this.props.anio);\r\n this.populateActividadesCombo(this.props.idprof, this.props.anio);\r\n }\r\n }\r\n\r\n updatestate_mat(idcurso, descripcion, observacion, anio, termino, totalhoras, accion) {\r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, totalhoras: totalhoras, termino: termino, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({ ambito: 'A|A', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'AD', totalhoras: totalhoras, termino: termino, accion: accion})\r\n //console.log(JSON.stringify(this.state.solicitudes))\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'si'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded_mat.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n\r\n\r\n //console.log('MATERIA:' + idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila_mat);\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcurso,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n }));\r\n //console.log(this.state.expanded_mat);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idcurso)) {\r\n expandir.push(element.idcurso);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n //console.log('MATERIA:' + this.state.materias);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleAllCheck_mat() {\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n const check = document.getElementsByName(\"all_admi\");\r\n const checkSin = document.getElementById(\"Materias_admi\").getElementsByClassName('form-check-input');\r\n //console.log('MATERIA:' + check);\r\n //console.log('MATERIA:' + checkSin);\r\n if (check[0].checked) {\r\n //console.log('MATERIA:' + 'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate_mat(this.state.selectidact, this.state.selectact, this.state.observacion, this.props.anio, this.state.periodo,0, 'Nueva Carga')\r\n\r\n this.cerrarModal()\r\n }\r\n renderMateriasTable(materias) {\r\n\r\n const columns_materias = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },{\r\n dataField: 'idCurso',\r\n text: 'Codigo',\r\n hidden:true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nombreMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('m'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: PaoFormatter,\r\n footer: 'Subtotal:'\r\n },\r\n {\r\n dataField: 'anio',\r\n text: 'Anio',\r\n hidden:true,\r\n },\r\n {\r\n dataField: 'horasTotales',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<>{total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n } ];\r\n \r\n\r\n return (\r\n \r\n );\r\n\r\n }\r\n\r\n\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n render() { \r\n\r\n let contents_mat = this.state.loading2\r\n ?

Loading...

\r\n : this.renderMateriasTable(this.state.materias);\r\n\r\n\r\n const totalpepa = this.state.materias ? this.state.materias.map(horastot => horastot.horasTotales).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n \r\n //const talambito = this.formatter(totalpepa);\r\n const talambito = totalpepa.toLocaleString('en', { maximumFractionDigits: 2 });\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n return (\r\n
\r\n {contents_mat}\r\n\r\n\r\n\r\n
\r\n
Total de Ambito de Admisiones: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n }\r\n \r\n \r\n //OJO AQUi se usa la cedula \r\n async populateMateriasData(idpersona, anio) {\r\n //const response = await fetch(API_URL + 'TblMateriasAdmi/' + idpersona + '/' + anio);\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaMat;\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idcurso, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|A', idactividad: act.idcurso }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'M|A', idactividad: act.idcurso, anio: act.anio, descripcion: act.nombremateria, periodo: act.termino, accion: '', observacion: '', totalhoras: act.horastotales, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n\r\n \r\n this.setState({ materia_elegida: selected, materias: data, loading: false });\r\n\r\n }\r\n\r\n\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL+'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\n\r\nexport class Solicitud_actividad extends Component {\r\n static displayName = Solicitud_actividad.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, termino: \"\", observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\",loading: false, loading2: false\r\n };\r\n this.onInputChange = this.onInputChange.bind(this); \r\n this.agregarSolicitud = this.agregarSolicitud.bind(this);\r\n this.onChangeValue = this.onChangeValue.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n termino: this.get_radios(this.props.pao1, this.props.pao2, this.props.pae, this.props.anio),\r\n observacion: this.props.observacion\r\n })\r\n //console.log(this.state.termino)\r\n }\r\n\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n //console.log('accion:', text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n onChangeValue(event) {\r\n this.setState({\r\n accion: event.target.value,\r\n });\r\n }\r\n\r\n onInputChange(event) {\r\n //console.log(JSON.stringify(event.target.name))\r\n var control = event.target.name;\r\n if (control === \"review\") {\r\n //var value = this.state.observacion;\r\n var value = event.target.value;\r\n this.setState({\r\n observacion: value\r\n });\r\n }\r\n else if (control === \"inlineRadioOptions\") {\r\n var value = event.target.value;\r\n\r\n this.setState({\r\n pao1: value == 1 ? \"1\" : \"\",\r\n pao2: value == 2 ? \"2\" : \"\",\r\n pa3: value == 3 ? \"3\" : \"\"\r\n });\r\n } else if (control === \"inlineRadioAction\") {\r\n var value = event.target.value;\r\n this.setState({\r\n accion: value, \r\n });\r\n }\r\n }\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-'+anio+'-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n\r\n agregarSolicitud(event) {\r\n event.preventDefault();\r\n let terminoeval = this.get_radios(this.props.termino1, this.props.termino2, this.props.termino3, this.props.anio);\r\n this.setState({\r\n termino: terminoeval\r\n })\r\n //console.log('AGREEGANDO SOLICITUD[EXPAND]: ' + this.props.idactividad + '|' + this.props.descripcion + '|' + this.props.totalhoras + '|' + this.props.anio + '|' + terminoeval+'|'+ this.props.tipoactividad+'|'+ this.state.observacion+'|'+ this.props.termino1+'|'+ this.props.termino2+'|'+ this.props.termino3+'|'+ this.state.accion)\r\n this.props.updatestate(this.props.idactividad, this.props.descripcion, this.props.totalhoras, this.props.anio, terminoeval, this.props.tipoactividad, this.state.observacion, this.props.termino1, this.props.termino2, this.props.termino3, this.state.accion)\r\n }\r\n\r\n\r\n render() {\r\n let radios = this.get_radios(this.props.termino1, this.props.termino2, this.props.termino3, this.props.anio);\r\n \r\n // console.log(this.props)\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ActividadObservacionPeriodoAcciones
{this.props.descripcion}\r\n {radios} \r\n \r\n\r\n
\r\n\r\n
\r\n this.handleClick(\"Modificar Carga\")} style={this.state.accion === \"Modificar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />\r\n   |  \r\n this.handleClick(\"Eliminar Carga\")} style={this.state.accion === \"Eliminar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport {Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\n \r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\n//Funcion para colocar color a las headers la tabla\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n} function color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize:11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n }else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) { \r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction estaConformeFormatter(column, colIndex, { sortElement, filterElement }) {\r\n return (\r\n
\r\n { filterElement}\r\n { column.text}\r\n { sortElement}\r\n
\r\n );\r\n\r\n}\r\n \r\nfunction PaoFormatter(cell, row) {\r\n switch (row.termino) {\r\n case \"1ER TERMINO\":\r\n return (\r\n PAO-1\r\n );\r\n break;\r\n case \"2DO TERMINO\":\r\n return (\r\n PAO-2\r\n );\r\n break;\r\n case \"3ER TERMINO\":\r\n return (\r\n PAE\r\n );\r\n break;\r\n default: \r\n return (\r\n {cell}\r\n );\r\n break;\r\n } \r\n}\r\n\r\nfunction desgloseHoras(termino, periodicidad, numhoras, totalhoras) {\r\n if (periodicidad !== \"ANUAL\") {\r\n if (termino === \"1\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"2\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"0\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 8;\r\n }\r\n } else {\r\n return totalhoras;\r\n }\r\n}\r\n\r\nexport class Docencia_Grado_out extends Component {\r\n static displayName = Docencia_Grado_out.name;\r\n static totalmat = 0;\r\n static totalact = 0;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n })); \r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n \r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) { \r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else { \r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n \r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { \r\n actividades: [], solicitudes: [], busqueda: \"\", solicitudes: [], actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n fila: [],\r\n fila_mat: [],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ],materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, loading3: false, expanded: [], expanded_mat: [], total: 0,\r\n materia_elegida: [{ idcurso: 0, validada: \"\", estado_actividad: \"\" }],\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\",abierto:false\r\n };\r\n \r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate = this.updatestate.bind(this);\r\n this.updatestate_mat = this.updatestate_mat.bind(this);\r\n }\r\n\r\n\r\n componentDidMount() { \r\n if (this.state.anio > 0) {\r\n //console.log(\"componentDidMount - cargaAct: \", this.props.cargaAct);\r\n //console.log(\"componentDidMount - cargaMat: \", this.props.cargaMat);\r\n this.populateActividadesData(this.props.idprof,this.props.anio);\r\n this.populateMateriasData(this.props.idprof, this.props.anio);\r\n //this.populateActividadesCombo(this.props.idprof, this.props.anio);\r\n }\r\n\r\n }\r\n\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n updatestate(idactividad, descripcion, totalhoras, anio, termino, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n //const terminos = this.get_radios(pao1, pao2, pae, anio)\r\n var solicitudes = this.state.solicitudes\r\n\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n \r\n solicitudes.push({ idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion })\r\n\r\n this.setState({ solicitudes: solicitudes });\r\n\r\n this.props.update({ ambito: 'A|R', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: 'A|R', pao1: pao1, pao2: pao2, pae: pae, accion: accion });\r\n \r\n }\r\n\r\n updatestate_mat(idcurso, descripcion, observacion, anio, termino,totalhoras, accion) {\r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino,totalhoras:totalhoras,termino:termino, accion: accion\r\n })\r\n this.setState({ solicitudes: solicitudes });\r\n\r\n this.props.update({ ambito: 'M|R', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'M|R', totalhoras: totalhoras, termino: termino, accion: accion});\r\n\r\n }\r\n /////FUNCIONES para interactuar con los si/no de ACtividades\r\n handleHideClick = (idactividad) => { \r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log(this.state.fila); \r\n \r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n \r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila); \r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idactividad)) {\r\n expandir.push(element.idactividad);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n //console.log(this.state.actividades);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleAllCheck() {\r\n //console.log(this.state.fila);\r\n const check = document.getElementsByName(\"all_ag\");\r\n const checkSin = document.getElementById(\"Actividades_ag\").getElementsByClassName('form-check-input');\r\n //console.log(check);\r\n //console.log(checkSin);\r\n if (check[0].checked) {\r\n //console.log('Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'si'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded_mat.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log('MATERIA:' +this.state.fila_mat);\r\n\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n\r\n\r\n //console.log('MATERIA:' +idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila_mat);\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcurso,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n }));\r\n //console.log(this.state.expanded_mat);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcurso,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idcurso)) {\r\n expandir.push(element.idcurso);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n //console.log('MATERIA:'+this.state.fila_mat);\r\n //console.log('MATERIA:' +this.state.materias);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleAllCheck_mat() {\r\n //console.log('MATERIA:' +this.state.fila_mat);\r\n const check = document.getElementsByName(\"all_mg\");\r\n const checkSin = document.getElementById(\"Materias_mg\").getElementsByClassName('form-check-input');\r\n //console.log('MATERIA:' +check);\r\n //console.log('MATERIA:' +checkSin);\r\n if (check[0].checked) {\r\n //console.log('MATERIA:' +'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n renderActividadesTable(actividades) {\r\n //console.log(\"actividades docencia_grado: \", actividades);\r\n var actividades_split = [];\r\n\r\n actividades.map((act, index) => {\r\n if (act.termino3 === \"0\") {\r\n var thoras3 = desgloseHoras(act.termino3, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '0',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": null,\r\n \"termino3\": act.termino3,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino3\r\n });\r\n }\r\n\r\n if (act.termino1 === \"1\") {\r\n var thoras1 = desgloseHoras(act.termino1, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '1',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": act.termino1,\r\n \"termino2\": null,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino1\r\n });\r\n }\r\n\r\n if (act.termino2 === \"2\") {\r\n var thoras2 = desgloseHoras(act.termino2, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '2',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": act.termino2,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino2\r\n });\r\n }\r\n });\r\n\r\n var totalactividades = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n \r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idUnico',\r\n text: 'ID UNICO',\r\n hidden: true\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino1 === \"1\") {\r\n return <>PAO {row.anio}-1\r\n\r\n } else if (row.termino2 === \"2\") {\r\n return <>PAO {row.anio}-2\r\n\r\n } else if (row.termino3 === \"0\") {\r\n return <>PAE {row.anio}\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal: '\r\n },\r\n {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: () => {\r\n return (<>{totalactividades.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n }\r\n //footer: columnData => {\r\n // const total2 = columnData.reduce((acc, item) => (Number(acc) + Number(item)).toFixed(2), 0);\r\n // return (<>{total2} horas);\r\n //},\r\n }, {\r\n dataField: 'tipoactividad',\r\n text: 'tipoactividad',\r\n hidden: true\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n { actividades && actividades.length > 0 ?\r\n : null\r\n }\r\n \r\n \r\n );\r\n }\r\n\r\n renderMateriasTable(materias) { \r\n\r\n const columns_materias = [{\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },{\r\n dataField: 'codigoMateria',\r\n text: 'Código',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nomMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('id'), \r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: PaoFormatter,\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'totalHoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<> {total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n }];\r\n \r\n\r\n return (\r\n \r\n );\r\n \r\n }\r\n \r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n \r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n \r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n \r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate(this.state.selectidact, this.state.selectact, '', this.props.anio, this.state.periodo, 'D', this.state.observacion, termino, termino, termino, 'Nueva Carga')\r\n\r\n //console.log('NUEVOOO' + this.state.selectidact+ this.state.selectact+ ''+ this.props.anio+ this.state.periodo+ 'D'+ this.state.observacion+ termino+ termino+ termino+ 'Nueva Carga')\r\n this.cerrarModal()\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading\r\n ?

Loading...this.populateActividadesData(this.props.anio);

\r\n : this.renderActividadesTable(this.state.actividades);\r\n let contents_mat = this.state.loading2\r\n ?

Loading... this.populateMateriasData(this.props.anio);

\r\n : this.renderMateriasTable(this.state.materias);\r\n \r\n const totalmaterias = this.state.materias ? this.state.materias.map(horastot => horastot.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const totalactividades = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambitout = totalactividades + totalmaterias;\r\n //const talambito = this.formatter(talambitout);\r\n const talambito = talambitout.toLocaleString('en', { maximumFractionDigits: 2 });\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n }; \r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n\r\n return (\r\n
\r\n\r\n {contents_mat}\r\n\r\n {contents} \r\n\r\n
\r\n
Total de Ámbito de Docencia Grado: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona,anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/'+idpersona+'/' +anio+'/R/D');\r\n //const respuesta = await response.json();\r\n //console.log(\"this.props.cargaAct: \", this.props.cargaAct);\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta.filter(x => x.nivelEstudio == 'R');\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|R', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|R', idactividad: act.idactividad, anio: act.anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalhoras, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n\r\n \r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n }\r\n\r\n\r\n async populateMateriasData(idpersona,anio) {\r\n //const response = await fetch(API_URL + 'TblMaterias/' + idpersona +'/' + anio);\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaMat;\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idCurso, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|R', idactividad: act.idCurso }) })\r\n var actividades2 = [];\r\n data.map(act2 => { actividades2.push({ tipo: 'M|R', idactividad: act2.idCurso, anio: act2.anio, descripcion: act2.nomMateria, periodo: act2.termino, accion: '', observacion: '', totalhoras: act2.totalHoras, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n \r\n this.setState({ materia_elegida: selected, materias: data, loading: false });\r\n }\r\n\r\n\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta; \r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport { AppContext } from './../../AppContext';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { Solicitud_materia } from './expand/Solicitud_materia';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\n\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction estaConformeFormatter(column, colIndex, { sortElement, filterElement }) {\r\n return (\r\n
\r\n { filterElement}\r\n { column.text}\r\n { sortElement}\r\n
\r\n );\r\n\r\n}\r\n\r\nfunction desgloseHoras(termino, periodicidad, numhoras, totalhoras) {\r\n if (periodicidad !== \"ANUAL\") {\r\n if (termino === \"1\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"2\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"3\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 8;\r\n }\r\n } else {\r\n return totalhoras;\r\n }\r\n}\r\n\r\nexport class Docencia_Postgrado_out extends Component {\r\n static displayName = Docencia_Postgrado_out.name;\r\n\r\n static totalmat = 0;\r\n static totalact = 0;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n handleBtnClick_mat = () => {\r\n if (!this.state.expanded_mat.includes(0)) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand_mat = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n materias: [], materia: {\r\n idcurso: 0, porc: 0, anio: \"\", term: \"\", termino: \"\", codigomateria: \"\", nommateria: \"\", numhorasteoricas: 0, numhoraspracticas: 0, paralelo: 0, idtipoactividad: 0,\r\n observacion: \"\", fechaInicio: \"\", fechaFin: \"\", valorevaluacion: 0, valornumexam: 0, estadocheck: \"\", tipoprofesor: \"\"\r\n }, loading: false, loading2: false, loading3: false, expanded: [], expanded_mat: [], total: 0,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n anio: props.anio, idpersona: props.idprof,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], actividades_combo: [], periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila_mat: [], fila: []\r\n };\r\n this.onInputChange = this.onInputChange.bind(this);\r\n\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate = this.updatestate.bind(this);\r\n this.updatestate_mat = this.updatestate_mat.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateMateriasData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n onInputChange(event) {\r\n var control = event.target.name;\r\n if (control === \"busqueda\") {\r\n var value = this.state.busqueda;\r\n value = event.target.value;\r\n this.setState({\r\n busqueda: value\r\n });\r\n }\r\n else {\r\n var uActividad = this.state.actividad;\r\n value = event.target.value;\r\n uActividad[control] = value;\r\n this.setState({\r\n actividad: uActividad\r\n });\r\n }\r\n }\r\n\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n\r\n updatestate(idactividad, descripcion, totalhoras, anio, termino, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n //const terminos = this.get_radios(pao1, pao2, pae, anio)\r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({ ambito: 'A|P', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: termino, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion});\r\n\r\n }\r\n\r\n updatestate_mat(idcurso, descripcion, observacion, anio, termino, totalhoras, accion) {\r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idcurso)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, totalhoras: totalhoras, termino: termino, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({ ambito: 'M|P', idactividad: idcurso, descripcion: descripcion, observacion: observacion, anio: anio, pao1: termino, pao2: termino, pae: termino, tipoactividad: 'D', totalhoras: totalhoras, termino: termino, accion: accion})\r\n \r\n }\r\n\r\n /////FUNCIONES para interactuar con los si/no de ACtividades\r\n handleHideClick = (idactividad) => {\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n\r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idactividad)) {\r\n expandir.push(element.idactividad);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n //console.log(this.state.actividades);\r\n this.handleAllCheck()\r\n //console.log('ACTIVIDAD:' + this.state.fila);\r\n //console.log('ACTIVIDAD:' + this.state.actividades);\r\n }\r\n\r\n handleAllCheck() {\r\n //console.log(this.state.fila);\r\n const check = document.getElementsByName(\"all_apg\");\r\n const checkSin = document.getElementById(\"Actividades_Postg\").getElementsByClassName('form-check-input');\r\n //console.log(check);\r\n //console.log(checkSin);\r\n if (check[0].checked) {\r\n //console.log('Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /////FUNCIONES para interactuar con los si/no de Materias\r\n handleHideClick_mat = (idactividad) => {\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'si'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded_mat.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n\r\n }\r\n\r\n handleShowClick_mat = (idactividad) => {\r\n\r\n\r\n //console.log('MATERIA:' + idactividad)\r\n if (!this.state.expanded_mat.includes(idactividad)) {\r\n\r\n let obj = this.state.fila_mat.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila_mat[i].validacion = 'no'\r\n return this.state.fila_mat[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila_mat.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded_mat: [...this.state.expanded_mat, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila_mat);\r\n }\r\n\r\n handleHideAllClick_mat = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcplpostgrados,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded_mat: [],\r\n fila_mat: filas\r\n }));\r\n //console.log(this.state.expanded_mat);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleShowAllClick_mat = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.materias.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idcplpostgrados,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded_mat.includes(element.idcplpostgrados)) {\r\n expandir.push(element.idcplpostgrados);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded_mat: this.state.expanded_mat.concat(expandir),\r\n fila_mat: filas\r\n }));\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n //console.log('MATERIA:' + this.state.materias);\r\n this.handleAllCheck_mat()\r\n }\r\n\r\n handleAllCheck_mat() {\r\n //console.log('MATERIA:' + this.state.fila_mat);\r\n const check = document.getElementsByName(\"all_mpg\");\r\n const checkSin = document.getElementById(\"Materias_Postg\").getElementsByClassName('form-check-input');\r\n //console.log('MATERIA:' + check);\r\n //console.log('MATERIA:' + checkSin);\r\n if (check[0].checked) {\r\n //console.log('MATERIA:' + 'Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n renderActividadesTable(actividades) {\r\n var actividades_split = [];\r\n\r\n actividades.map((act, index) => {\r\n if (act.termino3 === \"0\") {\r\n var thoras3 = desgloseHoras(act.termino3, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '0',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": null,\r\n \"termino3\": act.termino3,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino3\r\n });\r\n }\r\n\r\n if (act.termino1 === \"1\") {\r\n var thoras1 = desgloseHoras(act.termino1, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '1',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": act.termino1,\r\n \"termino2\": null,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino1\r\n });\r\n }\r\n\r\n if (act.termino2 === \"2\") {\r\n var thoras2 = desgloseHoras(act.termino2, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '2',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": act.termino2,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino2\r\n });\r\n }\r\n });\r\n\r\n var totalactividades = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n\r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n footer: '',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idUnico',\r\n text: 'ID UNICO',\r\n hidden: true\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino1',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino1 === \"1\") {\r\n return <>PAO {row.anio}-1\r\n\r\n } else if (row.termino2 === \"2\") {\r\n return <>PAO {row.anio}-2\r\n\r\n } else if (row.termino3 === \"0\") {\r\n return <>PAE {row.anio}\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: () => {\r\n return (<>{totalactividades.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n }\r\n }];\r\n\r\n return (\r\n <>\r\n { actividades && actividades.length > 0 ?\r\n : null\r\n }\r\n \r\n\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n renderMateriasTable(materias) {\r\n\r\n const columns_materias = [{\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'codigoCurso',\r\n text: 'Código',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'nomMateria',\r\n text: 'Asignatura',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'cohorte',\r\n text: 'Cohorte',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'fechaInicio',\r\n text: 'Fecha Inicio',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => { \r\n return (\r\n
\r\n {row.fechaInicio.split('T')[0]}\r\n
\r\n )\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'fechaFin',\r\n text: 'Fecha Fin',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {row.fechaFin.split('T')[0]}\r\n
\r\n )\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'paralelo',\r\n text: 'Paralelo',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n var respu;\r\n if (row.termino.trim() === \"1\" || row.termino.trim() === \"1S\") {\r\n return (\r\n <>PAO-{row.anio}-1\r\n );\r\n } else if (row.termino.trim() === \"2\" || row.termino.trim() === \"2S\") {\r\n return (\r\n <>PAO-{row.anio}-2\r\n );\r\n\r\n } else if (row.termino.trim() === \"3\" || row.termino.trim() === \"3S\" || row.termino.trim() === \"PAO-20220\") {\r\n return (\r\n <>PAE-{row.anio}\r\n );\r\n\r\n } else {\r\n\r\n return (\r\n <>{row.termino}\r\n );\r\n }\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'horasTotales',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData2 => {\r\n const total1 = columnData2.reduce((acc2, item2) => (Number(acc2) + Number(item2)).toFixed(2), 0);\r\n return (<>{total1.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n }];\r\n \r\n return (\r\n \r\n );\r\n\r\n \r\n}\r\n\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate(this.state.selectidact, this.state.selectact, '', this.props.anio, this.state.periodo, 'D', this.state.observacion, termino, termino, termino, 'Nueva Carga')\r\n \r\n this.cerrarModal()\r\n }\r\n render() {\r\n\r\n let contents = this.state.loading\r\n ?

Loading...this.populateActividadesData(this.props.anio);

\r\n : this.renderActividadesTable(this.state.actividades);\r\n\r\n\r\n let contents_mat = this.state.loading2\r\n ?

Loading... this.populateMateriasData(this.props.anio);

\r\n : this.renderMateriasTable(this.state.materias);\r\n \r\n const totalpepa = this.state.materias ? this.state.materias.map(horastot => horastot.horasTotales).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambitout = totalpepa + totalpepa2;\r\n //const talambito = this.formatter(talambitout);\r\n const talambito = talambitout.toLocaleString('en', { maximumFractionDigits: 2 })\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n\r\n return (\r\n
\r\n \r\n {contents_mat}\r\n \r\n {contents}\r\n\r\n\r\n
\r\n
Total de Ámbito de Docencia PostGrado: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/' + idpersona + '/' + anio + '/P/D');\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta.filter(x => x.nivelEstudio == 'P');\r\n var selected = []\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })//data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|P', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|P', idactividad: act.idactividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalhoras, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n\r\n async populateMateriasData(idpersona, anio) {\r\n //const response = await fetch(API_URL + 'TblMateriasPostg/' + idpersona + '/' + anio);\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaMat;\r\n //console.log(\"respuesta: materiasPOSTGRADO: \", respuesta);\r\n const data = respuesta;\r\n this.setState({ materias: data, loading2: false });\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idcurso: act.idCplPostGrados, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'MR', idactividad: act.idcurso, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino}) })\r\n data.map(act => { actividades.push({ ambito: 'M|P', idactividad: act.idCplPostGrados }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'M|P', idactividad: act.idCplPostGrados, anio: act.anio, descripcion: act.nomMateria, periodo: act.termino, accion: '', observacion: '', totalhoras: act.horasTotales, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n\r\n }\r\n\r\n this.setState({ materia_elegida: selected, materias: data, loading: false });\r\n\r\n }\r\n\r\n\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/R/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\nDocencia_Postgrado_out.contextType = AppContext;","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport cellEditFactory, { Type } from 'react-bootstrap-table2-editor';\r\nimport ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad'; \r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo === 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo === 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo === 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction desgloseHoras(termino, periodicidad, numhoras, totalhoras) {\r\n if (periodicidad !== \"ANUAL\") {\r\n if (termino === \"1\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"2\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"0\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 8;\r\n }\r\n } else {\r\n return totalhoras;\r\n }\r\n}\r\n\r\nexport class Gestion_Academica_out extends Component {\r\n static displayName = Gestion_Academica_out.name;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, total: 0,\r\n materia_elegida: [\r\n { idcurso: 0, validada: \"\", estado_actividad: \"\" }\r\n ],\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: []\r\n };\r\n\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate = this.updatestate.bind(this); \r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.props.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.props.anio);\r\n }\r\n }\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-1
PAO {anio}-2\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n <> PAO {anio}-1
PAE {anio}\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n <> PAO {anio}-1
PAO {anio}-2\r\n );\r\n } else {\r\n return (\r\n PAO {anio}-1\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n <> PAO {anio}-1
PAO {anio}-2\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n <> PAO {anio}-2
PAE {anio}\r\n );\r\n }\r\n return (\r\n PAO {anio}-2\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-1\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-2\r\n );\r\n }\r\n return (\r\n PAE {anio}\r\n );\r\n }\r\n }\r\n\r\n updatestate(idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n //const terminos = this.get_radios(pao1, pao2, pae, anio) \r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({ ambito: 'A|G', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion });\r\n\r\n }\r\n \r\n\r\n handleHideClick = (idactividad) => {\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n\r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idactividad)) {\r\n expandir.push(element.idactividad);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n //console.log(this.state.actividades);\r\n this.handleAllCheck()\r\n\r\n }\r\n\r\n handleAllCheck() {\r\n //console.log(this.state.fila);\r\n const check = document.getElementsByName(\"all_ga\");\r\n const checkSin = document.getElementById(\"Actividades_ga\").getElementsByClassName('form-check-input');\r\n //console.log(check);\r\n //console.log(checkSin);\r\n if (check[0].checked) {\r\n //console.log('Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n renderActividadesTable(actividades) {\r\n //console.log(\"gestion_academica_out: \", actividades);\r\n\r\n var actividades_split = [];\r\n\r\n actividades.map((act, index) => {\r\n if (act.termino3 === \"0\") {\r\n var thoras3 = desgloseHoras(act.termino3, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '0',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": null,\r\n \"termino3\": act.termino3,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino3\r\n });\r\n }\r\n\r\n if (act.termino1 === \"1\") {\r\n var thoras1 = desgloseHoras(act.termino1, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '1',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": act.termino1,\r\n \"termino2\": null,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino1\r\n });\r\n }\r\n\r\n if (act.termino2 === \"2\") {\r\n var thoras2 = desgloseHoras(act.termino2, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '2',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": act.termino2,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino2\r\n });\r\n }\r\n });\r\n\r\n var totalpepa = 0;\r\n var totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n var talambito = totalpepa + totalpepa2;\r\n\r\n const columns_acti = [{\r\n dataField: 'id',\r\n text: '#',\r\n footer: '',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idUnico',\r\n text: 'ID UNICO',\r\n hidden: true\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino1',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino1 === \"1\") {\r\n return <>PAO {row.anio}-1\r\n\r\n } else if (row.termino2 === \"2\") {\r\n return <>PAO {row.anio}-2\r\n\r\n } else if (row.termino3 === \"0\") {\r\n return <>PAE {row.anio}\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: () => {\r\n return (<>{talambito.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n\r\n\r\n }];\r\n \r\n return (\r\n \r\n\r\n );\r\n }\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate(this.state.selectidact, this.state.selectact, '', this.props.anio, this.state.periodo, 'D', this.state.observacion, termino, termino, termino, 'Nueva Carga')\r\n\r\n //console.log('NUEVOOO' + this.state.selectidact + this.state.selectact + '' + this.props.anio + this.state.periodo + 'D' + this.state.observacion + termino + termino + termino + 'Nueva Carga')\r\n this.cerrarModal()\r\n }\r\n render() {\r\n\r\n let contents = this.state.loading\r\n ?

Loading...this.populateActividadesData(this.props.anio);

\r\n : this.renderActividadesTable(this.state.actividades);\r\n\r\n\r\n const totalpepa =0;\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = (totalpepa + totalpepa2).toLocaleString('en', { maximumFractionDigits: 2 });\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n\r\n return (\r\n
\r\n \r\n {contents}\r\n\r\n\r\n
\r\n
Total de Ámbito de Docencia Gestión Académica: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n } \r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/' + idpersona + '/' + anio + '/R/A');\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|G', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|G', idactividad: act.idactividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalhoras, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/A/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n\r\n}","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction desgloseHoras(termino, periodicidad, numhoras, totalhoras) {\r\n if (periodicidad !== \"ANUAL\") {\r\n if (termino === \"1\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"2\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"0\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 8;\r\n }\r\n } else {\r\n return totalhoras;\r\n }\r\n}\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nexport class Investigacion_out extends Component {\r\n static displayName = Investigacion_out.name;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: []\r\n };\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate = this.updatestate.bind(this); \r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n\r\n updatestate(idactividad, descripcion, totalhoras, anio,terminos, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({ ambito: 'A|I', idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion});\r\n\r\n //console.log('DESDE INVESTIGACION->'+JSON.stringify(solicitudes))\r\n }\r\n\r\n\r\n handleHideClick = (idactividad) => {\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n\r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idactividad)) {\r\n expandir.push(element.idactividad);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n //console.log(this.state.actividades);\r\n this.handleAllCheck()\r\n\r\n }\r\n\r\n handleAllCheck() {\r\n //console.log(this.state.fila);\r\n const check = document.getElementsByName(\"all_inv\");\r\n const checkSin = document.getElementById(\"Actividades_inv\").getElementsByClassName('form-check-input');\r\n //console.log(check);\r\n //console.log(checkSin);\r\n if (check[0].checked) {\r\n //console.log('Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n renderActividadesTable(actividades) {\r\n var actividades_split = [];\r\n\r\n actividades.map((act, index) => {\r\n if (act.termino3 === \"0\") {\r\n var thoras3 = desgloseHoras(act.termino3, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '0',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": null,\r\n \"termino3\": act.termino3,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino3\r\n });\r\n }\r\n\r\n if (act.termino1 === \"1\") {\r\n var thoras1 = desgloseHoras(act.termino1, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '1',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": act.termino1,\r\n \"termino2\": null,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino1\r\n });\r\n }\r\n\r\n if (act.termino2 === \"2\") {\r\n var thoras2 = desgloseHoras(act.termino2, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '2',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": act.termino2,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino2\r\n });\r\n }\r\n });\r\n\r\n var totalpepa = 0;\r\n var totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n var talambito = totalpepa + totalpepa2;\r\n\r\n const columns_acti = [{\r\n dataField: 'id',\r\n text: '#',\r\n\r\n footer: '',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idUnico',\r\n text: 'ID UNICO',\r\n hidden: true\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'termino1',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino1 === \"1\") {\r\n return <>PAO {row.anio}-1\r\n\r\n } else if (row.termino2 === \"2\") {\r\n return <>PAO {row.anio}-2\r\n\r\n } else if (row.termino3 === \"0\") {\r\n return <>PAE {row.anio}\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: () => {\r\n return (<>{talambito.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n }\r\n }];\r\n\r\n return (\r\n \r\n\r\n );\r\n }\r\n\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate(this.state.selectidact, this.state.selectact, '', this.props.anio, this.state.periodo, 'D', this.state.observacion, termino, termino, termino, 'Nueva Carga')\r\n\r\n //console.log('NUEVOOO' + this.state.selectidact + this.state.selectact + '' + this.props.anio + this.state.periodo + 'D' + this.state.observacion + termino + termino + termino + 'Nueva Carga')\r\n this.cerrarModal()\r\n }\r\n\r\n render() {\r\n\r\n let contents = this.state.loading\r\n ?

Loading...this.populateActividadesData(this.props.anio);

\r\n : this.renderActividadesTable(this.state.actividades);\r\n\r\n\r\n const totalpepa = 0;\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = (totalpepa + totalpepa2).toLocaleString('en', { maximumFractionDigits: 2 });\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n\r\n return (\r\n
\r\n {contents}\r\n\r\n\r\n
\r\n
Total de Ámbito de Investigación: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/' + idpersona + '/' + anio + '/R/I');\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = [];\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'A|I', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|I', idactividad: act.idactividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalhoras, validado: 1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/I/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport enviar from './../img/svg/Enviar(blanco).svg';\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo === 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo === 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo === 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '15%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nfunction desgloseHoras(termino, periodicidad, numhoras, totalhoras) {\r\n if (periodicidad !== \"ANUAL\") {\r\n if (termino === \"1\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"2\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 20;\r\n\r\n } else if (termino === \"0\") {\r\n return periodicidad === \"SEMESTRAL\" ? numhoras : numhoras * 8;\r\n }\r\n } else {\r\n return totalhoras;\r\n }\r\n}\r\n \r\nexport class Vinculacion_out extends Component {\r\n static displayName = Vinculacion_out.name;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], solicitudes: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n },\r\n actividad_elegida: [\r\n { idactividad: 0, validada: \"\", estado_actividad: \"\" }\r\n ], loading: false, loading2: false, loading3: false, expanded: [], total: 0,\r\n anio: props.anio, idpersona: props.idprof, actividades_combo: []\r\n , periodo: \"\", newactividad: \"\", observacion: \"\",\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, fila: []\r\n };\r\n\r\n this.onChangePao = this.onChangePao.bind(this);\r\n this.handleSearch = this.handleSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleNew = this.handleNew.bind(this);\r\n\r\n this.updatestate = this.updatestate.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesData(this.state.idpersona, this.state.anio);\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-1
PAO {anio}-2\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n <> PAO {anio}-1
PAE {anio}\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n <> PAO {anio}-1
PAO {anio}-2\r\n );\r\n } else {\r\n return (\r\n PAO {anio}-1\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n <> PAO {anio}-1
PAO {anio}-2\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n <> PAO {anio}-2
PAE {anio}\r\n );\r\n }\r\n return (\r\n PAO {anio}-2\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-1\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n <> PAE {anio}
PAO {anio}-2\r\n );\r\n }\r\n return (\r\n PAE {anio}\r\n );\r\n }\r\n }\r\n\r\n updatestate(idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n //const terminos = this.get_radios(pao1, pao2, pae, anio)\r\n \r\n var solicitudes = this.state.solicitudes\r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n\r\n this.props.update({\r\n ambito: 'A|V', idactividad: idactividad, observacion: observacion, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n });\r\n\r\n }\r\n\r\n handleHideClick = (idactividad) => {\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idactividad)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idactividad)\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n\r\n }\r\n\r\n handleShowClick = (idactividad) => {\r\n\r\n\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idactividad)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idactividad === idactividad) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idactividad: idactividad,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idactividad]\r\n }));\r\n }\r\n //console.log(this.state.fila);\r\n }\r\n\r\n handleHideAllClick = () => {\r\n\r\n let filas = [];\r\n\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'si'\r\n });\r\n })\r\n this.setState(() => ({\r\n expanded: [],\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleShowAllClick = () => {\r\n\r\n let filas = [];\r\n let expandir = [];\r\n this.state.actividades.forEach((element) => {\r\n filas.push({\r\n idactividad: element.idactividad,\r\n validacion: 'no'\r\n });\r\n if (!this.state.expanded.includes(element.idactividad)) {\r\n expandir.push(element.idactividad);\r\n }\r\n })\r\n this.setState(() => ({\r\n expanded: this.state.expanded.concat(expandir),\r\n fila: filas\r\n }));\r\n //console.log(this.state.fila);\r\n //console.log(this.state.actividades);\r\n this.handleAllCheck()\r\n }\r\n\r\n handleAllCheck() {\r\n //console.log(this.state.fila);\r\n const check = document.getElementsByName(\"all_vi\");\r\n const checkSin = document.getElementById(\"Actividades_vi\").getElementsByClassName('form-check-input');\r\n //console.log(check);\r\n //console.log(checkSin);\r\n if (check[0].checked) {\r\n //console.log('Siu');\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"1\") {\r\n checkSin[i].checked = true;\r\n } else{\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 0; i < checkSin.length; i++) {\r\n if (checkSin[i].value === \"0\") {\r\n //console.log('Nou');\r\n checkSin[i].checked = true;\r\n } else {\r\n checkSin[i].checked = false;\r\n }\r\n }\r\n }\r\n }\r\n renderActividadesTable(actividades) {\r\n //console.log(\"vinculacion_out: \", actividades);\r\n\r\n var actividades_split = [];\r\n\r\n actividades.map((act, index) => {\r\n if (act.termino3 === \"0\") {\r\n var thoras3 = desgloseHoras(act.termino3, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '0',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": null,\r\n \"termino3\": act.termino3,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino3\r\n });\r\n }\r\n\r\n if (act.termino1 === \"1\") {\r\n var thoras1 = desgloseHoras(act.termino1, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '1',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": act.termino1,\r\n \"termino2\": null,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino1\r\n });\r\n }\r\n\r\n if (act.termino2 === \"2\") {\r\n var thoras2 = desgloseHoras(act.termino2, act.periodicidad, act.numhoras, act.totalhoras);\r\n actividades_split.push({\r\n \"actividad\": act.actividad,\r\n \"anio\": act.anio,\r\n \"descripcion\": act.descripcion,\r\n \"escarga\": act.escarga,\r\n \"estadocheck\": act.estadocheck,\r\n \"idactividad\": act.idactividad,\r\n \"idUnico\": act.idactividad + '2',\r\n \"idtipoactividad\": act.idtipoactividad,\r\n \"nivelEstudio\": act.nivelEstudio,\r\n \"numhoras\": act.numhoras,\r\n \"periodicidad\": act.periodicidad,\r\n \"termino1\": null,\r\n \"termino2\": act.termino2,\r\n \"termino3\": null,\r\n \"tipoactividad\": act.tipoactividad,\r\n \"totalhoras\": act.horastermino2\r\n });\r\n }\r\n });\r\n\r\n const totalpepa = 0;\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = totalpepa + totalpepa2;\r\n\r\n const columns_acti = [{\r\n dataField: 'id',\r\n text: '#',\r\n\r\n footer: '',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n }, {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'idUnico',\r\n text: 'ID UNICO',\r\n hidden: true\r\n }, {\r\n dataField: 'actividad',\r\n text: 'Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino1',\r\n text: 'Periodo',\r\n formatter: (cellContent, row) => {\r\n if (row.termino1 === \"1\") {\r\n return <>PAO {row.anio}-1\r\n\r\n } else if (row.termino2 === \"2\") {\r\n return <>PAO {row.anio}-2\r\n\r\n } else if (row.termino3 === \"0\") {\r\n return <>PAE {row.anio}\r\n }\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: 'Subtotal: '\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: () => {\r\n return (<>{talambito.toLocaleString('en', { maximumFractionDigits: 2 })} horas);\r\n },\r\n\r\n\r\n }];\r\n\r\n return (\r\n \r\n\r\n );\r\n }\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n handleChange(e) {\r\n var idactividad = e.target.value;\r\n var data = this.state.actividades_combo.filter(x => x.idactividad == idactividad).map(act => act.descripcion);\r\n\r\n this.setState({ selectact: data, selectidact: e.target.value });\r\n }\r\n\r\n handleSearch(event) {\r\n this.setState({ observacion: event.target.value });\r\n //console.log(this.state.observacion);\r\n }\r\n\r\n\r\n onChangePao(event) {\r\n this.setState({\r\n periodo: event.target.value\r\n })\r\n //console.log(this.state.periodo)\r\n }\r\n\r\n abrirModal = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n cerrarModal = () => {\r\n this.setState({ abierto: false });\r\n }\r\n\r\n handleNew(e) {\r\n var termino = this.state.periodo\r\n this.updatestate(this.state.selectidact, this.state.selectact, '', this.props.anio, this.state.periodo, 'D', this.state.observacion, termino, termino, termino, 'Nueva Carga')\r\n\r\n //console.log('NUEVOOO' + this.state.selectidact + this.state.selectact + '' + this.props.anio + this.state.periodo + 'D' + this.state.observacion + termino + termino + termino + 'Nueva Carga')\r\n this.cerrarModal()\r\n }\r\n render() {\r\n\r\n let contents = this.state.loading\r\n ?

Loading...this.populateActividadesData(this.props.anio);

\r\n : this.renderActividadesTable(this.state.actividades);\r\n\r\n\r\n const totalpepa = 0;\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalHoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = (totalpepa + totalpepa2).toLocaleString('en', { maximumFractionDigits: 2 });\r\n\r\n const combo = {\r\n width: '150px',\r\n };\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const estilo = {\r\n color: 'white',\r\n fontSize: '15px',\r\n marginBottom: '20px',\r\n fontFamily: 'Robota'\r\n };\r\n\r\n const form_nuevo = {\r\n fontSize: '0.65em',\r\n color: \"darkgray\"\r\n };\r\n\r\n return (\r\n
\r\n \r\n {contents}\r\n\r\n\r\n
\r\n
Total de Ámbito de Vinculación: {talambito} horas
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData(idpersona, anio) {\r\n\r\n //const response = await fetch(API_URL + 'TblActividades/' + idpersona + '/' + anio + '/R/V');\r\n //const respuesta = await response.json();\r\n const respuesta = this.props.cargaAct;\r\n const data = respuesta;\r\n var selected = []\r\n var actividades = [];\r\n if (data) {\r\n data.map(act => { selected.push({ idactividad: act.idactividad, validada: \"\", estado_actividad: \"\" }) })\r\n //data.map(act => { actividades.push({ ambito: 'AR', idactividad: act.idactividad, totalhoras: act.totalhoras, anio: act.anio, termino: act.termino1 + '|' + act.termino2 + '|' + act.termino3 }) })\r\n data.map(act => { actividades.push({ ambito: 'V', idactividad: act.idactividad }) })\r\n var actividades2 = [];\r\n data.map(act => { actividades2.push({ tipo: 'A|V', idactividad: act.idactividad, anio: anio, descripcion: act.descripcion, periodo: act.termino1 + '|' + act.termino2 + '|' + act.termino3, accion: '', observacion: '', totalhoras: act.totalhoras,validado:1 }) })\r\n this.props.updateCarga(actividades, actividades2);\r\n }\r\n \r\n this.setState({ actividad_elegida: selected, actividades: data, loading: false });\r\n\r\n\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/V/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome' \r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Modal, Col, Row, Container } from 'react-bootstrap';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { faSync, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '10%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\n\r\nexport class Solicitud_General_out extends Component {\r\n static displayName = Solicitud_General_out.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades:[], loading: false, loading2: false,accion:\"\"\r\n };\r\n \r\n \r\n }\r\n\r\n \r\n componentDidMount() {\r\n this.populateActividadesData();\r\n \r\n\r\n\r\n }\r\n \r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n render() {\r\n\r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n footer: '',\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'tipo',\r\n text: 'Ámbito',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n var ambito = row.tipo.split('|')[1]\r\n if (ambito === \"R\") {\r\n return (
Docencia Grado
)\r\n } else if (ambito === \"P\") {\r\n return (
Docencia PostGrado
)\r\n } else if (ambito === \"V\") {\r\n return (
Vinculación
)\r\n } else if (ambito === \"I\") {\r\n return (
Investigación
)\r\n } else if (ambito === \"G\") {\r\n return (
Gestion Académica
)\r\n } else {\r\n return (
Docencia Admisión
)\r\n }\r\n \r\n }\r\n },\r\n {\r\n dataField: 'idplnvalidaciondet',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'observacion',\r\n text: 'Observación',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'periodo',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n return (<>{row.periodo});\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'accion',\r\n text: 'Acción',\r\n formatter: (cellContent, row) => {\r\n var accion = row.accion\r\n if (row.accion == 'M') {\r\n return (<>Modificar carga);\r\n } else if (row.accion == 'C') {\r\n return (<>Nueva carga);\r\n } else {\r\n return (<>Eliminar carga);\r\n }\r\n \r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n } ];\r\n\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n

RESUMEN GENERAL

\r\n \r\n
\r\n \r\n
\r\n\r\n {this.state.actividades && this.state.actividades.length > 0 ?\r\n\r\n : null\r\n }\r\n \r\n\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData() {\r\n \r\n const response = await fetch(API_URL + 'TPlnValidacionDets/' + this.props.idcargadet );\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n \r\n this.setState({ actividades: data, loading: false });\r\n\r\n\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome' \r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Modal, Col, Row, Container } from 'react-bootstrap';\r\nimport { Solicitud_actividad } from './expand/Solicitud_actividad';\r\nimport { faSync, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '15%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '10%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\nfunction color_head_desc_gen(tipo) {\r\n if (tipo == 'ob') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '25%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '18%'\r\n }\r\n } else if (tipo == 'idn') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '5%'\r\n };\r\n } else if (tipo == 'estado') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '8%'\r\n };\r\n } else if (tipo == 'mensaje') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '16%'\r\n };\r\n } else if (tipo == 'accion') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '8%'\r\n };\r\n } else if (tipo == 'periodo') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '8%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '12%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n \r\n\r\nexport class Resumen_final extends Component {\r\n static displayName = Resumen_final.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], loading: false, loading2: false, accion: \"\", rechazos: this.props.rechazos\r\n };\r\n \r\n \r\n }\r\n\r\n \r\n componentDidMount() {\r\n this.populateActividadesData();\r\n\r\n //console.log('didmount del solicitud general ')\r\n\r\n let btnfin = document.getElementsByClassName('btn-finish');\r\n //console.log(btnfin)\r\n if (btnfin[0] != undefined) {\r\n //console.log('dentro del no UNDEFINED finis RENDER button')\r\n //btnfin[0].style.display = \"none\";\r\n\r\n //btnfin.hidden = true;\r\n }\r\n\r\n\r\n }\r\n \r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n render() {\r\n // tabla resumen\r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n footer: '',\r\n headerStyle: color_head_desc_gen('idn'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'tipo',\r\n text: 'Ámbito',\r\n headerStyle: color_head_desc_gen('amb'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n var ambito = row.tipo.split('|')[1]\r\n if (ambito === \"R\") {\r\n return (
Docencia Grado
)\r\n } else if (ambito === \"P\") {\r\n return (
Docencia PostGrado
)\r\n } else if (ambito === \"V\") {\r\n return (
Vinculación
)\r\n } else if (ambito === \"I\") {\r\n return (
Investigación
)\r\n } else if (ambito === \"G\") {\r\n return (
Gestion Académica
)\r\n } else {\r\n return (
Docencia Admisión
)\r\n }\r\n \r\n }\r\n },\r\n {\r\n dataField: 'idplnvalidaciondet',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Descripción',\r\n headerStyle: color_head_desc_gen('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'observacion',\r\n text: 'Observación',\r\n headerStyle: color_head_desc_gen('ob'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'accion',\r\n text: 'Acción',\r\n headerStyle: color_head_desc_gen('accion'),\r\n formatter: (cellContent, row) => {\r\n var accion = row.accion\r\n if (row.accion == 'M') {\r\n return (<>Modificar carga);\r\n } else if (row.accion == 'C') {\r\n return (<>Nueva carga);\r\n } else {\r\n return (<>Eliminar carga);\r\n }\r\n\r\n },\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'periodo',\r\n text: 'Periodo',\r\n headerStyle: color_head_desc_gen('periodo'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n return (<>{row.periodo});\r\n },\r\n footer: ''\r\n }, \r\n {\r\n text: 'Estado',\r\n isDummyField: true,\r\n headerStyle: color_head_desc_gen('estado'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n var elementoSC = this.state.rechazos ? this.state.rechazos.find(x => x.idVal === row['idplnvalidaciondet']) : null;\r\n //console.log(\"elementoSC: \", elementoSC);\r\n\r\n return (\r\n <>\r\n {/*{this.state.rechazos && this.state.rechazos.some(x => x.idVal === row['idplnvalidaciondet'])*/}\r\n {/* ?
*/}\r\n {/* {this.state.rechazos.some(x => x.idVal === row['idplnvalidaciondet']) ? (<>RECHAZADO) :*/}\r\n {/* (<>PENDIENTE) }*/}\r\n {/*
*/}\r\n {/*:
<>PENDIENTE
}*/}\r\n \r\n {this.state.rechazos && this.state.rechazos.some(x => x.idVal === row['idplnvalidaciondet'])\r\n ?
\r\n {elementoSC[\"estado\"] === \"A\" && <>APROBADO}\r\n {(elementoSC[\"estado\"] === \"R\" || elementoSC[\"estado\"] === \"RA\") && <>RECHAZADO}\r\n {elementoSC[\"estado\"] === \"P\" && <>PENDIENTE}\r\n
\r\n :
<>PENDIENTE
}\r\n \r\n )\r\n },\r\n footer: ''\r\n },\r\n {\r\n text: 'Mensaje',\r\n isDummyField: true,\r\n headerStyle: color_head_desc_gen('mensaje'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n <>\r\n {this.state.rechazos ? this.state.rechazos.some(x => x.idVal === row['idplnvalidaciondet'])\r\n ?
\r\n {this.state.rechazos.find(x => x.idVal === row['idplnvalidaciondet']).mensaje}\r\n
\r\n : <> : <>}\r\n \r\n )\r\n },\r\n footer: ''\r\n } ];\r\n\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n {this.state.actividades && this.state.actividades.length > 0 ?\r\n <>\r\n \r\n

RESUMEN DE CARGA OBSERVADA

\r\n \r\n
\r\n \r\n
\r\n : null\r\n }\r\n \r\n\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesData() {\r\n //console.log(\"EO\")\r\n const response = await fetch(API_URL + 'TPlnValidacionDets/' + this.props.idcargadet);\r\n //console.log(\"EO\")\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n //console.log(\"DATA FINAAL\", respuesta)\r\n this.setState({ actividades: data, loading: false });\r\n\r\n\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './../css/Actividad.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { faHome, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { ReactComponent as EditarIcon } from './../../img//svg/Editar.svg';\r\nimport { ReactComponent as EliminarIcon } from './../../img//svg/Eliminar.svg';\r\nimport enviar from './../../img/svg/Enviar(blanco).svg';\r\nimport Swal from 'sweetalert2'\r\n\r\nexport class Solicitud_generica extends Component {\r\n static displayName = Solicitud_generica.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], busqueda: \"\", actividad: {\r\n idactividad: 0, actividad: \"\", tipoactividad: 0, descripcion: \"\", idtipoactividad: \"\", numhoras: 0,\r\n anio: \"\", termino: \"\", termino1: \"\", termino2: \"\", termino3: \"\", periodicidad: \"\", totalhoras: 0, estadocheck: \"\", escarga: \"\"\r\n }, termino: \"\", observacion: \"\", pao1: \"\", pao2: \"\", pae: \"\", accion: \"\",loading: false, loading2: false\r\n };\r\n this.onInputChange = this.onInputChange.bind(this); \r\n this.cambiarSolicitud = this.cambiarSolicitud.bind(this);\r\n this.onChangeValue = this.onChangeValue.bind(this);\r\n this.onChangeRadioAcciones = this.onChangeRadioAcciones.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ \r\n observacion: this.props.observacion,\r\n accion: this.props.accion\r\n }, () => {\r\n //console.log(\"state solicitud_generica :\", this.state);\r\n //console.log(\"props solicitud_generica :\", this.props);\r\n })\r\n //console.log(this.state.termino)\r\n }\r\n\r\n\r\n onInputChange(event) {\r\n //console.log(JSON.stringify(event.target.name))\r\n var control = event.target.name;\r\n if (control === \"review\") {\r\n //var value = this.state.observacion;\r\n var value = event.target.value.toUpperCase();\r\n this.setState({\r\n observacion: value\r\n });\r\n }\r\n else if (control === \"inlineRadioOptions\") {\r\n var value = event.target.value;\r\n\r\n this.setState({\r\n pao1: value == 1 ? \"1\" : \"\",\r\n pao2: value == 2 ? \"2\" : \"\",\r\n pa3: value == 3 ? \"3\" : \"\"\r\n });\r\n } else if (control === \"inlineRadioAction\") {\r\n var value = event.target.value;\r\n this.setState({\r\n accion: value, \r\n });\r\n }\r\n }\r\n\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n //console.log('accion:', text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n onChangeValue(event) {\r\n this.setState({\r\n accion: event.target.value,\r\n });\r\n }\r\n\r\n // funcion para los radio buttons de update delete\r\n onChangeRadioAcciones(text) {\r\n //console.log(\"onChangeRadioAcciones: \", text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n\r\n cambiarSolicitud(event) {\r\n event.preventDefault(); \r\n\r\n Swal.fire({\r\n title: 'Hecho!',\r\n text: 'Actividad actualizada exitosamente',\r\n icon: 'success',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n\r\n });\r\n //console.log('ENVIANDO DES SOLICITUD GENERICA EL CAMMBIO de OBS: ' + this.state.observacion);\r\n //console.log('AGREEGANDO SOLICITUD[EXPAND]: ' + this.props.idactividad + '|' + this.props.descripcion + '|' + this.props.totalhoras + '|' + this.props.anio + '|' + terminoeval+'|'+ this.props.tipoactividad+'|'+ this.state.observacion+'|'+ this.props.termino1+'|'+ this.props.termino2+'|'+ this.props.termino3+'|'+ this.state.accion)\r\n this.props.updatestate_solicitud(this.props.rowindex, this.state.observacion, this.state.accion);\r\n this.props.handleHideClick(this.props.idUnico);\r\n }\r\n\r\n handlkeyPress(evento) {\r\n // console.log(String.fromCharCode(event.keyCode));\r\n let tecla = evento.which;\r\n let caracter = String.fromCharCode(tecla)\r\n let regex = new RegExp(\"^[A-Za-z0-9 ,.]+$\");\r\n\r\n\r\n if (!regex.test(caracter)) {\r\n\r\n Swal.fire({\r\n title: 'Lo sentimos!',\r\n text: 'El campo de observación no permite caracteres especiales.',\r\n icon: 'error',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n\r\n return false;\r\n }\r\n\r\n }\r\n\r\n render() { \r\n // console.log(this.props)\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.props.accion === 'Nueva Carga' ?\r\n : \r\n } \r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.props.accion==='Nueva Carga'?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n
ActividadObservaciónAcciones
{this.props.descripcion}
\r\n \r\n
{/*onChange={this.onChangeValue}*/}\r\n
    \r\n
  • {/*onClick={() => this.handleClick(\"Modificar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Modificar Carga\") }} />Modificar\r\n\r\n {/* this.handleClick(\"Modificar Carga\")} style={this.state.accion === \"Modificar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Modificar*/}\r\n
  • \r\n
  • {/*onClick={() => this.handleClick(\"Eliminar Carga\")}*/}\r\n { this.onChangeRadioAcciones(\"Eliminar Carga\") }} />Eliminar\r\n\r\n {/* this.handleClick(\"Eliminar Carga\")} style={this.state.accion === \"Eliminar Carga\" ? { color: '#ffdb00' } : { color: '#58A7E0' }} size=\"2x\" />Eliminar*/}\r\n
  • \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\nimport './css/Actividad.css';\r\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome' \r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport { Modal, Col, Row, Container } from 'react-bootstrap';\r\nimport { Solicitud_generica } from './expand/Solicitud_generica';\r\nimport { Nueva_actividad } from './modal/Nueva_actividad';\r\nimport { faUserCheck, faUserEdit, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport eliminar from './../img/svg/Eliminar.svg';\r\nimport crear from './../img/svg/Nueva.svg';\r\nimport editar from './../img/svg/Editar.svg';\r\nimport Swal from 'sweetalert2'\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nfunction color_head() {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white',\r\n width: '20%', fontSize: 11,\r\n };\r\n}\r\nfunction color_head_desc(tipo) {\r\n if (tipo == 'a') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '50%'\r\n };\r\n } else if (tipo == 'd') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n }\r\n } else if (tipo == 'id') {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '5%'\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#25223f',\r\n color: 'white', fontSize: 11,\r\n width: '30%'\r\n };\r\n }\r\n}\r\n//Funcion para colocar color a las celdasde la tabla\r\nfunction color(rowIndex) {\r\n if (rowIndex % 2 === 0) {\r\n return {\r\n backgroundColor: 'white'\r\n };\r\n }\r\n return {\r\n backgroundColor: '#E7E7E7'\r\n };\r\n}\r\n\r\nexport class Solicitud_General extends Component {\r\n static displayName = Solicitud_General.name;\r\n\r\n handleBtnClick = () => {\r\n if (!this.state.expanded.includes(0)) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, 0]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== 0)\r\n }));\r\n\r\n }\r\n }\r\n\r\n handleOnExpand = (row, isExpand, rowIndex, e) => {\r\n if (isExpand) {\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, row.id]\r\n }));\r\n } else {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== row.id)\r\n }));\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actividades: [], loading: false, loading2: false, accion: \"\", fila: [], expanded: [], id_row: 0,\r\n anio: props.anio, idpersona: props.idprof, periodo: \"\", newactividad: \"\", observacion: \"\", actividades_combo: [],\r\n nuevoregistro: [], selectact: \"\", selectidact: \"\", abierto: false, solicitudes: [], valida_next: false\r\n };\r\n\r\n this.actualizarSolicitudes = this.actualizarSolicitudes.bind(this);\r\n this.deleteActivity = this.deleteActivity.bind(this);\r\n this.editActivity = this.editActivity.bind(this);\r\n this.updatestate = this.updatestate.bind(this);\r\n this.updatestate_solicitud = this.updatestate_solicitud.bind(this);\r\n \r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.getSolicitudes('')) {\r\n this.setState({\r\n actividades: this.props.getSolicitudes('todo bien')\r\n })\r\n }\r\n\r\n if (this.state.idpersona > 0) {\r\n this.populateActividadesCombo(this.state.idpersona, this.state.anio);\r\n }\r\n }\r\n\r\n\r\n /////FUNCIONES para interactuar con los si/no de ACtividades\r\n handleHideClick = (idUnico) => {\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idUnico === idUnico) {\r\n this.state.fila[i].validacion = 'si'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idUnico: idUnico,\r\n validacion: 'si'\r\n })\r\n }\r\n if (this.state.expanded.includes(idUnico)) {\r\n this.setState(() => ({\r\n expanded: this.state.expanded.filter(x => x !== idUnico)\r\n }));\r\n }\r\n\r\n }\r\n\r\n handleShowClick = (idUnico) => {\r\n //console.log(idUnico)\r\n this.setState({\r\n id_row: idUnico\r\n })\r\n\r\n //console.log(idactividad)\r\n if (!this.state.expanded.includes(idUnico)) {\r\n\r\n let obj = this.state.fila.find((o, i) => {\r\n if (o.idUnico === idUnico) {\r\n this.state.fila[i].validacion = 'no'\r\n return this.state.fila[i];\r\n }\r\n });\r\n if (obj == null) {\r\n this.state.fila.push({\r\n idUnico: idUnico,\r\n validacion: 'no'\r\n })\r\n }\r\n this.setState(() => ({\r\n expanded: [...this.state.expanded, idUnico]\r\n }));\r\n }\r\n }\r\n\r\n //funcion para click en update delete\r\n deleteActivity(rowindex) {\r\n \r\n Swal.fire({\r\n title: '¿Está seguro de eliminar?',\r\n text: \"Usted podría perder el registro de esta observación\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, eliminar',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n\r\n //console.log(\"solicitud a eliminar: \", this.state.actividades[rowindex]);\r\n this.props.setSolicitudes(rowindex, 0, true, this.state.actividades[rowindex].idUnico, this.state.actividades[rowindex].ambito);\r\n\r\n this.actualizarSolicitudes();\r\n\r\n Swal.fire({\r\n icon: 'success',\r\n text: 'Su observación de asignatura/actividad ha sido eliminada',\r\n title: 'Eliminado',\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n }\r\n }) \r\n \r\n }\r\n\r\n //funcion para click en update delete\r\n editActivity(idactividad) {\r\n this.setState({\r\n id_row: idactividad\r\n })\r\n this.handleShowClick()\r\n //if (!this.state.expanded.includes(idactividad)) {\r\n \r\n // this.setState(() => ({\r\n // expanded: [...this.state.expanded, idactividad]\r\n // }));\r\n //}\r\n\r\n //esto envia al padre los datos para enviarlos luego\r\n //this.props.setSolicitudes(rowindex)\r\n //this.actualizarSolicitudes()\r\n }\r\n\r\n //funcion para click en update delete\r\n handleClick = (text) => {\r\n //console.log('accion:', text);\r\n this.setState({\r\n accion: text,\r\n });\r\n }\r\n\r\n onChangeValue(event) {\r\n this.setState({\r\n accion: event.target.value,\r\n });\r\n }\r\n \r\n actualizarSolicitudes() {\r\n const solicitudes = this.props.getSolicitudes('todobien');\r\n //console.log(\"solicitudes solicitud_general: \", solicitudes);\r\n //console.log('DATOS DE GETSSOLICITUDES TRIDAS DESDE WIZARD A SOLICITUD GENERAL--->' + JSON.stringify(solicitudes))\r\n\r\n if (solicitudes) {\r\n this.setState({\r\n actividades: solicitudes\r\n })\r\n //console.log('las solicitudes son:' + JSON.stringify( this.state.actividades))\r\n }\r\n }\r\n\r\n updatestate(rowIndex, idactividad, descripcion, totalhoras, anio, terminos, tipoactividad, observacion, pao1, pao2, pae, accion) {\r\n var solicitudes = this.state.solicitudes\r\n \r\n if (solicitudes.length == 0) {\r\n solicitudes = []\r\n } else {\r\n solicitudes = this.state.solicitudes.filter(x => x.idactividad != idactividad)\r\n }\r\n\r\n solicitudes.push({\r\n idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion\r\n })\r\n this.setState({\r\n solicitudes: solicitudes\r\n });\r\n //console.log(solicitudes)\r\n //this.isValidated_all(this.states.fila.length)\r\n this.props.update({ ambito: tipoactividad, idactividad: idactividad, descripcion: descripcion, totalhoras: totalhoras, anio: anio, termino: terminos, tipoactividad: tipoactividad, observacion: observacion, pao1: pao1, pao2: pao2, pae: pae, accion: accion });\r\n\r\n }\r\n\r\n updatestate_solicitud(ROWID, observacion,accion) {\r\n\r\n //console.log('RECIBIENDO Y ENVIANDOO EN SOLIICITUD GENERAL EL CAMMBIO de OBS: ' + observacion + ' PARA RELIZARLO A ' + ROWID)\r\n\r\n const solicitudes = this.props.updateFinal(ROWID, observacion, accion);\r\n //console.log('solicitudes updatestate_solicitud: ', solicitudes);\r\n \r\n if (solicitudes) {\r\n this.setState({ actividades: solicitudes });\r\n //console.log('las solicitudes cambiadas son:' + JSON.stringify(this.state.actividades))\r\n }\r\n\r\n }\r\n\r\n\r\n formatter = (valor) => {\r\n return new Intl.NumberFormat('en-US', { maximumFractionDigits: '2', minimumFractionDigits: '2', signDisplay: 'never' }).format(valor)\r\n }\r\n\r\n dateFormatter = (strFecha) => {\r\n var options = { year: 'numeric', month: '2-digit', day: 'numeric' };\r\n var dtFecha = new Date(strFecha);\r\n return dtFecha.toLocaleDateString(\"es-EC\", options);\r\n }\r\n\r\n toggle = () => {\r\n this.setState({ abierto: !this.state.abierto });\r\n }\r\n\r\n render() {\r\n\r\n const buttonToLink = {\r\n fontSize: '0.65em',\r\n textAlign: 'left',\r\n float: 'right',\r\n color: '#58A7E0',\r\n background: 'none',\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n cursor: 'pointer',\r\n \":hover\": {\r\n color: \"yellow\"\r\n }\r\n };\r\n const columns_acti = [\r\n {\r\n dataField: 'id',\r\n text: '#',\r\n\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return (\r\n
\r\n {rowIndex + 1}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n dataField: 'ambito',\r\n text: 'Ámbito',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: '',\r\n formatter: (cellContent, row, rowIndex) => {\r\n var ambito = row.ambito.split('|')[1];\r\n if (ambito === \"R\") {\r\n return (
Docencia Grado
)\r\n } else if (ambito === \"P\") {\r\n return (
Docencia PostGrado
)\r\n } else if (ambito === \"V\") {\r\n return (
Vinculacion
)\r\n } else if (ambito === \"I\") {\r\n return (
Investigacion
)\r\n } else if (ambito === \"G\") {\r\n return (
Gestion Academica
)\r\n } else if (ambito === \"A\") {\r\n return (
Admisiones
)\r\n }\r\n \r\n }\r\n },\r\n {\r\n dataField: 'idactividad',\r\n text: '#',\r\n hidden: true,\r\n headerStyle: color_head_desc('id'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'descripcion',\r\n text: 'Asignatura/Actividad',\r\n headerStyle: color_head_desc('d'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'observacion',\r\n text: 'Observación',\r\n headerStyle: color_head_desc('a'),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'termino',\r\n text: 'Periodo',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n var respu;\r\n if (row.termino.trim() === \"1\" || row.termino.trim() === \"1S\") {\r\n return (\r\n 'PAO-' + row.anio + '-1'\r\n );\r\n } else if (row.termino.trim() === \"2\" || row.termino.trim() === \"2S\") {\r\n return (\r\n 'PAO-' + row.anio + '-2'\r\n );\r\n\r\n } else if (row.termino.trim() === \"3\" || row.termino.trim() === \"3S\") {\r\n return (\r\n 'PAE-' + row.anio\r\n );\r\n\r\n } else {\r\n if (row.accion.toUpperCase() === 'NUEVA CARGA') {\r\n let tam = row.termino.split('\\n').length;\r\n //console.log('TAMOANIO DE NUEVA CARGA' + tam)\r\n if (tam == 1) {\r\n return (<>{row.termino.split('\\n')[0]});\r\n } if (tam == 2) {\r\n return (<>{row.termino.split('\\n')[0]}
{row.termino.split('\\n')[1]});\r\n } else {\r\n return (<>{row.termino.split('\\n')[0]}
{row.termino.split('\\n')[1]}
{row.termino.split('\\n')[2]});\r\n }\r\n } else {\r\n return (\r\n row.termino.trim()\r\n );\r\n }\r\n }\r\n },\r\n footer: ''\r\n },\r\n {\r\n dataField: 'accion', //'Tipo de Observacion'\r\n text: 'Acción',\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row) => {\r\n return (<>{row.accion.toUpperCase()});\r\n },\r\n footer: ''\r\n }, {\r\n dataField: 'totalhoras',\r\n text: 'Horas',\r\n hidden:true,\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n footerAlign: 'left',\r\n footer: columnData => {\r\n const total2 = columnData.reduce((acc, item) => (Number(acc) + Number(item)).toFixed(2), 0);\r\n return (<>Subtotal: {total2} horas);\r\n },\r\n\r\n\r\n },\r\n {\r\n dataField: 'conformidad',\r\n text: '',\r\n isDummyField: true,\r\n formatter: (cellContent, row) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n );\r\n },\r\n headerStyle: color_head(),\r\n style: (cell, row, rowIndex, colIndex) => {\r\n return color(rowIndex)\r\n },\r\n formatter: (cellContent, row, rowIndex) => {\r\n return(\r\n
\r\n this.handleShowClick(row.idUnico)} style={{ color: '#58A7E0' }} size=\"2x\" />\r\n   |  \r\n this.deleteActivity(rowIndex)} style={{ color: '#58A7E0' }} size=\"2x\" />\r\n
\r\n \r\n \r\n )\r\n\r\n }\r\n }];\r\n\r\n const totalpepa2 = this.state.actividades ? this.state.actividades.map(horastot2 => horastot2.totalhoras).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n const talambito = this.formatter(totalpepa2);\r\n\r\n\r\n const expandRow = {\r\n onlyOneExpanding: true,\r\n expanded: this.state.expanded,\r\n expandByColumnOnly: true,\r\n renderer:( row,rowIndex) => (\r\n
\r\n \r\n
\r\n )\r\n };\r\n\r\n return (\r\n
\r\n {this.state.actividades.length > 0 ?\r\n
\r\n \r\n \r\n

RESUMEN GENERAL DE OBSERVACIONES

\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n


\r\n
\r\n\r\n \r\n\r\n \r\n \r\n

SÍ, estoy de acuerdo con todas las actividades/asignaturas planificadas con excepción de las anteriores observaciones.

\r\n \r\n
\r\n\r\n

\r\n
: /*EN EL CASO QUE NO HAYA SOLICITUDES DE CAMBIO*/\r\n
\r\n \r\n \r\n

RESUMEN GENERAL DE OBSERVACIONES

\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
No hay observaciones
\r\n \r\n


\r\n \r\n \r\n \r\n

Estoy de acuerdo con todas las actividades/asignaturas planificadas.

\r\n \r\n
\r\n\r\n

\r\n
\r\n }\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n\r\n
\r\n );\r\n }\r\n\r\n async populateActividadesCombo(idpersona, anio) {\r\n const response = await fetch(API_URL + 'TblActividades/' + anio + '/T/token');\r\n const respuesta = await response.json();\r\n const data = respuesta;\r\n this.setState({ actividades_combo: data, loading: false });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { AppContext } from './../AppContext';\r\nimport { authenticationService } from './../services/authentication.service';\r\nimport ReactWizard from \"react-bootstrap-wizard\";\r\nimport { Admision } from './panels/Admision';\r\nimport { Docencia_Grado } from './panels/Docencia_Grado';\r\nimport { Docencia_Postgrado } from './panels/Docencia_Postgrado';\r\nimport { Gestion_Academica } from './panels/Gestion_Academica';\r\nimport { Investigacion } from './panels/Investigacion';\r\nimport { Vinculacion } from './panels/Vinculacion';\r\n\r\n\r\nimport { Admision_out } from './panels_out/Admision';\r\nimport { Docencia_Grado_out } from './panels_out/Docencia_Grado';\r\nimport { Docencia_Postgrado_out } from './panels_out/Docencia_Postgrado';\r\nimport { Gestion_Academica_out } from './panels_out/Gestion_Academica';\r\nimport { Investigacion_out } from './panels_out/Investigacion';\r\nimport { Vinculacion_out } from './panels_out/Vinculacion';\r\nimport { Solicitud_General_out } from './panels_out/Solicitud_General';\r\nimport { Resumen_final } from './panels_out/Resumen_final';\r\n\r\nimport { Solicitud_General } from './panels/Solicitud_General';\r\nimport \"tailwindcss/tailwind.css\"\r\nimport Swal from 'sweetalert2'\r\nimport aviso from './img/svg/Aviso.svg';\r\nimport logout from './img/svg/Cerrar sesion.svg';\r\nimport { isArray } from 'jquery';\r\nimport { Col, Row, Container } from 'react-bootstrap';\r\nimport { NavLink } from 'reactstrap';\r\n\r\n//import { Tabs, TabNav, TabNavItem, TabContent, TabPanel } from 'react-smarttab'\r\n//import 'react-smarttab/dist/index.css'\r\n\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nclass FirstStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n firstStep: \"first step here\"\r\n };\r\n }\r\n\r\n isValidated() {\r\n // do some validations\r\n // decide if you will\r\n return false;\r\n // or you will\r\n // return false;\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n\r\n }\r\n}\r\nclass SecondStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n secondStep: \"second step here\"\r\n };\r\n }\r\n isValidated() {\r\n // do some validations\r\n // decide if you will\r\n return true;\r\n // or you will\r\n // return false;\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass ThirdStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n thirdStep: \"third step here\"\r\n };\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass FourthStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n FourthStep: \"fourth step here\"\r\n };\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n ); \r\n }\r\n}\r\nclass FifthStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n FifthStep: \"Fifth step here\"\r\n };\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass SixthStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n SixthStep: \"Sixth step here\"\r\n };\r\n }\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass SevenStep extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n thirdStep: \"Sixth step here\"\r\n };\r\n } \r\n\r\n render() {\r\n return (\r\n
\r\n En Construccion\r\n
\r\n );\r\n }\r\n} \r\n\r\nexport class WizardPrincipal extends Component {\r\n\r\n static displayName = WizardPrincipal.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n //console.log(\"*** currentUser = \" + JSON.stringify(props));\r\n this.state = {\r\n data: [\r\n //{ stepName: \"Docencia - Grado\", component: FirstStep }, // if materia_grad is true or actividad_grad is true\r\n //{ stepName: \"Docencia - Postgrado\", component: SecondStep }, // if materia_grad is true or actividad_grad is true\r\n //{ stepName: \"Investigacion\", component: ThirdStep },\r\n //{ stepName: \"Vinculacion a la Sociedad\", component: FourthStep },\r\n //{ stepName: \"Gestion Academica\", component: FifthStep },\r\n //{ stepName: \"Admisiones\", component: SixthStep ,},\r\n //{ stepName: \"Solicitud unificada\", component: SevenStep }\r\n ], solicitudesDetalle: [], loading: true, idprof: 0, idpersona: 0, anio: 2024, idperiodo: 0, terminoPeriodo: \"\",\r\n terminoNombre: \"\", seDesvincula: false,\r\n cargaAcademica: [],\r\n cargaAcademica2: [], filas: [], validaciones: [], loading2: false, fin_button: \"\", ultimocambio: \"\", currentUser: null, conteo_total:[],\r\n totalGeneral: [], labelTotal: 0, id_cargadet: 0, valida_out: false, cargapolitecnica: 0,\r\n cont_A: [], cont_G: [], cont_R: [], cont_P: [], cont_I: [], cont_V: [], cont_MP: [], cont_MR: [], total_profesional: 0, isloading: true,\r\n horasTotales: 0, horasLicencia: 0, otrasHoras: 0,\r\n sinObservaciones: false\r\n };\r\n\r\n this.updateState = this.updateState.bind(this);\r\n this.updateCarga = this.updateCarga.bind(this);\r\n this.finishButtonClick = this.finishButtonClick.bind(this);\r\n this.nextButtonClick = this.nextButtonClick.bind(this);\r\n this.getSolicitudes = this.getSolicitudes.bind(this);\r\n this.setSolicitudes = this.setSolicitudes.bind(this);\r\n this.updateFinal = this.updateFinal.bind(this);\r\n this.isValidated = this.isValidated.bind(this);\r\n\r\n this.setconteo_final = this.setconteo_final.bind(this);\r\n this.setconteo_final_mat = this.setconteo_final_mat.bind(this);\r\n\r\n this.calcula_totales = this.calcula_totales.bind(this);\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n //console.log(\"WizardPrincipal componentDidMount currentUser = \" + JSON.stringify(this.props.currentUser));\r\n const currentUser = this.context;\r\n\r\n var currentDate = new Date();\r\n //console.log(\"currentDate: \", currentDate);\r\n\r\n\r\n if (!currentUser) {\r\n this.subscription = authenticationService.currentUser.subscribe(currentUser => {\r\n //console.log(currentUser);\r\n\r\n if (currentUser && currentUser.idpersona) {\r\n this.setState({ idprof: currentUser.idpersona, idpersona: currentUser.idpersona, currentUser: currentUser });\r\n\r\n this.validaValida(currentUser.idpersona, 2024);\r\n\r\n //if (currentDate < new Date(2023, 2, 28, 0, 0, 1, 0) || currentDate > new Date(2023, 3, 20, 0, 0, 0, 0)) {\r\n // Swal.fire({\r\n // title: 'Mensaje',\r\n // text: 'Lo sentimos, el periodo para la validación de carga académica es del 28 de marzo al 20 de abril.',\r\n // icon: 'error',\r\n // timer: 10000,\r\n // timerProgressBar: true,\r\n // confirmButtonText: 'Ok'\r\n // });\r\n //} else {\r\n // this.validaValida(currentUser.idpersona, 2023); // Descomentar esta linea para activar los paneles y el servicio en el anio de consulta\r\n //}\r\n }\r\n });\r\n }\r\n\r\n const idpersona = currentUser && currentUser.idpersona > 0 ? currentUser.idpersona : this.props.currentUser && this.props.currentUser.idpersona > 0 ? this.props.currentUser.idpersona : this.state.idprof;\r\n if (currentUser && currentUser.idpersona > 0) {\r\n this.setState({ idprof: currentUser.idpersona });\r\n\r\n this.validaValida(currentUser.idpersona, 2024);\r\n\r\n //if (currentDate < new Date(2023, 2, 28, 0, 0, 1, 0) || currentDate > new Date(2023, 3, 20, 0, 0, 0, 0)) {\r\n // Swal.fire({\r\n // title: 'Mensaje',\r\n // text: 'Lo sentimos, el periodo para la validación de carga académica es del 24 de noviembre al 8 de diciembre.',\r\n // icon: 'error',\r\n // timer: 10000,\r\n // timerProgressBar: true,\r\n // confirmButtonText: 'Ok'\r\n // });\r\n\r\n //} else {\r\n // this.validaValida(currentUser.idpersona, 2023); // Descomentar esta linea para activar los paneles y el servicio en el anio de consulta\r\n //}\r\n }\r\n\r\n }\r\n\r\n \r\n\r\n updateCarga(cargaupd, cargaupd2,tipo) {\r\n \r\n\r\n if (cargaupd2) {\r\n var carga2 = this.state.cargaAcademica2;\r\n carga2.push(cargaupd2)\r\n //calcula el total general para la etiqueta superior \r\n var arr_total = this.state.totalGeneral\r\n cargaupd2.forEach((act) => { \r\n arr_total.push(act.totalhoras) \r\n }) \r\n var sum = 0\r\n arr_total.forEach((item) => {\r\n sum = sum + item\r\n }) \r\n\r\n\r\n this.setState({\r\n cargaAcademica2: carga2\r\n });\r\n\r\n }\r\n }\r\n\r\n updateState(solicitudesUpd) {\r\n if (solicitudesUpd) {\r\n var solicitudes = this.state.solicitudesDetalle; \r\n /*const actividades = solicitudesUpd.map(su => su.idactividad);\r\n if (solicitudes.length > 0) {\r\n solicitudes = this.state.solicitudesDetalle.filter(s => solicitudesUpd.some(su => s.idactividad == su.idactividad));\r\n }\r\n else {\r\n solicitudes = [];\r\n }\r\n const solicitudesDetalle = solicitudes.length > 0 ? solicitudes.push(solicitudesUpd) : solicitudesUpd;*/\r\n\r\n //console.log('RECEPCION EN EL WIZARD PRINCIPAL del dato: ' + JSON.stringify(solicitudesUpd))\r\n solicitudes.push(solicitudesUpd)\r\n\r\n //this.cargapaneles(this.state.idprof, this.state.anio);\r\n this.setState({\r\n solicitudesDetalle: solicitudes\r\n });\r\n //console.log('OBSERVACIONES DE SOLUCITUD: ' + JSON.stringify(this.state.solicitudesDetalle))\r\n \r\n } \r\n }\r\n\r\n setconteo_final(tam, amb) {\r\n let arr_cont=[]\r\n if (amb === 'R') {\r\n //arr_cont = this.state.cont_R;\r\n //arr_cont.push(tam)\r\n this.setState({\r\n cont_R: tam\r\n })\r\n } else if (amb === 'P') {\r\n //arr_cont = this.state.cont_P;\r\n //arr_cont.push(tam)\r\n this.setState({\r\n cont_P: tam\r\n })\r\n } else if(amb === 'G') {\r\n this.setState({\r\n cont_G: tam\r\n })\r\n } else if (amb === 'I') {\r\n this.setState({\r\n cont_I: tam\r\n })\r\n } else if (amb === 'V') {\r\n this.setState({\r\n cont_V: tam\r\n })\r\n } else\r\n this.setState({\r\n cont_A: tam\r\n }) \r\n }\r\n\r\n\r\n setconteo_final_mat(tam, amb) {\r\n if (amb === 'R') {\r\n this.setState({\r\n cont_MR: tam\r\n })\r\n } else {\r\n this.setState({\r\n cont_MP: tam\r\n })\r\n }\r\n }\r\n\r\n updateFinal(rowindex, observacion,accion) {\r\n\r\n //console.log('RECIBIENDO EN WIZARD PRIINCIPAL EL CAMMBIO de OBS: ' + observacion + ' PARA RELIZARLO A ' + rowindex)\r\n // 1. Make a shallow copy of the items\r\n //let items = [...this.state.solicitudesDetalle]; // COMENTADO SBRODRIG\r\n let items = this.state.solicitudesDetalle;\r\n\r\n //console.log('SE HARA EL CAMBIO EN' )\r\n //console.log( items)\r\n // 2. Make a shallow copy of the item you want to mutate\r\n //let item = { ...items[rowindex] }; // COMENTADO SBRODRIG\r\n let item = items[rowindex];\r\n\r\n //console.log(items[rowindex])\r\n // 3. Replace the property you're intested in\r\n item.observacion = observacion;\r\n item.accion = accion;\r\n //console.log('OBSERACION ' + item.observacion)\r\n //console.log('ACCION ' + item.accion)\r\n // 4. Put it back into our array. N.B. we *are* mutating the array here, but that's why we made a copy first\r\n items[rowindex] = item;\r\n //console.log('ITEM CAMBIADO ')\r\n //console.log( items[rowindex])\r\n // 5. Set the state to our new copy\r\n\r\n //console.log('APUNTO DE HACER EL CAMBIO: ' + observacion + ' PARA RELIZARLO A ' + rowindex)\r\n this.setState({ solicitudesDetalle: items }, () => {\r\n this.cargapaneles(this.state.idprof, this.state.anio, this.state.terminoPeriodo, this.state.cargaAcademica);\r\n });\r\n\r\n return items;\r\n \r\n } \r\n \r\n getSolicitudes(valor) {\r\n //console.log('ENTRO A GET SOLICITUDES de WIZARD PRINCIPAL A PEDIR DATOS--->' + JSON.stringify(this.state.solicitudesDetalle) )\r\n return this.state.solicitudesDetalle;\r\n \r\n }\r\n\r\n setSolicitudes(rowindex, idactividad, fromGeneral, idUnico, ambito) {\r\n var array = this.state.solicitudesDetalle;\r\n //si la eliminacion viene de la solicitud general\r\n if (idactividad === 0) {\r\n array.splice(rowindex, 1);\r\n\r\n // para actualizar el valor del radio button\r\n var ambitoSplit = ambito.split(\"|\");\r\n\r\n //if (fromGeneral) {\r\n // if (ambitoSplit[0] === \"M\") { // MATERIAS\r\n // if (ambitoSplit[1] === \"R\") {\r\n // var cont_MR = this.state.cont_MR;\r\n // console.log(\"cont_MR: \", cont_MR);\r\n\r\n // console.log(\"idUnico: \", idUnico);\r\n // //var index_MR = cont_MR.findIndex(obj => obj.idactividad === idUnico);\r\n // var index_cont = 0;\r\n // var index_MR = cont_MR.find(((obj, i) => {\r\n // console.log(\"index: \", i);\r\n // console.log(\"obj: \", obj);\r\n // if (obj.idactividad === idUnico) {\r\n // index_cont = i;\r\n // }\r\n // }));\r\n\r\n // console.log(\"index_cont: \", index_cont);\r\n // cont_MR[index_MR].validacion = 'si';\r\n // this.setState({ cont_MR: cont_MR });\r\n\r\n // } else if (ambitoSplit[1] === \"P\") {\r\n // var cont_MP = this.state.cont_MP;\r\n // var index_MP = this.state.cont_MP.findIndex(x => x.idactividad === idUnico);\r\n // cont_MP[index_MP].validacion = 'si';\r\n // this.setState({ cont_MP: cont_MP });\r\n // }\r\n // } else { // ACTIVIDADES\r\n // if (ambitoSplit[1] === 'R') {\r\n // var cont_R = this.state.cont_R;\r\n // var index_R = this.state.cont_R.findIndex(x => x.idUnico === idUnico);\r\n // cont_R[index_R].validacion = 'si';\r\n // this.setState({ cont_R: cont_R });\r\n\r\n // } else if (ambitoSplit[1] === 'P') {\r\n // var cont_P = this.state.cont_P;\r\n // var index_P = this.state.cont_P.findIndex(x => x.idUnico === idUnico);\r\n // cont_P[index_P].validacion = 'si';\r\n // this.setState({ cont_P: cont_P });\r\n\r\n // } else if (ambitoSplit[1] === 'G') {\r\n // var cont_G = this.state.cont_G;\r\n // var index_G = this.state.cont_G.findIndex(x => x.idUnico === idUnico);\r\n // cont_G[index_G].validacion = 'si';\r\n // this.setState({ cont_G: cont_G });\r\n\r\n // } else if (ambitoSplit[1] === 'I') {\r\n // var cont_I = this.state.cont_I;\r\n // var index_I = this.state.cont_I.findIndex(x => x.idUnico === idUnico);\r\n // cont_I[index_I].validacion = 'si';\r\n // this.setState({ cont_I: cont_I });\r\n\r\n // } else if (ambitoSplit[1] === 'V') {\r\n // var cont_V = this.state.cont_V;\r\n // var index_V = this.state.cont_V.findIndex(x => x.idUnico === idUnico);\r\n // cont_V[index_V].validacion = 'si';\r\n // this.setState({ cont_V: cont_V });\r\n\r\n // } else if (ambitoSplit[1] === 'A') {\r\n // var cont_A = this.state.cont_A;\r\n // var index_A = this.state.cont_A.findIndex(x => x.idUnico === idUnico);\r\n // cont_A[index_A].validacion = 'si';\r\n // this.setState({ cont_A: cont_A });\r\n // }\r\n // }\r\n //}\r\n }\r\n else { // la eliminacion viene de algun panel mediante su idactividad\r\n var index = array.map(function (e) { return e.idactividad; }).indexOf(idactividad);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n\t\t\t}\r\n }\r\n\r\n this.cargapaneles(this.state.idprof, this.state.anio, this.state.terminoPeriodo, this.state.cargaAcademica);\r\n this.setState({ solicitudesDetalle: array });\r\n\r\n }\r\n\r\n\r\n\r\n busca_accion(accion) {\r\n if (accion === 'Modificar Carga') {\r\n return('M')\r\n } else if (accion === 'Eliminar Carga') {\r\n return ('E')\r\n } else if (accion === 'Nueva Carga') {\r\n return ('C')\r\n }\r\n }\r\n\r\n get_actividad(arr) {\r\n if (isArray(arr)) {\r\n return (arr[0])\r\n } else {\r\n return arr\r\n }\r\n \r\n }\r\n\r\n setacademica2=(arr)=> {\r\n var filaaqui=[]\r\n if (isArray(arr)) {\r\n arr.forEach((element) => {\r\n element.forEach((element2) => {\r\n filaaqui.push({\r\n idactividad: element2.idactividad,\r\n periodo: element2.periodo,\r\n tipo: element2.tipo,\r\n descripcion: element2.descripcion,\r\n anio: element2.anio,\r\n });\r\n })\r\n\r\n })\r\n\r\n this.setState({\r\n filas: filaaqui\r\n })\r\n }\r\n }\r\n\r\n get_radios(termino1, termino2, termino3, anio) {\r\n var respu;\r\n if (termino2 === \"2\" && termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n )\r\n }\r\n else if (termino1 === \"1\") {\r\n if (termino1 === \"1\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAE-' + anio\r\n );\r\n } else if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1 \\nPAO-' + anio + '-2'\r\n );\r\n\r\n } else {\r\n return (\r\n 'PAO-' + anio + '-1'\r\n );\r\n }\r\n } else if (termino2 === \"2\") {\r\n if (termino2 === \"2\" && termino1 === \"1\") {\r\n return (\r\n 'PAO-' + anio + '-1\\n PAO-' + anio + '-2'\r\n );\r\n\r\n } else if (termino2 === \"2\" && termino3 === \"0\") {\r\n return (\r\n 'PAO-' + anio + '-2\\n PAE-' + anio\r\n );\r\n }\r\n return (\r\n 'PAO-' + anio + '-2'\r\n );\r\n } else if (termino3 === \"0\") {\r\n if (termino3 === \"0\" && termino1 === \"1\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-1'\r\n );\r\n\r\n } else if (termino3 === \"0\" && termino2 === \"2\") {\r\n return (\r\n 'PAE-' + anio + '\\n PAO-' + anio + '-2'\r\n );\r\n }\r\n return (\r\n 'PAE-' + anio\r\n );\r\n }\r\n }\r\n finishButtonClick() {\r\n\r\n let suma = this.state.cont_A.length + this.state.cont_R.length + this.state.cont_P.length + this.state.cont_I.length + this.state.cont_V.length + this.state.cont_G.length\r\n + this.state.cont_MP.length + this.state.cont_MR.length;\r\n\r\n let suma_carga = this.state.cargaAcademica.carga.grado.materias.length + this.state.cargaAcademica.carga.grado.actividades.length + this.state.cargaAcademica.carga.postGrado.materias.length +\r\n this.state.cargaAcademica.carga.postGrado.actividades.length + this.state.cargaAcademica.carga.admisiones.length + this.state.cargaAcademica.carga.investigacion.length +\r\n this.state.cargaAcademica.carga.vinculos.length + this.state.cargaAcademica.carga.gestionAcademica.length;\r\n //console.log(suma + ' === ' + suma_carga);\r\n let restante = suma_carga - suma;\r\n if (suma === suma_carga) {\r\n\r\n\r\n Swal.fire({\r\n title: '¿Está seguro de enviar?',\r\n text: \"Al enviar usted registrará sus observaciones en el sistema y no tendrá acceso para realizar cambios.\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Sí, Enviar',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n\r\n\r\n if (this.state.fin_button === 'Enviar') {\r\n var solicitudes = this.state.solicitudesDetalle;\r\n\r\n const data = JSON.stringify({\r\n \"IDPERSONA\": this.state.idprof,\r\n });\r\n\r\n // SE COMENTA HASTA QUE ESTÉ APROBADO POR STAC CON TH (DESVINCULACION)\r\n //var tipo_validacion = this.state.seDesvincula ? 'DESVINCULACION' : 'VALIDACION';\r\n //\"IDPERIODO\": this.state.anio, // realizar GET para obtener el id periodo\r\n const POST_CabValidacion = JSON.stringify({\r\n \"IDPERSONA\": this.state.idprof,\r\n \"IDPERIODO\": this.state.idperiodo,\r\n \"TIPO\": 'VALIDACION'\r\n });\r\n\r\n // fetch para guardar la carga academia del profesor\r\n fetch(API_URL + \"TPlnValidacions/\", {\r\n\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: POST_CabValidacion,\r\n\r\n }).then(response => response.json())\r\n .then(\r\n (responseJson) => {\r\n\r\n const solicitudes = this.state.solicitudesDetalle;\r\n\r\n //console.log(\"idplnvalidacion: \", responseJson[\"idplnvalidacion\"]);\r\n if (responseJson[\"idplnvalidacion\"] > 0) {\r\n //insertando las solicitudes\r\n\r\n solicitudes.map(acti => {\r\n //console.log('===============MATERIAS ==== DATOS QUE TIENE ACTI===============');\r\n //console.log(acti);\r\n\r\n var idact = 0;\r\n var idmat = 0;\r\n var periodopost = \"\";\r\n\r\n if (acti.ambito.split('|')[0] === 'A') {\r\n periodopost = acti.termino; //this.get_radios(acti.periodo.split('|')[0], acti.periodo.split('|')[1], acti.periodo.split('|')[2], acti.anio)\r\n idact = acti.idactividad;\r\n } else {\r\n\r\n //console.log('===============MATERIAS==== DATOS QUE TIENE ACTI EN PERIODOO===============');\r\n //console.log(acti.periodo);\r\n\r\n idmat = acti.idactividad;\r\n periodopost = acti.termino;\r\n\r\n //console.log(periodopost)\r\n }\r\n\r\n const POST_detalleValidacion = JSON.stringify({\r\n \"idplnvalidacion\": responseJson[\"idplnvalidacion\"],\r\n \"accion\": this.busca_accion(acti.accion),\r\n \"periodo\": acti.termino,\r\n \"tipo\": acti.ambito,\r\n \"descripcion\": this.get_actividad(acti.descripcion),\r\n \"observacion\": acti.observacion,\r\n \"idplncargaacademicadet\": this.state.id_cargadet,\r\n \"idplanifactividades\": idact,\r\n \"idcurso\": idmat,\r\n \"validado\": 0,\r\n \"idpersonacambio\": this.state.idprof\r\n });\r\n\r\n\r\n fetch(API_URL + \"TPlnValidacionDets/\", {\r\n\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: POST_detalleValidacion,\r\n\r\n }).then(response => response.json())\r\n .then(\r\n (responseJson) => {\r\n if (responseJson) {\r\n //console.log(\"Respuesta json PLANIFDET :\" + responseJson);\r\n }\r\n else {\r\n //console.log(\"Se presento un error.\");\r\n }\r\n })\r\n\r\n });\r\n\r\n const solicitudes_cargas = this.state.cargaAcademica2;\r\n this.setacademica2(solicitudes_cargas)\r\n //insertando las cargas como solicitudes\r\n\r\n this.state.filas.map(acti2 => {\r\n //console.log('===============MATERIAS ==== DATOS QUE TIENE ACTI2===============');\r\n //console.log(acti2);\r\n\r\n var periodopost = \"\";\r\n var idact = 0;\r\n var idmat = 0;\r\n\r\n if (acti2.tipo.split('|')[0] === 'A') {\r\n periodopost = this.get_radios(acti2.periodo.split('|')[0], acti2.periodo.split('|')[1], acti2.periodo.split('|')[2], acti2.anio);\r\n idact = acti2.idactividad;\r\n } else {\r\n\r\n //console.log('===============MATERIAS==== DATOS QUE TIENE ACTI2 EN PERIODOO===============');\r\n //console.log(acti2.periodo);\r\n\r\n idmat = acti2.idactividad;\r\n periodopost = acti2.periodo;\r\n\r\n //console.log(periodopost);\r\n }\r\n const POST_detalleValidacion2 = JSON.stringify({\r\n \"idplnvalidacion\": responseJson[\"idplnvalidacion\"],\r\n \"accion\": 'C',\r\n \"periodo\": periodopost,\r\n \"tipo\": acti2.tipo,\r\n \"descripcion\": acti2.descripcion,\r\n \"observacion\": 'S/N',\r\n \"idplncargaacademicadet\": this.state.id_cargadet,\r\n \"idplanifactividades\": idact,\r\n \"idcurso\": idmat,\r\n \"validado\": 1,\r\n \"idpersonacambio\": this.state.idprof\r\n });\r\n\r\n //console.log('===============VER DATOS QUE SE VAN A VALIDACION===============');\r\n //console.log(POST_detalleValidacion2);\r\n\r\n var solicitud = this.state.solicitudesDetalle.filter(x => x.idactividad === acti2.idactividad);\r\n //console.log(\"solicitud: \", solicitud);\r\n\r\n if (solicitud.length === 1) {\r\n //console.log('POST NO CARGA PORQUE ESTA EN PETICION===>' + POST_detalleValidacion2);\r\n\r\n } else {\r\n //console.log('POST CARGA DE ACTIVIDADE===>' + POST_detalleValidacion2);\r\n fetch(API_URL + \"TPlnValidacionDets/\", {\r\n\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: POST_detalleValidacion2,\r\n\r\n }).then(response => response.json())\r\n .then(\r\n (responseJson) => {\r\n if (responseJson) {\r\n //console.log(\"Solicitud de :\" + acti2.descripcion);\r\n }\r\n else {\r\n //console.log(\"Se presento un error.\");\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n // envio de correo electronico\r\n fetch(API_URL + \"Notificaciones/HV/\" + this.state.idprof)\r\n .then(response => response.json())\r\n .then(responseJson => {\r\n if (responseJson.strEstado === \"S\") {\r\n console.log(\"se envio correo HV\");\r\n } else {\r\n console.log(\"no se envio correo HV\");\r\n }\r\n });\r\n\r\n // SE COMENTA HASTA QUE ESTÉ APROBADO POR STAC CON TH (DESVINCULACION)\r\n //if (solicitudes.length === 0) {\r\n // console.log(\"sin observaciones\");\r\n\r\n // fetch(API_URL + \"Notificaciones/SO/\" + this.state.idprof)\r\n // .then(response => response.json())\r\n // .then(responseJson => {\r\n // if (responseJson.strEstado === \"S\") {\r\n // console.log(\"se envio correo SO\");\r\n // } else {\r\n // console.log(\"no se envio correo SO\");\r\n // }\r\n // });\r\n //}\r\n\r\n }\r\n else {\r\n //console.log(\"Ha ocurrido un error al guardar.\")\r\n }\r\n });\r\n\r\n // FIN fetch para guardar la carga academia del profesor\r\n\r\n\r\n Swal.fire({\r\n title: 'Hecho!',\r\n text: 'Validación enviada exitosamente',\r\n icon: 'success',\r\n timer: 1500,\r\n confirmButtonText: 'Ok'\r\n })\r\n //window.location.reload(false);\r\n this.setState({\r\n total_profesional: 0,\r\n labelTotal: 0,\r\n cargapolitecnica: 0, \r\n fin_button: 'Finalizar'\r\n })\r\n //this.validaValida(this.state.idprof, this.state.anio);\r\n this.cargapaneles_out(this.state.idprof, this.state.anio, this.state.cargaAcademica);\r\n \r\n } else {\r\n\r\n Swal.fire({\r\n title: 'Mensaje',\r\n text: 'La validación de carga realizada exitosamente',\r\n icon: 'success',\r\n confirmButtonText: 'Ok'\r\n })\r\n }\r\n\r\n }\r\n })\r\n } else {\r\n \r\n if (this.state.valida_out) {\r\n Swal.fire({\r\n icon: 'success',\r\n html: '

Validación académica realizada para este periodo!

',\r\n timer: 1500\r\n });\r\n } else {\r\n Swal.fire({\r\n icon: 'warning',\r\n html: '

Usted tiene '+restante+' asignaturas/actividades por validar.

',\r\n timer: 4000\r\n });\r\n }\r\n }\r\n \r\n\r\n\r\n\r\n }\r\n calcula_totales(data) {\r\n //console.log('TOTALEEEEEEEs', data);\r\n let profesional = data.carga.postGrado.materias ? data.carga.postGrado.materias.filter(x => x.esCarga === 'N') : [];\r\n let arr_total = [];\r\n let gradomat = data.carga.grado.materias.length > 0 ? data.carga.grado.materias.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n let gradoact = data.carga.grado.actividades.length > 0 ? data.carga.grado.actividades.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n let postGradomat = data.carga.postGrado.materias.length > 0 ? data.carga.postGrado.materias.forEach((act) => { arr_total.push(act.horasTotales) }) : 0;\r\n let postGradoact = data.carga.postGrado.actividades.length > 0 ? data.carga.postGrado.actividades.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n let admisiones = data.carga.admisiones.length > 0 ? data.carga.admisiones.forEach((act) => { arr_total.push(act.horasTotales) }) : 0;\r\n let investigacion = data.carga.investigacion.length > 0 ? data.carga.investigacion.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n let vinculos = data.carga.vinculos.length > 0 ? data.carga.vinculos.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n let gestionAcademica = data.carga.gestionAcademica.length > 0 ? data.carga.gestionAcademica.forEach((act) => { arr_total.push(act.totalHoras) }) : 0;\r\n\r\n \r\n let sum = 0\r\n arr_total.forEach((item) => {\r\n sum = sum + item\r\n });\r\n //console.log(\"SUM: \", sum);\r\n\r\n\r\n const tot_profesional = profesional ? profesional.map(x => x.horasTotales).reduce((acc2, item2) => (Number(acc2) + Number(item2)), 0) : 0;\r\n //console.log(\"tot_profesional: \", tot_profesional);\r\n if (sum === 0) {\r\n\r\n Swal.fire({\r\n title: 'Mensaje',\r\n text: 'Lo sentimos, usted no tiene acceso a este sistema',\r\n icon: 'error',\r\n confirmButtonText: 'Ok'\r\n })\r\n }\r\n this.setState({\r\n total_profesional: tot_profesional,\r\n labelTotal: sum, loading: false,\r\n cargapolitecnica: sum - tot_profesional\r\n })\r\n\r\n \r\n }\r\n\r\n async cargapaneles(idprof, anio, terminoPeriodo, data) {\r\n //const response = await fetch(API_URL + 'TblActividades/' + idprof + '/' + anio); \r\n this.calcula_totales(data)\r\n\r\n var items = [];\r\n if (data.paneles && data.paneles.grado === 1) {\r\n items.push({\r\n stepName: \"Docencia - Grado\", component: Docencia_Grado, stepProps: {\r\n idprof: idprof, anio: anio, terminoPeriodo: terminoPeriodo, update: this.updateState, updateCarga: this.updateCarga, getSolicitudes: this.getSolicitudes, setSolicitudes: this.setSolicitudes, setconteo_final: this.setconteo_final, setconteo_final_mat: this.setconteo_final_mat,\r\n cargaMat: data.carga.grado.materias.length > 0 ? data.carga.grado.materias : [], cargaAct: data.carga.grado.actividades.length > 0 ? data.carga.grado.actividades : []\r\n }\r\n })\r\n }\r\n if (data.paneles && data.paneles.postGrado === 1) {\r\n items.push({\r\n stepName: \"Docencia - Postgrado\", component: Docencia_Postgrado, stepProps: {\r\n idprof: idprof, anio: anio, terminoPeriodo: terminoPeriodo, update: this.updateState, updateCarga: this.updateCarga, getSolicitudes: this.getSolicitudes, setSolicitudes: this.setSolicitudes, setconteo_final: this.setconteo_final, setconteo_final_mat: this.setconteo_final_mat,\r\n cargaMat: data.carga.postGrado.materias.length > 0 ? data.carga.postGrado.materias : [], cargaAct: data.carga.postGrado.actividades.length > 0 ? data.carga.postGrado.actividades : []\r\n }\r\n })\r\n }\r\n if (data.paneles && data.paneles.investigacion === 1) {\r\n items.push({\r\n stepName: \"Investigación\", component: 0 ? data.carga.investigacion : []}\r\n />\r\n })\r\n }\r\n if (data.paneles && data.paneles.vinculacion === 1) {\r\n items.push({\r\n stepName: \"Vinculación a la Sociedad\", component: 0 ? data.carga.vinculos : []}\r\n />\r\n })\r\n }\r\n if (data.paneles && data.paneles.gestion === 1) {\r\n items.push({\r\n stepName: \"Gestión Académica\", component: Gestion_Academica, stepProps: {\r\n idprof: idprof, anio: anio, terminoPeriodo: terminoPeriodo, update: this.updateState, updateCarga: this.updateCarga, getSolicitudes: this.getSolicitudes, setSolicitudes: this.setSolicitudes, setconteo_final: this.setconteo_final,\r\n cargaAct: data.carga.gestionAcademica.length > 0 ? data.carga.gestionAcademica : []\r\n //solicitudes: this.state.solicitudesDetalle.filter(sd => sd.ambito == \"A|G\")\r\n }\r\n })\r\n }\r\n if (data.paneles && data.paneles.admisiones === 1) {\r\n items.push({ stepName: \"Admisiones\", component: 0 ? data.carga.admisiones : []} />})\r\n }\r\n items.push({\r\n stepName: \"Observaciones de mi carga\",\r\n component: Solicitud_General, stepProps: {\r\n idprof: idprof, anio: anio, terminoPeriodo: terminoPeriodo, update: this.updateState, getSolicitudes: this.getSolicitudes, setSolicitudes: this.setSolicitudes,\r\n cargaMat: data.carga.grado.materias.length > 0 ? data.carga.grado.materias : [], cargaAct: data.carga.grado.actividades.length > 0 ? data.carga.grado.actividades : [],\r\n observaciones: this.state.solicitudesDetalle, updateFinal: this.updateFinal\r\n }\r\n });\r\n \r\n this.setState({\r\n data: items, loading: false, cargaAcademica: data, id_cargadet: data.idCargaDet, valida_out: false\r\n });\r\n }\r\n\r\n async cargapaneles_out(idprof, anio, data) {\r\n\r\n this.setState({\r\n total_profesional: 0,\r\n labelTotal: 0,\r\n cargapolitecnica: 0\r\n })\r\n\r\n this.calcula_totales(data)\r\n var items = [];\r\n if (data.paneles && data.paneles.grado === 1) {\r\n items.push({\r\n stepName: \"Docencia - Grado\", component: Docencia_Grado_out, stepProps: {\r\n idprof: idprof, anio: anio, update: this.updateState, updateCarga: this.updateCarga, getSolicitudes: this.getSolicitudes,\r\n cargaMat: data.carga.grado.materias.length > 0 ? data.carga.grado.materias : [], cargaAct: data.carga.grado.actividades.length > 0 ? data.carga.grado.actividades : []\r\n }\r\n })\r\n }\r\n if (data.paneles && data.paneles.postGrado === 1) {\r\n items.push({\r\n stepName: \"Docencia - Postgrado\", component: 0 ? data.carga.postGrado.materias : []} cargaAct={data.carga.postGrado.actividades.length > 0 ? data.carga.postGrado.actividades : []}\r\n />\r\n })\r\n }\r\n if (data.paneles && data.paneles.investigacion === 1) {\r\n items.push({\r\n stepName: \"Investigación\", component: 0 ? data.carga.investigacion : []}\r\n />\r\n })\r\n }\r\n if (data.paneles && data.paneles.vinculacion === 1) {\r\n items.push({\r\n stepName: \"Vinculación a la Sociedad\", component: 0 ? data.carga.vinculos : []}\r\n />\r\n })\r\n }\r\n if (data.paneles && data.paneles.gestion === 1) {\r\n items.push({\r\n stepName: \"Gestión Académica\", component: Gestion_Academica_out, stepProps: {\r\n idprof: idprof, anio: anio, update: this.updateState, updateCarga: this.updateCarga, getSolicitudes: this.getSolicitudes,\r\n cargaAct: data.carga.gestionAcademica.length > 0 ? data.carga.gestionAcademica : []\r\n //solicitudes: this.state.solicitudesDetalle.filter(sd => sd.ambito == \"A|G\")\r\n }\r\n })\r\n }\r\n if (data.paneles && data.paneles.admisiones === 1) {\r\n items.push({ stepName: \"Admisiones\", component: 0 ? data.carga.admisiones : []} /> })\r\n }\r\n items.push({\r\n stepName: \"Observaciones de mi carga\",\r\n component: Solicitud_General_out, stepProps: {\r\n idprof: idprof, anio: anio, idcargadet: data.idCargaDet\r\n }\r\n });\r\n\r\n this.setState({\r\n data: items, fin_button: 'Finalizar', loading: false, cargaAcademica: data, id_cargadet: data.idCargaDet, valida_out: true, isloading:false\r\n });\r\n\r\n }\r\n\r\n\r\n nextButtonClick() {\r\n //console.log('hizo boton en click SIGUIENTE');\r\n //if (\r\n // (this.props.validate && ((this.refs[this.props.steps[this.state.currentStep].stepName].isValidated !== undefined &&\r\n // await this.refs[this.props.steps[this.state.currentStep].stepName].isValidated()) || this.refs[this.props.steps[this.state.currentStep].stepName].isValidated === undefined)) ||\r\n // this.props.validate === undefined || !this.props.validate\r\n //)\r\n }\r\n\r\n isValidated() {\r\n \r\n return false\r\n }\r\n\r\n renderPanelesDatos(data) {\r\n\r\n let contenido = <> ; \r\n let items = []; \r\n if (this.state.fin_button === 'Enviar') {\r\n contenido =this.state.data.length !== 0 ? : <> \r\n items.push(contenido)\r\n } else {\r\n //items.push(

holi

)\r\n Swal.hideLoading();\r\n Swal.close();\r\n let data = this.state.cargaAcademica;\r\n let datac = this.state.cargaAcademica.idCargaDet;\r\n let idprof = this.state.idprof;\r\n let anio = this.state.anio;\r\n\r\n contenido = datac ? : <>\r\n items.push(contenido)\r\n\r\n if (data.paneles && data.paneles.grado === 1) {\r\n items.push(<>



RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO DOCENCIA DE GRADO VALIDADA


)\r\n items.push( 0 ? data.carga.grado.materias : []} cargaAct={data.carga.grado.actividades.length > 0 ? data.carga.grado.actividades : []} />)\r\n }\r\n if (data.paneles && data.paneles.postGrado === 1) {\r\n items.push(<>


RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO DOCENCIA DE POSTGRADO VALIDADA


)\r\n items.push( 0 ? data.carga.postGrado.materias : []} cargaAct={data.carga.postGrado.actividades.length > 0 ? data.carga.postGrado.actividades : []} />)\r\n }\r\n if (data.paneles && data.paneles.investigacion === 1) {\r\n items.push(<>


RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO DOCENCIA DE INVESTIGACIÓN VALIDADA


)\r\n items.push( 0 ? data.carga.investigacion : []} />)\r\n }\r\n if (data.paneles && data.paneles.vinculacion === 1) {\r\n items.push(<>


RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO VINCULACIÓN VALIDADA


)\r\n items.push( 0 ? data.carga.vinculos : []} />)\r\n }\r\n if (data.paneles && data.paneles.gestion === 1) {\r\n items.push(<>


RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO GESTIÓN ACADÉMICA VALIDADA


)\r\n items.push( 0 ? data.carga.gestionAcademica : []} />)\r\n }\r\n if (data.paneles && data.paneles.admisiones === 1) {\r\n items.push(<>


RESUMEN DE CARGA ACADÉMICA DEL ÁMBITO DOCENCIA DE ADMISIÓN VALIDADA


)\r\n items.push( 0 ? data.carga.admisiones : []} />)\r\n } \r\n }\r\n\r\n\r\n\r\n return (\r\n <>\r\n {items}\r\n \r\n\r\n );\r\n }\r\n\r\n render() {\r\n //console.log('WizardPrincipal render state solicitudesDetalle = ' + JSON.stringify(this.state.solicitudesDetalle));\r\n const currentUser = this.context;\r\n let contents = this.state.loading\r\n ? Swal.showLoading()\r\n : this.renderPanelesDatos(this.state.data)\r\n\r\n const horasTPL = this.state.horasTotales + this.state.horasLicencia;\r\n\r\n //this.calcula_totales(this.state.cargaAcademica)\r\n return (\r\n \r\n
\r\n \r\n \r\n
{/* {this.state.ultimocambio.split('.')[0].replace('T', ' ')}  */}\r\n \r\n
\r\n
\r\n {\r\n this.state.labelTotal === 0 ?\r\n\r\n

Usted no tiene acceso a este sistema

:<>\r\n {/*
*/}\r\n {/*
*/}\r\n {/*
Validación de Carga de Trabajo Politécnica | Evaluación integral 2023
*/}\r\n {/*
*/}\r\n\r\n

\r\n {this.state.cargaAcademica.validado === 1 ?\r\n \r\n \r\n {this.state.terminoPeriodo === \"2S\" ?\r\n
\r\n
\r\n Usted ya ha realizado la validación del {this.state.terminoNombre}\r\n
\r\n :\r\n
\r\n
\r\n Usted ya ha realizado la validación del año {this.state.anio}\r\n
\r\n } \r\n \r\n
\r\n :\r\n \r\n \r\n {this.state.terminoPeriodo === \"2S\" ? \r\n
\r\n
\r\n Usted va a realizar la validación de su carga del {this.state.terminoNombre} , en caso que necesite realizar cambios en su carga académica del PAO {this.state.anio}-1 y del PAE {this.state.anio} comunicarse con su coordinador de carrera\r\n
\r\n :\r\n
\r\n
\r\n Usted va a realizar la validación de su carga del año {this.state.anio}\r\n
\r\n }\r\n \r\n
\r\n }\r\n\r\n {/* SE COMENTA HASTA QUE ESTÉ APROBADO POR STAC CON TH (DESVINCULACION) */}\r\n {/*{((this.state.valida_out || this.state.cargaAcademica.validado === 1)*/}\r\n {/*&& (this.state.cargaAcademica.validaciones === null && this.state.solicitudesDetalle.length === 0))*/}\r\n {/*&& (*/}\r\n {/**/ }\r\n {/**/}\r\n {/*
*/}\r\n {/*
*/}\r\n {/* Usted puede realizar la autoevaluación, de clic aquí para dirigirse al sitio web.*/}\r\n {/*
*/}\r\n {/**/}\r\n {/*
*/}\r\n {/*)}*/}\r\n\r\n {/*
*/}\r\n {/**/}\r\n {/* {this.state.total_profesional === 0 ?*/}\r\n {/* */}\r\n {/* */}\r\n {/*
Carga Politécnica Total: {this.state.labelTotal.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
*/}\r\n {/* */}\r\n {/* */}\r\n {/*
Carga Politécnica: {this.state.cargapolitecnica.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
(clases y otras actividades de acuerdo al CTP )
*/}\r\n {/* */}\r\n\r\n {/*
*/}\r\n {/* : */}\r\n {/* */}\r\n {/*
Total horas politécnicas: {this.state.labelTotal.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
*/}\r\n {/* */}\r\n {/* */}\r\n {/*
Total horas planificadas: {this.state.cargapolitecnica.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
(clases y otras actividades de acuerdo al CTP )
*/}\r\n {/* */}\r\n {/* */}\r\n {/*
Total horas de actividades independientes remuneradas: {this.state.total_profesional.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
*/}\r\n {/* */}\r\n {/*
}*/}\r\n\r\n {/*
*/}\r\n {/*
*/}\r\n\r\n
\r\n \r\n \r\n \r\n
Total horas planificadas + Licencias: {horasTPL.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
\r\n \r\n \r\n
Total horas planificadas: {this.state.horasTotales.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
{/*
(clases y otras actividades de acuerdo al CTP )
*/}\r\n \r\n \r\n
Horas de licencia: {this.state.horasLicencia.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
\r\n \r\n \r\n
Horas de actividades independientes remunerada: {this.state.total_profesional.toLocaleString('en', { maximumFractionDigits: 2 })} Horas/año académico
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {contents}\r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n }\r\n \r\n\r\n // YA NO SE USA - PARA VERIFICAR SI ESTA DESVINCULADO\r\n //async checkHabilitado(idpersona, anio) {\r\n\r\n // var currentDate = new Date();\r\n\r\n // const responseDesv = await fetch(API_URL + 'carga/CheckDesvinculacion/' + idpersona);\r\n // const responseDesvJson = await responseDesv.json();\r\n // //console.log(\"desvinculacion: \", responseDesvJson);\r\n\r\n // if (responseDesvJson.idpersona > 0 && new Date(responseDesvJson.fechafin) >= currentDate) {\r\n // this.validaValida(idpersona, anio);\r\n\r\n // } else if (currentDate < new Date(2023, 2, 28, 0, 0, 1, 0) || currentDate > new Date(2023, 3, 20, 0, 0, 0, 0)) {\r\n // Swal.fire({\r\n // title: 'Mensaje',\r\n // text: 'Lo sentimos, el periodo para la validación de carga académica es del 24 de noviembre al 8 de diciembre.',\r\n // icon: 'error',\r\n // timer: 10000,\r\n // timerProgressBar: true,\r\n // confirmButtonText: 'Ok'\r\n // });\r\n // } else {\r\n // this.validaValida(idpersona, anio);\r\n // }\r\n //}\r\n\r\n async validaValida(idpersona, anio) {\r\n /*const response = await fetch(API_URL + 'TPlnValidacions/' + idpersona + '/' + anio, { 'headers': { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.state.currentUser.token}` } })\r\n const respuesta = await response.json();\r\n const timeElapsed = Date.now();\r\n const data = respuesta.filter(x => x.idpersona === idpersona);\r\n console.log(data)*/\r\n //console.log(this.context);\r\n //console.log(API_URL + 'carga/' + idpersona + '/' + anio);\r\n\r\n var currentDate = new Date();\r\n\r\n const responsePeriodo = await fetch(API_URL + 'carga/GetParametrosValidacion');\r\n const responseJsonParametros = await responsePeriodo.json();\r\n const responseJsonPeriodo = responseJsonParametros.periodoCompleto; \r\n //console.log(\"responseJsonParametros: \", responseJsonParametros);\r\n\r\n //const responseDesv = await fetch(API_URL + 'carga/CheckDesvinculacion/' + idpersona);\r\n //const responseDesvJson = await responseDesv.json();\r\n //console.log(\"desvinculacion: \", responseDesvJson);\r\n\r\n const response2 = await fetch(API_URL + 'carga/' + idpersona + '/' + anio);\r\n const respuesta2 = await response2.json();\r\n const data_json = respuesta2;\r\n //console.log(\"data_json: \", data_json);\r\n\r\n // SE COMENTA HASTA QUE ESTÉ APROBADO POR STAC CON TH (DESVINCULACION)\r\n //if (data_json.validado === 1) {\r\n\r\n // if (data_json) {\r\n // Swal.fire({\r\n // icon: 'success',\r\n // html: '

Datos adquiridos!

',\r\n // timer: 1200\r\n // });\r\n // }\r\n\r\n // this.cargapaneles_out(idpersona, anio, data_json);\r\n // this.setState({ fin_button: 'Finalizar', idperiodo: responseJsonPeriodo.idperiodo, terminoNombre: responseJsonParametros.terminoNombre, terminoPeriodo: responseJsonPeriodo.termino, horasTotales: data_json.horasTotal, horasLicencia: data_json.horasLicencia, otrasHoras: data_json.otrasHoras });\r\n\r\n //} else if (responseDesvJson.idpersona > 0) { \r\n\r\n // this.cargapaneles(idpersona, anio, responseJsonPeriodo.termino, data_json);\r\n // this.setState({ fin_button: 'Enviar', idperiodo: responseJsonPeriodo.idperiodo, terminoNombre: responseJsonParametros.terminoNombre, terminoPeriodo: responseJsonPeriodo.termino, ultimocambio: '', horasTotales: data_json.horasTotal, horasLicencia: data_json.horasLicencia, otrasHoras: data_json.otrasHoras, seDesvincula: true });\r\n\r\n //} else if (currentDate < new Date(responseJsonParametros.fechaInicio) || currentDate > new Date(responseJsonParametros.fechaFin)) {\r\n\r\n // Swal.fire({\r\n // title: 'Mensaje',\r\n // text: 'Lo sentimos, el periodo para la validación de carga académica es del 24 de noviembre al 8 de diciembre.',\r\n // icon: 'error',\r\n // timer: 10000,\r\n // timerProgressBar: true,\r\n // confirmButtonText: 'Ok'\r\n // });\r\n\r\n //} else {\r\n\r\n // this.cargapaneles(idpersona, anio, responseJsonPeriodo.termino, data_json);\r\n // this.setState({ fin_button: 'Enviar', idperiodo: responseJsonPeriodo.idperiodo, terminoPeriodo: responseJsonPeriodo.termino, ultimocambio: '', horasTotales: data_json.horasTotal, horasLicencia: data_json.horasLicencia, otrasHoras: data_json.otrasHoras });\r\n //}\r\n\r\n\r\n // PRUEBA CON NUEVA TABALA DE FECHA INICIO Y FECHA FIN\r\n if (currentDate < new Date(responseJsonParametros.fechaInicio) || currentDate > new Date(responseJsonParametros.fechaFin)) {\r\n Swal.fire({\r\n title: 'Mensaje',\r\n text: 'Lo sentimos, el periodo para la validación de carga académica ha terminado.',\r\n icon: 'error',\r\n timer: 10000,\r\n timerProgressBar: true,\r\n confirmButtonText: 'Ok'\r\n });\r\n } else {\r\n // ANTES LA FUNCION TENIA UNICAMENTE ESTA PARTE\r\n if (data_json.validado === 1) {\r\n\r\n if (data_json) {\r\n Swal.fire({\r\n icon: 'success',\r\n html: '

Datos adquiridos!

',\r\n timer: 1200\r\n });\r\n }\r\n\r\n this.cargapaneles_out(idpersona, anio, data_json);\r\n this.setState({ fin_button: 'Finalizar', idperiodo: responseJsonPeriodo.idperiodo, terminoPeriodo: responseJsonPeriodo.termino, terminoNombre: responseJsonPeriodo.nombre, horasTotales: data_json.horasTotal, horasLicencia: data_json.horasLicencia, otrasHoras: data_json.otrasHoras });\r\n\r\n } else {\r\n\r\n this.cargapaneles(idpersona, anio, responseJsonPeriodo.termino, data_json);\r\n this.setState({ fin_button: 'Enviar', idperiodo: responseJsonPeriodo.idperiodo, terminoPeriodo: responseJsonPeriodo.termino, terminoNombre: responseJsonPeriodo.nombre, ultimocambio: '', horasTotales: data_json.horasTotal, horasLicencia: data_json.horasLicencia, otrasHoras: data_json.otrasHoras });\r\n }\r\n }\r\n }\r\n\r\n}\r\nWizardPrincipal.contextType = AppContext;","import React, { Component } from 'react';\r\n\r\nexport class Counter extends Component {\r\n static displayName = Counter.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { currentCount: 0 };\r\n this.incrementCounter = this.incrementCounter.bind(this);\r\n }\r\n\r\n incrementCounter() {\r\n this.setState({\r\n currentCount: this.state.currentCount + 1\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

Counter

\r\n\r\n

This is a simple example of a React component.

\r\n\r\n

Current count: {this.state.currentCount}

\r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { authenticationService } from './../services/authentication.service';\r\nimport CasClient, { constant } from \"react-cas-client\";\r\nimport { createBrowserHistory } from 'history';\r\n\r\n//import fetch from 'node-fetch';\r\n\r\nconst APP_ID = process.env.REACT_APP_ID;\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\nconst AUTH_URL = process.env.REACT_APP_AUTH_URL;\r\nconst CAS_SERVER = process.env.REACT_APP_CAS_SERVER;\r\n\r\nconst history = createBrowserHistory();\r\n\r\nexport const PrivateRoute = ({ component: Component, roles, ...rest }) => (\r\n {\r\n\r\n let currentUser = authenticationService.currentUserValue;\r\n if (!currentUser || !currentUser.idpersona) {\r\n\r\n //console.log(\"PrivateRout currentUser = \" + JSON.stringify(currentUser));\r\n let casOptions = { version: constant.CAS_VERSION_2_0, path: '/', protocol: 'https' };\r\n let casClient = new CasClient(CAS_SERVER, casOptions);\r\n\r\n // Basic usage\r\n casClient\r\n .auth()\r\n .then(successRes => {\r\n //console.log(\"CAS response = \" + JSON.stringify(successRes));\r\n const username = successRes.user;\r\n if (username) {\r\n //fetch(AUTH_URL + \"Token?idApp=\" + APP_ID).then((response) => console.log(\"response headers = \" + JSON.stringify(response.headers)));\r\n //fetch(API_URL + \"Login\", { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ idapp: APP_ID, netid: username }) })\r\n fetch(API_URL + \"Login\", {\r\n method: 'POST', headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ idapp: APP_ID, netid: username })\r\n })\r\n .then(response => response.json())\r\n .then((result) => {\r\n //console.log(\"privateroute\" + JSON.stringify(result));\r\n\r\n currentUser = {\r\n idpersona: result.user.idpersona,\r\n usuario: result.user.netId,\r\n identificacion: result.user.numeroidentificacion,\r\n apellidos: result.user.apellidos,\r\n nombres: result.user.nombres,\r\n roles: [\"PROFESOR\"],\r\n token: result.token\r\n };\r\n //console.log(\"JWT currentUser = \" + JSON.stringify(currentUser));\r\n\r\n //customFetch.fetch(token);\r\n //let realFetch = window.fetch;\r\n //window.fetch = function (url, opts = null) {\r\n // console.log(\"using custom fetch\");\r\n // if (currentUser.token) {\r\n // opts = Object.assign({}, opts, { 'headers': { 'Content-Type': 'application/json', 'Authorization': `Bearer ${currentUser.token}` } });\r\n // return realFetch(url, opts);\r\n // } else {\r\n // //console.log(\"[fetch] url: \" + url + \" opts: \" + JSON.stringify(opts));\r\n // return realFetch(url, opts);\r\n // }\r\n //};\r\n\r\n authenticationService.login(currentUser);\r\n\r\n });\r\n }\r\n //fetch(AUTH_URL + \"Token?idApp=\" + APP_ID, { redirect: 'follow', credentials: 'include' }) // \r\n // .then(response => response.json())\r\n // .then((result) => {\r\n // if (result) {\r\n // fetch(API_URL + 'login?idapp=' + result.idaplicacion + '&netid=' + result.netid + '&token=' + result.token)\r\n // .then(responseJwt => responseJwt.json())\r\n // .then((resultJwt) => {\r\n // console.log(\"result JWT = \" + JSON.stringify(resultJwt));\r\n // if (resultJwt) {\r\n\r\n // currentUser = {\r\n // usuario: result.netid,\r\n // token: resultJwt.token\r\n // };\r\n // console.log(\"JWT currentUser = \" + JSON.stringify(currentUser));\r\n // authenticationService.login(currentUser);\r\n\r\n // }\r\n // })\r\n // }\r\n // })\r\n history.replace(successRes.currentPath);\r\n })\r\n .catch(errorRes => {\r\n console.error(errorRes);\r\n // Error handling\r\n // displayErrorByType(errorRes.type)\r\n\r\n // Update current path to trim any extra params in url\r\n // eg. this.props.history.replace(response.currentPath);\r\n });\r\n }\r\n\r\n \r\n \r\n // if (!currentUser) {\r\n // return {\r\n // window.location.href = '/Account/Login';\r\n // return null;\r\n // }} />\r\n // }\r\n //}\r\n\r\n //console.log(\"roles = \" + JSON.stringify(roles));\r\n //console.log(\"currentUser roles = \" + JSON.stringify(currentUser.roles));\r\n\r\n // check if route is restricted by role\r\n //if (roles && !roles.some(r => currentUser.roles.indexOf(r) >= 0)) {\r\n // // role not authorised so redirect to home page\r\n // return \r\n //}\r\n\r\n // authorised so return component\r\n //console.log(\"Private Route componente props = \" + JSON.stringify(currentUser));\r\n //console.log(\"Private Route props = \" + JSON.stringify(props));\r\n return \r\n }} />\r\n)","import React, { Component } from 'react';\r\nimport { Route, Redirect } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport { FetchData } from './components/FetchData';\r\nimport { WizardPrincipal } from './components/Wizard_Principal';\r\n/*import { WizardPrincipal } from './components/WizardPrincipal';*/\r\nimport { Counter } from './components/Counter'; \r\nimport { PrivateRoute } from './components/PrivateRoute';\r\nimport { authenticationService } from './services/authentication.service';\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport './custom.css'\r\nimport { AppContext } from './AppContext';\r\n//import { customFetch } from './services/customFetch';\r\nimport CasClient, { constant } from \"react-cas-client\";\r\n\r\nconst CAS_SERVER = process.env.REACT_APP_CAS_SERVER;\r\nconst APP_ID = process.env.REACT_APP_ID;\r\nconst API_URL = process.env.REACT_APP_API_URL;\r\n\r\nconst casOptions = { version: constant.CAS_VERSION_2_0, path: '/', protocol: 'https' };\r\nconst casClient = new CasClient(CAS_SERVER, casOptions);\r\n\r\nconst history = createBrowserHistory();\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n username: null,\r\n currentUser: null\r\n };\r\n } \r\n\r\n componentDidMount() {\r\n //console.log(\"app state = \" + JSON.stringify(this.state));\r\n const { username } = this.state;\r\n\r\n if (!username) {\r\n casClient\r\n .auth()\r\n .then(successRes => {\r\n //console.log(\"App successRes = \" + JSON.stringify(successRes)); this.setState({ username: successRes.user });\r\n history.replace(successRes.currentPath);\r\n })\r\n .catch(errorRes => { console.log(\"App errorRes = \" + JSON.stringify(errorRes)) });\r\n }\r\n //console.log(\"App componentDidMount\");\r\n this.subscription = authenticationService.currentUser.subscribe(currentUser => {\r\n\r\n if (currentUser && currentUser.idpersona) {\r\n //console.log(\"App currentUser = \" + JSON.stringify(currentUser));\r\n\r\n this.setState({ currentUser: currentUser });\r\n authenticationService.fetch();\r\n }\r\n });\r\n //customFetch.fetch(this.state.currentUser ? this.state.currentUser.token : null);\r\n }\r\n\r\n componentDidUpdate() {\r\n const { username, currentUser } = this.state;\r\n if (username && !currentUser) {\r\n fetch(API_URL + \"Login\", {\r\n method: 'POST', headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ idapp: APP_ID, netid: username })\r\n })\r\n // fetch(API_URL + \"Login\", { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ idapp: APP_ID, netid: username }) })\r\n .then(response => response.json())\r\n .then((result) => {\r\n //console.log(\"RESPONSE LOGINNNNNN\", result)\r\n const currentUser = {\r\n idpersona: result.user.idpersona,\r\n usuario: result.user.netId,\r\n identificacion: result.user.numeroidentificacion,\r\n apellidos: result.user.apellidos,\r\n nombres: result.user.nombres,\r\n roles: [\"PROFESOR\"],\r\n token: result.token\r\n };\r\n this.setState({ currentUser: currentUser });\r\n authenticationService.login(currentUser);\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n render() {\r\n //console.log(\"app state = \" + JSON.stringify(this.state));\r\n\r\n //console.log(\"App render currentUser = \" + JSON.stringify(this.state.currentUser));\r\n return (\r\n \r\n \r\n \r\n {/**/}\r\n {/* */} \r\n {\r\n casClient.logout();\r\n return null;\r\n }} />\r\n {/**/}\r\n \r\n \r\n );\r\n }\r\n}\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport * as dotenv from 'dotenv';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\ndotenv.config();\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/Nueva.80762dc3.svg\";","module.exports = __webpack_public_path__ + \"static/media/Aviso.af97b9cb.svg\";"],"sourceRoot":""}