From 54e3598fa57f5354f3e2c9e47c22a11fd8d1ab6a Mon Sep 17 00:00:00 2001 From: Billy Larru <blarru.ti@sacooliveros.edu.pe> Date: Tue, 11 Sep 2018 17:31:26 -0500 Subject: [PATCH] [ADD programacion de seminario] --- src/main/webapp/js/general.js | 3 +++ src/main/webapp/js/pages/programacion_seminario.js | 363 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/webapp/vistas/modals/docentesporhoras/programacionSeminario/registroSeminario.jspf | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/main/webapp/vistas/programacionSeminario.jsp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 479 insertions(+), 2 deletions(-) create mode 100644 src/main/webapp/js/pages/programacion_seminario.js create mode 100644 src/main/webapp/vistas/modals/docentesporhoras/programacionSeminario/registroSeminario.jspf diff --git a/src/main/webapp/js/general.js b/src/main/webapp/js/general.js index cbb4b8b..024c577 100644 --- a/src/main/webapp/js/general.js +++ b/src/main/webapp/js/general.js @@ -37,6 +37,9 @@ const URI_ADMINISTRATIVOS_TOLERANCIA_INDIVIDUAL = "toleranciasIndividuales"; const URI_ADMINISTRATIVOS_ESTADO_TOLERANCIA_INDIVIDUAL = "estadoTolerancias"; const URI_ADMINISTRATIVOS_VACACIONES_INDIVIDUAL = "vacacionesAdministrativasIndividuales"; const URI_CARGOS = "cargoLaboral"; +const URI_DOCENTES_PROGRAMACION_SEMINARIO = "programacionSeminario"; +const URI_DOCENTES_TIPO_SEMINARIO = "tipoSeminario"; +const URI_DOCENTES_GRUPO_ACADEMICO = "grupoAcademico"; //</editor-fold> diff --git a/src/main/webapp/js/pages/programacion_seminario.js b/src/main/webapp/js/pages/programacion_seminario.js new file mode 100644 index 0000000..a68fa84 --- /dev/null +++ b/src/main/webapp/js/pages/programacion_seminario.js @@ -0,0 +1,363 @@ +function getColumns() { + let columns = [ + { + title: `N°`, + data: `id`, + className: 'text-center' + }, + { + title: `APELLIDOS Y NOMBRES`, + data: null, + render: (data) => { + let nombresCompletos; + let nombres = data.trabajador_nombres; + let apellidos = data.trabajador_apellidos; + nombresCompletos = `${apellidos} ${nombres}`; + + return nombresCompletos; + } + }, + { + title: `TIPO`, + data: `tiposeminario_descripcion`, + className: 'text-center' + }, + { + title: `GRUPO ACAD.`.split(" ").join("<br>"), + data: `grupoacademico_descripcion`, + className: 'text-center' + }, + { + title: `FECHA`, + data: `fecha_seminario`, + className: 'text-center' + }, + { + title: `HORA INICIO`, + data: `hora_inicio`, + className: 'text-center' + }, + { + title: `HORA FIN`, + data: `hora_fin`, + className: 'text-center' + }, + { + title: `OBSERVACIÓN`, + data: `observacion`, + className: 'text-center' + }, + { + title: `ESTADO`, + data: `estado`, + className: 'text-center', + render: (data) => { + let label = ""; + let text = ""; + + switch (data) { + case 0: + label = "label bg-purple"; + text = "PENDIENTE"; + break; + case 1: + label = "label label-success"; + text = "ACEPTADO"; + break; + case 2: + label = "label label-danger"; + text = "RECHAZADO"; + break; + } + + return `<span class="${label}">${text}</span>`; + } + }, + { + title: `ACCIONES`, + data: null, + className: 'text-center', + render: (data) => { + let acciones = ""; + let verdetalle = ""; + let editar = ""; + let eliminar = ""; + let aceptar = ""; + let rechazar = ""; + + if (data.estado === 1) { + eliminar = `<span style="cursor: pointer"><i class="eliminar fa fa-power-off text-danger-700"></i> </span>`; + } else { + eliminar = `<span style="cursor: pointer"><i class="eliminar fa fa-power-off text-success-700"></i> </span>`; + } + + aceptar = `<span style="cursor: pointer"><i class="aceptar icon-checkmark4 text-success-700"></i> </span>`; + rechazar = `<span style="cursor: pointer"><i class="rechazar icon-cross2 text-danger-700"></i> </span>`; + verdetalle = `<span style="cursor: pointer"><i class="verdetalle icon-three-bars text-primary-700"></i> </span>`; + editar = `<span style="cursor: pointer"><i class="editar icon-pencil text-slate-800"></i> </span>`; + + + + acciones = aceptar + rechazar + verdetalle + editar + eliminar; + return acciones; + } + }, + ]; + + return columns; +} + +const listarPersonal = (selectorName) => { + initSelect2(selectorName, baseURLRest + URI_TRABAJADORES, {title: "nombresapellidos", subtitle: "documentoidentidad"}); +}; + +const listarSedes = (selectorName) => { + ajaxWebService.get(URI_SEDES).then((result) => { + let sedes = result.data; + sedes = _.orderBy(sedes, s => s.descripcion); + let html = `<option value="">[TODOS]</option>`; + sedes.forEach(sede => html += `<option value="${sede.codigo}">${sede.descripcion}</option>`); + $(`${selectorName}`).html(html); + $(selectorName).select2(); + }); +}; + +const mostrarModalAprobarSeminario = (data) => { + let {id, estado} = data; + let titulo = ""; + let textoConfirmacion = "" + let tituloOperacion = ""; + if (estado == 0) { + titulo = 'Está seguro de aprobar el seminario?'; + textoConfirmacion = 'Sí, aprobar!'; + tituloOperacion = '¡Aprobado exitosamente!'; + estado = 1; + } + + swal({ + title: titulo, + text: "", + type: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: textoConfirmacion + }).then((result) => { + if (result.value) { + ajaxWebService.patch(`${URI_DOCENTES_PROGRAMACION_SEMINARIO}/${id}`, {estado}).then((response) => { + if (response.status) { + swal({ + type: 'success', + title: tituloOperacion, + showConfirmButton: false, + timer: 1500 + }); + listarSeminariosProgramados(); + } + }); + } + }); +}; + + +const mostrarModalRechazarSeminario = (data) => { + let {id, estado} = data; + let titulo = ""; + let textoConfirmacion = "" + let tituloOperacion = ""; + if (estado == 0) { + titulo = 'Está seguro de desaaprobar el seminario?'; + textoConfirmacion = 'Sí, desaprobar!'; + tituloOperacion = '¡Desaprobado exitosamente!'; + estado = 2; + } + + swal({ + title: titulo, + text: "", + type: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: textoConfirmacion + }).then((result) => { + if (result.value) { + ajaxWebService.patch(`${URI_DOCENTES_PROGRAMACION_SEMINARIO}/${id}`, {estado}).then((response) => { + if (response.status) { + swal({ + type: 'success', + title: tituloOperacion, + showConfirmButton: false, + timer: 1500 + }); + listarSeminariosProgramados(); + } + }); + } + }); +}; + +function listarSeminariosProgramados(objParams = {}){ + ajaxWebService.get(URI_DOCENTES_PROGRAMACION_SEMINARIO, objParams).then((response) => { + let columns = getColumns(); + + let wrapsNameDatatable = `divDatatable`; + let classNameForDatatable = `display table table-bordered`; + + makeDatatable( + wrapsNameDatatable, + { + data: response.data, + columns, + }, + classNameForDatatable, + ).then((nodes) => { + nodes.container + .off() + .on("click", ".verdetalle", function () { + let data = nodes.datatable.DataTable().row($(this).parents("tr")).data(); + mostrarModalVerDetalleTolerancia(data); + }) + .on("click", ".editar", function () { + let data = nodes.datatable.DataTable().row($(this).parents("tr")).data(); + mostrarModalEditarTolerancia(data); + }) + .on("click", ".eliminar", function () { + let data = nodes.datatable.DataTable().row($(this).parents("tr")).data(); + mostrarModalEliminarTolerancia(data); + }) + .on("click", ".aceptar", function () { + let data = nodes.datatable.DataTable().row($(this).parents("tr")).data(); + mostrarModalAprobarSeminario(data); + }) + .on("click", ".rechazar", function () { + let data = nodes.datatable.DataTable().row($(this).parents("tr")).data(); + mostrarModalRechazarSeminario(data); + }); + }); + }); +} + +const aplicarFiltro = () => { + +}; + +const listarTipoSeminario = (nodeIdentifier) => { + ajaxWebService.get(URI_DOCENTES_TIPO_SEMINARIO).then((response) => { + let tiposSeminario = response.data; + tiposSeminario = _.orderBy(tiposSeminario, s => s.descripcion); + let html = `<option value="">[SELECCIONE]</option>`; + html += tiposSeminario.map(tipoSeminario => `<option value="${tipoSeminario.id}">${tipoSeminario.descripcion}</option>`); + $(nodeIdentifier).html(html); + }); +}; + +const listarGrupoAcademico = (nodeIdentifier) => { + ajaxWebService.get(URI_DOCENTES_GRUPO_ACADEMICO).then((response) => { + let gruposacademicos = response.data; + gruposacademicos = _.orderBy(gruposacademicos, grupoAcademico => grupoAcademico.descripcion); + let html = `<option value="">[SELECCIONE]</option>`; + html += gruposacademicos.map(grupoAcademico => `<option value="${grupoAcademico.id}">${grupoAcademico.descripcion}</option>`); + $(nodeIdentifier).html(html); + }); +}; + + +const inicializarInputsModalNuevoSeminario = () => { + listarPersonal("#cboDocentes"); + listarTipoSeminario("#cboTipoSeminario"); + listarGrupoAcademico("#cboGrupoAcademico"); + initDatePicker("#dpFechaSeminario"); +}; + +const registrarSeminario = () => { + let trabajador = $("#cboDocentes").select2('data')[0]; + let trabajador_id = trabajador.id; + let trabajador_apellidos = trabajador.apellidos; + let trabajador_nombres = trabajador.nombres; + let trabajador_documentoidentidad = ""; + let tiposeminario_id = $("#cboTipoSeminario").val(); + let tiposeminario_descripcion = $("#cboTipoSeminario option:selected").text(); + let grupoacademico_id = $("#cboGrupoAcademico").val(); + let grupoacademico_descripcion = $("#cboGrupoAcademico option:selected").text(); + let fecha_seminario = $("#dpFechaSeminario").val(); + let hora_inicio = $("#txtHoraInicio").val(); + let hora_fin = $("#txtHoraFin").val(); + let observacion = $("#txtObservacion").val(); + + let params = { + trabajador_id, + trabajador_apellidos, + trabajador_nombres, + trabajador_documentoidentidad, + tiposeminario_id, + tiposeminario_descripcion, + grupoacademico_id, + grupoacademico_descripcion, + fecha_seminario, + hora_inicio, + hora_fin, + observacion, + estado: 0 + }; + + ajaxWebService.post(URI_DOCENTES_PROGRAMACION_SEMINARIO, params) + .then((response) => { + if (response.status) { + swal({ + type: 'success', + title: '¡Seminario registrado exitosamente!', + showConfirmButton: false, + timer: 1500 + }); + listarSeminariosProgramados(); + } else { + swal({ + type: 'success', + title: '¡No ha sido posible registrar el seminario!', + showConfirmButton: false, + timer: 1500 + }) + } + + }); + + + +}; + +const mostrarModalNuevoSeminario = () => { + ajaxModal.get("docentesporhoras/programacionSeminario/registroSeminario.jspf").then((response) => { + swal({ + title: '<strong>Registro de seminario</strong>', + html: response.data, + showCloseButton: true, + showCancelButton: true, + focusConfirm: false, + confirmButtonText: '<i class="icon-checkmark2"></i> Registrar seminario', + confirmButtonAriaLabel: 'Registrar seminario', + cancelButtonText: '<i class="icon-cross3"></i>Cancelar', + cancelButtonAriaLabel: 'Thumbs down', + width: '30%', + customClass: 'swal2-overflow', + onOpen: () => { + inicializarInputsModalNuevoSeminario(); + } + }).then((result) => { + if (result.value) { + registrarSeminario(); + } + }); + }); +}; + + + +$(document).ready(function () { + $("#btnNuevoSeminario").click(mostrarModalNuevoSeminario); + $("#btnMostrarTodo").click(listarSeminariosProgramados); + $("#btnAplicarFiltro").click(aplicarFiltro); + listarPersonal("#cboDocenteFiltro"); + listarSedes("#cboSedesFiltro"); + initDatePicker("#dpFechaInicioFiltro", "#dpFechaFinFiltro"); +}); \ No newline at end of file diff --git a/src/main/webapp/vistas/modals/docentesporhoras/programacionSeminario/registroSeminario.jspf b/src/main/webapp/vistas/modals/docentesporhoras/programacionSeminario/registroSeminario.jspf new file mode 100644 index 0000000..789901f --- /dev/null +++ b/src/main/webapp/vistas/modals/docentesporhoras/programacionSeminario/registroSeminario.jspf @@ -0,0 +1,47 @@ +<form id="frm" onsubmit="return false;" autocomplete="off"> + + <div class="row"> + <div class="form-group col-md-8"> + <label>Docente</label> + <select id="cboDocentes" class="select-search form-control"></select> + </div> + <div class="form-group col-md-4"> + <label>Tipo de seminario</label> + <select id="cboTipoSeminario" class="select-search form-control"></select> + </div> + </div> + <div class="row"> + <div class="form-group col-md-4"> + <label>Fecha Seminario</label> + <div class="input-group"> + <span class="input-group-addon"><i class="icon-calendar"></i></span> + <input type="text" class="form-control" id="dpFechaSeminario"> + </div> + </div> + <div class="form-group col-md-4"> + <label>Hora inicio</label> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-clock-o"></i></span> + <input type="time" class="form-control" id="txtHoraInicio"> + </div> + </div> + <div class="form-group col-md-4"> + <label>Hora fin</label> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-clock-o"></i></span> + <input type="time" class="form-control" id="txtHoraFin"> + </div> + </div> + + </div> + <div class="row"> + <div class="form-group col-md-4"> + <label>Grupo academico</label> + <select id="cboGrupoAcademico" class="select-search form-control"></select> + </div> + <div class="form-group col-md-8"> + <label>Observacion</label> + <textarea name="txtObservacion" id="txtObservacion" cols="30" rows="4" class="form-control"></textarea> + </div> + </div> +</form> \ No newline at end of file diff --git a/src/main/webapp/vistas/programacionSeminario.jsp b/src/main/webapp/vistas/programacionSeminario.jsp index c780207..724a6b9 100644 --- a/src/main/webapp/vistas/programacionSeminario.jsp +++ b/src/main/webapp/vistas/programacionSeminario.jsp @@ -6,18 +6,82 @@ <%@include file="templates/header.jsp" %> <!--template-core--> <!--css de la pagina--> - + <link href="../css/lib/sweetalert2.min.css" rel="stylesheet" type="text/css"/> <!--css--> </head> <body> <%@include file="templates/header-body.jsp" %> <!-- content --> + <div class="col-md-6 col-md-offset-3"> + <div class="panel panel-primary"> + <div class="panel-heading"> + <h5 class="panel-title">Busqueda</h5> + </div> + + <div class="panel-body"> + <div class="row"> + <div class="col-md-6 form-group"> + <label>Docente</label> + <select class="select-search form-control" id="cboDocenteFiltro"> + </select> + </div> + <div class="col-md-6 form-group"> + <label>Sede</label> + <select id="cboSedesFiltro" class="select-search form-control"> + + </select> + </div> + </div> + <div class="row"> + <div class="col-md-6 form-group"> + <label>Fecha Inicio</label> + <div class="input-group"> + <span class="input-group-addon"><i class="icon-calendar"></i></span> + <input type="text" class="form-control" name="dpFechaInicioFiltro" id="dpFechaInicioFiltro"> + </div> + </div> + <div class="col-md-6 form-group"> + <label>Fecha Fin</label> + <div class="input-group"> + <span class="input-group-addon"><i class="icon-calendar"></i></span> + <input type="text" class="form-control" name="dpFechaFinFiltro" id="dpFechaFinFiltro"> + </div> + </div> + </div> + </div> + <div class="panel-footer"> + <div class="text-center"> + <button class="btn btn-primary" id="btnAplicarFiltro"><i class="icon-eye4"></i> Aplicar filtro</button> + <button class="btn btn-primary" id="btnMostrarTodo"><i class="icon-eye4"></i> Mostrar Todo</button> + </div> + </div> + </div> + </div> + + <div class="col-md-12"> + <div class="panel panel-primary card-3" style="margin-top: 30px"> + <div class="panel-heading" style="padding: 8px 15px"> + <h6 class="panel-title" style="font-size: 15px; font-family: inherit">LISTADO DE SEMINARIOS PROGRAMADOS</h6> + <div class="heading-elements"> + <button type="button" id="btnNuevoSeminario" class="btn bg-slate border-slate-600 btn-xs"><i class="glyphicon glyphicon-plus"></i> Nuevo seminario</button> + </div> + </div> + <div id="divDatatable"> + </div> + </div> + </div> <!-- / content --> <%@include file="templates/footer-body.jsp"%> <!--js de la pagina--> - + <script src="../plantilla/assets/js/core/libraries/jquery_ui/widgets.min.js" type="text/javascript"></script> + <script src="../plantilla/assets/js/plugins/ui/moment/moment.min.js" type="text/javascript"></script> + <script src="../plantilla/assets/js/plugins/pickers/datepicker.js" type="text/javascript"></script> + <script src="../js/lib/bootstrap-select.min.js" type="text/javascript"></script> + <script src="../plantilla/assets/js/plugins/forms/selects/select2.min.js"></script> + <script src="../js/lib/lodash.js" type="text/javascript"></script> + <script src="../js/pages/programacion_seminario.js" type="text/javascript"></script> <!--js--> </body> -- libgit2 0.26.0