Mercurial > bugzilla-dashboard
changeset 16:c4de72b56b3e
Added a really basic caching mechanism that uses a hidden form field as a single-session cache.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 08 Mar 2010 23:29:11 -0800 |
parents | 306db29669c7 |
children | 4a698ea4be60 |
files | dashboard.css dashboard.js index.html |
diffstat | 3 files changed, 33 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/dashboard.css Mon Mar 08 22:50:56 2010 -0800 +++ b/dashboard.css Mon Mar 08 23:29:11 2010 -0800 @@ -31,7 +31,7 @@ width: 20em; } -#templates { +#templates, #form-cache { display: none; }
--- a/dashboard.js Mon Mar 08 22:50:56 2010 -0800 +++ b/dashboard.js Mon Mar 08 23:29:11 2010 -0800 @@ -1,5 +1,26 @@ $(window).ready( function() { + // Really simple JSON cache that uses a form field as + // a back-end. + function buildCache(selector) { + var data = {}; + var json = $(selector).val(); + if (json.length) + data = JSON.parse(json); + + return { + set: function set(key, value) { + data[key] = value; + $(selector).val(JSON.stringify(data)); + }, + get: function get(key) { + return data[key]; + } + }; + } + + var cache = buildCache("#form-cache .data"); + function sortByLastChanged(bugs) { var lctimes = {}; @@ -37,7 +58,6 @@ row.addClass(bug.priority); row.addClass(bug.severity); } - console.log(bug.last_change_time, bug.summary); row.find(".last-changed").text(prettyDate(bug.last_change_time)); row.click( @@ -58,8 +78,10 @@ table.append(row); }); + query.find(".bugs").remove(); query.append(table); table.hide(); + removeDuplicateBugs(); table.fadeIn(); } @@ -83,10 +105,15 @@ var newTerms = {__proto__: defaults}; for (name in searchTerms) newTerms[name.replace(/_DOT_/g, ".")] = searchTerms[name]; + + var cached = cache.get(selector); + if (cached) + showBugs($(selector), cached); + Bugzilla.search(newTerms, function(response) { + cache.set(selector, response.bugs); showBugs($(selector), response.bugs); - removeDuplicateBugs(); }); }