//-----------------------------------TAREFAS------------------------------------

//Alterar a descricao da tarefa
var lastClick = 0;
var alteracao = false;

function delay(callback, ms) {
  var timer = 0;
  return function() {
    var context = this, args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      callback.apply(context, args);
    }, ms || 0);
  };
}

//Se tiver uma tarefa dentro da categoria selecionada carrega os detalhes da tarefa
var currenthash = window.location.hash.split('#')[1];
if(currenthash)
{
  $('#tar'+currenthash).addClass("active");

  $('.chat-wrap-inner').animate({
    scrollTop:   $('#tar'+currenthash).offset().top - $('.chat-wrap-inner').offset().top + $('.chat-wrap-inner').scrollTop()
  });

  $.get( "/app/content/tarefas/tarefa_detalhes.php?tarefaid="+currenthash, function( data )
  {
    $("#task_window" ).html( data );
    $('#task_window').toggleClass('opened');
    $('[data-toggle="tooltip"]').tooltip();
  });
}

document.addEventListener('trix-change', delay(function (e) {
  var element = jQuery("#descricaotarefa").val();
  var id = jQuery("#descricaotarefa").data("id");
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "alterar_descricao_tarefa", "tarefaid" : id, "descricao" : element },
    cache: false,
  });
}, 500));

/*$(document).on('mouseover', '.task-textarea',  function(e){
  if ($(".task-textarea-content").length > 0) {
    var id = $(this).data("id");
    var selector = $(this);
    var element = selector.find(".task-textarea-content").html();
    $.ajax({
        url: '/app/elements/functions/ajax.php',
        type: 'POST',
        data: { 'ajax': 'obter_trix', 'id': id, 'html':  element},
        success: function(response){
            selector.find(".task-textarea-content").remove();
            $('.task-textarea-trix').show();
            $('.task-textarea-trix').html(response);
        }
    });
    setTimeout(function() {
      $('#descricaotarefa').val(element);
    }, 500);
  }
});*/

$(document).on('click', '.icon-editar-tesk-desk',  function(e){
  $(this).hide();
  var selector = $(".task-textarea");
  var id = selector.data("id");
  var element = selector.find(".task-textarea-content").html();
  $.ajax({
      url: '/app/elements/functions/ajax.php',
      type: 'POST',
      data: { 'ajax': 'obter_trix', 'id': id, 'html':  element},
      success: function(response){
          selector.find(".task-textarea-content").remove();
          $('.task-textarea-trix').show();
          $('.task-textarea-trix').html(response);
      }
  });
  setTimeout(function() {
    $('#descricaotarefa').val(element);
  }, 500);

});


//Alterção da hash com a própria página carregada
$(window).on('hashchange', function()
{
  var currenthash = window.location.hash.split('#')[1];
  $.get( "/app/content/tarefas/tarefa_detalhes.php?tarefaid="+currenthash, function( data )
  {
    $("#task_window" ).html( data );
    $('#task_window').toggleClass('opened');
    $('[data-toggle="tooltip"]').tooltip();
  });
});

//Carregar a tarefa ao clicar no título da tarefa
$(document).on("click", '.tarefaclick', function(e)
{
  /*var parentOffset = $(this).find('.task-label').offset();
  var relX = e.pageX - parentOffset.left;
  var relY = e.pageY - parentOffset.top;*/
  var tarefa_id=$(this).data("id");
  //Remover a seleção de background anterior
  $( ".tarefaclick > .task-container" ).removeClass("bg-light");
  $( ".tarefaclick" ).removeClass("active");
  //Adicionar background
  $('#tar'+$(this).data("id")+' > div').addClass("bg-light");
  $('#tar'+$(this).data("id")).addClass("active");
  /*if($("#task_window" ).data('idtarefa') != tarefa_id)
  {*/
    $.get( "/app/content/tarefas/tarefa_detalhes.php?tarefaid="+$(this).data("id"), function( data )
    {
        $("#task_window" ).html( data );
        $('#task_window').toggleClass('opened');
        $('#task_window').attr('data-idtarefa', tarefa_id);
        $('[data-toggle="tooltip"]').tooltip();
    });
  /*}*/
});


