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>
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",
e5966f9b9a13fc83afaf9b74ac1f7eea6a647817William King myDataSource = new Y.DataSource.Get({
615eff12e0e3565c52758292e10080a25d872941William King generateRequestCallback: function (guid) {
615eff12e0e3565c52758292e10080a25d872941William King return '/repos?callback=YUI.Env.DataSource.callbacks.' + guid;
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 "<p>[" + when + "] Retrieved from " +
615eff12e0e3565c52758292e10080a25d872941William King "<strong>" + source + "</strong></p>" +
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews .replace(/</g,"<")
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence .replace(/>/g,">") +
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 "<p>[" + when + "] Could not retrieve data: " +
615eff12e0e3565c52758292e10080a25d872941William King "<em>" + message + "</em>" +
615eff12e0e3565c52758292e10080a25d872941William King myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
615eff12e0e3565c52758292e10080a25d872941William King resultListLocator: "data",
615eff12e0e3565c52758292e10080a25d872941William King resultFields: ["name"]
615eff12e0e3565c52758292e10080a25d872941William King myDataSource.plug(Y.Plugin.DataSourceCache, { max: 3 });
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews myDataSource.cache.on("retrieve", function(){
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews source = "cache";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews Y.one("#demo_cache_clear").on("click", function(){
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews var when = Y.DataType.Date.format(new Date(), {format:"%F %r"});
615eff12e0e3565c52758292e10080a25d872941William King output.setContent("<p>[" + when + "] Cache cleared.</p>");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews Y.on("submit", function(e){
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, ''));
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews source = "remote source";
bbf31e6b623af575138669bdd7031232867b9166Mark Andrews request:query,
fcd7c22fdff859e47d290981bb08cd3fc07369a1Tinderbox User callback:callback
ab123a8e1b6573e622189a1d39d0af33150a56f8David Lawrence output.setContent("<p>Please enter a query.</p>");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }, "#demo");