datasource-caching-source.mustache revision 72378c4b11f0468874fbad14749246d2ae564474
ac4e70ff8955669341f435bc0a734a17c01af124Mark Andrews<form id="demo" action="http://search.yahoo.com/search">
5ae0e2c8b72fa44237edeb37d1945b1c3535ca39Automatic Updater <h6>Look up github repositories by username (e.g., davglass, lsmith or rgrove):</h6>
5ae0e2c8b72fa44237edeb37d1945b1c3535ca39Automatic Updater <input type="input" id="demo_input_query" name="p">
59dd3b3cd954239d98ef52cd26328856cb6f2975Automatic Updater <input type="submit" id="demo_query_retrieve" value="Retrieve data">
59dd3b3cd954239d98ef52cd26328856cb6f2975Automatic Updater <input type="button" id="demo_cache_clear" value="Clear cache">
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater <div id="demo_output_response" class="output"></div>
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic UpdaterYUI().use("json-stringify","node", "datasource-get", "datasource-jsonschema", "datasource-cache", "datatype-date", function (Y) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var output = Y.one("#demo_output_response"),
ac4e70ff8955669341f435bc0a734a17c01af124Mark Andrews source = "remote source",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington myDataSource = new Y.DataSource.Get({
5c0fc20d6e59216d9a142409e5fdb498153aeaa5Automatic Updater generateRequestCallback: function (guid) {
56874aef380a64a2c183b7c282c3e7a361d67fa1Automatic Updater return '/repos?callback=YUI.Env.DataSource.callbacks.' + guid;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews callback = {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews success: function(e){
04eba969cb9a54bbda2896db2067c07b2ac5ba16Automatic Updater var when = Y.DataType.Date.format(new Date(), {format:"%F %r"}),
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews "<p>[" + when + "] Retrieved from " +
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews "<strong>" + source + "</strong></p>" +
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews .replace(/</g,"<")
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson .replace(/>/g,">") +
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater failure: function(e){
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews var when = Y.DataType.Date.format(new Date(), {format:"%F %r"}),
fc3576328379e813ccf6b3a6e66d9bb701a79c83Automatic Updater message = /fields retrieval/.test(e.error.message) ?
298c514fff250c1a147176cfbbc1c0ca441d1ea5Automatic Updater "User not found" : e.error.message;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews "<p>[" + when + "] Could not retrieve data: " +
3098364bcdd7a719fbafa5fc8d2cc9e90e5a5989Automatic Updater "<em>" + message + "</em>" +
3a6600c8d319275d73c36eb625f77103cd83e824Automatic Updater myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews resultListLocator: "data",
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews resultFields: ["name"]
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews myDataSource.plug(Y.Plugin.DataSourceCache, { max: 3 });
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews myDataSource.cache.on("retrieve", function(){
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson source = "cache";
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson Y.one("#demo_cache_clear").on("click", function(){
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews var when = Y.DataType.Date.format(new Date(), {format:"%F %r"});
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont output.setContent("<p>[" + when + "] Cache cleared.</p>");
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont Y.on("submit", function(e){
6f046a065e5543f8cd7e2f24991c65d2372f4c8dMark Andrews var query = encodeURIComponent(
4b2cb1422c7c600fbc13b1cb06a8b4693bc11af8Mark Andrews Y.one("#demo_input_query")
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews .get("value")
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews .replace(/"/g,'\\"')
4d0520004a9663324a6a30f2d1716565e6d0024cAutomatic Updater .replace(/\W/g, ''));
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater source = "remote source";
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews request:query,
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews callback:callback
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews output.setContent("<p>Please enter a query.</p>");