• Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!

Ext.ux.AjaxRequestIndicadorGlobal

Comparte tus mejoras y extensiones para Ext 2.0.

Ext.foro.Nuevo
Mensajes: 3
Registrado: 07 Oct 2007, 10:42
NotaPublicado: 15 Feb 2008, 15:32
Saludos,

Hace algun tiempo publique un indicador global para ajax request en el foro ingles, ahora lo traigo para nuestro lenjuage y a consideracion de todos uds.

La idea es tener un indicador para identificar cuando el sistema esta haciendo una peticion ajax al servidor, es una caracteristica similar al indicador del explorador y es funcional en el caso por ejemplo de hacer uploadings a la BD automaticamente, yo lo utilizo en una grilla que tiene este sistema tal como en el ejemplo de mjlecomte: EditorGrid - working example (php/mysql backend) y fue inspirado en el indicador de digitalbucket.net por bahar

el indicador:
Código: Seleccionar todo
/**
* @class Ext.ux.indicator
* @extends Ext.Button
*/

Ext.ux.indicator = Ext.extend(Ext.Button, {
   iconCls: 'icon-indicator-static',
   disabled: true,
   counter: 0,
   
   initComponent: function() {
       Ext.ux.AutoGridPanel.superclass.initComponent.call(this);
   
       Ext.Ajax.on('beforerequest', function(conn, o){
           if(this.counter == 0)
               this.showProgress();
           this.counter++;
       }, this);

       Ext.Ajax.on('requestcomplete', function(conn, response, o){
           this.counter--;
           if(this.counter <= 0)
              this.hideProgress();
       }, this);

       Ext.Ajax.on('requestexception', function(conn, response, o){
           this.counter--;   
           if(this.counter <= 0)
              this.hideProgress();
       }, this);
   },
   
   showProgress: function() {
       this.setIconClass('icon-indicator');
   },
   
   hideProgress: function() {
       this.setIconClass('icon-indicator-static');
   }
});

la utilizacion:
Código: Seleccionar todo
tbar: [{
  text: 'Adicionar fila',
  iconCls: 'icon1',
  tooltip: 'This is a button1',
  handler : YourHandlerFunction
},{
  text: 'Eliminar registro',
  iconCls: 'icon2',
  tooltip: 'This is a button2',
  handler : YourHandlerFunction
},
  '->',
  new Ext.ux.indicator()
],

un buen recurso es : www.ajaxload.info

PD. hay un problema con el indicador y es el siguiente: si se envia una peticion ajax seguida inmediatamente de otra, la primera se cancela y pero el contador no se decrementa, no se porque. si alguien sabe y puede aportar algo para mejorarlo, porfavor hagalo.
Última edición por Ramiro P. Saenz (garraS) el 28 Feb 2009, 02:27, editado 1 vez en total
Para no ver esta publicidad, debes ser usuario del Foro.
Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)


Cuixer, una forma de administrar páginas web que nunca viste!


Ext.foro.Nuevo
Mensajes: 3
Registrado: 07 Oct 2007, 10:42
NotaPublicado: 17 Feb 2008, 13:27
Creo que tengo solucionado el problema de cuando se cancela una conexión.

agregar esto:
Código: Seleccionar todo
Ext.Ajax.addEvents({requestaborted:true});
Ext.override(Ext.data.Connection, {
abort : function(transId){
    if(transId || this.isLoading()){
        Ext.lib.Ajax.abort(transId || this.transId);
        this.fireEvent('requestaborted', this, this.transId);
    }
}});

y agregar el evento al indicador:
Código: Seleccionar todo
Ext.Ajax.on('requestaborted', function(conn, response, o){
            //if(o.isUpload) return;
            //--this.counter;   
            this.counter--;   
            if(this.counter <= 0)
              this.hideProgress();
        }, this);

parece q ahora si funciona perfectamente.

espero sus pruebas y comentarios.

Ext.foro.Miembro
Mensajes: 244
Registrado: 15 Dic 2007, 22:03
Ubicación: Madrid-Spain
NotaPublicado: 20 Feb 2008, 15:35
¿Puedes poner el código final, para ver con las modificaciones como quedan?

Saludos
Carlos Torres
Madrid-Spain
http://www.tsabogados.com Mi primer proyecto EXTjs

Ext.foro.Nuevo
Mensajes: 3
Registrado: 23 Oct 2008, 02:31
NotaPublicado: 23 Oct 2008, 23:00
Esto es perfecto! Detailes por los detalles! Excelente. Me encanta tu foros tanto! Esto es realmente una gran ayuda para nosotros ..

Volver a Ext 2.0: Extensiones y mejoras





  • Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!