// {} Librerías e importaciones

// ! Tabla
import Tabla from "../../../elementos/tabla.js";

// ! Parámetros
import { parametros } from "../../../../utilidades.js";

// {}
(() => {

  // ! Declaración de variables
  let peticion = { actual: null }

  // !
  new Tabla({
    datos: {
      peticion: {
        ruta: `${window.aplicacion.enlace}/ejecutar`,
        parametro: {
          procedimiento: 'p_traer_registros_combinados',
          renglon: 'programas'
        }
      }
    },
    configuracion: {
      dom: `ft`,
      pageLength: -1
    }
  }).inicializar();

  // !
  $('#icono').focusout(function(evento) {

    let icono = $(this).closest('.input-group').find('i')

    if (!this.value)
      return icono.removeAttr('class')
    ;

    this.value = this.value.trim().toLowerCase();

    icono.attr('class', this.value)

  });

  // !
  $('#tablaRegistros tbody').unbind('click').on('dblclick', 'tr', function(evento) {

    // + Condición para verificar si la
    // + petición existe y cancelarla
    peticion.actual &&
    peticion.actual.abort();

    // + Petición hacía el
    // + controlador 'traerRegistros'
    peticion.actual = $.ajax({
      url: `${window.aplicacion.enlace}/ejecutar`,
      data: {
        procedimiento: 'p_traer_unico_registro',
        renglon: 'PROGRAMA',
        id_renglon: $(evento.currentTarget).find('.id').text()
      },
      beforeSend: function(peticion, configuracion) {},
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {

        $(icono).focusout()

      },
      formulario: { elemento: formularioProgramas }
    })

  });

  // !
  $(botonGuardar).click(function(evento) {

    let formulario = {
      peticion: {
        parametro: parametros(formularioProgramas)
      }
    }

    formulario.peticion.parametro.append(
      'tipo_programa',
      (programa.value.startsWith('rep') ? 'C' : programa.value.substring(0, 1)).toUpperCase()
    );

    window.aplicacion.peticion.formulario.parametro = formulario.peticion.parametro

  });

  // !
  $(botonLimpiar).click(function(evento) {

    $(icono)
      .closest('.input-group')
      .find('i')
      .removeAttr('class')
    ;

    $('#tablaRegistros tr.table-active').removeClass('active')

  });

  // !
  $(document).on('ajaxSuccess', function(evento, configuracion) {

    if (
      window.aplicacion.peticion.formulario.elemento === formularioProgramas &&
      window.aplicacion.peticion.formulario.exitosa.propiedades === window.aplicacion.peticion.exitosa.propiedades
    )
      $("#tablaRegistros").DataTable().ajax.reload()

  })

})()
