datasource-caching-source.mustache revision 72378c4b11f0468874fbad14749246d2ae564474
615eff12e0e3565c52758292e10080a25d872941William King<form id="demo" action="http://search.yahoo.com/search">
bd911976d51f102751848568ccf56592fd5f6d77Tinderbox User <h6>Look up github repositories by username (e.g., davglass, lsmith or rgrove):</h6>
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence <input type="input" id="demo_input_query" name="p">
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews <input type="submit" id="demo_query_retrieve" value="Retrieve data">
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews <input type="button" id="demo_cache_clear" value="Clear cache">
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews <div id="demo_output_response" class="output"></div>
615eff12e0e3565c52758292e10080a25d872941William King</form>
615eff12e0e3565c52758292e10080a25d872941William King
207cee019eb5cbbe7c905f7c52f7b5d11f8c0305Automatic Updater<script type="text/javascript">
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid LawrenceYUI().use("json-stringify","node", "datasource-get", "datasource-jsonschema", "datasource-cache", "datatype-date", function (Y) {
615eff12e0e3565c52758292e10080a25d872941William King var output = Y.one("#demo_output_response"),
615eff12e0e3565c52758292e10080a25d872941William King source = "remote source",
615eff12e0e3565c52758292e10080a25d872941William King
e5966f9b9a13fc83afaf9b74ac1f7eea6a647817William King myDataSource = new Y.DataSource.Get({
615eff12e0e3565c52758292e10080a25d872941William King source:"https://api.github.com/users/",
615eff12e0e3565c52758292e10080a25d872941William King generateRequestCallback: function (guid) {
615eff12e0e3565c52758292e10080a25d872941William King return '/repos?callback=YUI.Env.DataSource.callbacks.' + guid;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
615eff12e0e3565c52758292e10080a25d872941William King }),
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews callback = {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews success: function(e){
615eff12e0e3565c52758292e10080a25d872941William King var when = Y.DataType.Date.format(new Date(), {format:"%F %r"}),
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence data = Y.JSON.stringify(e.response, null, 2);
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence
79d91e915023ffa5fac1bb2f91f19210bb18407cBrian Wellington output.setContent(
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence "<p>[" + when + "] Retrieved from " +
615eff12e0e3565c52758292e10080a25d872941William King "<strong>" + source + "</strong></p>" +
a13e9f894ce1fa80b4076a40ade53982d8e9d1d9Mukund Sivaraman "<pre>" +
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence data.replace(/&/g,"&amp;")
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews .replace(/</g,"&lt;")
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence .replace(/>/g,"&gt;") +
fd9f6afdff9faf55411dfd5f828529601cab0511Andreas Gustafsson "</pre>");
615eff12e0e3565c52758292e10080a25d872941William King },
a9bc95f22ef2dd4a12e79be99412c9f18b814a5dBrian Wellington failure: function(e){
a9bc95f22ef2dd4a12e79be99412c9f18b814a5dBrian Wellington var when = Y.DataType.Date.format(new Date(), {format:"%F %r"}),
a9bc95f22ef2dd4a12e79be99412c9f18b814a5dBrian Wellington message = /fields retrieval/.test(e.error.message) ?
615eff12e0e3565c52758292e10080a25d872941William King "User not found" : e.error.message;
615eff12e0e3565c52758292e10080a25d872941William King
615eff12e0e3565c52758292e10080a25d872941William King output.setContent(
615eff12e0e3565c52758292e10080a25d872941William King "<p>[" + when + "] Could not retrieve data: " +
615eff12e0e3565c52758292e10080a25d872941William King "<em>" + message + "</em>" +
a781910430028650d388fd932dd94ce6eb6e9d8dBrian Wellington "</p>");
a781910430028650d388fd932dd94ce6eb6e9d8dBrian Wellington }
a781910430028650d388fd932dd94ce6eb6e9d8dBrian Wellington };
a781910430028650d388fd932dd94ce6eb6e9d8dBrian Wellington
615eff12e0e3565c52758292e10080a25d872941William King myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence schema: {
615eff12e0e3565c52758292e10080a25d872941William King resultListLocator: "data",
615eff12e0e3565c52758292e10080a25d872941William King resultFields: ["name"]
615eff12e0e3565c52758292e10080a25d872941William King }
615eff12e0e3565c52758292e10080a25d872941William King });
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
615eff12e0e3565c52758292e10080a25d872941William King myDataSource.plug(Y.Plugin.DataSourceCache, { max: 3 });
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews myDataSource.cache.on("retrieve", function(){
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews source = "cache";
615eff12e0e3565c52758292e10080a25d872941William King });
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews Y.one("#demo_cache_clear").on("click", function(){
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews var when = Y.DataType.Date.format(new Date(), {format:"%F %r"});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews myDataSource.cache.flush();
615eff12e0e3565c52758292e10080a25d872941William King output.setContent("<p>[" + when + "] Cache cleared.</p>");
615eff12e0e3565c52758292e10080a25d872941William King });
615eff12e0e3565c52758292e10080a25d872941William King
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews Y.on("submit", function(e){
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews e.halt();
615eff12e0e3565c52758292e10080a25d872941William King var query = encodeURIComponent(
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews Y.one("#demo_input_query")
615eff12e0e3565c52758292e10080a25d872941William King .get("value")
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews .replace(/"/g,'\\"')
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews .replace(/\W/g, ''));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews if(query) {
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews source = "remote source";
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews myDataSource.sendRequest({
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews request:query,
fcd7c22fdff859e47d290981bb08cd3fc07369a1Tinderbox User callback:callback
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews });
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence output.setContent("<p>Please enter a query.</p>");
615eff12e0e3565c52758292e10080a25d872941William King }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }, "#demo");
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence});
615eff12e0e3565c52758292e10080a25d872941William King</script>
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence