Use DataSource.Local to manage retrieval of local data, from JavaScript arrays and objects to DOM elements. A DataSchema plugin is used to normalize incoming data into a known format for consistency of usage by other components.
+If you are working with local array data, use the DataSourceArraySchema plugin to normalize and filter the data into a consistent format:
+ +YUI().use("datasource-local", "datasource-arrayschema", function(Y) {
+ var myData = [
+ {name:"abc",id:123,extra:"foo"},
+ {name:"def",id:456,extra:"bar"},
+ {name:"ghi",id:789,extra:"baz"}
+ ],
+ myDataSource = new Y.DataSource.Local({source:myData}),
+ myCallback = {
+ success: function(e){
+ alert(e.response);
+ },
+ failure: function(e){
+ alert("Could not retrieve data: " + e.error.message);
+ }
+ };
+
+ myDataSource.plug(Y.Plugin.DataSourceArraySchema, {
+ schema: {
+ resultFields: ["name","id"]
+ }
+ });
+
+ myDataSource.sendRequest({callback:myCallback});
+});
+
+
+Use the DataSourceJSONSchema plugin to normalize JSON data:
+ +YUI().use("datasource-local", "datasource-jsonschema", function(Y) {
+ var myData = {
+ "profile":{
+ "current":160,
+ "target":150
+ },
+ "reference": [
+ {
+ ...
+ },
+ {
+ "category":"nutrition",
+ "type":"intake",
+ "fruit":[
+ {"name":"apple", "calories":70},
+ {"name":"banana", "calories":70},
+ {"name":"orange", "calories":90},
+ ],
+ "vegetables":[
+ {"name":"baked potato", "calories":150},
+ {"name":"broccoli", "calories":50},
+ {"name":"green beans", "calories":30}
+ ]
+ }
+ ],
+ "program": [
+ ...
+ ]
+ },
+ myDataSource = new Y.DataSource.Local({source:myData}),
+ myCallback = {
+ success: function(e){
+ alert(e.response);
+ },
+ failure: function(e){
+ alert("Could not retrieve data: " + e.error.message);
+ }
+ };
+
+ myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
+ schema: {
+ resultListLocator: "reference[1].fruit",
+ resultFields: ["name","calories"]
+ }
+ });
+
+ myDataSource.sendRequest({callback:myCallback});
+});
+
+
+You can use the DataSourceXMLSchema plugin to work with DOM elements:
+ +YUI().use("datasource-local", "datasource-xmlschema", function(Y) {
+ var myTable = Y.Node.getDOMNode(Y.one("#myTable")),
+ myDataSource = new Y.DataSource.Local({source:myTable}),
+ myCallback = {
+ success: function(e){
+ alert(e.response);
+ },
+ failure: function(e){
+ alert("Could not retrieve data: " + e.error.message);
+ }
+ };
+
+ myDataSource.plug(Y.Plugin.DataSourceXMLSchema, {
+ schema: {
+ resultListLocator: "tr",
+ resultFields: [
+ {key:"beverage", locator:"td[1]"},
+ {key:"price", locator:"td[2]"}
+ ]
+ }
+ });
+
+ myDataSource.sendRequest({callback:myCallback});
+});
+
+