/* * Carga calendario sin permitir edicion */ $(document).ready(function(){ loadHorario(); }); function loadHorario(){ $('.bloque-clase').remove(); clasesObj = []; id_obj = 0; //carga horarios y crea bloques $.ajax({ url: './action/horariogrupo_select.php', type: 'POST', dataType: 'json', async:false, data: { id: $('#filter_grupo').val()}, success: function(result) { if(result["error"]!= "" && result["error"] !== undefined){ console.log("Ocurrió un error de load"); $("#errorBox").collapse('show'); $("#errorBox_text").html(result["error"]); $('#messageBox')[0].scrollIntoView({ block: "end" }); }else{ var i, j; for(i = 0; i< result["horario"].length; i++){ var salon_nombre = ""; var submateriaArr = []; var sinSalon_sub = false; var sinProfSubmateria = []; if(result["horario"][i]["submaterias"].length > 0){ for(j = 0; j < result["horario"][i]["submaterias"].length; j++){ var submateria = { submateria: result["horario"][i]["submaterias"][j]["submateria"], submateria_nombre: result["horario"][i]["submaterias"][j]["submateria_nombre"], fecha_inicial: result["horario"][i]["submaterias"][j]["fecha_inicial"], fecha_final: result["horario"][i]["submaterias"][j]["fecha_final"], /*salon: result["horario"][i]["submaterias"][j]["salon"], salon_nombre: result["horario"][i]["submaterias"][j]["salon_nombre"], salon_nombre_completo: result["horario"][i]["submaterias"][j]["salon_nombre_completo"]*/ activa: result["horario"][i]["submaterias"][j]["activa"], } sinProfSubmateria[submateria.submateria] = false; /*if(result["horario"][i]["submaterias"][j]["salon"] == ""){ sinSalon_sub = true; }else{ salon_nombre+= submateria.salon_nombre+", "; }*/ if(submateria.submateria != "" && submateria != 0) submateriaArr.push(submateria); }; /*if(salon_nombre.length > 2) salon_nombre = salon_nombre.substring(0, salon_nombre.length-2);*/ } var profesorArr = []; for(j = 0; j < result["horario"][i]["profesores"].length; j++){ var profesor = { profesor: result["horario"][i]["profesores"][j]["profesor"], profesor_nombre: result["horario"][i]["profesores"][j]["profesor_nombre"], submateria: result["horario"][i]["profesores"][j]["submateria"], salon: result["horario"][i]["profesores"][j]["salon"], salon_nombre: result["horario"][i]["profesores"][j]["salon_nombre"], salon_nombre_completo: result["horario"][i]["profesores"][j]["salon_nombre_completo"] } if(result["horario"][i]["profesores"][j]["salon"] != ""){ salon_nombre+= profesor.salon_nombre+", "; } profesorArr.push(profesor); sinProfSubmateria[profesor.submateria] = true; } if(salon_nombre == ""){ sinSalon_sub = true; } if(salon_nombre.length > 2) salon_nombre = salon_nombre.substring(0, salon_nombre.length-2); var vinculadasArr = []; for(j = 0; j < result["horario"][i]["vinculada"].length; j++){ var vinculo = { id_db: result["horario"][i]["vinculada"][j]["id_db"], grupo: result["horario"][i]["vinculada"][j]["id_gpo"], //grupo_nombre: result["horario"][i]["vinculada"][j]["grupo_vinculo_nombre"], materia: result["horario"][i]["vinculada"][j]["id_mat"], materia_nombre: result["horario"][i]["vinculada"][j]["nombre"], } vinculadasArr.push(vinculo); }; var clase = { id_obj: id_obj, dia: parseInt(result["horario"][i]["dia"]), hora: result["horario"][i]["hora"], duracion: parseInt(result["horario"][i]["duracion"]), materia: parseInt(result["horario"][i]["materia"]), materia_nombre: result["horario"][i]["materia_nombre"], tipo: parseInt(result["horario"][i]["tipo"]), salon: parseInt(result["horario"][i]["salon"]), salon_nombre: result["horario"][i]["salon_nombre"], salon_nombre_completo: result["horario"][i]["salon_nombre_completo"], fecha_inicial: result["horario"][i]["fecha_inicial"], fecha_final: result["horario"][i]["fecha_final"], periodo_completo: result["horario"][i]["periodo_completo"], submaterias: submateriaArr, profesores: profesorArr, colision: [] }; if(clase.tipo == 0){ salon_nombre = clase.salon_nombre; if(clase.salon == 0 || clase.salon == "" || clase.salon == null || isNaN(clase.salon) || clase.salon == undefined){ salon_nombre = "-Pendiente-"; } } clasesObj.push(clase); creaHorarioHTML(id_obj, getX(clase.dia), getY(clase.hora), getAlto(clase.duracion) , clase.materia_nombre, salon_nombre, clase.profesores, clase.periodo_completo, clase.fecha_inicial, clase.fecha_final, clase.hora); id_obj++; }//fin for //Checa colisiones for(var i=0; i< clasesObj.length; i++){ var colision = colisionHorario(i, getX(clasesObj[i].dia), getY(clasesObj[i].hora), getAlto(clasesObj[i].duracion)); clasesObj[i].colision = colision.slice(); cambiaAncho(i, colision); } if(!tieneElectivas()){//si no hay, oculta electivasBlock $("#electivasBlock").addClass("d-none"); } } }, error: function(jqXHR, textStatus, errorThrown ){ $("#errorBox").collapse('show'); $("#errorBox_text").html("Error al cargar horario.
"+errorThrown); $('#messageBox')[0].scrollIntoView({ block: "end" }); } });//ajax } function creaHorarioHTML(id, posX, posY, alto, texto, salon, profArr, completo, fini, ffin, hora){//crea bloque HTML var incompletoClass = ""; var profHTML = ""; var fechaHTML = ""; for(i=0; i< profArr.length; i++){ profHTML += ' '+profArr[i].profesor_nombre+'
'; } if(parseInt(completo) != 1){//si on está completo pone fechas fechaHTML = '
'+fini+' a '+ffin+''; incompletoClass = "incompleto"; } var nuevoHorario = '
\ \
'; $(nuevoHorario).appendTo("#bloque-horarios"); } function traeAlFrente(index){ var classI = getIndexClase(index); var posX = getX(clasesObj[classI].dia), posY = getY(clasesObj[classI].hora), alto = getAlto(clasesObj[classI].duracion); var i=0; for(i=0; i < clasesObj.length; i++){ if(posX == getX(clasesObj[i].dia) && i != classI){//mismo día, no es el horario actual if((posY >= getY(clasesObj[i].hora) && posY <= getY(clasesObj[i].hora)+getAlto(clasesObj[i].duracion)) || (posY+alto >= getY(clasesObj[i].hora) && posY+alto <= getY(clasesObj[i].hora)+getAlto(clasesObj[i].duracion)) ){ var id = (clasesObj[i].id_obj); $("#bloque_"+id).css({zIndex: i+10}); } } } if(clasesObj.length > 0)//había otros $("#bloque_"+index).css({zIndex: i+15}); } $(document).on( "click", ".bloque-clase", function(event){//manda al frente de todos var btn = $(event.target); //var thisIndex = getIndexClase(btn.parents('.bloque-clase').data("id_obj")); var thisIndex = btn.parents('.bloque-clase').data("id_obj"); traeAlFrente(thisIndex); }); function tieneElectivas(){ for(var i = 0; i < clasesObj.length; i++){ if(clasesObj[i].submaterias.length > 0){ return true; } } return false; }