//Alterar a descricao da tarefa Ao sair com o rato do local atualiza
/*$(document).on("mouseleave", '#descricaotarefa', function(event)
{
  if(alteracao==true)
  {
    var element = jQuery("#descricaotarefa").val();
    var id = jQuery("#descricaotarefa").data("id");
    $.ajax({
      url: "/app/elements/functions/actions.php",
      type: 'POST',
      data: {"acao": "alterar_descricao_tarefa", "tarefaid" : id, "descricao" : element},
      cache: false,
    });
    alteracao=false;
  }
});*/

//Alteração de texto no título na listagem. Altera na BD
$('body').on('focus', '[contenteditable]', function() {
  const $this = $(this);
  $this.data('before', $this.html());
}).on('blur keyup paste', '[contenteditable]', function() {
  const $this = $(this);
  if ($this.data('before') !== $this.html()) {
    $this.data('before', $this.html());
    $this.trigger('change');
    //Pedido AJAX (altera o tнtulo)
    $.ajax({
      url: "/app/elements/functions/actions.php",
      type: 'POST',
      data: {"acao": "alterar_titulo_tarefa", "tarefaid" : $(this).data("id"), "titulo" : $this.html()},
      cache: false,
      success: function(response){
        $('#resposta').html(response);
        setTimeout(function() {  $('#resposta').html('');}, 5000);
      }
    });
  }
});

//Pesquisa
$( "#formpesquisa" ).submit(function( event )
{
  event.preventDefault();
  //Pedido AJAX (adiciona comentário)
  $.ajax({
    url: "/app/content/tarefas/tarefa_pesquisa.php",
    type: 'POST',
    data: {"pesquisar":$("#formpesquisa").find('input').val()},
    cache: false,
    success: function(response){
      $("#task-list").html(response);
      if($('.task_with_cronometro').length){
        var a = [];
        $('.task_with_cronometro').each( function() {
          a.push( $(this).data( "id" ) );
        });

        atualizer_cronometros(a);

        setInterval(function () {
          atualizer_cronometros(a);
        }, 30000);

        function atualizer_cronometros(a) {
          $.ajax({
              url: '/app/elements/functions/actions.php',
              type: 'POST',
              data: { 'acao': 'atualizar_cronometro', 'tarefas': a },
              success: function(response){
                  $('#resposta').append(response);
                  setTimeout(function() {  $('#resposta').html('');}, 10000);
              }
          });
        }
      }
    }
  });
});

//Eliminar tarefas
$(document).on("click", '#eliminartarefa', function(event)
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "eliminar_tarefa", "tarefaid" : $( "#eliminartarefa" ).data('id')},
    cache: false,
    success: function(response)
    {
      $( "#task_window" ).html('');
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });

  //Eliminar da lista
  $("#tar"+$( "#eliminartarefa" ).data('id')).html('');
  $("#task_window").html('');

  //popup
  var task = '';
  var notificationText = 'Tarefa eliminada';
  var notificationPopup = $('.notification-popup ');
  notificationPopup.find('.task').text(task);
  notificationPopup.find('.notification-text').text(notificationText);
  notificationPopup.removeClass('hide success');
  // If there is already a timeout running for hiding current popup, clear it.
  if(notificationTimeout)
  clearTimeout(notificationTimeout);
  // Init timeout for hiding popup after 3 seconds
  notificationTimeout = setTimeout(function(){
    notificationPopup.addClass('hide');
  }, 3000);
});

