Merge remote branch 'origin/master' into wosch
authorWolfram Schneider <wosch@indexdata.dk>
Wed, 16 Apr 2014 15:02:37 +0000 (15:02 +0000)
committerWolfram Schneider <wosch@indexdata.dk>
Wed, 16 Apr 2014 15:02:37 +0000 (15:02 +0000)
doc/mkws-developer.txt
examples/htdocs/mike.html
examples/htdocs/wolfram.html
examples/htdocs/wolfram2.html
src/Makefile
src/mkws-team.js
src/mkws-widget-builder.js [new file with mode: 0644]
src/mkws-widgets.js

index 321a9c1..7561587 100644 (file)
@@ -108,6 +108,9 @@ Void this.log(string)
        is written on the browser console, and also published to any
        "log" subcribers.
 
+String this.value()
+       A function returning the value of the widget's HTML element.
+
 
 TEAM METHODS
 ============
index 6430613..5959f7a 100644 (file)
@@ -39,7 +39,7 @@
     <table width="100%" border="0" cellpadding="6" cellspacing="0">
       <tr>
        <td class="mkwsTermlistContainer1" width="250" valign="top">
-         <div>
+         <div class="mkwsTermlists mkwsTeam_AUTO">
            <div class="title">Termlists</div>
            <div class="mkwsFacet mkwsTeam_AUTO" data-mkws-facet="subject"></div>
            <div class="mkwsFacet mkwsTeam_AUTO" data-mkws-facet="xtargets"></div>
@@ -61,6 +61,7 @@
       </tr>
     </table>
     <div class="mkwsStat"></div>
+    <div class="mkwsConsoleBuilder" text="Make Widget"></div>
     <div class="mkwsDone"></div>
     <div class="mkwsMOTD">Speak, friend, and enter!</div>
   </body>
index ee8f2e7..e1afb2e 100644 (file)
          service_proxy_auth : "/service-proxy-testauth"
       };
     </script>
-    <script type="text/javascript" src="tools/htdocs/jquery-1.10.0.min.js"></script>
-    <script type="text/javascript" src="tools/htdocs/pz2.js"></script>
-    <script type="text/javascript" src="tools/htdocs/handlebars-v1.1.2.js"></script>
-    <script type="text/javascript" src="tools/htdocs/jquery.json-2.4.js"></script>
+    <script type="text/javascript" src="src/jquery-1.10.0.min.js"></script>
+    <script type="text/javascript" src="src/pz2.js"></script>
+    <script type="text/javascript" src="src/handlebars-v1.1.2.js"></script>
+    <script type="text/javascript" src="src/jquery.json-2.4.js"></script>
+   
     <!-- <script type="text/javascript" src="src/mkws.js"></script> -->
     <script type="text/javascript" src="src/mkws-handlebars.js"></script>
     <script type="text/javascript" src="src/mkws-core.js"></script>
index 75978f5..0fe667c 100644 (file)
@@ -50,7 +50,7 @@
       </tr>
     </table>
 
-    <script type="text/javascript" src="tools/htdocs/mkws-complete.js"></script>
+    <script type="text/javascript" src="src/mkws-complete.js"></script>
     <!-- <script type="text/javascript" src="https://mkws.indexdata.com/mkws-complete.js"></script> -->
 
     <script type="text/javascript">
index 2d25295..43eeadb 100644 (file)
@@ -13,8 +13,8 @@ VERSION = $(shell tr -d '\012' < VERSION)
 
 COMPONENTS = mkws-handlebars.js \
        mkws-core.js mkws-team.js mkws-widgets.js mkws-widget-termlists.js \
-       mkws-widget-authname.js mkws-widget-log.js mkws-widget-record.js
-
+       mkws-widget-authname.js mkws-widget-log.js mkws-widget-record.js \
+       mkws-widget-builder.js
 
 INSTALLABLE = ${HANDLEBARS_FILE} ${JQUERY_FILE} ${JQUERY_JSON_FILE} ${PP2_FILE} \
        mkws.js mkws-jquery.js mkws-complete.js \
