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

Reply via email to