jquery plugin: improve debugging
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 98ac5ee..61eedb6 100644 (file)
@@ -198,9 +198,6 @@ function my_onterm(data) {
 
     var termlist = document.getElementById("mkwsTermlists");
     replaceHtml(termlist, acc.join(''));
-
-    if (mkws_config.responsive_design)
-        mkws_mobile_resize();
 }
 
 function add_single_facet(acc, caption, data, max, cclIndex) {
@@ -413,7 +410,7 @@ function switchView(view) {
     var results = document.getElementById('mkwsResults') ||
                  document.getElementById('mkwsRecords');
     var blanket = document.getElementById('mkwsBlanket');
-    var motd    = document.getElementById('mkwsEmbeddedMOTD');
+    var motd    = document.getElementById('mkwsMOTD');
 
     switch(view) {
         case 'targets':
@@ -531,7 +528,7 @@ function mkws_html_all(config) {
        perpage_menu: true,     /* show/hide perpage menu */
        lang_display: [],       /* display languages links for given languages, [] for all */
        facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
-       responsive_design_width: 980, /* a page with less pixel width considered as mobile */
+       responsive_design_width: 980, /* a page with less pixel width considered as narrow */
        debug: 1,     /* debug level for development: 0..2 */
 
        dummy: "dummy"
@@ -582,15 +579,19 @@ function mkws_html_all(config) {
        $("#mkwsResults").html('\
       <table width="100%" border="0" cellpadding="6" cellspacing="0">\
         <tr>\
-          <td width="250" valign="top">\
+          <td id="mkwsTermlistContainer1" width="250" valign="top">\
             <div id="mkwsTermlists"></div>\
           </td>\
-          <td valign="top">\
+          <td id="mkwsMOTDContainer" valign="top">\
             <div id="mkwsRanking"></div>\
             <div id="mkwsPager"></div>\
             <div id="mkwsNavi"></div>\
             <div id="mkwsRecords"></div>\
-            <div id="mkwsEmbeddedMOTD"></div>\
+          </td>\
+        </tr>\
+        <tr>\
+          <td colspan="2">\
+            <div id="mkwsTermlistContainer2"></div>\
           </td>\
         </tr>\
       </table>');
@@ -615,37 +616,27 @@ function mkws_html_all(config) {
     if (mkws_config.use_service_proxy)
        mkws_service_proxy_auth(config.service_proxy_auth);
 
-    if (mkws_config.responsive_design)
-       mkws_responsive_design();
+    if (mkws_config.responsive_design) {
+       // Responsive web design - change layout on the fly based on
+       // current screen width. Required for mobile devices.
+       $(window).resize( function(e) { mkws_resize_page() });
+       // initial check after page load
+       $(document).ready(function() { mkws_resize_page() });
+    }
 
     domReady();
 
     // on first page, hide the termlist
     $(document).ready(function() { $("#mkwsTermlists").hide(); } );
-    var elem = document.getElementById("mkwsMOTD");
-    if (elem) {
-       // Move the MOTD from the provided element down into the embedded one
-       document.getElementById("mkwsEmbeddedMOTD").innerHTML = elem.innerHTML;
-        elem.style.display = "none";
+    var motd = document.getElementById("mkwsMOTD");
+    var container = document.getElementById("mkwsMOTDContainer");
+    if (motd && container) {
+       // Move the MOTD from the provided element down into the container
+        motd.parentNode.removeChild(motd);
+       container.appendChild(motd);
     }
 }
 
-/* Responsive web design - change layout on the fly depending on
- * the current screen size width/height. Required for mobile devices.
- */
-function mkws_responsive_design () {
-    var timeout = null;
-
-    $(window).resize( function(e) {
-       if (timeout)
-           clearTimeout(timeout);
-       timeout = setTimeout(function () { mkws_mobile_resize() }, 50);
-    });
-
-    // initial check after page load
-    $(document).ready(function() { mkws_mobile_resize() });
-}
-
 function mkws_set_lang(mkws_config)  {
     var lang = jQuery.parseQuerystring().lang || mkws_config.lang || "";
     if (!lang || !mkws_locale_lang[lang]) {
@@ -790,28 +781,30 @@ function mkws_html_lang(mkws_config) {
     $("#mkwsLang").html(data);
 }
 
-function mkws_mobile_resize () {
-    debug("resize width: " + $(window).height() + ", width: " + $(window).width());
+function mkws_resize_page () {
     var list = ["mkwsSwitch"];
-    var obj;
-    // alert($(window).width());
 
     var width = mkws_config.responsive_design_width || 980;
-
-    if ($(window).width() <= width) {
+    var parentId = $("#mkwsTermlists").parent().attr('id');
+
+    if ($(window).width() <= width &&
+       parentId === "mkwsTermlistContainer1") {
+       debug("changing from wide to narrow: " + $(window).width());
+       $("#mkwsTermlists").appendTo($("#mkwsTermlistContainer2"));
+       $("#mkwsTermlistContainer1").hide();
+       $("#mkwsTermlistContainer2").show();
        for(var i = 0; i < list.length; i++) {
            $("#" + list[i]).hide();
        }
-
-       $("#mkwsTermlists").hide();
-       obj = $("#mkwsTermlists").html();
-        $("#mkwsShiftedTermlists").html(obj);
-    } else {
+    } else if ($(window).width() > width &&
+       parentId === "mkwsTermlistContainer2") {
+       debug("changing from narrow to wide: " + $(window).width());
+       $("#mkwsTermlists").appendTo($("#mkwsTermlistContainer1"));
+       $("#mkwsTermlistContainer1").show();
+       $("#mkwsTermlistContainer2").hide();
        for(var i = 0; i < list.length; i++) {
            $("#" + list[i]).show();
        }
-       $("#mkwsTermlists").show();
-       $("#mkwsShiftedTermlists").html("");
     }
 };
 
@@ -837,8 +830,10 @@ jQuery.extend({
     });
     return nvpair;
   },
-  pazpar2: function(data) {
-       document.write('<div id="mkwsSwitch"></div>\
+  pazpar2: function(config) {
+
+    // simple layout
+    var div = '<div id="mkwsSwitch"></div>\
     <div id="mkwsLang"></div>\
     <div id="mkwsSearch"></div>\
     <div id="mkwsResults"></div>\
@@ -846,7 +841,61 @@ jQuery.extend({
     <div id="mkwsFooter">\
       <div id="mkwsStat"></div>\
       <span>Powered by MKWS &copy; 2013 <a target="_new" href="http://www.indexdata.com">Index Data</a></span>\
-    </div>');
+    </div>';
+
+    // new table layout
+    var table = '\
+    <style type="text/css">\
+      #mkwsTermlists div.facet {\
+      float:left;\
+      width: 30%;\
+      margin: 0.3em;\
+      }\
+      #mkwsStat {\
+      text-align: right;\
+      }\
+    </style>\
+       \
+    <table width="100%" border="0">\
+      <tr>\
+        <td>\
+          <div id="mkwsSwitch"></div>\
+          <div id="mkwsLang"></div>\
+          <div id="mkwsSearch"></div>\
+        </td>\
+      </tr>\
+      <tr>\
+        <td>\
+          <div style="height:500px; overflow: auto">\
+            <div id="mkwsPager"></div>\
+            <div id="mkwsNavi"></div>\
+            <div id="mkwsRecords"></div>\
+            <div id="mkwsTargets"></div>\
+            <div id="mkwsRanking"></div>\
+          </div>\
+        </td>\
+      </tr>\
+      <tr>\
+        <td>\
+          <div style="height:300px; overflow: hidden">\
+            <div id="mkwsTermlists"></div>\
+          </div>\
+        </td>\
+      </tr>\
+      <tr>\
+        <td>\
+          <div id="mkwsStat"></div>\
+        </td>\
+      </tr>\
+    </table>';
+
+    if (config && config.layout == 'table') {
+       debug("jquery plugin layout: table");
+        document.write(table);
+    } else {
+       debug("jquery plugin layout: div");
+        document.write(div);
+    }
 
     mkws_html_all(mkws_config);
   }