1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith<style scoped>
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith/* custom styles for this example */
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith#demo .output {margin-bottom:1em; padding:10px; border:1px solid #D9D9D9;}
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith<div class="intro">
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith <p>DataSource.Function allows the implementer to define a JavaScript function that returns data values, for maximum customizeability. A <a href="../dataschema/">DataSchema</a> plugin is used to normalize incoming data into a known format for consistency of usage by other components.</p>
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith<div class="example yui3-skin-sam">
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith {{>datasource-function-source}}
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith<p>Your custom function can return arbitrary data, so use the appropriate schema plugin to normalize the data into a consistent format. Array data would use a DataSourceArraySchema plugin:</p>
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke SmithYUI().use("datasource-function", "datasource-arrayschema", function(Y) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var myFunction = function(request) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith {name:"abc",id:123},
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith {name:"def",id:456},
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith {name:"ghi",id:789}
myDataSource = new Y.DataSource.Function({source:myFunction}),
alert(e.response);
alert("Could not retrieve data: " + e.error.message);
myDataSource.sendRequest({callback:myCallback});
myDataSource = new Y.DataSource.Function({source:myFunction}),
alert(e.response);
alert("Could not retrieve data: " + e.error.message);
myDataSource.sendRequest({callback:myCallback});