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