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

index 007907a..2a4c6f4 100644 (file)
@@ -9,20 +9,30 @@
     <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">mkws_config = { perpage_default: 1 }</script>
     <script type="text/javascript" src="http://x.mkws.indexdata.com/mkws.js"></script>
-    <script class="mkwsTemplate_Summary" type="text/x-handlebars-template">
-      <a href="#" id="{{_id}}" onclick="{{_onclick}}">
-        {{#first md-thumburl}}
-         <img src="{{this}}" alt="{{../md-title}}"/>
-        {{/first}}
-       <br/>
-      </a>
-    </script>
   </head>
   <body>
-    <div class='mkwsRecords' autosearch='lolcat'
-       targets='pz:id=connect.indexdata.com:9000/flickr_api'
-       >results will appear here</div>
+    <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>
   </body>
 </html>
index 7c11d11..a15324b 100644 (file)
@@ -172,13 +172,15 @@ if (mkws_config == null || typeof mkws_config != 'object') {
 
 
 // Factory function for widget objects.
-function widget($, team, node) {
+function widget($, team, type, node) {
     var that = {
        team: team,
+       type: type,
        node: node
     };
 
-    // ### More to do here, surely
+    // ### More to do here, surely: e.g. wiring into the team
+    mkws.debug("made widget(team=" + team + ", type=" + type + ", node=" + node);
 
     return that;
 }
@@ -915,16 +917,13 @@ function team($, teamName) {
            mkws_html_lang();
 
        debug("HTML search form");
-       // ### There is only one match here by design: fix not to bother looping
-       $('.mkwsSearch.mkwsTeam_' + m_teamName).each(function (i, obj) {
-           var node = this;
-           mkws.handle_node_with_team(this, function(tname) {
-               $(node).html('\
+       mkws.handle_node_with_team($('.mkwsSearch.mkwsTeam_' + m_teamName),
+                                  function(tname) {
+           this.html('\
 <form name="mkwsSearchForm" class="mkwsSearchForm mkwsTeam_' + tname + '" action="" >\
   <input class="mkwsQuery mkwsTeam_' + tname + '" type="text" size="' + mkws_config.query_width + '" />\
   <input class="mkwsButton mkwsTeam_' + tname + '" type="submit" value="' + M('Search') + '" />\
 </form>');
-           });
        });
 
        debug("HTML records");
@@ -985,15 +984,10 @@ function team($, teamName) {
            $(document).ready(function() { mkws.resize_page() });
        }
 
-       $('.mkwsSearchForm.mkwsTeam_' + m_teamName).each(function (i, obj) {
-           debug("adding search-forms for team '" + m_teamName + "'");
-           var node = this;
-           mkws.handle_node_with_team(this, function(tname) {
-               debug("adding search-form '" + tname + "' for team '" + m_teamName + "'");
-               $(node).submit(onFormSubmitEventHandler);
-           });
-       });
-
+       var node;
+       node = $('.mkwsSearchForm.mkwsTeam_' + m_teamName);
+       if (node.length)
+           node.submit(onFormSubmitEventHandler);
        node = $('.mkwsSort.mkwsTeam_' + m_teamName);
        if (node.length)
            node.change(onSelectDdChange);
@@ -1238,16 +1232,28 @@ function team($, teamName) {
 
 
     mkws.handle_node_with_team = function(node, callback) {
-       var classes = node.className;
+       // First branch for DOM objects; second branch for jQuery objects
+       var classes = node.className || node.attr('class');
+       if (!classes) {
+           // For some reason, if we try to proceed when classes is
+           // undefined, we don't get an error message, but this
+           // function and its callers, up several stack level,
+           // silently return. What a crock.
+           mkws.debug("handle_node_with_team() called on node with no classes");
+           return;
+       }
        var list = classes.split(/\s+/)
-       var tname;
+       var teamName, type;
+
        for (var i = 0; i < list.length; i++) {
            var cname = list[i];
            if (cname.match(/^mkwsTeam_/)) {
-               tname = cname.replace(/^mkwsTeam_/, '');
+               teamName = cname.replace(/^mkwsTeam_/, '');
+           } else if (cname.match(/^mkws/)) {
+               type = cname.replace(/^mkws/, '');
            }
        }
-       callback.call(this, tname);
+       callback.call(node, teamName, type);
     }
 
 
@@ -1441,13 +1447,13 @@ function team($, teamName) {
        // the mkwsTeam_* class. Make all team objects.
        var then = $.now();
        $('[class^="mkws"],[class*=" mkws"]').each(function () {
-           mkws.handle_node_with_team(this, function(tname) {
+           mkws.handle_node_with_team(this, function(tname, type) {
                if (!mkws.teams[tname]) {
                    mkws.teams[tname] = team(j, tname);
                    debug("Made MKWS team '" + tname + "'");
                }
-               var myTeam = mkws.teams[tname]
-               var myWidget = widget(j, myTeam, this)
+               var myTeam = mkws.teams[tname];
+               var myWidget = widget(j, myTeam, type, this);
            });
        });
        var now = $.now();