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();
                       });
     }
 
--- a/index.html	Mon Mar 08 22:50:56 2010 -0800
+++ b/index.html	Mon Mar 08 23:29:11 2010 -0800
@@ -39,6 +39,9 @@
     </tr>
   </table>
 </div>
+<div id="form-cache">
+  <form><textarea class="data"></textarea></form>
+</div>
 </body>
 <script src="jquery.js"></script>
 <script src="date-utils.js"></script>