Fixed problem with column widths not being calculated/displayed correctly

This commit is contained in:
Andreas Stöckel 2011-09-01 10:02:23 +00:00
parent 990e1701f5
commit 0607a2c9a8
7 changed files with 41 additions and 20 deletions

View File

@ -20,7 +20,7 @@
var et2_dataview_dataProvider = Class.extend({
getCount: function() {
return 1000;
return 10;
},
registerDataRow: function(_idx, _dataRow) {

View File

@ -127,6 +127,7 @@ var et2_dataview_gridContainer = Class.extend({
// Rebuild the column stylesheets
this.columnMgr.setTotalWidth(_w - this.scrollbarWidth);
et2_debug("log", _w - this.scrollbarWidth);
this._updateColumns();
}
@ -261,42 +262,50 @@ var et2_dataview_gridContainer = Class.extend({
// Ugly browser dependant code - each browser seems to treat the
// right (collapsed) border of the row differently
var addBorder = 0;
var subBorder = 0;
var subHBorder = 0;
if ($j.browser.mozilla)
{
var maj = $j.browser.version.split(".")[0];
if (maj < 2) {
addBorder = 1; // Versions <= FF 3.6
subBorder = 1; // Versions <= FF 3.6
}
}
if ($j.browser.webkit && !first)
if ($j.browser.webkit)
{
addBorder = 1;
if (!first)
{
subBorder = 1;
}
subHBorder = 1;
}
if (($j.browser.msie || $j.browser.opera) && first)
{
addBorder = -1;
subBorder = -1;
}
// Make the last columns one pixel smaller, to prevent a horizontal
// scrollbar from showing up
if (vis_col == total_cnt)
{
addBorder += 1;
subBorder += 1;
}
// Write the width of the body-columns
var columnWidth = Math.max(0, (col.width - this.columnBorderWidth - addBorder));
styleSheet.updateRule(".egwGridView_grid ." + col.divClass,
"width: " + columnWidth + "px;");
// Write the width of the header columns
var headerWidth = Math.max(0, (col.width - this.headerBorderWidth));
var headerWidth = Math.max(0, (col.width - this.headerBorderWidth - subHBorder));
styleSheet.updateRule(".egwGridView_outer ." + col.divClass,
"width: " + headerWidth + "px;");
// Write the width of the body-columns
var columnWidth = Math.max(0, (col.width - this.columnBorderWidth - subBorder));
styleSheet.updateRule(".egwGridView_grid ." + col.divClass,
"width: " + columnWidth + "px;");
totalWidth += col.width;
et2_debug("log", col.divClass, " cw: ", columnWidth, " hw: ",
headerWidth, " tw: ", totalWidth);
first = false;
}
else
@ -401,6 +410,10 @@ var et2_dataview_gridContainer = Class.extend({
this.columnBorderWidth = this.constructor.prototype.columnBorderWidth =
this._getColumnBorderWidth(clone);
et2_debug("log", "Scrollbar width: ", this.scrollbarWidth);
et2_debug("log", "Header border width: ", this.headerBorderWidth);
et2_debug("log", "Column border width: ", this.columnBorderWidth);
// Remove the cloned DOM-Node again from the outer body
clone.remove();
}

View File

@ -1052,7 +1052,7 @@ var et2_dataview_partitionSpacerNode = et2_dataview_partitionContainerNode.exten
// created.
var ah = this._avgHeight;
var startIdx = Math.max(0, Math.floor((_range.top - t) / ah));
var stopIdx = Math.min(this._count - 1, Math.ceil((_range.bottom - t) / ah));
var stopIdx = Math.min(this._count, Math.ceil((_range.bottom - t) / ah));
if (startIdx > 0 && startIdx < this._count)
{

View File

@ -16,14 +16,24 @@
et2_dataview_interfaces;
*/
var __cc = 0;
var et2_dataview_row = et2_dataview_container.extend(et2_dataview_IDataRow, {
init: function(_dataProvider, _rowProvider, _invalidationElem, _idx) {
this._super(_dataProvider, _rowProvider, _invalidationElem);
__cc += 5;
this.tr = this.rowProvider.getPrototype("default");
$j("div", this.tr).text("Blub");
$j("div", this.tr).text("Blub" + (__cc / 5))
.height(20 + Math.round(Math.random() * 100))
.css("background-color", "rgb(" +
(255 - __cc % 255) + "," +
(__cc % 255) + "," +
((__cc * 2) % 255) +
")");
this.appendNode(this.tr);
// Register this row in the dataprovider - if data is available for this

View File

@ -80,6 +80,7 @@ var et2_dataview_rowProvider = Class.extend({
.appendTo(tr);
var div = $j(document.createElement("div"))
.addClass(this._outerId + "_div_" + this._columnIds[i])
.addClass("innerContainer")
.appendTo(td);
}

View File

@ -147,9 +147,6 @@ var et2_selectbox = et2_inputWidget.extend({
* added after the "option"-widgets were added to selectbox.
*/
set_select_options: function(_options) {
var root = this;
// Add the select_options
for (var key in _options)
{

View File

@ -7,8 +7,8 @@
/* Stuff for the standalone test webpage */
body, table, td {
font-family: Lucida Grande, sans-serif;
font-size: 10pt;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
/* overflow: hidden;*/
}