Rename arg
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index 5c2d0d0..5638dd1 100644 (file)
@@ -92,7 +92,6 @@ mkdru.pz2Init = function () {
     mkdru.search();
   }
   mkdru.pz2.stat();
-  //mkdru.pz2.bytarget();
 };
 
 mkdru.pz2Show = function (data) {
@@ -137,16 +136,12 @@ mkdru.contains = function (hash, key, value) {
 }
 
 mkdru.pz2Term = function (data) {
-  // if signaled, prepare container client-side
-  if (mkdru.facetContainerSelector) {
-    $(mkdru.facetContainerSelector).html(Drupal.theme('mkdruFacetContainer',
-      data, mkdru.facets));
-  }
   // map all facets against selected, for simple rendering 
   var hash = $.deparam.fragment();
   for (var key in hash) {
-    if (key.indexOf('limit') == 0) //always wrap in array
-      hash[key.substr(6)] = hash[key].split(';');
+    if (key.indexOf('limit') == 0 && hash[key]) 
+      //always wrap in array
+      hash[key.substr(6)] = hash[key].split(/;+/);
     delete hash[key];
   }
   for (var facet in mkdru.facets) {
@@ -155,22 +150,19 @@ mkdru.pz2Term = function (data) {
       var term = terms[i];
       var value = facet == "source" ? term.id : term.name;
       if (mkdru.contains(hash, facet, value)) { //enabled
-        term.hashQuery = mkdru.removeLimit(facet, value);
+        term.toggleLink = mkdru.removeLimit(facet, value);
         term.selected = true;
       } else { //disabled
-        term.hashQuery = mkdru.addLimit(facet, value);
+        term.toggleLink = mkdru.addLimit(facet, value);
         term.selected = false;
       }
     }
     $('.mkdru-facet-' + facet).html(
-        Drupal.theme('mkdruFacet', terms, facet, mkdru.facets[facet].max, hash));
+        Drupal.theme('mkdruFacet', terms, facet, mkdru.facets[facet].max, 
+          hash[facet]));
   }
 };
 
-mkdru.pz2ByTarget = function (data) {
-  
-};
-
 mkdru.pz2Record = function (data) {
   clearTimeout(mkdru.pz2.showTimer);
   $('.mkdru-results').hide();
@@ -227,6 +219,13 @@ mkdru.uiFromState = function () {
 };
 
 mkdru.hashChange = function () {
+  // TING hack, switching tabs resets the hash but does not re-load the page
+  // simply ignore new hash and set it to the old state
+  var hash = $.param.fragment();
+  if (hash.indexOf("-result") != -1 || hash.indexOf("facets=") != -1) {
+    mkdru.hashFromState();
+    return;
+  }
   // do we need to restart the search?
   var searchTrigger = false;
   // shallow copy of state so we can see what changed.
@@ -330,11 +329,12 @@ mkdru.search = function () {
         filter = 'pz:id=' + mkdru.state.limit_source;
       }
       else {
-        var limits = mkdru.state['limit_' + facet].split(';');
+        var limits = mkdru.state['limit_' + facet].split(/;+/);
         for (var i = 0; i < limits.length; i++) {
           // ex. query + and au="{limit_author}"
-          query += ' and ' + mkdru.facets[facet]['limiter'] + '="'
-                  + mkdru.state['limit_' + facet] + '"';
+          if (limits[i]) 
+            query += ' and ' + mkdru.facets[facet]['limiter'] + '="'
+                  + limits[i] + '"';
         }
       }
     }
@@ -399,6 +399,12 @@ $(document).ready(function () {
     mkdru.defaultState['limit_' + key] = null;
   }
 
+  // if signaled, prepare facet container client-side
+  if (mkdru.facetContainerSelector) {
+    $(mkdru.facetContainerSelector).html(Drupal.theme('mkdruFacetContainer',
+      mkdru.facets));
+  }
+
   mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
               "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
               "pazpar2path": mkdru.pazpar2Path,
@@ -406,11 +412,11 @@ $(document).ready(function () {
               "onstat": mkdru.pz2Status,
               "onterm": mkdru.pz2Term,
               "termlist": termlist.join(','),
-              "onbytarget": mkdru.pz2ByTarget,
               "usesessions" : mkdru.useSessions,
               "showResponseType": mkdru.showResponseType,
               "onrecord": mkdru.pz2Record,
               "autoInit": false } );
+  mkdru.pz2.showFastCount = 1;
 
   // initialise state to hash string or defaults
   mkdru.stateFromHash();