src/cm/media/js/lib/yui/yui_3.10.3/build/datatable-table/datatable-table-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('datatable-table', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
View class responsible for rendering a `<table>` from provided data.  Used as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
the default `view` for `Y.DataTable.Base` and `Y.DataTable` classes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
@module datatable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
@submodule datatable-table
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
@since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
var toArray = Y.Array,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    YLang   = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    fromTemplate = YLang.sub,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    isArray    = YLang.isArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    isFunction = YLang.isFunction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
View class responsible for rendering a `<table>` from provided data.  Used as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
the default `view` for `Y.DataTable.Base` and `Y.DataTable` classes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
@class TableView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
@namespace DataTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
@extends View
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
@since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
Y.namespace('DataTable').TableView = Y.Base.create('table', Y.View, [], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    The HTML template used to create the caption Node if the `caption`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    attribute is set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    @property CAPTION_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    @default '<caption class="{className}"/>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    CAPTION_TEMPLATE: '<caption class="{className}"/>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    The HTML template used to create the table Node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    @property TABLE_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    @default '<table cellspacing="0" class="{className}"/>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    TABLE_TEMPLATE  : '<table cellspacing="0" class="{className}"/>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    The object or instance of the class assigned to `bodyView` that is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    responsible for rendering and managing the table's `<tbody>`(s) and its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    @property body
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    @default undefined (initially unset)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    //body: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    The object or instance of the class assigned to `footerView` that is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    responsible for rendering and managing the table's `<tfoot>` and its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    @property foot
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    @default undefined (initially unset)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    //foot: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    The object or instance of the class assigned to `headerView` that is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    responsible for rendering and managing the table's `<thead>` and its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    @property head
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    @default undefined (initially unset)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    //head: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    //-----------------------------------------------------------------------//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    // Public methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    //-----------------------------------------------------------------------//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    Returns the `<td>` Node from the given row and column index.  Alternately,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    the `seed` can be a Node.  If so, the nearest ancestor cell is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    If the `seed` is a cell, it is returned.  If there is no cell at the given
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    coordinates, `null` is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    Optionally, include an offset array or string to return a cell near the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    cell identified by the `seed`.  The offset can be an array containing the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    number of rows to shift followed by the number of columns to shift, or one
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    of "above", "below", "next", or "previous".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    <pre><code>// Previous cell in the previous row
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    var cell = table.getCell(e.target, [-1, -1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    // Next cell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    var cell = table.getCell(e.target, 'next');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    var cell = table.getCell(e.taregt, [0, 1];</pre></code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    This is actually just a pass through to the `bodyView` instance's method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    by the same name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    @method getCell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
    @param {Number[]|Node} seed Array of row and column indexes, or a Node that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        is either the cell itself or a descendant of one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    @param {Number[]|String} [shift] Offset by which to identify the returned
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        cell Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    @return {Node}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    getCell: function (/* seed, shift */) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        return this.body && this.body.getCell &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            this.body.getCell.apply(this.body, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    Returns the generated CSS classname based on the input.  If the `host`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    attribute is configured, it will attempt to relay to its `getClassName`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    or use its static `NAME` property as a string base.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    If `host` is absent or has neither method nor `NAME`, a CSS classname
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    will be generated using this class's `NAME`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    @method getClassName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    @param {String} token* Any number of token strings to assemble the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        classname from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    @return {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    getClassName: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        // TODO: add attr with setter for host?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        var host = this.host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            NAME = (host && host.constructor.NAME) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
                    this.constructor.NAME;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
        if (host && host.getClassName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
            return host.getClassName.apply(host, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            return Y.ClassNameManager.getClassName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
                .apply(Y.ClassNameManager,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
                       [NAME].concat(toArray(arguments, 0, true)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    Relays call to the `bodyView`'s `getRecord` method if it has one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
    @method getRecord
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    @param {String|Node} seed Node or identifier for a row or child element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    @return {Model}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    getRecord: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        return this.body && this.body.getRecord &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            this.body.getRecord.apply(this.body, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    Returns the `<tr>` Node from the given row index, Model, or Model's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    `clientId`.  If the rows haven't been rendered yet, or if the row can't be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    found by the input, `null` is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    This is actually just a pass through to the `bodyView` instance's method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    by the same name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
    @method getRow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    @param {Number|String|Model} id Row index, Model instance, or clientId
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
    @return {Node}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    getRow: function (/* id */) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        return this.body && this.body.getRow &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            this.body.getRow.apply(this.body, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    //-----------------------------------------------------------------------//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    // Protected and private methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    //-----------------------------------------------------------------------//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    Updates the table's `summary` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    @method _afterSummaryChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    @param {EventHandle} e The change event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    _afterSummaryChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        this._uiSetSummary(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    Updates the table's `<caption>`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    @method _afterCaptionChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    @param {EventHandle} e The change event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    _afterCaptionChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
        this._uiSetCaption(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    Updates the table's width.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    @method _afterWidthChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    @param {EventHandle} e The change event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    _afterWidthChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
        this._uiSetWidth(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    Attaches event subscriptions to relay attribute changes to the child Views.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    @method _bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
    _bindUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        var relay;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        if (!this._eventHandles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            relay = Y.bind('_relayAttrChange', this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            this._eventHandles = this.after({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
                columnsChange  : relay,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
                modelListChange: relay,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
                summaryChange  : Y.bind('_afterSummaryChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                captionChange  : Y.bind('_afterCaptionChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                widthChange    : Y.bind('_afterWidthChange', this)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    Creates the `<table>`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    @method _createTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    @return {Node} The `<table>` node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    _createTable: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        return Y.Node.create(fromTemplate(this.TABLE_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            className: this.getClassName('table')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        })).empty();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    Calls `render()` on the `bodyView` class instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    @method _defRenderBodyFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    @param {EventFacade} e The renderBody event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    _defRenderBodyFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        e.view.render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    Calls `render()` on the `footerView` class instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    @method _defRenderFooterFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    @param {EventFacade} e The renderFooter event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    _defRenderFooterFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        e.view.render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    Calls `render()` on the `headerView` class instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    @method _defRenderHeaderFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
    @param {EventFacade} e The renderHeader event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    _defRenderHeaderFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
        e.view.render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    Renders the `<table>` and, if there are associated Views, the `<thead>`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    `<tfoot>`, and `<tbody>` (empty until `syncUI`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    Assigns the generated table nodes to the `tableNode`, `_theadNode`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    `_tfootNode`, and `_tbodyNode` properties.  Assigns the instantiated Views
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
    to the `head`, `foot`, and `body` properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    @method _defRenderTableFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    @param {EventFacade} e The renderTable event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    _defRenderTableFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        var container = this.get('container'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            attrs = this.getAttrs();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        if (!this.tableNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            this.tableNode = this._createTable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        attrs.host  = this.get('host') || this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        attrs.table = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        attrs.container = this.tableNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        this._uiSetCaption(this.get('caption'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        this._uiSetSummary(this.get('summary'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        this._uiSetWidth(this.get('width'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        if (this.head || e.headerView) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
            if (!this.head) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                this.head = new e.headerView(Y.merge(attrs, e.headerConfig));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            this.fire('renderHeader', { view: this.head });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        if (this.foot || e.footerView) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
            if (!this.foot) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                this.foot = new e.footerView(Y.merge(attrs, e.footerConfig));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
            this.fire('renderFooter', { view: this.foot });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        attrs.columns = this.displayColumns;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
        if (this.body || e.bodyView) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
            if (!this.body) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
                this.body = new e.bodyView(Y.merge(attrs, e.bodyConfig));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
            this.fire('renderBody', { view: this.body });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        if (!container.contains(this.tableNode)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
            container.append(this.tableNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        this._bindUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    Cleans up state, destroys child views, etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
    destructor: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
        if (this.head && this.head.destroy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
            this.head.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        delete this.head;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        if (this.foot && this.foot.destroy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
            this.foot.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
        delete this.foot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        if (this.body && this.body.destroy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            this.body.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
        delete this.body;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        if (this._eventHandles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            this._eventHandles.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            delete this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
        if (this.tableNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            this.tableNode.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    Processes the full column array, distilling the columns down to those that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    correspond to cell data columns.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
    @method _extractDisplayColumns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
    _extractDisplayColumns: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        var columns = this.get('columns'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            displayColumns = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        function process(cols) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
            var i, len, col;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            for (i = 0, len = cols.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                col = cols[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                if (isArray(col.children)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                    process(col.children);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                    displayColumns.push(col);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        if (columns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
            process(columns);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        Array of the columns that correspond to those with value cells in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
        data rows. Excludes colspan header columns (configured with `children`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
        @property displayColumns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
        @type {Object[]}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
        this.displayColumns = displayColumns;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    Publishes core events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
    @method _initEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    _initEvents: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        this.publish({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            // Y.bind used to allow late binding for method override support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            renderTable : { defaultFn: Y.bind('_defRenderTableFn', this) },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            renderHeader: { defaultFn: Y.bind('_defRenderHeaderFn', this) },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            renderBody  : { defaultFn: Y.bind('_defRenderBodyFn', this) },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            renderFooter: { defaultFn: Y.bind('_defRenderFooterFn', this) }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
    Constructor logic.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
    @method intializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
    @param {Object} config Configuration object passed to the constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    initializer: function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
        this.host = config.host;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        this._initEvents();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        this._extractDisplayColumns();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        this.after('columnsChange', this._extractDisplayColumns, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
    Relays attribute changes to the child Views.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
    @method _relayAttrChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
    @param {EventHandle} e The change event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
    @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
    _relayAttrChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        var attr = e.attrName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            val  = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        if (this.head) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            this.head.set(attr, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
        if (this.foot) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            this.foot.set(attr, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
        if (this.body) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
            if (attr === 'columns') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                val = this.displayColumns;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
            this.body.set(attr, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
    Creates the UI in the configured `container`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
    @method render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
    @return {TableView}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
    render: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
        if (this.get('container')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
            this.fire('renderTable', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                headerView  : this.get('headerView'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                headerConfig: this.get('headerConfig'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
                bodyView    : this.get('bodyView'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                bodyConfig  : this.get('bodyConfig'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                footerView  : this.get('footerView'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                footerConfig: this.get('footerConfig')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    Creates, removes, or updates the table's `<caption>` element per the input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
    value.  Empty values result in the caption being removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
    @method _uiSetCaption
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    @param {HTML} htmlContent The content to populate the table caption
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
    _uiSetCaption: function (htmlContent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
        var table   = this.tableNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            caption = this.captionNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        if (htmlContent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
            if (!caption) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                this.captionNode = caption = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                    fromTemplate(this.CAPTION_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                        className: this.getClassName('caption')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                    }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                table.prepend(this.captionNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
            caption.setHTML(htmlContent);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
        } else if (caption) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
            caption.remove(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
            delete this.captionNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
    Updates the table's `summary` attribute with the input value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
    @method _uiSetSummary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    _uiSetSummary: function (summary) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
        if (summary) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
            this.tableNode.setAttribute('summary', summary);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
            this.tableNode.removeAttribute('summary');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
    Sets the `boundingBox` and table width per the input value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
    @method _uiSetWidth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
    @param {Number|String} width The width to make the table
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
    _uiSetWidth: function (width) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
        var table = this.tableNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        // Table width needs to account for borders
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        table.setStyle('width', !width ? '' :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
            (this.get('container').get('offsetWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
             (parseInt(table.getComputedStyle('borderLeftWidth'), 10)||0) -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
             (parseInt(table.getComputedStyle('borderLeftWidth'), 10)||0)) +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
             'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        table.setStyle('width', width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
    Ensures that the input is a View class or at least has a `render` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    @method _validateView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    @param {View|Function} val The View class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    @return {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
    _validateView: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
        return isFunction(val) && val.prototype.render;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        Content for the `<table summary="ATTRIBUTE VALUE HERE">`.  Values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
        assigned to this attribute will be HTML escaped for security.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        @attribute summary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
        @type {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
        @default '' (empty string)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
        //summary: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
        HTML content of an optional `<caption>` element to appear above the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
        table.  Leave this config unset or set to a falsy value to remove the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
        caption.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        @attribute caption
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        @type HTML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
        @default undefined (initially unset)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        //caption: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
        Columns to include in the rendered table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
        This attribute takes an array of objects. Each object is considered a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
        data column or header cell to be rendered.  How the objects are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        translated into markup is delegated to the `headerView`, `bodyView`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        and `footerView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
        The raw value is passed to the `headerView` and `footerView`.  The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
        `bodyView` receives the instance's `displayColumns` array, which is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
        parsed from the columns array.  If there are no nested columns (columns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
        configured with a `children` array), the `displayColumns` is the same
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        as the raw value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        @attribute columns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
        @type {Object[]}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
        columns: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
            validator: isArray
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
        Width of the table including borders.  This value requires units, so
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
        `200` is invalid, but `'200px'` is valid.  Setting the empty string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
        (the default) will allow the browser to set the table width.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        @attribute width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
        @type {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        @default ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
        width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
            value: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
            validator: YLang.isString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        An instance of this class is used to render the contents of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
        `<thead>`&mdash;the column headers for the table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
        The instance of this View will be assigned to the instance's `head`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
        property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
        It is not strictly necessary that the class function assigned here be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
        a View subclass.  It must however have a `render()` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        @attribute headerView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
        @type {Function|Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
        @default Y.DataTable.HeaderView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
        headerView: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
            value: Y.DataTable.HeaderView,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
            validator: '_validateView'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
        Configuration overrides used when instantiating the `headerView`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
        instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
        @attribute headerConfig
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
        @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
        //headerConfig: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
        An instance of this class is used to render the contents of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
        `<tfoot>` (if appropriate).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        The instance of this View will be assigned to the instance's `foot`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
        property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
        It is not strictly necessary that the class function assigned here be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
        a View subclass.  It must however have a `render()` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
        @attribute footerView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
        @type {Function|Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
        footerView: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
            validator: '_validateView'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        Configuration overrides used when instantiating the `footerView`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
        instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
        @attribute footerConfig
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
        @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
        //footerConfig: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
        An instance of this class is used to render the contents of the table's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
        `<tbody>`&mdash;the data cells in the table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
        The instance of this View will be assigned to the instance's `body`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
        property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        It is not strictly necessary that the class function assigned here be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
        a View subclass.  It must however have a `render()` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
        @attribute bodyView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
        @type {Function|Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
        @default Y.DataTable.BodyView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        bodyView: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
            value: Y.DataTable.BodyView,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
            validator: '_validateView'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
        Configuration overrides used when instantiating the `bodyView`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
        instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
        @attribute bodyConfig
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
        @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        @since 3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        //bodyConfig: {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
}, '3.10.3', {"requires": ["datatable-core", "datatable-head", "datatable-body", "view", "classnamemanager"]});