Revision: 3340
http://vexi.svn.sourceforge.net/vexi/?rev=3340&view=rev
Author: clrg
Date: 2009-01-05 07:53:43 +0000 (Mon, 05 Jan 2009)
Log Message:
-----------
Dynamic table fixing (still not 100% but a lot better than before)
Modified Paths:
--------------
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
2009-01-05 06:59:59 UTC (rev 3339)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/table.t
2009-01-05 07:53:43 UTC (rev 3340)
@@ -88,7 +88,7 @@
* - tempfirst : the first index of any temporary row data
* - tempfinal : the final index of any temporary row data
*/
- var loadDataFunc = function(data, index, tempindex, tempcount) {
+ var loadDataFunc = function(data, index, tempindex, tempfinal) {
if (data == null) throw "tried to load null data";
var b = th_body;
var n = b.numchildren;
@@ -118,9 +118,9 @@
var j = 0;
var l = rows.length;
// limit display to those visible
+ var start = viewindex>index?viewindex-index:0;
var count = data.length;
- count = index+count>viewfinal?viewfinal-index:count;
- var start = viewindex>index?viewindex-index:0;
+ if (count+index>viewfinal) count = viewfinal-index+1;
for (var i=start; count>i; i++) {
// assign new row
var r_ind = index+i;
@@ -163,9 +163,30 @@
var callFetchData = function(fetchfull) {
// establish the rows the table is attempting to view
- viewindex = max(floor((-th_bodyview.y) / rowheight), 0);
- viewfinal = min(numrows, viewindex+ceil(th_bodyport.height /
rowheight)+1);
+ viewindex = max(floor(viewy / rowheight), 0);
+ viewfinal = min(numrows-1, viewindex+ceil(th_bodyport.height /
rowheight)-1);
if (setViewInfo) setViewInfo(viewindex, viewfinal-viewindex+1);
+ // keep body/rows in sync with bodyport
+ var b = th_body;
+ var n = b.numchildren;
+ b.height = height;
+ // our starting y position for offsetting rows
+ viewoffset = -(ceil(viewy)%rowheight);
+ for (var i=0; n>i; i++) {
+ r = b[i];
+ if (r) {
+ if (fetchfull) {
+ r.y = -rowheight;
+ r.rowindex = -1;
+ continue;
+ }
+ var ind = r.rowindex;
+ if (ind>=viewindex and viewfinal>=ind) {
+ r.y = viewoffset + (rowheight*(ind-viewindex));
+ } else r.y = -rowheight;
+ }
+ }
+ // establish fetching parameters
var fetchindex, fetchcount;
// fetch all the rows on display
if (fetchfull or activeindex==null or activeindex>=viewfinal or
viewindex>=activefinal) {
@@ -190,26 +211,7 @@
var sortcol = sortby ? th_head.indexof(sortby) : null;
if (sortcol == -1) sortcol = null;
var sortorder = sortcol == null ? null : sortasc;
- var b = th_body;
- var n = b.numchildren;
- // keep body in sync with bodyport
- b.height = height;
- // our starting y position for offsetting rows
- viewoffset = -(ceil(viewy)%rowheight);
- for (var i=0; n>i; i++) {
- r = b[i];
- if (r) {
- if (fetchfull) {
- r.y = -rowheight;
- r.rowindex = -1;
- continue;
- }
- var ind = r.rowindex;
- if (ind>=viewindex and viewfinal>=ind) {
- r.y = viewoffset + (rowheight*(ind-viewindex));
- } else r.y = -rowheight;
- }
- }
+ // fetch and load returned data
var data = fetchData(fetchindex, fetchcount, sortcol, sortorder);
if (data) loadData(data, fetchindex, fetchcount);
}
@@ -274,6 +276,7 @@
th_bodyview = fakeviewport[0];
th_body.align = "topleft";
th_body.initAsDynamic();
+ th_vscroll.lineshift = rowheight;
// [un]assign relevant traps
rowheight ++= static.rowheightWrite;
selectedindex ++= selectByIndex;
@@ -507,6 +510,7 @@
static.rowheightWrite = function(v) {
if (!v) throw "rowtemplate..rowheight must be a valid integer (>0)";
cascade = v;
+ trapee.th_vscroll.lineshift = rowheight;
if (trapee.fetchData) trapee.forceFetchData();
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn