datatable-scroll-debug.js revision 76ca635d61eb3f9fb7c9d788a44fa8b1690aa138
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYUI.add('datatable-scroll', function(Y) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Extends DataTable base to enable x,y, and xy scrolling.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module datatable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule datatable-scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassvar YNode = Y.Node,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass YLang = Y.Lang,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass YUA = Y.UA,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass YgetClassName = Y.ClassNameManager.getClassName,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass DATATABLE = "datatable",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CLASS_HEADER = YgetClassName(DATATABLE, "hd"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CLASS_BODY = YgetClassName(DATATABLE, "bd"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CLASS_DATA = YgetClassName(DATATABLE, "data"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CLASS_SCROLLABLE = YgetClassName(DATATABLE, "scrollable"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CONTAINER_HEADER = '<div class="'+CLASS_HEADER+'"></div>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CONTAINER_BODY = '<div class="'+CLASS_BODY+'"></div>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_TABLE = '<table></table>';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Adds scrolling to DataTable.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class DataTableScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Plugin.Base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassfunction DataTableScroll() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass DataTableScroll.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.mix(DataTableScroll, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NS: "scroll",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NAME: "dataTableScroll",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ATTRS: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The width for the table. Set to a string (ex: "200px", "20em") if you want the table to scroll in the x direction.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute width
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @public
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type string
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass width: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: undefined,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass writeOnce: "initOnly"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The height for the table. Set to a string (ex: "200px", "20em") if you want the table to scroll in the y-direction.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute height
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @public
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type string
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass height: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: undefined,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass writeOnce: "initOnly"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The scrolling direction for the table.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type string
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _scroll: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //value: 'y',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass valueFn: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var w = this.get('width'),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass h = this.get('height');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (w && h) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return 'xy';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if (w) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return 'x';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if (h) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return 'y';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The hexadecimal colour value to set on the top-right of the table if a scrollbar exists.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute COLOR_COLUMNFILLER
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @public
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type string
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass COLOR_COLUMNFILLER: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: '#f2f2f2',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass validator: YLang.isString,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass setter: function(param) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this._headerContainerNode) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode.setStyle('backgroundColor', param);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.extend(DataTableScroll, Y.Plugin.Base, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The table node created in datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _parentTableNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _parentTableNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The THEAD node which resides within the table node created in datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _parentTheadNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _parentTheadNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The TBODY node which resides within the table node created in datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _parentTbodyNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _parentTbodyNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The TBODY Message node which resides within the table node created in datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _parentMsgNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _parentMsgNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The contentBox specified for the datatable in datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _parentContainer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _parentContainer: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The DIV node that contains all the scrollable elements (a table with a tbody on it)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _bodyContainerNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _bodyContainerNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The DIV node that contains a table with a THEAD in it (which syncs its horizontal scroll with the _bodyContainerNode above)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _headerContainerNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _headerContainerNode: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //--------------------------------------
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Methods
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //--------------------------------------
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function(config) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var dt = this.get("host");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer = dt.get('contentBox');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer.addClass(CLASS_SCROLLABLE);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._setUpNodes();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Set up Table Nodes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Set up methods to fire after host methods execute
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setUpNodes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setUpNodes: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("_addTableNode", this._setUpParentTableNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("_addTheadNode", this._setUpParentTheadNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("_addTbodyNode", this._setUpParentTbodyNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("_addMessageNode", this._setUpParentMessageNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //this.beforeHostMethod('renderUI', this._removeCaptionNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("renderUI", this.renderUI);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod("syncUI", this.syncUI);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this.get('_scroll') !== 'x') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod('_attachTheadThNode', this._attachTheadThNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.afterHostMethod('_attachTbodyTdNode', this._attachTbodyTdNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Stores the main &lt;table&gt; node provided by the host as a private property
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setUpParentTableNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setUpParentTableNode: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentTableNode = this.get('host')._tableNode;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Stores the main &lt;thead&gt; node provided by the host as a private property
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setUpParentTheadNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setUpParentTheadNode: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentTheadNode = this.get('host')._theadNode;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Stores the main &lt;tbody&gt; node provided by the host as a private property
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setUpParentTbodyNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setUpParentTbodyNode: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentTbodyNode = this.get('host')._tbodyNode;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Stores the main &lt;tbody&gt; message node provided by the host as a private property
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setUpParentMessageNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setUpParentMessageNode: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentMsgNode = this.get('host')._msgNode;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Renderer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Primary rendering method that takes the datatable rendered in
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * the host, and splits it up into two separate &lt;divs&gt; each containing two
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * separate tables (one containing the head and one containing the body).
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * This method fires after renderUI is called on datatable-base.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method renderUI
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @public
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass renderUI: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.Profiler.start('render');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._createBodyContainer();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._createHeaderContainer();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._setContentBoxDimensions();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.Profiler.stop('render');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //console.log(Y.Profiler.getReport("render"));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Post rendering method that is responsible for creating a column
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * filler, and performing width and scroll synchronization between the &lt;th&gt;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * elements and the &lt;td&gt; elements.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * This method fires after syncUI is called on datatable-base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method syncUI
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @public
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass syncUI: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.Profiler.start('sync');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._removeCaptionNode();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._syncWidths();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._syncScroll();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.Profiler.stop('sync');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //console.log(Y.Profiler.getReport("sync"));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Remove the caption created in base. Scrolling datatables dont support captions.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _removeCaptionNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _removeCaptionNode: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.get('host')._captionNode.remove();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.DataTable.Base.prototype.createCaption = function(v) {/*do nothing*/};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y.DataTable.Base.prototype._uiSetCaption = function(v) {/*do nothing*/};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Adjusts the width of the TH and the TDs to make sure that the two are in sync
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Implementation Details:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Compares the width of the TH liner div to the the width of the TD node. The TD liner width
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * is not actually used because the TD often stretches past the liner if the parent DIV is very
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * large. Measuring the TD width is more accurate.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Instead of measuring via .get('width'), 'clientWidth' is used, as it returns a number, whereas
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * 'width' returns a string, In IE6, 'clientWidth' is not supported, so 'offsetWidth' is used.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * 'offsetWidth' is not as accurate on Chrome,FF as 'clientWidth' - thus the need for the fork.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _syncWidths
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _syncWidths: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var th = YNode.all('#'+this._parentContainer.get('id')+ ' .' + CLASS_HEADER + ' table thead th'), //nodelist of all THs
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass td = YNode.one('#'+this._parentContainer.get('id')+ ' .' + CLASS_BODY + ' table .' + CLASS_DATA).get('firstChild').get('children'), //nodelist of all TDs in 1st row
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass i,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass len,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thWidth, tdWidth, thLiner, tdLiner,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ie = YUA.ie;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //stylesheet = new YStyleSheet('columnsSheet'),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //className;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /*
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass This for loop goes through the first row of TDs in the table.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass In a table, the width of the row is equal to the width of the longest cell in that column.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Therefore, we can observe the widths of the cells in the first row only, as they will be the same in all the cells below (in each respective column)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass for (i=0, len = th.size(); i<len; i++) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //className = '.'+td.item(i).get('classList')._nodes[0];
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //If a width has not been already set on the TD:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //if (td.item(i).get('firstChild').getStyle('width') === "auto") {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Get the liners for the TH and the TD cell in question
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thLiner = th.item(i).get('firstChild'); //TODO: use liner API - how? this is a node.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tdLiner = td.item(i).get('firstChild');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /*
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass If browser is not IE - get the clientWidth of the Liner div and the TD.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Note: We are not getting the width of the TDLiner, we are getting the width of the actual cell.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Why? Because when the table is set to auto width, the cell will grow to try to fit the table in its container.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass The liner could potentially be much smaller than the cell width.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TODO: Explore if there is a better way using only LINERS widths
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (!ie) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thWidth = thLiner.get('clientWidth'); //TODO: this should actually be done with getComputedStyle('width') but this messes up columns. Explore this option.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tdWidth = td.item(i).get('clientWidth');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //IE wasn't recognizing clientWidths, so we are using offsetWidths.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: should use getComputedStyle('width') because offsetWidth will screw up when padding is changed.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thWidth = thLiner.get('offsetWidth');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tdWidth = td.item(i).get('offsetWidth');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //thWidth = parseFloat(thLiner.getComputedStyle('width').split('px')[0]);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //tdWidth = parseFloat(td.item(i).getComputedStyle('width').split('px')[0]); /* TODO: for some reason, using tdLiner.get('clientWidth') doesn't work - why not? */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //if TH is bigger than TD, enlarge TD Liner
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (thWidth > tdWidth) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tdLiner.setStyle('width', (thWidth - 20 + 'px'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //thLiner.setStyle('width', (tdWidth - 20 + 'px'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //stylesheet.set(className,{'width': (thWidth - 20 + 'px')});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //if TD is bigger than TH, enlarge TH Liner
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if (tdWidth > thWidth) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thLiner.setStyle('width', (tdWidth - 20 + 'px'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tdLiner.setStyle('width', (tdWidth - 20 + 'px')); //if you don't set an explicit width here, when the width is set in line 368, it will auto-shrink the widths of the other cells (because they dont have an explicit width)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //stylesheet.set(className,{'width': (tdWidth - 20 + 'px')});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //stylesheet.enable();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Adds the approriate width to the liner divs of the TH nodes before they are appended to DOM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _attachTheadThNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _attachTheadThNode: function(o) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var w = o.column.get('width') || 'auto';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (w !== 'auto') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass o.th.get('firstChild').setStyles({width: w, overflow:'hidden'}); //TODO: use liner API but liner is undefined here (not created?)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return o;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Adds the appropriate width to the liner divs of the TD nodes before they are appended to DOM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _attachTbodyTdNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _attachTbodyTdNode: function(o) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var w = o.column.get('width') || 'auto';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (w !== 'auto') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass o.td.get('firstChild').setStyles({width: w, overflow: 'hidden'}); //TODO: use liner API but liner is undefined here (not created?)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //o.td.setStyles({'width': w, 'overflow': 'hidden'});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return o;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Creates the body DIV that contains all the data.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _createBodyContainer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _createBodyContainer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var bd = YNode.create(CONTAINER_BODY),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass onScrollFn = Y.bind("_onScroll", this);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._bodyContainerNode = bd;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._setStylesForTbody();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass bd.appendChild(this._parentTableNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer.appendChild(bd);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass bd.on('scroll', onScrollFn);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Creates the DIV that contains a &lt;table&gt; with all the headers.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _createHeaderContainer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _createHeaderContainer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var hd = YNode.create(CONTAINER_HEADER),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tbl = YNode.create(TEMPLATE_TABLE);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode = hd;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //hd.setStyle('backgroundColor',this.get("COLOR_COLUMNFILLER"));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._setStylesForThead();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tbl.appendChild(this._parentTheadNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass hd.appendChild(tbl);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer.prepend(hd);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Creates styles for the TBODY based on what type of table it is.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setStylesForTbody
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setStylesForTbody: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var dir = this.get('_scroll'),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass w = this.get('width') || "",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass h = this.get('height') || "",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass el = this._bodyContainerNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles = {width:"", height:h};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (dir === 'x') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //X-Scrolling tables should not have a Y-Scrollbar so overflow-y is hidden. THe width on x-scrolling tables must be set by user.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.overflowY = 'hidden';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.width = w;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if (dir === 'y') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Y-Scrolling tables should not have a X-Scrollbar so overflow-x is hidden. The width isn't neccessary because it can be auto.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.overflowX = 'hidden';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if (dir === 'xy') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.width = w;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //scrolling is set to 'null' - ie: width and height are not set. Don't have any type of scrolling.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.overflowX = 'hidden';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.overflowY = 'hidden';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass styles.width = w;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass el.setStyles(styles);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return el;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Creates styles for the THEAD based on what type of datatable it is.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setStylesForThead
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setStylesForThead: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var w = this.get('width') || "",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass el = this._headerContainerNode;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //if (dir !== 'y') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass el.setStyles({'width': w, 'overflow': 'hidden'});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Sets an auto width on the content box if it doesn't exist or if its a y-datatable.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setContentBoxDimensions
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setContentBoxDimensions: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this.get('_scroll') === 'y' || (!this.get('width'))) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer.setStyle('width', 'auto');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Scroll Syncing
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Ensures that scrolling is synced across the two tables
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _onScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _onScroll: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode.set('scrollLeft', this._bodyContainerNode.get('scrollLeft'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Syncs padding around scrollable tables, including Column header right-padding
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * and container width and height.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _syncScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _syncScroll : function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._syncScrollX();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._syncScrollY();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._syncScrollOverhang();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(YUA.opera) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Bug 1925874
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode.set('scrollLeft', this._bodyContainerNode.get('scrollLeft'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(!this.get("width")) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Bug 1926125
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass document.body.style += '';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Snaps container width for y-scrolling tables.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _syncScrollY
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _syncScrollY : function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var tBody = this._parentTbodyNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tBodyContainer = this._bodyContainerNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass w;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // X-scrolling not enabled
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(!this.get("width")) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Snap outer container width to content
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass w = (tBodyContainer.get('scrollHeight') > tBodyContainer.get('clientHeight')) ?
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // but account for y-scrollbar since it is visible
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass (tBody.get('parentNode').get('clientWidth') + 19) + "px" :
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // no y-scrollbar, just borders
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass (tBody.get('parentNode').get('clientWidth') + 2) + "px";
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentContainer.setStyle('width', w);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Snaps container height for x-scrolling tables in IE. Syncs message TBODY width.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Taken from YUI2 ScrollingDataTable.js
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _syncScrollX
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _syncScrollX: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var tBody = this._parentTbodyNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tBodyContainer = this._bodyContainerNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass w;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode.set('scrollLeft', this._bodyContainerNode.get('scrollLeft'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(!this.get('height') && (YUA.ie)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass w = (tBodyContainer.get('scrollWidth') > tBodyContainer.get('offsetWidth')) ?
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass (tBody.get('parentNode').get('offsetHeight') + 18) + "px" :
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tBody.get('parentNode').get('offsetHeight') + "px";
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tBodyContainer.setStyle('height', w);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (tBody.get('rows').length === 0) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentMsgNode.get('parentNode').setStyle('width', this._parentTheadNode.get('parentNode').get('offsetWidth')+'px');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._parentMsgNode.get('parentNode').setStyle('width', "");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Adds/removes Column header overhang as necesary.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Taken from YUI2 ScrollingDataTable.js
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _syncScrollOverhang
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _syncScrollOverhang: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var tBodyContainer = this._bodyContainerNode,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass padding = 1;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //when its both x and y scrolling
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if ((tBodyContainer.get('scrollHeight') > tBodyContainer.get('clientHeight')) || (tBodyContainer.get('scrollWidth') > tBodyContainer.get('clientWidth'))) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass padding = 18;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._setOverhangValue(padding);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //After the widths have synced, there is a wrapping issue in the headerContainer in IE6. The header does not span the full
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //length of the table (does not cover all of the y-scrollbar). By adding this line in when there is a y-scroll, the header will span correctly.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: this should not really occur on this.get('_scroll') === y - it should occur when scrollHeight > clientHeight, but clientHeight is not getting recognized in IE6?
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (YUA.ie !== 0 && this.get('_scroll') === 'y' && this._bodyContainerNode.get('scrollHeight') > this._bodyContainerNode.get('offsetHeight'))
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._headerContainerNode.setStyle('width', this._parentContainer.get('width'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Sets Column header overhang to given width.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Taken from YUI2 ScrollingDataTable.js with minor modifications
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setOverhangValue
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param nBorderWidth {Number} Value of new border for overhang.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _setOverhangValue: function(borderWidth) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var host = this.get('host'),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass cols = host.get('columnset').get('definitions'),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //lastHeaders = cols[cols.length-1] || [],
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass len = cols.length,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value = borderWidth + "px solid " + this.get("COLOR_COLUMNFILLER"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass children = YNode.all('#'+this._parentContainer.get('id')+ ' .' + CLASS_HEADER + ' table thead th');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass children.item(len-1).setStyle('borderRight', value);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.namespace("Plugin").DataTableScroll = DataTableScroll;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}, '@VERSION@' ,{requires:['datatable-base','plugin','stylesheet']});