You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xap-commits@incubator.apache.org by jm...@apache.org on 2006/09/15 23:35:20 UTC
svn commit: r446784 - /incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js
Author: jmargaris
Date: Fri Sep 15 16:35:19 2006
New Revision: 446784
URL: http://svn.apache.org/viewvc?view=rev&rev=446784
Log:
more work, table part sort of working now
Modified:
incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js
Modified: incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js?view=diff&rev=446784&r1=446783&r2=446784
==============================================================================
--- incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js (original)
+++ incubator/xap/trunk/src/xap/widgets/dojo/TreeTable.js Fri Sep 15 16:35:19 2006
@@ -28,8 +28,9 @@
dojo.inherits(xap.widgets.dojo.TreeTable,xap.widgets.dojo.ScrollPane);
dojo.lang.extend(xap.widgets.dojo.TreeTable, {
- templateString: '<div>' +
- '<table dojoAttachPoint="headerTable" style="width:100%;table-layout:fixed"><tbody dojoAttachPoint="headerTbody"><tr dojoAttachPoint="headerRow"></tr></tbody></table>'+
+ //TODO calc padding after laying out headers?
+ templateString: '<div style="padding:0px 0px 40px 0px;overflow:hidden;position:relative">' +
+ '<table dojoAttachPoint="headerTable" style="position:relative;width:100%;table-layout:fixed"><tbody dojoAttachPoint="headerTbody"><tr dojoAttachPoint="headerRow"></tr></tbody></table>'+
'<div dojoAttachPoint="scrollDiv" style="overflow:auto;width:100%;height:100%">' +
'<table dojoAttachPoint="table"><tbody dojoAttachPoint="tbody"></tbody></table></div></div>',
templateCssPath: null ,
@@ -55,13 +56,23 @@
},
_resizeTable: function(){
-// for (var i=0; i<this.columns.length;i++){
-// var headerWidth = this.headerRow.childNodes[i].offsetWidth;
-// alert("Inner width of header = " + this.headerRow.childNodes[i] + "=" + headerWidth);
-// //set the cell on the first row to that width
-// this.tbody.childNodes[0].childNodes[i].style.width = headerWidth;
-// this.headerRow.childNodes[i].style.width = headerWidth;
-// }
+ var finalWidths = [];
+ finalWidths[this.columns.length-1] = "";
+
+ for (var i=0; i<this.columns.length-1;i++){
+ var headerWidth = this.headerRow.childNodes[i].offsetWidth;
+ var columnWidth = this.tbody.childNodes[0].childNodes[i].offsetWidth;
+ alert("Header width and main column width = " + headerWidth + "/" + columnWidth);
+ var finalWidth = headerWidth>columnWidth ? headerWidth:columnWidth;
+ finalWidths[i] = finalWidth + "px";
+ //set the columns to have that calculated with
+
+ }
+
+ for (var i=0; i<this.columns.length;i++){
+ this.headerTable.childNodes[i].style.width = finalWidths[i];
+ this.table.childNodes[i].style.width = finalWidths[i];
+ }
this.sizeAdjustmentPending = false;
},
@@ -74,25 +85,25 @@
_rebuildTable: function(){
this.domNode.removeChild(this.headerTable);
this.domNode.removeChild(this.scrollDiv);
-
+
this.headerTable = document.createElement("table");
this.domNode.appendChild(this.headerTable);
-
- this.headerTable.style.width = "100%";
this.headerTable.style.tableLayout="fixed";
+ this.headerTable.style.width="500px";
+ this.headerTable.style.position="relative";
this.scrollDiv = document.createElement("div");
this.domNode.appendChild(this.scrollDiv);
this.scrollDiv.style.width="100%";
this.scrollDiv.style.height="100%";
- this.scrollDiv.style.margin.bottom = "-30px";
this.scrollDiv.style.overflow="auto";
+ dojo.event.connect(this.scrollDiv, "onscroll", this, "onscroll");
this.table = document.createElement("table");
this.scrollDiv.appendChild(this.table);
- this.table.style.tableLayout="fixed";
+ // this.table.style.tableLayout="fixed";
//populate cols under both tables
for (var i = 0; i<this.columns.length; i++){
@@ -120,15 +131,21 @@
}
}
- this.bodyBody = document.createElement("tbody");
- this.table.appendChild(this.bodyBody);
+ this.tbody = document.createElement("tbody");
+ this.table.appendChild(this.tbody);
//now populate the body rows
for (var i =0; i<this.rows.length; i++){
- this.bodyBody.appendChild(this.rows[i].domNode);
+ this.tbody.appendChild(this.rows[i].domNode);
}
+ },
+
+ onscroll : function(event){
+ if (this.scrollDiv){
+ this.headerTable.style.left = -this.scrollDiv.scrollLeft + "px";
+ }
},