// {} Librerías e importaciones

// ! Tabla
import { parametros } from "../../../utilidades.js";
import Tabla from "../../elementos/tabla.js";

// {}
(async () => {

	// ! Declaración de variables
	let
		peticion = { actual: null },
		campo = {
			turno: window.aplicacion.campo.selector.turno
		},
		tabla = {
			cajeros: {
				elemento: $(tabla_cajeros),
				clase: new Tabla({
					tabla: tabla_cajeros,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: { procedimiento: 'p_traer_encabezado_procesos' }
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_datos_entidad',
								renglon: 'CAJEROS',
								id_renglon: () => !id_cajero.value ? -1 : id_cajero.value
							}
						}
					},
					configuracion: { dom: `ft`, pageLength: -1 }
				})
			},
			informacion: {
				elemento: $(tabla_informacion),
				clase: new Tabla({
					tabla: tabla_informacion,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_encabezado_procesos',
								renglon: 'informacion'
							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_datos_cajero',
								id_cajero: () => !id_cajero.value ? -1 : id_cajero.value
							}
						}
					},
					configuracion: {
						dom: `ft`,
						pageLength: -1
					}
				})
			}
		}
	;

	// !
	$('table').on('draw.dt', function(evento) {

		evento.id = evento.tabla.id.replace('tabla_', '');

		if (!tabla[evento.id])
			return
		;

		evento.tabla.clase  = tabla[evento.id].clase;
		tabla[evento.id] = evento.tabla

	});

	// // !
	// await tabla.cajeros.clase.inicializar();

	// // !
	// await tabla.informacion.clase.inicializar();

	// !
	$(id_usuario_trabajar).on('change', function () {

		// +
		if(!this.value)
			return
		;

		// +
		campo.turno.parametros();
		campo.turno.peticion('opciones');

		// + 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: this.value
      },
      beforeSend: function(peticion, configuracion) {},
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {},
      formulario: { elemento: formularioCuadreCaja }
    })

	});

	// !
	$(tabla.cajeros.elemento).find('tbody').on('dblclick','tr', function (evento) {

		// +
		tabla.informacion.instancia.ajax.reload()

	});

})()
