I have missed to tell you that i am using this code since month. It is well tested in practise work. I can tell you that sorting and filtering is exactly working like expected. I am handeling with your amasing cade thousends of customers. And they have data sets from less then 100 till 3.7 million. Everything is well for customers with 300000 rows in my database table but just two customers have more then one million rows. And just them brings the scrpit to hang.

Von meinem iPhone gesendet

Am 12.01.2010 um 20:37 schrieb Derrell Lipman <derrell.lip...@unwireduniverse.com >:

On Tue, Jan 12, 2010 at 14:18, <i...@saksys.de> wrote:
this is my rds script, its yours but extended with some sorting and
filtering stuff

Ok, a few suggestions.

First, create a subset of your database that contains only about 400 rows, and ensure that things work.

Next, I'm pretty concerned about this sorting stuff. I recommend using exactly my example subclass of the remote data model, and slightly modify your backend to accommodate that, for the moment. Then you're working with known-working code on the frontend, and you can ensure that you're sending the correct data from the backend and that even with the huge database, it sorts correctly. Also, set all columns to "not sortable" for the moment.

Once that's working, then modify the remote data model's subclass to start thinking about sorting. I have a strong suspicion that remote data model and client-side sorting don't play well together. I know I've never tried that, and it intuitively (in my mind) doesn't work. I suspect you'll find that it's spending oodles of time trying to sort something. The remote model does some kind of sorting in cache, but I haven't followed through the code to try to figure out exactly what it's doing.

Derrell




/*
 *
 * Copyright:
 *   (c) 2008 by Derrell Lipman
 *
 * License:
 *   LGPL: http://www.gnu.org/licenses/lgpl.html
 *   EPL: http://www.eclipse.org/org/documents/epl-v10.php
* See the LICENSE file in the project's top-level directory for details.
 *
 * Authors:
 *   Derrell Lipman (derrell)
 *
 */
qx.Class.define("toppreis.RemoteDataModel",
{
 extend : qx.ui.table.model.Remote,

 construct : function()
 {
   this.base(arguments);


// Our data will be sent as an array of maps. Each map (one row of data)
   // will have properties "year" and "leap".
   this.setColumnIds
 ([
   "art_name",
   "shp_marke",
   "shp_produkt",
   "shp_deeplink",
   "shp_aktiv",
   "shp_kategorie",
   "shp_markt",
   "shp_segment",
   "shp_refnummer",
   "shp_preis",
   "shp_img",
   "shp_verfuegbar",
   "shp_gewicht",
   "shp_volumen",
   "shp_ean",
   "shp_lieferkosten",
   "shp_pzb",
   "shp_ISBN",
   "shp_aktion"

 ]);


 //this.setColumnRenderer();

   // Get an RPC object on which we'll do all of our communication
   var clazz = toppreis.RemoteDataModel;
   this.rpc = new qx.io.remote.Rpc(clazz.URL, clazz.SERVICE);
   this.rpc.setTimeout(50000);
   this.rpc.setCrossDomain(false);
 },

 // Configure these as appropriate for your server and services
 statics :
 {
   // The URL for remote services.
   URL     : "../services/",

// The service to use. We expect this service to implement two methods:
   // getRowCount and getRowData.
   SERVICE : "qooxdoo.toppreis"
 },

 members :
 {
   rpc : null,

 tcm : null,



 searchID : 0,

 setSearchID : function(id)
 {
   this.searchID=id;
 },

 getSearchID : function()
 {
   return this.searchID;
 },

 filter : [],
 setFilter : function(filter)
 {
   this.filter=filter;
 },

 getFilter : function()
 {
   return this.filter;
 },


 setTCM : function(tcm)
 {
   this.tcm=tcm;
 },



   // overloaded
   _loadRowCount : function()
   {
     // Create the handler for our remote procedure call
     var _this = this;
     handler = function(result, ex, id)
     {
       mycall = null;
       if (ex !== null)
       {
         alert("Async(" + id + ") exception: " + ex +
               "<p>" +
               "Are you sure you configured
rpcexample.RemoteDataModel.URL " +
               "and rpcexample.RemoteDataModel.SERVICE?");
       }
       else
       {
         // We got (presumably) valid data.  Apply it to the table
         _this._onRowCountLoaded(result);
       }
     }

     // Issue the call to get the row count


var req = this.rpc.callAsync(handler, "getRowCount", this.getSearchID(),
this.getFilter());



   },

   _loadRowData : function(firstRow, lastRow)
   {
     // Create the handler for our remote procedure call
     var _this = this;
     handler = function(result, ex, id)
     {
       mycall = null;
       if (ex !== null)
       {
         alert("Async(" + id + ") exception: " + ex +
               "<p>" +
               "Are you sure you configured
rpcexample.RemoteDataModel.URL " +
               "and rpcexample.RemoteDataModel.SERVICE?");
       }
       else
       {
         // We got (presumably) valid data.  Apply it to the table
         _this._onRowDataLoaded(result);
     //_this.setColumnRenderer();
       }
     }

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

     var req =  this.rpc.callAsync(handler, "getRowData", firstRow,
lastRow, sortIndex, sortOrder, this.getSearchID(),
this.getFilter());

   }
 }
});



> On Tue, Jan 12, 2010 at 13:51, Mustafa Sak <i...@saksys.de> wrote:
>
>> Hi Derrell
>> I am using exactly the RDS class from the contrib. In firebug i can see >> both async requests an the answers. The calls are needing less than 5
>> seconds. The result just gets 200 rows at once.
>>
>
> Ok, that's good confirmation. The next thing to do is determine where it's
> getting stuck. You were to implement the methods _loadRowCount() and
> _loadRowData() in your class that extends qx.ui.table.model.Remote. Please > post those two methods that you implemented so we can see what's wrong.
>
> Derrell
> --- --- --- ---------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and
> easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> qooxdoo-devel mailing list
> qooxdoo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>



--- --- --- ---------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

--- --- --- ---------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to