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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<div class="intro">
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly <p>Use DataSource.Local to manage retrieval of local data, from JavaScript arrays and objects to DOM elements. 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>
819e90d415ed17d59af3a247b2ad9d6feb0c21b5Luke Smith<div class="example yui3-skin-sam">
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {{>datasource-local-source}}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<p>If you are working with local array data, use the DataSourceArraySchema plugin to normalize and filter the data into a consistent format:</p>
72378c4b11f0468874fbad14749246d2ae564474Jenny DonnellyYUI().use("datasource-local", "datasource-arrayschema", function(Y) {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly var myData = [
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {name:"abc",id:123,extra:"foo"},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {name:"def",id:456,extra:"bar"},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {name:"ghi",id:789,extra:"baz"}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource = new Y.DataSource.Local({source:myData}),
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myCallback = {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly success: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly failure: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly alert("Could not retrieve data: " + e.error.message);
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.plug(Y.Plugin.DataSourceArraySchema, {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultFields: ["name","id"]
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({callback:myCallback});
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<p>Use the DataSourceJSONSchema plugin to normalize JSON data:</p>
72378c4b11f0468874fbad14749246d2ae564474Jenny DonnellyYUI().use("datasource-local", "datasource-jsonschema", function(Y) {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly var myData = {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly "current":160,
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly "reference": [
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly "category":"nutrition",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly "type":"intake",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"apple", "calories":70},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"banana", "calories":70},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"orange", "calories":90},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly "vegetables":[
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"baked potato", "calories":150},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"broccoli", "calories":50},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {"name":"green beans", "calories":30}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource = new Y.DataSource.Local({source:myData}),
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myCallback = {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly success: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly failure: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly alert("Could not retrieve data: " + e.error.message);
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultListLocator: "reference[1].fruit",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultFields: ["name","calories"]
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({callback:myCallback});
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<p>You can use the DataSourceXMLSchema plugin to work with DOM elements:</p>
72378c4b11f0468874fbad14749246d2ae564474Jenny DonnellyYUI().use("datasource-local", "datasource-xmlschema", function(Y) {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly var myTable = Y.Node.getDOMNode(Y.one("#myTable")),
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource = new Y.DataSource.Local({source:myTable}),
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myCallback = {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly success: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly failure: function(e){
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly alert("Could not retrieve data: " + e.error.message);
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.plug(Y.Plugin.DataSourceXMLSchema, {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultListLocator: "tr",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultFields: [
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {key:"beverage", locator:"td[1]"},
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {key:"price", locator:"td[2]"}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({callback:myCallback});