Thank you very much. Works like a charm!


-----Original Message-----
From: Mustafa Sak [mailto:[email protected]] 
Sent: 16. apríl 2012 13:04
To: qooxdoo Development
Subject: Re: [qooxdoo-devel] RemoteDataModel loading indicator

Hi Dagur,

here is a example, how you could handle this. Just make some custom events and 
fire them on right line :)

qx.Class.define("asa.ui.table.model.AbstractRDM",
{
  extend : qx.ui.table.model.Remote,
  events : 
        {
                "dataCompleted" : "qx.event.type.Data",
                "countCompleted" : "qx.event.type.Data",
                "beginLoading" : "qx.event.type.Event",
                "stopLoading" : "qx.event.type.Event"
        },

        properties :
        {
                searchString :
                {
                        init: null,
                        nullable : true
                },

                filterString :
                {
                        init: null,
                        nullable : true
                },

                countFunction :
                {
                        init: null,
                        nullable : true
                },

                dataFunction :
                {
                        init: null,
                        nullable : true
                }
        },

  construct : function(countFunction, dataFunction, rpcOptinal)
  {
    this.base(arguments);



                if (countFunction == null)
                {
                        throw "Count function name is missing!";
                }
                if (dataFunction == null)
                {
                        throw "Data function name is missing!";
                }

                this.setCountFunction(countFunction);
                this.setDataFunction(dataFunction);

    // Get an RPC object on which we'll do all of our communication
                if (rpcOptinal == null)
                {
                        this.appRoot = qx.core.Init.getApplication();

                        this.rpc = this.appRoot.rpc;
                }
                else
                {
                        this.rpc = rpcOptinal;
                }
                
    
  },

  members :
  {
    rpc : null,

                reqData : null,

                reqCount : null,

    /**
     * TODOC
     *
     * @param firstRow {var} TODOC
     * @param lastRow {var} TODOC
     * @return {void} 
     */
    _loadRowCount : function(firstRow, lastRow)
    {
      // Create the handler for our remote procedure call
      var clazz = this;

      var handler = function(result, ex, id)
      {
        if (ex !== null)
        {
                                        clazz.fireEvent('stopLoading');
        }
        else
        {
                                        clazz.fireEvent('stopLoading');
          clazz._onRowCountLoaded(result);
                                        clazz.fireDataEvent('countCompleted', 
result);
        }
      };

      var sortIndex = clazz.getColumnId(clazz.getSortColumnIndex());
      var sortOrder = clazz.isSortAscending() ? "asc" : "desc";

                        if (clazz.reqCount != null) {
        clazz.rpc.abort(clazz.reqCount);
      }

     clazz.fireEvent('beginLoading');
     clazz.reqCount = clazz.rpc.callAsync(handler, clazz.getCountFunction(), 
firstRow, lastRow, sortIndex, sortOrder, clazz.getSearchString(), 
clazz.getFilterString());
    },


    /**
     * TODOC
     *
     * @param firstRow {var} TODOC
     * @param lastRow {var} TODOC
     * @return {void} 
     */
    _loadRowData : function(firstRow, lastRow)
    {
      // Create the handler for our remote procedure call
      var clazz = this;

      var handler = function(result, ex, id)
      {
        if (ex !== null) 
                                {
                                        clazz.fireEvent('stopLoading');
                                }
        else
        {
                                        clazz.fireEvent('stopLoading');
          if (result == null)
          {
                                                throw "Result is null, must be 
an array!";
          }
          clazz._onRowDataLoaded(result);
          clazz.fireDataEvent('dataCompleted', result);
        }
      };

                        

      // Issue the call to get the row count
      // get the column index to sort and the order
      var sortIndex = clazz.getColumnId(clazz.getSortColumnIndex());
      var sortOrder = clazz.isSortAscending() ? "ASC" : "DESC";

                        if (clazz.reqData != null) {
        clazz.rpc.abort(clazz.reqData);
      }
                        clazz.fireEvent('beginLoading');
      clazz.reqData = clazz.rpc.callAsync(handler, clazz.getDataFunction(), 
firstRow, lastRow, sortIndex, sortOrder, clazz.getSearchString(), 
clazz.getFilterString());
    }
  }
});

-----Ursprüngliche Nachricht-----
Von: Dagur [mailto:[email protected]] 
Gesendet: Montag, 16. April 2012 12:51
An: [email protected]
Betreff: [qooxdoo-devel] RemoteDataModel loading indicator

Hi,

I've implemented a Table that gets its data from a remoteDataModel. I was
wondering if I can somehow make it clear to the user that data is being fetched.
If he scrolls down far enough he'll be looking at empty rows for a few seconds
before the rows are populated and there's no indication that something is
happening. I'm using callAsync to get the data.

regards,
Dagur


------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to