Author: igel457
New Revision: 34222
URL: http://www.egroupware.org/viewvc/egroupware?rev=34222&view=rev
Log:
Fixed bugs in the grid component with resizing not working properly and column width being not in sync with header width. This has been done by using a dynamic stylesheet for the column properties instead of changing the properties for each element individually.
Modified:
trunk/phpgwapi/js/egw_action/egw_grid_columns.js
trunk/phpgwapi/js/egw_action/egw_grid_view.js
trunk/phpgwapi/js/egw_action/test/grid.css
Modified: trunk/phpgwapi/js/egw_action/egw_grid_columns.js
URL: http://www.egroupware.org/viewvc/egroupware/trunk/phpgwapi/js/egw_action/egw_grid_columns.js?rev=34222&r1=34221&r2=34222&view=diff
— trunk/phpgwapi/js/egw_action/egw_grid_columns.js (original)
+++ trunk/phpgwapi/js/egw_action/egw_grid_columns.js Fri Mar 18 19:04:56 2011
@@ -458,22 +458,19 @@
for (var i = 0; i < this.columns.length; i++)
{
-
if (this.columns[i].visibility != EGW_COL_VISIBILITY_INVISIBLE) -
{ -
result.push( -
{ -
"id": this.columns[i].id, -
"caption": this.columns[i].caption, -
"sortable": this.columns[i].sortable != EGW_COL_SORTABLE_NONE, -
"sortmode": this.columns[i].sortmode, -
"default": this.columns[i]["default"], -
"width": this.columnWidths[i], -
"drawnWidth": this.columnWidths[i], -
"type": this.columns[i].type, -
"element": this.columns[i] -
} -
); -
}
-
result.push( -
{ -
"id": this.columns[i].id, -
"caption": this.columns[i].caption, -
"sortable": this.columns[i].sortable != EGW_COL_SORTABLE_NONE, -
"sortmode": this.columns[i].sortmode, -
"default": this.columns[i]["default"], -
"width": this.columnWidths[i], -
"type": this.columns[i].type, -
"visible": this.columns[i].visibility != EGW_COL_VISIBILITY_INVISIBLE, -
"element": this.columns[i] -
} -
);}
return result;
Modified: trunk/phpgwapi/js/egw_action/egw_grid_view.js
URL: http://www.egroupware.org/viewvc/egroupware/trunk/phpgwapi/js/egw_action/egw_grid_view.js?rev=34222&r1=34221&r2=34222&view=diff
— trunk/phpgwapi/js/egw_action/egw_grid_view.js (original)
+++ trunk/phpgwapi/js/egw_action/egw_grid_view.js Fri Mar 18 19:04:56 2011
@@ -65,6 +65,9 @@
var EGW_GRID_COLUMN_PADDING = 2;
var EGW_GRID_SCROLLBAR_WIDTH = false;
+var EGW_GRID_HEADER_BORDER_WIDTH = false;
+var EGW_GRID_COLUMN_BORDER_WIDTH = false;
+var EGW_UNIQUE_COUNTER = 0;
/**
- Base view class which is responsible for displaying a grid view element.
@@ -77,6 +80,8 @@
{
this.parentNode = $(_parentNode);
this.dataRoot = _dataRoot;
-
EGW_UNIQUE_COUNTER++;
// Build the base nodes
this.outer_table = null;
@@ -92,15 +97,27 @@
this.headerHeight = 0;
this.scrollbarWidth = 0; -
this.visibleColumnCount = 0;
-
this.uniqueId = ‘grid_outer_’ + EGW_UNIQUE_COUNTER;
-
this.headerColumns = [];
this.selectColsCallback = _selectColsCallback;
this.context = _context;this.buildBase();
this.parentNode.append(this.outer_table); -
this.styleSheet = new egwDynStyleSheet();
-
// Now that the base grid has been build, we can perform a few tests, to
-
// determine some browser/CSS dependant width values
// Read the scrollbar width
this.scrollbarWidth = Math.max(10, this.getScrollbarWidth()); -
// Read the th and td border width
-
this.headerBorderWidth = this.getHeaderBorderWidth();
-
this.columnBorderWidth = this.getColumnBorderWidth();
// Start value for the average row height
this.avgRowHeight = 19.0;
@@ -161,14 +178,88 @@
// Copy the columns data
this.columns = _columns;
- // Rebuild the header
- var first = true;
- // Count the visible rows
- var total_cnt = 0;
- for (var i = 0; i < this.columns.length; i++)
- {
-
if (this.columns[i].visible) -
{ -
total_cnt++; -
} - }
- var vis_col = this.visibleColumnCount = 0;
- var totalWidth = 0;
- // Set the grid column styles
- for (var i = 0; i < this.columns.length; i++)
- {
-
var col = this.columns[i]; -
col.tdClass = this.uniqueId + "_td_" + col.id; -
col.divClass = this.uniqueId + "_div_" + col.id; -
if (col.visible) -
{ -
vis_col++; -
this.visibleColumnCount++; -
this.styleSheet.updateRule("." + col.tdClass, -
"display: " + (col.visible ? "table-cell" : "none") + "; " + -
((vis_col == total_cnt) ? "border-right-width: 0 " : "border-right-width: 1px ") + -
"!important;"); -
this.styleSheet.updateRule(".egwGridView_outer ." + col.divClass, -
"width: " + (col.width - this.headerBorderWidth) + "px;"); -
// Ugly browser dependant code - each browser seems to treat the -
// right (collapsed) border of the row differently -
var addBorder = 0; -
if ($.browser.mozilla || ($.browser.webkit && !first)) -
{ -
addBorder = 1; -
} -
if (($.browser.msie || $.browser.opera) && first) -
{ -
addBorder = -1; -
} -
// Make the last columns one pixel smaller, to prevent a horizontal -
// scrollbar from showing up -
if (vis_col == total_cnt) -
{ -
addBorder += 1; -
} -
var width = (col.width - this.columnBorderWidth - addBorder); -
this.styleSheet.updateRule(".egwGridView_grid ." + col.divClass, -
"width: " + width + "px;"); -
totalWidth += col.width; -
first = false; -
} -
else -
{ -
this.styleSheet.updateRule("." + col.tdClass, -
"display: " + (col.visible ? "table-cell" : "none") + ";"); -
} - }
- // Add the full row and spacer class
- this.styleSheet.updateRule(".egwGridView_grid ." + this.uniqueId + “_div_fullRow”,
-
"width: " + (totalWidth - this.columnBorderWidth - 1) + "px; border-right-width: 0 !important;"); - this.styleSheet.updateRule(".egwGridView_outer ." + this.uniqueId + “_spacer_fullRow”,
-
"width: " + (totalWidth - 1) + "px; border-right-width: 0 !important;"); - // Build the header if this hasn’t been done yet
this.buildBaseHeader();
- // Set the grid width
- this.grid.outerNode.attr(“colspan”, _columns.length + 1);
- // Empty the grid
- this.empty();
- // Update the grid
- this.grid.updateColumns(this.columns);
}
egwGridViewOuter.prototype.buildBase = function()
@@ -200,8 +291,30 @@
egwGridViewOuter.prototype.buildBaseHeader = function()
{
// Build the “option-column”, if this hasn’t been done yet
- if (!this.optcol)
- {
- if (this.headerColumns.length == 0)
- {
-
// Create the head columns -
this.headerColumns = []; -
for (var i = 0; i < this.columns.length; i++) -
{ -
var col = this.columns[i]; -
// Create the column element and insert it into the DOM-Tree -
var column = $(document.createElement("th")); -
column.addClass(col.tdClass); -
var cont = $(document.createElement("div")); -
cont.addClass("innerContainer"); -
cont.addClass(col.divClass); -
cont.html(col.caption); -
column.append(cont); -
this.outer_head_tr.append(column); -
this.headerColumns.push(column); -
} -
// Build the "select columns" icon this.selectcols = $(document.createElement("span")); this.selectcols.addClass("selectcols");
@@ -210,45 +323,26 @@
this.optcol = $(document.createElement(“th”));
this.optcol.addClass(“optcol”);
this.optcol.append(this.selectcols);
- }
- // Create the head columns
- this.outer_head_tr.empty();
- this.headerColumns = [];
- for (var i = 0; i < this.columns.length; i++)
- {
-
var col = this.columns[i]; -
// Create the column element and insert it into the DOM-Tree -
var column = $(document.createElement("th")); -
column.html(col.caption); -
this.outer_head_tr.append(column); -
// Set the width of the column -
var border = column.outerWidth() - column.width(); -
column.css("width", (col.width - border) + "px"); -
col.drawnWidth = column.outerWidth(); -
this.headerColumns.push(column); - }
- // Append the option column and set its width of the last column
- this.outer_head_tr.append(this.optcol);
-
// Append the option column and set its width of the last column -
this.outer_head_tr.append(this.optcol);
- this.optcol.css(“width”, this.scrollbarWidth - this.optcol.outerWidth()
-
+ this.optcol.width() + 1); // The "1" is a "security pixel" which prevents a horizontal scrollbar form occuring on IE7 - var self = this;
- this.selectcols.click(function() {
-
self.selectColsCallback.call(self.context, self.selectcols); -
return false; - });
- this.headerHeight = this.outer_thead.height();
-}
-
this.optcol.css("width", this.scrollbarWidth - this.optcol.outerWidth() -
+ this.optcol.width() + 1); -
var self = this; -
this.optcol.click(function() { -
self.selectColsCallback.call(self.context, self.selectcols); -
return false; -
}); -
this.headerHeight = this.outer_thead.height(); - }
+}
+/**
-
- Calculates the width of the browser scrollbar
-
*/
egwGridViewOuter.prototype.getScrollbarWidth = function()
{
if (EGW_GRID_SCROLLBAR_WIDTH === false)
@@ -278,6 +372,65 @@
}return EGW_GRID_SCROLLBAR_WIDTH;
+}
+/**
-
- Calculates the total width of the header column border
- */
- egwGridViewOuter.prototype.getHeaderBorderWidth = function()
+{ - if (EGW_GRID_HEADER_BORDER_WIDTH === false)
- {
-
// Create a temporary th which is appended to the outer thead row -
var cont = $(document.createElement("div")); -
cont.addClass("innerContainer"); -
var th = $(document.createElement("th")); -
th.append(cont); -
// Insert the th into the document tree -
this.outer_head_tr.append(th); -
// Calculate the total border width -
EGW_GRID_HEADER_BORDER_WIDTH = th.outerWidth(true) - cont.width(); -
// Empty the outer head again -
this.outer_head_tr.empty(); - }
- return EGW_GRID_HEADER_BORDER_WIDTH;
+}
+/**
-
- Calculates the total width of the column border
- */
+egwGridViewOuter.prototype.getColumnBorderWidth = function()
+{ - if (EGW_GRID_COLUMN_BORDER_WIDTH === false)
- {
-
// Temporarily assign the egwGridView_grid class to this table -
this.outer_table.addClass("egwGridView_grid"); -
// Create a temporary td which is appended to the outer tbody row -
var cont = $(document.createElement("div")); -
cont.addClass("innerContainer"); -
var td = $(document.createElement("td")); -
td.append(cont); -
// Insert the th into the document tree -
this.outer_tr.append(td); -
// Calculate the total border width -
EGW_GRID_COLUMN_BORDER_WIDTH = td.outerWidth(true) - cont.width(); -
// Empty the outer head again -
this.outer_tr.empty(); -
this.outer_table.removeClass("egwGridView_grid"); - }
- return EGW_GRID_COLUMN_BORDER_WIDTH;
}
egwGridViewOuter.prototype.setHeight = function(_h)
@@ -310,6 +463,7 @@
this.viewArea = false;
this.containerClass = “”;
this.heightInAvg = false;
-
this.updated = true;
this.doInsertIntoDOM = null;
this.doSetViewArea = null;
@@ -506,8 +660,19 @@
return egwArea(this.position, this.getHeight());
}
+/**
-
- Function which is called whenever the column count or the data inside the columns
-
- has probably changed - the checkViewArea function of the grid element is called
-
- and the variable “updated” is set to true. Grid elements should check this
-
- flag and set it to false if they have successfully updated themselves.
- */
+egwGridViewContainer.prototype.updateColumns = function(_columns)
+{ - this.columns = _columns;
- this.updated = true;
- this.checkViewArea();
+}
/** – egwGridViewGrid Class – **/
@@ -515,7 +680,6 @@
var EGW_GRID_MAX_CYCLES = 10;
var EGW_GRID_SCROLL_TIMEOUT = 100;
var EGW_GRID_UPDATE_HEIGHTS_TIMEOUT = 50;
-var EGW_GRID_VIEW_GRID_CNT = 0;
/**
- egwGridViewGrid is the container for egwGridViewContainer objects, but itself
@@ -528,7 +692,7 @@
_scrollable = false;
}
- EGW_GRID_VIEW_GRID_CNT++;
-
EGW_UNIQUE_COUNTER++;
var container = new egwGridViewContainer(_grid, _heightChangeProc);
@@ -558,12 +722,13 @@
container.triggerUpdateAssumedHeights = egwGridViewGrid_triggerUpdateAssumedHeights;
container.addIconHeightToAvg = egwGridViewGrid_addIconHeightToAvg;
container.setIconWidth = egwGridViewGrid_setIconWidth;
- container.updateColumns = egwGridViewGrid_updateColumns;
container.children = [];
container.outer = _outer;
container.containerClass = “grid”;
container.avgIconHeight = 16;
container.avgIconCnt = 1;
- container.uniqueId = “grid_” + EGW_GRID_VIEW_GRID_CNT;
- container.uniqueId = “grid_” + EGW_UNIQUE_COUNTER;
container.maxIconWidth = 16;
container.styleSheet = new egwDynStyleSheet();
@@ -645,6 +810,35 @@
this.didUpdate = false;
}
- }
+}
+function egwGridViewGrid_updateColumns(_columns)
+{
- try
- {
-
this.beginUpdate(); -
this.didUpdate = true; -
// Set the colspan value of the grid -
this.outerNode.attr("colspan", this.getOuter().visibleColumnCount -
+ (this.scrollable ? 1 : 0)); -
// Call the update function of all children -
for (var i = 0; i < this.children.length; i++) -
{ -
this.children[i].updateColumns(_columns); -
} -
// Call the inherited function -
egwGridViewContainer.prototype.updateColumns.call(this, _columns); -
this.updated = false; - }
- finally
- {
-
}this.endUpdate();
}
@@ -1094,7 +1288,6 @@
container.isOdd = 0;
container.aoiSetup = egwGridViewRow_aoiSetup;
container.getAOI = egwGridViewRow_getAOI;
-
container.checkOdd = egwGridViewRow_checkOdd;
container._columnClick = egwGridViewRow__columnClick;
container.setOpen = egwGridViewRow_setOpen;
container.tdObjects = [];
@@ -1174,13 +1367,16 @@
this.item.setGridViewObj(this);
} -
// Check whether this element is odd
-
this.checkOdd();
-
for (var i = 0; i < this.columns.length; i++)
{
var col = this.columns[i];
-
var td = $(document.createElement("td")); -
td.addClass(col.tdClass); -
var cont = $(document.createElement("div")); -
cont.addClass(col.divClass); -
cont.addClass("innerContainer"); this.parentNode.append(td);
@@ -1191,27 +1387,12 @@
e.data.item._columnClick(egwGetShiftState(e), e.data.col);
});
-
// Mark the first and last column -
if (i == 0) -
{ -
td.addClass("first"); -
} -
if (i == this.columns.length - 1) -
{ -
td.addClass("last"); -
} -
// Set the column width -
if (EGW_GRID_VIEW_ROW_BORDER === false) -
{ -
EGW_GRID_VIEW_ROW_BORDER = td.outerWidth() - td.width(); -
} -
td.css("width", col.drawnWidth - EGW_GRID_VIEW_ROW_BORDER);
-
td.append(cont); // Store the column in the td object array this.tdObjects.push({
-
"col": col, -
"td": td
-
"td": td, -
}"cont": cont });
@@ -1223,113 +1404,125 @@
function egwGridViewRow_doUpdateData(_immediate)
{
var ids = [];
- var vis_cnt = 0;
for (var i = 0; i < this.columns.length; i++)
{
-
ids.push(this.columns[i].id);
-
if (this.columns[i].visible) -
{ -
ids.push(this.columns[i].id); -
vis_cnt++; -
}}
var data = this.item.getData(ids);
-
var vis_idx = 0;
for (var i = 0; i < this.tdObjects.length; i++)
{
-
var td = this.tdObjects[i].td; -
var col = this.tdObjects[i].col; -
td.empty(); -
if (typeof data[col.id] != "undefined") -
{ -
if (col.type == EGW_COL_TYPE_NAME_ICON_FIXED)
-
var col = this.columns[i]; -
if (col.visible) -
{ -
vis_idx++; -
var cont = this.tdObjects[i].cont; -
cont.empty(); -
if (typeof data[col.id] != "undefined") {
-
// Insert the indentation spacer -
var depth = this.item.getDepth() - 1; -
if (depth > 0)
-
if (col.type == EGW_COL_TYPE_NAME_ICON_FIXED) {
-
// Build the indentation object -
var indentation = $(document.createElement("span")); -
indentation.addClass("indentation"); -
indentation.css("width", (depth * 20) + "px"); -
td.append(indentation);
-
// Insert the indentation spacer -
var depth = this.item.getDepth() - 1; -
if (depth > 0) -
{ -
// Build the indentation object -
var indentation = $(document.createElement("span")); -
indentation.addClass("indentation"); -
indentation.css("width", (depth * 20) + "px"); -
cont.append(indentation); -
} -
// Insert the open/close arrow -
var arrow = $(document.createElement("span")); -
arrow.addClass("arrow"); -
if (this.item.canHaveChildren) -
{ -
arrow.addClass(this.item.opened ? "opened" : "closed"); -
arrow.click(this, function(e) { -
$this = $(this); -
if (!e.data.opened) -
{ -
$this.addClass("opened"); -
$this.removeClass("closed"); -
} -
else -
{ -
$this.addClass("closed"); -
$this.removeClass("opened"); -
} -
e.data.setOpen(!e.data.opened); -
return false; // Don't bubble this event -
}); -
arrow.dblclick(function() {return false;}); -
} -
cont.append(arrow); -
// Insert the icon -
if (data[col.id].iconUrl) -
{ -
// Build the icon container -
var iconContainer = $(document.createElement("span")); -
iconContainer.addClass("iconContainer " + this.grid.uniqueId); -
// Default the iconContainer height to the average height - this attribute -
// is removed from the row as soon as the icon is loaded -
iconContainer.css("min-height", this.grid.avgIconHeight + "px"); -
// Build the icon -
var icon = $(document.createElement("img")); -
if (this.item.iconSize) -
{ -
icon.css("height", this.item.iconSize + "px"); -
icon.css("width", this.item.iconSize + "px"); //has to be done because of IE :-( -
} -
icon.attr("src", data[col.id].iconUrl); -
icon.load({"item": this, "cntr": iconContainer}, function(e) { -
e.data.cntr.css("min-height", ""); -
var icon = $(this); -
window.setTimeout(function() { -
e.data.item.grid.setIconWidth(icon.width()); -
e.data.item.grid.addIconHeightToAvg(icon.height()); -
}, 100); -
e.data.item.callHeightChangeProc(); -
}); -
icon.addClass("icon"); -
iconContainer.append(icon); -
cont.append(iconContainer); -
} -
// Build the caption -
if (data[col.id].caption) -
{ -
var caption = $(document.createElement("span")); -
caption.addClass("caption"); -
caption.html(data[col.id].caption); -
cont.append(caption); -
} }
-
// Insert the open/close arrow -
var arrow = $(document.createElement("span")); -
arrow.addClass("arrow"); -
if (this.item.canHaveChildren)
-
else {
-
arrow.addClass(this.item.opened ? "opened" : "closed"); -
arrow.click(this, function(e) { -
$this = $(this); -
if (!e.data.opened) -
{ -
$this.addClass("opened"); -
$this.removeClass("closed"); -
} -
else -
{ -
$this.addClass("closed"); -
$this.removeClass("opened"); -
} -
e.data.setOpen(!e.data.opened); -
return false; // Don't bubble this event -
}); -
arrow.dblclick(function() {return false;});
-
cont.html(data[col.id]); }
-
td.append(arrow); -
// Insert the icon -
if (data[col.id].iconUrl) -
{ -
// Build the icon container -
var iconContainer = $(document.createElement("span")); -
iconContainer.addClass("iconContainer " + this.grid.uniqueId); -
// Default the iconContainer height to the average height - this attribute -
// is removed from the row as soon as the icon is loaded -
iconContainer.css("min-height", this.grid.avgIconHeight + "px"); -
// Build the icon -
var icon = $(document.createElement("img")); -
if (this.item.iconSize) -
{ -
icon.css("height", this.item.iconSize + "px"); -
icon.css("width", this.item.iconSize + "px"); //has to be done because of IE :-( -
} -
icon.attr("src", data[col.id].iconUrl); -
icon.load({"item": this, "col": td, "cntr": iconContainer}, function(e) { -
e.data.cntr.css("min-height", ""); -
var icon = $(this); -
window.setTimeout(function() { -
e.data.item.grid.setIconWidth(icon.width()); -
e.data.item.grid.addIconHeightToAvg(icon.height()); -
}, 100); -
e.data.item.callHeightChangeProc(); -
}); -
icon.addClass("icon"); -
iconContainer.append(icon); -
td.append(iconContainer); -
} -
// Build the caption -
if (data[col.id].caption) -
{ -
var caption = $(document.createElement("span")); -
caption.addClass("caption"); -
caption.html(data[col.id].caption); -
td.append(caption); -
}
-
cont.toggleClass("queued", false); } else {
-
td.html(data[col.id]);
-
cont.toggleClass("queued", true); }
-
td.toggleClass("queued", false); -
} -
else -
{ -
}td.toggleClass("queued", true); }
@@ -1344,24 +1537,13 @@
}
}
-function egwGridViewRow_checkOdd()
-{
-/* if (this.item && this.parentNode)
- {
-
// Update the "odd"-Class of the item -
var odd = this.item.isOdd(); -
if (this.isOdd === 0 || this.isOdd != odd) -
{ -
$(this.parentNode).toggleClass("odd", odd); -
this.isOdd = odd; -
} - }*/
-}
function egwGridViewRow_doSetViewArea()
{
- this.checkOdd();
- if (this.updated)
- {
-
this.updated = false; -
this.doUpdateData(false); - }
}
function egwGridViewRow_setOpen(_open)
@@ -1452,6 +1634,7 @@
{
this.domNode = $(document.createElement(“td”));
this.domNode.addClass(“egwGridView_spacer”);
- this.domNode.addClass(this.grid.getOuter().uniqueId + “_spacer_fullRow”);
this.domNode.css(“height”, (this.items.length * this.itemHeight) + “px”);
this.domNode.attr(“colspan”, this.columns.length);
@@ -1534,6 +1717,7 @@
container.containerClass = “row”;
container._columnClick = egwGridViewRow__columnClick;
container.td = null;
-
container.cont = null;
// Overwrite the inherited abstract functions
container.doInsertIntoDOM = egwGridViewFullRow_doInsertIntoDOM;
@@ -1558,25 +1742,14 @@var td = this.td = $(document.createElement(“td”));
td.attr(“colspan”, this.columns.length);
- td.addClass(“first”);
- td.addClass(“last”);
- var cont = this.cont = $(document.createElement(“div”));
- cont.addClass(“innerContainer”);
- cont.addClass(this.grid.getOuter().uniqueId + ‘_div_fullRow’);
- td.append(cont);
this.parentNode.append(td);
-
// Set the column width
-
if (EGW_GRID_VIEW_ROW_BORDER === false)
-
{
-
EGW_GRID_VIEW_ROW_BORDER = td.outerWidth() - td.width(); -
}
-
var width = 0;
-
for (var i = 0; i < this.columns.length; i++)
-
{
-
width += this.columns[i].drawnWidth;// - EGW_GRID_VIEW_ROW_BORDER; -
}
-
td.css(“width”, width - EGW_GRID_VIEW_ROW_BORDER);
-
this.doUpdateData(true);
this.checkViewArea();
@@ -1584,7 +1757,7 @@
function egwGridViewFullRow_doUpdateData(_immediate)
{
- this.td.empty();
-
this.cont.empty();
if (this.item.caption)
{
@@ -1596,14 +1769,14 @@
var indentation = $(document.createElement(“span”));
indentation.addClass(“indentation”);
indentation.css(“width”, (depth * 20) + “px”);
-
this.td.append(indentation);
-
this.cont.append(indentation); } // Insert the caption var caption = $(document.createElement("span")); caption.addClass("caption"); caption.html(this.item.caption);
-
this.td.append(caption);
-
this.cont.append(caption);}
// If the call is not from inside the doInsertIntoDOM function, we have to
Modified: trunk/phpgwapi/js/egw_action/test/grid.css
URL: http://www.egroupware.org/viewvc/egroupware/trunk/phpgwapi/js/egw_action/test/grid.css?rev=34222&r1=34221&r2=34222&view=diff
— trunk/phpgwapi/js/egw_action/test/grid.css (original)
+++ trunk/phpgwapi/js/egw_action/test/grid.css Fri Mar 18 19:04:56 2011
@@ -14,7 +14,7 @@
border-collapse: collapse;
}
-.egwGridView_outer td.queued {
+.egwGridView_outer div.innerContainer.queued {
background-image: url(imgs/ajax-loader.gif);
background-position: center;
background-repeat: no-repeat;
@@ -59,13 +59,17 @@
.egwGridView_grid td {
border-right: 1px solid silver;
- border-bottom: 1px solid #e0e0e0;
padding: 2px 3px 2px 4px;
margin: 0;
- border-bottom: 1px solid #e0e0e0;
-}
-.egwGridView_grid td.last {
- border-right-width: 0;
+}
+.egwGridView_outer th div.innerContainer,
+.egwGridView_grid td div.innerContainer {
- margin: 0;
- padding: 0;
- display: block;
- overflow: hidden;
}
.egwGridView_grid tr.fullRow {
@@ -160,6 +164,19 @@
background-repeat: repeat-x;
}
+.egwGridView_outer thead th:hover {
- background-color: #F0F0F0;
+}
+.egwGridView_outer thead th:active {
- background-color: #D0D0D0;
- border-left: 1px solid gray;
- border-top: 1px solid gray;
- border-right: 1px solid silver;
- border-bottom: 1px solid silver;
+}
.egwGridView_outer thead th.optcol {
padding: 0;
text-align: center;
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs