Minor cleanup.
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index e985d42..0561a7e 100644 (file)
@@ -1,40 +1,12 @@
 // Set up namespace and some state.
 var mkdru = {
-  // Settings to pass to pz2.js
-  useSessions: Drupal.settings.mkdru.use_sessions === '1',
+  settings: JSON.parse(Drupal.settings.mkdru.settings),
   // Variables
   active: false,
   pz2: null,
   totalRec: 0,
   pagerRange: 6,
-  pazpar2Path: Drupal.settings.mkdru.pz2_path,
-  facetContainerSelector: Drupal.settings.mkdru.facetContainerSelector,
-  // Facets
-  facets: {
-    source: {
-      displayName: Drupal.settings.mkdru.source_dname || "Source",
-      orderWeight: Drupal.settings.mkdru.source_weight || 1,
-      pz2Name: 'xtargets',
-      max: Drupal.settings.mkdru.source_max || 10
-    },
-    subject: {
-      displayName: Drupal.settings.mkdru.subject_dname || "Subject",
-      orderWeight: Drupal.settings.mkdru.source_weight || 2,
-      pz2Name: 'subject',
-      max: Drupal.settings.mkdru.subject_max || 10,
-      multiLimit: true,
-      limiter: 'su'
-    },
-    author: {
-      displayName: Drupal.settings.mkdru.author_dname || "Author",
-      orderWeight: Drupal.settings.mkdru.source_weight || 3,
-      pz2Name: 'author',
-      max: Drupal.settings.mkdru.author_max || 10,
-      multiLimit: false,
-      limiter: 'au'
-    }
-  },
-  // State; Keys limit_{facet key} will also be initialised
+  facetContainerSelector: '#mkdru-raw-facet-container',
   defaultState: {
     page: 1,
     perpage: 20,
@@ -45,8 +17,8 @@ var mkdru = {
   state: {},
   realm: ''
 };
-
-
+// Convenient references
+mkdru.facets = mkdru.settings.facets;
 
 // Wrapper for jQuery
 (function ($) {
@@ -92,7 +64,6 @@ mkdru.pz2Init = function () {
     mkdru.search();
   }
   mkdru.pz2.stat();
-  //mkdru.pz2.bytarget();
 };
 
 mkdru.pz2Show = function (data) {
@@ -151,10 +122,10 @@ 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;
       }
     }
@@ -164,10 +135,6 @@ mkdru.pz2Term = function (data) {
   }
 };
 
-mkdru.pz2ByTarget = function (data) {
-  
-};
-
 mkdru.pz2Record = function (data) {
   clearTimeout(mkdru.pz2.showTimer);
   $('.mkdru-results').hide();
@@ -224,6 +191,15 @@ 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;
+  }
+  // return to top of page
+  window.scrollTo(0,0);
   // do we need to restart the search?
   var searchTrigger = false;
   // shallow copy of state so we can see what changed.
@@ -330,7 +306,8 @@ mkdru.search = function () {
         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'] + '="'
+          if (limits[i]) 
+            query += ' and ' + mkdru.facets[facet]['limiter'] + '="'
                   + limits[i] + '"';
         }
       }
@@ -404,16 +381,16 @@ $(document).ready(function () {
 
   mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
               "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
-              "pazpar2path": mkdru.pazpar2Path,
+              "pazpar2path": mkdru.settings.pz2_path,
               "oninit": mkdru.pz2Init,
               "onstat": mkdru.pz2Status,
               "onterm": mkdru.pz2Term,
               "termlist": termlist.join(','),
-              "onbytarget": mkdru.pz2ByTarget,
-              "usesessions" : mkdru.useSessions,
+              "usesessions" : mkdru.settings.use_sessions,
               "showResponseType": mkdru.showResponseType,
               "onrecord": mkdru.pz2Record,
               "autoInit": false } );
+  mkdru.pz2.showFastCount = 1;
 
   // initialise state to hash string or defaults
   mkdru.stateFromHash();
@@ -428,12 +405,12 @@ $(document).ready(function () {
   }
 
   //not running against SP? init, otherwise authenticate
-  if (mkdru.useSessions) {
+  if (mkdru.settings.use_sessions) {
     mkdru.pz2.init();
   } else {
     //runnin against SP
-    var user = Drupal.settings.mkdru.sp_user;
-    var pass = Drupal.settings.mkdru.sp_pass;
+    var user = mkdru.settings.sp.user;
+    var pass = mkdru.settings.sp.pass;
     var params = {};
     params['command'] = 'auth';
     if (user && pass) {
@@ -443,7 +420,7 @@ $(document).ready(function () {
     } else {
       params['action'] = 'ipauth';
     }
-    var authReq = new pzHttpRequest(mkdru.pazpar2Path, 
+    var authReq = new pzHttpRequest(mkdru.settings.pz2_path, 
       function (err) {
         alert("Authentication against metasearch gateway failed: " +err);
       }