index b986988..b9d899b 100644 (file)
@@ -333,7 +333,7 @@ function team($, teamName) {
     // switching view between targets and records
     function switchView(view) {
        var targets = widgetNode('Targets');
-       var results = findnode('.mkwsResults,.mkwsRecords');
+       var results = widgetNode('Results') || widgetNode('Records');
        var blanket = widgetNode('Blanket');
        var motd    = widgetNode('MOTD');
 
@@ -452,13 +452,13 @@ function team($, teamName) {
        mkwsHtmlSwitch();
 
        findnode('.mkwsSearchForm').submit(function() {
-           var val = findnode('.mkwsQuery').val();
+           var val = widgetNode('Query').val();
            newSearch(val);
            return false;
        });
 
        // on first page, hide the termlist
-       $(document).ready(function() { findnode(".mkwsTermlists").hide(); });
+       $(document).ready(function() { widgetNode("Termlists").hide(); });
         var container = findnode(".mkwsMOTDContainer");
        if (container.length) {
            // Move the MOTD from the provided element down into the container
@@ -598,20 +598,15 @@ 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 = $.map(selector.split(','), function(s, i) {
-           if (teamName === 'AUTO') {
-               return (s + '.mkwsTeam_' + teamName + ',' +
-                       s + ':not([class^="mkwsTeam"],[class*=" mkwsTeam"])');
-           } else {
-               return s + '.mkwsTeam_' + teamName;
-           }
-       }).join(',');
+       if (teamName === 'AUTO') {
+           selector = (selector + '.mkwsTeam_' + teamName + ',' +
+                       selector + ':not([class^="mkwsTeam"],[class*=" mkwsTeam"])');
+       } else {
+           selector = selector + '.mkwsTeam_' + teamName;
+       }
 
        var node = $(selector);
        //log('findnode(' + selector + ') found ' + node.length + ' nodes');
@@ -641,12 +636,15 @@ function team($, teamName) {
 
        if (template === undefined) {
            // Fall back to generic template if there is no team-specific one
-           var node = findnode(".mkwsTemplate_" + name);
-           if (!node.length) {
-               node = findnode(".mkwsTemplate_" + name, "ALL");
+           var source;
+           var node = widgetNode("Template_" + name);
+           if (!node) {
+               node = widgetNode("Template_" + name, "ALL");
            }
+            if (node) {
+               source = node.html();
+            }
 
-           var source = node.html();
            if (!source) {
                source = defaultTemplate(name);
            }
diff --git a/src/mkws-widget-builder.js b/src/mkws-widget-builder.js
new file mode 100644 (file)
index 0000000..6460b61
--- /dev/null
@@ -0,0 +1,29 @@
+mkws.registerWidgetType('Builder', function() {
+    var that = this;
+    var team = this.team;
+
+    this.button = $('<button/>', {
+        type: 'button',
+        text: this.config.text || "Build!"
+    });
+    $(this.node).append(this.button);
+    this.button.click(function() {
+        var   query = team.widget('Query').value();
+        var    sort = team.widget('Sort').value();
+        var perpage = team.widget('Perpage').value();
+
+        var html = ('<div class="mkwsRecords" ' +
+                    'autosearch="' + query + '" ' +
+                    'sort="' + sort + '" ' +
+                    'perpage="' + perpage + '"></div>');
+        var fn = that.callback || alert;
+        fn(html);
+    });
+});
+
+mkws.registerWidgetType('ConsoleBuilder', function() {
+    mkws.promotionFunction('Builder').call(this);    
+    this.callback = function(s) {
+        console.log("Generated widget: " + s);
+    }
+});
index 3901f67..9f6c418 100644 (file)
@@ -22,6 +22,10 @@ function widget($, team, type, node) {
        return '[Widget ' + team.name() + ':' + type + ']';
     };
 
+    that.value = function() {
+        return node.value;
+    }
+
     for (var i = 0; i < node.attributes.length; i++) {
        var a = node.attributes[i];
        if (a.name === 'data-mkws-config') {