$(document).ready(function () {
$('.curso details').click(function() {
lo_padre = $(this).parent();
// Añade al li padre la clase "open"
if($(this).attr('open')) {
lo_padre.removeClass('open');
} else {
lo_padre.addClass('open');
}
let li_tipo = $(this).parent().data('tipo');
let li_aula = $(this).parent().data('aula');
let li_codigo = $(this).parent().data('codigo');
if($(this).find('.detalle_curso').length == 0)
{
recuperaDetalleCurso(li_tipo, li_aula, li_codigo);
}
});
});
/********** Funciones ************/
function recuperaDetalleCurso(ai_tipo, ai_aula, ai_codigo) {
ocultaErrorCargaCurso(ai_tipo, ai_aula, ai_codigo);
muestraDetalleCargando(ai_tipo, ai_aula, ai_codigo);
$.getJSON("../ws-detalle-curso.php", { tipo: ai_tipo, aula: ai_aula, codigo: ai_codigo })
.done(function (lo_datos) {
muestraDetalleCurso(ai_tipo, ai_aula, ai_codigo, lo_datos);
})
.always(function() {
ocultaDetalleCargando(ai_tipo, ai_aula, ai_codigo);
})
.fail(function() {
muestraErrorCargaCurso(ai_tipo, ai_aula, ai_codigo);
})
}
function muestraDetalleCargando(ai_tipo, ai_aula, ai_codigo) {
lo_contenedor = $('.curso[data-tipo="' + ai_tipo + '"][data-aula="' + ai_aula + '"][data-codigo="' + ai_codigo + '"] details');
$('
').addClass('cargando_curso')
.attr('role', 'status')
.html('
Cargando datos del curso')
.appendTo(lo_contenedor);
}
function ocultaDetalleCargando(ai_tipo, ai_aula, ai_codigo) {
$('.curso[data-tipo="' + ai_tipo + '"][data-aula="' + ai_aula + '"][data-codigo="' + ai_codigo + '"] .cargando_curso').remove();
}
function muestraErrorCargaCurso(ai_tipo, ai_aula, ai_codigo) {
lo_contenedor = $('.curso[data-tipo="' + ai_tipo + '"][data-aula="' + ai_aula + '"][data-codigo="' + ai_codigo + '"] details');
$('
').addClass('error_carga_curso')
.attr('role', 'status')
.append($('
').html('Ha ocurrido un error obteniendo los datos del curso'))
.append($('').text('REINTENTAR')
.prop('href','#')
.click(function(event) {
event.preventDefault();
event.stopPropagation();
recuperaDetalleCurso(ai_tipo, ai_aula, ai_codigo);
}))
.appendTo(lo_contenedor);
}
function ocultaErrorCargaCurso(ai_tipo, ai_aula, ai_codigo) {
let lo_contenedor = $('.curso[data-tipo="' + ai_tipo + '"][data-aula="' + ai_aula + '"][data-codigo="' + ai_codigo + '"] details');
lo_contenedor.find('.error_carga_curso').remove();
}
function muestraDetalleCurso(ai_tipo, ai_aula, ai_codigo, ao_datos)
{
lo_contenedor = $('.curso[data-tipo="' + ai_tipo + '"][data-aula="'+ai_aula+'"][data-codigo="'+ai_codigo+'"] details');
lo_lista = $("").addClass('list-group detalle_curso');
$('- ').addClass('list-group-item')
.html('Fechas: '+ao_datos.F_INICIO+" hasta "+ao_datos.F_FIN)
.appendTo(lo_lista);
$('
- ').addClass('list-group-item')
.html('Días / horario: '+ao_datos.DIAS_TEXTO+", "+ao_datos.HORARIO_TEXTO)
.appendTo(lo_lista);
// En cursos marcados con 0 plazas no mostrar el nº de plazas.
if(ao_datos.PLAZAS > 0)
{
$('
- ').addClass('list-group-item')
.html('Plazas: '+ao_datos.PLAZAS)
.appendTo(lo_lista);
}
$('
- ').addClass('list-group-item')
.html('Horas: '+ao_datos.HORAS)
.appendTo(lo_lista);
if(ao_datos.PREVIOS == 'S') {
$('
- ').addClass('list-group-item')
.html('Conocimientos previos: Este curso requiere conocimientos previos')
.appendTo(lo_lista);
}
if(ao_datos.GRATUITO == 'S') {
$('
- ').addClass('list-group-item')
.html('Curso gratuito: Este curso es gratuito')
.appendTo(lo_lista);
}
$('
- ').addClass('list-group-item')
.html('Código: '+ao_datos.CODIGO)
.appendTo(lo_lista);
$('
- ').addClass('list-group-item')
.html('Objetivos:
'+nl2br_aa(ao_datos.CONTENIDOS.OBJETIVOS)+'
')
.appendTo(lo_lista);
$(' - ').addClass('list-group-item')
.html('Contenido:
'+nl2br_aa(ao_datos.CONTENIDOS.CONTENIDO)+'
')
.appendTo(lo_lista);
$(' - ').addClass('list-group-item')
.html('Requisitos:
'+nl2br_aa(ao_datos.CONTENIDOS.REQUISITOS)+'
')
.appendTo(lo_lista);
lo_lista.appendTo(lo_contenedor);
}
/**
* FUNCIONES AUXILIARES
*/
function nl2br_aa (str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '
' : '
';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}