egroupware/etemplate/js/et2_dataview_view_container.js

95 lines
1.9 KiB
JavaScript

/**
* eGroupWare eTemplate2 - Class which contains the "row" base class
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package etemplate
* @subpackage dataview
* @link http://www.egroupware.org
* @author Andreas Stöckel
* @copyright Stylite 2011
* @version $Id$
*/
"use strict"
/*egw:uses
et2_dataview_interfaces;
*/
var et2_dataview_container = Class.extend({
init: function(_data, _invalidationElem) {
this._dataProvider = _data;
this._invalidationElem = _invalidationElem;
this._node = null;
},
setJNode: function(_node) {
// Replace the old node with the new one
if (this._node[0].parent)
{
this._node.replaceWith(_node);
}
this._node = _node;
},
getJNode: function() {
return this._node;
},
invalidate: function() {
this._invalidationElem.invalidate();
}
});
/**
* Returns the height of the container in pixels and zero if the element is not
* visible. The height is clamped to positive values.
* The browser switch is placed at this position as the getHeight function is one
* of the mostly called functions in the whole grid code and should stay
* quite fast.
*/
if ($j.browser.mozilla)
{
et2_dataview_container.prototype.getHeight = function()
{
if (this.node)
{
// Firefox sometimes provides fractional pixel values - we are
// forced to use those - we can obtain the fractional pixel height
// by using the window.getComputedStyle function
var compStyle = getComputedStyle(this._node, null);
if (compStyle)
{
var styleHeightStr = compStyle.getPropertyValue("height");
var height = parseFloat(styleHeightStr.substr(0, styleHeightStr.length - 2));
if (isNaN(height) || height < 1)
{
height = false;
}
}
return height;
}
return 0;
}
}
else
{
et2_dataview_container.prototype.getHeight = function()
{
if (this.node)
{
return this._node.offsetHeight;
}
return 0;
}
}