895 lines
27 KiB
JavaScript
895 lines
27 KiB
JavaScript
//v 2.0
|
|
//01-10-2017 libreria AB. getsione LTE
|
|
//10-05-2017 aggiunto Ab.disabledEventPropagation
|
|
//01-10-2015 creato Ab.resetAllRI... corretto ancora bug
|
|
//30-09-2015 ancora...
|
|
//29-09-2015 divLista.html non è mai vuoto. Utilizzato contenuto
|
|
//28-09-2015 corretto bug "#"+divLista
|
|
//21-09-2015 gestito il vai avanti tramite attributo enablenodb sul campo di ricerca
|
|
//15-09-2015 ricerca ajax su caricaListaSMono. gestito il va comunque avanti
|
|
//01-08-2015 ricerca ajax. su invio va comnque avanti, nasconde il div lista e cambia css sul campo di ricerca
|
|
//24-04-2015 gestione campo indietro
|
|
//12-01-2014 azzero la chiave se il campo di ricerca è vuoto
|
|
//15-09-2014 _ablia.js
|
|
//29-03-2014 modificato per utilizzare executeProcess(postProcess,ppArgs)
|
|
//07-02-2014 selectAjKey testato funzione sulla selezione quando al posto del nextfocus ho uno script con parametri
|
|
//compatibile con abliajar Abl_16_70_26_070214
|
|
//Ab.hideList Ab.isListVisible e Ab.showList spostato qui e implementato con jquery (anzi no ...problemi con explorer... ma va!!)
|
|
//aggiunto Ab.postCr utilizzato nella distinzione tra nextfocus e funzione da eseguire sia
|
|
//su caricaLista che su selectAj
|
|
//06-06-2013 aggirnato immagine attesa
|
|
//03/09/2012 corretto errore su selectAjKey nel caso di esecuzione di una funzione
|
|
//22/07/2011 ignoro stasto cmd(mela) e cmd tab su mac
|
|
//26/06/2011 gestione selectAjKey con nextField o script o funzione da eseguire (trova e())
|
|
//13-11 2008 gestione automazione 1 record si/no opzionale caricaLista caricaListaM caricaListaS caricaListaSM
|
|
//09-11-2008 aggiornato caricaListaS per gestione continuo a ricercare
|
|
//06-11-2008 gestione postProcess per il caso in cui trovo 1 solo record.
|
|
//05-11-2008 gestito ricerca su nchar + ricerca solo sul submit
|
|
//30-10-2008 gestito la concomitanza di piu searchTextBox. In pratica l'elemento della lista
|
|
|
|
|
|
var debug=false,
|
|
timerPartenza;
|
|
|
|
|
|
Ab.caricaLista =
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,useSubmit) {
|
|
Ab.caricaListaMono(svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,useSubmit,false);
|
|
}
|
|
Ab.caricaListaM=
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,useSubmit) {
|
|
Ab.caricaListaMono(svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,useSubmit,true);
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
//sendAjaxGetLista
|
|
//NNNBB il postProcess in questo caso è il classico
|
|
//onclick per gestire l'elemento unico (useMon=true su
|
|
//caricalistaxxx )
|
|
///////////////////////////////////////////////
|
|
Ab.sendAjaxGetLista=
|
|
function (svltRequest,divLista,postProcess)
|
|
{
|
|
// variabili di controllo del tempo
|
|
// data di inizio interazione
|
|
dataChiamata = new Date(),
|
|
// tempo in millisecondi dell'inizio
|
|
inizioChiamata = dataChiamata.getTime(),
|
|
// secondi di attesa prima di fermare l'interazione
|
|
massimaAttesa = 10,
|
|
// variabile cui assegnare la funzione di verifica
|
|
verificaTempoTrascorso = function(){};
|
|
|
|
// variabili di funzione
|
|
// assegnazione oggetto XMLHttpRequest
|
|
ajax = assegnaXMLHttpRequest(),
|
|
// assegnazione elemento del documento
|
|
elemento = Ab.prendiElementoDaId(divLista),
|
|
// risultato booleano di funzione
|
|
usaLink = true;
|
|
|
|
// se l'oggetto XMLHttpRequest non è nullo
|
|
if(ajax)
|
|
{
|
|
//faccio vedere la lista
|
|
if(!Ab.isListVisible(divLista))
|
|
{
|
|
Ab.showList(divLista);
|
|
//metto la gif
|
|
//elemento.innerHTML="Ricerca in corso ....."+"<img src='../../../../"+webApp+"/admin/_V3/_img/attesa.gif' alt='Ricerca in corso''>";
|
|
elemento.innerHTML="Ricerca in corso .....";
|
|
//<img src="../../admin/img/attesa.gif" alt="Ricerca in corso" width="20" height="21">
|
|
|
|
}
|
|
// il link al file non deve essere usato
|
|
usaLink = false;
|
|
// impostazione richiesta asincrona in GET
|
|
// del file specificato
|
|
ajax.open("get", svltRequest, true);
|
|
|
|
// rimozione dell'header "connection" come "keep alive"
|
|
ajax.setRequestHeader("connection", "close");
|
|
|
|
// impostazione controllo e stato della richiesta
|
|
ajax.onreadystatechange = function() {
|
|
|
|
// verifica dello stato
|
|
if(ajax.readyState === readyState.COMPLETATO)
|
|
{
|
|
// annulliamo la funzione di verifica tempo
|
|
verificaTempoTrascorso = function(){};
|
|
// verifica della risposta da parte del server
|
|
if(statusText[ajax.status] === "OK"){
|
|
// operazione avvenuta con successo
|
|
elemento.innerHTML = ajax.responseText;
|
|
//post elaborazioni???
|
|
if(postProcess!=null){
|
|
postProcess();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// errore di caricamento
|
|
elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
|
|
elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
|
|
}
|
|
}
|
|
// se la richiesta non è stata ancora ultimata
|
|
// è possibile sfruttare la variabile massimaAttesa
|
|
// per verificare se il controllo sul tempo trascorso
|
|
// sia stato creato o meno.
|
|
// Essendo tale valore un intero rappresentante i secondi
|
|
// ma non essendo ancora stato riassegnato nel corrispettivo
|
|
// in millesimi, questo else if può garantire che
|
|
// il codice al suo interno verrà eseguito una sola volta
|
|
else if(massimaAttesa < 1000)
|
|
{
|
|
// conversione di massimaAttesain millisecondi
|
|
massimaAttesa= massimaAttesa * 1000;
|
|
// il controllo sul tempo trascorso deve essere
|
|
// asincrono a questa funzione poichè non è detto
|
|
// che il cambio di stato della richiesta
|
|
// venga effettuato in tempi utili.
|
|
// Una funzione apposita per la verifica
|
|
// è la soluzione più indicata
|
|
verificaTempoTrascorso = function()
|
|
{
|
|
// ogni chiamata asincrona a questa funzione
|
|
// dovrà verificare la durata dell'interazione
|
|
// è necessario quindi ridichiarare la variabile
|
|
// al fine di ottenere il nuovo oggetto Date
|
|
dataChiamata = new Date();
|
|
// Se il tempo trascorso è maggiore della
|
|
// massima attesa ...
|
|
if((dataChiamata.getTime() - inizioChiamata) > massimaAttesa)
|
|
{
|
|
// ... interrompiamo la richiesta ed
|
|
// informarmiamo l'utente di quanto avvenuto.
|
|
// Quindi riassegnamo onreadystatechange ad una
|
|
// funzione vuota, poichè quest'evento sarà
|
|
// sollevato chiamando il metodo abort()
|
|
ajax.onreadystatechange = function(){return;};
|
|
// è possibile a questo punto richiamare il metodo abort
|
|
// ed annullare le operazioni dell'oggetto XMLHttpRequest
|
|
ajax.abort();
|
|
// creiamo un elemento per avvertire l'utente
|
|
// del fallimento della richiesta da aggiungere
|
|
// a quello predisposto per mostrare il risultato.
|
|
// Usiamo il metodo createElement() del document e
|
|
// non innerHTML,che potrebbe riscrivere il link selezionato
|
|
// annullando l'assegnazione del parametro fittizio.
|
|
// Avendo annullato l'utilità dell'oggetto XMLHttpRequest
|
|
// è possibile anche riciclare la variabile 'ajax'.
|
|
ajax = document.createElement("p");
|
|
ajax.innerHTML =
|
|
"Spiacente, richiesta fallita.<br />" +
|
|
"La prego di ritentare tra qualche istante.";
|
|
elemento.appendChild(ajax);
|
|
|
|
}
|
|
// se invece il tempo è inferiore al timeout
|
|
else
|
|
{
|
|
// si richiama questa stessa funzione, con un tempo
|
|
// che non dovrà essere ne alto ne troppo basso.
|
|
setTimeout(verificaTempoTrascorso, 100);
|
|
}
|
|
};
|
|
// definita la funzione non resta che avviarla
|
|
verificaTempoTrascorso();
|
|
};
|
|
|
|
}
|
|
|
|
// invio richiesta
|
|
ajax.send(null);
|
|
}
|
|
|
|
return usaLink;
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
//utilizzare caricaLista(svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,true/false,true/false)
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.caricaListaMono=
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nChar,nextField,useSubmit,useMono) {
|
|
|
|
|
|
//vediamo che dobbiamo fare
|
|
var evtKey=theEvent.keyCode,
|
|
field=theEvent.target.id;
|
|
|
|
//alert(evtKey);
|
|
//40 basso 13 invio 9 tab indietro, 16 ctrl, 111 f1 -->122 f12 , 27 esc
|
|
//mac 224 tasto cmd(mela) 0=cmd+tab
|
|
if(evtKey==224 ||evtKey==0 ||evtKey==9 ||evtKey==16 ||evtKey==17 ||evtKey==111||(evtKey>=113 && evtKey<=122 ))
|
|
{
|
|
//facciamo nulla
|
|
return;
|
|
}
|
|
else if(evtKey==27)
|
|
{
|
|
Ab.escapeKey(divLista)
|
|
}
|
|
if (evtKey==13)
|
|
{
|
|
//se ho la lista attiva perndo il primo e vado al next field
|
|
//altrimenti vado al next field
|
|
|
|
var contenuto = "";
|
|
//divlista.html è sempre !=!!
|
|
if ($("#"+divLista).html() != "")
|
|
{
|
|
contenuto = $("#"+divLista).find("#stRow").html().replace("<!-- InstanceBeginEditable name=\"list\" -->", "").replace("<!-- InstanceEndEditable -->", "").replace("<ul class=\"nav nav-pills nav-stacked\"></ul>","");
|
|
}
|
|
|
|
if(Ab.isListVisible(divLista) && contenuto.trim().length > 0)
|
|
{
|
|
$("#" + searchTxt).removeClass("ajstNoDb");
|
|
var sk= Ab.prendiElementoDaId(divLista+"_1");
|
|
sk.onclick();
|
|
}
|
|
else
|
|
{
|
|
if(useSubmit==true)
|
|
{
|
|
submitForm(theEvent);
|
|
}
|
|
else
|
|
{
|
|
if(nextField!="")
|
|
{
|
|
//faccio il next focus o
|
|
//eseguo lo script
|
|
Ab.postCr(nextField);
|
|
}
|
|
}
|
|
|
|
//if($("#"+divLista).length == 0)
|
|
if(contenuto.trim().length == 0)
|
|
{
|
|
//campo non nel db
|
|
if($("#" + searchTxt).attr("enablenodb")=="true")
|
|
{//alert('pio');
|
|
if(Ab.isListVisible(divLista)){
|
|
$("#" + searchTxt).addClass("ajstNoDb");
|
|
//cancello solo l'id
|
|
//ma dovrei cancellare tutto fuori che searchtext!!!!
|
|
Ab.resetId(RI);
|
|
Ab.hideList(divLista);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(Ab.isListVisible(divLista)){
|
|
//$("#" + searchTxt).val("");
|
|
Ab.resetAllRI(RI);
|
|
Ab.hideList(divLista);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (evtKey==40)
|
|
{
|
|
//freccia giu' --> vado al primo elemento
|
|
if(Ab.isListVisible(divLista))
|
|
{
|
|
Ab.selectTElement(divLista+"_"+1);
|
|
Ab.prendiElementoDaId(divLista+"_1").focus();
|
|
}
|
|
}
|
|
else if (evtKey==112)
|
|
{
|
|
if ($('[nextField="' + field + '"]').val() != undefined)
|
|
{
|
|
$('[nextField="' + field + '"]').focus();
|
|
}
|
|
else
|
|
{
|
|
$('[name="'+Ab.rendiPrevField(field)+'"]').focus();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(timerPartenza){
|
|
clearTimeout(timerPartenza);
|
|
timerPartenza = null;
|
|
}
|
|
|
|
//resetto l'id
|
|
//Ab.resetId(RI);
|
|
//if(!Ab.isListVisible(divLista))
|
|
//alert(evtKey);
|
|
|
|
var searchTxtElement=Ab.prendiElementoDaId(searchTxt);
|
|
if(searchTxtElement.value.length==0)
|
|
Ab.resetId(RI);
|
|
if(searchTxtElement.value.length>=nChar)
|
|
{
|
|
timerPartenza = setTimeout(function()
|
|
{
|
|
|
|
//inizio ricerca tramite ajax
|
|
if (svltRequest.charAt(0)=="/")
|
|
{//path assoluto
|
|
svltRequest=webApp+svltRequest;
|
|
}
|
|
//non utilizzo NSF ma lo gestisco da qui
|
|
if(nextField=="")
|
|
nextField=searchTxt;
|
|
|
|
//devo gestiore il % e sostituirlo con %25
|
|
var st=searchTxtElement.value;
|
|
st=st.replace('%','%25');
|
|
////////////////////////////////////////////////////////////////////////////////////77
|
|
svltRequest=svltRequest+st+"&cmd=ajSt&RI="+RI+"&nextField="+nextField+"&divList="+divLista;
|
|
//alert(svltRequest);
|
|
//request ajax
|
|
//preparo prima il postProcess
|
|
if(useMono)
|
|
{
|
|
postProcess=function()
|
|
{
|
|
//automazione mono record
|
|
if(Ab.prendiElementoDaId(divLista+"_tnr").value==1)
|
|
{
|
|
Ab.prendiElementoDaId(divLista+"_1").onclick();
|
|
}
|
|
};
|
|
}
|
|
else{
|
|
postProcess=function(){};
|
|
}
|
|
Ab.disabledEventPropagation(theEvent);
|
|
Ab.sendAjaxGetLista(svltRequest,divLista,postProcess);
|
|
//automazione 1 record
|
|
}, 500);
|
|
}
|
|
}
|
|
}
|
|
|
|
//utilizzare caricaLista(svltRequest,searchTxt,divLista,RI,theEvent,nextField,true/false)
|
|
// faccio la ricerca solo con il submit.
|
|
//Il submit nei parametri mi identifica se voglio lanciare il sumbit form
|
|
Ab.caricaListaS=
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nextField,useSubmit)
|
|
{
|
|
Ab.caricaListaSMono(svltRequest,searchTxt,divLista,RI,theEvent,nextField,useSubmit,false);
|
|
|
|
}
|
|
Ab.caricaListaSM=
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nextField,useSubmit)
|
|
{
|
|
Ab.caricaListaSMono(svltRequest,searchTxt,divLista,RI,theEvent,nextField,useSubmit,true);
|
|
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
//utilizzare caricaLista(svltRequest,searchTxt,divLista,RI,theEvent,nextField,true/false,true/false)
|
|
// faccio la ricerca solo con il submit.
|
|
//paramtro useMono per automazione ricerca primo elemento automatica
|
|
//Il submit nei parametri mi identifica se voglio lanciare il sumbit form
|
|
Ab.caricaListaSMono=
|
|
function (svltRequest,searchTxt,divLista,RI,theEvent,nextField,useSubmit,useMono)
|
|
{
|
|
// console.log("caricaListaSMono");
|
|
|
|
var nChar=1;
|
|
//vediamo che dobbiamo fare
|
|
evtKey=theEvent.keyCode;
|
|
//alert(evtKey);
|
|
//40 basso 13 invio 9 tab indietro, 16 ctrl, 111 f1 -->122 f12 , 27 esc
|
|
//mac 224 tasto cmd(mela) 0=cmd+tab
|
|
if(evtKey==224 ||evtKey==0 ||evtKey==9 ||evtKey==16 ||evtKey==17 ||(evtKey>=111 && evtKey<=122 ))
|
|
{
|
|
//facciamo nulla
|
|
return;
|
|
}
|
|
else if(evtKey==27 )
|
|
{ //esc
|
|
Ab.escapeKey(divLista)
|
|
}
|
|
//else if(evtKey==8 ||evtKey==46 ||evtKey==37 ||evtKey==39)
|
|
else if(evtKey!=13 && evtKey!=40)
|
|
{// 8delIndietro 46canc 37frecciasx 39frecciadx
|
|
//cambiato in qualsiasi tasto fuorche i precedenti o invio
|
|
//mi ripreparo per una nuova ricerca
|
|
Ab.hideList(divLista);
|
|
Ab.resetId(RI);
|
|
return;
|
|
}
|
|
if (evtKey==13)
|
|
{
|
|
|
|
//se ho la lista attiva perndo il primo e vado al next field
|
|
//altrimenti vado al next field
|
|
//in questo caso vuol dire che sono al secondo invio
|
|
if(Ab.isListVisible(divLista))
|
|
{
|
|
|
|
//se non ci sono elementi, sto inserendo qualcosa che non è nel db
|
|
var contenuto = "";
|
|
//divLista lenght non è mai !=0
|
|
//if ($("#"+divLista).html() != "")
|
|
{
|
|
contenuto = $("#"+divLista).find("#stRow").html().replace("<!-- InstanceBeginEditable name=\"list\" -->", "").replace("<!-- InstanceEndEditable -->", "").replace("<ul class=\"nav nav-pills nav-stacked\"></ul>","");
|
|
}
|
|
if(contenuto.trim().length == 0)
|
|
{
|
|
//campo non nel db
|
|
if($("#" + searchTxt).attr("enablenodb")=="true")
|
|
{//alert('pio2');
|
|
if(Ab.isListVisible(divLista)){
|
|
$("#" + searchTxt).addClass("ajstNoDb");
|
|
//cancello solo l'id
|
|
//ma dovrei cancellare tutto fuori che searchtext!!!!
|
|
Ab.resetId(RI);
|
|
Ab.hideList(divLista);
|
|
}
|
|
Ab.postCr(nextField);
|
|
}
|
|
else
|
|
{
|
|
if(Ab.isListVisible(divLista)){
|
|
Ab.resetAllRI(RI);
|
|
//$("#" + searchTxt).val("");
|
|
Ab.hideList(divLista);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//prendo il primo elemento e faccio click
|
|
var sk= Ab.prendiElementoDaId(divLista+"_1");
|
|
sk.onclick();
|
|
}
|
|
}
|
|
else
|
|
{ //alert(Ab.getSTId(RI).value);
|
|
//dovrei fare il submit se l'id non è nullo
|
|
if(Ab.getSTId(RI).value=="")
|
|
{
|
|
//faccio la request
|
|
var searchTxtElement=Ab.prendiElementoDaId(searchTxt);
|
|
if(searchTxtElement.value.length>=nChar)
|
|
{
|
|
//inizio ricerca tramite ajax
|
|
if (svltRequest.charAt(0)=="/")
|
|
{//path assoluto
|
|
svltRequest=webApp+svltRequest;
|
|
}
|
|
//non utilizzo NSF ma lo gestisco da qui
|
|
if(nextField=="")
|
|
nextField=searchTxt;
|
|
////////////////////////////////////////////////////////////////////////////////////77
|
|
//devo gestiore il % e sostituirlo con %25
|
|
var st=searchTxtElement.value;
|
|
st=st.replace('%','%25');
|
|
svltRequest=svltRequest+st+"&cmd=ajSt&RI="+RI+"&nextField="+nextField+"&divList="+divLista;
|
|
//alert(svltRequest);
|
|
//request ajax
|
|
//preparo prima il postProcess
|
|
if(useMono)
|
|
{
|
|
postProcess=function()
|
|
{
|
|
//automazione mono record
|
|
if(Ab.prendiElementoDaId(divLista+"_tnr").value==1)
|
|
{
|
|
Ab.prendiElementoDaId(divLista+"_1").onclick();
|
|
}
|
|
};
|
|
}
|
|
else{
|
|
postProcess=function(){};
|
|
}
|
|
Ab.disabledEventPropagation(theEvent);
|
|
Ab.sendAjaxGetLista(svltRequest,divLista,postProcess);
|
|
}
|
|
}else
|
|
{
|
|
//flusso standard
|
|
if(useSubmit==true)
|
|
{
|
|
Ab.submitForm(theEvent);
|
|
}
|
|
else
|
|
{
|
|
if(nextField!="")
|
|
{
|
|
//faccio il next focus o
|
|
//eseguo lo script
|
|
|
|
Ab.postCr(nextField);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
else if (evtKey==40)
|
|
{
|
|
//freccia giu' --> vado al primo elemento
|
|
if(Ab.isListVisible(divLista))
|
|
{
|
|
Ab.selectTElement(divLista+"_"+1);
|
|
Ab.prendiElementoDaId(divLista+"_1").focus();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//resetto l'id
|
|
//mi serve per la ricerca con submit
|
|
Ab.resetId(RI);
|
|
//if(!Ab.isListVisible(divLista))
|
|
//alert(evtKey);
|
|
//in questo caso non faccio la richiesta perche' non ho premuto invio
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.getSTId=
|
|
function (RI)
|
|
{
|
|
//resetto l'id che deve essere il primo della RI
|
|
if(RI!="")
|
|
{
|
|
//returnItem è del tipo nomeModulo.nomeCampo
|
|
nomeModulo=RI.substring(0,RI.indexOf('.'));
|
|
nomeCampo=RI.substring(RI.indexOf('.')+1,RI.indexOf(','));
|
|
//if(debug==true){
|
|
// alert("nomeCampo:"+nomeCampo+" modulo: "+nomeModulo);
|
|
//}
|
|
return document[nomeModulo][nomeCampo];
|
|
//prendiElementoDaId(nomeCampo).value="xx";
|
|
}
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.resetAllRI=
|
|
function (RI)
|
|
{
|
|
if(RI!="")
|
|
{
|
|
var arr = RI.split(",");
|
|
var row;
|
|
for (i=0; i<(arr.length); i++)
|
|
{
|
|
row=arr[i].split(".");
|
|
nomeModulo=row[0];
|
|
nomeCampo=row[1];
|
|
$("#"+nomeModulo+" #"+nomeCampo).val("");
|
|
//(document[nomeModulo][nomeCampo]).value="";
|
|
}
|
|
}
|
|
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.resetId=
|
|
function (RI)
|
|
{
|
|
//resetto l'id che deve essere il primo della RI
|
|
Ab.getSTId(RI).value="";
|
|
/*
|
|
if(RI!="")
|
|
{
|
|
//returnItem è del tipo nomeModulo.nomeCampo
|
|
nomeModulo=RI.substring(0,RI.indexOf('.'));
|
|
nomeCampo=RI.substring(RI.indexOf('.')+1,RI.indexOf(','));
|
|
//if(debug==true){
|
|
// alert("nomeCampo:"+nomeCampo+" modulo: "+nomeModulo);
|
|
//}
|
|
document[nomeModulo][nomeCampo].value="";
|
|
//prendiElementoDaId(nomeCampo).value="xx";
|
|
}*/
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/* su l'onclick dell input selezionato.*/
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.selectAjKey=
|
|
function ()
|
|
{
|
|
//in questo caso mi aspetto tante coppie del tipo valore,modulo.campo
|
|
//07-02-2014 non passo mai un postprocess!!!
|
|
// i valori in più sono 2!!!
|
|
//il primo valore in piu se ha le parentesi è una funzione da eseguire
|
|
//altrimenti è il campo su cui eseguire il nextField
|
|
//il secondo valore la div lista che mi serve per
|
|
//nasconderla
|
|
var returnItemKey,returnItemDesc,nomeModulo,nomeCampo,args=Ab.selectAjKey.arguments;
|
|
var i;
|
|
for (i=0; i<(args.length-2); i+=2)
|
|
{
|
|
returnItemValue=args[i];
|
|
returnItemField=args[i+1].trim();
|
|
|
|
//debug
|
|
//alert("valore: "+returnItemValue+" campo: "+returnItemField);
|
|
if(returnItemField!="")
|
|
{
|
|
//returnItem è del tipo nomeModulo.nomeCampo
|
|
nomeModulo=returnItemField.substring(0,returnItemField.indexOf('.'));
|
|
nomeCampo=returnItemField.substring(returnItemField.indexOf('.')+1,returnItemField.length);
|
|
if(debug==true)
|
|
alert(nomeCampo+": "+returnItemValue);
|
|
// self.opener.document[nomeModulo][nomeCampo].value=returnItemValue;
|
|
|
|
if (!document[nomeModulo][nomeCampo])
|
|
{
|
|
alert("Impossibile recuperare il campo: " + nomeCampo + " nel modulo: " + nomeModulo);
|
|
}
|
|
else
|
|
{
|
|
document[nomeModulo][nomeCampo].value=returnItemValue;
|
|
}
|
|
|
|
// document[nomeModulo][nomeCampo].value=returnItemValue;
|
|
}
|
|
|
|
|
|
}
|
|
//qui fare dei test chiamando uno script
|
|
//gestione focus
|
|
if(i<args.length)
|
|
{
|
|
//se magari trovo una parentesi, eseguo lo script corrispondente
|
|
//se potessi...
|
|
var divLista=args[i+1];
|
|
//nascondo il div
|
|
Ab.hideList(divLista);
|
|
//faccio nextfocus o postprocess
|
|
var lastArg=args[i];
|
|
//alert(lastArg);
|
|
//faccio il next focus o
|
|
//eseguo lo script
|
|
Ab.postCr(lastArg);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/* scurisco l'elemento in cui sono entrato */
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.selectTElement=
|
|
function (id)
|
|
{
|
|
$("#"+id).addClass("lookup-selected-item");
|
|
$("#D"+id).addClass("lookup-selected-item");
|
|
/*var tkStyle= Ab.prendiElementoDaId(id).style;
|
|
tkStyle.color="#FF0000";
|
|
tkStyle.backgroundColor="#ebe8d8";
|
|
*/
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/* schiarisco il div che ho lasciato */
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.unselectTElement=
|
|
function (id)
|
|
{
|
|
$("#"+id).removeClass("lookup-selected-item");
|
|
$("#D"+id).removeClass("lookup-selected-item");
|
|
|
|
/*var tkStyle= Ab.prendiElementoDaId(id).style;
|
|
tkStyle.color="#006699";
|
|
tkStyle.backgroundColor="#FFFFFF";*/
|
|
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/* navigazione siulla lista in alto e in basso + invio */
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.selezione=
|
|
function (divLista,id,theEvent)
|
|
{
|
|
evtKey=theEvent.keyCode;
|
|
newId=id;
|
|
if (evtKey==13)
|
|
{
|
|
//var sk= Ab.prendiElementoDaId(divLista+"_"+id);
|
|
//sk.onclick();
|
|
|
|
if ($("#"+divLista+"_"+id))
|
|
{
|
|
console.log($("#"+divLista+"_"+id).val());
|
|
|
|
$("#"+divLista+"_"+id).trigger("click");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (evtKey==40)
|
|
{
|
|
//vado in basso
|
|
tnr=Ab.prendiElementoDaId(divLista+"_tnr")
|
|
if(id<tnr.value)
|
|
newId=id+1;
|
|
// else
|
|
// alert('siamo arrivati in fondo'+tnr.value);
|
|
}
|
|
else if (evtKey==38)
|
|
{
|
|
//vado in alto
|
|
if(id>1)
|
|
newId=id-1;
|
|
// else
|
|
// alert('siamo arrivati in cima');
|
|
}
|
|
//alert(newId);
|
|
Ab.unselectTElement(divLista+"_"+id);
|
|
Ab.selectTElement(divLista+"_"+newId);
|
|
Ab.prendiElementoDaId(divLista+"_"+newId).focus();
|
|
}
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.hideList=
|
|
function (theDivList)
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
{
|
|
//oltre a nasconderla, la svuoto anche....
|
|
//questo perchè mi introduce un numero di campi in più
|
|
//dipendente dalla fetch che possono darmi noia quando
|
|
//ad esempio devo trovarmi il campo successivo
|
|
//a quello da cui parte la lista
|
|
/* {
|
|
$("div#"+theDivList).hide(100);
|
|
$("div#"+theDivList).html("");
|
|
}
|
|
else
|
|
{
|
|
var theDivListStyle= prendiElementoDaId(theDivList).style;
|
|
theDivListStyle.visibility = "hidden";
|
|
$("div#"+theDivList).html("");
|
|
}*/
|
|
//var theDivListStyle= prendiElementoDaId(theDivList).style;
|
|
//theDivListStyle.visibility = "hidden";
|
|
$("div#"+theDivList).parent().css("visibility","hidden");
|
|
//console.log($("div#"+theDivList).parent().attr("class"));
|
|
$("div#"+theDivList).html("");
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.showList=
|
|
function (theDivList)
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
{
|
|
$("div#"+theDivList).parent().css("visibility","visible");
|
|
$("div#"+theDivList).css("display","block");
|
|
/*if (ns4 || mz7 || chro)
|
|
{
|
|
theDivListStyle.visibility = "visible";
|
|
$("div#"+theDivList).show(1);
|
|
|
|
}
|
|
else
|
|
{
|
|
theDivListStyle.visibility = "visible";
|
|
//theDivListStyle.display = "block";
|
|
}*/
|
|
/*var theDivListStyle= prendiElementoDaId(theDivList).style;
|
|
theDivListStyle.visibility = "visible";
|
|
theDivListStyle.display = "block"; */
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
Ab.isListVisible=function (theDivList)
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
{
|
|
|
|
|
|
/*if (ns4 || mz7 || chro)
|
|
{
|
|
if($("div#"+theDivList).is(':visible'))
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
var theDivListStyle= prendiElementoDaId(theDivList).style;
|
|
if(theDivListStyle.visibility == "hidden")
|
|
return false;
|
|
else
|
|
return true;
|
|
}*/
|
|
if($("div#"+theDivList).css("visibility")=="hidden")
|
|
return false;
|
|
else
|
|
return true;
|
|
/* var theDivListStyle= prendiElementoDaId(theDivList).style;
|
|
if(theDivListStyle.visibility == "hidden")
|
|
return false;
|
|
else
|
|
return true;*/
|
|
}
|
|
|
|
//////////////////////////////////////////////////
|
|
// Ab.postCr: Dopo il Cr (key 13) faccio il setfocus oppure
|
|
// eseguo una funzione javascript
|
|
////////////////////////////////////////////////
|
|
Ab.postCr=
|
|
function (pproc)
|
|
{
|
|
var idx1=pproc.indexOf("(");
|
|
if(idx1>0)
|
|
{
|
|
Ab.executeProcess(pproc, "");
|
|
}
|
|
else
|
|
{
|
|
Ab.setFocus(pproc);
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////
|
|
/////////////////////////////////////////////
|
|
// cosa succede se premo escape (27) sul campo
|
|
/////////////////////////////////////////////
|
|
/////////////////////////////////////////////
|
|
Ab.escapeKey=function (divLista)
|
|
{
|
|
//esc
|
|
if( $("div#"+divLista).parent().css("visibility")=="hidden")
|
|
{
|
|
//gestione comando per tornare indietro
|
|
if($("#pageType").val()=="D"){
|
|
if(typeof backEscape == 'function')
|
|
{
|
|
backEscape();
|
|
}
|
|
else
|
|
{
|
|
//Ab.dashboard();
|
|
}
|
|
}
|
|
else if($("#pageType").val()=="R"){
|
|
if(typeof backEscapeCR == 'function')
|
|
{
|
|
backEscapeCR();
|
|
}
|
|
else
|
|
{
|
|
//Ab.dashboard();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Ab.hideList(divLista);
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
|