2
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3
Code licensed under the BSD License:
4
http://developer.yahoo.com/yui/license.html
8
YUI.add('datatable-datasource', function(Y) {
11
* Plugs DataTable with DataSource integration.
14
* @submodule datatable-datasource
18
* Adds DataSource integration to DataTable.
19
* @class DataTableDataSource
20
* @extends Plugin.Base
22
function DataTableDataSource() {
23
DataTableDataSource.superclass.constructor.apply(this, arguments);
26
/////////////////////////////////////////////////////////////////////////////
30
/////////////////////////////////////////////////////////////////////////////
31
Y.mix(DataTableDataSource, {
33
* The namespace for the plugin. This will be the property on the host which
34
* references the plugin instance.
51
* @value "dataTableDataSource"
53
NAME: "dataTableDataSource",
55
/////////////////////////////////////////////////////////////////////////////
59
/////////////////////////////////////////////////////////////////////////////
62
* @attribute datasource
63
* @description Pointer to DataSource instance.
67
setter: "_setDataSource"
71
* @attribute initialRequest
72
* @description Request sent to DataSource immediately upon initialization.
76
setter: "_setInitialRequest"
81
/////////////////////////////////////////////////////////////////////////////
85
/////////////////////////////////////////////////////////////////////////////
86
Y.extend(DataTableDataSource, Y.Plugin.Base, {
87
/////////////////////////////////////////////////////////////////////////////
91
/////////////////////////////////////////////////////////////////////////////
93
* @method _setDataSource
94
* @description Creates new DataSource instance if one is not provided.
95
* @param ds {Object | Y.DataSource}
96
* @returns Y.DataSource
99
_setDataSource: function(ds) {
100
return ds || new Y.DataSource.Local(ds);
104
* @method _setInitialRequest
105
* @description Sends request to DataSource.
106
* @param request {Object} DataSource request.
109
_setInitialRequest: function(request) {
112
/////////////////////////////////////////////////////////////////////////////
116
/////////////////////////////////////////////////////////////////////////////
120
* @method initializer
121
* @param config {Object} Config object.
124
initializer: function(config) {
125
if(!Y.Lang.isUndefined(config.initialRequest)) {
126
this.load({request:config.initialRequest});
130
////////////////////////////////////////////////////////////////////////////
134
////////////////////////////////////////////////////////////////////////////
137
* Load data by calling DataSource's sendRequest() method under the hood.
140
* @param config {object} Optional configuration parameters:
143
* <dt>request</dt><dd>Pass in a new request, or initialRequest is used.</dd>
144
* <dt>callback</dt><dd>Pass in DataSource callback object, or the following default is used:
146
* <dt>success</dt><dd>datatable.onDataReturnInitializeTable</dd>
147
* <dt>failure</dt><dd>datatable.onDataReturnInitializeTable</dd>
148
* <dt>scope</dt><dd>datatable</dd>
149
* <dt>argument</dt><dd>datatable.getState()</dd>
152
* <dt>datasource</dt><dd>Pass in a new DataSource instance to override the current DataSource for this transaction.</dd>
155
load: function(config) {
156
config = config || {};
157
config.request = config.request || this.get("initialRequest");
158
config.callback = config.callback || {
159
success: Y.bind(this.onDataReturnInitializeTable, this),
160
failure: Y.bind(this.onDataReturnInitializeTable, this),
161
argument: this.get("host").get("state") //TODO
164
var ds = (config.datasource || this.get("datasource"));
166
ds.sendRequest(config);
171
* Callback function passed to DataSource's sendRequest() method populates
172
* an entire DataTable with new data, clearing previous data, if any.
174
* @method onDataReturnInitializeTable
175
* @param e {Event.Facade} DataSource Event Facade object.
177
onDataReturnInitializeTable : function(e) {
178
this.get("host").set("recordset", new Y.Recordset({records: e.response.results}));
182
Y.namespace("Plugin").DataTableDataSource = DataTableDataSource;
189
}, '3.3.0' ,{requires:['datatable-base','plugin','datasource-local']});