1 DataTable Release Notes
5 * Paginator now updates recordOffset to the starting index of the last page when
6 totalRecords is set to a size smaller than the current recordOffset.
8 * Assorted pagination and scrolling bugs.
10 * Resizing a Column no longer inadvertantly sorts it in IE.
12 * Header text no longer wraps by default.
14 * Added UI to fill gap when a scrolling DataTable is narrower than its container.
16 * Fixed wrong assignment of classnames for TDs and message cell.
18 * Fixed bugs for width, minWidth, and hidden Column values in non-scrolling DataTables.
20 * Added getBdContainerEl() method.
26 * Only split THEAD from TBODY markup for scrollable tables.
27 * columnResizeEvent sends new width value.
28 * Improved performance for adding, deleting, and updating rows dynamically.
34 * Introduced YAHOO.widget.Paginator to manage pagination.
35 * Introduced YAHOO.util.Chain to allow for progressive rendering.
45 * doBeforeLoadData(sRequest, oResponse, oPayload) - oResponse is now the converted full response (typed JSON or XML as appropriate). oPayload is now an optional data payload implementer can pass in to DataSource.sendRequest via the callback object literal.
46 * formatCell() - The first argument, elCell, is now a reference to the cell liner element rather than the TD itself.
47 * onDataReturnAppendRows(sRequest, oResponse, oPayload) - oResponse is now the converted full response (typed JSON or XML as appropriate). oPayload is now an optional data payload implementer can pass in to DataSource.sendRequest via the callback object literal.
48 * onDataReturnInitializeTable(sRequest, oResponse, oPayload) - oResponse is now the converted full response (typed JSON or XML as appropriate). oPayload is now an optional data payload implementer can pass in to DataSource.sendRequest via the callback object literal.
49 * onDataReturnInsertRows(sRequest, oResponse, oPayload) - oResponse is now the converted full response (typed JSON or XML as appropriate). oPayload is now an optional data payload implementer can pass in to DataSource.sendRequest via the callback object literal.
50 * paginator - Should now be an instance of YAHOO.widget.Paginator.
51 * sortedBy.dir - Use CLASS_ASC or CLASS_DESC instead of "asc" and "desc" strings.
52 * Scrolling must be enabled via the configs "scrollable", "width", and "height". CSS should no longer be used to set width or height on scrollable tables.
56 * formatPaginatorDropdown() - Use new Paginator class.
57 * formatPaginatorLinks() - Use new Paginator class.
58 * formatPaginators() - Use new Paginator class.
59 * refreshView() - Use render().
60 * showPage() - Use new Paginator class.
61 * updatePaginator() - Use new Paginator class.
62 * headerCellClickEvent - Use theadCellClickEvent.
63 * headerCellDblclickEvent - Use theadCellDblclickEvent.
64 * headerCellMousedownEvent - Use theadCellMousedownEvent.
65 * headerCellMouseoutEvent - Use theadCellMouseoutEvent.
66 * headerCellMouseoverEvent - Use theadCellMouseoverEvent.
67 * headerLabelClickEvent - Use theadLabelClickEvent.
68 * headerLabelDblclickEvent - Use theadLabelDblclickEvent.
69 * headerLabelMousedownEvent - Use theadLabelMousedownEvent.
70 * headerLabelMouseoutEvent - Use theadLabelMouseoutEvent.
71 * headerLabelMouseoverEvent - Use theadLabelMouseoverEvent.
72 * headerRowClickEvent - Use theadRowClickEvent.
73 * headerRowDblclickEvent - Use theadRowDblclickEvent.
74 * headerRowMousedownEvent - Use theadRowMousedownEvent.
75 * headerRowMouseoutEvent - Use theadRowMouseoutEvent.
76 * headerRowMouseoverEvent - Use theadRowMouseoverEvent.
77 * refreshEvent - Use renderEvent.
78 * paginated - No longer used, as long as "paginator" value is an instance of Paginator class.
83 * updateKey() - Use updateRecordValue().
84 * keyUpdateEvent - Use recordValueUpdateEvent.
88 * width - Must now be a number. Strings will be ignored.
89 * sortOptions.defaultOrder - Use sortOptions.defaultDir, and use CLASS_ASC or CLASS_DESC instead of "asc" and "desc" strings.
101 * For better support of resizeable Columns, the following core CSS changes have been
104 - applied "table-layout:fixed" to TABLE elements
105 - removed "overflow:hidden" from TH and TD elements
106 - removed "white-space:nowrap" from TD elements
108 As a result, implementers may notice a change in the widths of their rendered
109 DataTables, which should be resolved by setting widths explicitly via CSS or
110 your Column definitions.
112 * Selection model issues have been addressed by clearing up ambiguous ID and
113 index usage. Record instances are now assigned globally unique and immutable ID
114 strings (no longer numbers). Record indexes are numbers that are mutable in order
115 to represent Record order within a RecordSet instance. TR elements are assigned
116 DOM ID strings that are *unrelated* to Record instance IDs and Record indexes. Be
117 aware that DOM element IDs will get reused when sorting and paginating. Furthermore,
118 Column instances are assigned globally unique and immutable ID strings
119 (no longer numbers). Column indexes are numbers that are mutable and represent
120 Column order within a ColumnSet instance. Please refer to the API documentation
121 for details on when to use Record/Column instance IDs, DOM element IDs, and
122 Record/Column index numbers.
124 * Enabling row or cell selection no longer breaks clicks on links and form elements.
128 *** version 2.3.0 ***
130 * DataSource requests over XHR no longer automatically insert a "?" in the URIs
131 between the host and the query. Implementers should explicitly include the
132 question mark if it is required by your server. Please refer to the XHR
133 examples for implementation details.
135 * Applied new skinning model.
137 * The MVC model has been stabilized and many APIs have been renamed or changed
138 quite a bit from the previous version. Implementers should now only use
139 DataTable APIs and not use any Record or RecordSet APIs to add/delete/update
140 rows, Records, and DOM elements. RecordSet synchronization will be managed for
141 you under the hood. For example, myDataTable.addRow() now accepts an object
142 literal of data and will create a Record and update the DOM. Calling
143 myDataTable.deleteRow() will delete the appropriate Record and update the DOM.
144 Please refer to the API reference for full details on property and method names and
145 argument signatures. When possible, Logger messages will provide deprecation warnings,
146 so implementers upgrading from the previous version are encouraged to use the debug
149 * The DataTable constructor signature has changed in 2 major ways:
150 1) Do not pass in a ColumnSet instance. Instead, pass in an array of Column
151 definitions directly, and a ColumnSet instance will be created for you under the hood.
152 2) In the progressive enhancement case, first instantiate a DataSource pointing
153 to your HTML TABLE element, and then pass in that DataSource instance to your
154 DataTable constructor. Please refer to the progressive enhancement example
155 for implementation details.
157 * DataTable now extends Element, which has become a required dependency. Implementers
158 should now use the myDataTable.set("propertyName", newValue) syntax instead of direct
159 dot notation of any properties.
161 * The underlying pagination architecture and API have been revised. Specifically,
162 the property paginator has been deprecated in favor of paginated,
163 paginatorOptions has been deprecated in favor of paginator, and related events
164 and method names have been changed. Please see the pagination examples for
165 implementation details. Please refer to the API reference for full details on
166 new property and method names and argument signatures.
168 * There is a known pagination bug where changing the rows-per-page dropdown while
169 on a page number that is out of bounds of the new range, the current page value
170 fails to get reset to an appropriate default value.
172 * There is a known pagination bug where custom containers are ignored.
174 * There is a known bug where row and cell selections are not tracked correctly in
175 paginated DataTables.
177 * The underlying editing architecture and API have been revised. Specifically, the
178 ColumnEditor class is no longer used, the method editCell() has been deprecated
179 in favor of showCellEditor(), and the Custom Event "cellEditEvent" is now
180 "editorSaveEvent". Please see the inline editing example for
181 implementation details. Please refer to the API reference for full details on
182 property and method names and argument signatures.
184 * There is a known issue where the built-in date editor throws a JavaScript
185 exception when encountering a null or non-Date value. Implementers using the built-in
186 date editor should validate for type Date and avoid null values in these data
189 * The underlying sort architecture, including YAHOO.util.Sort, has been modified
190 to accept a single sort function rather than separate functions for ascending
191 and descending sorts.
193 * Scrolling a DataTable with an active Cell Editor will cancel the edit to
194 to prevent the Cell Editor's position from getting out of sync with its
195 associated TD element.
197 * The following static methods are executed in the scope of the DataTable
198 instance: DataTable.validateNumber(), DataTable.formatButton(),
199 DataTable.formatCheckbox(), DataTable.formatCurrency(), DataTable.formatDate(),
200 DataTable.formatDropdown(), DataTable.formatEmail(), DataTable.formatLink(),
201 DataTable.formatNumber(), DataTable.formatRadio(), DataTable.formatText(),
202 DataTable.formatTextarea(), DataTable.formatTextbox().
204 * The following DataTable APIs have changed:
205 - The following static constants have been removed: CLASS_CURRENCY, CLASS_CURRENTPAGE,
206 CLASS_DATE, CLASS_EMAIL, CLASS_FIRSTLINK, CLASS_FIRSTPAGE, CLASS_HEADCONTAINER,
207 CLASS_HEADRESIZER, CLASS_HEADTEXT, CLASS_HIGHLIGHT, CLASS_LASTLINK, CLASS_LASTPAGE,
208 CLASS_LINK, CLASS_NEXTLINK, CLASS_NEXTPAGE, CLASS_NUMBER, CLASS_PAGELINK,
209 CLASS_PAGELINKS, CLASS_PAGESELECT, CLASS_PREVLINK, CLASS_PREVPAGE, CLASS_SORTEDBYASC,
210 CLASS_SORTEDBYDESC, CLASS_STRING.
211 - The following static constants have been added: CLASS_ASC, CLASS_BUTTON,
212 CLASS_DEFAULT, CLASS_DESC, CLASS_DISABLED, CLASS_DROPDOWN, CLASS_HEADER,
213 CLASS_HIGHLIGHTED, CLASS_LABEL, CLASS_NEXT, CLASS_PAGE, CLASS_PREVIOUS,
215 - The property contextMenu is no longer supported.
216 - The property dataSource has been deprecated in favor of the accessor method
218 - The property fixedWidth is not fully supported.
219 - The property sortedBy now defines key instead of colKey.
220 - The property rowSingleSelect has been deprecated in favor of selectionMode.
222 * The following Record APIs have changed:
223 - Record data values are no longer accessible with oRecord[key] or oRecord.key.
224 Implementers should now use oRecord.getData(key).
225 - The property yuiRecordId has been deprecated in favor of the accessor method
228 * The following RecordSet APIs have changed:
229 - The method getRecordBy() is not implemented.
230 - The method insert() has been deprecated in favor of addRecord() and addRecords().
231 - The method replace() has been renamed replaceRecords().
232 - The method sort() has been deprecated in favor of sortRecords().
234 * The following Column APIs have changed:
235 - Column type has been deprecated in favor of formatter. In your Column
236 definitions, please change type:"date" to formatter:"date", type:"currency" to
237 formatter:"currency", etc.
238 - The property parser is no longer used. Implementers should use the static
239 DataSource methods DataSource.parseDate(), DataSource.parseNumber(), and
240 DataSource.parseString() for type conversion functionality.
241 - The methods getColSpan() and getRowSpan() have been renamed to getColspan()
243 - The return value for the method getId() has been changed.
244 - The following methods are no longer implemented: parse(), parseCheckbox(),
245 parseDate(), parseNumber(), parseSelect(). Implementers should now use a
246 DataSource with a data type of HTML TABLE element.
247 - The showEditor() method is no longer implemented. Implementers should now use
248 the DataTable method showCellEditor().
249 - All static formatter functions have been moved from the Column class to the
252 * The DataTable method getColumn() has a known issue where instead of accepting
253 a Column's key index value, the method accepts a Column's ID value. Until this
254 issue is fixed, implementers can use the following workaround:
257 // var oColumn = myDataTable.getColumn(0);
260 var oColumn = myDataTable.getColumn(myDataTable.getFirstTrEl().cells[0].yuiColumnId);
271 *** version 2.2.2 ***
273 * Removed workaround for a fixed Dom.getXY() bug that was causing a positioning
274 problem for inline editors on scrolled pages.
278 **** version 2.2.1 ***
280 * Changed default pagination from enabled to disabled. Must set property
281 paginator to true to enable built-in client-side pagination.
282 * Removed deleteSelectedRows() and added deleteRows().
283 * Deprecated properties isEmpty and isLoading, and methods showLoadingMessage(),
284 showEmptyMessage(), and hideTableMessages(). Implementers should now use
285 showTableMessage() and hideTableMessage().
286 * Deprecated methods paginateRows() and onDataReturnPaginateRows(). Implementers
287 should now use popualateTable() and onDataReturnPopulateTable().
288 * Deprecated pagination properties pageCurrent, rowsPerPage, startRecordIndex,
289 pageLinksLength, rowsPerPageDropdown, pageLinksStart, and pagers.
290 * Fixed unclickable links.
291 * Fix to support data values of 0 (zero).
292 * Fixed broken validation in multiple places when the value 0 (zero) is passed
294 * Fixed incorrect month output in formatDate().
295 * Fixed broken empty message when there are zero rows.
296 * Allow implementers to use data with field name "id".
297 * Fixed Column resizeability in -min builds.
298 * Fixed Column sorting of null, undefined, and empty values.
299 * Fixed Column sorting of nested headers.
300 * Fixed paginator dropdowns to stay in sync when paginating.
301 * Fixed rowSingleSelect for paginated DataTable.
302 * Fix for currency values with more than 2 decimal places.
303 * Fixed broken TR ID assignments in replaceRows().
304 * Fixed Opera UI artifacting problem when repaginating via dropdowns.
305 * Fixed orphaned ColumnEditor during pagination or other de facto blur
306 interaction. Data gets saved.
307 * Extracted non-foundational CSS for scrollable DataTables to make UI easier to
309 * Updated methods select() and unselect() to also accept an array of elements or
311 * Improved row selection behavior to model the desktop paradigm (i.e., require
312 CONTROL and/or SHIFT keys to multi-select).
313 * Tweaked inline editing for better Mac performance.
314 * Refactored pagination code to be easier to implement, configure, and extend.
315 * Accept an error boolean from DataSource in case of data error and show error
317 * The CustomEvent rowDeleteEvent is now only fired once per deleted row and
318 its argument signature has been modified.
319 * Added selectRow(), rowSelectEvent, unselectRow(), rowUnselectEvent, rowAddEvent,
321 * Added constants CLASS_TABLE, CLASS_EDITOR, CLASS_FIRST, and CLASS_LAST.
322 * Added ColumnEditor class moveContainerTo().
323 * Add IDs and class hooks to TABLE element and ColumnEditor's container DIV.
324 * Add class hooks to first and last TR elements.
325 * Added hook to doBeforeLoadData() for the not-from-markup constructor flow.
326 * Added properties paginator and paginatorOptions, as well as method getPaginator().
327 * Added methods saveEditorData() and cancelEditorData().
328 * Improved type checking with YAHOO.lang.
332 **** version 2.2.0 ***
335 * Caption is not supported when scrolling is enabled.
336 * Resizeability is not supported for fixed-width DataTables.