Extend state by overrides AFTER generating filter entries, not before.
[mkws-moved-to-github.git] / src / mkws-team.js
index aac101a..90f9d4f 100644 (file)
@@ -73,7 +73,7 @@ mkws.makeTeam = function($, teamName) {
   delete m_default.filters;
   $.extend(m_default, tmp.fragmentItems());
 
-  that.urlFragment = function() {
+  that.urlFragment = function(overrides) {
     var s;
 
     // Expand the filterSet into a set of key=value properties 
@@ -81,6 +81,7 @@ mkws.makeTeam = function($, teamName) {
     var tmp = state.filters;
     delete state.filters;
     $.extend(state, tmp.fragmentItems());
+    $.extend(state, overrides ? overrides : {});
 
     for (var key in state) {
       if (state.hasOwnProperty(key) &&
@@ -101,6 +102,44 @@ mkws.makeTeam = function($, teamName) {
     return s;
   }
 
+  // ### what quoting do we need to undo? Complement of previous function
+  that.parseFragment = function(s) {
+    var x = {};
+
+    var list = s.split('@');
+    for (var i in list) {
+      var a = list[i].split('=');
+      x[a[0]] = a[1];
+    }
+
+    return x;
+  }
+
+  that.handleChanges = function(oldState, newState) {
+    for (var key in newState) {
+      var val = newState[key];
+      if (newState.hasOwnProperty(key) &&
+          (!oldState || val != oldState[key])) {
+        that.warn("changed property " + key + ": " + 
+                  (oldState ? ("'" + oldState[key] + "'") : "undefined") +
+                  " -> '" + val + "'");
+        if (key === 'page') {
+          that.showPage(parseInt(val));
+        } else if (key === 'sort') {
+          that.set_sortOrder(val);
+          if (that.submitted()) {
+            that.reShow();
+          }
+        } else if (key === 'size') {
+          that.set_perpage(val);
+          if (that.submitted()) {
+            that.reShow();
+          }
+        }
+      }
+    }
+  };
+
 
   // The following PubSub code is modified from the jQuery manual:
   // http://api.jquery.com/jQuery.Callbacks/