DataSource Utility: DataSource.Local
+ +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(null, myCallback); });
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(null, 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(null, myCallback); });
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(null, 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.get("#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(null, myCallback); });
YUI().use("datasource-local", "datasource-xmlschema", function(Y) { + var myTable = Y.Node.getDOMNode(Y.get("#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(null, myCallback); +});

