pz2 object is now created from contructed parameter array.
[mkws-moved-to-github.git] / src / mkws-team.js
index b2bf974..070f21d 100644 (file)
@@ -8,7 +8,10 @@
 // limitCategory(), delimitTarget(), delimitQuery(), showPage(),
 // pagerPrev(), pagerNext().
 //
-function team($, teamName) {
+// Before the team can be used for searching and related operations,
+// its pz2 object must be created by calling team.makePz2().
+//
+mkws.makeTeam = function($, teamName) {
   var that = {};
   var m_teamName = teamName;
   var m_submitted = false;
@@ -41,11 +44,13 @@ function team($, teamName) {
   that.submitted = function() { return m_submitted; };
   that.sortOrder = function() { return m_sortOrder; };
   that.perpage = function() { return m_perpage; };
+  that.query = function() { return m_query; };
   that.totalRecordCount = function() { return m_totalRecordCount; };
   that.currentPage = function() { return m_currentPage; };
   that.currentRecordId = function() { return m_currentRecordId; };
   that.currentRecordData = function() { return m_currentRecordData; };
   that.filters = function() { return m_filterSet; };
+  that.gotRecords = function() { return m_gotRecords; };
 
   // Accessor methods for individual widgets: writers
   that.set_sortOrder = function(val) { m_sortOrder = val };
@@ -59,17 +64,17 @@ function team($, teamName) {
   //    team.queue("eventName").subscribe(function(param1, param2 ...) { ... });
   //    team.queue("eventName").publish(arg1, arg2, ...);
   //
-  var queues = {};
+  var m_queues = {};
   function queue(id) {
-    if (!queues[id]) {
+    if (!m_queues[id]) {
       var callbacks = $.Callbacks();
-      queues[id] = {
+      m_queues[id] = {
         publish: callbacks.fire,
         subscribe: callbacks.add,
         unsubscribe: callbacks.remove
       };
     }
-    return queues[id];
+    return m_queues[id];
   };
   that.queue = queue;
 
@@ -89,24 +94,7 @@ function team($, teamName) {
 
   m_sortOrder = config.sort_default;
   m_perpage = config.perpage_default;
-
-  // create a parameters array and pass it to the pz2's constructor
-  // then register the form submit event with the pz2.search function
-  // autoInit is set to true on default
-  m_paz = new pz2({ "windowid": teamName,
-                    "pazpar2path": config.pazpar2_url,
-                    "usesessions" : config.use_service_proxy ? false : true,
-                    "oninit": onInit,
-                    "onbytarget": onBytarget,
-                    "onstat": onStat,
-                    "onterm": (config.facets.length ? onTerm : undefined),
-                    "onshow": onShow,
-                    "onrecord": onRecord,
-                    "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
-                    "termlist": config.facets.join(',')
-                  });
-  log("created main pz2 object");
-
   // pz2.js event handlers:
   function onInit() {
     log("init");
@@ -149,6 +137,7 @@ function team($, teamName) {
     log("record");
     // FIXME: record is async!!
     clearTimeout(m_paz.recordTimer);
+    queue("record").publish(data);
     var detRecordDiv = findnode(recordDetailsId(data.recid[0]));
     if (detRecordDiv.length) {
       // in case on_show was faster to redraw element
@@ -161,6 +150,31 @@ function team($, teamName) {
   }
 
 
+  // create a parameters array and pass it to the pz2's constructor
+  // then register the form submit event with the pz2.search function
+  // autoInit is set to true on default
+  that.makePz2 = function() {
+    log("m_queues=" + $.toJSON(m_queues));
+    var params = {
+      "windowid": teamName,
+      "pazpar2path": mkws.pazpar2_url(),
+      "usesessions" : config.use_service_proxy ? false : true,
+      "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
+      "termlist": config.facets.join(',')
+    };
+
+    params.oninit = onInit;
+    params.onbytarget = onBytarget;
+    params.onstat = onStat;
+    params.onterm = (config.facets.length ? onTerm : undefined);
+    params.onshow = onShow;
+    params.onrecord = onRecord;
+
+    m_paz = new pz2(params);
+    log("ccreated main pz2 object");
+  }
+
+
   // Used by the Records widget and onRecord()
   function recordElementId(s) {
     return 'mkwsRec_' + s.replace(/[^a-z0-9]/ig, '_');
@@ -293,7 +307,7 @@ function team($, teamName) {
     if (maxrecs) params.maxrecs = maxrecs;
     if (torusquery) {
       if (!mkws.config.use_service_proxy)
-        alert("can't narrow search by torusquery when Service Proxy is not in use");
+        alert("can't narrow search by torusquery when not authenticated");
       params.torusquery = torusquery;
     }
 
@@ -303,6 +317,12 @@ function team($, teamName) {
     m_paz.search(m_query, m_perpage, m_sortOrder, pp2filter, undefined, params);
   }
 
+  // fetch record details to be retrieved from the record queue
+  that.fetchDetails = function(recId) {
+    log("fetchDetails() requesting record '" + recId + "'");
+    m_paz.record(recId);
+  };
+
 
   // switching view between targets and records
   function switchView(view) {