/* * Carga calendario sin permitir edicion */ $(document).ready(function(){ loadHorario(); timer(_reloadTime); $('#modal_ver').on('hide.bs.modal', function (event) {//al cerrar verifica si se tiene que recargar if(_reloadOnClose){ loadCalendario(); _reloadOnClose = false; timer(_reloadTime); } }); $(".date-picker" ).datepicker(datepickerOptions); $(".date-picker" ).datepicker( $.datepicker.regional[ "es" ] ); $(".date-picker").blur(function(){ var fechaObj = fechaObjeto($(this).val()); if( fechaObj !== false ){ if(Date.parse(fechaObj) < Date.parse(fechaObjeto(_periodo_fecha_inicial))){ $(this).val(_periodo_fecha_inicial); }else if(Date.parse(fechaObj) > Date.parse(fechaObjeto(_periodo_fecha_final))){ $(this).val(_periodo_fecha_final); } } }); }); function loadHorario(){ $('.bloque-clase').remove(); clasesObj = []; id_obj = 0; //carga horarios y crea bloques $.ajax({ url: './action/horariogrupo_select.php', type: 'POST', dataType: 'json', data: { id: $('#filter_grupo').val(), puesto:false, editable: false}, 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"]*/ } 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"], } profesorArr.push(profesor); sinProfSubmateria[profesor.submateria] = true; } 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"]), dia_orig: parseInt(result["horario"][i]["dia"]), hora: result["horario"][i]["hora"], hora_orig: result["horario"][i]["hora"], duracion: parseInt(result["horario"][i]["duracion"]), materia: parseInt(result["horario"][i]["materia"]), materia_orig: 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, vinculos: vinculadasArr, color: result["horario"][i]["color"], 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.color, clase.materia_nombre, salon_nombre, clase.profesores.length, clase.periodo_completo, vinculadasArr.length, clase.fecha_inicial, clase.fecha_final); if(result["horario"][i]["alerta"]){ if(clase.tipo == 0){ if(clase.profesores.length == 0 || clase.salon == 0 || clase.salon == "" || clase.salon === null || isNaN(clase.salon) || clase.salon === undefined){ $("#bloque_"+id_obj+" .alerta").removeClass("d-none"); } }else{ if(sinSalon_sub) $("#bloque_"+id_obj+" .alerta").removeClass("d-none"); if(clase.profesores.length == 0){ $("#bloque_"+id_obj+" .alerta").removeClass("d-none"); } /* var prof_sub = true; sinProfSubmateria.forEach(function (arrayItem) { prof_sub = prof_sub && arrayItem; }); if(!prof_sub) $("#bloque_"+id_obj+" .alerta").removeClass("d-none");*/ } } id_obj++; //Actualiza horas asignadas actualizaHoras(clase.materia); }//fin for actualizaLista(); //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); } } _editable = true; }, error: function(jqXHR, textStatus, errorThrown ){ $("#errorBox").collapse('show'); $("#errorBox_text").html("Error al cargar horario.
"+errorThrown); $('#messageBox')[0].scrollIntoView({ block: "end" }); _editable = true; } });//ajax } function creaHorarioHTML(id, posX, posY, alto, color, texto, salon, numProf, completo, link, fini, ffin){//crea bloque HTML var completoClass = ""; var linked = ""; var fechaHTML = ""; if(parseInt(completo) == 1){ completoClass = " d-none"; }//si está completo el horario no pone signo + else{ fechaHTML = '
'+fini+' a '+ffin+''; } if(parseInt(link) == 0){linked = " d-none"; } var nuevoHorario = '
\ \
'; $(nuevoHorario).appendTo("#bloque-horarios"); } function checaActualizaciones(){ if(!_reloadOnClose && !(($("#modal_ver").data('bs.modal') || {_isShown: false})._isShown)){ console.log("check"); ordenaHorario(); var strCheck = ""; for(var i=0; i < clasesObj.length; i++){ strCheck += clasesObj[i].dia+""+clasesObj[i].hora+""+clasesObj[i].materia+""+clasesObj[i].duracion+""+clasesObj[i].fecha_inicial+""+clasesObj[i].fecha_final+""+clasesObj[i].tipo; } strCheck = MD5(strCheck); $.ajax({ url: './action/horariogrupo_validahash.php', type: 'POST', dataType: 'json', data: { id: _grupo_id, check: strCheck}, success: function(result) { if(result["error"]!= "" && result["error"] !== undefined){ $("#errorBox").collapse('show'); $("#errorBox_text").html("Error al guardar el horario.
"+result["error"]); $('#messageBox')[0].scrollIntoView({ block: "end" }); }else{ var reload = result["reload"]; if(reload){ if(!(($("#modal_ver").data('bs.modal') || {_isShown: false})._isShown) ){//no están abiertos los modales{ loadHorario(); }else{ _reloadOnClose = true; } } } }, error: function(jqXHR, textStatus, errorThrown ){ $("#errorBox").collapse('show'); $("#errorBox_text").html(errorThrown); $('#messageBox')[0].scrollIntoView({ block: "end" }); } });//ajax timer(_reloadTime); }else timer(2); } 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 timer(tiempo = 0){ if(tiempo > 0){ setTimeout(checaActualizaciones, tiempo * 1000); } }