@qooxdoo/framework
Version:
The JS Framework for Coders
169 lines (132 loc) • 4.04 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2006 STZ-IDA, Germany, http://www.stz-ida.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Til Schneider (til132)
************************************************************************ */
/**
* The default data cell renderer.
*/
qx.Class.define("qx.ui.table.cellrenderer.Default",
{
extend : qx.ui.table.cellrenderer.Abstract,
/*
*****************************************************************************
STATICS
*****************************************************************************
*/
statics :
{
STYLEFLAG_ALIGN_RIGHT : 1,
STYLEFLAG_BOLD : 2,
STYLEFLAG_ITALIC : 4,
_numberFormat : null
},
/*
*****************************************************************************
PROPERTIES
*****************************************************************************
*/
properties :
{
/**
* Whether the alignment should automatically be set according to the cell value.
* If true numbers will be right-aligned.
*/
useAutoAlign :
{
check : "Boolean",
init : true
}
},
/*
*****************************************************************************
MEMBERS
*****************************************************************************
*/
members :
{
/**
* Determines the styles to apply to the cell
*
* @param cellInfo {Map} cellInfo of the cell
* See {@link qx.ui.table.cellrenderer.Abstract#createDataCellHtml}.
* @return {Integer} the sum of any of the STYLEFLAGS defined below
*/
_getStyleFlags : function(cellInfo)
{
if (this.getUseAutoAlign())
{
if (typeof cellInfo.value == "number") {
return qx.ui.table.cellrenderer.Default.STYLEFLAG_ALIGN_RIGHT;
}
}
return 0;
},
// overridden
_getCellClass : function(cellInfo)
{
var cellClass = this.base(arguments, cellInfo);
if (!cellClass) {
return "";
}
var stylesToApply = this._getStyleFlags(cellInfo);
if (stylesToApply & qx.ui.table.cellrenderer.Default.STYLEFLAG_ALIGN_RIGHT) {
cellClass += " qooxdoo-table-cell-right";
}
if (stylesToApply & qx.ui.table.cellrenderer.Default.STYLEFLAG_BOLD) {
cellClass += " qooxdoo-table-cell-bold";
}
if (stylesToApply & qx.ui.table.cellrenderer.Default.STYLEFLAG_ITALIC) {
cellClass += " qooxdoo-table-cell-italic";
}
return cellClass;
},
// overridden
_getContentHtml : function(cellInfo) {
return qx.bom.String.escape(this._formatValue(cellInfo));
},
/**
* Formats a value.
*
* @param cellInfo {Map} A map containing the information about the cell to
* create. This map has the same structure as in
* {@link qx.ui.table.cellrenderer.Abstract#createDataCellHtml}.
* @return {String} the formatted value.
*/
_formatValue : function(cellInfo)
{
var value = cellInfo.value;
var res;
if (value == null) {
return "";
}
if (typeof value == "string") {
return value;
}
else if (typeof value == "number")
{
if (!qx.ui.table.cellrenderer.Default._numberFormat)
{
qx.ui.table.cellrenderer.Default._numberFormat = new qx.util.format.NumberFormat();
qx.ui.table.cellrenderer.Default._numberFormat.setMaximumFractionDigits(2);
}
res = qx.ui.table.cellrenderer.Default._numberFormat.format(value);
}
else if (value instanceof Date)
{
res = qx.util.format.DateFormat.getDateInstance().format(value);
}
else
{
res = value.toString();
}
return res;
}
}
});