Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkws
authorMike Taylor <mike@indexdata.com>
Fri, 28 Feb 2014 16:32:36 +0000 (16:32 +0000)
committerMike Taylor <mike@indexdata.com>
Fri, 28 Feb 2014 16:32:36 +0000 (16:32 +0000)
examples/htdocs/mike.html
tools/htdocs/mkws.js

index 2a4c6f4..a047afd 100644 (file)
@@ -9,30 +9,26 @@
     <script type="text/javascript" src="http://x.mkws.indexdata.com/jquery.json-2.4.js"></script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/handlebars-v1.1.2.js"></script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/pazpar2/js/pz2.js"></script>
+    <script type="text/javascript">
+       var mkws_config = {
+               lang: "da",
+               debug_level: 1,
+               use_service_proxy: true,
+               show_lang: true,
+               lang_options: ["da", "en"],
+               sort_default: "relevance",
+               query_width: 50,
+               responsive_design_width: 990,
+               perpage_default: 20
+        };
+    </script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/mkws.js"></script>
   </head>
   <body>
-    <table width="100%" border="1">
-      <tr>
-       <td valign="top" width="50%">
-         <div class="mkwsSwitch"></div>
-         <div class="mkwsLang"></div>
-         <div class="mkwsSearch"></div>
-         <div class="mkwsResults"></div>
-         <div class="mkwsTargets"></div>
-         <div class="mkwsStat"></div>
-       </td>
-       <td valign="top" width="50%">
-         <div class="mkwsSwitch mkwsTeam_2"></div>
-         <div class="mkwsLang mkwsTeam_2"></div>
-         <div class="mkwsSearch mkwsTeam_2"></div>
-         <div class="mkwsResults mkwsTeam_2"></div>
-         <div class="mkwsTargets mkwsTeam_2"></div>
-         <div class="mkwsStat mkwsTeam_2"></div>
-       </td>
-      </tr>
-    </table>
-    <div class="mkwsMOTD">This is the first MOTD</div>
-    <div class="mkwsMOTD mkwsTeam_2">This is the second MOTD</div>
+    <div id="mkwsLang"></div>
+    <div id="mkwsSearch"></div>
+    <div id="mkwsResults"></div>
+    <div id="mkwsTargets"></div>
+    <div id="mkwsStat"></div>
   </body>
 </html>
