spaces
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index 8fa3b76..7e6ccfb 100644 (file)
@@ -121,7 +121,7 @@ function my_onshow(data) {
                      + data.total + ')</div>';
     drawPager(pager);
     // navi
-    var results = document.getElementById("mkwsResults");
+    var results = document.getElementById("mkwsRecords");
 
     var html = [];
     for (var i = 0; i < data.hits.length; i++) {
@@ -185,6 +185,9 @@ 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) {
@@ -241,10 +244,12 @@ function my_onbytarget(data) {
 // wait until the DOM is ready
 function domReady ()
 {
-    document.search.onsubmit = onFormSubmitEventHandler;
-    document.search.query.value = '';
-    document.select.sort.onchange = onSelectDdChange;
-    document.select.perpage.onchange = onSelectDdChange;
+    document.mkwsSearchForm.onsubmit = onFormSubmitEventHandler;
+    document.mkwsSearchForm.mkwsQuery.value = '';
+    if (document.mkwsSelect) {
+       document.mkwsSelect.mkwsSort.onchange = onSelectDdChange;
+       document.mkwsSelect.mkwsPerpage.onchange = onSelectDdChange;
+    }
 }
 
 // when search button pressed
@@ -275,19 +280,21 @@ function resetPage()
 
 function triggerSearch ()
 {
-    my_paz.search(document.search.query.value, recPerPage, curSort, curFilter);
+    my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, curFilter);
 }
 
 function loadSelect ()
 {
-    curSort = document.select.sort.value;
-    recPerPage = document.select.perpage.value;
+    if (document.mkwsSelect) {
+       curSort = document.mkwsSelect.mkwsSort.value;
+       recPerPage = document.mkwsSelect.mkwsPerpage.value;
+    }
 }
 
 // limit the query after clicking the facet
 function limitQuery (field, value)
 {
-    document.search.query.value += ' and ' + field + '="' + value + '"';
+    document.mkwsSearchForm.query.value += ' and ' + field + '="' + value + '"';
     onFormSubmitEventHandler();
 }
 
@@ -331,9 +338,9 @@ function drawPager (pagerDiv)
         ? firstClkbl + 2*onsides
         : pages;
 
-    var prev = '<span id="prev">&#60;&#60; ' + M('Prev') + '</span><b> | </b>';
+    var prev = '<span id="mkwsPrev">&#60;&#60; ' + M('Prev') + '</span><b> | </b>';
     if (curPage > 1)
-        prev = '<a href="#" id="prev" onclick="pagerPrev();">'
+        prev = '<a href="#" id="mkwsPrev" onclick="pagerPrev();">'
         +'&#60;&#60; ' + M('Prev') + '</a><b> | </b>';
 
     var middle = '';
@@ -346,9 +353,9 @@ function drawPager (pagerDiv)
             + numLabel + ' </a>';
     }
 
-    var next = '<b> | </b><span id="next">' + M('Next') + ' &#62;&#62;</span>';
+    var next = '<b> | </b><span id="mkwsNext">' + M('Next') + ' &#62;&#62;</span>';
     if (pages - curPage > 0)
-        next = '<b> | </b><a href="#" id="next" onclick="pagerNext()">'
+        next = '<b> | </b><a href="#" id="mkwsNext" onclick="pagerNext()">'
         + M('Next') + ' &#62;&#62;</a>';
 
     var predots = '';
@@ -383,28 +390,28 @@ function pagerPrev() {
         curPage--;
 }
 
-// swithing view between targets and records
+// switching view between targets and records
 
 function switchView(view) {
 
     var targets = document.getElementById('mkwsTargets');
-    var records = document.getElementById('mkwsRecords');
+    var records = document.getElementById('mkwsResults');
     var blanket = document.getElementById('mkwsBlanket');
 
     switch(view) {
         case 'targets':
             targets.style.display = "block";
-            records.style.display = "none";
+            if (records) records.style.display = "none";
             if (blanket) { blanket.style.display = "none"; }
             break;
         case 'records':
             targets.style.display = "none";
-            records.style.display = "block";
+            if (records) records.style.display = "block";
             if (blanket) { blanket.style.display = "block"; }
             break;
        case 'none':
             targets.style.display = "none";
-            records.style.display = "none";
+            if (records) records.style.display = "none";
             if (blanket) { blanket.style.display = "none"; }
             break;
         default:
@@ -502,16 +509,16 @@ function mkws_html_all(config) {
        lang_menu: true,        /* show/hide language menu */
        lang_display: [],       /* display languages links for given languages, [] for all */
        facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
-
-       debug: 0,     /* debug level for development: 0..2 */
+       responsive_design_width: 980, /* a page with less pixel width considered as mobile */
+       debug: 1,     /* debug level for development: 0..2 */
 
        dummy: "dummy"
     };
 
     /* set global debug flag early */
-    if (config.debug !== 'undefined') {
+    if (typeof config.debug !== 'undefined') {
        mkws_debug = config.debug;
-    } else if (mkws_config_default.debug !== 'undefined') {
+    } else if (typeof mkws_config_default.debug !== 'undefined') {
        mkws_debug = mkws_config_default.debug;
     }
 
@@ -532,35 +539,48 @@ function mkws_html_all(config) {
        mkws_html_lang(mkws_config);
 
     // For some reason, doing this programmatically results in
-    // document.search.query being undefined, hence the raw HTML.
+    // document.mkwsSearchForm.mkwsQuery being undefined, hence the raw HTML.
     debug("HTML search form");
     $("#mkwsSearch").html('\
-    <form id="searchForm" name="search" action="" >\
-      <input id="query" type="text" size="' + mkws_config.query_width + '" />\
-      <input id="button" type="submit" value="' + M('Search') + '" />\
+    <form name="mkwsSearchForm" action="" >\
+      <input id="mkwsQuery" type="text" size="' + mkws_config.query_width + '" />\
+      <input id="mkwsButton" type="submit" value="' + M('Search') + '" />\
     </form>');
 
     debug("HTML records");
-    $("#mkwsRecords").html('\
+    // If the application has an #mkwsResults, populate it in the
+    // usual way. If not, assume that it's a smarter application that
+    // defines its own subcomponents:
+    // #mkwsTermlists
+    // #mkwsRanking
+    // #mkwsPager
+    // #mkwsNavi
+    // #mkwsRecords
+    if ($("#mkwsResults").length) {
+       $("#mkwsResults").html('\
       <table width="100%" border="0" cellpadding="6" cellspacing="0">\
         <tr>\
           <td width="250" valign="top">\
             <div id="mkwsTermlists"></div>\
           </td>\
           <td valign="top">\
-            <div id="ranking">\
-              <form name="select" id="select" action="" >\
-        ' + M('Sort by') + ' ' + mkws_html_sort(config) + '\
-        ' + M('and show') + ' ' + mkws_html_perpage(config) + '\
-        ' + M('per page') + '.\
-       </form>\
-            </div>\
+            <div id="mkwsRanking"></div>\
             <div id="mkwsPager"></div>\
             <div id="mkwsNavi"></div>\
-            <div id="mkwsResults"></div>\
+            <div id="mkwsRecords"></div>\
           </td>\
         </tr>\
       </table>');
+    }
+
+    if ($("#mkwsRanking").length == 2) {
+       $("#mkwsRanking").html('\
+              <form name="mkwsSelect" id="mkwsSelect" action="" >\
+        ' + M('Sort by') + ' ' + mkws_html_sort(config) + '\
+        ' + M('and show') + ' ' + mkws_html_perpage(config) + '\
+        ' + M('per page') + '.\
+       </form>');
+    }
 
     mkws_html_switch(config);
 
@@ -585,7 +605,7 @@ function mkws_responsive_design () {
     $(window).resize( function(e) {
        if (timeout)
            clearTimeout(timeout);
-       timeout = setTimeout(function () { mkws_mobile_resize() }, 100);
+       timeout = setTimeout(function () { mkws_mobile_resize() }, 50);
     });
 
     // initial check after page load
@@ -634,7 +654,7 @@ function mkws_html_switch(config) {
 
 function mkws_html_sort(config) {
     debug("HTML sort");
-    var sort_html = '<select name="sort" id="sort">';
+    var sort_html = '<select name="mkwsSort" id="mkwsSort">';
 
     for(var i = 0; i < config.sort.length; i++) {
        var key = config.sort[i][0];
@@ -653,7 +673,7 @@ function mkws_html_sort(config) {
 
 function mkws_html_perpage(config) {
     debug("HTML perpage");
-    var perpage_html = '<select name="perpage" id="perpage">';
+    var perpage_html = '<select name="mkwsPerpage" id="mkwsPerpage">';
 
     for(var i = 0; i < config.perpage.length; i++) {
        var key = config.perpage[i];
@@ -742,7 +762,9 @@ function mkws_mobile_resize () {
     var obj;
     // alert($(window).width());
 
-    if ($(window).width() <= 980) {
+    var width = mkws_config.responsive_design_width || 980;
+
+    if ($(window).width() <= width) {
        for(var i = 0; i < list.length; i++) {
            $("#" + list[i]).hide();
        }
@@ -785,11 +807,11 @@ jQuery.extend({
        document.write('<div id="mkwsSwitch"></div>\
     <div id="mkwsLang"></div>\
     <div id="mkwsSearch"></div>\
-    <div id="mkwsRecords"></div>\
+    <div id="mkwsResults"></div>\
     <div id="mkwsTargets"></div>\
-    <div id="footer">\
+    <div id="mkwsFooter">\
       <div id="mkwsStat"></div>\
-      <span>Powered by MKWS &copy; 2013 <a href="http://www.indexdata.com">Index Data</a></span>\
+      <span>Powered by MKWS &copy; 2013 <a target="_new" href="http://www.indexdata.com">Index Data</a></span>\
     </div>');
 
     mkws_html_all(mkws_config);