copy of mkws-jquery.js
[mkws-moved-to-github.git] / src / mkws-popup.js
diff --git a/src/mkws-popup.js b/src/mkws-popup.js
new file mode 100644 (file)
index 0000000..4145652
--- /dev/null
@@ -0,0 +1,149 @@
+/*! jQuery plugin for MKWS, the MasterKey Widget Set.
+ *  Copyright (C) 2013-2014 Index Data
+ *  See the file LICENSE for details
+ */
+
+"use strict";
+
+
+/*
+ * implement jQuery plugin $.pazpar2({})
+ */
+function _mkws_jquery_plugin($) {
+  function debug(string) {
+    mkws.log("jQuery.pazpar2: " + string);
+  }
+
+  function init_popup(obj) {
+    var config = obj ? obj : {};
+
+    var height = config.height || 760;
+    var width = config.width || 880;
+    var id_button = config.id_button || "input.mkwsButton";
+    var id_popup = config.id_popup || ".mkwsPopup";
+
+    debug("popup height: " + height + ", width: " + width);
+
+    // make sure that jquery-ui was loaded afte jQuery core lib, e.g.:
+    // <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
+    if (!$.ui) {
+      debug("Error: jquery-ui.js is missing, did you include it after jQuery core in the HTML file?");
+      return;
+    }
+
+    $(id_popup).dialog({
+      closeOnEscape: true,
+      autoOpen: false,
+      height: height,
+      width: width,
+      modal: true,
+      resizable: true,
+      buttons: {
+        Cancel: function() {
+          $(this).dialog("close");
+        }
+      },
+      close: function() { }
+    });
+
+    $(id_button)
+      .button()
+      .click(function() {
+        $(id_popup).dialog("open");
+      });
+  };
+
+  $.extend({
+
+    // service-proxy or pazpar2
+    pazpar2: function(config) {
+      if (config == null || typeof config != 'object') {
+        config = {};
+      }
+      var id_popup = config.id_popup || ".mkwsPopup";
+      id_popup = id_popup.replace(/^[#\.]/, "");
+
+      // simple layout
+      var div = '\
+<div class="mkwsSwitch"></div>\
+<div class="mkwsLang"></div>\
+<div class="mkwsSearch"></div>\
+<div class="mkwsResults"></div>\
+<div class="mkwsTargets"></div>\
+<div class="mkwsStat"></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 class="mkwsSwitch"></div>\
+      <div class="mkwsLang"></div>\
+      <div class="mkwsSearch"></div>\
+    </td>\
+  </tr>\
+  <tr>\
+    <td>\
+      <div style="height:500px; overflow: auto">\
+        <div class="mkwsPager"></div>\
+        <div class="mkwsNavi"></div>\
+        <div class="mkwsRecords"></div>\
+        <div class="mkwsTargets"></div>\
+        <div class="mkwsRanking"></div>\
+      </div>\
+    </td>\
+  </tr>\
+  <tr>\
+    <td>\
+      <div style="height:300px; overflow: hidden">\
+        <div class="mkwsTermlists"></div>\
+      </div>\
+    </td>\
+  </tr>\
+  <tr>\
+    <td>\
+      <div class="mkwsStat"></div>\
+    </td>\
+  </tr>\
+</table>';
+
+      var popup = '\
+<div class="mkwsSearch"></div>\
+<div class="' + id_popup + '">\
+  <div class="mkwsSwitch"></div>\
+  <div class="mkwsLang"></div>\
+  <div class="mkwsResults"></div>\
+  <div class="mkwsTargets"></div>\
+  <div class="mkwsStat"></div>\
+</div>'
+
+      if (config && config.layout == 'div') {
+        debug("jquery plugin layout: div");
+        document.write(div);
+      } else if (config && config.layout == 'popup') {
+        debug("jquery plugin layout: popup with id: " + id_popup);
+        document.write(popup);
+        $(document).ready(function() { init_popup(config); });
+      } else {
+        debug("jquery plugin layout: table");
+        document.write(table);
+      }
+    }
+  });
+};
+
+
+// XXX: enable before page load, so we could call it before mkws() runs
+_mkws_jquery_plugin(mkws.$);
+