index 1292b5f..a1f6f70 100644 (file)
@@ -228,11 +228,13 @@ function team($, teamName) {
     m_sort = mkws_config.sort_default;
     debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to m_sort");
 
+    // ### should be in global code
     if (mkws_config.query_width < 5 || mkws_config.query_width > 150) {
        debug("Reset query width: " + mkws_config.query_width);
        mkws_config.query_width = 50;
     }
 
+    // ### should be in global code
     for (var key in mkws_config) {
        if (mkws_config.hasOwnProperty(key)) {
            if (key.match(/^language_/)) {
@@ -272,6 +274,21 @@ function team($, teamName) {
     }
 
 
+    // Finds the node of the specified class within the current team
+    // Multiple OR-clauses separated by commas are handled
+    // More complex cases may not work
+    //
+    function findnode(selector, teamName) {
+       teamName = teamName || m_teamName;
+
+       selector = selector.split(',').map(function(s) {
+           return s + '.mkwsTeam_' + teamName;
+       }).join(',');
+
+       return $(selector);
+    }
+
+
     //
     // pz2.js event handlers:
     //
@@ -286,12 +303,12 @@ function team($, teamName) {
        debug("show");
        m_totalRec = data.merged;
 
-       var pager = $(".mkwsPager.mkwsTeam_" + m_teamName);
+       var pager = findnode(".mkwsPager");
        if (pager.length) {
            pager.html(drawPager(data))
        }
 
-       var results = $(".mkwsRecords.mkwsTeam_" + m_teamName);
+       var results = findnode(".mkwsRecords");
        if (!results.length)
            return;
 
@@ -321,7 +338,7 @@ function team($, teamName) {
 
     function my_onstat(data, teamName) {
        debug("stat");
-       var stat = $('.mkwsStat.mkwsTeam_' + teamName);
+       var stat = findnode('.mkwsStat');
        if (stat.length === 0)
            return;
 
@@ -335,7 +352,7 @@ function team($, teamName) {
 
     function my_onterm(data, teamName) {
        debug("term");
-       var node = $(".mkwsTermlists.mkwsTeam_" + teamName);
+       var node = findnode(".mkwsTermlists");
        if (node.length == 0) return;
 
        // no facets: this should never happen
@@ -419,7 +436,7 @@ function team($, teamName) {
 
     function my_onbytarget(data, teamName) {
        debug("target");
-       var targetDiv = $('.mkwsBytarget.mkwsTeam_' + teamName);
+       var targetDiv = findnode('.mkwsBytarget');
        if (!targetDiv) {
            return;
        }
@@ -449,10 +466,11 @@ function team($, teamName) {
 
 
     // when search button pressed
+    // ### This is closure, so can always just operate on its own team
     function onFormSubmitEventHandler()
     {
        mkws.handle_node_with_team(this, function (tname) {
-           var val = $('.mkwsQuery.mkwsTeam_' + tname).val();
+           var val = findnode('.mkwsQuery').val();
            mkws.teams[tname].newSearch(val);
        });
 
@@ -460,6 +478,8 @@ function team($, teamName) {
     }
 
 
+    // ### won't need to be externally visible once onFormSubmitEventHandler() is fixed.
+    // ### doesn't need windowid
     that.newSearch = function(query, sort, targets, windowid)
     {
        debug("newSearch: " + query);
@@ -496,6 +516,7 @@ function team($, teamName) {
     }
 
 
+    // ### doesn't need windowid
     function triggerSearch (query, sort, targets, windowid)
     {
        var pp2filter = "";
@@ -548,12 +569,12 @@ function team($, teamName) {
 
     function loadSelect ()
     {
-       var node = $('.mkwsSort.mkwsTeam_' + m_teamName);
+       var node = findnode('.mkwsSort');
        if (node.length && node.val() != m_sort) {
            debug("changing m_sort from " + m_sort + " to " + node.val());
            m_sort = node.val();
        }
-       node = $('.mkwsPerpage.mkwsTeam_' + m_teamName);
+       node = findnode('.mkwsPerpage');
        if (node.length && node.val() != m_perpage) {
            debug("changing m_perpage from " + m_perpage + " to " + node.val());
            m_perpage = node.val();
@@ -637,7 +658,7 @@ function team($, teamName) {
 
     function redraw_navi ()
     {
-       var navi = $('.mkwsNavi.mkwsTeam_' + m_teamName);
+       var navi = findnode('.mkwsNavi');
        if (!navi) return;
 
        var text = "";
@@ -738,10 +759,10 @@ function team($, teamName) {
 
     // switching view between targets and records
     that.switchView = function(view) {
-       var targets = $('.mkwsTargets.mkwsTeam_' + m_teamName);
-       var results = $('.mkwsResults.mkwsTeam_' + m_teamName + ',.mkwsRecords.mkwsTeam_' + m_teamName);
-       var blanket = $('.mkwsBlanket.mkwsTeam_' + m_teamName);
-       var motd    = $('.mkwsMOTD.mkwsTeam_' + m_teamName);
+       var targets = findnode('.mkwsTargets');
+       var results = findnode('.mkwsResults,.mkwsRecords');
+       var blanket = findnode('.mkwsBlanket');
+       var motd    = findnode('.mkwsMOTD');
 
        switch(view) {
         case 'targets':
@@ -807,9 +828,9 @@ function team($, teamName) {
 
        if (template === undefined) {
            // Fall back to generic template if there is no team-specific one
-           var node = $(".mkwsTemplate_" + name + ".mkwsTeam_" + m_teamName)
+           var node = findnode(".mkwsTemplate_" + name);
            if (!node.length) {
-               node = $(".mkwsTemplate_" + name + ".mkwsTeam_ALL")
+               node = findnode(".mkwsTemplate_" + name, "ALL");
            }
 
            var source = node.html();
@@ -911,14 +932,14 @@ function team($, teamName) {
      * All the HTML stuff to render the search forms and
      * result pages.
      */
+    // ### This and other multi-word identifiers should be camelCase
     function mkws_html_all() {
        mkws_set_lang();
        if (mkws_config.show_lang)
            mkws_html_lang();
 
        debug("HTML search form");
-       mkws.handle_node_with_team($('.mkwsSearch.mkwsTeam_' + m_teamName),
-                                  function(tname) {
+       mkws.handle_node_with_team(findnode('.mkwsSearch'), function(tname) {
            this.html('\
 <form name="mkwsSearchForm" class="mkwsSearchForm mkwsTeam_' + tname + '" action="" >\
   <input class="mkwsQuery mkwsTeam_' + tname + '" type="text" size="' + mkws_config.query_width + '" />\
@@ -936,8 +957,8 @@ function team($, teamName) {
        //      .mkwsPager
        //      .mkwsNavi
        //      .mkwsRecords
-       if ($(".mkwsResults.mkwsTeam_" + m_teamName).length) {
-           $(".mkwsResults.mkwsTeam_" + m_teamName).html('\
+       if (findnode(".mkwsResults").length) {
+           findnode(".mkwsResults").html('\
 <table width="100%" border="0" cellpadding="6" cellspacing="0">\
   <tr>\
     <td class="mkwsTermlistContainer1 mkwsTeam_' + m_teamName + '" width="250" valign="top">\
@@ -958,7 +979,7 @@ function team($, teamName) {
 </table>');
        }
 
-       var node = $(".mkwsRanking.mkwsTeam_" + m_teamName);
+       var node = findnode(".mkwsRanking");
        if (node.length) {
            var ranking_data = '';
            ranking_data += '<form name="mkwsSelect" class="mkwsSelect mkwsTeam_' + m_teamName + '" action="" >';
@@ -985,20 +1006,20 @@ function team($, teamName) {
        }
 
        var node;
-       node = $('.mkwsSearchForm.mkwsTeam_' + m_teamName);
+       node = findnode('.mkwsSearchForm');
        if (node.length)
            node.submit(onFormSubmitEventHandler);
-       node = $('.mkwsSort.mkwsTeam_' + m_teamName);
+       node = findnode('.mkwsSort');
        if (node.length)
            node.change(onSelectDdChange);
-       node = $('.mkwsPerpage.mkwsTeam_' + m_teamName);
+       node = findnode('.mkwsPerpage');
        if (node.length)
            node.change(onSelectDdChange);
 
        // on first page, hide the termlist
-       $(document).ready(function() { $(".mkwsTermlists.mkwsTeam_" + m_teamName).hide(); });
-       var motd = $(".mkwsMOTD.mkwsTeam_" + m_teamName);
-        var container = $(".mkwsMOTDContainer.mkwsTeam_" + m_teamName);
+       $(document).ready(function() { findnode(".mkwsTermlists").hide(); });
+       var motd = findnode(".mkwsMOTD");
+        var container = findnode(".mkwsMOTDContainer");
        if (motd.length && container.length) {
            // Move the MOTD from the provided element down into the container
            motd.appendTo(container);
@@ -1035,13 +1056,13 @@ function team($, teamName) {
     function mkws_html_switch() {
        debug("HTML switch for team " + m_teamName);
 
-       var node = $(".mkwsSwitch.mkwsTeam_" + m_teamName);
+       var node = findnode(".mkwsSwitch");
        node.append($('<a href="#" onclick="mkws.switchView(\'' + m_teamName + '\', \'records\')">' + M('Records') + '</a>'));
        node.append($("<span/>", { text: " | " }));
        node.append($('<a href="#" onclick="mkws.switchView(\'' + m_teamName + '\', \'targets\')">' + M('Targets') + '</a>'));
 
        debug("HTML targets");
-       var node = $(".mkwsTargets.mkwsTeam_" + m_teamName);
+       var node = findnode(".mkwsTargets");
        node.html('\
 <div class="mkwsBytarget mkwsTeam_' + m_teamName + '">\
   No information available yet.\
@@ -1129,13 +1150,13 @@ function team($, teamName) {
            }
        }
 
-       $(".mkwsLang.mkwsTeam_" + m_teamName).html(data);
+       findnode(".mkwsLang").html(data);
     }
 
 
     that.run_auto_search = function() {
        // ### should check mkwsTermlist as well, for facet-only teams
-       var node = $('.mkwsRecords.mkwsTeam_' + m_teamName);
+       var node = findnode('.mkwsRecords');
        var query = node.attr('autosearch');
        if (!query)
            return;
@@ -1172,6 +1193,7 @@ function team($, teamName) {
 
     // This function is taken from a StackOverflow answer
     // http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript/901144#901144
+    // ### should we unify this and parseQuerystring()?
     function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),