Author: nathangray
New Revision: 55312
URL: http://svn.stylite.de/viewvc/egroupware?rev=55312&view=rev
Log:
Allow gridview / nextmatch columns to be disabled and not show as options in the column list by sending something from the server. Previously was only parsed & disabled on first load.
eg: setting the column disabled=@no_column, then setting no_column=true in the get_rows response to disable it.
Note: to re-enable the column ,you must send no_column=false
Modified:
trunk/etemplate/js/et2_dataview_model_columns.js
trunk/etemplate/js/et2_extension_nextmatch.js
trunk/etemplate/js/et2_extension_nextmatch_controller.js
trunk/etemplate/js/et2_widget_grid.js
— trunk/etemplate/js/et2_dataview_model_columns.js (original)
+++ trunk/etemplate/js/et2_dataview_model_columns.js Tue Mar 8 18:16:32 2016
@@ -21,6 +21,7 @@
var ET2_COL_VISIBILITY_VISIBLE = 1;
var ET2_COL_VISIBILITY_INVISIBLE = 2;
var ET2_COL_VISIBILITY_ALWAYS_NOSELECT = 3;
+var ET2_COL_VISIBILITY_DISABLED = 4;
/**
- Class which stores the data of a single column.
@@ -251,7 +252,9 @@
result.push({
“id”: this.columns[i].id,
“width”: this.getColumnWidth(i),
@@ -272,6 +275,7 @@
result[this.columns[i].id] = {
“caption”: this.columns[i].caption,
“enabled”: (this.columns[i].visibility != ET2_COL_VISIBILITY_ALWAYS) &&
@@ -327,7 +331,9 @@
for (var i = 0; i < this.columns.length; i++)
{
var col = this.columns[i];
-
if (col.visibility !== ET2_COL_VISIBILITY_INVISIBLE &&
-
col.visibility !== ET2_COL_VISIBILITY_DISABLED
-
)
{
// Some bounds sanity checking
if(col.fixedWidth > tw || col.fixedWidth < 0)
@@ -356,7 +362,9 @@
{
var w = 0;
var col = this.columns[i];
@@ -395,7 +403,8 @@
// Pick the first relative column and use it
for(columnIndex = 0; columnIndex < this.columns.length; columnIndex++)
{
— trunk/etemplate/js/et2_extension_nextmatch.js (original)
+++ trunk/etemplate/js/et2_extension_nextmatch.js Tue Mar 8 18:16:32 2016
@@ -850,9 +850,9 @@
for(var i = 0; i < _row.length; i++)
{
colName = ‘’;
@@ -873,14 +873,14 @@
}
// Resets field visibility too
_row[i].widget._getColumnName();
@@ -907,12 +907,12 @@
{
if(columnDisplay[j] == colName)
{
@@ -1047,12 +1047,18 @@
“widget”: _row[x].widget
},_colData[x]);
-
var visibility = (!_colData[x] || _colData[x].visible) ?
-
ET2_COL_VISIBILITY_VISIBLE :
-
ET2_COL_VISIBILITY_INVISIBLE;
-
if(_colData[x].disabled && _colData[x].disabled !=='' &&
-
this.getArrayMgr("content").parseBoolExpression(_colData[x].disabled))
-
{
-
visibility = ET2_COL_VISIBILITY_DISABLED;
-
}
columnData[x] = {
"id": "col_" + x,
"caption": this._genColumnCaption(_row[x].widget),
-
"visibility": (!_colData[x] || _colData[x].disabled) ?
-
ET2_COL_VISIBILITY_INVISIBLE : ET2_COL_VISIBILITY_VISIBLE,
@@ -1142,7 +1148,7 @@
columnWidgets[x] = _row[x].widget;
}
// Pass along column alignment
@@ -1295,8 +1301,9 @@
{
var col = columnMgr.columns[i];
var widget = this.columns[i].widget;
-
-
if(col.caption && col.visibility !== ET2_COL_VISIBILITY_ALWAYS_NOSELECT &&
-
col.visibility !== ET2_COL_VISIBILITY_DISABLED)
{
columns[col.id] = col.caption;
if(col.visibility == ET2_COL_VISIBILITY_VISIBLE) columns_selected.push(col.id);
@@ -1369,7 +1376,8 @@
for (var i = 0; i < columnMgr.columns.length; i++)
{
var col = columnMgr.columns[i];
— trunk/etemplate/js/et2_extension_nextmatch_controller.js (original)
+++ trunk/etemplate/js/et2_extension_nextmatch_controller.js Tue Mar 8 18:16:32 2016
@@ -581,6 +581,27 @@
}
}
}
-
// Might be trying to disable a column
-
var col_refresh = false;
-
for(var column_index = 0; column_index < nm.columns.length; column_index++)
-
{
-
if(typeof nm.columns[column_index].disabled === 'string' &&
-
nm.columns[column_index].disabled[0] === '@')
-
{
-
col_refresh = true;
-
nm.dataview.columnMgr.getColumnById('col_'+column_index)
-
.set_visibility(
-
mgr.parseBoolExpression(nm.columns[column_index].disabled) ?
-
ET2_COL_VISIBILITY_DISABLED :
-
ET2_COL_VISIBILITY_VISIBLE
-
);
-
}
-
}
-
if(col_refresh)
-
{
-
nm.dataview.columnMgr.updated = true;
-
nm.dataview._updateColumns();
-
}
// If we're doing an autorefresh and the count decreases, preserve the
// selection or it will be lost when the grid rows are shuffled. Increases
— trunk/etemplate/js/et2_widget_grid.js (original)
+++ trunk/etemplate/js/et2_widget_grid.js Tue Mar 8 18:16:32 2016
@@ -107,12 +107,16 @@
// Initialize the cell description objects
for (var x = 0; x < w; x++)
{
-
// Some columns (nm) we do not parse into a boolean
-
var col_disabled = typeof _colData[x].disabled == 'boolean' ?
-
_colData[x].disabled :
-
this.getArrayMgr("content").parseBoolExpression(_colData[x].disabled);
cells[y][x] = {
"td": null,
"widget": null,
"colData": _colData[x],
"rowData": _rowData[y],
-
"disabled": col_disabled || _rowData[y].disabled,
"class": _colData[x]["class"],
"colSpan": 1,
"autoColSpan": false,
@@ -171,10 +175,22 @@
},
_fetchRowColData: function(columns, rows, colData, rowData) {
-
// Some things cannot be done inside a nextmatch - nm will do the expansion later
-
var nm = false;
-
var widget = this;
-
while(!nm && widget != this.getRoot())
-
{
-
nm = (widget._type == 'nextmatch');
-
widget = widget.getParent();
-
}
-
// Parse the columns tag
et2_filteredNodeIterator(columns, function(node, nodeName) {
var colDataEntry = this._getColDataEntry();
-
// This cannot be done inside a nm, it will expand it later
-
colDataEntry["disabled"] = nm ?
-
et2_readAttrWithDefault(node, "disabled", "") :
-
this.getArrayMgr("content")
.parseBoolExpression(et2_readAttrWithDefault(node, "disabled", ""));
if (nodeName == "column")
{
@@ -254,12 +270,6 @@
// Old etemplate checked first two widgets, or first two box children
// This cannot be done inside a nextmatch - nm will do the expansion later
var nm = false;
-
var widget = this;
-
while(!nm && widget != this.getRoot())
-
{
-
nm = (widget._type == 'nextmatch');
-
widget = widget.getParent();
-
}
if(nm)
{
// No further checks for repeated rows
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://makebettercode.com/inteldaal-eval
eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs