123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- /*
- * Funciones generales de horario
- * Necesita variables globales: _w, _h, _hora_min, _frac
- */
- //$("#dia1").position().top
- //$("#dia1").position().left
- var toast = {
- timer : null,
- show : function (message) {
- // SET MESSAGE + SHOW BOX
- document.getElementById("copy-box").innerHTML = message;
- document.getElementById("copy-box").style.display = "block";
- // RESET TIMER IF STILL RUNNING
- if (toast.timer != null) {
- clearTimeout(toast.timer);
- toast.timer = null;
- }
- // SET DISPLAY TIME HERE
- toast.timer = setTimeout(toast.hide, 1500);
- },
- hide : function () {
- document.getElementById("copy-box").style.display = "none";
- clearTimeout(toast.timer);
- toast.timer = null;
- }
- };
- function getX(dia){//recibe dia devuelve pos en la que está la celda
- return Math.ceil($("#dia"+dia).position().left);
- }
- function getY(dia){//recibe dia devuelve pos en la que está la celda
- return Math.ceil($("#dia"+dia).position().top + 30);
- }
- function getDia(x,y){//dice qué día del mes es con base a las coordenadas
- var col = Math.ceil(x / _w);
- var row = Math.ceil(y / _h);
-
- var col_1 = Math.ceil(getX(1) / _w);//pos del día 1
-
- return (7 * row) + col - col_1+1; //+1 porque no empieza en 0
- }
- function getAlto(alto){//calcula alto del bloque html
- return alto * _h / (60/_frac);
- }
- $(document).on( "mouseenter", ".menu-wrapper", function(){
- $(this).find('.menu-flotante').removeClass('d-none');
- });
- $(document).on( "mouseleave", ".menu-wrapper", function(){
- $(this).find('.menu-flotante').addClass('d-none');
- });
- function getIndexClase(idobj){//busca en qué posición del arreglo está el id del horario
- for(var i=0; i < clasesObj.length; i++){
- if(clasesObj[i].id_obj == idobj){
- return i;
- }
- }
- return -1;
- }
- function getObjID(id_db){//busca en qué posición del arreglo está el id del horario
- for(var i=0; i < clasesObj.length; i++){
- if(clasesObj[i].id_db == id_db){
- return clasesObj[i].id_obj;
- }
- }
- return -1;
- }
- $(document).on( "click", ".bloque-ver", function(event){
- var btn = $(event.target);
-
- var thisIndex = getIndexClase(btn.parents('.bloque-evento').data("id_obj"));
- $('#modal_ver').find('.titulo').text(clasesObj[thisIndex].titulo);
- $('#modal_ver').find('.fecha').text(clasesObj[thisIndex].dia);
- $('#modal_ver').find('.fechas_total').text(clasesObj[thisIndex].fechas_total);
- if(clasesObj[thisIndex].todo_dia)
- $('#modal_ver').find('.hora').text("Todo el día");
- else
- $('#modal_ver').find('.hora').text(clasesObj[thisIndex].hora_ini+" a "+clasesObj[thisIndex].hora_fin);
-
- if(clasesObj[thisIndex].desc != ""){
- $('#modal_ver').find('.desc').html(clasesObj[thisIndex].desc);
- $('#modal_ver').find('.desc').removeClass("d-none");
- }else{
- $('#modal_ver').find('.desc').addClass("d-none");
- }
- if(clasesObj[thisIndex].tiene_evidencia){
- $('#modal_ver').find('.evidencia').html(clasesObj[thisIndex].evidencia);
- $('#modal_ver').find('#ver_evidencia').removeClass("d-none");
- }else{
- $('#modal_ver').find('#ver_evidencia').addClass("d-none");
- }
- if(clasesObj[thisIndex].insc_ini.length > 0 && clasesObj[thisIndex].insc_fin.length > 0){
- $('#modal_ver').find('#ver_inscripciones').removeClass("d-none");
- $('#modal_ver').find('.insc_ini').text(clasesObj[thisIndex].insc_ini);
- $('#modal_ver').find('.insc_fin').text(clasesObj[thisIndex].insc_fin);
- }else{
- $('#modal_ver').find('#ver_inscripciones').addClass("d-none");
- }
-
- $('#modal_ver').find('.categoria').text(clasesObj[thisIndex].categoria_desc);
- $('#modal_ver').find('.categoria_color').css({color: clasesObj[thisIndex].color});
-
-
- var rows = $("#datos_perfil .perfil").length;//cuenta renglones actuales
- if(rows > 0){//existe el área de perfil
- if(clasesObj[thisIndex].perfiles.length == 0){
- $("#datos_perfil").hide();
- }else{
- $("#datos_perfil").show();
- //borrar renglones extra pero dejar al menos 1
- while(rows > 1){
- $("#datos_perfil .perfil:last-child").remove();
- rows--;
- }
- for(var i=0; i<clasesObj[thisIndex].perfiles.length; i++){
- var cloned = $("#datos_perfil .perfil:first-child").clone(true).appendTo("#datos_perfil");
- cloned.text(clasesObj[thisIndex].perfiles[i].desc);
- }
- }
- }
-
- $('#modal_ver').modal('show');
- return false;
- });
- $(document).ready(function(){
-
- //-- Calendario
- $('.cambia-mes').click(function(){//abre modal para crear
- var new_month = (parseInt($("#mes").val())+11 + $(this).data("mes"))%12 + 1; //no se puede poner % con negativos
- var new_year = $("#anho").val();
- if($(this).data("mes") < 0 && new_month == 12){//quita mes
- new_year--;
- }
- if($(this).data("mes") > 0 && new_month == 1){//suma mes
- new_year++;
- }
- $("#mes").val(new_month);
- $("#anho").val(new_year);
- $("#formaCalendario").submit();
- });
-
- //-- Fin calendario
-
- $('#modal_exportar').on('show.bs.modal', function (event) {
- changeURL();
- });
- $('#modal_exportar .perfil').change(function() {
- changeURL();
- });
- $('.btn-exportar').click(function(){//enviar evento nuevo
- if(validaExportar()){
- var perfilesArr = [];
- if($("#modal_exportar").find(".perfil").length > 0){
- $.each($('#modal_exportar .perfil'), function(){
- if($(this).prop("checked")){
- perfilesArr.push($(this).val());
- }
- });
- }else{
- $.each($('#modal_exportar .perfil_hidden'), function(){
- perfilesArr.push($(this).val());
- });
- }
- $('#modal_exportar').modal('hide');
- $("#perfiles_exportar").val(perfilesArr.toString());
- $("#forma_exportar").attr("action", "./export/ical_calendario.php");
- $("#forma_exportar").submit();
- }
- });
-
- $('.btn-pdf').click(function(){//enviar evento nuevo
- if(validaExportar()){
- var perfilesArr = [];
- if($("#modal_exportar").find(".perfil").length > 0){
- $.each($('#modal_exportar .perfil'), function(){
- if($(this).prop("checked")){
- perfilesArr.push($(this).val());
- }
- });
- }else{
- $.each($('#modal_exportar .perfil_hidden'), function(){
- perfilesArr.push($(this).val());
- });
- }
- $('#modal_exportar').modal('hide');
- $("#perfiles_exportar").val(perfilesArr.toString());
- $("#forma_exportar").attr("action", "./export/pdf_calendario.php");
- $("#forma_exportar").submit();
- }
- });
-
- $(".btn-copiar").click(function(){
- var textoCopiar = $(this).parents(".input-group").find('.texto-copiar');
- textoCopiar.select();
- document.execCommand("copy");
- window.getSelection().removeAllRanges();
- toast.show("URL copiada!");
- //textoCopiar.blur();
- });
- });
- function validaExportar(){
- var error = false;
- if($("#modal_exportar").find(".perfil").length > 0){
- if($("#modal_exportar").find(".perfil:checked").length == 0){
- error = true;
- $("#modal_exportar .perfil").addClass("is-invalid");
- $("#perfil_exportar_error").removeClass("d-none");
- }else{
- $("#perfil_exportar_error").addClass("d-none");
- }
- }
- return !error;
- }
- function changeURL(){
- var base = "http://200.13.89.48/ical.php?";
- if(validaExportar()){
- var perfilesArr = [];
- if($("#modal_exportar").find(".perfil").length > 0){//admon
- $.each($('#modal_exportar .perfil'), function(){
- if($(this).prop("checked")){
- perfilesArr.push($(this).val());
- }
- });
-
- $("#suscripcion_url").val("");
- $.ajax({
- url: './action/calendario_hash.php',
- type: 'POST',
- dataType: 'json',
- data: {per: $("#suscripcion_url").data("periodo"), perf: perfilesArr.toString()},
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $('#modal_categoria').modal("hide");
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
- base = base+"valida="+result["hash"]+"&per="+$("#suscripcion_url").data("periodo")+"&perf="+perfilesArr.toString();
- $("#suscripcion_url").val(base)
- }
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $('#modal_categoria').modal("hide");
- $("#errorBox").collapse('show');
- $("#errorBox_text").html("Error al guardar la categoría");
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//ajax
-
- }else{//usuario
- if( $("#suscripcion_url").val() == ""){
- $.each($('#modal_exportar .perfil_hidden'), function(){
- perfilesArr.push($(this).val());
- });
-
- $.ajax({
- url: './action/calendario_hash.php',
- type: 'POST',
- dataType: 'json',
- data: {per: $("#suscripcion_url").data("periodo"), perf: perfilesArr.toString()},
- success: function(result) {
- if(result["error"]!= "" && result["error"] !== undefined){
- $('#modal_categoria').modal("hide");
- $("#errorBox").collapse('show');
- $("#errorBox_text").html(result["error"]);
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }else{
- base = base+"valida="+result["hash"]+"&per="+$("#suscripcion_url").data("periodo")+"&perf="+perfilesArr.toString();
- $("#suscripcion_url").val(base)
- }
- },
- error: function(jqXHR, textStatus, errorThrown ){
- $('#modal_categoria').modal("hide");
- $("#errorBox").collapse('show');
- $("#errorBox_text").html("Error al guardar la categoría");
- $('#messageBox')[0].scrollIntoView({ block: "end" });
- }
- });//ajax
- }
- }
-
- $("#suscripcion_block").show();
-
- }else{
- $("#suscripcion_block").hide();
- }
-
- }
- function creaEventoHTML(id, posX, posY, color, texto, todo_dia, editable, total, hora_ini, insignias_total){//crea bloque HTML
- var edit_class = "";
- var repiteHTML ="";
- var completo_class ="";
- var completo_color ="";
- var hora_class ="";
- var sort=2;
- var hora = "";
-
-
- if(parseInt(todo_dia) == 1 || todo_dia == true){
- sort = -1;
- completo_color = 'background-color:'+color;
- completo_class = 'evento-completo';
- }
- else{
- var hora_arr = hora_ini.split(":");
- hora_class = '<span class="ing-bullet" style="color:'+color+'; margin-top:2px; font-size:80%"></span>' ;
- sort = parseInt(hora_arr[0]);
- if(sort >12){
- hora = sort-12;
- }else if(sort == 0){
- hora = 12;
- }else
- hora = sort;
- if(sort >= 12)
- hora = hora+"pm";
- else
- hora = hora+"am";
-
- hora = '<span class="evento-hora">'+hora+'</span>';
- }
-
- if(parseInt(total) > 1){ repiteHTML = '<span style="right: 4px; top:3px; position: absolute;"><span class="ing-link"></span></span>'; }
-
- if(editable === true ){edit_class = "bloque-draggable ui-draggable ui-draggable-handle";}
-
- var nuevoHorario = '<div class="bloque-evento '+edit_class+' '+completo_class+'" id="bloque_'+id+'" data-id_obj="'+id+'" data-sort="'+sort+'"\
- style="height:'+_block_h+'px; '+completo_color+'" >\
- <div class="menu-wrapper">\
- <p><span class="cat_ico" style="left: 4px;position: absolute;">'+hora_class+'</span>\
- '+hora+'<span class="title px-1" style="margin-right:13px">'+texto+'</span>'+repiteHTML+'</p>\
- <div class="menu-flotante d-none">\
- <span class="float-right iconos" >\
- <span class="ing-buscar ing-fw bloque-ver mx-1" aria-hidden="true" title="Ver detalle"></span>';
- if(editable === true /*&& insignias_total == 0*/){
- nuevoHorario +='<span class="ing-editar ing-fw calendario_edita mx-1" aria-hidden="true" title="Editar"></span>\
- <span class="ing-basura ing-fw mx-1" aria-hidden="true" data-toggle="modal" data-target="#modal_confirm" title="Borrar"></span>';
- }
- nuevoHorario +='</span>\
- </div>\
- </div>\
- </div>';
- return $(nuevoHorario);
- }
|