123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- /*
- * 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.<br>"+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 = '<br><span class="text-80"><span class="img-importante2 mr-1"></span> '+fini+' a '+ffin+'</span>'; }
- if(parseInt(link) == 0){linked = " d-none"; }
- var nuevoHorario = '<div class="bloque-clase overflow" id="bloque_'+id+'" data-id_obj="'+id+'"\
- style="top:'+posY+'px; left:'+posX+'px; background-color:'+color+'; height:'+alto+'px" >\
- <div class="menu-wrapper">\
- <p><span class="ing-importante ing-fw alerta d-none"></span> <span class="title">'+texto+'</span> <span class="ing-link ing-fw bloque-vinculada '+linked+'"></span> '+fechaHTML+'</p>\
- <div class="d-flex justify-content-between w-100">\
- <p class="salon my-0">'+salon+'</p> <p class="text-right my-0"><span class="ing-formacion ing-fw mx-1"></span> <span class="profesores">'+numProf+'</span></p>\
- </div>\
- <div class="menu-flotante d-none">\
- <span class="float-left iconos">\
- <span class="ing-mas ing-fw bloque-agrega mx-1 '+completoClass+'" aria-hidden="true" title="Agregar materia en mismo horario"></span>\
- </span>\
- <span class="float-right iconos" >\
- <span class="ing-buscar ing-fw bloque-ver mx-1" aria-hidden="true" title="Ver detalle"></span>\
- </span>\
- </div>\
- </div>\
- </div>';
- $(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.<br>"+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);
- }
- }
|