Last active
December 26, 2017 14:37
-
-
Save Ricardolau/8f8d325a85103eb2aed71204340d60d8 to your computer and use it in GitHub Desktop.
control teclado
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @ Autor: Ricardo Carpintero | |
// @ Ayuda : info@solucionesvigo.es | |
// @ Objetivo | |
// La intencion es crear librería de control de teclado y eventos de raton. | |
// Obtenemos la tecla pulsada según input y dato, y poder realizar las acciones que indiquemos. | |
// Informacion de event | |
// http://librosweb.es/libro/javascript/capitulo_6/obteniendo_informacion_del_evento_objeto_event.html | |
// @ parametros que recibimos. | |
// event -> Objeto, donde podemos obtener el numero tecla, typo de evento ( mouse o key). | |
// id_input -> Nombre del id donde se ejecuto la funcion. | |
// RECUERDA : | |
// - Tenemos que tener objeto creado para cada id , con las acciones y teclas, con parametros si fueran necesarios. | |
// - Tb tenemos que tener la funcion controladorAcciones(objetoCaja,accion). | |
// Esto se debería hacer con clases, pero bueno... el deconocimeinto es grande... :-) | |
function cajainput(input){ | |
this.acciones = input.acciones; | |
this.id_input = input.id_input; | |
this.parametros = input.parametros; | |
this.darValor = function() { | |
var valor = $('#'+this.id_input).val() | |
return valor; | |
}; | |
this.darAccion = function(tecla) { | |
var arrayteclas = Object.keys(this.acciones); | |
if ( arrayteclas.indexOf(tecla.toString()) >= 0){ | |
return this.acciones[tecla.toString()]; | |
} else { | |
return 'error'; | |
} | |
}; | |
this.darParametro = function(parametro) { | |
var arrayParametros = Object.keys(this.parametros); | |
if ( arrayParametros.indexOf(parametro) >= 0){ | |
return this.parametros[parametro]; | |
} | |
}; | |
} | |
function construtor(input){ | |
console.log('Input en constructor:'+input); | |
switch(true) { | |
// Creamos objeto caja | |
case (input ==='cajaBusqueda'): | |
// Llegamos aquí despues pulsar una tecla en cajaBusqueda | |
// pero le añadimos name el nombre id_input | |
// Antes de crear obj caja debemos saber cual vamos añadir. | |
var name = $('#'+input).attr("name"); | |
var pantalla = 'popup'; | |
obj = new cajainput(cajaBusquedaproductos); | |
obj.name_cja =$('#'+input).attr("name"); | |
obj.parametros.dedonde = pantalla; | |
// Añadimos parametro campo que necesitamos y el nombre cja que pertenece para cada caso. | |
if (name ==='Codbarras'){ | |
obj.parametros.campo = cajaCodBarras.parametros.campo; | |
obj.name_cja ='Codbarras'; | |
} | |
if (name ==='Referencia'){ | |
obj.parametros.campo = cajaReferencia.parametros.campo; | |
obj.name_cja ='Referencia'; | |
} | |
if (name ==='Descripcion'){ | |
obj.parametros.campo = cajaDescripcion.parametros.campo; | |
obj.name_cja ='Descripcion'; | |
} | |
return obj; | |
break; | |
case (input ==='cajaBusquedacliente') : | |
obj = new cajainput(cajaBusquedacliente); | |
return obj; | |
break; | |
case (input.indexOf('N_') >-1) : | |
console.log('Entro Si venimos de modal'); | |
obj = new cajainput(idN); | |
obj.id_input = input; // El id es este. | |
//Ahora añadimos a objeto numero fila | |
obj.fila = input.slice(2); | |
console.log(obj.fila); | |
return obj; | |
break; | |
case (input.indexOf('Unidad_Fila') >-1): | |
console.log('Construtor en Unidad fila'); | |
Unidad_Fila.id_input = input; | |
obj = new cajainput(Unidad_Fila); | |
obj.parametros.item_max = productos.length; | |
obj.fila = input.slice(12); | |
return obj; | |
break; | |
case (input ==='Codbarras'): | |
obj = new cajainput(cajaCodBarras); | |
obj.name_cja =$('#'+input).attr("name"); | |
return obj; | |
break; | |
case (input ==='Referencia'): | |
obj = new cajainput(cajaReferencia); | |
obj.name_cja =$('#'+input).attr("name"); | |
return obj; | |
case (input ==='Descripcion'): | |
obj = new cajainput(cajaDescripcion); | |
obj.name_cja =$('#'+input).attr("name"); | |
return obj; | |
break; | |
case (input ==='entrega'): | |
obj = new cajainput(entrega); | |
obj.name_cja =$('#'+input).attr("name"); | |
return obj; | |
break; | |
case (input ==='CobrarAceptar'): | |
obj = new cajainput(CobrarAceptar); | |
obj.name_cja =$('#'+input).attr("name"); | |
return obj; | |
break; | |
default: | |
console.log( 'No hay accion para esa caja:'+input); | |
} | |
} | |
function teclaPulsada(event,id_input){ | |
console.log('===== ENTRE TECLAPULSADA ======'); | |
// Comprobamos si la tecla pulsada tiene algún tipo accion para ese id_input | |
tecla = event.keyCode | |
console.log(tecla); | |
var caja = new construtor(id_input); | |
var accion = caja.darAccion(tecla); | |
if (accion !== 'error' ){ | |
// Ejecutamos funcion (accion) | |
controladorAcciones(caja,accion); | |
} | |
} | |
function perdidaEnfoque(event,id_input){ | |
console.log('=============== ENTRAMOS EN PERDIDA ENFOQUE ============ '); | |
// De momento solo control la pedida enfoque si id_input es una fila de unidad o CobrarAceptar. | |
// y ejectuamos accion como si pulsara intor [13] | |
console.log( id_input); | |
if (id_input.indexOf('Unidad_Fila') >-1){ | |
console.log('entro en if de perdida enfoque'); | |
tecla = '13'; | |
var caja = new construtor(id_input); | |
var accion = caja.darAccion(tecla); | |
if (accion !== 'error' ){ | |
// Ejecutamos funcion (accion) | |
controladorAcciones(caja,accion); | |
} | |
} | |
if (id_input === 'CobrarAceptar'){ | |
console.log('entro en if de perdida enfoque'); | |
tecla = '13'; | |
var caja = new construtor(id_input); | |
var accion = caja.darAccion(tecla); | |
} | |
} | |
// ejemplo de obj input que enviamos al constructor. | |
//~ var cajaBusquedaproductos = { | |
//~ id_input : 'cajaBusqueda', | |
//~ acciones : { | |
//~ 13 : 'buscarProductos', // pulso intro | |
//~ 40 : 'mover_down', // pulso abajo | |
//~ 9 : 'mover_down', // tabulador | |
//~ }, | |
//~ parametros : { | |
//~ dedonde : 'popup', | |
//~ campo :'' // Este campo tendremos llenarlo al cargar el modal | |
//~ } | |
//~ } | |
Ejemplo de controladorAcciones
function controladorAcciones(caja,accion){
// Controlador de acciones a realizar.
switch(accion) {
case 'buscarClientes':
// Esta funcion necesita el valor.
buscarClientes(caja.darParametro('dedonde'),caja.darValor());
break;
case 'mover_down':
mover_down(parseInt(caja.fila)+1);
break;
case 'mover_up':
mover_down(parseInt(caja.fila)-1);
break;
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ejemplo objeto input
var cajaBusquedacliente = { id_input : 'cajaBusquedacliente',
acciones : {
13 : 'buscarClientes', // pulso intro
40 : 'buscarClientes', // pulso abajo
9 : 'buscarClientes', // tabulador
},
parametros : {
dedonde : 'cerrados'
}
}