~bjornt/lazr-js/prefetch-yui-3.5

« back to all changes in this revision

Viewing changes to src-js/lazrjs/yui/datatable/datatable-datasource.js

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-01-14 23:32:29 UTC
  • mfrom: (197.1.7 yui-3.3.0)
  • Revision ID: launchpad@pqm.canonical.com-20110114233229-r6i4cazdiiw18o7p
Upgrade to YUI 3.3.0 [r=mars]

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
 
3
Code licensed under the BSD License:
 
4
http://developer.yahoo.com/yui/license.html
 
5
version: 3.3.0
 
6
build: 3167
 
7
*/
 
8
YUI.add('datatable-datasource', function(Y) {
 
9
 
 
10
/**
 
11
 * Plugs DataTable with DataSource integration.
 
12
 *
 
13
 * @module datatable
 
14
 * @submodule datatable-datasource
 
15
 */
 
16
 
 
17
/**
 
18
 * Adds DataSource integration to DataTable.
 
19
 * @class DataTableDataSource
 
20
 * @extends Plugin.Base
 
21
 */
 
22
function DataTableDataSource() {
 
23
    DataTableDataSource.superclass.constructor.apply(this, arguments);
 
24
}
 
25
 
 
26
/////////////////////////////////////////////////////////////////////////////
 
27
//
 
28
// STATIC PROPERTIES
 
29
//
 
30
/////////////////////////////////////////////////////////////////////////////
 
31
Y.mix(DataTableDataSource, {
 
32
    /**
 
33
     * The namespace for the plugin. This will be the property on the host which
 
34
     * references the plugin instance.
 
35
     *
 
36
     * @property NS
 
37
     * @type String
 
38
     * @static
 
39
     * @final
 
40
     * @value "datasource"
 
41
     */
 
42
    NS: "datasource",
 
43
 
 
44
    /**
 
45
     * Class name.
 
46
     *
 
47
     * @property NAME
 
48
     * @type String
 
49
     * @static
 
50
     * @final
 
51
     * @value "dataTableDataSource"
 
52
     */
 
53
    NAME: "dataTableDataSource",
 
54
 
 
55
/////////////////////////////////////////////////////////////////////////////
 
56
//
 
57
// ATTRIBUTES
 
58
//
 
59
/////////////////////////////////////////////////////////////////////////////
 
60
    ATTRS: {
 
61
        /**
 
62
        * @attribute datasource
 
63
        * @description Pointer to DataSource instance.
 
64
        * @type Y.DataSource
 
65
        */
 
66
        datasource: {
 
67
            setter: "_setDataSource"
 
68
        },
 
69
        
 
70
        /**
 
71
        * @attribute initialRequest
 
72
        * @description Request sent to DataSource immediately upon initialization.
 
73
        * @type Object
 
74
        */
 
75
        initialRequest: {
 
76
            setter: "_setInitialRequest"
 
77
        }
 
78
    }
 
79
});
 
80
 
 
81
/////////////////////////////////////////////////////////////////////////////
 
82
//
 
83
// PROTOTYPE
 
84
//
 
85
/////////////////////////////////////////////////////////////////////////////
 
86
Y.extend(DataTableDataSource, Y.Plugin.Base, {
 
87
    /////////////////////////////////////////////////////////////////////////////
 
88
    //
 
89
    // ATTRIBUTE HELPERS
 
90
    //
 
91
    /////////////////////////////////////////////////////////////////////////////
 
92
    /**
 
93
    * @method _setDataSource
 
94
    * @description Creates new DataSource instance if one is not provided.
 
95
    * @param ds {Object | Y.DataSource}
 
96
    * @returns Y.DataSource
 
97
    * @private
 
98
    */
 
99
    _setDataSource: function(ds) {
 
100
        return ds || new Y.DataSource.Local(ds);
 
101
    },
 
102
 
 
103
    /**
 
104
    * @method _setInitialRequest
 
105
    * @description Sends request to DataSource.
 
106
    * @param request {Object} DataSource request.
 
107
    * @private
 
108
    */
 
109
    _setInitialRequest: function(request) {
 
110
    },
 
111
 
 
112
    /////////////////////////////////////////////////////////////////////////////
 
113
    //
 
114
    // METHODS
 
115
    //
 
116
    /////////////////////////////////////////////////////////////////////////////
 
117
    /**
 
118
    * Initializer.
 
119
    *
 
120
    * @method initializer
 
121
    * @param config {Object} Config object.
 
122
    * @private
 
123
    */
 
124
    initializer: function(config) {
 
125
        if(!Y.Lang.isUndefined(config.initialRequest)) {
 
126
            this.load({request:config.initialRequest});
 
127
        }
 
128
    },
 
129
 
 
130
    ////////////////////////////////////////////////////////////////////////////
 
131
    //
 
132
    // DATA
 
133
    //
 
134
    ////////////////////////////////////////////////////////////////////////////
 
135
 
 
136
    /**
 
137
     * Load data by calling DataSource's sendRequest() method under the hood.
 
138
     *
 
139
     * @method load
 
140
     * @param config {object} Optional configuration parameters:
 
141
     *
 
142
     * <dl>
 
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:
 
145
     *    <dl>
 
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>
 
150
     *    </dl>
 
151
     * </dd>
 
152
     * <dt>datasource</dt><dd>Pass in a new DataSource instance to override the current DataSource for this transaction.</dd>
 
153
     * </dl>
 
154
     */
 
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
 
162
        };
 
163
 
 
164
        var ds = (config.datasource || this.get("datasource"));
 
165
        if(ds) {
 
166
            ds.sendRequest(config);
 
167
        }
 
168
    },
 
169
 
 
170
    /**
 
171
     * Callback function passed to DataSource's sendRequest() method populates
 
172
     * an entire DataTable with new data, clearing previous data, if any.
 
173
     *
 
174
     * @method onDataReturnInitializeTable
 
175
     * @param e {Event.Facade} DataSource Event Facade object.
 
176
     */
 
177
    onDataReturnInitializeTable : function(e) {
 
178
        this.get("host").set("recordset", new Y.Recordset({records: e.response.results}));
 
179
    }
 
180
});
 
181
 
 
182
Y.namespace("Plugin").DataTableDataSource = DataTableDataSource;
 
183
 
 
184
 
 
185
 
 
186
 
 
187
 
 
188
 
 
189
}, '3.3.0' ,{requires:['datatable-base','plugin','datasource-local']});