datatable-base.js revision 8b1094e0b76f6c83d6192d71fbfe3c8ea08d9922
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CLASS_COLUMNS = YgetClassName(DATATABLE, "columns"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_THEAD = '<thead class="'+CLASS_COLUMNS+'"></thead>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_TBODY = '<tbody class="'+CLASS_DATA+'"></tbody>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_TH = '<th id="{id}" rowspan="{rowspan}" colspan="{colspan}" class="{classnames}" abbr="{abbr}"><div class="'+CLASS_LINER+'">{value}</div></th>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_TD = '<td headers="{headers}" class="{classnames}"><div class="'+CLASS_LINER+'">{value}</div></td>',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TEMPLATE_MSG = '<tbody class="'+CLASS_MSG+'"></tbody>';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The Column class defines and manages attributes of Columns for DataTable.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class Column
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Widget
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Column.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass// STATIC PROPERTIES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Class name.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NAME
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @value "column"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass// ATTRIBUTES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Unique internal identifier, used to stamp ID on TH element.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute id
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass User-supplied identifier. Defaults to id.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute key
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Points to underlying data field (for sorting or formatting, for
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass example). Useful when column doesn't hold any data itself, but is just
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass a visual representation of data from another column or record field.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Defaults to key.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute field
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @default (column key)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Display label for column header. Defaults to key.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute label
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Array of child column definitions (for nested headers).
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute children
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @default null
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass TH abbr attribute.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute abbr
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: support custom classnames
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // TH CSS classnames
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Formating template string or function for cells in this column.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Function formatters receive a single object (described below) and are
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass expected to output the `innerHTML` of the cell.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass String templates can include markup and {placeholder} tokens to be
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass filled in from the object passed to function formatters.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute formatter
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String|Function}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Object} data Data relevant to the rendering of this cell
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {String} data.classnames CSS classes to add to the cell
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Column} data.column This Column instance
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Object} data.data The raw object data from the Record
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {String} data.field This Column's "field" attribute value
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {String} data.headers TH ids to reference in the cell's
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass "headers" attribute
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Record} data.record The Record instance for this row
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Number} data.rowindex The index for this row
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Node} data.tbody The TBODY Node that will house the cell
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Node} data.tr The row TR Node that will house the cell
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @param {Any} data.value The raw Record data for this cell
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass The default markup to display in cells that have no corresponding record
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass data or content from formatters.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @attribute emptyCellValue
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //requires datatable-sort
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //sortOptions:defaultDir, sortFn, field
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: support editable columns
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Column editor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: support resizeable columns
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO: support setting widths
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // requires datatable-colresize
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // ATTRIBUTE HELPERS
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Return ID for instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defaultId
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _defaultId: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Return key for instance. Defaults to ID if one was not provided.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defaultKey
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Return field for instance. Defaults to key if one was not provided.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defaultField
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Return label for instance. Defaults to key if one was not provided.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defaultLabel
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Updates the UI if changes are made to abbr.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _afterAbbrChange
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param e {Event} Custom event for the attribute change.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _afterAbbrChange: function (e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // PROPERTIES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Reference to Column's current position index within its Columnset's keys
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * array, if applicable. This property only applies to non-nested and bottom-
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * level child Columns. Value is set by Columnset code.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property keyIndex
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Number}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Array of TH IDs associated with this column, for TD "headers" attribute.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Value is set by Columnset code
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property headers
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {String[]}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Number of cells the header spans. Value is set by Columnset code.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property colSpan
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Number}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default 1
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Number of rows the header spans. Value is set by Columnset code.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property rowSpan
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Number}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default 1
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Column's parent Column instance, if applicable. Value is set by Columnset
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property parent
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Column}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The Node reference to the associated TH element.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property thNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Node}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The Node reference to the associated liner element.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property thLinerNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Node}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass thLinerNode: null,*/
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Initializer.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method initializer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param config {Object} Config object.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Destructor.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method destructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass destructor: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Returns classnames for Column.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _getClassnames
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _getClassnames: function () {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return Y.ClassNameManager.getClassName(COLUMN, this.get("id"));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /*var allClasses;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Add CSS classes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(lang.isString(oColumn.className)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Single custom class
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses = [oColumn.className];
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass else if(lang.isArray(oColumn.className)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Array of custom classes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses = oColumn.className;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // no custom classes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses = [];
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Hook for setting width with via dynamic style uses key since ID is too disposable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = this.getId() + "-col-" +oColumn.getSanitizedKey();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Column key - minus any chars other than "A-Z", "a-z", "0-9", "_", "-", ".", or ":"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = "yui-dt-col-" +oColumn.getSanitizedKey();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var isSortedBy = this.get("sortedBy") || {};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.key === isSortedBy.key) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = isSortedBy.dir || '';
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.hidden) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = DT.CLASS_HIDDEN;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.selected) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = DT.CLASS_SELECTED;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.sortable) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = DT.CLASS_SORTABLE;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Resizeable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.resizeable) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = DT.CLASS_RESIZEABLE;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(oColumn.editor) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses[allClasses.length] = DT.CLASS_EDITABLE;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Addtnl classes, including First/Last
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(aAddClasses) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass allClasses = allClasses.concat(aAddClasses);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return allClasses.join(' ');*/
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Syncs UI to intial state.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method syncUI
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass syncUI: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Updates abbr.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _uiSetAbbr
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param val {String} New abbr.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The Columnset class defines and manages a collection of Columns.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class Columnset
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Columnset.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass// STATIC PROPERTIES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Class name.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NAME
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @value "columnset"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // ATTRIBUTES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute definitions
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Array of column definitions that will populate this Columnset.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Array
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // ATTRIBUTE HELPERS
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setDefinitions
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Clones definitions before setting.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param definitions {Array} Array of column definitions.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return Array
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // PROPERTIES
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Top-down tree representation of Column hierarchy. Used to create DOM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property tree
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Column[]}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Hash of all Columns by ID.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property idHash
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Hash of all Columns by key.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property keyHash
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Array of only Columns that are meant to be displayed in DOM.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property keys
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Column[]}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Initializer. Generates all internal representations of the collection of
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method initializer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param config {Object} Config object.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // DOM tree representation of all Columns
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Hash of all Columns by ID
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Hash of all Columns by key
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Flat representation of only Columns that are meant to display data
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Original definitions
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Internal recursive function to define Column instances
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass function parseColumns(depth, currentDefinitions, parent) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // One level down
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Create corresponding dom node if not already there for this depth
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Parse each node at this depth for attributes and any children
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass for(; i<len; ++i) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass currentDefinition = YLang.isString(currentDefinition) ? {key:currentDefinition} : currentDefinition;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Instantiate a new Column for each node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Cross-reference Column ID back to the original object literal definition
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Add the new Column to the hash
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Assign its parent as an attribute, if applicable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // The Column has descendants
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass self._cascadePropertiesToChildren(column, currentChildren);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // The children themselves must also be parsed for Column instances
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // This Column does not have any children
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Default is already 1
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //column.colSpan = 1;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Add the Column to the top-down dom tree
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Parse out Column instances from the array of object literals
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Save to the Columnset instance
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Destructor.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method destructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass destructor: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // COLUMN HELPERS
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Cascade certain properties to children if not defined on their own.
for(; i<len; ++i) {
for(; i<len; ++i) {
_setRowSpans: function() {
col;
for(; i<len; ++i) {
tmpRowDepth++;
tmpRowDepth--;
tmpRowDepth++;
tmpRowDepth--;
_setHeaders: function() {
for(; i<len; ++i) {
headers = [];
getColumn: function() {
ATTRS: {
columnset: {
recordset: {
summary: {
caption: {
trTemplate: {
HTML_PARSER: {
* @default '<th id="{id}" rowspan="{rowspan}" colspan="{colspan}" class="{classnames}" abbr="{abbr}"><div class="'+CLASS_LINER+'">{value}</div></th>'
* @default '<td headers="{headers}" class="{classnames}"><div class="yui3-datatable-liner">{value}</div></td>'
_theadNode: null,
_tbodyNode: null,
_msgNode: null,
_afterColumnsetChange: function (e) {
return rs;
_afterRecordsetChange: function (e) {
_afterRecordsChange: function (e) {
_afterSummaryChange: function (e) {
_afterCaptionChange: function (e) {
destructor: function() {
renderUI: function() {
if (!this._tableNode) {
return this._tableNode;
for(; i<len; ++i) {
this._colgroupNode = tableNode.insertBefore(Ycreate(allCols.join("")), tableNode.get("firstChild"));
return this._colgroupNode;
if(tableNode) {
return this._theadNode;
return this._tbodyNode;
return this._msgNode;
bindUI: function() {
this.after({
syncUI: function() {
if (method) {
for(; i<len; ++i) {
this._addTheadTrNode({
this._attachTheadTrNode(o);
if(isFirst) {
if(isLast) {
for(; i<len; ++i) {
return tr;
_attachTheadTrNode: function(o) {
_addTheadThNode: function(o) {
this._attachTheadThNode(o);
_createTheadThNode: function(o) {
_attachTheadThNode: function(o) {
var self = this,
oldTbody = null;
o.columns = [];
o.columns[i] = {
o.rowindex = i;
_addTbodyTrNode: function(o) {
this._attachTbodyTrNode(o);
_createTbodyTrNode: function(o) {
this._addTbodyTdNode(o);
return o.tr;
_attachTbodyTrNode: function(o) {
if(isOdd) {
_addTbodyTdNode: function(o) {
this._attachTbodyTdNode(o);
delete o.td;
_createTbodyTdNode: function(o) {
_attachTbodyTdNode: function(o) {
formatDataCell: function (o) {
_initRecordset: function () {