//Eliminar categorias
$(document).on("click", '#eliminarcategoria', function(event)
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "eliminar_categoria_tarefa", "tarefacatid" : $( "#eliminarcategoria" ).data('id')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });

  //Eliminar da lista
  $("#tarefacatid"+$( "#eliminarcategoria" ).data('id')).html('');
  $("#task_window").html('');



  //popup
  var task = '';
  var notificationText = 'Projeto eliminado.\nAs tarefas existentes ficarão sem projeto associado';
  var notificationPopup = $('.notification-popup ');
  notificationPopup.find('.task').text(task);
  notificationPopup.find('.notification-text').text(notificationText);
  notificationPopup.removeClass('hide success');
  // If there is already a timeout running for hiding current popup, clear it.
  if(notificationTimeout)
  clearTimeout(notificationTimeout);
  // Init timeout for hiding popup after 3 seconds
  notificationTimeout = setTimeout(function(){
    notificationPopup.addClass('hide');
  }, 3000);
});

//Arquivar categorias
$(document).on("click", '#arquivarcategoria', function()
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "arquivar_categoria_tarefa", "tarefacatid" : $( "#arquivarcategoria" ).data('id')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Arquivar categorias
$(document).on("click", '#desarquivarcategoria', function()
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "desarquivar_categoria_tarefa", "tarefacatid" : $( "#desarquivarcategoria" ).data('id')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Alterar seguidores
$(document).on("click", '.adicionar_atribuicao_tarefa', function(event)
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "adicionar_atribuicao_tarefa", "tarefaid" : $(this).data('id'), "utilizadorid" : $(this).data('utilizadorid')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Alterar atribuição
$(document).on("click", '.alterar_atribuicao_tarefa', function(event)
{
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "alterar_atribuicao_tarefa", "tarefaid" : $(this).data('id'), "utilizadorid" : $(this).data('utilizadorid')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Desassociar associação
$(document).on("click", '.desassociar_utilizador_tarefa', function(event)
{
  $tarefaid = $(this).data('id');
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "desassociar_utilizador_tarefa", "tarefaid" : $tarefaid, "utilizadorid" : $(this).data('utilizadorid')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
      $.get( "/app/content/tarefas/tarefa_detalhes.php?tarefaid="+$tarefaid, function( data )
      {
        $("#task_window").html( data );
      });
    }
  });
});

//Ordenação das tarefas mais recentes para mais antigas
$(document).on("click", '.ordenacao_tarefas', function(event)
{
  var ordenacao = $(this).data('ordenacao');
  $.ajax({
    url: "/app/content/tarefas/tarefas_lista_com_ordernacao.php",
    type: 'GET',
    data: {"ordenacao": ordenacao},
    cache: false,
    success: function(response)
    {
      $('#listagemtarefas').html(response);
    }
  });
});

//Utilizadores associados aos projetos - Adicionar
$(document).on("click", '.adicionar_utilizador_tarefacat', function(event)
{
  event.preventDefault();
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "adicionar_utilizador_tarefacat", "tarefacatid" : $(this).data('tarefacatid'), "utilizadorid" : $(this).data('utilizadorid')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Desassociar o utilizador do projeto
$(document).on("click", '.desassociar_utilizador_tarefacat', function(event)
{
  event.preventDefault();
  $tarefacatid = $(this).attr('data-tarefacatid');
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    async:false,
    data: {"acao": "desassociar_utilizador_tarefacat", "tarefacatid" : $tarefacatid, "utilizadorid" : $(this).data('utilizadorid')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
      $.get( "/app/content/tarefas/tarefa_detalhes.php?tarefaid="+$tarefaid, function( data )
      {
        $("#task_window").html( data );
      });
    }
  });
});


//Eliminar entidade do projeto

$(document).on("click", '.eliminar_entidade_projeto', function(event)
{
  $tarefascatentidadeid = $(this).data('tarefascatentidadeid');
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "eliminar_entidade_projeto", "tarefascatentidadeid" : $tarefascatentidadeid},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 2000);
    }
  });
});

//Eliminação de ficheiros do projeto
$(document).on("click", '.ficheiro_delete', function(event){
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "ficheiro_delete","ficheiroid" : $(this).data('id')},
    cache: false,
    success: function(response)
    {
      $('#resposta').html(response);
      setTimeout(function() {  $('#resposta').html('');}, 5000);
    }
  });
});

