Popup records now work for all result-lists, as the request is now
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 0a62b9b..98fc11c 100644 (file)
@@ -230,6 +230,7 @@ function _make_mkws_team($, teamName) {
                      "usesessions" : mkws_config.use_service_proxy ? false : true,
                      "showResponseType": '', // or "json" (for debugging?)
                      "onrecord": my_onrecord });
+    that.m_paz = m_paz; // For access from non-member functions like mkws.showDetails
 
     if (!isNaN(parseInt(mkws_config.perpage_default))) {
        m_recPerPage = parseInt(mkws_config.perpage_default);
@@ -281,7 +282,7 @@ function _make_mkws_team($, teamName) {
     {
        var template = loadTemplate("Summary");
        hit._id = "mkwsRec_" + hit.recid;
-       hit._onclick = "mkws.showDetails(this.id);return false;"
+       hit._onclick = "mkws.showDetails(this.id, '" + m_teamName + "');return false;"
        return template(hit);
     }
 
@@ -404,7 +405,14 @@ function _make_mkws_team($, teamName) {
     // wait until the DOM is ready
     function domReady ()
     {
-       document.mkwsSearchForm.onsubmit = onFormSubmitEventHandler;
+       $('.mkwsSearchForm').each(function (i, obj) {
+           var node = this;
+           debug("adding class 'foo' to node " + node);
+           mkws.handle_node_with_team(node, function(tname) {
+               $(node).submit(onFormSubmitEventHandler);
+           });
+       });
+
        document.mkwsSearchForm.mkwsQuery.value = '';
        if (document.mkwsSelect) {
            if (document.mkwsSelect.mkwsSort)
@@ -722,7 +730,7 @@ function _make_mkws_team($, teamName) {
 
 
     // detailed record drawing
-    mkws.showDetails = function (prefixRecId) {
+    mkws.showDetails = function (prefixRecId, tname) {
        var recId = prefixRecId.replace('mkwsRec_', '');
        var oldRecId = m_curDetRecId;
        m_curDetRecId = recId;
@@ -740,7 +748,9 @@ function _make_mkws_team($, teamName) {
             return;
        }
        // request the record
-       m_paz.record(recId);
+       var team = mkws.teams[tname];
+       if (!team) alert("no team '" + tname + "'");
+       team.m_paz.record(recId);
     }
 
 
@@ -863,11 +873,16 @@ function _make_mkws_team($, teamName) {
        // For some reason, doing this programmatically results in
        // document.mkwsSearchForm.mkwsQuery being undefined, hence the raw HTML.
        debug("HTML search form");
-       $("#mkwsSearch").html('\
-<form name="mkwsSearchForm" action="" >\
-  <input id="mkwsQuery" class="mkwsQuery mkwsTeam_AUTO" type="text" size="' + mkws_config.query_width + '" />\
-  <input id="mkwsButton" class="mkwsButton mkwsTeam_AUTO" type="submit" value="' + M('Search') + '" />\
+       $('.mkwsSearch').each(function (i, obj) {
+           var node = this;
+           mkws.handle_node_with_team(node, function(tname) {
+               $(node).html('\
+<form name="mkwsSearchForm" class="mkwsSearchForm mkwsTeam_' + tname + '" action="" >\
+  <input id="mkwsQuery" class="mkwsQuery mkwsTeam_' + tname + '" type="text" size="' + mkws_config.query_width + '" />\
+  <input id="mkwsButton" class="mkwsButton mkwsTeam_' + tname + '" type="submit" value="' + M('Search') + '" />\
 </form>');
+           });
+       });
 
        debug("HTML records");
        // If the application has an #mkwsResults, populate it in the
@@ -1294,36 +1309,19 @@ function _mkws_jquery_plugin ($) {
            }
        }
 
-       // Backwards compatibility: the special-case undefined team
-       // ### Will not be necessary when non-default teams are working
-       mkws.teams['AUTO'] = _make_mkws_team(j, "AUTO");
-       log("Made the unnamed MKWS team");
-
        // Find all nodes with class (NOT id) mkwsRecords, and
        // determine their team from the mkwsTeam_* class. So:
        //      <div class="mkwsRecords mkwsTeam_foo"/>
-       $('.mkwsResults, .mkwsRecords, .mkwsTermlists').each(function () {
+       $('.mkwsSearch, .mkwsResults, .mkwsRecords, .mkwsTermlists').each(function () {
            var node = this;
-           var classes = this.className;
-           var list = classes.split(/\s+/)
-           var tname;
-           for (var i = 0; i < list.length; i++) {
-               var cname = list[i];
-               if (cname.match(/^mkwsTeam_/)) {
-                   tname = cname.replace(/^mkwsTeam_/, '');
+           mkws.handle_node_with_team(node, function(tname) {
+               if (mkws.teams[tname]) {
+                   log("MKWS team '" + tname + "' already exists, skipping");
+               } else {
+                   mkws.teams[tname] = _make_mkws_team(j, tname);
+                   log("Made MKWS team '" + tname + "'");
                }
-           }
-           if (!tname) {
-               alert("No MKWS team specified for mkwsRecords element with classes '" + classes + "'");
-           } else if (mkws.teams[tname]) {
-               log("MKWS team '" + tname + "' already exists, skipping");
-           } else if (tname === "AUTO") {
-               // ### For now: later, this will be how the backwards-compatibility is done
-               log("Skipping MKWS team '" + tname + "'");
-           } else {
-               mkws.teams[tname] = _make_mkws_team(j, tname);
-               log("Made MKWS team '" + tname + "'");
-           }
+           });
        });
 
        if (mkws_config.use_service_proxy) {
@@ -1337,6 +1335,22 @@ function _mkws_jquery_plugin ($) {
     });
 
 
+    mkws.handle_node_with_team = function(node, callback) {
+       var classes = node.className;
+       var list = classes.split(/\s+/)
+       var tname;
+       for (var i = 0; i < list.length; i++) {
+           var cname = list[i];
+           if (cname.match(/^mkwsTeam_/)) {
+               tname = cname.replace(/^mkwsTeam_/, '');
+           }
+       }
+       if (!tname)
+           tname = "AUTO";
+       callback(tname);
+    }
+
+
     function default_mkws_config() {
        /* default mkws config */
        var config_default = {