// {} Librerías e importaciones
import Tabla from "../../../elementos/tabla.js";

// {}
(async () => {

  // ! Declaración de variables
  let
    peticion = { actual: null },
		tabla = {
      elemento: $(tablaRegistros),
      clase: new Tabla({
        tabla: $(tablaRegistros),
        columna: {
          peticion: {
            ruta: `${window.aplicacion.enlace}/ejecutar`,
            parametro: { procedimiento: 'p_traer_encabezado_registros'}
          }
        },
        datos: {
          peticion: {
            ruta: `${window.aplicacion.enlace}/ejecutar`,
            parametro: {
              procedimiento: 'p_traer_registros_combinados',
              renglon: 'USUARIOS'
            }
          }
        },
        configuracion: { dom: `ftp`, pageLength: -1 }
      })
		}

	// !
	await tabla.clase.inicializar();
	tabla.instancia = tabla.elemento.DataTable();

  tabla.elemento.find('tbody').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`,
      type: 'GET',
      data: {
        procedimiento: 'p_traer_unico_registro',
        renglon: 'USUARIO',
				id_renglon: $(evento.currentTarget).find('.id').text()
      },
      beforeSend: function(peticion, configuracion) {},
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {},
      formulario: { elemento: formularioUsuario }
    })

  });

  $(document).on('ajaxSuccess', (evento, peticion, configuracion) => {

		configuracion.parametros = new URLSearchParams(configuracion.url);

		configuracion.parametros.get('procedimiento') === 'p_registrar_usuarios' &&
		tabla.instancia.ajax.reload()

  });

})()