//Faz o upload ao escolher o ficheiro
$(document).on("change", '#ficheiro-upload', function(event){
  //Submete a form
  $("#nomeficheiro").html(this.files[0].name);
  $( "#form-upload-ficheiro" ).submit();
  //Mostra loader
  $( "#upload-img").html('<div id="loader" style="margin: -140px 0 0 -90px;"><div class="loader-ellips" class="ml-3"><span class="loader-ellips__dot"></span><span class="loader-ellips__dot"></span><span class="loader-ellips__dot"></span><span class="loader-ellips__dot"></span></div></div>');
});

//Exportar tabela de tempos para excel
function ExportToExcel(type, fn, dl)
{
  event.preventDefault();
  var elt = document.getElementById('tabelatemposprojeto');
  var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" });
  return dl ?
  XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }):
  XLSX.writeFile(wb, fn || ('MySheetName.' + (type || 'xlsx')));
}
//----------------------------TEMPOS PROJETO------------------------------------

//Carregar os detalhes de tarefas por projeto por utilizador no mês selecionado
$(document).on("click", '.detalhes_tempo_mes_utilizador', function(event)
{
  $.get( "/app/content/tarefas/tarefas_temposprojeto.php?utilizadorid="+$(this).data("utilizadorid")+"&mesdata="+$(this).data("mesdata"), function( data )
  {
    $("#detalhes_tempo_mes_utilizador" ).html( data );
    $('#detalhes_tempo_mes_utilizador').modal('show');
    //$('#detalhes_tempo_mes_utilizador').toggleClass('opened');
  });
});

//---------------------Tarefas estados------------------------------------------
$(document).on("click", ".modal_estados_tarefa", function(event)
{
  event.preventDefault();
  $.get( "/app/content/tarefas/tarefa_estado.php?tarefaid="+$(this).data('tarefaid'), function( data ) {
    $("#modal_estados_tarefa").html( data );
    $("#modal_estados_tarefa").modal("show");
  });
});

$(document).on("click", ".eliminar_estado_tarefa", function(event)
{
  event.preventDefault();
  //Elimina o registo (linha)
  $(this).parent().parent().remove();
  //Pedido AJAX adicionar tarefa
  $.ajax({
    url: "/app/elements/functions/actions.php",
    type: 'POST',
    data: {"acao": "tarefa_estado_eliminar", "tarefasesthistid" : $(this).data("tarefasesthistid")},
    cache: false,
  });
});


$(document).on("click", '.atribuicao_tarefabtn', function(e)
{
  var tarefa_id=$(this).data("id");
  var userid=$(this).data("user");
  $.ajax({
      url: '/app/elements/functions/ajax.php',
      type: 'POST',
      data: {"ajax": "obter_modal_adicionar_atribuicao_tarefa", "id": tarefa_id, "user": userid},
      cache: false,
      success: function(response){
        $('#modal_adicionar_atribuicao_tarefa').html(response);
        $('#modal_adicionar_atribuicao_tarefa').modal('show');
      }
  });

});

//--------------------------------Ordenação das tarefas-------------------------
var tarefasordenacaoarray = new Array();
var indicearray;
$("#task-list").sortable({
  connectWith: "#task-list",
  handle: ".movetarefa",
  placeholder: "tarefas-drag-placeholder",
  update: function(event, ui)
  {
    //Obtém a ordenação atual para registar na bd a nova ordenação
    $( "#task-list li" ).each(function( index )
    {
      tarefasordenacaoarray[index] = $(this).data("id");
      //console.log( index + ": " + $(this).data("id") );
    });
    //Envia a comunicação AJAX com a lista ordenada

    $.ajax({
      url: "/app/elements/functions/actions.php",
      type: 'POST',
      data: {"acao": "tarefas_ordenacao", "tarefacatid" : categoriaativa, "ordenacao" : tarefasordenacaoarray},
      cache: false,
    });
  },
});
