first commit
This commit is contained in:
commit
4d332ef662
27586 changed files with 3281783 additions and 0 deletions
438
rus/admin/_V4/_js/ajaxFunc.js
Normal file
438
rus/admin/_V4/_js/ajaxFunc.js
Normal file
|
|
@ -0,0 +1,438 @@
|
|||
//v.2.2
|
||||
//15-09-2014 _ablia.js
|
||||
//13-06-2014 aggiunta direttiva async nella chiamata ajax della fetch
|
||||
//09-06-2014 modificato fetch: aggiunto parametro per il tipo di risposta dal server
|
||||
// che se non impostato è html altrimenti passare es. "json" per tipo json, ecc..
|
||||
//29-03-2014 modificato per utilizzare executeProcess(postProcess,ppArgs)
|
||||
//18-03-2014 fetch asincrona
|
||||
//18-02-2014 testato fetch
|
||||
//07-02-2014 fetch modificata da testare il postprocess con passaggio dei parametri
|
||||
//hideList isListVisible e showList spostate in ajacTextBoxSearch
|
||||
//compatibile con abliajar Abl_16_70_26_070214
|
||||
//30-10-2013 sendJQueryMessage
|
||||
//05-06-2013 aggiiornato immagine attesa
|
||||
//28-01-2011 postProcess adesso puo' essere null
|
||||
//06-11-2008 gestione postProcess. Utilizzabile sempre. Usato su ajaxTextBoxSerch
|
||||
//04-11-2008 prima versione
|
||||
/*
|
||||
04-11-2008 gestione showList che funziona all'interno dei tab
|
||||
27-10-2008 priva versione e inizio versionamento
|
||||
*/
|
||||
/** (C) HTML.IT - insieme di funzioni ed oggetti utili per interagire con ajax */
|
||||
|
||||
|
||||
/** OGGETTI / ARRAY */
|
||||
|
||||
// oggetto di verifica stato
|
||||
var readyState = {
|
||||
INATTIVO: 0,
|
||||
INIZIALIZZATO: 1,
|
||||
RICHIESTA: 2,
|
||||
RISPOSTA: 3,
|
||||
COMPLETATO: 4
|
||||
};
|
||||
|
||||
// array descrittivo dei codici restituiti dal server
|
||||
// [la scelta dell' array è per evitare problemi con vecchi browsers]
|
||||
var statusText = new Array();
|
||||
statusText[100] = "Continue";
|
||||
statusText[101] = "Switching Protocols";
|
||||
statusText[200] = "OK";
|
||||
statusText[201] = "Created";
|
||||
statusText[202] = "Accepted";
|
||||
statusText[203] = "Non-Authoritative Information";
|
||||
statusText[204] = "No Content";
|
||||
statusText[205] = "Reset Content";
|
||||
statusText[206] = "Partial Content";
|
||||
statusText[300] = "Multiple Choices";
|
||||
statusText[301] = "Moved Permanently";
|
||||
statusText[302] = "Found";
|
||||
statusText[303] = "See Other";
|
||||
statusText[304] = "Not Modified";
|
||||
statusText[305] = "Use Proxy";
|
||||
statusText[306] = "(unused, but reserved)";
|
||||
statusText[307] = "Temporary Redirect";
|
||||
statusText[400] = "Bad Request";
|
||||
statusText[401] = "Unauthorized";
|
||||
statusText[402] = "Payment Required";
|
||||
statusText[403] = "Forbidden";
|
||||
statusText[404] = "Not Found";
|
||||
statusText[405] = "Method Not Allowed";
|
||||
statusText[406] = "Not Acceptable";
|
||||
statusText[407] = "Proxy Authentication Required";
|
||||
statusText[408] = "Request Timeout";
|
||||
statusText[409] = "Conflict";
|
||||
statusText[410] = "Gone";
|
||||
statusText[411] = "Length Required";
|
||||
statusText[412] = "Precondition Failed";
|
||||
statusText[413] = "Request Entity Too Large";
|
||||
statusText[414] = "Request-URI Too Long";
|
||||
statusText[415] = "Unsupported Media Type";
|
||||
statusText[416] = "Requested Range Not Satisfiable";
|
||||
statusText[417] = "Expectation Failed";
|
||||
statusText[500] = "Internal Server Error";
|
||||
statusText[501] = "Not Implemented";
|
||||
statusText[502] = "Bad Gateway";
|
||||
statusText[503] = "Service Unavailable";
|
||||
statusText[504] = "Gateway Timeout";
|
||||
statusText[505] = "HTTP Version Not Supported";
|
||||
statusText[509] = "Bandwidth Limit Exceeded";
|
||||
|
||||
|
||||
/** FUNZIONI */
|
||||
|
||||
|
||||
// funzione per assegnare un oggetto XMLHttpRequest
|
||||
function assegnaXMLHttpRequest() {
|
||||
var
|
||||
XHR = null,
|
||||
browserUtente = navigator.userAgent.toUpperCase();
|
||||
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
|
||||
XHR = new XMLHttpRequest();
|
||||
else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
|
||||
if(browserUtente.indexOf("MSIE 5") < 0)
|
||||
XHR = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
else
|
||||
XHR = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
return XHR;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////
|
||||
function sendAjaxGet2(svltRequest,divLista)
|
||||
{
|
||||
|
||||
// variabili di funzione
|
||||
// assegnazione oggetto XMLHttpRequest
|
||||
ajax = assegnaXMLHttpRequest(),
|
||||
// assegnazione elemento del documento
|
||||
elemento = prendiElementoDaId(divLista),
|
||||
// risultato booleano di funzione
|
||||
usaLink = true;
|
||||
|
||||
// se l'oggetto XMLHttpRequest non è nullo
|
||||
if(ajax)
|
||||
{
|
||||
//faccio vedere la lista
|
||||
if(!isListVisible(divLista))
|
||||
{
|
||||
showList(divLista);
|
||||
}
|
||||
// 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)
|
||||
{
|
||||
// verifica della risposta da parte del server
|
||||
if(statusText[ajax.status] === "OK")
|
||||
// operazione avvenuta con successo
|
||||
elemento.innerHTML = ajax.responseText;
|
||||
else
|
||||
{
|
||||
// errore di caricamento
|
||||
elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
|
||||
elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// invio richiesta
|
||||
ajax.send(null);
|
||||
}
|
||||
|
||||
return usaLink;
|
||||
}
|
||||
|
||||
|
||||
function sendAjaxGet(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
|
||||
|
||||
{
|
||||
|
||||
//metto la gif
|
||||
elemento.innerHTML="Ricerca in corso .....";
|
||||
//elemento.innerHTML="Ricerca in corso ....."+"<img src='../../../../"+webApp+"/admin/_V3/_img/attesa.gif' alt='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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
//
|
||||
function mostraAttesa(testo) {
|
||||
// variabili di funzione
|
||||
var
|
||||
// totale dei puntini mostrati
|
||||
puntini = 0,
|
||||
// elemento contenente il testo
|
||||
// oppure il nodo testuale all'interno
|
||||
// dello stesso elemento
|
||||
testoIntrattenimento = Ab.prendiElementoDaId("testo-temporaneo"),
|
||||
// funzione per aggiungere puntini al testo scelto
|
||||
animaTesto = function()
|
||||
{
|
||||
// stringa locale contenente i vari puntini
|
||||
var testoAggiunto = "";
|
||||
// ciclo per aggiungere i puntini
|
||||
for(var a = 0; a < puntini; a++)
|
||||
testoAggiunto += ".";
|
||||
// assegnazione del nuovo testo al nodo
|
||||
// comprensivo dei puntini
|
||||
testoIntrattenimento.nodeValue = testo + testoAggiunto;
|
||||
// controllo sul totale puntini
|
||||
// se inferiori a 4
|
||||
if(puntini < 4)
|
||||
// si aggiunge un altro punto
|
||||
puntini++;
|
||||
// altrimenti si ricomincia da nessun punto
|
||||
else
|
||||
puntini = 0;
|
||||
// richiamo alla stessa funzione con intervallo non
|
||||
// inferiore ai 250 millisecondi
|
||||
setTimeout(animaTesto, 300);
|
||||
};
|
||||
// verifica della precedente assegnazione
|
||||
// del nodo testuale all'interno dell'elemento
|
||||
if(testoIntrattenimento.firstChild)
|
||||
{
|
||||
// in questo caso è necesario riassegnare
|
||||
// la funzione al fine di eliminare l'intervallo
|
||||
// successivo ...
|
||||
animaTesto = function(){};
|
||||
// ... per poi eliminare il nodo precedentemente aggiunto
|
||||
testoIntrattenimento.removeChild(testoIntrattenimento.firstChild);
|
||||
}
|
||||
else
|
||||
{
|
||||
// nodo inesistente, è necessario crearlo
|
||||
// con il testo predefinito ...
|
||||
testoIntrattenimento = document.createTextNode(testo);
|
||||
// ... ed assegnarlo all'elemento
|
||||
Ab.prendiElementoDaId("testo-temporaneo").appendChild(testoIntrattenimento);
|
||||
// per poter richiamare la funzione
|
||||
animaTesto();
|
||||
};
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// fetch
|
||||
// chiama la servlet passandogli i comandi e ritorna un valore che viene inserito o nella divList
|
||||
// oppure passato come parametro alla funzione postProcess
|
||||
// DA TESTARE A FONDO...
|
||||
//////////////////////////////////////////////////////
|
||||
function fetch(servlet, command, divList, postProcess, async, type) {
|
||||
//gestione chiamate asincrone
|
||||
if(async!= undefined && async!=null){
|
||||
$("#_async").val(async);
|
||||
//imposto una immagine di attesa
|
||||
$("#"+divList).html("<img src='"+webApp+"/admin/_V3/_img/attesa.gif' width='16' height='16'>");
|
||||
//alert('pio');
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#_async").val("");
|
||||
}
|
||||
|
||||
if (async==undefined) {
|
||||
async=true;
|
||||
}
|
||||
|
||||
if (type==undefined) {
|
||||
type = "html";
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: servlet,
|
||||
data: command,
|
||||
dataType: type,
|
||||
async: async,
|
||||
success: function(msg)
|
||||
{
|
||||
$("#_async").val("");
|
||||
if ("#"+divList!=null){
|
||||
$("#"+divList).html(msg);
|
||||
if(postProcess!=null){
|
||||
Ab.executeProcess(postProcess,msg);
|
||||
}
|
||||
}
|
||||
else if(postProcess!=null){
|
||||
Ab.executeProcess(postProcess, msg);
|
||||
}
|
||||
},
|
||||
error: function()
|
||||
{
|
||||
$("#"+divList).html("Chiamata fallita, si prega di riprovare...");
|
||||
//alert("Chiamata fallita, si prega di riprovare...");
|
||||
$("#_async").val("");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//********************************************************
|
||||
//********************************************************
|
||||
// attesa sulle chiamate ajax sincrone
|
||||
//********************************************************
|
||||
//********************************************************
|
||||
$body = $("body");
|
||||
|
||||
$(document).on({
|
||||
ajaxStart: function() {
|
||||
//console.log("loading partito");
|
||||
|
||||
if($('#_async').val()==="" || $('#_async').val()==="false"){
|
||||
$body.addClass("loading");
|
||||
}
|
||||
else
|
||||
{
|
||||
//alert('pio');
|
||||
}
|
||||
|
||||
},
|
||||
ajaxStop: function() {
|
||||
//console.log("loading fermato");
|
||||
|
||||
if($('#_async').val()==="" || $('#_async').val()==="false"){
|
||||
$body.removeClass("loading");
|
||||
}
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue